<?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>27551</bug_id>
          
          <creation_ts>2009-07-22 11:40:51 -0700</creation_ts>
          <short_desc>Make it possible to build JavaScriptCore as shared library without symbol lists</short_desc>
          <delta_ts>2012-09-21 16:51:37 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</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>
          <dependson>67852</dependson>
    
    <dependson>72231</dependson>
    
    <dependson>76257</dependson>
          <blocked>65470</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Hausmann">hausmann</reporter>
          <assigned_to name="Kevin Ollivier">kevino</assigned_to>
          <cc>abarth</cc>
    
    <cc>abecsi</cc>
    
    <cc>aroben</cc>
    
    <cc>buildbot</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>galpeter</cc>
    
    <cc>ggaren</cc>
    
    <cc>gustavo.noronha</cc>
    
    <cc>gustavo</cc>
    
    <cc>kbalazs</cc>
    
    <cc>kenneth</cc>
    
    <cc>kent.hansen</cc>
    
    <cc>kevino</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>leandro</cc>
    
    <cc>morrita</cc>
    
    <cc>norbert.leser</cc>
    
    <cc>ossy</cc>
    
    <cc>rakuco</cc>
    
    <cc>sfalken</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>133822</commentid>
    <comment_count>0</comment_count>
      <attachid>33277</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-07-22 11:40:51 -0700</bug_when>
    <thetext>Created attachment 33277
Patch to make it possible to build JavaScriptCore as shared library on Linux without symbol files.

Currently JavaScriptCore is built as shared library on the Apple Windows and Mac OS X builds.

The symbols used by WebCore and WebKit are exported in JavaScriptCore via separate files, one for MSVC and one for Mac OS X gcc. The files contain the mangled symbol names.

It is cumbersome to maintain these lists and it becomes worse when taking additional compilers into account, like for example g++ on Linux or RVCT for ARM. When a new symbol needs to be exported it is necessary to determine their mangled name for each supported compiler.

This bug tries to track the patches/work needed to replace the separately maintained export lists with the commonly used export macros.


The initial patch merely adds the export macros where necessary and tweaks the Visual studio and Xcode based builds to accept them, while keeping the symbol files in place.


Pending approval for the first patch, the second step is to change the Visual Studio and Xcode builds to fully utilize the macros and delete the symbol files. On Windows this step will require the placement of additional export macros that are not part of the first patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134212</commentid>
    <comment_count>1</comment_count>
      <attachid>33357</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2009-07-23 13:03:13 -0700</bug_when>
    <thetext>Created attachment 33357
Make it possible to build JSC as a shared library without symbol lists</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134213</commentid>
    <comment_count>2</comment_count>
      <attachid>33358</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2009-07-23 13:05:30 -0700</bug_when>
    <thetext>Created attachment 33358
Build JSC as a shared library for QtWebKit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134214</commentid>
    <comment_count>3</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2009-07-23 13:06:11 -0700</bug_when>
    <thetext>Mark Rowe requested the patch being split up into two, to separate out the Qt build system that he is not able to review.

Please mark the first patch as r- as I&apos;m not authorized to do so.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134216</commentid>
    <comment_count>4</comment_count>
      <attachid>33277</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-07-23 13:13:59 -0700</bug_when>
    <thetext>Comment on attachment 33277
Patch to make it possible to build JavaScriptCore as shared library on Linux without symbol files.

Clearing review after splitting up the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134554</commentid>
    <comment_count>5</comment_count>
      <attachid>33357</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-07-24 07:49:02 -0700</bug_when>
    <thetext>Comment on attachment 33357
Make it possible to build JSC as a shared library without symbol lists

I have to clear review on this patch as it needs to be rebased against current ToT (some parts fall away) and I&apos;ve noticed a new build issue on Windows. I&apos;ll rework it next week.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134555</commentid>
    <comment_count>6</comment_count>
      <attachid>33358</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-07-24 07:49:26 -0700</bug_when>
    <thetext>Comment on attachment 33358
Build JSC as a shared library for QtWebKit

Clearing review on this one, too, as it&apos;s not useful without the other patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135191</commentid>
    <comment_count>7</comment_count>
      <attachid>33626</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-07-28 07:10:40 -0700</bug_when>
    <thetext>Created attachment 33626
Updated patch, rebased against ToT and fixed windows and mac builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135192</commentid>
    <comment_count>8</comment_count>
      <attachid>33627</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-07-28 07:11:17 -0700</bug_when>
    <thetext>Created attachment 33627
Rebased patch to build JavaScriptCore as shared library with Qt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135233</commentid>
    <comment_count>9</comment_count>
      <attachid>33626</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2009-07-28 08:56:06 -0700</bug_when>
    <thetext>Comment on attachment 33626
Updated patch, rebased against ToT and fixed windows and mac builds.

&gt;         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Disable
&gt;         MSVC warning about inconsistent linkage.

These warnings are usually not something you just want to ignore. I think it would be a lot better to fix them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135258</commentid>
    <comment_count>10</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2009-07-28 10:20:58 -0700</bug_when>
    <thetext>I tried to build your patches with rev. 46488, and found some small error:
- unnecessary JS_EXPORTDATA macros for unions
- missing includedir
- missing JS_EXPORTDATA for JSFunction class

I fixed them, and it works on Qt-Linux without additional regressions:
http://gist.github.com/157541</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135503</commentid>
    <comment_count>11</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2009-07-29 00:14:24 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; - unnecessary JS_EXPORTDATA macros for unions
I mean enums of course.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135588</commentid>
    <comment_count>12</comment_count>
      <attachid>33626</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-07-29 08:09:53 -0700</bug_when>
    <thetext>Comment on attachment 33626
Updated patch, rebased against ToT and fixed windows and mac builds.

Clearing review after discussion with Adam Roben on IRC. Will upload a new patch tomorrow with better explanation for the DLL warnings and the removal of 4273.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135825</commentid>
    <comment_count>13</comment_count>
      <attachid>33773</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-07-30 05:46:38 -0700</bug_when>
    <thetext>Created attachment 33773
Updated patch with one MSVC warning fixed and explanation for the other ignored warning</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137754</commentid>
    <comment_count>14</comment_count>
      <attachid>33773</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-06 20:06:00 -0700</bug_when>
    <thetext>Comment on attachment 33773
Updated patch with one MSVC warning fixed and explanation for the other ignored warning

This patch will require buy-in from some of the Mac build experts like Mark Rowe, and whoever does build submissions for Apple these days.  I think it should be possible to work this way, but I remember the export lists being a conscious choice back in the day.  Please make sure you talk to Mark and ask him who the right Apple people to ask are these days.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137857</commentid>
    <comment_count>15</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2009-08-07 05:14:17 -0700</bug_when>
    <thetext>Mark, can you have a look at these?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138078</commentid>
    <comment_count>16</comment_count>
      <attachid>33627</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-07 13:07:06 -0700</bug_when>
    <thetext>Comment on attachment 33627
Rebased patch to build JavaScriptCore as shared library with Qt

Should this be marked obsolete?  Assuming so.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138090</commentid>
    <comment_count>17</comment_count>
      <attachid>33627</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2009-08-07 13:16:47 -0700</bug_when>
    <thetext>Comment on attachment 33627
Rebased patch to build JavaScriptCore as shared library with Qt

No this one shouldn&apos;t be obsolete, but it depends on the other patch. How can I make this relation clear using bugzilla?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138381</commentid>
    <comment_count>18</comment_count>
      <attachid>33773</attachid>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2009-08-08 11:01:58 -0700</bug_when>
    <thetext>Comment on attachment 33773
Updated patch with one MSVC warning fixed and explanation for the other ignored warning

A couple of concerns and comments:
JS_EXPORTDATA is a confusing choice of name when the majority of things being exported are functions.
There are a number of places that an entire class has been marked as being exported even though only a single symbol is currently listed in JavaScriptCore.exp and JavaScriptCore.def.  ByteCodeGenerator, Parser and ParserArena are the three that jump out at me for this reason.
It&apos;s not clear why WEBKIT_EXPORTDATA exists.  It doesn&apos;t seem to be used anywhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139815</commentid>
    <comment_count>19</comment_count>
      <attachid>34737</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-08-13 05:41:23 -0700</bug_when>
    <thetext>Created attachment 34737
Updated patch with JS_EXPORTDATA renamed to JS_EXPORT_PRIVATE

This updated patch is rebased against ToT and uses JS_EXPORT_PRIVATE instead of JS_EXPORTDATA, to clarify that the macro is used to export private symbols.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139816</commentid>
    <comment_count>20</comment_count>
      <attachid>34737</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-08-13 05:46:28 -0700</bug_when>
    <thetext>Comment on attachment 34737
Updated patch with JS_EXPORTDATA renamed to JS_EXPORT_PRIVATE

Clearing review, I forgot two hunks. Oops.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140207</commentid>
    <comment_count>21</comment_count>
      <attachid>34831</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-08-14 05:40:47 -0700</bug_when>
    <thetext>Created attachment 34831
Patch to remove unused WEBKIT_EXPORTDATA macro

This patch removes the unused WEBKIT_EXPORTDATA macro.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140208</commentid>
    <comment_count>22</comment_count>
      <attachid>34832</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-08-14 05:41:52 -0700</bug_when>
    <thetext>Created attachment 34832
Rebased patch to build JSC with JS_EXPORT_PRIVATE to export symbols</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140209</commentid>
    <comment_count>23</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-08-14 05:45:04 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; (From update of attachment 33773 [details])
&gt; A couple of concerns and comments:
&gt; JS_EXPORTDATA is a confusing choice of name when the majority of things being
&gt; exported are functions.

I agree. I&apos;ve uploaded an updated patch that replaces JS_EXPORTDATA with JS_EXPORT_PRIVATE, for consistency with the existing JS_EXPORT for the public C API.

&gt; There are a number of places that an entire class has been marked as being
&gt; exported even though only a single symbol is currently listed in
&gt; JavaScriptCore.exp and JavaScriptCore.def.  ByteCodeGenerator, Parser and
&gt; ParserArena are the three that jump out at me for this reason.

Yes, it appears a lot simpler and less cluttering to the source code to annotate the class instead of every used function with the export macro.

&gt; It&apos;s not clear why WEBKIT_EXPORTDATA exists.  It doesn&apos;t seem to be used
&gt; anywhere.

Well spotted :). I&apos;ve attached a patch to remove this macro alltogether.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144162</commentid>
    <comment_count>24</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-02 02:41:53 -0700</bug_when>
    <thetext>These are marked for review by Mark.  He&apos;s a busy guy, you might try tracking him down via #webkit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152645</commentid>
    <comment_count>25</comment_count>
      <attachid>34832</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-10-06 03:51:32 -0700</bug_when>
    <thetext>Comment on attachment 34832
Rebased patch to build JSC with JS_EXPORT_PRIVATE to export symbols

Clearning review as these patches require rebasing by now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232470</commentid>
    <comment_count>26</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-05-31 11:20:55 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; &gt; There are a number of places that an entire class has been marked as being
&gt; &gt; exported even though only a single symbol is currently listed in
&gt; &gt; JavaScriptCore.exp and JavaScriptCore.def.  ByteCodeGenerator, Parser and
&gt; &gt; ParserArena are the three that jump out at me for this reason.
&gt; 
&gt; Yes, it appears a lot simpler and less cluttering to the source code to annotate the class instead of every used function with the export macro.

&quot;Less cluttering&quot; perhaps, but it ends up exporting things that we might not want people to depend on. Is it really best to expert an entire class when we really want to export only a single function?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232487</commentid>
    <comment_count>27</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-05-31 11:50:58 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; (In reply to comment #23)
&gt; &gt; &gt; There are a number of places that an entire class has been marked as being
&gt; &gt; &gt; exported even though only a single symbol is currently listed in
&gt; &gt; &gt; JavaScriptCore.exp and JavaScriptCore.def.  ByteCodeGenerator, Parser and
&gt; &gt; &gt; ParserArena are the three that jump out at me for this reason.
&gt; &gt; 
&gt; &gt; Yes, it appears a lot simpler and less cluttering to the source code to annotate the class instead of every used function with the export macro.
&gt; 
&gt; &quot;Less cluttering&quot; perhaps, but it ends up exporting things that we might not want people to depend on. Is it really best to expert an entire class when we really want to export only a single function?

Personally, I would got for exporting the individual functions needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232853</commentid>
    <comment_count>28</comment_count>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2010-06-01 11:19:44 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; (In reply to comment #26)
&gt; &gt; (In reply to comment #23)
&gt; &gt; &gt; &gt; There are a number of places that an entire class has been marked as being
&gt; &gt; &gt; &gt; exported even though only a single symbol is currently listed in
&gt; &gt; &gt; &gt; JavaScriptCore.exp and JavaScriptCore.def.  ByteCodeGenerator, Parser and
&gt; &gt; &gt; &gt; ParserArena are the three that jump out at me for this reason.
&gt; &gt; &gt; 
&gt; &gt; &gt; Yes, it appears a lot simpler and less cluttering to the source code to annotate the class instead of every used function with the export macro.
&gt; &gt; 
&gt; &gt; &quot;Less cluttering&quot; perhaps, but it ends up exporting things that we might not want people to depend on. Is it really best to expert an entire class when we really want to export only a single function?
&gt; 
&gt; Personally, I would got for exporting the individual functions needed.

I agree with this, but I wonder if it would be an acceptable compromise to get the class export going and come back and tweak the exports later. Those ports that want more control can continue to use the export symbol files as they do now. 

I&apos;ll certainly be happy to look at ByteCodeGenerator, Parser and ParserArena, and modernize this patch, but going through every function in the JSCore library and comparing it against the export symbols file is a project and in the meantime, ports like wx are unable to expose the JSCore API to its users (or to tools like DRT) without creating some sort of wrapper API, which seems a lot of trouble to go to just in order to keep users away from certain functions. Thoughts?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239215</commentid>
    <comment_count>29</comment_count>
      <attachid>58961</attachid>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2010-06-16 21:51:32 -0700</bug_when>
    <thetext>Created attachment 58961
Use JS_EXPORT_PRIVATE to export individual symbols

I built wx with this successfully but I wasn&apos;t able to build the Win port because I&apos;m using 2008 and it appears the build scripts for Win don&apos;t support that yet. So probably a good idea to let the bots chew on this patch first. 

Overall, it&apos;s a very big patch but almost all of it is just adding JS_EXPORT_PRIVATE to various symbols. I also include the wx build changes, though they weren&apos;t much. The main thing to look at for review is the config.h file changes, and for a couple of the classes like String and AtomicString, I had to add explicit copy constructors and operator= methods so that I could specify the correct linkage for them. Other than that, I pretty much just prepended JS_EXPORT_PRIVATE to everything that some other library was asking for.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239216</commentid>
    <comment_count>30</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-16 21:53:08 -0700</bug_when>
    <thetext>Attachment 58961 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
Last 3072 characters of output:
150:  More than one command on the same line  [whitespace/newline] [4]
JavaScriptCore/runtime/JSCell.h:77:  Use 0 instead of NULL.  [readability/null] [4]
JavaScriptCore/runtime/JSCell.h:78:  Use 0 instead of NULL.  [readability/null] [4]
JavaScriptCore/wtf/text/WTFString.h:89:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
JavaScriptCore/wtf/text/WTFString.h:109:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
JavaScriptCore/wtf/text/WTFString.h:110:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
JavaScriptCore/wtf/text/WTFString.h:213:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
JavaScriptCore/wtf/text/WTFString.h:295:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
JavaScriptCore/wtf/text/WTFString.h:302:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
JavaScriptCore/wtf/text/WTFString.h:303:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
JavaScriptCore/wtf/text/WTFString.h:303:  More than one command on the same line  [whitespace/newline] [4]
JavaScriptCore/wtf/text/WTFString.h:303:  More than one command on the same line in if  [whitespace/parens] [4]
JavaScriptCore/wtf/unicode/Collator.h:42:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
JavaScriptCore/wtf/CurrentTime.h:42:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
JavaScriptCore/wtf/RandomNumber.h:33:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
JavaScriptCore/wtf/FastMalloc.h:32:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
JavaScriptCore/wtf/text/AtomicString.h:46:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
JavaScriptCore/wtf/text/AtomicString.h:47:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
JavaScriptCore/wtf/text/AtomicString.h:60:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
JavaScriptCore/wtf/text/AtomicString.h:117:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
JavaScriptCore/wtf/text/AtomicString.h:117:  More than one command on the same line  [whitespace/newline] [4]
JavaScriptCore/wtf/text/AtomicString.h:117:  More than one command on the same line in if  [whitespace/parens] [4]
JavaScriptCore/wtf/text/CString.h:61:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
JavaScriptCore/runtime/InitializeThreading.h:36:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
JavaScriptCore/wtf/RefCountedLeakCounter.h:29:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 25 in 72 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239218</commentid>
    <comment_count>31</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-16 22:01:29 -0700</bug_when>
    <thetext>Attachment 58961 did not build on mac:
Build output: http://webkit-commit-queue.appspot.com/results/3273248</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239226</commentid>
    <comment_count>32</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-16 22:27:37 -0700</bug_when>
    <thetext>Attachment 58961 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/3268239</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239236</commentid>
    <comment_count>33</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-16 22:54:00 -0700</bug_when>
    <thetext>Attachment 58961 did not build on gtk:
Build output: http://webkit-commit-queue.appspot.com/results/3309251</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239275</commentid>
    <comment_count>34</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-17 01:03:28 -0700</bug_when>
    <thetext>Attachment 58961 did not build on win:
Build output: http://webkit-commit-queue.appspot.com/results/3324280</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239488</commentid>
    <comment_count>35</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2010-06-17 11:18:08 -0700</bug_when>
    <thetext>I don&apos;t think it&apos;s good to have both JS_EXPORT_PRIVATE and JS_EXPORTDATA. It&apos;s not immediately clear which you should use where.

JS_EXPORT_PRIVATE is a confusing phrase because, read literally, it&apos;s an oxymoron: things that are private are things that are *not* exported.

Maybe standardizing on something like &quot;JS_EXPORTED_SYMBOL&quot; would be better.

If this patch made symbol export work the same on all platforms, so that all you had to do when exporting a symbol was to add JS_EXPORTED_SYMBOL to it, without updating any .exp or .def files, I&apos;d be really excited about it. But as it stands, it&apos;s just global clutter and more maintenance work for the core maintainers of JavaScriptCore, with no benefit to them. As a result, I&apos;m inclined to say &apos;no&apos; to this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239513</commentid>
    <comment_count>36</comment_count>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2010-06-17 11:56:43 -0700</bug_when>
    <thetext>(In reply to comment #35)
&gt; I don&apos;t think it&apos;s good to have both JS_EXPORT_PRIVATE and JS_EXPORTDATA. It&apos;s not immediately clear which you should use where.

I did plan on removing them but this patch was big enough as it was and I was hoping to do it as a separate step. However, I can adjust the patch to move everything to one symbol as you suggest. 

&gt; JS_EXPORT_PRIVATE is a confusing phrase because, read literally, it&apos;s an oxymoron: things that are private are things that are *not* exported.
&gt;
&gt; Maybe standardizing on something like &quot;JS_EXPORTED_SYMBOL&quot; would be better.

I&apos;ll go ahead and change this.
 
&gt; If this patch made symbol export work the same on all platforms, so that all you had to do when exporting a symbol was to add JS_EXPORTED_SYMBOL to it, without updating any .exp or .def files, I&apos;d be really excited about it. 

It doesn&apos;t do that because I&apos;m not an expert on all the other ports&apos; build systems, and this isn&apos;t a simple matter of just copying and pasting a file path. If you think about it, though, moving Mac, or Win, or any other port to this is probably not more than a couple hours work. If this patch is not landed, someone will have to do all this work anyway, and someone will have to continue to maintain the .def and .exp files anyway, so I think it would make sense from a maintenance perspective for each port to put in a small amount of effort to move to this.

&gt;But as it stands, it&apos;s just global clutter and more maintenance work for the core maintainers of JavaScriptCore, with no benefit to them. As a result, I&apos;m inclined to say &apos;no&apos; to this patch.

Well, the whole reason I even delved into doing this was because the commentary on this patch so far suggests that this approach is the only way that would be accepted to move us away from using .def and .exp files. It was a lot of work to do, and wx needs it to be able to use JSCore as a shared library, which it needs to get DumpRenderTree working again. 

I&apos;m working on cleaning up the patch now with the issues reported by the bots and with your suggestions, and I hope in the next iteration you&apos;ll reconsider.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239514</commentid>
    <comment_count>37</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-06-17 11:58:56 -0700</bug_when>
    <thetext>On Linux we do not have exp of def files so we will need a patch like this in order to build JSC as a dynamic library for Qt, and we really want to do that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239587</commentid>
    <comment_count>38</comment_count>
      <attachid>59038</attachid>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2010-06-17 14:42:36 -0700</bug_when>
    <thetext>Created attachment 59038
Switch to JS_EXPORTED_SYMBOL, various style and port fixes

Now all the JS internal exports are controlled using a single define, JS_EXPORTED_SYMBOL. The rest of the changes from the last patch are all fixes for build and style bot problems. 

To me, most of the remaining style issues look like either false alarms or really issues that should have a separate bug filed. (e.g. the warnings about DEFINE_GLOBAL, are those legit?)

I&apos;ve made sure the Mac port builds, and addressed the GTK issue I saw on the EWS bot. Hopefully these changes will fix the Win build as well, but if not, how do I get to the actual files that have the compilation errors for the Win EWS bot?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239589</commentid>
    <comment_count>39</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-17 14:46:05 -0700</bug_when>
    <thetext>Attachment 59038 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
JavaScriptCore/runtime/JSCell.h:76:  Use 0 instead of NULL.  [readability/null] [4]
JavaScriptCore/runtime/JSCell.h:77:  Use 0 instead of NULL.  [readability/null] [4]
JavaScriptCore/wtf/FastMalloc.h:63:  More than one command on the same line  [whitespace/newline] [4]
JavaScriptCore/wtf/FastMalloc.h:97:  One space before end of line comments  [whitespace/comments] [5]
JavaScriptCore/wtf/FastMalloc.h:98:  One space before end of line comments  [whitespace/comments] [5]
JavaScriptCore/wtf/FastMalloc.h:99:  One space before end of line comments  [whitespace/comments] [5]
JavaScriptCore/wtf/FastMalloc.h:100:  One space before end of line comments  [whitespace/comments] [5]
JavaScriptCore/wtf/FastMalloc.h:101:  One space before end of line comments  [whitespace/comments] [5]
JavaScriptCore/wtf/FastMalloc.h:102:  One space before end of line comments  [whitespace/comments] [5]
JavaScriptCore/wtf/FastMalloc.h:103:  One space before end of line comments  [whitespace/comments] [5]
JavaScriptCore/wtf/FastMalloc.h:104:  One space before end of line comments  [whitespace/comments] [5]
JavaScriptCore/wtf/FastMalloc.h:125:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
JavaScriptCore/wtf/FastMalloc.h:166:  One space before end of line comments  [whitespace/comments] [5]
WARNING: File exempt from style guide. Skipping: &quot;WebCore/platform/gtk/gtk2drawing.c&quot;
JavaScriptCore/wtf/text/StringStatics.cpp:52:  DEFINE_GLOBAL is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
JavaScriptCore/wtf/text/StringStatics.cpp:53:  DEFINE_GLOBAL is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
JavaScriptCore/wtf/text/StringStatics.cpp:54:  DEFINE_GLOBAL is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
JavaScriptCore/wtf/text/StringStatics.cpp:55:  DEFINE_GLOBAL is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
JavaScriptCore/wtf/text/StringStatics.cpp:56:  DEFINE_GLOBAL is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
JavaScriptCore/wtf/text/StringStatics.cpp:57:  DEFINE_GLOBAL is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
JavaScriptCore/wtf/text/StringStatics.cpp:58:  DEFINE_GLOBAL is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 20 in 90 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239629</commentid>
    <comment_count>40</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-17 16:36:34 -0700</bug_when>
    <thetext>Attachment 59038 did not build on gtk:
Build output: http://webkit-commit-queue.appspot.com/results/3317325</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239673</commentid>
    <comment_count>41</comment_count>
      <attachid>59052</attachid>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2010-06-17 17:26:52 -0700</bug_when>
    <thetext>Created attachment 59052
Same as last patch with proposed GTK build fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239674</commentid>
    <comment_count>42</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-17 17:28:31 -0700</bug_when>
    <thetext>Attachment 59052 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
JavaScriptCore/runtime/JSCell.h:76:  Use 0 instead of NULL.  [readability/null] [4]
JavaScriptCore/runtime/JSCell.h:77:  Use 0 instead of NULL.  [readability/null] [4]
JavaScriptCore/wtf/FastMalloc.h:63:  More than one command on the same line  [whitespace/newline] [4]
JavaScriptCore/wtf/FastMalloc.h:97:  One space before end of line comments  [whitespace/comments] [5]
JavaScriptCore/wtf/FastMalloc.h:98:  One space before end of line comments  [whitespace/comments] [5]
JavaScriptCore/wtf/FastMalloc.h:99:  One space before end of line comments  [whitespace/comments] [5]
JavaScriptCore/wtf/FastMalloc.h:100:  One space before end of line comments  [whitespace/comments] [5]
JavaScriptCore/wtf/FastMalloc.h:101:  One space before end of line comments  [whitespace/comments] [5]
JavaScriptCore/wtf/FastMalloc.h:102:  One space before end of line comments  [whitespace/comments] [5]
JavaScriptCore/wtf/FastMalloc.h:103:  One space before end of line comments  [whitespace/comments] [5]
JavaScriptCore/wtf/FastMalloc.h:104:  One space before end of line comments  [whitespace/comments] [5]
JavaScriptCore/wtf/FastMalloc.h:166:  One space before end of line comments  [whitespace/comments] [5]
WARNING: File exempt from style guide. Skipping: &quot;WebCore/platform/gtk/gtk2drawing.c&quot;
JavaScriptCore/wtf/text/StringStatics.cpp:52:  DEFINE_GLOBAL is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
JavaScriptCore/wtf/text/StringStatics.cpp:53:  DEFINE_GLOBAL is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
JavaScriptCore/wtf/text/StringStatics.cpp:54:  DEFINE_GLOBAL is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
JavaScriptCore/wtf/text/StringStatics.cpp:55:  DEFINE_GLOBAL is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
JavaScriptCore/wtf/text/StringStatics.cpp:56:  DEFINE_GLOBAL is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
JavaScriptCore/wtf/text/StringStatics.cpp:57:  DEFINE_GLOBAL is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
JavaScriptCore/wtf/text/StringStatics.cpp:58:  DEFINE_GLOBAL is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 19 in 90 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239729</commentid>
    <comment_count>43</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-17 20:37:12 -0700</bug_when>
    <thetext>Attachment 59052 did not build on gtk:
Build output: http://webkit-commit-queue.appspot.com/results/3326297</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239758</commentid>
    <comment_count>44</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-17 22:12:37 -0700</bug_when>
    <thetext>Attachment 59052 did not build on win:
Build output: http://webkit-commit-queue.appspot.com/results/3328293</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240914</commentid>
    <comment_count>45</comment_count>
      <attachid>59298</attachid>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2010-06-21 15:11:42 -0700</bug_when>
    <thetext>Created attachment 59298
Patch with another attempt at GTK bot fix

Anyone with Qt or Win port source trees willing to take a look at what is leading to failures there? I&apos;ll try to get these set up on my end, but I need a separate Win build machine here because I&apos;ve already upgraded to MSVC 2008, and I&apos;m not set up for Qt at all, so it might be a while.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240915</commentid>
    <comment_count>46</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-21 15:13:44 -0700</bug_when>
    <thetext>Attachment 59298 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
JavaScriptCore/runtime/JSCell.h:76:  Use 0 instead of NULL.  [readability/null] [4]
JavaScriptCore/runtime/JSCell.h:77:  Use 0 instead of NULL.  [readability/null] [4]
JavaScriptCore/wtf/FastMalloc.h:63:  More than one command on the same line  [whitespace/newline] [4]
JavaScriptCore/wtf/FastMalloc.h:97:  One space before end of line comments  [whitespace/comments] [5]
JavaScriptCore/wtf/FastMalloc.h:98:  One space before end of line comments  [whitespace/comments] [5]
JavaScriptCore/wtf/FastMalloc.h:99:  One space before end of line comments  [whitespace/comments] [5]
JavaScriptCore/wtf/FastMalloc.h:100:  One space before end of line comments  [whitespace/comments] [5]
JavaScriptCore/wtf/FastMalloc.h:101:  One space before end of line comments  [whitespace/comments] [5]
JavaScriptCore/wtf/FastMalloc.h:102:  One space before end of line comments  [whitespace/comments] [5]
JavaScriptCore/wtf/FastMalloc.h:103:  One space before end of line comments  [whitespace/comments] [5]
JavaScriptCore/wtf/FastMalloc.h:104:  One space before end of line comments  [whitespace/comments] [5]
JavaScriptCore/wtf/FastMalloc.h:166:  One space before end of line comments  [whitespace/comments] [5]
WARNING: File exempt from style guide. Skipping: &quot;WebCore/platform/gtk/gtk2drawing.c&quot;
JavaScriptCore/wtf/text/StringStatics.cpp:52:  DEFINE_GLOBAL is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
JavaScriptCore/wtf/text/StringStatics.cpp:53:  DEFINE_GLOBAL is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
JavaScriptCore/wtf/text/StringStatics.cpp:54:  DEFINE_GLOBAL is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
JavaScriptCore/wtf/text/StringStatics.cpp:55:  DEFINE_GLOBAL is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
JavaScriptCore/wtf/text/StringStatics.cpp:56:  DEFINE_GLOBAL is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
JavaScriptCore/wtf/text/StringStatics.cpp:57:  DEFINE_GLOBAL is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
JavaScriptCore/wtf/text/StringStatics.cpp:58:  DEFINE_GLOBAL is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 19 in 89 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241235</commentid>
    <comment_count>47</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-22 06:47:23 -0700</bug_when>
    <thetext>Attachment 59298 did not build on win:
Build output: http://webkit-commit-queue.appspot.com/results/3336581</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242226</commentid>
    <comment_count>48</comment_count>
      <attachid>59596</attachid>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2010-06-23 18:31:48 -0700</bug_when>
    <thetext>Created attachment 59596
Now trying a Windows fix

This got me building on a Windows VM up to WebKit, but the VM build kept choking on &quot;out of memory&quot; linker errors, so I don&apos;t know if this fix will get us building all the way. 

I&apos;ve also discovered the Qt bot&apos;s problem - some of their moc-generated sources include files that indirectly include JSCore sources, but they do not include config.h from anywhere. Not sure what the right way to fix that would be. Anyone on the Qt side have suggestions?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242229</commentid>
    <comment_count>49</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-23 18:35:10 -0700</bug_when>
    <thetext>Attachment 59596 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
JavaScriptCore/runtime/JSCell.h:76:  Use 0 instead of NULL.  [readability/null] [4]
JavaScriptCore/runtime/JSCell.h:77:  Use 0 instead of NULL.  [readability/null] [4]
JavaScriptCore/wtf/FastMalloc.h:63:  More than one command on the same line  [whitespace/newline] [4]
JavaScriptCore/wtf/FastMalloc.h:97:  One space before end of line comments  [whitespace/comments] [5]
JavaScriptCore/wtf/FastMalloc.h:98:  One space before end of line comments  [whitespace/comments] [5]
JavaScriptCore/wtf/FastMalloc.h:99:  One space before end of line comments  [whitespace/comments] [5]
JavaScriptCore/wtf/FastMalloc.h:100:  One space before end of line comments  [whitespace/comments] [5]
JavaScriptCore/wtf/FastMalloc.h:101:  One space before end of line comments  [whitespace/comments] [5]
JavaScriptCore/wtf/FastMalloc.h:102:  One space before end of line comments  [whitespace/comments] [5]
JavaScriptCore/wtf/FastMalloc.h:103:  One space before end of line comments  [whitespace/comments] [5]
JavaScriptCore/wtf/FastMalloc.h:104:  One space before end of line comments  [whitespace/comments] [5]
JavaScriptCore/wtf/FastMalloc.h:166:  One space before end of line comments  [whitespace/comments] [5]
WARNING: File exempt from style guide. Skipping: &quot;WebCore/platform/gtk/gtk2drawing.c&quot;
JavaScriptCore/wtf/text/StringStatics.cpp:52:  DEFINE_GLOBAL is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
JavaScriptCore/wtf/text/StringStatics.cpp:53:  DEFINE_GLOBAL is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
JavaScriptCore/wtf/text/StringStatics.cpp:54:  DEFINE_GLOBAL is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
JavaScriptCore/wtf/text/StringStatics.cpp:55:  DEFINE_GLOBAL is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
JavaScriptCore/wtf/text/StringStatics.cpp:56:  DEFINE_GLOBAL is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
JavaScriptCore/wtf/text/StringStatics.cpp:57:  DEFINE_GLOBAL is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
JavaScriptCore/wtf/text/StringStatics.cpp:58:  DEFINE_GLOBAL is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 19 in 90 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242625</commentid>
    <comment_count>50</comment_count>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2010-06-24 12:42:03 -0700</bug_when>
    <thetext>Okay, so I&apos;m basically stuck on the Win build because the build bot is not applying the patch for some reason, though applying the patch to the local tree on my Win box works fine, and my Win VM apparently needs more memory than 3GB total to get through linking WebKit and I can&apos;t allocate that much right now. 

On the Qt front, I&apos;m just waiting to hear what the best idea would be for handling the issue with moc_XYZ.cpp files not including config.h. 

I&apos;d really, really appreciate any help as I&apos;m concerned about this patch bit-rotting due to its large size.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244448</commentid>
    <comment_count>51</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2010-06-29 13:11:55 -0700</bug_when>
    <thetext>(In reply to comment #37)
&gt; On Linux we do not have exp of def files so we will need a patch like this in order to build JSC as a dynamic library for Qt, and we really want to do that.

Are you saying that you haven&apos;t made exp or def files yet, or that Linux just doesn&apos;t support them?

GCC certainly supports them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244456</commentid>
    <comment_count>52</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-06-29 13:30:46 -0700</bug_when>
    <thetext>(In reply to comment #51)
&gt; (In reply to comment #37)
&gt; &gt; On Linux we do not have exp of def files so we will need a patch like this in order to build JSC as a dynamic library for Qt, and we really want to do that.
&gt; 
&gt; Are you saying that you haven&apos;t made exp or def files yet, or that Linux just doesn&apos;t support them?
&gt; 
&gt; GCC certainly supports them.

Last I looked I didn&apos;t find that support for Linux, but support for something similar that for some reason couldn&apos;t be used. Do you have any link to the documentation mentioning this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244631</commentid>
    <comment_count>53</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-06-29 22:58:50 -0700</bug_when>
    <thetext>(In reply to comment #50)
&gt; On the Qt front, I&apos;m just waiting to hear what the best idea would be for handling the issue with moc_XYZ.cpp files not including config.h. 

The solution to this problem is this:

   1) Foo.h declares a QObject subclass and has a Q_OBJECT macro
   2) Foo.cpp implements the class
   3) The build system runs moc on Foo.h and generates moc_Foo.cpp
   4) moc_Foo.cpp is compiled separately

If however you change Foo.cpp to include &quot;moc_Foo.cpp&quot; at the end of the file (see WebKit/qt/Api/qwebpage.cpp for example), then the build system will automatically skip step number 4). That means the moc generated code is compiled as part of Foo.cpp, which has the config.h inclusion at the top of the file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250655</commentid>
    <comment_count>54</comment_count>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2010-07-13 11:53:19 -0700</bug_when>
    <thetext>(In reply to comment #53)
&gt; (In reply to comment #50)
&gt; &gt; On the Qt front, I&apos;m just waiting to hear what the best idea would be for handling the issue with moc_XYZ.cpp files not including config.h. 
&gt; 
&gt; The solution to this problem is this:
&gt; 
&gt;    1) Foo.h declares a QObject subclass and has a Q_OBJECT macro
&gt;    2) Foo.cpp implements the class
&gt;    3) The build system runs moc on Foo.h and generates moc_Foo.cpp
&gt;    4) moc_Foo.cpp is compiled separately
&gt; 
&gt; If however you change Foo.cpp to include &quot;moc_Foo.cpp&quot; at the end of the file (see WebKit/qt/Api/qwebpage.cpp for example), then the build system will automatically skip step number 4). That means the moc generated code is compiled as part of Foo.cpp, which has the config.h inclusion at the top of the file.

Thanks, this works fine! Sorry for the late reply, I&apos;ve been meaning to put up a new patch but I finally got a Windows build linking WebCore and I had to add quite a few more Windows fixes. (A lot of them are related to the current need to build the WTF String .cpp files in each project that uses them.) I&apos;ve finally sorted those issues out, but now I need to re-test the patch with latest trunk, so hopefully I&apos;ll have an updated patch out soon...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>252108</commentid>
    <comment_count>55</comment_count>
      <attachid>61720</attachid>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2010-07-15 14:26:12 -0700</bug_when>
    <thetext>Created attachment 61720
One more time, with hopefully Win and Qt fixes

This is probably going to be my last shot on this. It&apos;s taking too long to keep maintaining and updating a patch this huge even using git and several times on Win I&apos;ve run into issues like having to redo the Windows project changes manually because of conflicts with the diffs. Hopefully it will apply to the Win bots and get a shot at building this time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>252111</commentid>
    <comment_count>56</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-15 14:29:02 -0700</bug_when>
    <thetext>Attachment 61720 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
Last 3072 characters of output:
 before end of line comments  [whitespace/comments] [5]
JavaScriptCore/wtf/FastMalloc.h:98:  One space before end of line comments  [whitespace/comments] [5]
JavaScriptCore/wtf/FastMalloc.h:99:  One space before end of line comments  [whitespace/comments] [5]
JavaScriptCore/wtf/FastMalloc.h:100:  One space before end of line comments  [whitespace/comments] [5]
JavaScriptCore/wtf/FastMalloc.h:101:  One space before end of line comments  [whitespace/comments] [5]
JavaScriptCore/wtf/FastMalloc.h:102:  One space before end of line comments  [whitespace/comments] [5]
JavaScriptCore/wtf/FastMalloc.h:103:  One space before end of line comments  [whitespace/comments] [5]
JavaScriptCore/wtf/FastMalloc.h:104:  One space before end of line comments  [whitespace/comments] [5]
JavaScriptCore/wtf/FastMalloc.h:166:  One space before end of line comments  [whitespace/comments] [5]
WARNING: File exempt from style guide. Skipping: &quot;WebCore/platform/gtk/gtk2drawing.c&quot;
WebKitTools/DumpRenderTree/cg/ImageDiffCG.cpp:29:  Found other header before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
JavaScriptCore/API/tests/testapi.c:26:  Found other header before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
JavaScriptCore/API/tests/JSNode.c:26:  Found other header before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
JavaScriptCore/API/tests/minidom.c:27:  Found other header before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
JavaScriptCore/API/tests/JSNodeList.c:26:  Found other header before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
JavaScriptCore/wtf/text/StringStatics.cpp:52:  DEFINE_GLOBAL is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
JavaScriptCore/wtf/text/StringStatics.cpp:53:  DEFINE_GLOBAL is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
JavaScriptCore/wtf/text/StringStatics.cpp:54:  DEFINE_GLOBAL is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
JavaScriptCore/wtf/text/StringStatics.cpp:55:  DEFINE_GLOBAL is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
JavaScriptCore/wtf/text/StringStatics.cpp:56:  DEFINE_GLOBAL is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
JavaScriptCore/wtf/text/StringStatics.cpp:57:  DEFINE_GLOBAL is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
JavaScriptCore/wtf/text/StringStatics.cpp:58:  DEFINE_GLOBAL is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 25 in 102 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>252126</commentid>
    <comment_count>57</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-07-15 14:42:12 -0700</bug_when>
    <thetext>I’ve done large patches like this before.

A good way to get a change like this landed without having to maintain a giant patch is to get agreement on the approach, put in placeholder macros that do nothing, and then get patches landed that deploy the macros in various parts of the code, with the macros not yet functioning.

Then the last patch will just be throwing the switch and turning this on. That one is hard to make work successfully, but easy to merge.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>252167</commentid>
    <comment_count>58</comment_count>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2010-07-15 15:22:11 -0700</bug_when>
    <thetext>(In reply to comment #57)
&gt; I’ve done large patches like this before.
&gt; 
&gt; A good way to get a change like this landed without having to maintain a giant patch is to get agreement on the approach, put in placeholder macros that do nothing, and then get patches landed that deploy the macros in various parts of the code, with the macros not yet functioning.
&gt; 
&gt; Then the last patch will just be throwing the switch and turning this on. That one is hard to make work successfully, but easy to merge.

I considered that, but too late, unfortunately. If I had realized how this would turn out, I would have waited to merge JS_EXPORTDATA and JS_EXPORTED_SYMBOL, because in order to make JS_EXPORTED_SYMBOL a stub JS_EXPORTDATA needs to stay in the code. :( It can be &apos;undone&apos;, but I&apos;d have to either go through and find JS_EXPORTDATA symbols one-by-one and rename them, or go back about 6 revisions of the patch and then reapply all the fixes made in those later revisions.

The big sticking point with maintenance is the need to alter the Win project files, and that is needed because we have a system set up that is copying the WTF *String.cpp files into a place where WebCore and other projects can compile them. I don&apos;t really understand the reasoning for this, but if this could be fixed independently by someone, then it would remove a lot of the issues I&apos;ve been dealing with on the Win side (e.g. the patches not applying on the EWS bot, the need to undo and redo the Win project changes whenever someone changes the project files, etc.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>252170</commentid>
    <comment_count>59</comment_count>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2010-07-15 15:23:47 -0700</bug_when>
    <thetext>&gt; It can be &apos;undone&apos;, but I&apos;d have to either go through and find JS_EXPORTDATA symbols one-by-one and rename them...

rename them from JS_EXPORTED_SYMBOL back to JS_EXPORTDATA, I meant to say.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>252277</commentid>
    <comment_count>60</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-15 18:51:34 -0700</bug_when>
    <thetext>Attachment 61720 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/3557030</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>252627</commentid>
    <comment_count>61</comment_count>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2010-07-16 11:35:10 -0700</bug_when>
    <thetext>So the Chromium problem is a simple JS_EXPORTDATA -&gt; JS_EXPORTED_SYMBOL change in their DRT config.h header, but again the Win bot can&apos;t apply the Win project changes to the patch, and I don&apos;t think that will change if I update a new patch with the Chromium fix. I really have to move on to addressing some other problems for now, so I&apos;ll get back to this when I can, but if someone wants to give it a shot before then, the place to start from would probably be the &quot;Use JS_EXPORT_PRIVATE to export individual symbols&quot; patch. 

Note that having gone through and made fixes for most of the ports, one thing I would probably do if I had to do it again is have some separate JSCore header for the defines. (And maybe a WTF one too, for projects only including WTF headers.) Maybe JSConfig.h and WTFConfig.h? Then in config.h or similar project headers, I&apos;d include the JSCore / WTF header. This way, JS_EXPORTED_SYMBOL is only defined in one place rather than having a lot of copied and pasted re-definitions and would be defined based on a combination of JS_EXPORT + BUILDING_&lt;JavaScriptCore/WTF&gt; values.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264775</commentid>
    <comment_count>62</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2010-08-14 17:04:48 -0700</bug_when>
    <thetext>I would advice to skip the style parts from the patch for easier review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271080</commentid>
    <comment_count>63</comment_count>
      <attachid>65843</attachid>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2010-08-28 17:34:07 -0700</bug_when>
    <thetext>Created attachment 65843
One step at a time, this time updating symbols first

Trying the approach Darin suggested of updating all the macros, but not switching it on for ports yet so we can address the build system issues in later patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271082</commentid>
    <comment_count>64</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-28 17:36:05 -0700</bug_when>
    <thetext>Attachment 65843 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
JavaScriptCore/runtime/JSWrapperObject.h:31:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
JavaScriptCore/runtime/JSCell.h:77:  Use 0 instead of NULL.  [readability/null] [4]
JavaScriptCore/runtime/JSCell.h:78:  Use 0 instead of NULL.  [readability/null] [4]
JavaScriptCore/runtime/StringObject.h:29:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
JavaScriptCore/wtf/text/WTFString.h:300:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
JavaScriptCore/wtf/unicode/Collator.h:42:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
JavaScriptCore/wtf/CurrentTime.h:42:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
JavaScriptCore/wtf/RandomNumber.h:33:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
JavaScriptCore/wtf/FastMalloc.h:32:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
JavaScriptCore/wtf/text/AtomicString.h:44:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
JavaScriptCore/wtf/text/AtomicString.h:45:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
JavaScriptCore/wtf/text/AtomicString.h:58:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
JavaScriptCore/wtf/text/AtomicString.h:115:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
JavaScriptCore/wtf/text/AtomicString.h:115:  More than one command on the same line in if  [whitespace/parens] [4]
JavaScriptCore/wtf/text/CString.h:61:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
JavaScriptCore/runtime/InitializeThreading.h:36:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
JavaScriptCore/wtf/RefCountedLeakCounter.h:29:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 17 in 74 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271083</commentid>
    <comment_count>65</comment_count>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2010-08-28 17:36:54 -0700</bug_when>
    <thetext>Also, note that with gcc, I had to export a few entire classes like JSObject, because if anything in WebCore derived from them, we&apos;d get undefined symbol errors for the class&apos; vtable and typeinfo. I found it documented that these aren&apos;t made public unless the class itself is exported. I only did it when necessary to resolve those issues, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271085</commentid>
    <comment_count>66</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-28 17:46:34 -0700</bug_when>
    <thetext>Attachment 65843 did not build on mac:
Build output: http://queues.webkit.org/results/3884061</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271086</commentid>
    <comment_count>67</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-08-28 17:54:18 -0700</bug_when>
    <thetext>Attachment 65843 did not build on qt:
Build output: http://queues.webkit.org/results/3839083</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271089</commentid>
    <comment_count>68</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-28 18:27:07 -0700</bug_when>
    <thetext>Attachment 65843 did not build on chromium:
Build output: http://queues.webkit.org/results/3834083</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271090</commentid>
    <comment_count>69</comment_count>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2010-08-28 18:29:32 -0700</bug_when>
    <thetext>Yipes, sorry for the patch spam. :( I had forgotten how far back this patch was, and what all was missing from it. I&apos;ll go through and reapply some of the fixes and re-submit.

BTW, for WTF headers, I know Platform.h is pretty much available when building anything, but do ports include / copy over all WTF headers or only specific ones?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271109</commentid>
    <comment_count>70</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-28 21:25:28 -0700</bug_when>
    <thetext>Attachment 65843 did not build on win:
Build output: http://queues.webkit.org/results/3854087</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271157</commentid>
    <comment_count>71</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2010-08-29 09:41:07 -0700</bug_when>
    <thetext>&gt; BTW, for WTF headers, I know Platform.h is pretty much available when building anything, but do ports include / copy over all WTF headers or only specific ones?

In WebKit2 the wtf headers are included in the &quot;normal&quot; way (in contrast to WebCore and JavaScriptCore). Maybe this is the case everywhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271235</commentid>
    <comment_count>72</comment_count>
      <attachid>65865</attachid>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2010-08-29 17:10:41 -0700</bug_when>
    <thetext>Created attachment 65865
Style and build fixes to update last patch

I think this patch will work for all the ports, but let&apos;s see first. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271236</commentid>
    <comment_count>73</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-29 17:15:47 -0700</bug_when>
    <thetext>Attachment 65865 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
JavaScriptCore/wtf/FastMalloc.h:101:  One space before end of line comments  [whitespace/comments] [5]
JavaScriptCore/wtf/FastMalloc.h:102:  One space before end of line comments  [whitespace/comments] [5]
JavaScriptCore/wtf/FastMalloc.h:103:  One space before end of line comments  [whitespace/comments] [5]
JavaScriptCore/wtf/FastMalloc.h:104:  One space before end of line comments  [whitespace/comments] [5]
JavaScriptCore/wtf/FastMalloc.h:105:  One space before end of line comments  [whitespace/comments] [5]
JavaScriptCore/wtf/FastMalloc.h:106:  One space before end of line comments  [whitespace/comments] [5]
JavaScriptCore/wtf/FastMalloc.h:107:  One space before end of line comments  [whitespace/comments] [5]
JavaScriptCore/wtf/FastMalloc.h:108:  One space before end of line comments  [whitespace/comments] [5]
JavaScriptCore/wtf/FastMalloc.h:171:  One space before end of line comments  [whitespace/comments] [5]
Total errors found: 9 in 75 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271278</commentid>
    <comment_count>74</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-29 20:39:24 -0700</bug_when>
    <thetext>Attachment 65865 did not build on win:
Build output: http://queues.webkit.org/results/3822118</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325929</commentid>
    <comment_count>75</comment_count>
      <attachid>65865</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-12-23 00:18:43 -0800</bug_when>
    <thetext>Comment on attachment 65865
Style and build fixes to update last patch

This patch has been up for review for months and doesn&apos;t build on Windows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363114</commentid>
    <comment_count>76</comment_count>
      <attachid>84895</attachid>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2011-03-06 12:49:11 -0800</bug_when>
    <thetext>Created attachment 84895
Retry - Step 1 - Define export macros but disable them on all ports.

Well, I&apos;m at it again. :) So after thinking about it, I&apos;d like to tackle this problem in the following stages:

1) Define the export macros, but leave them disabled on all ports (i.e. #define WTF/JS_EXPORT_PRIVATE  ). I&apos;ve defined WTF_EXPORT_PRIVATE on the exported functions in Assertions.h to make sure that we hit build errors in each port and project if these macros are not defined. This way we can sort the build errors with the macros not being defined without having to first update the exports list each time we hit a build error on a port, and also it makes the patch easier to review and digest by making sure there&apos;s very little noise in the patch. 

2) Get the wx port building. This patch will add the massive list of exports, but as long as the build errors in #1 should addressed, all other ports should be unaffected. As the wx port maintainer, I will confirm that it doesn&apos;t break the wx port, and so if someone could just look over this to make sure things are in good order and r+ if so, that would be great.

3) Work out the build issues for each port, starting with Apple Mac and Windows. If they want to get a jump on tackling the issue, any port should be able to work out the issues themselves by defining WTF_USE_EXPORT_MACROS 1 on their port and seeing what breaks.

Hopefully this approach will make it easier to get this problem tackled once and for all! Please let me know what you think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363115</commentid>
    <comment_count>77</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-06 12:50:38 -0800</bug_when>
    <thetext>Attachment 84895 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/API/JSBase.h&apos;, u&apos;Sou...&quot; exit_code: 1

Source/JavaScriptCore/wtf/Assertions.h:151:  The parameter name &quot;channel&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/wtf/Assertions.h:152:  The parameter name &quot;channel&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 17 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363120</commentid>
    <comment_count>78</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-03-06 13:23:14 -0800</bug_when>
    <thetext>Attachment 84895 did not build on qt:
Build output: http://queues.webkit.org/results/8101355</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363133</commentid>
    <comment_count>79</comment_count>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-03-06 14:22:38 -0800</bug_when>
    <thetext>Attachment 84895 did not build on gtk:
Build output: http://queues.webkit.org/results/8105304</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363135</commentid>
    <comment_count>80</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-03-06 14:28:05 -0800</bug_when>
    <thetext>Attachment 84895 did not build on win:
Build output: http://queues.webkit.org/results/8105305</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363144</commentid>
    <comment_count>81</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-03-06 15:07:35 -0800</bug_when>
    <thetext>Attachment 84895 did not build on win:
Build output: http://queues.webkit.org/results/8102386</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363159</commentid>
    <comment_count>82</comment_count>
      <attachid>84903</attachid>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2011-03-06 17:52:29 -0800</bug_when>
    <thetext>Created attachment 84903
Retry - Step 1 re-submit w/attempts at GTK, Qt and Win build fixes.

New try with build fixes for the ports broken by the patch. Not really sure if I should address the style bot issues.... It would seem inconsistent to remove the variable name from that one variable while leaving all the others in there. 

Also, in case anyone familiar with Source/WebKit/cf/WebCoreSupport/WebInspectorClientCF.cpp is reading, is there any reason the file doesn&apos;t just do:

#if defined(WIN32) || defined(_WIN32)
#include &quot;config.h&quot;
#else
// set defines needed on Mac due to missing config.h
#endif

Most of the defines set in there are for the Win32 case, which from the comment should have access to config.h, it is only the Mac port that is without it. I could set a different bug for that if there&apos;s interest in having it handled but doing it in this patch isn&apos;t appropriate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363160</commentid>
    <comment_count>83</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-06 17:55:25 -0800</bug_when>
    <thetext>Attachment 84903 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/API/JSBase.h&apos;, u&apos;Sou...&quot; exit_code: 1

Source/JavaScriptCore/wtf/Assertions.h:151:  The parameter name &quot;channel&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/wtf/Assertions.h:152:  The parameter name &quot;channel&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 19 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363173</commentid>
    <comment_count>84</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-03-06 18:43:53 -0800</bug_when>
    <thetext>Attachment 84903 did not build on qt:
Build output: http://queues.webkit.org/results/8104367</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363178</commentid>
    <comment_count>85</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-03-06 18:58:58 -0800</bug_when>
    <thetext>Attachment 84903 did not build on win:
Build output: http://queues.webkit.org/results/8107201</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363182</commentid>
    <comment_count>86</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-03-06 19:33:22 -0800</bug_when>
    <thetext>Attachment 84903 did not build on win:
Build output: http://queues.webkit.org/results/8107206</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363185</commentid>
    <comment_count>87</comment_count>
      <attachid>84910</attachid>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2011-03-06 19:43:59 -0800</bug_when>
    <thetext>Created attachment 84910
Retry - Step 1 another attempt at GTK, Qt and Win build fixes.

Looks like I moved around a bit too much in WebKit2/config.h while trying to make sure that FastMalloc.h was included only after JS/WTF_EXPORT_PRIVATE macros were defined.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363186</commentid>
    <comment_count>88</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-06 19:46:31 -0800</bug_when>
    <thetext>Attachment 84910 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/API/JSBase.h&apos;, u&apos;Sou...&quot; exit_code: 1

Source/JavaScriptCore/wtf/Assertions.h:151:  The parameter name &quot;channel&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/wtf/Assertions.h:152:  The parameter name &quot;channel&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 19 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363204</commentid>
    <comment_count>89</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-03-06 20:37:28 -0800</bug_when>
    <thetext>Attachment 84910 did not build on qt:
Build output: http://queues.webkit.org/results/8103456</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363211</commentid>
    <comment_count>90</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-03-06 21:02:44 -0800</bug_when>
    <thetext>Attachment 84910 did not build on win:
Build output: http://queues.webkit.org/results/8101427</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363221</commentid>
    <comment_count>91</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-03-06 21:37:02 -0800</bug_when>
    <thetext>Attachment 84910 did not build on win:
Build output: http://queues.webkit.org/results/8107231</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363350</commentid>
    <comment_count>92</comment_count>
      <attachid>84946</attachid>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2011-03-07 08:18:50 -0800</bug_when>
    <thetext>Created attachment 84946
Retry - Step 1 another attempt at Win and Qt build fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363353</commentid>
    <comment_count>93</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-07 08:21:00 -0800</bug_when>
    <thetext>Attachment 84946 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/API/JSBase.h&apos;, u&apos;Sou...&quot; exit_code: 1

Source/JavaScriptCore/wtf/Assertions.h:151:  The parameter name &quot;channel&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/wtf/Assertions.h:152:  The parameter name &quot;channel&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 20 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363361</commentid>
    <comment_count>94</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-03-07 08:59:20 -0800</bug_when>
    <thetext>Attachment 84946 did not build on win:
Build output: http://queues.webkit.org/results/8103565</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363372</commentid>
    <comment_count>95</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-03-07 09:19:19 -0800</bug_when>
    <thetext>Attachment 84946 did not build on qt:
Build output: http://queues.webkit.org/results/8105497</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363377</commentid>
    <comment_count>96</comment_count>
      <attachid>84952</attachid>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2011-03-07 09:39:53 -0800</bug_when>
    <thetext>Created attachment 84952
Retry - Step 1 more Win and Qt build fixes, getting closer...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363378</commentid>
    <comment_count>97</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-07 09:44:11 -0800</bug_when>
    <thetext>Attachment 84952 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/API/JSBase.h&apos;, u&apos;Sou...&quot; exit_code: 1

Source/JavaScriptCore/wtf/Assertions.h:151:  The parameter name &quot;channel&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/wtf/Assertions.h:152:  The parameter name &quot;channel&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 24 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363400</commentid>
    <comment_count>98</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-03-07 10:26:32 -0800</bug_when>
    <thetext>Attachment 84952 did not build on win:
Build output: http://queues.webkit.org/results/8107352</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363415</commentid>
    <comment_count>99</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-03-07 11:02:12 -0800</bug_when>
    <thetext>Attachment 84952 did not build on qt:
Build output: http://queues.webkit.org/results/8107359</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363443</commentid>
    <comment_count>100</comment_count>
      <attachid>84962</attachid>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2011-03-07 11:38:06 -0800</bug_when>
    <thetext>Created attachment 84962
Retry - Step 1 more Win and Qt build fixes

Sorry for the patch spam, everyone, but it seems on these smaller projects in tools there is often not a config.h so that&apos;s why the build keeps breaking as we get down into Tools.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363445</commentid>
    <comment_count>101</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-07 11:39:45 -0800</bug_when>
    <thetext>Attachment 84962 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/API/JSBase.h&apos;, u&apos;Sou...&quot; exit_code: 1

Tools/WebKitTestRunner/qt/TestControllerQt.cpp:27:  Found other header before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Tools/WebKitTestRunner/qt/TestInvocationQt.cpp:26:  Found other header before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Tools/WebKitTestRunner/qt/main.cpp:27:  Found other header before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Tools/WebKitTestRunner/qt/PlatformWebViewQt.cpp:27:  Found other header before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Tools/WebKitTestRunner/WebKitTestRunnerPrefix.h:33:  #ifndef header guard has wrong style, please use: WTF_WebKitTestRunnerPrefix_h  [build/header_guard] [5]
Source/JavaScriptCore/wtf/Assertions.h:151:  The parameter name &quot;channel&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/wtf/Assertions.h:152:  The parameter name &quot;channel&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 7 in 29 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363490</commentid>
    <comment_count>102</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-03-07 12:22:59 -0800</bug_when>
    <thetext>Attachment 84962 did not build on win:
Build output: http://queues.webkit.org/results/8098825</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363543</commentid>
    <comment_count>103</comment_count>
      <attachid>84975</attachid>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2011-03-07 13:31:51 -0800</bug_when>
    <thetext>Created attachment 84975
Retry - Step 1 adding config.h for projects in Tools</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363547</commentid>
    <comment_count>104</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-07 13:34:35 -0800</bug_when>
    <thetext>Attachment 84975 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/API/JSBase.h&apos;, u&apos;Sou...&quot; exit_code: 1

Tools/WebKitTestRunner/config.h:25:  #ifndef header guard has wrong style, please use: WTF_config_h  [build/header_guard] [5]
Source/JavaScriptCore/wtf/Assertions.h:151:  The parameter name &quot;channel&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/wtf/Assertions.h:152:  The parameter name &quot;channel&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Tools/WebKitAPITest/config.h:25:  #ifndef header guard has wrong style, please use: WTF_config_h  [build/header_guard] [5]
Total errors found: 4 in 40 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363569</commentid>
    <comment_count>105</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-03-07 14:02:41 -0800</bug_when>
    <thetext>Attachment 84962 did not build on qt:
Build output: http://queues.webkit.org/results/8103610</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363602</commentid>
    <comment_count>106</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-03-07 14:45:28 -0800</bug_when>
    <thetext>Attachment 84975 did not build on win:
Build output: http://queues.webkit.org/results/8105563</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363630</commentid>
    <comment_count>107</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-03-07 15:19:06 -0800</bug_when>
    <thetext>Attachment 84975 did not build on win:
Build output: http://queues.webkit.org/results/8102661</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363668</commentid>
    <comment_count>108</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-03-07 16:12:08 -0800</bug_when>
    <thetext>Attachment 84975 did not build on qt:
Build output: http://queues.webkit.org/results/8107440</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363690</commentid>
    <comment_count>109</comment_count>
      <attachid>84999</attachid>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2011-03-07 16:52:16 -0800</bug_when>
    <thetext>Created attachment 84999
Retry - Step 1 w/ more config.h additions for projects in Tools</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363691</commentid>
    <comment_count>110</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-07 16:54:22 -0800</bug_when>
    <thetext>Attachment 84999 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/API/JSBase.h&apos;, u&apos;Sou...&quot; exit_code: 1

Tools/WebKitTestRunner/config.h:25:  #ifndef header guard has wrong style, please use: WTF_config_h  [build/header_guard] [5]
Source/JavaScriptCore/wtf/Assertions.h:151:  The parameter name &quot;channel&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/wtf/Assertions.h:152:  The parameter name &quot;channel&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Tools/WebKitAPITest/config.h:25:  #ifndef header guard has wrong style, please use: WTF_config_h  [build/header_guard] [5]
Total errors found: 4 in 53 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>364756</commentid>
    <comment_count>111</comment_count>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2011-03-09 14:00:33 -0800</bug_when>
    <thetext>So it looks like I&apos;ve finally got a patch with everything building. :) Please let me know what you think! With this step complete, we should be able to start adding the export macros to the headers and updating ports to use them one at a time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>366778</commentid>
    <comment_count>112</comment_count>
      <attachid>84999</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-03-13 18:25:27 -0700</bug_when>
    <thetext>Comment on attachment 84999
Retry - Step 1 w/ more config.h additions for projects in Tools

View in context: https://bugs.webkit.org/attachment.cgi?id=84999&amp;action=review

Concept seems fine and execution seems OK.

The naming is a little inconsistent. We have JS_EXPORTDATA but JS_EXPORT_PRIVATE, so two different styles in how to deal with multiple words.

&gt; Tools/WebKitAPITest/HostWindow.cpp:27
&gt; +#include &quot;config.h&quot;
&gt; +
&gt;  #include &quot;HostWindow.h&quot;

Normally our style is to not have a blank line between the include of config.h and the include of the file&apos;s own header. We could have a blank line if the first header is not the file’s own.

&gt;&gt; Tools/WebKitAPITest/config.h:25
&gt;&gt; +#ifndef WebKitAPITests_config_h
&gt; 
&gt; #ifndef header guard has wrong style, please use: WTF_config_h  [build/header_guard] [5]

False error from the style tool. We should file another bug asking for it to be fixed.

&gt; Tools/WebKitAPITest/config.h:31
&gt; +#if USE(EXPORT_MACROS)

Should have a blank line after this since we have a blank line before the #else and the #endif.

&gt; Tools/WebKitAPITest/config.h:41
&gt; +#else /* !USE(EXPORT_MACROS) */

I’m concerned that the boilerplate section of the config files are so long! Seems like plenty of room for error. Is there any way to avoid having so much boilerplate?

&gt;&gt; Source/JavaScriptCore/wtf/Assertions.h:151
&gt;&gt; +WTF_EXPORT_PRIVATE void WTFLog(WTFLogChannel* channel, const char* format, ...) WTF_ATTRIBUTE_PRINTF(2, 3);
&gt; 
&gt; The parameter name &quot;channel&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]

I agree with the style queue about this.

&gt;&gt; Source/JavaScriptCore/wtf/Assertions.h:152
&gt;&gt; +WTF_EXPORT_PRIVATE void WTFLogVerbose(const char* file, int line, const char* function, WTFLogChannel* channel, const char* format, ...) WTF_ATTRIBUTE_PRINTF(5, 6);
&gt; 
&gt; The parameter name &quot;channel&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]

And here too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>366805</commentid>
    <comment_count>113</comment_count>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2011-03-13 20:23:15 -0700</bug_when>
    <thetext>(In reply to comment #112)
&gt; (From update of attachment 84999 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=84999&amp;action=review
&gt; 
&gt; Concept seems fine and execution seems OK.
&gt; 
&gt; The naming is a little inconsistent. We have JS_EXPORTDATA but JS_EXPORT_PRIVATE, so two different styles in how to deal with multiple words.

This is temporary, and it will all end up being JS_EXPORT_PRIVATE in the end. I am leaving this temporarily to not break any port we haven&apos;t yet moved to using the export macros.

&gt; &gt; Tools/WebKitAPITest/HostWindow.cpp:27
&gt; &gt; +#include &quot;config.h&quot;
&gt; &gt; +
&gt; &gt;  #include &quot;HostWindow.h&quot;
&gt; 
&gt; Normally our style is to not have a blank line between the include of config.h and the include of the file&apos;s own header. We could have a blank line if the first header is not the file’s own.

Okay, will fix before landing.

&gt; &gt;&gt; Tools/WebKitAPITest/config.h:25
&gt; &gt;&gt; +#ifndef WebKitAPITests_config_h
&gt; &gt; 
&gt; &gt; #ifndef header guard has wrong style, please use: WTF_config_h  [build/header_guard] [5]
&gt; 
&gt; False error from the style tool. We should file another bug asking for it to be fixed.

Okay, I&apos;ll post a bug about this.

&gt; &gt; Tools/WebKitAPITest/config.h:31
&gt; &gt; +#if USE(EXPORT_MACROS)
&gt; 
&gt; Should have a blank line after this since we have a blank line before the #else and the #endif.

Okay, will fix before landing.

&gt; &gt; Tools/WebKitAPITest/config.h:41
&gt; &gt; +#else /* !USE(EXPORT_MACROS) */
&gt; 
&gt; I’m concerned that the boilerplate section of the config files are so long! Seems like plenty of room for error. Is there any way to avoid having so much boilerplate?

Well, first, the !USE(EXPORT_MACROS) case (and the USE check itself) will disappear once all ports have moved to using it, ideally in a few weeks or so. That being said, what I&apos;d eventually like to do is simply to have some headers like WTFDefines.h, JSDefines.h, etc. that defines the various export macros they use and are simply included by the various config.h files, or maybe even directly by the headers that need them. There is a lot of duplicate code defining the various macros in each config.h, and it&apos;d be nice to just include a header instead of re-defining them over and over.

This and removing JS_EXPORTDATA were things I started trying to handle on the first attempt to address this, but it led to having to figure out the issues with all the build systems at once, and this caused the patch to become unwieldily to maintain as the fixes piled up. So I&apos;d like to try all these things, but once we&apos;ve got the export macros working in basic form everywhere first.

&gt; &gt;&gt; Source/JavaScriptCore/wtf/Assertions.h:151
&gt; &gt;&gt; +WTF_EXPORT_PRIVATE void WTFLog(WTFLogChannel* channel, const char* format, ...) WTF_ATTRIBUTE_PRINTF(2, 3);
&gt; &gt; 
&gt; &gt; The parameter name &quot;channel&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
&gt; 
&gt; I agree with the style queue about this.
&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/wtf/Assertions.h:152
&gt; &gt;&gt; +WTF_EXPORT_PRIVATE void WTFLogVerbose(const char* file, int line, const char* function, WTFLogChannel* channel, const char* format, ...) WTF_ATTRIBUTE_PRINTF(5, 6);
&gt; &gt; 
&gt; &gt; The parameter name &quot;channel&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
&gt; 
&gt; And here too.

Okay, then I&apos;ll change them before landing. Many thanks for reviewing this! :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367794</commentid>
    <comment_count>114</comment_count>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2011-03-15 11:10:25 -0700</bug_when>
    <thetext>Step 1 landed in r81135, thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373845</commentid>
    <comment_count>115</comment_count>
      <attachid>87006</attachid>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2011-03-25 20:51:00 -0700</bug_when>
    <thetext>Created attachment 87006
Step 2, part 1: Add export symbols, and get the wx port using them.

And here it is finally, the Big Kahuna patch. :) I&apos;ve tried to export only the symbols actually used whenever possible, and when I did exported the class itself, it was due to the need to export the vtable, etc. Note however that when I export the specific symbols rather than the class itself, MSVC spits out a ton of warnings, so when we do the Windows port we&apos;ll need to either silence those warnings or be a bit more liberal about exporting classes themselves. Also, I used JS_EXPORTDATA in a few instances to keep the ports not using the new export macros building, as mentioned earlier once all ports are moved over that define will be merged with JS_EXPORT_PRIVATE. 

Oh, and I can vouch that it builds and runs on wx fine and there aren&apos;t to my knowledge any other reviewers familiar with the wx build system, so please don&apos;t hold on the review waiting for someone to verify the wx parts. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373846</commentid>
    <comment_count>116</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-25 20:52:38 -0700</bug_when>
    <thetext>Attachment 87006 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Last 3072 characters of output:
ce/JavaScriptCore/wtf/ByteArray.h:83:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Identifier.h:56:  The parameter name &quot;exec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Identifier.h:57:  The parameter name &quot;exec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Identifier.h:58:  The parameter name &quot;exec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Identifier.h:111:  The parameter name &quot;r&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/StringObject.h:29:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/wtf/FastMalloc.h:32:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/PropertyDescriptor.h:50:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/InitializeThreading.h:36:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/wtf/MainThread.h:47:  The parameter name &quot;paused&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/wtf/text/StringImpl.h:349:  The parameter name &quot;a&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/wtf/text/StringBuilder.h:57:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/JavaScriptCore/wtf/RandomNumber.h:33:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/RegExpObject.h:33:  The parameter name &quot;globalObject&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h:92:  The parameter name &quot;dumpsGeneratedCode&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSCell.h:91:  The parameter name &quot;exec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSCell.h:92:  The parameter name &quot;exec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSCell.h:93:  Use 0 or null instead of NULL (even in *comments*).  [readability/null] [4]
Source/JavaScriptCore/runtime/JSCell.h:94:  Use 0 or null instead of NULL (even in *comments*).  [readability/null] [4]
Source/JavaScriptCore/wtf/RefCountedLeakCounter.h:29:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/wtf/ThreadingPrimitives.h:142:  The parameter name &quot;mutex&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 31 in 80 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373849</commentid>
    <comment_count>117</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-03-25 21:56:25 -0700</bug_when>
    <thetext>Attachment 87006 did not build on win:
Build output: http://queues.webkit.org/results/8252400</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373859</commentid>
    <comment_count>118</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-03-25 23:05:13 -0700</bug_when>
    <thetext>Attachment 87006 did not build on win:
Build output: http://queues.webkit.org/results/8240957</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373915</commentid>
    <comment_count>119</comment_count>
      <attachid>87029</attachid>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2011-03-26 11:05:56 -0700</bug_when>
    <thetext>Created attachment 87029
Step 2, part 1, second try: Adding Win build fix and fixing style issues

I&apos;m not going to fix the namespace indentation issues in this patch, as doing so would add hundreds of lines of noise to the patch, and it&apos;s already not an easy patch to review. I can fix it before landing though.

Also, what are we going to do about the gtk and Chromium bots? Do we wait, or can I land once everything else is green and just fix any issues that crop up?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373916</commentid>
    <comment_count>120</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-26 11:07:04 -0700</bug_when>
    <thetext>Attachment 87029 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Source/JavaScriptCore/runtime/JSWrapperObject.h:31:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/StringObject.h:29:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/wtf/FastMalloc.h:32:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/InitializeThreading.h:36:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/wtf/RandomNumber.h:33:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/wtf/RefCountedLeakCounter.h:29:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 6 in 82 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373955</commentid>
    <comment_count>121</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-03-26 12:39:59 -0700</bug_when>
    <thetext>Attachment 87029 did not build on win:
Build output: http://queues.webkit.org/results/8255645</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373978</commentid>
    <comment_count>122</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-03-26 13:49:19 -0700</bug_when>
    <thetext>Attachment 87029 did not build on win:
Build output: http://queues.webkit.org/results/8255689</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374019</commentid>
    <comment_count>123</comment_count>
      <attachid>87051</attachid>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2011-03-26 18:19:08 -0700</bug_when>
    <thetext>Created attachment 87051
Step 2, part 1, third try: More Win build fixes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374020</commentid>
    <comment_count>124</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-26 18:21:45 -0700</bug_when>
    <thetext>Attachment 87051 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Source/JavaScriptCore/wtf/FastMalloc.h:32:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/InitializeThreading.h:36:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSWrapperObject.h:31:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/wtf/RandomNumber.h:33:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/StringObject.h:29:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/wtf/RefCountedLeakCounter.h:29:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 6 in 86 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374042</commentid>
    <comment_count>125</comment_count>
      <attachid>87051</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-03-26 21:42:28 -0700</bug_when>
    <thetext>Comment on attachment 87051
Step 2, part 1, third try: More Win build fixes.

The size of this patch is wrong.

The “flip the switch” patch should be just that, flipping the switch on one platform at a time, with no new macro annotations.

Earlier patches will keep adding the appropriate annotations, but doing so without flipping the switch so there is no immediate effect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374178</commentid>
    <comment_count>126</comment_count>
      <attachid>87077</attachid>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2011-03-27 10:49:52 -0700</bug_when>
    <thetext>Created attachment 87077
Step 2, part 1: this time, just add the macros, don&apos;t flip the switch for wx port</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374182</commentid>
    <comment_count>127</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-27 10:53:17 -0700</bug_when>
    <thetext>Attachment 87077 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Source/JavaScriptCore/runtime/JSWrapperObject.h:31:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/StringObject.h:29:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/wtf/FastMalloc.h:32:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/InitializeThreading.h:36:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/wtf/RandomNumber.h:33:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/wtf/RefCountedLeakCounter.h:29:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 6 in 82 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376879</commentid>
    <comment_count>128</comment_count>
      <attachid>87659</attachid>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2011-03-30 19:39:04 -0700</bug_when>
    <thetext>Created attachment 87659
Step 2, part 1: same as previous patch, just updated to deal with bit rot</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376883</commentid>
    <comment_count>129</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-30 19:44:00 -0700</bug_when>
    <thetext>Attachment 87659 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Source/JavaScriptCore/runtime/JSWrapperObject.h:31:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/StringObject.h:29:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/wtf/FastMalloc.h:32:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/InitializeThreading.h:36:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/wtf/RandomNumber.h:33:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSCell.h:93:  The parameter name &quot;exec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSCell.h:94:  The parameter name &quot;exec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/wtf/RefCountedLeakCounter.h:29:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 8 in 83 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378846</commentid>
    <comment_count>130</comment_count>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2011-04-04 10:05:31 -0700</bug_when>
    <thetext>Anything I can do to move this patch review along? I realize that everyone&apos;s busy, but I&apos;m just wondering if there are some concerns with the approach I&apos;m using, etc. that would cause people to hesitate to review this. I know it&apos;s a big patch, but it&apos;s simply the macro annotations on symbols needed to allow ports to build. Once this is landed, we can start getting the ports to use them, which I think is the fastest way to work out any kinks in the macros.

Oh, and I will fix the remaining style errors before landing. I can add them if this will speed patch review, but I was concerned the indentation issues would cause a lot of noise in the patch that would complicate review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380911</commentid>
    <comment_count>131</comment_count>
      <attachid>88532</attachid>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2011-04-06 15:31:12 -0700</bug_when>
    <thetext>Created attachment 88532
Fix defines for WTF/JS_EXPORT_PRIVATE in !USE(EXPORT_MACROS) case

Okay, I&apos;ll break this down in the hopes of speeding up the review process. This first patch just fixes some cases for !USE(EXPORT_MACROS) where WTF/JS_EXPORT_PRIVATE were erroneously defined. They should only be defined to the appropriate export / import macro when using the export macros.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380964</commentid>
    <comment_count>132</comment_count>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2011-04-06 16:39:48 -0700</bug_when>
    <thetext>(In reply to comment #131)
&gt; Created an attachment (id=88532) [details]
&gt; Fix defines for WTF/JS_EXPORT_PRIVATE in !USE(EXPORT_MACROS) case
&gt; 
&gt; Okay, I&apos;ll break this down in the hopes of speeding up the review process. This first patch just fixes some cases for !USE(EXPORT_MACROS) where WTF/JS_EXPORT_PRIVATE were erroneously defined. They should only be defined to the appropriate export / import macro when using the export macros.

First patch landed in r83121, thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380975</commentid>
    <comment_count>133</comment_count>
      <attachid>88543</attachid>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2011-04-06 17:00:09 -0700</bug_when>
    <thetext>Created attachment 88543
Add export macros to wtf/text/WTFString.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380978</commentid>
    <comment_count>134</comment_count>
      <attachid>88543</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-04-06 17:04:40 -0700</bug_when>
    <thetext>Comment on attachment 88543
Add export macros to wtf/text/WTFString.h

Wow, does it really have to be done on every function like this? I guess I shouldn’t be all that surprised, but still, I’m surprised about inline functions like isHashTableDeletedValue needing this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381000</commentid>
    <comment_count>135</comment_count>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2011-04-06 17:41:56 -0700</bug_when>
    <thetext>(In reply to comment #134)
&gt; (From update of attachment 88543 [details])
&gt; Wow, does it really have to be done on every function like this? I guess I shouldn’t be all that surprised, but still, I’m surprised about inline functions like isHashTableDeletedValue needing this.

If we don&apos;t export the whole class, yes. As for why we need it for inline methods, I haven&apos;t found a clear answer (other than that the linker complains about undefined symbols if I don&apos;t :), but my guess is that we need it on the inline functions because the WTFString class itself is private, so the compiler probably doesn&apos;t have a visible class vtable to bind the inline method to. 

IMHO, at least in terms of WTF, I think it makes a lot of sense to just declare the classes themselves as exported if there&apos;s more than a couple methods used. It is supposed to be a helper library, and I don&apos;t think there is the intent to discourage use of WTF outside of JSCore, so I would think we&apos;d eventually want there to be a public API for it, at least in principle.

In any case, I&apos;ll handle things however you guys think best. I&apos;d just like to see this resolved so I don&apos;t have to maintain my own export symbol list on wx just to get DRT going. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381001</commentid>
    <comment_count>136</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-04-06 17:43:44 -0700</bug_when>
    <thetext>(In reply to comment #135)
&gt; (In reply to comment #134)
&gt; &gt; Wow, does it really have to be done on every function like this?
&gt; 
&gt; If we don&apos;t export the whole class, yes.

Does exporting the whole class export all the private member functions too?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381015</commentid>
    <comment_count>137</comment_count>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2011-04-06 18:01:32 -0700</bug_when>
    <thetext>(In reply to comment #136)
&gt; (In reply to comment #135)
&gt; &gt; (In reply to comment #134)
&gt; &gt; &gt; Wow, does it really have to be done on every function like this?
&gt; &gt; 
&gt; &gt; If we don&apos;t export the whole class, yes.
&gt; 
&gt; Does exporting the whole class export all the private member functions too?

My understanding is that it does, as you might declare the class as a friend. gcc docs recommend using &quot;hidden&quot; visibility to hide any private stuff we don&apos;t want exposed, but I don&apos;t think there is such an option on Windows, at least, not without using a .def file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381016</commentid>
    <comment_count>138</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-04-06 18:02:31 -0700</bug_when>
    <thetext>(In reply to comment #137)
&gt; My understanding is that it does,

OK

&gt; as you might declare the class as a friend

That&apos;s backwards. It would matter only if the class declared one of yours as a friend.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381060</commentid>
    <comment_count>139</comment_count>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2011-04-06 19:05:47 -0700</bug_when>
    <thetext>(In reply to comment #138)
&gt; (In reply to comment #137)
&gt; &gt; My understanding is that it does,
&gt; 
&gt; OK
&gt; 
&gt; &gt; as you might declare the class as a friend
&gt; 
&gt; That&apos;s backwards. It would matter only if the class declared one of yours as a friend.

Yes, sorry, it was poorly worded. 

In any case, how would you like me to proceed? Keep things as-is with each individual method exported, or switch in this case to exporting the class? We&apos;re already exporting a majority of the class, and I think most things that get added will probably need macros assigned to it as well, so exporting the whole class I think would seem to be less maintenance work. However, I&apos;m fine with whatever others decide. Just let me know how you want this handled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382907</commentid>
    <comment_count>140</comment_count>
      <attachid>88953</attachid>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2011-04-10 10:46:01 -0700</bug_when>
    <thetext>Created attachment 88953
Add export macros to bytecompiler headers.

I&apos;m going to start adding the smaller / simpler changes while awaiting a decision on what to do with WTFString.h, so that hopefully we can get some of these changes out of my branch and into the tree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382909</commentid>
    <comment_count>141</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-10 10:48:28 -0700</bug_when>
    <thetext>Attachment 88953 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h:92:  The parameter name &quot;dumpsGeneratedCode&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/ChangeLog:1:  ChangeLog entry has no bug number  [changelog/bugnumber] [5]
Total errors found: 2 in 2 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382914</commentid>
    <comment_count>142</comment_count>
      <attachid>88955</attachid>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2011-04-10 11:12:52 -0700</bug_when>
    <thetext>Created attachment 88955
Add export macros to bytecompiler headers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402110</commentid>
    <comment_count>143</comment_count>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2011-05-11 11:04:38 -0700</bug_when>
    <thetext>Ping on this. Any ideas on how best to proceed? I would think the bytecompiler headers patch is about as small and simple as it gets, so if there&apos;s some issue, please let me know.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>408370</commentid>
    <comment_count>144</comment_count>
      <attachid>88543</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-05-23 15:13:55 -0700</bug_when>
    <thetext>Comment on attachment 88543
Add export macros to wtf/text/WTFString.h

Since WTF_EXPORT_PRIVATE has already been approved, the idea has been OK&apos;d.  Looking at the implementation details of thsi patch, nothing seems awry.  So OK.  rs=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>408372</commentid>
    <comment_count>145</comment_count>
      <attachid>88955</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-05-23 15:14:21 -0700</bug_when>
    <thetext>Comment on attachment 88955
Add export macros to bytecompiler headers.

r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>408374</commentid>
    <comment_count>146</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-05-23 15:14:49 -0700</bug_when>
    <thetext>Do we have a buildbot to test this?  We&apos;ll need one.  Otherwise this build will break constantly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>409459</commentid>
    <comment_count>147</comment_count>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2011-05-24 21:45:53 -0700</bug_when>
    <thetext>(In reply to comment #146)
&gt; Do we have a buildbot to test this?  We&apos;ll need one.  Otherwise this build will break constantly.

The plan is to move all the ports over, starting with wx and then with the Apple Mac port, then Apple Win, and so on. I could do it in a different order if people come in and help me move their port over, though. 

So first we need to get all these macros in the tree, then start switching ports over one-by-one. I don&apos;t think it will take much time to move the others over after we have one port working.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>409460</commentid>
    <comment_count>148</comment_count>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2011-05-24 21:46:41 -0700</bug_when>
    <thetext>WTFString.h patch landed in r87269, thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>409726</commentid>
    <comment_count>149</comment_count>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2011-05-25 10:10:45 -0700</bug_when>
    <thetext>bytecompiler_exports.patch landed in r87304, thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>409797</commentid>
    <comment_count>150</comment_count>
      <attachid>94823</attachid>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2011-05-25 11:55:28 -0700</bug_when>
    <thetext>Created attachment 94823
Add debugger export symbols.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>409803</commentid>
    <comment_count>151</comment_count>
      <attachid>94826</attachid>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2011-05-25 11:59:48 -0700</bug_when>
    <thetext>Created attachment 94826
Add heap export symbols.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>409808</commentid>
    <comment_count>152</comment_count>
      <attachid>94829</attachid>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2011-05-25 12:03:47 -0700</bug_when>
    <thetext>Created attachment 94829
Add interpreter export symbols.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>409812</commentid>
    <comment_count>153</comment_count>
      <attachid>94832</attachid>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2011-05-25 12:07:51 -0700</bug_when>
    <thetext>Created attachment 94832
Add parser export symbols.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>409844</commentid>
    <comment_count>154</comment_count>
      <attachid>94836</attachid>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2011-05-25 12:32:51 -0700</bug_when>
    <thetext>Created attachment 94836
Add profiler export symbols.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417245</commentid>
    <comment_count>155</comment_count>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2011-06-08 08:22:08 -0700</bug_when>
    <thetext>Does anyone have issue with these patches? They&apos;ve been in review for a while but I haven&apos;t seen any comments. If not, would someone be willing to at least quickly rubberstamp these (and the rest that are coming) so that we can move on to getting a port using them and getting them on a build bot? I think most would agree that this method will make life easier for ports, but we need to get it in the tree first. :)

As Eric said, the approach has been approved, and if any of these patches are wrong in some way, it will show up in the build bots. So if the build bots are green, then they should be good to go. I&apos;d really appreciate any help on moving this forward.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417443</commentid>
    <comment_count>156</comment_count>
      <attachid>94836</attachid>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2011-06-08 13:04:41 -0700</bug_when>
    <thetext>Comment on attachment 94836
Add profiler export symbols.

Clearing flags on attachment: 94836

Committed r88376: &lt;http://trac.webkit.org/changeset/88376&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417719</commentid>
    <comment_count>157</comment_count>
      <attachid>96518</attachid>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2011-06-08 17:51:40 -0700</bug_when>
    <thetext>Created attachment 96518
Update Heap patch to address bitrot</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417722</commentid>
    <comment_count>158</comment_count>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2011-06-08 17:59:15 -0700</bug_when>
    <thetext>Thanks for your help, Eric! The rest of the patches were landed in revisions 88370, 88372, and 88374. (As of 88376, I figured out how to get webkit-patch to do it for me finally. ;-) The Heap one did not apply, and updating the build affected files not in the patch, so I felt I should re-submit. Will have some more up for review shortly! Thanks again!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417730</commentid>
    <comment_count>159</comment_count>
      <attachid>96523</attachid>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2011-06-08 18:09:21 -0700</bug_when>
    <thetext>Created attachment 96523
Export macros for JSCell.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417732</commentid>
    <comment_count>160</comment_count>
      <attachid>96524</attachid>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2011-06-08 18:15:10 -0700</bug_when>
    <thetext>Created attachment 96524
Export macros for Identifier.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417735</commentid>
    <comment_count>161</comment_count>
      <attachid>96526</attachid>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2011-06-08 18:21:44 -0700</bug_when>
    <thetext>Created attachment 96526
Export macros for JSGlobalData.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432005</commentid>
    <comment_count>162</comment_count>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2011-07-04 12:19:02 -0700</bug_when>
    <thetext>Another ping on this. Would someone be willing to rubber-stamp an updated patch with all the symbols in it? It seems that breaking the symbols down into small files isn&apos;t helping speed the review up any, and really this isn&apos;t the sort of change that can be a source of feature regressions - if there&apos;s a problem, compilation will simply break, so the build bot is really doing the needed checks on this. At the current pace, reviews are taking so long that the patches no longer compile by the time the review happens, and it&apos;s probably going to take a year+ to land if we continue this way. If someone would just be willing to r+ the symbols patch, we could quickly move on to getting ports using this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432254</commentid>
    <comment_count>163</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-07-05 06:32:54 -0700</bug_when>
    <thetext>(In reply to comment #162)
&gt; Another ping on this. Would someone be willing to rubber-stamp an updated patch with all the symbols in it?

I&apos;ll rubber-stamp it if it just adds JS_EXPORTDATA macros and the EWS bots like it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434941</commentid>
    <comment_count>164</comment_count>
      <attachid>100313</attachid>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2011-07-11 09:51:45 -0700</bug_when>
    <thetext>Created attachment 100313
Complete set of JS_EXPORT_PRIVATE and WTF_EXPORT_PRIVATE macro additions

Thanks Adam for offering to Rubber Stamp this! A couple notes:

1) The export macros we&apos;re using right now are JS_EXPORT_PRIVATE and WTF_EXPORT_PRIVATE. This is so that we can define them to nothing on any port that hasn&apos;t moved over yet to ease transition and keep ports that rely on the existing macros from having breakages. Once all the ports are moved over, these macros and JS_EXPORTDATA / JS_EXPORTCLASS will be merged into one macro each for JS and WTF. 

2) There are a few style failures remaining. I can fix these in a subsequent patch, but I didn&apos;t change them now because most of them are namespace indentation issues which would cause the patch to show every line in the file as changed, and hence you wouldn&apos;t be able to confirm they are all macro additions any longer. The one other remaining style issue is saying I should switch RefPtr to PassRefPtr, but I wasn&apos;t sure if that might affect runtime behavior and I felt that would take the patch outside of the scope in which people would be willing to rubber stamp it. 

Thanks again, and sorry this took time, I&apos;ve been pretty busy recently.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434944</commentid>
    <comment_count>165</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-11 09:53:35 -0700</bug_when>
    <thetext>Attachment 100313 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/heap/HandleHeap.h&apos;, ...&quot; exit_code: 1

Source/JavaScriptCore/runtime/JSWrapperObject.h:31:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/wtf/NullPtr.h:45:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/StringObject.h:29:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/wtf/FastMalloc.h:32:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/InitializeThreading.h:36:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/wtf/RandomNumber.h:33:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/UString.h:50:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/JavaScriptCore/wtf/RefCountedLeakCounter.h:29:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 8 in 65 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434956</commentid>
    <comment_count>166</comment_count>
      <attachid>100313</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-11 10:09:15 -0700</bug_when>
    <thetext>Comment on attachment 100313
Complete set of JS_EXPORT_PRIVATE and WTF_EXPORT_PRIVATE macro additions

Attachment 100313 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9010524</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434966</commentid>
    <comment_count>167</comment_count>
      <attachid>100313</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-07-11 10:18:00 -0700</bug_when>
    <thetext>Comment on attachment 100313
Complete set of JS_EXPORT_PRIVATE and WTF_EXPORT_PRIVATE macro additions

Attachment 100313 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/9011537</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434975</commentid>
    <comment_count>168</comment_count>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2011-07-11 10:25:53 -0700</bug_when>
    <thetext>Okay, the chromium issue is something simple that I&apos;ve already fixed in my tree (I thought I had fixed it already, actually), but the Qt failure looks new. My guess is that the generated files for WebKitTestRunner are not including any config.h, and hence the JS_EXPORT_PRIVATE and WTF_EXPORT_PRIVATE macros are completely undefined. Can someone on the Qt side offer any suggestions as to the best way to get those files including some form of config.h?

Thanks,

Kevin</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435038</commentid>
    <comment_count>169</comment_count>
      <attachid>100313</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-11 11:26:27 -0700</bug_when>
    <thetext>Comment on attachment 100313
Complete set of JS_EXPORT_PRIVATE and WTF_EXPORT_PRIVATE macro additions

Attachment 100313 did not pass cr-mac-ews (chromium):
Output: http://queues.webkit.org/results/9007732</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435055</commentid>
    <comment_count>170</comment_count>
      <attachid>100313</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-11 11:43:36 -0700</bug_when>
    <thetext>Comment on attachment 100313
Complete set of JS_EXPORT_PRIVATE and WTF_EXPORT_PRIVATE macro additions

Attachment 100313 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/9014267</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435140</commentid>
    <comment_count>171</comment_count>
      <attachid>100313</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-11 12:44:19 -0700</bug_when>
    <thetext>Comment on attachment 100313
Complete set of JS_EXPORT_PRIVATE and WTF_EXPORT_PRIVATE macro additions

Attachment 100313 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/9006954</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435476</commentid>
    <comment_count>172</comment_count>
      <attachid>100437</attachid>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2011-07-11 21:49:42 -0700</bug_when>
    <thetext>Created attachment 100437
Fix macro defines for WebKitTestRunner by including config.h

This should fix all the build breakages caused by WTF_EXPORT_PRIVATE and JS_EXPORT_PRIVATE not being defined in WebKitTestRunner generated files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435478</commentid>
    <comment_count>173</comment_count>
      <attachid>100437</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-07-11 21:58:19 -0700</bug_when>
    <thetext>Comment on attachment 100437
Fix macro defines for WebKitTestRunner by including config.h

Attachment 100437 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/9021054</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435698</commentid>
    <comment_count>174</comment_count>
      <attachid>100500</attachid>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2011-07-12 09:35:59 -0700</bug_when>
    <thetext>Created attachment 100500
New fix for WebKitTestRunner generated files that makes sure config.h is always the first header included.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439345</commentid>
    <comment_count>175</comment_count>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2011-07-19 12:15:59 -0700</bug_when>
    <thetext>Ping on latest patch... problems, questions?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449481</commentid>
    <comment_count>176</comment_count>
      <attachid>103555</attachid>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2011-08-10 16:39:42 -0700</bug_when>
    <thetext>Created attachment 103555
Updated complete symbols and config.h fix patch.

Patch against latest trunk containing all symbols and WebKitTestRunner config.h fix. Anyone willing to RS this if it passes the EWS bots? (the style bot will fail with indentation errors but I can fix those before landing.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449485</commentid>
    <comment_count>177</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-10 16:42:02 -0700</bug_when>
    <thetext>Attachment 103555 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Source/JavaScriptCore/runtime/JSWrapperObject.h:31:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/wtf/NullPtr.h:47:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/StringObject.h:29:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/wtf/FastMalloc.h:32:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/InitializeThreading.h:36:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/wtf/RandomNumber.h:33:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/UString.h:50:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/JavaScriptCore/wtf/RefCountedLeakCounter.h:29:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 8 in 66 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461844</commentid>
    <comment_count>178</comment_count>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2011-09-03 13:25:14 -0700</bug_when>
    <thetext>Is there really no one interested in reviewing or rubber-stamping this, or if there&apos;s a problem, telling me what is wrong with it? If not, I really feel we should just close this ticket out so that no one continues to put time into something which ultimately will never happen. Which is quite disappointing given the amount of personal time I&apos;ve put into this. 

I understand everyone is busy, but I would really, really appreciate it if someone would put a little bit of time into reviewing or even just giving me a rs+ to land a patch which does not break the build and which contains only build-time changes, no runtime or behavior changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461851</commentid>
    <comment_count>179</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-09-03 14:19:47 -0700</bug_when>
    <thetext>&gt; Is there really no one interested in reviewing or rubber-stamping this, or if there&apos;s a problem, telling me what is wrong with it?

So, I spent some time trying to understand what&apos;s going on in this bug.  I suspect the main issue is that you&apos;ve now got a bug with 170-odd comments and a zillion patches attached.  The patch you&apos;re asking to have reviewed is gigantic.

If I were you, I&apos;d close this bug, open a new beta bug (link to this bug) and then start uploading smaller patches in bugs that block the meta bug.

If you&apos;ve got a reviewer who is interested in seeing this happen, it&apos;s much easier to review dozens of small patches that add this macro to an individual file rather than one enormous patch that adds it in a zillion places.

Essentially, this is the strategy that Darin recommend in Comment #57, which I think is good advice.  The way you&apos;re approaching things here, it makes it very difficult for folks to help you achieve your goals.

In any case, I&apos;m probably not the right person to help out with this project because I&apos;m not really the right person to be reviewing build configurations changes to JavaScriptCore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461862</commentid>
    <comment_count>180</comment_count>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2011-09-03 15:39:49 -0700</bug_when>
    <thetext>(In reply to comment #179)
&gt; &gt; Is there really no one interested in reviewing or rubber-stamping this, or if there&apos;s a problem, telling me what is wrong with it?
&gt; 
&gt; So, I spent some time trying to understand what&apos;s going on in this bug.  I suspect the main issue is that you&apos;ve now got a bug with 170-odd comments and a zillion patches attached.  The patch you&apos;re asking to have reviewed is gigantic.

Yes, but if you actually scroll through it, it is all macro additions, and those are all macros which are defined to nothing in all ports. It&apos;s a no-change patch. That comment alone explains pretty much the entire patch.

&gt; If I were you, I&apos;d close this bug, open a new beta bug (link to this bug) and then start uploading smaller patches in bugs that block the meta bug.

I&apos;m willing to do this, or listen to other suggestions as well, but to be honest I want someone to step up to the review plate before I start making changes. I&apos;ve changed my approach several times already to address comments from devs about what might help get these reviewed, implementing just about every suggestion offered, and so far the reviews have still been few and far between. I actually feel that all the changes I&apos;ve made to make this patch more &apos;reviewable&apos; have mostly just confused people and muddied this process.

&gt; If you&apos;ve got a reviewer who is interested in seeing this happen, it&apos;s much easier to review dozens of small patches that add this macro to an individual file rather than one enormous patch that adds it in a zillion places.
&gt;
&gt; Essentially, this is the strategy that Darin recommend in Comment #57, which I think is good advice.  The way you&apos;re approaching things here, it makes it very difficult for folks to help you achieve your goals.

Actually, I tried this, and the results were that reviews were (still) few and far between. See #162 and #163 for some context, and #163 particularly should even provide some insight on why I ended up uploading a mega-patch. Someone promised a rubber-stamp on it if it was just macro additions and didn&apos;t break the builds... ;-)
 
&gt; In any case, I&apos;m probably not the right person to help out with this project because I&apos;m not really the right person to be reviewing build configurations changes to JavaScriptCore.

There are no build configuration changes in this patch, though. It is simply adding a bunch of macros, which are defined on all ports as an empty string. I did this because it is what Darin suggested over a year ago, so we can do a &apos;flip the switch&apos; patch on each port to actually change behavior after all this. This is why it does not break the build. Once this patch is landed, I can file new, much more specific bugs, like &quot;Switch Mac port to getting exported symbols from headers&quot;. 

The honest reality of the situation is that 90% of the reviews I&apos;ve gotten so far on this bug from the start have been RS, including almost every single patch to add macros to the tree. The only significant one that wasn&apos;t, IIRC, was the one that r+ed the approach itself, the important one. So rather than spend much of the next year having dozens of patches RSed at a speed of a few a month or so, why not just have one big RS to add all the symbol macros, get the whole thing over with, and you can blame me if everything breaks horribly? Except that it won&apos;t, I can guarantee it. The EWS bots guarantee it. Then we can move on to new bugs, new patches, and EVERYTHING submitted will be considerably smaller than this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461865</commentid>
    <comment_count>181</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-09-03 16:07:21 -0700</bug_when>
    <thetext>Kevin, I understand that you&apos;re frustrated at how long this process has taken.  The reason folks haven&apos;t been engaging with you in this discussion is because you&apos;ve posted a 90k patch on a bug with 180 comments.  It took me an hour to get up to speed enough to even understand what was going on here.  If you want folks to help you out, you&apos;ll probably have better luck if you make it easy for them to do what you want.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461869</commentid>
    <comment_count>182</comment_count>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2011-09-03 16:56:37 -0700</bug_when>
    <thetext>(In reply to comment #181)
&gt; Kevin, I understand that you&apos;re frustrated at how long this process has taken.  The reason folks haven&apos;t been engaging with you in this discussion is because you&apos;ve posted a 90k patch on a bug with 180 comments.  
&gt;
&gt; It took me an hour to get up to speed enough to even understand what was going on here.  If you want folks to help you out, you&apos;ll probably have better luck if you make it easy for them to do what you want.

So if I do what you suggest, can I count on you to help me by doing timely reviews of the dozens of small patches I post in the new bug?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461870</commentid>
    <comment_count>183</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-09-03 17:41:59 -0700</bug_when>
    <thetext>&gt; So if I do what you suggest, can I count on you to help me by doing timely reviews of the dozens of small patches I post in the new bug?

I&apos;d feel confident reviewing patches in this area if:

1) I was sure that the stakeholders agree that this is a good direction for this code.
2) The patches are manageable in size (e.g., some small number of files per patch).
3) I have some way of knowing that you&apos;re adding the macro to the correct functions (e.g., a pointer to the same functions listed in the existing exp file).

From reading this thread, it sounds like you&apos;ve more or less got (1) under control.  I&apos;d probably want one of the main stakeholders here to review the first patch to confirm that they&apos;re still on board.  If you&apos;re up for (2) and (3), then it will be easy for me to see that your patches are correct and I&apos;ll be able to review them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461871</commentid>
    <comment_count>184</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-09-03 17:43:37 -0700</bug_when>
    <thetext>&gt; the dozens of small patches I post in the new bug?

One minor additional point.  Please don&apos;t post dozens of patches in a single bug.  It&apos;s much easier to keep track of things if you stick to one patch per bug and have the individual bugs block a meta bug.  That keeps any individual bug from &quot;going epic&quot; as this bug has.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461888</commentid>
    <comment_count>185</comment_count>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2011-09-03 19:55:16 -0700</bug_when>
    <thetext>(In reply to comment #183)
&gt; &gt; So if I do what you suggest, can I count on you to help me by doing timely reviews of the dozens of small patches I post in the new bug?
&gt; 
&gt; I&apos;d feel confident reviewing patches in this area if:
&gt; 
&gt; 1) I was sure that the stakeholders agree that this is a good direction for this code.
&gt; 2) The patches are manageable in size (e.g., some small number of files per patch).
&gt; 3) I have some way of knowing that you&apos;re adding the macro to the correct functions (e.g., a pointer to the same functions listed in the existing exp file).
&gt; 
&gt; From reading this thread, it sounds like you&apos;ve more or less got (1) under control.  I&apos;d probably want one of the main stakeholders here to review the first patch to confirm that they&apos;re still on board.  If you&apos;re up for (2) and (3), then it will be easy for me to see that your patches are correct and I&apos;ll be able to review them.

Number 2 is doable, but number 3 is going to balloon the amount of time it takes producing patches as I will probably need to do that by hand. And actually, I&apos;m quite certain #3 is the primary sticking point behind the review problems on this bug.

Plus, we&apos;ll largely be duplicating work the compiler and linker does for us anyway. When we do move the ports over to using the symbol macros, the link will fail if the symbol lists are missing a needed symbol - and this will be caught by the EWS bots. If we&apos;ve missed something, it will be found.

I thought #3 may really be the sticking point for everyone, and that was my reason for suggesting closing this out. There&apos;s a point at which this becomes so time-consuming as to no longer justify the effort. I simply don&apos;t think there&apos;s any real practical need for that level of review on a patch the compiler can vet for us.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461892</commentid>
    <comment_count>186</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-09-03 20:43:30 -0700</bug_when>
    <thetext>The reason (3) is important is that it is what tells me whether the patch is correct.  Otherwise, I&apos;m left to wonder, for example, why these lines are correct:

-static void writeBarrier(const JSCell*, JSValue);
+JS_EXPORT_PRIVATE static void writeBarrier(const JSCell*, JSValue);
 static void writeBarrier(const JSCell*, JSCell*);

It&apos;s not clear to me why writeBarrier should be exported for JSValue but not for JSCell.  I&apos;m sure there&apos;s a reason.  It just require more expertise than I have in this code.

The easier you make it for reviewers to see that your patches are &quot;obviously correct&quot; the easier it is for folks to review them.  The more they require thought and knowledge, the less folks will be able to help you.

In any case, you shouldn&apos;t feel any obligation to continue with this patch if you&apos;re not interested in it anymore.  If someone else wants this to happen, they can certainly pick up where you&apos;ve left off.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461899</commentid>
    <comment_count>187</comment_count>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2011-09-03 21:38:10 -0700</bug_when>
    <thetext>(In reply to comment #186)
&gt; The reason (3) is important is that it is what tells me whether the patch is correct.  Otherwise, I&apos;m left to wonder, for example, why these lines are correct:
&gt; 
&gt; -static void writeBarrier(const JSCell*, JSValue);
&gt; +JS_EXPORT_PRIVATE static void writeBarrier(const JSCell*, JSValue);
&gt;  static void writeBarrier(const JSCell*, JSCell*);
&gt; 
&gt; It&apos;s not clear to me why writeBarrier should be exported for JSValue but not for JSCell.  I&apos;m sure there&apos;s a reason.  It just require more expertise than I have in this code.

Although they are the same function, the function prototype with the JS_EXPORT_PRIVATE macro is being called from outside of JSCore, that is, by WebCore (or possibly DRT, etc.) code. The other variant happens not to be, so we leave it as JSCore internal. This is the strategy taken by the entire patch, at the request of Darin and others, because it matches the current approach taken with the exp file lists. 

&gt; The easier you make it for reviewers to see that your patches are &quot;obviously correct&quot; the easier it is for folks to review them.  The more they require thought and knowledge, the less folks will be able to help you.

I don&apos;t mind answering questions like the one above. I&apos;m glad someone is asking them, in fact. :) Since the way we export symbols is a project-level policy AFAIU, I just assumed most devs were on board as to how the exports are determined.

However, in terms of seeing it&apos;s obviously correct, the only real way to confirm that with 100% certainty is through linking. Of course, if it&apos;s wrong, it won&apos;t link, so that part of the review is sort of tackled for you. :)

&gt; In any case, you shouldn&apos;t feel any obligation to continue with this patch if you&apos;re not interested in it anymore.  If someone else wants this to happen, they can certainly pick up where you&apos;ve left off.

I&apos;m certainly interested in it, very much so. In fact, for me, this is actually a very big deal because the wx port needs the proper export symbol defines to run DRT, so for a while now DRT has been DOA, which I don&apos;t need to tell you is not good news.

I have two options to resolve this: 

1) start maintaining wx-port JSCore symbol lists for gcc and MSVC by hand like the other ports do currently (and further add to the maintenance burden of managing export symbols), or 

2) get this bug tackled so that whenever a symbol export is added, the person adding it can make one change and update all ports automatically. 

While #1 was the path of least resistance, I felt #2 was the right way to solve the problem, even if there was more initial up-front investment in the work.

So I really, really, want to see this happen, the sooner the better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498678</commentid>
    <comment_count>188</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-11-08 23:22:45 -0800</bug_when>
    <thetext>Hi folks,

I asked Kevin for joining this effort.

To make this happen, I&apos;d like to take an incremental approach.
Here is a plan:

 * Add a macro for Mac port, replacing single export entry with the macro for trial.

 * Replace remaining exported symbols with this macro. 
   For safety, This step will be done by multiple patches.
   I don&apos;t think we should remove exp file at this timing. 
   It better be done by some Apple folks because the change can affect the build system.

 * Add macro definitions for each ports and remove related export list entries, one-by-one.

   * Windows, Cairo-Windows and GTK (and some else?)

   * For each list goes empty, file a bug and ask the port maintainers to remove the export/filter/def files.

What do you think? 
I&apos;m going to use this bug for tracking and prepare the first step in a sub-bug of Bug 67852
since this thread is too long to conduct a review.

Regards,</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498696</commentid>
    <comment_count>189</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-11-09 00:22:40 -0800</bug_when>
    <thetext>(In reply to comment #188)

&gt;  * Add a macro for Mac port, replacing single export entry with the macro for trial.
And this step is already done.
What we need is a way to splitting changes on JSC into reviewable small pieces.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684701</commentid>
    <comment_count>190</comment_count>
      <attachid>103555</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-08-01 15:59:54 -0700</bug_when>
    <thetext>Comment on attachment 103555
Updated complete symbols and config.h fix patch.

This patch has been up for review for almost a year.  it appears you&apos;re missing necessary buy-in from a reviewer.  I don&apos;t think this serves much purpose being marked r? still.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684815</commentid>
    <comment_count>191</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-08-01 17:39:51 -0700</bug_when>
    <thetext>(In reply to comment #190)
&gt; (From update of attachment 103555 [details])
&gt; This patch has been up for review for almost a year.  it appears you&apos;re missing necessary buy-in from a reviewer.  I don&apos;t think this serves much purpose being marked r? still.
Actually this one is done in one of the sub-bugs. Sorry for leaving this r?.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725977</commentid>
    <comment_count>192</comment_count>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2012-09-21 16:51:37 -0700</bug_when>
    <thetext>This should be closed now that bug 67852 is finished and incorporates the work in this bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33277</attachid>
            <date>2009-07-22 11:40:51 -0700</date>
            <delta_ts>2009-07-28 07:10:40 -0700</delta_ts>
            <desc>Patch to make it possible to build JavaScriptCore as shared library on Linux without symbol files.</desc>
            <filename>exports-patch.txt</filename>
            <type>text/plain</type>
            <size>83519</size>
            <attacher name="Simon Hausmann">hausmann</attacher>
            
              <data encoding="base64">RnJvbSBjZWM2YmNkNDBjM2IzOTIxYmY1NDIxMjcxNTcxOWUwODMwYjk3NzdlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBTaW1vbiBIYXVzbWFubiA8c2ltb24uaGF1c21hbm5Abm9raWEu
Y29tPgpEYXRlOiBXZWQsIDIyIEp1bCAyMDA5IDIwOjI3OjI2ICswMjAwClN1YmplY3Q6IFtQQVRD
SF0gLjoKCjIwMDktMDctMjIgIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8a2VubmV0aC5j
aHJpc3RpYW5zZW5Ab3BlbmJvc3NhLm9yZz4KCiAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCgogICAgICAgIEJ1aWxkIEphdmFTY3JpcHRDb3JlIGFzIHNoYXJlZCBsaWJyYXJ5LgoK
ICAgICAgICAqIFdlYktpdC5wcm86IFJlY3Vyc2UgaW50byBKYXZhU2NyaXB0Q29yZSB0byBidWls
ZCBpdCBhcyBzaGFyZWQKICAgICAgICBsaWJyYXJ5LgoKSmF2YVNjcmlwdENvcmU6CgoyMDA5LTA3
LTIyICBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5ldGguY2hyaXN0aWFuc2VuQG9w
ZW5ib3NzYS5vcmc+LCBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4K
CiAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgogICAgICAgIE1ha2UgaXQgcG9z
c2libGUgdG8gYnVpbGQgSmF2YVNjcmlwdENvcmUgYXMgc2hhcmVkIGxpYnJhcnkgd2l0aG91dAog
ICAgICAgIGV4cG9ydGVkIHN5bWJvbCBsaXN0cy4KCiAgICAgICAgQWRkZWQgSlNfRVhQT1JUREFU
QSB0byBhbGwgdGhlIGNsYXNzZXMgdGhhdCBhcmUgYWNjZXNzZWQgZnJvbSBXZWJDb3JlLAogICAg
ICAgIHRvIGVuc3VyZSB0aGVpciB2aXNpYmlsaXR5LgoKICAgICAgICBDaGFuZ2VkIEphdmFTY3Jp
cHRDb3JlLnBybyB0byBidWlsZCBKU0MgYXMgc2hhcmVkIGxpYnJhcnkuCgogICAgICAgICogQVBJ
L09wYXF1ZUpTU3RyaW5nLmg6IFVzZSBKU19FWFBPUlREQVRBLgogICAgICAgICogSmF2YVNjcmlw
dENvcmUucHJvOiBCdWlsZCBKU0MgYXMgc2hhcmVkIGxpYnJhcnkuCiAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qOiBEaXNh
YmxlCiAgICAgICAgTVNWQyB3YXJuaW5nIGFib3V0IGluY29uc2lzdGVudCBsaW5rYWdlLgogICAg
ICAgICogSmF2YVNjcmlwdENvcmUudmNwcm9qL2pzYy9qc2MudmNwcm9qOiBEaXR0by4KICAgICAg
ICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEluY2x1ZGUgUHJv
ZmlsZUdlbmVyYXRvci5oCiAgICAgICAgaW4gdGhlIHByaXZhdGUgaGVhZGVycywgYXMgaXQgaXMg
aW5jbHVkZWQgZnJvbSBQcm9maWxlci5oLCB3aGljaCBpcwogICAgICAgIGFsc28gaW5jbHVkZWQg
ZnJvbSBXZWJDb3JlLgogICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6
IFVzZSBKU19FWFBPUlREQVRBLgogICAgICAgICogY29uZmlnLmg6IERlZmluZSBKU19FWFBPUlRE
QVRBIGFjY29yZGluZ2x5IHdpdGggZ2NjOyBEZWZpbmUgaXQgdG8KICAgICAgICBkbGxpbXBvcnQg
d2l0aCBNU1ZDLgogICAgICAgICogZGVidWdnZXIvRGVidWdnZXIuaDogVXNlIEpTX0VYUE9SVERB
VEEuCiAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5oOiBEaXR0by4KICAgICAg
ICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmg6IERpdHRvLgogICAgICAgICoganNjLnBybzog
TGluayBhZ2FpbnN0IEpTQyBhcyBzaGFyZWQgbGlicmFyeS4KICAgICAgICAqIHBhcnNlci9Ob2Rl
cy5oOiBVc2UgSlNfRVhQT1JUREFUQS4KICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDogRGl0dG8u
CiAgICAgICAgKiBwYXJzZXIvUGFyc2VyQXJlbmEuaDogRGl0dG8uCiAgICAgICAgKiBwY3JlL3Bj
cmUuaDogRGl0dG8uCiAgICAgICAgKiBwcm9maWxlci9Qcm9maWxlLmg6IFVzZSBKU19FWFBPUlRE
QVRBLgogICAgICAgICogcHJvZmlsZXIvUHJvZmlsZXIuaDogVXNlIEpTX0VYUE9SVERBVEEgYW5k
IHJlcGxhY2UgUHJvZmlsZUdlbmVyYXRvcgogICAgICAgIGZvcndhcmQgZGVjbGFyYXRpb24gd2l0
aCBpbmNsdXNpb24gdG8gZml4IE1TVkMgY29tcGlsYXRpb24sIHdoaWNoIHJlcXVpcmVzCiAgICAg
ICAgaXRzIHZpc2libGl0eSB3aGVuIG1hcmtpbmcgUHJvZmlsZXIgd2l0aCBkbGxleHBvcnQuCiAg
ICAgICAgKiBydW50aW1lL0FyZ0xpc3QuaDogVXNlIEpTX0VYUE9SVERBVEEuCiAgICAgICAgKiBy
dW50aW1lL0Jvb2xlYW5PYmplY3QuaDogRGl0dG8uCiAgICAgICAgKiBydW50aW1lL0NhbGxEYXRh
Lmg6IERpdHRvLgogICAgICAgICogcnVudGltZS9Db2xsZWN0b3IuaDogRGl0dG8uCiAgICAgICAg
KiBydW50aW1lL0NvbXBsZXRpb24uaDogRGl0dG8uCiAgICAgICAgKiBydW50aW1lL0NvbnN0cnVj
dERhdGEuaDogRGl0dG8uCiAgICAgICAgKiBydW50aW1lL0RhdGVJbnN0YW5jZS5oOiBEaXR0by4K
ICAgICAgICAqIHJ1bnRpbWUvRXJyb3IuaDogRGl0dG8uCiAgICAgICAgKiBydW50aW1lL0Z1bmN0
aW9uQ29uc3RydWN0b3IuaDogRGl0dG8uCiAgICAgICAgKiBydW50aW1lL0lkZW50aWZpZXIuaDog
RGl0dG8uCiAgICAgICAgKiBydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuaDogRGl0dG8uCiAg
ICAgICAgKiBydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaDogTW92ZWQgSlNfRVhQT1JUREFUQSBm
cm9tIEludGVybmFsRnVuY3Rpb246OmluZm8gdG8KICAgICAgICBJbnRlcm5hbEZ1bmN0aW9uLCB0
byBleHBvcnQgdGhlIGVudGlyZSBjbGFzcy4KICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5oOiBV
c2UgSlNfRVhQT1JUREFUQS4KICAgICAgICAqIHJ1bnRpbWUvSlNCeXRlQXJyYXkuaDogRGl0dG8u
CiAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5oOiBEaXR0by4KICAgICAgICAqIHJ1bnRpbWUvSlNH
bG9iYWxEYXRhLmg6IERpdHRvLgogICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOiBE
aXR0by4KICAgICAgICAqIHJ1bnRpbWUvSlNJbW1lZGlhdGUuaDogRGl0dG8uCiAgICAgICAgKiBy
dW50aW1lL0pTTG9jay5oOiBEaXR0by4KICAgICAgICAqIHJ1bnRpbWUvSlNOdW1iZXJDZWxsLmg6
IERpdHRvLgogICAgICAgICogcnVudGltZS9KU09iamVjdC5oOiBEaXR0by4KICAgICAgICAqIHJ1
bnRpbWUvSlNTdHJpbmcuaDogRGl0dG8uCiAgICAgICAgKiBydW50aW1lL0pTVmFyaWFibGVPYmpl
Y3QuaDogRGl0dG8uCiAgICAgICAgKiBydW50aW1lL0pTV3JhcHBlck9iamVjdC5oOiBEaXR0by4K
ICAgICAgICAqIHJ1bnRpbWUvTG9va3VwLmg6IERpdHRvLgogICAgICAgICogcnVudGltZS9OdW1i
ZXJPYmplY3QuaDogRGl0dG8uCiAgICAgICAgKiBydW50aW1lL09iamVjdFByb3RvdHlwZS5oOiBE
aXR0by4KICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuaDogRGl0dG8uCiAgICAg
ICAgKiBydW50aW1lL1Byb3RvdHlwZUZ1bmN0aW9uLmg6IERpdHRvLgogICAgICAgICogcnVudGlt
ZS9SZWdFeHAuaDogRGl0dG8uCiAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9iamVjdC5oOiBEaXR0
by4KICAgICAgICAqIHJ1bnRpbWUvU21hbGxTdHJpbmdzLmg6IERpdHRvLgogICAgICAgICogcnVu
dGltZS9TdHJpbmdPYmplY3QuaDogTW92ZWQgSlNfRVhQT1JUREFUQSBmcm9tIFN0cmluZ09iamVj
dDo6aW5mbyB0byBTdHJpbmdPYmplY3QsIHRvCiAgICAgICAgZXhwb3J0IHRoZSBlbnRpcmUgY2xh
c3MuCiAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5oOiBVc2UgSlNfRVhQT1JUREFUQS4KICAg
ICAgICAqIHJ1bnRpbWUvVGltZW91dENoZWNrZXIuaDogRGl0dG8uCiAgICAgICAgKiBydW50aW1l
L1VTdHJpbmcuaDogUmVwbGFjZWQgc2luZ2xlIGV4cG9ydCBvZiBVU3RyaW5nOjpSZXA6OntudWxs
LGVtcHR5fUJhc2VTdHJpbmcgd2l0aAogICAgICAgIGV4cG9ydCBvZiBlbnRpcmUgY2xhc3MuCiAg
ICAgICAgKiB3dGYvQnl0ZUFycmF5Lmg6IFVzZSBKU19FWFBPUlREQVRBLgogICAgICAgICogd3Rm
L0N1cnJlbnRUaW1lLmg6IERpdHRvLgogICAgICAgICogd3RmL0Zhc3RNYWxsb2MuaDogRGl0dG8u
CiAgICAgICAgKiB3dGYvTWFpblRocmVhZC5oOiBEaXR0by4KICAgICAgICAqIHd0Zi9SYW5kb21O
dW1iZXIuaDogRGl0dG8uCiAgICAgICAgKiB3dGYvVGhyZWFkaW5nLmg6IERpdHRvLgogICAgICAg
ICogd3RmL2R0b2EuaDogRGl0dG8uCiAgICAgICAgKiB3dGYvdW5pY29kZS9VVEY4Lmg6IERpdHRv
LgogICAgICAgICogd3RmL3VuaWNvZGUvVVRGOC5jcHA6IEluY2x1ZGUgY29uZmlnLmggaW4gb3Jk
ZXIgdG8gY29tcGlsZSB3aXRoIE1TVkMuCgpXZWJDb3JlOgoKMjAwOS0wNy0yMiAgS2VubmV0aCBS
b2hkZSBDaHJpc3RpYW5zZW4gIDxrZW5uZXRoLmNocmlzdGlhbnNlbkBvcGVuYm9zc2Eub3JnPiwg
U2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CgogICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICBGb3IgdGhlIFF0IGJ1aWxkLCBsaW5rIEph
dmFTY3JpcHRDb3JlIGFzIHNoYXJlZCBsaWJyYXJ5LgoKICAgICAgICBEaXNhYmxlIGJvZ3VzIERM
TCBsaW5rYWdlIHdhcm5pbmdzIHdpdGggTVNWQy4KCiAgICAgICAgRGVmaW5lIEpTX0VYUE9SVERB
VEEgYW5kIFdFQktJVF9FWFBPUlREQVRBIGZvciBnY2MsIGFuZCBhdm9pZCBkZWZpbmluZwogICAg
ICAgIEpTX0VYUE9SVERBVEEgdG8gZGxsZXhwb3J0IHdpdGggTVNWQyB3aGVuIGJ1aWxkaW5nIHRo
ZSBRVE1vdmllIHRhcmdldCwKICAgICAgICBiZWNhdXNlIGl0IGxpbmtzIHN0YXRpY2FsbHkgYWdh
aW5zdCBXVEYuIEl0IGlzIG5vdCBwb3NzaWJsZSB0byB1c2UKICAgICAgICBkbGxleHBvcnQgdG9n
ZXRoZXIgd2l0aCBzeW1ib2xzIGZyb20gYSBzdGF0aWMgbGlicmFyeS4KCiAgICAgICAgKiBXZWJD
b3JlLnBybzogTGluayBKU0MgYXMgc2hhcmVkIGxpYnJhcnkuCiAgICAgICAgKiBXZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvajogRGlzYWJsZSBib2d1cyBETEwgbGlua2FnZSB3YXJuaW5nLgog
ICAgICAgICogY29uZmlnLmg6IFR3ZWFrIGZvciBnY2MgYW5kIE1TVkMuCgpXZWJLaXQvY2Y6Cgoy
MDA5LTA3LTIyICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KCiAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgogICAgICAgIEZpeCBjb21waWxhdGlv
biBvbiB0aGUgTWFjLCBkb24ndCByZS1kZWZpbmUgSlNfRVhQT1JUREFUQSBlbXB0eSBidXQKICAg
ICAgICByZS11c2UgdGhlIGRlZmluaXRpb24gZnJvbSBXZWJLaXRQcmVmaXguaC4KCiAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHA6CgpXZWJLaXQvbWFjOgoK
MjAwOS0wNy0yMiAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+Cgog
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICBEdXBsaWNhdGUgdGhl
IEpTX0VYUE9SVERBVEEgYW5kIFdFQktJVF9FWFBPUlREQVRBIGRlZmluaXRpb24gZnJvbQogICAg
ICAgIFdlYkNvcmUvY29uZmlnLmggdG8gZml4IGNvbXBpbGF0aW9uIGFnYWluc3QgSmF2YVNjcmlw
dENvcmUgYW5kCiAgICAgICAgV2ViQ29yZSBvbiB0aGUgTWFjLgoKICAgICAgICAqIFdlYktpdFBy
ZWZpeC5oOgoKV2ViS2l0L3dpbjoKCjIwMDktMDctMjIgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24u
aGF1c21hbm5Abm9raWEuY29tPgoKICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
CiAgICAgICAgRml4IGNvbXBpbGF0aW9uLCBkaXNhYmxlIGJvZ3VzIERMTCBsaW5rYWdlIHdhcm5p
bmdzIGFuZAogICAgICAgIGRlZmluZSBKU19FWFBPUlREQVRBIGxpa2UgaW4gSmF2YVNjcmlwdENv
cmUvY29uZmlnLmgsIHRvCiAgICAgICAgZml4IHN5bWJvbCBpbXBvcnQgZm9ybSBKYXZhU2NyaXB0
Q29yZS4KCiAgICAgICAgKiBXZWJLaXQudmNwcm9qL1dlYktpdC52Y3Byb2o6IFR3ZWFrLgogICAg
ICAgICogV2ViS2l0RExMLmg6IERlZmluZSBKU19FWFBPUlREQVRBLgoKV2ViS2l0VG9vbHM6Cgoy
MDA5LTA3LTIyICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KCiAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgogICAgICAgIEZpeCBjb21waWxhdGlv
biBieSBpbmNsdWRpbmcgY29uZmlnLmgsIHRvIGltcG9ydCB0aGUKICAgICAgICBjb3JyZWN0IGRl
ZmluaXRpb24gb2YgSlNfRVhQT1JUREFUQS4KCiAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMv
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJNYWMubW06CiAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9t
YWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbToKICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L21hYy9EdW1wUmVuZGVyVHJlZS5tbToKICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9EdW1w
UmVuZGVyVHJlZVdpbmRvdy5tbToKICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9FZGl0aW5n
RGVsZWdhdGUubW06CiAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRnJhbWVMb2FkRGVsZWdh
dGUubW06CiAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJN
YWMubW06CiAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvUGl4ZWxEdW1wU3VwcG9ydE1hYy5t
bToKICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9Qb2xpY3lEZWxlZ2F0ZS5tbToKICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL21hYy9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbToKICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tOgogICAgICAgICogRHVtcFJlbmRlclRy
ZWUvcHRocmVhZHMvSmF2YVNjcmlwdFRocmVhZGluZ1B0aHJlYWRzLmNwcDoKLS0tCiBDaGFuZ2VM
b2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDkgKysKIEph
dmFTY3JpcHRDb3JlL0FQSS9PcGFxdWVKU1N0cmluZy5oICAgICAgICAgICAgICAgIHwgICAgMiAr
LQogSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg
IDg0ICsrKysrKysrKysrKysrKysrKysrCiBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5w
cm8gICAgICAgICAgICAgICAgICB8ICAgIDYgKy0KIC4uLi9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3Byb2ogICAgICAgICAgIHwgICAgMSArCiAuLi4vSmF2YVNjcmlwdENvcmUudmNw
cm9qL2pzYy9qc2MudmNwcm9qICAgICAgICAgICB8ICAgIDEgKwogLi4uL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogICAgICAgfCAgICAyICstCiBKYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCAgICB8ICAgIDIgKy0KIEphdmFTY3Jp
cHRDb3JlL2NvbmZpZy5oICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxNyArKystLQog
SmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuaCAgICAgICAgICAgICAgICAgfCAgICAy
ICstCiBKYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5oICAgICAgICB8
ICAgIDYgKy0KIEphdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmggICAgICAg
ICAgIHwgICAgMiArLQogSmF2YVNjcmlwdENvcmUvanNjLnBybyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCAgIDI2ICsrKysrKy0KIEphdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oICAg
ICAgICAgICAgICAgICAgICAgIHwgICAgNiArLQogSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5oICAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCiBKYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyQXJlbmEuaCAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIEphdmFTY3JpcHRDb3JlL3Bj
cmUvcGNyZS5oICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNiArLQogSmF2YVNjcmlwdENv
cmUvcHJvZmlsZXIvUHJvZmlsZS5oICAgICAgICAgICAgICAgICAgfCAgICAyICstCiBKYXZhU2Ny
aXB0Q29yZS9wcm9maWxlci9Qcm9maWxlci5oICAgICAgICAgICAgICAgICB8ICAgIDYgKy0KIEph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5oICAgICAgICAgICAgICAgICAgIHwgICAgNCAr
LQogSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuT2JqZWN0LmggICAgICAgICAgICAgfCAg
ICAyICstCiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhbGxEYXRhLmggICAgICAgICAgICAgICAg
ICB8ICAgIDYgKy0KIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29sbGVjdG9yLmggICAgICAgICAg
ICAgICAgIHwgICAgMiArLQogSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmggICAg
ICAgICAgICAgICAgfCAgICA2ICstCiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0cnVjdERh
dGEuaCAgICAgICAgICAgICB8ICAgIDYgKy0KIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUlu
c3RhbmNlLmggICAgICAgICAgICAgIHwgICAgMiArLQogSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
cnJvci5oICAgICAgICAgICAgICAgICAgICAgfCAgICA4ICstCiBKYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaCAgICAgICB8ICAgIDggKy0KIEphdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSWRlbnRpZmllci5oICAgICAgICAgICAgICAgIHwgICAgMiArLQogSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmggICAgICAgfCAgICA0ICstCiBKYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaCAgICAgICAgICB8ICAgIDQgKy0K
IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oICAgICAgICAgICAgICAgICAgIHwgICAg
OCArLQogSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJheS5oICAgICAgICAgICAgICAg
fCAgICAyICstCiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oICAgICAgICAgICAgICAg
ICAgICB8ICAgIDIgKy0KIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmggICAg
ICAgICAgICAgIHwgICAgMiArLQogSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oICAgICAgICAgICAgfCAgICAyICstCiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW1tZWRp
YXRlLmggICAgICAgICAgICAgICB8ICAgMTAgKy0KIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNM
b2NrLmggICAgICAgICAgICAgICAgICAgIHwgICAgMiArLQogSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU051bWJlckNlbGwuaCAgICAgICAgICAgICAgfCAgIDEwICstCiBKYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmggICAgICAgICAgICAgICAgICB8ICAgIDYgKy0KIEphdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTdHJpbmcuaCAgICAgICAgICAgICAgICAgIHwgICAzNCArKysrLS0tLQog
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmggICAgICAgICAgfCAgICA0
ICstCiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9iamVjdC5oICAgICAgICAgICB8
ICAgIDQgKy0KIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmggICAgICAgICAgICAgICAg
ICAgIHwgICAgNCArLQogSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJPYmplY3QuaCAgICAg
ICAgICAgICAgfCAgICAyICstCiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlw
ZS5oICAgICAgICAgICB8ICAgIDIgKy0KIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlO
YW1lQXJyYXkuaCAgICAgICAgIHwgICAgMiArLQogSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm90
b3R5cGVGdW5jdGlvbi5oICAgICAgICAgfCAgICAyICstCiBKYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cC5oICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIEphdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwT2JqZWN0LmggICAgICAgICAgICAgIHwgICAgMiArLQogSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TbWFsbFN0cmluZ3MuaCAgICAgICAgICAgICAgfCAgICAyICstCiBKYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oICAgICAgICAgICAgICB8ICAgIDQgKy0KIEph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmggICAgICAgICAgICAgICAgIHwgICAgMiAr
LQogSmF2YVNjcmlwdENvcmUvcnVudGltZS9UaW1lb3V0Q2hlY2tlci5oICAgICAgICAgICAgfCAg
ICAyICstCiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuaCAgICAgICAgICAgICAgICAg
ICB8ICAgMjQgKysrLS0tCiBKYXZhU2NyaXB0Q29yZS93dGYvQnl0ZUFycmF5LmggICAgICAgICAg
ICAgICAgICAgICB8ICAgIDIgKy0KIEphdmFTY3JpcHRDb3JlL3d0Zi9DdXJyZW50VGltZS5oICAg
ICAgICAgICAgICAgICAgIHwgICAgNSArLQogSmF2YVNjcmlwdENvcmUvd3RmL0Zhc3RNYWxsb2Mu
aCAgICAgICAgICAgICAgICAgICAgfCAgIDE4ICsrLS0KIEphdmFTY3JpcHRDb3JlL3d0Zi9NYWlu
VGhyZWFkLmggICAgICAgICAgICAgICAgICAgIHwgICAgNiArLQogSmF2YVNjcmlwdENvcmUvd3Rm
L1JhbmRvbU51bWJlci5oICAgICAgICAgICAgICAgICAgfCAgICA0ICstCiBKYXZhU2NyaXB0Q29y
ZS93dGYvVGhyZWFkaW5nLmggICAgICAgICAgICAgICAgICAgICB8ICAgMjQgKysrLS0tCiBKYXZh
U2NyaXB0Q29yZS93dGYvZHRvYS5oICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDQgKy0K
IEphdmFTY3JpcHRDb3JlL3d0Zi91bmljb2RlL1VURjguY3BwICAgICAgICAgICAgICAgIHwgICAg
MSArCiBKYXZhU2NyaXB0Q29yZS93dGYvdW5pY29kZS9VVEY4LmggICAgICAgICAgICAgICAgICB8
ICAgMTQgKystLQogV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAgIDE3ICsrKysKIFdlYkNvcmUvV2ViQ29yZS5wcm8gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgICAyOSArKysrKysrCiBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qICAgICAgICAgICAgICB8ICAgIDEgKwogV2ViQ29yZS9jb25maWcuaCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDMxICsrKystLS0KIFdlYktpdC5wcm8gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArCiBXZWJLaXQvY2Yv
Q2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDkgKysKIFdlYktp
dC9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAgIHwgICAgMiAtCiBX
ZWJLaXQvbWFjL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTAg
KysrCiBXZWJLaXQvbWFjL1dlYktpdFByZWZpeC5oICAgICAgICAgICAgICAgICAgICAgICAgICB8
ICAgMjQgKysrKystCiBXZWJLaXQvd2luL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8ICAgMTEgKysrCiBXZWJLaXQvd2luL1dlYktpdC52Y3Byb2ovV2ViS2l0LnZjcHJv
aiAgICAgICAgICAgICB8ICAgIDEgKwogV2ViS2l0L3dpbi9XZWJLaXRETEwuaCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCAgIDEwICsrKwogV2ViS2l0VG9vbHMvQ2hhbmdlTG9nICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIwICsrKysrCiAuLi4vbWFjL0FjY2Vzc2liaWxp
dHlDb250cm9sbGVyTWFjLm1tICAgICAgICAgICAgICB8ICAgIDEgKwogLi4uL21hYy9BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50TWFjLm1tICAgICAgICAgICAgICAgfCAgICAxICsKIFdlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbSAgIHwgICAgMSArCiAuLi4vRHVt
cFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlV2luZG93Lm1tICAgICB8ICAgIDEgKwogV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0VkaXRpbmdEZWxlZ2F0ZS5tbSAgfCAgICAxICsK
IC4uLi9EdW1wUmVuZGVyVHJlZS9tYWMvRnJhbWVMb2FkRGVsZWdhdGUubW0gICAgICAgIHwgICAg
MSArCiAuLi4vRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tICB8
ICAgIDEgKwogLi4uL0R1bXBSZW5kZXJUcmVlL21hYy9QaXhlbER1bXBTdXBwb3J0TWFjLm1tICAg
ICAgfCAgICAxICsKIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9Qb2xpY3lEZWxlZ2F0
ZS5tbSAgIHwgICAgMSArCiAuLi4vRHVtcFJlbmRlclRyZWUvbWFjL1Jlc291cmNlTG9hZERlbGVn
YXRlLm1tICAgICB8ICAgIDEgKwogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVs
ZWdhdGUubW0gICAgICAgfCAgICAxICsKIC4uLi9wdGhyZWFkcy9KYXZhU2NyaXB0VGhyZWFkaW5n
UHRocmVhZHMuY3BwICAgICAgIHwgICAgMSArCiA4OSBmaWxlcyBjaGFuZ2VkLCA0NDkgaW5zZXJ0
aW9ucygrKSwgMTgyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5n
ZUxvZwppbmRleCBmMjMwMTBkLi4xODk1YmU1IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMDktMDctMjIgIEtlbm5ldGggUm9oZGUgQ2hy
aXN0aWFuc2VuICA8a2VubmV0aC5jaHJpc3RpYW5zZW5Ab3BlbmJvc3NhLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCdWlsZCBKYXZhU2NyaXB0
Q29yZSBhcyBzaGFyZWQgbGlicmFyeS4KKworICAgICAgICAqIFdlYktpdC5wcm86IFJlY3Vyc2Ug
aW50byBKYXZhU2NyaXB0Q29yZSB0byBidWlsZCBpdCBhcyBzaGFyZWQKKyAgICAgICAgbGlicmFy
eS4KKwogMjAwOS0wNy0yMSAgUm9sYW5kIFN0ZWluZXIgIDxyb2xhbmRzdGVpbmVyQGdvb2dsZS5j
b20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgTGV2aW4uCmRpZmYgLS1naXQgYS9KYXZh
U2NyaXB0Q29yZS9BUEkvT3BhcXVlSlNTdHJpbmcuaCBiL0phdmFTY3JpcHRDb3JlL0FQSS9PcGFx
dWVKU1N0cmluZy5oCmluZGV4IDQ3M2M4MTUuLjkyMTYyMjQgMTAwNjQ0Ci0tLSBhL0phdmFTY3Jp
cHRDb3JlL0FQSS9PcGFxdWVKU1N0cmluZy5oCisrKyBiL0phdmFTY3JpcHRDb3JlL0FQSS9PcGFx
dWVKU1N0cmluZy5oCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNz
IEpTR2xvYmFsRGF0YTsKIH0KIAotc3RydWN0IE9wYXF1ZUpTU3RyaW5nIDogcHVibGljIFRocmVh
ZFNhZmVTaGFyZWQ8T3BhcXVlSlNTdHJpbmc+IHsKK3N0cnVjdCBKU19FWFBPUlREQVRBIE9wYXF1
ZUpTU3RyaW5nIDogcHVibGljIFRocmVhZFNhZmVTaGFyZWQ8T3BhcXVlSlNTdHJpbmc+IHsKIAog
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBjcmVhdGUoKSAvLyBudWxsCiAg
ICAgewpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCmluZGV4IDkxZmMxZGEuLjg2YjQxZmEgMTAwNjQ0Ci0tLSBhL0phdmFTY3Jp
cHRDb3JlL0NoYW5nZUxvZworKysgYi9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw4NyBAQAorMjAwOS0wNy0yMiAgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4gIDxrZW5uZXRo
LmNocmlzdGlhbnNlbkBvcGVuYm9zc2Eub3JnPiwgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVz
bWFubkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTWFrZSBpdCBwb3NzaWJsZSB0byBidWlsZCBKYXZhU2NyaXB0Q29yZSBhcyBzaGFy
ZWQgbGlicmFyeSB3aXRob3V0CisgICAgICAgIGV4cG9ydGVkIHN5bWJvbCBsaXN0cy4KKworICAg
ICAgICBBZGRlZCBKU19FWFBPUlREQVRBIHRvIGFsbCB0aGUgY2xhc3NlcyB0aGF0IGFyZSBhY2Nl
c3NlZCBmcm9tIFdlYkNvcmUsCisgICAgICAgIHRvIGVuc3VyZSB0aGVpciB2aXNpYmlsaXR5Lgor
CisgICAgICAgIENoYW5nZWQgSmF2YVNjcmlwdENvcmUucHJvIHRvIGJ1aWxkIEpTQyBhcyBzaGFy
ZWQgbGlicmFyeS4KKworICAgICAgICAqIEFQSS9PcGFxdWVKU1N0cmluZy5oOiBVc2UgSlNfRVhQ
T1JUREFUQS4KKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5wcm86IEJ1aWxkIEpTQyBhcyBzaGFy
ZWQgbGlicmFyeS4KKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmNwcm9qOiBEaXNhYmxlCisgICAgICAgIE1TVkMgd2FybmluZyBh
Ym91dCBpbmNvbnNpc3RlbnQgbGlua2FnZS4KKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3By
b2ovanNjL2pzYy52Y3Byb2o6IERpdHRvLgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6IEluY2x1ZGUgUHJvZmlsZUdlbmVyYXRvci5oCisgICAgICAg
IGluIHRoZSBwcml2YXRlIGhlYWRlcnMsIGFzIGl0IGlzIGluY2x1ZGVkIGZyb20gUHJvZmlsZXIu
aCwgd2hpY2ggaXMKKyAgICAgICAgYWxzbyBpbmNsdWRlZCBmcm9tIFdlYkNvcmUuCisgICAgICAg
ICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6IFVzZSBKU19FWFBPUlREQVRBLgor
ICAgICAgICAqIGNvbmZpZy5oOiBEZWZpbmUgSlNfRVhQT1JUREFUQSBhY2NvcmRpbmdseSB3aXRo
IGdjYzsgRGVmaW5lIGl0IHRvCisgICAgICAgIGRsbGltcG9ydCB3aXRoIE1TVkMuCisgICAgICAg
ICogZGVidWdnZXIvRGVidWdnZXIuaDogVXNlIEpTX0VYUE9SVERBVEEuCisgICAgICAgICogZGVi
dWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuaDogRGl0dG8uCisgICAgICAgICogaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXIuaDogRGl0dG8uCisgICAgICAgICoganNjLnBybzogTGluayBhZ2FpbnN0IEpT
QyBhcyBzaGFyZWQgbGlicmFyeS4KKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuaDogVXNlIEpTX0VY
UE9SVERBVEEuCisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOiBEaXR0by4KKyAgICAgICAgKiBw
YXJzZXIvUGFyc2VyQXJlbmEuaDogRGl0dG8uCisgICAgICAgICogcGNyZS9wY3JlLmg6IERpdHRv
LgorICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGUuaDogVXNlIEpTX0VYUE9SVERBVEEuCisgICAg
ICAgICogcHJvZmlsZXIvUHJvZmlsZXIuaDogVXNlIEpTX0VYUE9SVERBVEEgYW5kIHJlcGxhY2Ug
UHJvZmlsZUdlbmVyYXRvcgorICAgICAgICBmb3J3YXJkIGRlY2xhcmF0aW9uIHdpdGggaW5jbHVz
aW9uIHRvIGZpeCBNU1ZDIGNvbXBpbGF0aW9uLCB3aGljaCByZXF1aXJlcworICAgICAgICBpdHMg
dmlzaWJsaXR5IHdoZW4gbWFya2luZyBQcm9maWxlciB3aXRoIGRsbGV4cG9ydC4KKyAgICAgICAg
KiBydW50aW1lL0FyZ0xpc3QuaDogVXNlIEpTX0VYUE9SVERBVEEuCisgICAgICAgICogcnVudGlt
ZS9Cb29sZWFuT2JqZWN0Lmg6IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvQ2FsbERhdGEuaDog
RGl0dG8uCisgICAgICAgICogcnVudGltZS9Db2xsZWN0b3IuaDogRGl0dG8uCisgICAgICAgICog
cnVudGltZS9Db21wbGV0aW9uLmg6IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvQ29uc3RydWN0
RGF0YS5oOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL0RhdGVJbnN0YW5jZS5oOiBEaXR0by4K
KyAgICAgICAgKiBydW50aW1lL0Vycm9yLmg6IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5oOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL0lkZW50aWZpZXIu
aDogRGl0dG8uCisgICAgICAgICogcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg6IERpdHRv
LgorICAgICAgICAqIHJ1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oOiBNb3ZlZCBKU19FWFBPUlRE
QVRBIGZyb20gSW50ZXJuYWxGdW5jdGlvbjo6aW5mbyB0bworICAgICAgICBJbnRlcm5hbEZ1bmN0
aW9uLCB0byBleHBvcnQgdGhlIGVudGlyZSBjbGFzcy4KKyAgICAgICAgKiBydW50aW1lL0pTQXJy
YXkuaDogVXNlIEpTX0VYUE9SVERBVEEuCisgICAgICAgICogcnVudGltZS9KU0J5dGVBcnJheS5o
OiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5oOiBEaXR0by4KKyAgICAgICAgKiBy
dW50aW1lL0pTR2xvYmFsRGF0YS5oOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFs
T2JqZWN0Lmg6IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvSlNJbW1lZGlhdGUuaDogRGl0dG8u
CisgICAgICAgICogcnVudGltZS9KU0xvY2suaDogRGl0dG8uCisgICAgICAgICogcnVudGltZS9K
U051bWJlckNlbGwuaDogRGl0dG8uCisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOiBEaXR0
by4KKyAgICAgICAgKiBydW50aW1lL0pTU3RyaW5nLmg6IERpdHRvLgorICAgICAgICAqIHJ1bnRp
bWUvSlNWYXJpYWJsZU9iamVjdC5oOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL0pTV3JhcHBl
ck9iamVjdC5oOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5oOiBEaXR0by4KKyAg
ICAgICAgKiBydW50aW1lL051bWJlck9iamVjdC5oOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1l
L09iamVjdFByb3RvdHlwZS5oOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5TmFt
ZUFycmF5Lmg6IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvUHJvdG90eXBlRnVuY3Rpb24uaDog
RGl0dG8uCisgICAgICAgICogcnVudGltZS9SZWdFeHAuaDogRGl0dG8uCisgICAgICAgICogcnVu
dGltZS9SZWdFeHBPYmplY3QuaDogRGl0dG8uCisgICAgICAgICogcnVudGltZS9TbWFsbFN0cmlu
Z3MuaDogRGl0dG8uCisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuaDogTW92ZWQgSlNf
RVhQT1JUREFUQSBmcm9tIFN0cmluZ09iamVjdDo6aW5mbyB0byBTdHJpbmdPYmplY3QsIHRvCisg
ICAgICAgIGV4cG9ydCB0aGUgZW50aXJlIGNsYXNzLgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0
dXJlLmg6IFVzZSBKU19FWFBPUlREQVRBLgorICAgICAgICAqIHJ1bnRpbWUvVGltZW91dENoZWNr
ZXIuaDogRGl0dG8uCisgICAgICAgICogcnVudGltZS9VU3RyaW5nLmg6IFJlcGxhY2VkIHNpbmds
ZSBleHBvcnQgb2YgVVN0cmluZzo6UmVwOjp7bnVsbCxlbXB0eX1CYXNlU3RyaW5nIHdpdGgKKyAg
ICAgICAgZXhwb3J0IG9mIGVudGlyZSBjbGFzcy4KKyAgICAgICAgKiB3dGYvQnl0ZUFycmF5Lmg6
IFVzZSBKU19FWFBPUlREQVRBLgorICAgICAgICAqIHd0Zi9DdXJyZW50VGltZS5oOiBEaXR0by4K
KyAgICAgICAgKiB3dGYvRmFzdE1hbGxvYy5oOiBEaXR0by4KKyAgICAgICAgKiB3dGYvTWFpblRo
cmVhZC5oOiBEaXR0by4KKyAgICAgICAgKiB3dGYvUmFuZG9tTnVtYmVyLmg6IERpdHRvLgorICAg
ICAgICAqIHd0Zi9UaHJlYWRpbmcuaDogRGl0dG8uCisgICAgICAgICogd3RmL2R0b2EuaDogRGl0
dG8uCisgICAgICAgICogd3RmL3VuaWNvZGUvVVRGOC5oOiBEaXR0by4KKyAgICAgICAgKiB3dGYv
dW5pY29kZS9VVEY4LmNwcDogSW5jbHVkZSBjb25maWcuaCBpbiBvcmRlciB0byBjb21waWxlIHdp
dGggTVNWQy4KKwogMjAwOS0wNy0yMSAgWm9sdGFuIEhlcmN6ZWcgIDx6aGVyY3plZ0BpbmYudS1z
emVnZWQuaHU+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR2F2aW4gQmFycmFjbG91Z2guCmRpZmYg
LS1naXQgYS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcm8gYi9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS5wcm8KaW5kZXggZjg4MWMwNS4uYjJmN2JjZiAxMDA2NDQKLS0tIGEv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUucHJvCisrKyBiL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnBybwpAQCAtMiw5ICsyLDEwIEBACiBDT05GSUcgKz0gYnVpbGRpbmctbGli
cwogaW5jbHVkZSgkJFBXRC8uLi9XZWJLaXQucHJpKQogCitRVCAtPSBndWkKKwogVEVNUExBVEUg
PSBsaWIKLUNPTkZJRyArPSBzdGF0aWNsaWIKLVRBUkdFVCA9IEphdmFTY3JpcHRDb3JlCitUQVJH
RVQgPSBRdEphdmFTY3JpcHRDb3JlCiAKIENPTkZJRyArPSBkZXBlbmRfaW5jbHVkZXBhdGgKIApA
QCAtMzEsNiArMzIsNyBAQCBJTkNMVURFUEFUSCArPSAkJEdFTkVSQVRFRF9TT1VSQ0VTX0RJUgog
ICAgIH0gZWxzZSB7ICMgUmVsZWFzZQogICAgICAgICBPQkpFQ1RTX0RJUiA9IG9iai9yZWxlYXNl
CiAgICAgfQorICAgIERFU1RESVIgPSAkJE9VVFBVVF9ESVIvbGliCiB9CiAKIENPTkZJRyAtPSB3
YXJuX29uCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ov
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qIGIvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagpp
bmRleCBlMzVlMTEwLi41ZWU0NWY2IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCisrKyBi
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3Byb2oKQEAgLTM4LDYgKzM4LDcgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJ
CQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJRGlzYWJsZVNwZWNpZmljV2FybmluZ3M9
IjQyNTEiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNv
bXBpbGVyVG9vbCINCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3Byb2ovanNjL2pzYy52Y3Byb2ogYi9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3By
b2ovanNjL2pzYy52Y3Byb2oKaW5kZXggY2UyZmUwNC4uMjE1ZDk1YSAxMDA2NDQKLS0tIGEvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL2pzYy9qc2MudmNwcm9qCisrKyBiL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9qc2MvanNjLnZjcHJvagpAQCAtMzgs
NiArMzgsNyBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29s
Ig0KKwkJCQlEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncz0iNDI1MTs0MjczIg0KIAkJCS8+DQogCQkJ
PFRvb2wNCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQpkaWZmIC0t
Z2l0IGEvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggMmY5ZWYyMy4uZjQxMTkwYSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNzMsNyAr
MTczLDcgQEAKIAkJOTVBQjgzNDIwREE0MzIyNTAwQkM4M0YzIC8qIFByb2ZpbGVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1QUI4MzJFMERBNDJD
QUQwMEJDODNGMyAvKiBQcm9maWxlci5jcHAgKi87IH07CiAJCTk1QUI4MzU2MERBNDNDMzAwMEJD
ODNGMyAvKiBQcm9maWxlTm9kZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5NUFCODM1NDBEQTQzQjQ0MDBCQzgzRjMgLyogUHJvZmlsZU5vZGUuY3Bw
ICovOyB9OwogCQk5NUNENDU3NjBFMUM0RkREMDA4NTM1OEUgLyogUHJvZmlsZUdlbmVyYXRvci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NUNENDU3
NDBFMUM0RkREMDA4NTM1OEUgLyogUHJvZmlsZUdlbmVyYXRvci5jcHAgKi87IH07Ci0JCTk1Q0Q0
NTc3MEUxQzRGREQwMDg1MzU4RSAvKiBQcm9maWxlR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NUNENDU3NTBFMUM0RkREMDA4NTM1OEUg
LyogUHJvZmlsZUdlbmVyYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07
IH07CisJCTk1Q0Q0NTc3MEUxQzRGREQwMDg1MzU4RSAvKiBQcm9maWxlR2VuZXJhdG9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NUNENDU3NTBFMUM0
RkREMDA4NTM1OEUgLyogUHJvZmlsZUdlbmVyYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk1RTNCQzA1MEUxQUU2ODIwMEIyRDFDMSAvKiBD
YWxsSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTVFM0JDMDQwRTFBRTY4MjAwQjJEMUMxIC8qIENhbGxJZGVudGlmaWVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTVGNkU2OTUwRTVC
NUY5NzAwOTFFODYwIC8qIEpTUHJvZmlsZXJQcml2YXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1OTg4QkE5MEU0NzdCRUMwMEQyOEQ0RCAvKiBK
U1Byb2ZpbGVyUHJpdmF0ZS5jcHAgKi87IH07CiAJCTk2MDA5N0E2MEVCQUJCNTgwMDdBNzI5NyAv
KiBMYWJlbFNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5NjAwOTdBNTBFQkFCQjU4MDA3QTcyOTcgLyogTGFiZWxTY29wZS5oICovOyB9OwpkaWZm
IC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgg
Yi9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCA1
NGQwMjg5Li4yYTA1OTcxIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuaApAQCAtNjEsNyArNjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgRmluYWxseUNvbnRleHQgZmluYWxseUNvbnRleHQ7CiAgICAgfTsKIAotICAgIGNsYXNzIEJ5
dGVjb2RlR2VuZXJhdG9yIDogcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7CisgICAgY2xhc3Mg
SlNfRVhQT1JUREFUQSBCeXRlY29kZUdlbmVyYXRvciA6IHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jh
c2UgewogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBEZWNsYXJhdGlvblN0YWNrczo6VmFy
U3RhY2sgVmFyU3RhY2s7CiAgICAgICAgIHR5cGVkZWYgRGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0
aW9uU3RhY2sgRnVuY3Rpb25TdGFjazsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL2NvbmZp
Zy5oIGIvSmF2YVNjcmlwdENvcmUvY29uZmlnLmgKaW5kZXggNjY4MTc2MS4uMWUwMmFiNyAxMDA2
NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvY29uZmlnLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvY29u
ZmlnLmgKQEAgLTI1LDE0ICsyNSwxNyBAQAogCiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CiAK
LSNpZiBQTEFURk9STShXSU5fT1MpICYmICFkZWZpbmVkKEJVSUxESU5HX1dYX18pICYmICFDT01Q
SUxFUihHQ0MpCi0jaWYgZGVmaW5lZChCVUlMRElOR19KYXZhU2NyaXB0Q29yZSkgfHwgZGVmaW5l
ZChCVUlMRElOR19XVEYpCi0jZGVmaW5lIEpTX0VYUE9SVERBVEEgX19kZWNsc3BlYyhkbGxleHBv
cnQpCisjdW5kZWYgSlNfRVhQT1JUREFUQQorI2lmIENPTVBJTEVSKEdDQykKKyAgICAjZGVmaW5l
IEpTX0VYUE9SVERBVEEgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkKKyNl
bGlmIFBMQVRGT1JNKFdJTl9PUykgJiYgIWRlZmluZWQoQlVJTERJTkdfV1hfXykKKyAgICAjaWYg
ZGVmaW5lZChCVUlMRElOR19KYXZhU2NyaXB0Q29yZSkgfHwgZGVmaW5lZChCVUlMRElOR19XVEYp
CisgICAgICAgICNkZWZpbmUgSlNfRVhQT1JUREFUQSBfX2RlY2xzcGVjKGRsbGV4cG9ydCkKKyAg
ICAjZWxzZQorICAgICAgICAjZGVmaW5lIEpTX0VYUE9SVERBVEEgX19kZWNsc3BlYyhkbGxpbXBv
cnQpCisgICAgI2VuZGlmCiAjZWxzZQotI2RlZmluZSBKU19FWFBPUlREQVRBIF9fZGVjbHNwZWMo
ZGxsaW1wb3J0KQotI2VuZGlmCi0jZWxzZQotI2RlZmluZSBKU19FWFBPUlREQVRBCisgICAgI2Rl
ZmluZSBKU19FWFBPUlREQVRBCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKFdJTl9PUykKZGlmZiAt
LWdpdCBhL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmggYi9KYXZhU2NyaXB0Q29y
ZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCmluZGV4IDk4ZDA5MzUuLjZiNmM5ZDIgMTAwNjQ0Ci0tLSBh
L0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmgKKysrIGIvSmF2YVNjcmlwdENvcmUv
ZGVidWdnZXIvRGVidWdnZXIuaApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICBjbGFzcyBTb3VyY2VDb2RlOwogICAgIGNsYXNzIFVTdHJpbmc7CiAKLSAgICBjbGFzcyBEZWJ1
Z2dlciB7CisgICAgY2xhc3MgSlNfRVhQT1JUREFUQSBEZWJ1Z2dlciB7CiAgICAgcHVibGljOgog
ICAgICAgICBEZWJ1Z2dlcigpOwogICAgICAgICB2aXJ0dWFsIH5EZWJ1Z2dlcigpOwpkaWZmIC0t
Z2l0IGEvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuaCBiL0phdmFT
Y3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmgKaW5kZXggOWQzNzdlZi4uNjk2
NTRmMSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJh
bWUuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5oCkBA
IC0yNSwxNSArMjUsMTUgQEAKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgogICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwot
IAorCiAjaWZuZGVmIERlYnVnZ2VyQ2FsbEZyYW1lX2gKICNkZWZpbmUgRGVidWdnZXJDYWxsRnJh
bWVfaAogCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAKIG5hbWVzcGFjZSBKU0MgewotICAgIAot
ICAgIGNsYXNzIERlYnVnZ2VyQ2FsbEZyYW1lIHsKKworICAgIGNsYXNzIEpTX0VYUE9SVERBVEEg
RGVidWdnZXJDYWxsRnJhbWUgewogICAgIHB1YmxpYzoKICAgICAgICAgZW51bSBUeXBlIHsgUHJv
Z3JhbVR5cGUsIEZ1bmN0aW9uVHlwZSB9OwogCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9JbnRlcnByZXRlci5oIGIvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuaAppbmRleCA1MzMxZDkyLi5lZDMyMzBkIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCisrKyBiL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0ludGVycHJldGVyLmgKQEAgLTY2LDcgKzY2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICBlbnVtIHsgTWF4TWFpblRocmVhZFJlZW50cnlEZXB0aCA9IDI1NiwgTWF4U2Vjb25kYXJ5
VGhyZWFkUmVlbnRyeURlcHRoID0gMzIgfTsKIAotICAgIGNsYXNzIEludGVycHJldGVyIDogcHVi
bGljIEZhc3RBbGxvY0Jhc2UgeworICAgIGNsYXNzIEpTX0VYUE9SVERBVEEgSW50ZXJwcmV0ZXIg
OiBwdWJsaWMgRmFzdEFsbG9jQmFzZSB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAg
ICAgIGZyaWVuZCBjbGFzcyBDYWNoZWRDYWxsOwogICAgIHB1YmxpYzoKZGlmZiAtLWdpdCBhL0ph
dmFTY3JpcHRDb3JlL2pzYy5wcm8gYi9KYXZhU2NyaXB0Q29yZS9qc2MucHJvCmluZGV4IGJhODgw
ZmYuLmE4NGMwMmUgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2pzYy5wcm8KKysrIGIvSmF2
YVNjcmlwdENvcmUvanNjLnBybwpAQCAtMjEsNyArMjEsMzEgQEAgQ09ORklHKGRlYnVnLCBkZWJ1
Z3xyZWxlYXNlKSB7CiAgICAgT0JKRUNUU19ESVIgPSBvYmovcmVsZWFzZQogfQogT0JKRUNUU19E
SVJfV1RSID0gJCRPQkpFQ1RTX0RJUiQke1FNQUtFX0RJUl9TRVB9Ci1pbmNsdWRlKCQkUFdEL0ph
dmFTY3JpcHRDb3JlLnByaSkKKworbGludXgtZysrKiB7CisKKyAgICBJTkNMVURFUEFUSCArPSBc
CisgICAgICAgIEFQSSBcCisgICAgICAgIGFzc2VtYmxlciBcCisgICAgICAgIGJ5dGVjb2RlIFwK
KyAgICAgICAgYnl0ZWNvbXBpbGVyIFwKKyAgICAgICAgZGVidWdnZXIgXAorICAgICAgICBGb3J3
YXJkaW5nSGVhZGVycyBcCisgICAgICAgIGludGVycHJldGVyIFwKKyAgICAgICAgaml0IFwKKyAg
ICAgICAgcGFyc2VyIFwKKyAgICAgICAgcHJvZmlsZXIgXAorICAgICAgICBydW50aW1lIFwKKyAg
ICAgICAgd3JlYyBcCisgICAgICAgIHd0ZiBcCisgICAgICAgIHd0Zi91bmljb2RlIFwKKyAgICAg
ICAgeWFycgorCisgICAgTElCUyArPSAtTCQkT1VUUFVUX0RJUi9saWIgLWxRdEphdmFTY3JpcHRD
b3JlCisgICAgUU1BS0VfUlBBVEhESVIgKz0gJCRPVVRQVVRfRElSL2xpYgorfSBlbHNlIHsKKyAg
ICBpbmNsdWRlKCQkUFdEL0phdmFTY3JpcHRDb3JlLnByaSkKK30KIAogbGVzc1RoYW4oUVRfTUlO
T1JfVkVSU0lPTiwgNCkgewogICAgIERFRklORVMgKz0gUVRfQkVHSU5fTkFNRVNQQUNFPSIiIFFU
X0VORF9OQU1FU1BBQ0U9IiIKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rl
cy5oIGIvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKaW5kZXggODRlOGI5NS4uN2QxMzUy
NSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKKysrIGIvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL05vZGVzLmgKQEAgLTE1OSw3ICsxNTksNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgaW50IG1fbGluZTsKICAgICB9OwogCi0gICAgY2xhc3MgRXhwcmVzc2lvbk5v
ZGUgOiBwdWJsaWMgTm9kZSB7CisgICAgY2xhc3MgSlNfRVhQT1JUREFUQSBFeHByZXNzaW9uTm9k
ZSA6IHB1YmxpYyBOb2RlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKEpT
R2xvYmFsRGF0YSosIFJlc3VsdFR5cGUgPSBSZXN1bHRUeXBlOjp1bmtub3duVHlwZSgpKTsKIApA
QCAtMTg3LDcgKzE4Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZXN1bHRUeXBlIG1f
cmVzdWx0VHlwZTsKICAgICB9OwogCi0gICAgY2xhc3MgU3RhdGVtZW50Tm9kZSA6IHB1YmxpYyBO
b2RlIHsKKyAgICBjbGFzcyBKU19FWFBPUlREQVRBIFN0YXRlbWVudE5vZGUgOiBwdWJsaWMgTm9k
ZSB7CiAgICAgcHVibGljOgogICAgICAgICBTdGF0ZW1lbnROb2RlKEpTR2xvYmFsRGF0YSopOwog
CkBAIC0xNTM5LDcgKzE1MzksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgT3duUHRyPEV2
YWxDb2RlQmxvY2s+IG1fY29kZTsKICAgICB9OwogCi0gICAgY2xhc3MgRnVuY3Rpb25Cb2R5Tm9k
ZSA6IHB1YmxpYyBTY29wZU5vZGUgeworICAgIGNsYXNzIEpTX0VYUE9SVERBVEEgRnVuY3Rpb25C
b2R5Tm9kZSA6IHB1YmxpYyBTY29wZU5vZGUgewogICAgICAgICBmcmllbmQgY2xhc3MgSklUOwog
ICAgIHB1YmxpYzoKICNpZiBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlci5oIGIvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IDM3
M2RjMDAuLmNjZWJjOWUgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
aAorKysgYi9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTM5LDcgKzM5LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IFBhcnNl
ckFyZW5hRGF0YSA6IFBhcnNlckFyZW5hRGVsZXRhYmxlIHsgVCBkYXRhOyB9OwogCi0gICAgY2xh
c3MgUGFyc2VyIDogcHVibGljIE5vbmNvcHlhYmxlIHsKKyAgICBjbGFzcyBKU19FWFBPUlREQVRB
IFBhcnNlciA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiAgICAgcHVibGljOgogICAgICAgICB0ZW1w
bGF0ZSA8Y2xhc3MgUGFyc2VkTm9kZT4gUGFzc1JlZlB0cjxQYXJzZWROb2RlPiBwYXJzZShFeGVj
U3RhdGUqLCBEZWJ1Z2dlciosIGNvbnN0IFNvdXJjZUNvZGUmLCBpbnQqIGVyckxpbmUgPSAwLCBV
U3RyaW5nKiBlcnJNc2cgPSAwKTsKICAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFBhcnNlZE5vZGU+
IFBhc3NSZWZQdHI8UGFyc2VkTm9kZT4gcmVwYXJzZShKU0dsb2JhbERhdGEqLCBQYXJzZWROb2Rl
Kik7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaCBiL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5oCmluZGV4IDY2Yzg1MjkuLjU0OWI3ZGQg
MTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5oCisrKyBiL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIGNsYXNzIFBhcnNlckFyZW5hRGVsZXRhYmxlOwogICAgIGNsYXNzIFBh
cnNlckFyZW5hUmVmQ291bnRlZDsKIAotICAgIGNsYXNzIFBhcnNlckFyZW5hIHsKKyAgICBjbGFz
cyBKU19FWFBPUlREQVRBIFBhcnNlckFyZW5hIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHZvaWQg
c3dhcChQYXJzZXJBcmVuYSYgb3RoZXJBcmVuYSkKICAgICAgICAgewpkaWZmIC0tZ2l0IGEvSmF2
YVNjcmlwdENvcmUvcGNyZS9wY3JlLmggYi9KYXZhU2NyaXB0Q29yZS9wY3JlL3BjcmUuaAppbmRl
eCA1NTA0NGZkLi5iMjBkOTBkIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9wY3JlL3BjcmUu
aAorKysgYi9KYXZhU2NyaXB0Q29yZS9wY3JlL3BjcmUuaApAQCAtNTUsMTQgKzU1LDE0IEBAIGNv
bnN0IGludCBKU1JlZ0V4cEVycm9ySGl0TGltaXQgPSAtMjsKIGNvbnN0IGludCBKU1JlZ0V4cEVy
cm9yTm9NZW1vcnkgPSAtMzsKIGNvbnN0IGludCBKU1JlZ0V4cEVycm9ySW50ZXJuYWwgPSAtNDsK
IAotSlNSZWdFeHAqIGpzUmVnRXhwQ29tcGlsZShjb25zdCBVQ2hhciogcGF0dGVybiwgaW50IHBh
dHRlcm5MZW5ndGgsCitKU19FWFBPUlREQVRBIEpTUmVnRXhwKiBqc1JlZ0V4cENvbXBpbGUoY29u
c3QgVUNoYXIqIHBhdHRlcm4sIGludCBwYXR0ZXJuTGVuZ3RoLAogICAgIEpTUmVnRXhwSWdub3Jl
Q2FzZU9wdGlvbiwgSlNSZWdFeHBNdWx0aWxpbmVPcHRpb24sCiAgICAgdW5zaWduZWQqIG51bVN1
YnBhdHRlcm5zLCBjb25zdCBjaGFyKiogZXJyb3JNZXNzYWdlKTsKIAotaW50IGpzUmVnRXhwRXhl
Y3V0ZShjb25zdCBKU1JlZ0V4cCosCitKU19FWFBPUlREQVRBIGludCBqc1JlZ0V4cEV4ZWN1dGUo
Y29uc3QgSlNSZWdFeHAqLAogICAgIGNvbnN0IFVDaGFyKiBzdWJqZWN0LCBpbnQgc3ViamVjdExl
bmd0aCwgaW50IHN0YXJ0T2Zmc2V0LAogICAgIGludCogb2Zmc2V0c1ZlY3RvciwgaW50IG9mZnNl
dHNWZWN0b3JMZW5ndGgpOwogCi12b2lkIGpzUmVnRXhwRnJlZShKU1JlZ0V4cCopOworSlNfRVhQ
T1JUREFUQSB2b2lkIGpzUmVnRXhwRnJlZShKU1JlZ0V4cCopOwogCiAjZW5kaWYKZGlmZiAtLWdp
dCBhL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGUuaCBiL0phdmFTY3JpcHRDb3JlL3By
b2ZpbGVyL1Byb2ZpbGUuaAppbmRleCA2YmYyOWY3Li5hZjMzMjQzIDEwMDY0NAotLS0gYS9KYXZh
U2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcHJvZmls
ZXIvUHJvZmlsZS5oCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi0gICAg
Y2xhc3MgUHJvZmlsZSA6IHB1YmxpYyBSZWZDb3VudGVkPFByb2ZpbGU+IHsKKyAgICBjbGFzcyBK
U19FWFBPUlREQVRBIFByb2ZpbGUgOiBwdWJsaWMgUmVmQ291bnRlZDxQcm9maWxlPiB7CiAgICAg
cHVibGljOgogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxQcm9maWxlPiBjcmVhdGUoY29uc3Qg
VVN0cmluZyYgdGl0bGUsIHVuc2lnbmVkIHVpZCk7CiAgICAgICAgIHZpcnR1YWwgflByb2ZpbGUo
KTsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyLmggYi9KYXZh
U2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlci5oCmluZGV4IDg2OWY0MTkuLjI0ZGQxMmIgMTAw
NjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyLmgKKysrIGIvSmF2YVNj
cmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXIuaApAQCAtMzAsNiArMzAsNyBAQAogI2RlZmluZSBQ
cm9maWxlcl9oCiAKICNpbmNsdWRlICJQcm9maWxlLmgiCisjaW5jbHVkZSAiUHJvZmlsZUdlbmVy
YXRvci5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTQxLDE3ICs0MiwxNiBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICBjbGFzcyBKU0dsb2JhbERhdGE7CiAgICAgY2xhc3MgSlNPYmplY3Q7CiAg
ICAgY2xhc3MgSlNWYWx1ZTsKLSAgICBjbGFzcyBQcm9maWxlR2VuZXJhdG9yOwogICAgIGNsYXNz
IFVTdHJpbmc7CiAKLSAgICBjbGFzcyBQcm9maWxlciA6IHB1YmxpYyBGYXN0QWxsb2NCYXNlIHsK
KyAgICBjbGFzcyBKU19FWFBPUlREQVRBIFByb2ZpbGVyIDogcHVibGljIEZhc3RBbGxvY0Jhc2Ug
ewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFByb2ZpbGVyKiogZW5hYmxlZFByb2ZpbGVy
UmVmZXJlbmNlKCkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuICZzX3NoYXJlZEVuYWJs
ZWRQcm9maWxlclJlZmVyZW5jZTsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBQcm9maWxl
ciogcHJvZmlsZXIoKTsgCisgICAgICAgIHN0YXRpYyBQcm9maWxlciogcHJvZmlsZXIoKTsKICAg
ICAgICAgc3RhdGljIENhbGxJZGVudGlmaWVyIGNyZWF0ZUNhbGxJZGVudGlmaWVyKEpTR2xvYmFs
RGF0YSosIEpTVmFsdWUsIGNvbnN0IFVTdHJpbmcmIHNvdXJjZVVSTCwgaW50IGxpbmVOdW1iZXIp
OwogCiAgICAgICAgIHZvaWQgc3RhcnRQcm9maWxpbmcoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmlu
ZyYgdGl0bGUpOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0Lmgg
Yi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuaAppbmRleCAwODk5ZTg1Li44ZTliOTZh
IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuaAorKysgYi9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuaApAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAKLSAgICBjbGFzcyBNYXJrZWRBcmd1bWVudEJ1ZmZlciA6IHB1YmxpYyBO
b25jb3B5YWJsZSB7CisgICAgY2xhc3MgSlNfRVhQT1JUREFUQSBNYXJrZWRBcmd1bWVudEJ1ZmZl
ciA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIGlubGluZUNhcGFjaXR5ID0gODsKICAgICAgICAgdHlwZWRlZiBWZWN0b3I8
UmVnaXN0ZXIsIGlubGluZUNhcGFjaXR5PiBWZWN0b3JUeXBlOwpAQCAtMTcxLDcgKzE3MSw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiwgc2l6
ZV90KTsKICAgICB9OwogCi0gICAgY2xhc3MgQXJnTGlzdCB7CisgICAgY2xhc3MgSlNfRVhQT1JU
REFUQSBBcmdMaXN0IHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKICAgICBwdWJsaWM6CiAg
ICAgICAgIHR5cGVkZWYgSlNWYWx1ZSogaXRlcmF0b3I7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Jvb2xlYW5PYmplY3QuaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9v
bGVhbk9iamVjdC5oCmluZGV4IGNmZDU1ZmUuLmU0MWI2MWUgMTAwNjQ0Ci0tLSBhL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQm9vbGVhbk9iamVjdC5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQm9vbGVhbk9iamVjdC5oCkBAIC0yNSw3ICsyNSw3IEBACiAKIG5hbWVzcGFjZSBKU0Mgewog
Ci0gICAgY2xhc3MgQm9vbGVhbk9iamVjdCA6IHB1YmxpYyBKU1dyYXBwZXJPYmplY3QgeworICAg
IGNsYXNzIEpTX0VYUE9SVERBVEEgQm9vbGVhbk9iamVjdCA6IHB1YmxpYyBKU1dyYXBwZXJPYmpl
Y3QgewogICAgIHB1YmxpYzoKICAgICAgICAgZXhwbGljaXQgQm9vbGVhbk9iamVjdChQYXNzUmVm
UHRyPFN0cnVjdHVyZT4pOwogCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nh
bGxEYXRhLmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhbGxEYXRhLmgKaW5kZXggZDViMDE3
Mi4uMGUxNTAzMSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWxsRGF0YS5o
CisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FsbERhdGEuaApAQCAtNDAsNyArNDAsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBKU1ZhbHVlOwogICAgIGNsYXNzIFNjb3BlQ2hh
aW5Ob2RlOwogCi0gICAgZW51bSBDYWxsVHlwZSB7CisgICAgZW51bSBKU19FWFBPUlREQVRBIENh
bGxUeXBlIHsKICAgICAgICAgQ2FsbFR5cGVOb25lLAogICAgICAgICBDYWxsVHlwZUhvc3QsCiAg
ICAgICAgIENhbGxUeXBlSlMKQEAgLTQ4LDcgKzQ4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICB0eXBlZGVmIEpTVmFsdWUgKEpTQ19IT1NUX0NBTEwgKk5hdGl2ZUZ1bmN0aW9uKShFeGVjU3Rh
dGUqLCBKU09iamVjdCosIEpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0Jik7CiAKLSAg
ICB1bmlvbiBDYWxsRGF0YSB7CisgICAgdW5pb24gSlNfRVhQT1JUREFUQSBDYWxsRGF0YSB7CiAg
ICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbjsKICAg
ICAgICAgfSBuYXRpdmU7CkBAIC01OCw3ICs1OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICB9IGpzOwogICAgIH07CiAKLSAgICBKU1ZhbHVlIGNhbGwoRXhlY1N0YXRlKiwgSlNWYWx1ZSBm
dW5jdGlvbk9iamVjdCwgQ2FsbFR5cGUsIGNvbnN0IENhbGxEYXRhJiwgSlNWYWx1ZSB0aGlzVmFs
dWUsIGNvbnN0IEFyZ0xpc3QmKTsKKyAgICBKU19FWFBPUlREQVRBIEpTVmFsdWUgY2FsbChFeGVj
U3RhdGUqLCBKU1ZhbHVlIGZ1bmN0aW9uT2JqZWN0LCBDYWxsVHlwZSwgY29uc3QgQ2FsbERhdGEm
LCBKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgQXJnTGlzdCYpOwogCiB9IC8vIG5hbWVzcGFjZSBK
U0MKIApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2xsZWN0b3IuaCBiL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29sbGVjdG9yLmgKaW5kZXggODUyYWM1OS4uZDA5NjNmYSAx
MDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2xsZWN0b3IuaAorKysgYi9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbGxlY3Rvci5oCkBAIC02Myw3ICs2Myw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBPcGVyYXRpb25JblByb2dyZXNzIG9wZXJhdGlvbkluUHJvZ3Jlc3M7
CiAgICAgfTsKIAotICAgIGNsYXNzIEhlYXAgOiBwdWJsaWMgTm9uY29weWFibGUgeworICAgIGNs
YXNzIEpTX0VYUE9SVERBVEEgSGVhcCA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiAgICAgcHVibGlj
OgogICAgICAgICBjbGFzcyBUaHJlYWQ7CiAgICAgICAgIHR5cGVkZWYgQ29sbGVjdG9ySGVhcEl0
ZXJhdG9yPFByaW1hcnlIZWFwPiBpdGVyYXRvcjsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tcGxldGlvbi5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9u
LmgKaW5kZXggNDFjOWE2NC4uMTBmN2ZiYSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21wbGV0aW9uLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9u
LmgKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICogQ29tcGxldGlvbiBv
YmplY3RzIGFyZSB1c2VkIHRvIGNvbnZleSB0aGUgcmV0dXJuIHN0YXR1cyBhbmQgdmFsdWUKICAg
ICAgKiBmcm9tIGZ1bmN0aW9ucy4KICAgICAgKi8KLSAgICBjbGFzcyBDb21wbGV0aW9uIHsKKyAg
ICBjbGFzcyBKU19FWFBPUlREQVRBIENvbXBsZXRpb24gewogICAgIHB1YmxpYzoKICAgICAgICAg
Q29tcGxldGlvbihDb21wbFR5cGUgdHlwZSA9IE5vcm1hbCwgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFs
dWUoKSkKICAgICAgICAgICAgIDogbV90eXBlKHR5cGUpCkBAIC01NSw4ICs1NSw4IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBKU1ZhbHVlIG1fdmFsdWU7CiAgICAgfTsKIAotICAgIENvbXBs
ZXRpb24gY2hlY2tTeW50YXgoRXhlY1N0YXRlKiwgY29uc3QgU291cmNlQ29kZSYpOwotICAgIENv
bXBsZXRpb24gZXZhbHVhdGUoRXhlY1N0YXRlKiwgU2NvcGVDaGFpbiYsIGNvbnN0IFNvdXJjZUNv
ZGUmLCBKU1ZhbHVlIHRoaXNWYWx1ZSA9IEpTVmFsdWUoKSk7CisgICAgSlNfRVhQT1JUREFUQSBD
b21wbGV0aW9uIGNoZWNrU3ludGF4KEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmKTsKKyAg
ICBKU19FWFBPUlREQVRBIENvbXBsZXRpb24gZXZhbHVhdGUoRXhlY1N0YXRlKiwgU2NvcGVDaGFp
biYsIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1ZhbHVlIHRoaXNWYWx1ZSA9IEpTVmFsdWUoKSk7CiAK
IH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbnN0cnVjdERhdGEuaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc3RydWN0RGF0YS5o
CmluZGV4IDlkNTgwZDUuLmZkYmIzOTYgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29uc3RydWN0RGF0YS5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc3RydWN0
RGF0YS5oCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTVmFs
dWU7CiAgICAgY2xhc3MgU2NvcGVDaGFpbk5vZGU7CiAKLSAgICBlbnVtIENvbnN0cnVjdFR5cGUg
eworICAgIGVudW0gSlNfRVhQT1JUREFUQSBDb25zdHJ1Y3RUeXBlIHsKICAgICAgICAgQ29uc3Ry
dWN0VHlwZU5vbmUsCiAgICAgICAgIENvbnN0cnVjdFR5cGVIb3N0LAogICAgICAgICBDb25zdHJ1
Y3RUeXBlSlMKQEAgLTQ2LDcgKzQ2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICB0eXBlZGVm
IEpTT2JqZWN0KiAoKk5hdGl2ZUNvbnN0cnVjdG9yKShFeGVjU3RhdGUqLCBKU09iamVjdCosIGNv
bnN0IEFyZ0xpc3QmKTsKIAotICAgIHVuaW9uIENvbnN0cnVjdERhdGEgeworICAgIHVuaW9uIEpT
X0VYUE9SVERBVEEgQ29uc3RydWN0RGF0YSB7CiAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAg
ICBOYXRpdmVDb25zdHJ1Y3RvciBmdW5jdGlvbjsKICAgICAgICAgfSBuYXRpdmU7CkBAIC01Niw3
ICs1Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9IGpzOwogICAgIH07CiAKLSAgICBK
U09iamVjdCogY29uc3RydWN0KEV4ZWNTdGF0ZSosIEpTVmFsdWUgY29uc3RydWN0b3IsIENvbnN0
cnVjdFR5cGUsIGNvbnN0IENvbnN0cnVjdERhdGEmLCBjb25zdCBBcmdMaXN0Jik7CisgICAgSlNf
RVhQT1JUREFUQSBKU09iamVjdCogY29uc3RydWN0KEV4ZWNTdGF0ZSosIEpTVmFsdWUgY29uc3Ry
dWN0b3IsIENvbnN0cnVjdFR5cGUsIGNvbnN0IENvbnN0cnVjdERhdGEmLCBjb25zdCBBcmdMaXN0
Jik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0RhdGVJbnN0YW5jZS5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFu
Y2UuaAppbmRleCAzYjczNTIxLi4wYzI3NjNjIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0RhdGVJbnN0YW5jZS5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUlu
c3RhbmNlLmgKQEAgLTI5LDcgKzI5LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAKIG5hbWVzcGFjZSBK
U0MgewogCi0gICAgY2xhc3MgRGF0ZUluc3RhbmNlIDogcHVibGljIEpTV3JhcHBlck9iamVjdCB7
CisgICAgY2xhc3MgSlNfRVhQT1JUREFUQSBEYXRlSW5zdGFuY2UgOiBwdWJsaWMgSlNXcmFwcGVy
T2JqZWN0IHsKICAgICBwdWJsaWM6CiAgICAgICAgIGV4cGxpY2l0IERhdGVJbnN0YW5jZShQYXNz
UmVmUHRyPFN0cnVjdHVyZT4pOwogICAgICAgICB2aXJ0dWFsIH5EYXRlSW5zdGFuY2UoKTsKZGlm
ZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaCBiL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXJyb3IuaAppbmRleCBhZGY3ZmRmLi5jZDFmYWM5IDEwMDY0NAotLS0gYS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
cnJvci5oCkBAIC01NSwxMCArNTUsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRp
YyBKU09iamVjdCogY3JlYXRlKEV4ZWNTdGF0ZSosIEVycm9yVHlwZSwgY29uc3QgY2hhciogbWVz
c2FnZSk7CiAgICAgfTsKIAotICAgIEpTT2JqZWN0KiB0aHJvd0Vycm9yKEV4ZWNTdGF0ZSosIEVy
cm9yVHlwZSwgY29uc3QgVVN0cmluZyYgbWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludHB0cl90
IHNvdXJjZUlELCBjb25zdCBVU3RyaW5nJiBzb3VyY2VVUkwpOwotICAgIEpTT2JqZWN0KiB0aHJv
d0Vycm9yKEV4ZWNTdGF0ZSosIEVycm9yVHlwZSwgY29uc3QgVVN0cmluZyYgbWVzc2FnZSk7Ci0g
ICAgSlNPYmplY3QqIHRocm93RXJyb3IoRXhlY1N0YXRlKiwgRXJyb3JUeXBlLCBjb25zdCBjaGFy
KiBtZXNzYWdlKTsKLSAgICBKU09iamVjdCogdGhyb3dFcnJvcihFeGVjU3RhdGUqLCBFcnJvclR5
cGUpOworICAgIEpTX0VYUE9SVERBVEEgSlNPYmplY3QqIHRocm93RXJyb3IoRXhlY1N0YXRlKiwg
RXJyb3JUeXBlLCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50cHRy
X3Qgc291cmNlSUQsIGNvbnN0IFVTdHJpbmcmIHNvdXJjZVVSTCk7CisgICAgSlNfRVhQT1JUREFU
QSBKU09iamVjdCogdGhyb3dFcnJvcihFeGVjU3RhdGUqLCBFcnJvclR5cGUsIGNvbnN0IFVTdHJp
bmcmIG1lc3NhZ2UpOworICAgIEpTX0VYUE9SVERBVEEgSlNPYmplY3QqIHRocm93RXJyb3IoRXhl
Y1N0YXRlKiwgRXJyb3JUeXBlLCBjb25zdCBjaGFyKiBtZXNzYWdlKTsKKyAgICBKU19FWFBPUlRE
QVRBIEpTT2JqZWN0KiB0aHJvd0Vycm9yKEV4ZWNTdGF0ZSosIEVycm9yVHlwZSk7CiAKIH0gLy8g
bmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0
aW9uQ29uc3RydWN0b3IuaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1
Y3Rvci5oCmluZGV4IDEyNGIzNTQuLmM3Yjc3ZjIgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCkBAIC0yOSw3ICsyOSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgIGNsYXNzIFByb2dyYW1Ob2RlOwogICAgIGNsYXNzIEZ1bmN0aW9uQm9keU5vZGU7CiAK
LSAgICBjbGFzcyBGdW5jdGlvbkNvbnN0cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rpb24g
eworICAgIGNsYXNzIEpTX0VYUE9SVERBVEEgRnVuY3Rpb25Db25zdHJ1Y3RvciA6IHB1YmxpYyBJ
bnRlcm5hbEZ1bmN0aW9uIHsKICAgICBwdWJsaWM6CiAgICAgICAgIEZ1bmN0aW9uQ29uc3RydWN0
b3IoRXhlY1N0YXRlKiwgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBGdW5jdGlvblByb3RvdHlwZSop
OwogCkBAIC0zOCwxMCArMzgsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZpcnR1YWwg
Q2FsbFR5cGUgZ2V0Q2FsbERhdGEoQ2FsbERhdGEmKTsKICAgICB9OwogCi0gICAgSlNPYmplY3Qq
IGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSosIGNvbnN0IEFyZ0xpc3QmLCBjb25zdCBJZGVu
dGlmaWVyJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFVTdHJpbmcmIHNvdXJjZVVSTCwgaW50IGxpbmVO
dW1iZXIpOwotICAgIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqLCBjb25z
dCBBcmdMaXN0Jik7CisgICAgSlNfRVhQT1JUREFUQSBKU09iamVjdCogY29uc3RydWN0RnVuY3Rp
b24oRXhlY1N0YXRlKiwgY29uc3QgQXJnTGlzdCYsIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9u
TmFtZSwgY29uc3QgVVN0cmluZyYgc291cmNlVVJMLCBpbnQgbGluZU51bWJlcik7CisgICAgSlNf
RVhQT1JUREFUQSBKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiwgY29uc3Qg
QXJnTGlzdCYpOwogCi0gICAgRnVuY3Rpb25Cb2R5Tm9kZSogZXh0cmFjdEZ1bmN0aW9uQm9keShQ
cm9ncmFtTm9kZSopOworICAgIEpTX0VYUE9SVERBVEEgRnVuY3Rpb25Cb2R5Tm9kZSogZXh0cmFj
dEZ1bmN0aW9uQm9keShQcm9ncmFtTm9kZSopOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZm
IC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmggYi9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaAppbmRleCA2MzFjZjQyLi5hMGQ5NjcxIDEwMDY0NAot
LS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaAorKysgYi9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaApAQCAtMjgsNyArMjgsNyBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgIGNsYXNzIEV4ZWNTdGF0ZTsKIAotICAgIGNsYXNzIElkZW50aWZpZXIgeworICAg
IGNsYXNzIEpTX0VYUE9SVERBVEEgSWRlbnRpZmllciB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBT
dHJ1Y3R1cmU7CiAgICAgcHVibGljOgogICAgICAgICBJZGVudGlmaWVyKCkgeyB9CmRpZmYgLS1n
aXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuaCBiL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5oCmluZGV4IDFhOTNjY2IuLmQ4
Mzk3ZTAgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVh
ZGluZy5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5o
CkBAIC0yNSw3ICsyNSw3IEBACiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKICAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
LSAKKwogI2lmbmRlZiBJbml0aWFsaXplVGhyZWFkaW5nX2gKICNkZWZpbmUgSW5pdGlhbGl6ZVRo
cmVhZGluZ19oCiAKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAvLyBU
aGlzIGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVkIGZyb20gdGhlIG1haW4gdGhyZWFkLiBJdCBpcyBz
YWZlIHRvIGNhbGwgaXQgcmVwZWF0ZWRseS4KICAgICAvLyBEYXJ3aW4gaXMgYW4gZXhjZXB0aW9u
IHRvIHRoaXMgcnVsZTogaXQgaXMgT0sgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIGZyb20gYW55IHRo
cmVhZCwgZXZlbiByZWVudHJhbnRseS4KLSAgICB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKTsK
KyAgICBKU19FWFBPUlREQVRBIHZvaWQgaW5pdGlhbGl6ZVRocmVhZGluZygpOwogCiB9CiAKZGlm
ZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oIGIvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgKaW5kZXggMzEwNjQ0Yy4uYzll
YTI3YiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9u
LmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgKQEAgLTMx
LDEwICszMSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEZ1bmN0aW9uUHJvdG90
eXBlOwogCi0gICAgY2xhc3MgSW50ZXJuYWxGdW5jdGlvbiA6IHB1YmxpYyBKU09iamVjdCB7Cisg
ICAgY2xhc3MgSlNfRVhQT1JUREFUQSBJbnRlcm5hbEZ1bmN0aW9uIDogcHVibGljIEpTT2JqZWN0
IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0lu
Zm8oKSBjb25zdDsgCi0gICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNzSW5m
byBpbmZvOworICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIGluZm87CiAKICAgICAgICAg
Y29uc3QgVVN0cmluZyYgbmFtZShKU0dsb2JhbERhdGEqKTsKICAgICAgICAgY29uc3QgVVN0cmlu
ZyBkaXNwbGF5TmFtZShKU0dsb2JhbERhdGEqKTsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJheS5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKaW5k
ZXggZWE0OTBkOC4uNGMwYWNjOSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5LmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKQEAgLTExMiwx
MCArMTEyLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgSlNBcnJheSogYXNBcnJheShKU1Zh
bHVlKTsKIAotICAgIEpTQXJyYXkqIGNvbnN0cnVjdEVtcHR5QXJyYXkoRXhlY1N0YXRlKik7Ci0g
ICAgSlNBcnJheSogY29uc3RydWN0RW1wdHlBcnJheShFeGVjU3RhdGUqLCB1bnNpZ25lZCBpbml0
aWFsTGVuZ3RoKTsKLSAgICBKU0FycmF5KiBjb25zdHJ1Y3RBcnJheShFeGVjU3RhdGUqLCBKU1Zh
bHVlIHNpbmdsZUl0ZW1WYWx1ZSk7Ci0gICAgSlNBcnJheSogY29uc3RydWN0QXJyYXkoRXhlY1N0
YXRlKiwgY29uc3QgQXJnTGlzdCYgdmFsdWVzKTsKKyAgICBKU19FWFBPUlREQVRBIEpTQXJyYXkq
IGNvbnN0cnVjdEVtcHR5QXJyYXkoRXhlY1N0YXRlKik7CisgICAgSlNfRVhQT1JUREFUQSBKU0Fy
cmF5KiBjb25zdHJ1Y3RFbXB0eUFycmF5KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIGluaXRpYWxMZW5n
dGgpOworICAgIEpTX0VYUE9SVERBVEEgSlNBcnJheSogY29uc3RydWN0QXJyYXkoRXhlY1N0YXRl
KiwgSlNWYWx1ZSBzaW5nbGVJdGVtVmFsdWUpOworICAgIEpTX0VYUE9SVERBVEEgSlNBcnJheSog
Y29uc3RydWN0QXJyYXkoRXhlY1N0YXRlKiwgY29uc3QgQXJnTGlzdCYgdmFsdWVzKTsKIAogICAg
IGlubGluZSBKU0FycmF5KiBhc0FycmF5KEpTVmFsdWUgdmFsdWUpCiAgICAgewpkaWZmIC0tZ2l0
IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJheS5oIGIvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0J5dGVBcnJheS5oCmluZGV4IDU3Mzc0ZTAuLjg2NmI4YWUgMTAwNjQ0Ci0tLSBh
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuaAorKysgYi9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQnl0ZUFycmF5LmgKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIEpT
QyB7CiAKLSAgICBjbGFzcyBKU0J5dGVBcnJheSA6IHB1YmxpYyBKU09iamVjdCB7CisgICAgY2xh
c3MgSlNfRVhQT1JUREFUQSBKU0J5dGVBcnJheSA6IHB1YmxpYyBKU09iamVjdCB7CiAgICAgICAg
IGZyaWVuZCBjbGFzcyBWUHRyU2V0OwogICAgIHB1YmxpYzoKICAgICAgICAgYm9vbCBjYW5BY2Nl
c3NJbmRleCh1bnNpZ25lZCBpKSB7IHJldHVybiBpIDwgbV9zdG9yYWdlLT5sZW5ndGgoKTsgfQpk
aWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaCBiL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDZWxsLmgKaW5kZXggMzJhYTIyYi4uZjlhZTkzZCAxMDA2NDQKLS0tIGEv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ2VsbC5oCkBAIC0zMSw3ICszMSw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi0gICAg
Y2xhc3MgSlNDZWxsIDogcHVibGljIE5vbmNvcHlhYmxlQ3VzdG9tQWxsb2NhdGVkIHsKKyAgICBj
bGFzcyBKU19FWFBPUlREQVRBIEpTQ2VsbCA6IHB1YmxpYyBOb25jb3B5YWJsZUN1c3RvbUFsbG9j
YXRlZCB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBHZXR0ZXJTZXR0ZXI7CiAgICAgICAgIGZyaWVu
ZCBjbGFzcyBIZWFwOwogICAgICAgICBmcmllbmQgY2xhc3MgSklUOwpkaWZmIC0tZ2l0IGEvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxEYXRhLmgKaW5kZXggOTZhM2MyYy4uYjA4ZWYxNiAxMDA2NDQKLS0tIGEvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsRGF0YS5oCkBAIC02MSw3ICs2MSw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgIHN0cnVjdCBIYXNoVGFibGU7CiAgICAgc3RydWN0IFZQdHJTZXQ7CiAKLSAgICBjbGFzcyBK
U0dsb2JhbERhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxKU0dsb2JhbERhdGE+IHsKKyAgICBjbGFz
cyBKU19FWFBPUlREQVRBIEpTR2xvYmFsRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPEpTR2xvYmFs
RGF0YT4gewogICAgIHB1YmxpYzoKICAgICAgICAgc3RydWN0IENsaWVudERhdGEgewogICAgICAg
ICAgICAgdmlydHVhbCB+Q2xpZW50RGF0YSgpID0gMDsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuaAppbmRleCA3YWI3NTlkLi44MmYxMzY4IDEwMDY0NAotLS0gYS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC01MSw3ICs1MSw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgdHlwZWRlZiBWZWN0b3I8RXhlY1N0YXRlKiwgMTY+IEV4ZWNTdGF0ZVN0YWNrOwogCi0g
ICAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNWYXJpYWJsZU9iamVjdCB7CisgICAg
Y2xhc3MgSlNfRVhQT1JUREFUQSBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1ZhcmlhYmxlT2Jq
ZWN0IHsKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHVzaW5nIEpTVmFyaWFibGVPYmplY3Q6OkpT
VmFyaWFibGVPYmplY3REYXRhOwogCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTSW1tZWRpYXRlLmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW1tZWRpYXRlLmgKaW5k
ZXggNzA2Mzk2ZS4uZGY4ODVhOSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0ltbWVkaWF0ZS5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbW1lZGlhdGUuaApA
QCAtMTI5LDcgKzEyOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAqIHZhbHVlcyBhcmUgZW5j
b2RlZCBpbiB0aGUgc2FtZSBtYW5uZXIgYXMgdGhlIGRlZmF1bHQgZm9ybWF0LgogICAgICAqLwog
Ci0gICAgY2xhc3MgSlNJbW1lZGlhdGUgeworICAgIGNsYXNzIEpTX0VYUE9SVERBVEEgSlNJbW1l
ZGlhdGUgewogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAgICAg
IGZyaWVuZCBjbGFzcyBKU1ZhbHVlOwpAQCAtNTQyLDEwICs1NDIsMTAgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgfQogCiAgICAgLy8gVGhlc2UgYXJlIGlkZW50aWNhbCBsb2dpYyB0byB0aGUgSlNW
YWx1ZSBmdW5jdGlvbnMgYWJvdmUsIGFuZCBmYXN0ZXIgdGhhbiBqc051bWJlcihudW1iZXIpLnRv
SW50MzIoKS4KLSAgICBpbnQzMl90IHRvSW50MzIoZG91YmxlKTsKLSAgICB1aW50MzJfdCB0b1VJ
bnQzMihkb3VibGUpOwotICAgIGludDMyX3QgdG9JbnQzMlNsb3dDYXNlKGRvdWJsZSwgYm9vbCYg
b2spOwotICAgIHVpbnQzMl90IHRvVUludDMyU2xvd0Nhc2UoZG91YmxlLCBib29sJiBvayk7Cisg
ICAgSlNfRVhQT1JUREFUQSBpbnQzMl90IHRvSW50MzIoZG91YmxlKTsKKyAgICBKU19FWFBPUlRE
QVRBIHVpbnQzMl90IHRvVUludDMyKGRvdWJsZSk7CisgICAgSlNfRVhQT1JUREFUQSBpbnQzMl90
IHRvSW50MzJTbG93Q2FzZShkb3VibGUsIGJvb2wmIG9rKTsKKyAgICBKU19FWFBPUlREQVRBIHVp
bnQzMl90IHRvVUludDMyU2xvd0Nhc2UoZG91YmxlLCBib29sJiBvayk7CiAKICAgICBpbmxpbmUg
SlNWYWx1ZTo6SlNWYWx1ZShKU051bGxUYWcpCiAgICAgewpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0xvY2suaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmgK
aW5kZXggNzBmNmE2Mi4uMTJmZTBlMSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0xvY2suaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCkBAIC01MCw3
ICs1MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRXhlY1N0YXRlOwogCi0gICAg
Y2xhc3MgSlNMb2NrIDogcHVibGljIE5vbmNvcHlhYmxlIHsKKyAgICBjbGFzcyBKU19FWFBPUlRE
QVRBIEpTTG9jayA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiAgICAgcHVibGljOgogICAgICAgICBK
U0xvY2soRXhlY1N0YXRlKik7CiAKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNOdW1iZXJDZWxsLmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTnVtYmVyQ2VsbC5oCmlu
ZGV4IGEzNWUyMTAuLjY1MGU1N2IgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNOdW1iZXJDZWxsLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU051bWJlckNlbGwu
aApAQCAtMzIsMTEgKzMyLDExIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi0gICAgZXh0ZXJuIGNv
bnN0IGRvdWJsZSBOYU47Ci0gICAgZXh0ZXJuIGNvbnN0IGRvdWJsZSBJbmY7CisgICAgSlNfRVhQ
T1JUREFUQSBleHRlcm4gY29uc3QgZG91YmxlIE5hTjsKKyAgICBKU19FWFBPUlREQVRBIGV4dGVy
biBjb25zdCBkb3VibGUgSW5mOwogCi0gICAgSlNWYWx1ZSBqc051bWJlckNlbGwoRXhlY1N0YXRl
KiwgZG91YmxlKTsKLSAgICBKU1ZhbHVlIGpzQVBJTWFuZ2xlZE51bWJlcihFeGVjU3RhdGUqLCBk
b3VibGUpOworICAgIEpTX0VYUE9SVERBVEEgSlNWYWx1ZSBqc051bWJlckNlbGwoRXhlY1N0YXRl
KiwgZG91YmxlKTsKKyAgICBKU19FWFBPUlREQVRBIEpTVmFsdWUganNBUElNYW5nbGVkTnVtYmVy
KEV4ZWNTdGF0ZSosIGRvdWJsZSk7CiAKICNpZiAhVVNFKEFMVEVSTkFURV9KU0lNTUVESUFURSkK
IApAQCAtNDksNyArNDksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBzdHJ1Y3QgQ2xhc3NJbmZv
OwogICAgIHN0cnVjdCBJbnN0cnVjdGlvbjsKIAotICAgIGNsYXNzIEpTTnVtYmVyQ2VsbCA6IHB1
YmxpYyBKU0NlbGwgeworICAgIGNsYXNzIEpTX0VYUE9SVERBVEEgSlNOdW1iZXJDZWxsIDogcHVi
bGljIEpTQ2VsbCB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAgICAgIGZyaWVuZCBK
U1ZhbHVlIGpzTnVtYmVyQ2VsbChKU0dsb2JhbERhdGEqLCBkb3VibGUpOwogICAgICAgICBmcmll
bmQgSlNWYWx1ZSBqc051bWJlckNlbGwoRXhlY1N0YXRlKiwgZG91YmxlKTsKZGlmZiAtLWdpdCBh
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuaAppbmRleCBkYjQ3YWM3Li42MzhlYjdlIDEwMDY0NAotLS0gYS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5oCkBAIC02NCw3ICs2NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHR5cGVkZWYg
RW5jb2RlZEpTVmFsdWUqIFByb3BlcnR5U3RvcmFnZTsKICAgICB0eXBlZGVmIGNvbnN0IEVuY29k
ZWRKU1ZhbHVlKiBDb25zdFByb3BlcnR5U3RvcmFnZTsKIAotICAgIGNsYXNzIEpTT2JqZWN0IDog
cHVibGljIEpTQ2VsbCB7CisgICAgY2xhc3MgSlNfRVhQT1JUREFUQSBKU09iamVjdCA6IHB1Ymxp
YyBKU0NlbGwgewogICAgICAgICBmcmllbmQgY2xhc3MgQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6
ZXI7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKU0Nl
bGw7CkBAIC0yMzQsOSArMjM0LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH07CiAgICAg
fTsKIAotICAgIEpTT2JqZWN0KiBhc09iamVjdChKU1ZhbHVlKTsKKyAgICBKU19FWFBPUlREQVRB
IEpTT2JqZWN0KiBhc09iamVjdChKU1ZhbHVlKTsKIAotICAgIEpTT2JqZWN0KiBjb25zdHJ1Y3RF
bXB0eU9iamVjdChFeGVjU3RhdGUqKTsKKyAgICBKU19FWFBPUlREQVRBIEpTT2JqZWN0KiBjb25z
dHJ1Y3RFbXB0eU9iamVjdChFeGVjU3RhdGUqKTsKIAogaW5saW5lIEpTT2JqZWN0KiBhc09iamVj
dChKU1ZhbHVlIHZhbHVlKQogewpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1N0cmluZy5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCmluZGV4IDkwMGM1
NjUuLjljYjM0ZDEgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcu
aAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKQEAgLTMzLDMyICszMywz
MiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEpTU3RyaW5nOwogCi0gICAgSlNTdHJp
bmcqIGpzRW1wdHlTdHJpbmcoSlNHbG9iYWxEYXRhKik7Ci0gICAgSlNTdHJpbmcqIGpzRW1wdHlT
dHJpbmcoRXhlY1N0YXRlKik7Ci0gICAgSlNTdHJpbmcqIGpzU3RyaW5nKEpTR2xvYmFsRGF0YSos
IGNvbnN0IFVTdHJpbmcmKTsgLy8gcmV0dXJucyBlbXB0eSBzdHJpbmcgaWYgcGFzc2VkIG51bGwg
c3RyaW5nCi0gICAgSlNTdHJpbmcqIGpzU3RyaW5nKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcm
KTsgLy8gcmV0dXJucyBlbXB0eSBzdHJpbmcgaWYgcGFzc2VkIG51bGwgc3RyaW5nCi0KLSAgICBK
U1N0cmluZyoganNTaW5nbGVDaGFyYWN0ZXJTdHJpbmcoSlNHbG9iYWxEYXRhKiwgVUNoYXIpOwot
ICAgIEpTU3RyaW5nKiBqc1NpbmdsZUNoYXJhY3RlclN0cmluZyhFeGVjU3RhdGUqLCBVQ2hhcik7
Ci0gICAgSlNTdHJpbmcqIGpzU2luZ2xlQ2hhcmFjdGVyU3Vic3RyaW5nKEpTR2xvYmFsRGF0YSos
IGNvbnN0IFVTdHJpbmcmLCB1bnNpZ25lZCBvZmZzZXQpOwotICAgIEpTU3RyaW5nKiBqc1Npbmds
ZUNoYXJhY3RlclN1YnN0cmluZyhFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJiwgdW5zaWduZWQg
b2Zmc2V0KTsKLSAgICBKU1N0cmluZyoganNTdWJzdHJpbmcoSlNHbG9iYWxEYXRhKiwgY29uc3Qg
VVN0cmluZyYsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBKU1N0cmlu
ZyoganNTdWJzdHJpbmcoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYsIHVuc2lnbmVkIG9mZnNl
dCwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBKU19FWFBPUlREQVRBIEpTU3RyaW5nKiBqc0VtcHR5
U3RyaW5nKEpTR2xvYmFsRGF0YSopOworICAgIEpTX0VYUE9SVERBVEEgSlNTdHJpbmcqIGpzRW1w
dHlTdHJpbmcoRXhlY1N0YXRlKik7CisgICAgSlNfRVhQT1JUREFUQSBKU1N0cmluZyoganNTdHJp
bmcoSlNHbG9iYWxEYXRhKiwgY29uc3QgVVN0cmluZyYpOyAvLyByZXR1cm5zIGVtcHR5IHN0cmlu
ZyBpZiBwYXNzZWQgbnVsbCBzdHJpbmcKKyAgICBKU19FWFBPUlREQVRBIEpTU3RyaW5nKiBqc1N0
cmluZyhFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJik7IC8vIHJldHVybnMgZW1wdHkgc3RyaW5n
IGlmIHBhc3NlZCBudWxsIHN0cmluZworCisgICAgSlNfRVhQT1JUREFUQSBKU1N0cmluZyoganNT
aW5nbGVDaGFyYWN0ZXJTdHJpbmcoSlNHbG9iYWxEYXRhKiwgVUNoYXIpOworICAgIEpTX0VYUE9S
VERBVEEgSlNTdHJpbmcqIGpzU2luZ2xlQ2hhcmFjdGVyU3RyaW5nKEV4ZWNTdGF0ZSosIFVDaGFy
KTsKKyAgICBKU19FWFBPUlREQVRBIEpTU3RyaW5nKiBqc1NpbmdsZUNoYXJhY3RlclN1YnN0cmlu
ZyhKU0dsb2JhbERhdGEqLCBjb25zdCBVU3RyaW5nJiwgdW5zaWduZWQgb2Zmc2V0KTsKKyAgICBK
U19FWFBPUlREQVRBIEpTU3RyaW5nKiBqc1NpbmdsZUNoYXJhY3RlclN1YnN0cmluZyhFeGVjU3Rh
dGUqLCBjb25zdCBVU3RyaW5nJiwgdW5zaWduZWQgb2Zmc2V0KTsKKyAgICBKU19FWFBPUlREQVRB
IEpTU3RyaW5nKiBqc1N1YnN0cmluZyhKU0dsb2JhbERhdGEqLCBjb25zdCBVU3RyaW5nJiwgdW5z
aWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIEpTX0VYUE9SVERBVEEgSlNTdHJp
bmcqIGpzU3Vic3RyaW5nKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmLCB1bnNpZ25lZCBvZmZz
ZXQsIHVuc2lnbmVkIGxlbmd0aCk7CiAKICAgICAvLyBOb24tdHJpdmlhbCBzdHJpbmdzIGFyZSB0
d28gb3IgbW9yZSBjaGFyYWN0ZXJzIGxvbmcuCiAgICAgLy8gVGhlc2UgZnVuY3Rpb25zIGFyZSBm
YXN0ZXIgdGhhbiBqdXN0IGNhbGxpbmcganNTdHJpbmcuCi0gICAgSlNTdHJpbmcqIGpzTm9udHJp
dmlhbFN0cmluZyhKU0dsb2JhbERhdGEqLCBjb25zdCBVU3RyaW5nJik7Ci0gICAgSlNTdHJpbmcq
IGpzTm9udHJpdmlhbFN0cmluZyhFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJik7Ci0gICAgSlNT
dHJpbmcqIGpzTm9udHJpdmlhbFN0cmluZyhKU0dsb2JhbERhdGEqLCBjb25zdCBjaGFyKik7Ci0g
ICAgSlNTdHJpbmcqIGpzTm9udHJpdmlhbFN0cmluZyhFeGVjU3RhdGUqLCBjb25zdCBjaGFyKik7
CisgICAgSlNfRVhQT1JUREFUQSBKU1N0cmluZyoganNOb250cml2aWFsU3RyaW5nKEpTR2xvYmFs
RGF0YSosIGNvbnN0IFVTdHJpbmcmKTsKKyAgICBKU19FWFBPUlREQVRBIEpTU3RyaW5nKiBqc05v
bnRyaXZpYWxTdHJpbmcoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYpOworICAgIEpTX0VYUE9S
VERBVEEgSlNTdHJpbmcqIGpzTm9udHJpdmlhbFN0cmluZyhKU0dsb2JhbERhdGEqLCBjb25zdCBj
aGFyKik7CisgICAgSlNfRVhQT1JUREFUQSBKU1N0cmluZyoganNOb250cml2aWFsU3RyaW5nKEV4
ZWNTdGF0ZSosIGNvbnN0IGNoYXIqKTsKIAogICAgIC8vIFNob3VsZCBiZSB1c2VkIGZvciBzdHJp
bmdzIHRoYXQgYXJlIG93bmVkIGJ5IGFuIG9iamVjdCB0aGF0IHdpbGwKICAgICAvLyBsaWtlbHkg
b3V0bGl2ZSB0aGUgSlNWYWx1ZSB0aGlzIG1ha2VzLCBzdWNoIGFzIHRoZSBwYXJzZSB0cmVlIG9y
IGEKICAgICAvLyBET00gb2JqZWN0IHRoYXQgY29udGFpbnMgYSBVU3RyaW5nCi0gICAgSlNTdHJp
bmcqIGpzT3duZWRTdHJpbmcoSlNHbG9iYWxEYXRhKiwgY29uc3QgVVN0cmluZyYpOyAKLSAgICBK
U1N0cmluZyoganNPd25lZFN0cmluZyhFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJik7IAorICAg
IEpTX0VYUE9SVERBVEEgSlNTdHJpbmcqIGpzT3duZWRTdHJpbmcoSlNHbG9iYWxEYXRhKiwgY29u
c3QgVVN0cmluZyYpOworICAgIEpTX0VYUE9SVERBVEEgSlNTdHJpbmcqIGpzT3duZWRTdHJpbmco
RXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYpOwogCi0gICAgY2xhc3MgSlNTdHJpbmcgOiBwdWJs
aWMgSlNDZWxsIHsKKyAgICBjbGFzcyBKU19FWFBPUlREQVRBIEpTU3RyaW5nIDogcHVibGljIEpT
Q2VsbCB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBW
UHRyU2V0OwogCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVP
YmplY3QuaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oCmluZGV4
IGI5NjlkYTUuLjU2MDMyY2MgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNW
YXJpYWJsZU9iamVjdC5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9i
amVjdC5oCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUmVn
aXN0ZXI7CiAKLSAgICBjbGFzcyBKU1ZhcmlhYmxlT2JqZWN0IDogcHVibGljIEpTT2JqZWN0IHsK
KyAgICBjbGFzcyBKU19FWFBPUlREQVRBIEpTVmFyaWFibGVPYmplY3QgOiBwdWJsaWMgSlNPYmpl
Y3QgewogICAgICAgICBmcmllbmQgY2xhc3MgSklUOwogCiAgICAgcHVibGljOgpAQCAtNTAsNyAr
NTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlUHJv
cGVydHkoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYpOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgZ2V0UHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYpOwotICAg
ICAgICAKKwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNWYXJpYWJsZU9iamVjdCgpIGNvbnN0Owog
ICAgICAgICB2aXJ0dWFsIGJvb2wgaXNEeW5hbWljU2NvcGUoKSBjb25zdCA9IDA7CiAKZGlmZiAt
LWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmggYi9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9iamVjdC5oCmluZGV4IDJhMmUzYzYuLmQwYmFhODUg
MTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmgKKysr
IGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dyYXBwZXJPYmplY3QuaApAQCAtMjUsMTAgKzI1
LDEwIEBACiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKIAogbmFtZXNwYWNlIEpTQyB7Ci0gICAgCisK
ICAgICAvLyBUaGlzIGNsYXNzIGlzIHVzZWQgYXMgYSBiYXNlIGZvciBjbGFzc2VzIHN1Y2ggYXMg
U3RyaW5nLAogICAgIC8vIE51bWJlciwgQm9vbGVhbiBhbmQgRGF0ZSB3aGljaCBhcmUgd3JhcHBl
cnMgZm9yIHByaW1pdGl2ZSB0eXBlcy4KLSAgICBjbGFzcyBKU1dyYXBwZXJPYmplY3QgOiBwdWJs
aWMgSlNPYmplY3QgeworICAgIGNsYXNzIEpTX0VYUE9SVERBVEEgSlNXcmFwcGVyT2JqZWN0IDog
cHVibGljIEpTT2JqZWN0IHsKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIGV4cGxpY2l0IEpTV3Jh
cHBlck9iamVjdChQYXNzUmVmUHRyPFN0cnVjdHVyZT4pOwogCmRpZmYgLS1naXQgYS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAu
aAppbmRleCAxNjdmMmJjLi4zMDY0YzgzIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0xvb2t1cC5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKQEAgLTEw
NCw3ICsxMDQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSGFzaEVudHJ5KiBtX25leHQ7
CiAgICAgfTsKIAotICAgIHN0cnVjdCBIYXNoVGFibGUgeworICAgIHN0cnVjdCBKU19FWFBPUlRE
QVRBIEhhc2hUYWJsZSB7CiAKICAgICAgICAgaW50IGNvbXBhY3RTaXplOwogICAgICAgICBpbnQg
Y29tcGFjdEhhc2hTaXplTWFzazsKQEAgLTE2Miw3ICsxNjIsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgdm9pZCBjcmVhdGVUYWJsZShKU0dsb2JhbERhdGEqKSBjb25zdDsKICAgICB9Owog
Ci0gICAgdm9pZCBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChFeGVjU3RhdGUqLCBjb25zdCBIYXNo
RW50cnkqLCBKU09iamVjdCogdGhpc09iamVjdCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICBKU19FWFBPUlREQVRBIHZvaWQgc2V0VXBTdGF0aWNG
dW5jdGlvblNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSGFzaEVudHJ5KiwgSlNPYmplY3QqIHRoaXNP
YmplY3QsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAK
ICAgICAvKioKICAgICAgKiBUaGlzIG1ldGhvZCBkb2VzIGl0IGFsbCAobG9va2luZyBpbiB0aGUg
aGFzaHRhYmxlLCBjaGVja2luZyBmb3IgZnVuY3Rpb24KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTnVtYmVyT2JqZWN0LmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJl
ck9iamVjdC5oCmluZGV4IGQzNTRiOWIuLmUzNDE1NzYgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTnVtYmVyT2JqZWN0LmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9O
dW1iZXJPYmplY3QuaApAQCAtMjUsNyArMjUsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotICAg
IGNsYXNzIE51bWJlck9iamVjdCA6IHB1YmxpYyBKU1dyYXBwZXJPYmplY3QgeworICAgIGNsYXNz
IEpTX0VYUE9SVERBVEEgTnVtYmVyT2JqZWN0IDogcHVibGljIEpTV3JhcHBlck9iamVjdCB7CiAg
ICAgcHVibGljOgogICAgICAgICBleHBsaWNpdCBOdW1iZXJPYmplY3QoUGFzc1JlZlB0cjxTdHJ1
Y3R1cmU+KTsKIApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90
b3R5cGUuaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmgKaW5kZXgg
Nzc5MGFlMC4uMjQ5OTcxMyAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmpl
Y3RQcm90b3R5cGUuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlw
ZS5oCkBAIC0zMCw3ICszMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBPYmplY3RQcm90
b3R5cGUoRXhlY1N0YXRlKiwgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBTdHJ1Y3R1cmUqIHByb3Rv
dHlwZUZ1bmN0aW9uU3RydWN0dXJlKTsKICAgICB9OwogCi0gICAgSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG9iamVjdFByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNWYWx1
ZSwgY29uc3QgQXJnTGlzdCYpOworICAgIEpTX0VYUE9SVERBVEEgSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG9iamVjdFByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNWYWx1
ZSwgY29uc3QgQXJnTGlzdCYpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oIGIvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oCmluZGV4IGI0MzgyZjQuLmYxMjg0NDQgMTAw
NjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuaAorKysg
Yi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmgKQEAgLTU4LDcgKzU4
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmVDaGFpbj4gbV9j
YWNoZWRQcm90b3R5cGVDaGFpbjsKICAgICB9OwogCi0gICAgY2xhc3MgUHJvcGVydHlOYW1lQXJy
YXkgeworICAgIGNsYXNzIEpTX0VYUE9SVERBVEEgUHJvcGVydHlOYW1lQXJyYXkgewogICAgIHB1
YmxpYzoKICAgICAgICAgdHlwZWRlZiBQcm9wZXJ0eU5hbWVBcnJheURhdGE6OmNvbnN0X2l0ZXJh
dG9yIGNvbnN0X2l0ZXJhdG9yOwogCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb3RvdHlwZUZ1bmN0aW9uLmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3RvdHlwZUZ1
bmN0aW9uLmgKaW5kZXggOTlhYjMyNy4uYzYyNjg4MSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm90b3R5cGVGdW5jdGlvbi5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJvdG90eXBlRnVuY3Rpb24uaApAQCAtMjksNyArMjksNyBAQAogCiBuYW1lc3BhY2UgSlND
IHsKIAotICAgIGNsYXNzIFByb3RvdHlwZUZ1bmN0aW9uIDogcHVibGljIEludGVybmFsRnVuY3Rp
b24geworICAgIGNsYXNzIEpTX0VYUE9SVERBVEEgUHJvdG90eXBlRnVuY3Rpb24gOiBwdWJsaWMg
SW50ZXJuYWxGdW5jdGlvbiB7CiAgICAgcHVibGljOgogICAgICAgICBQcm90b3R5cGVGdW5jdGlv
bihFeGVjU3RhdGUqLCBpbnQgbGVuZ3RoLCBjb25zdCBJZGVudGlmaWVyJiwgTmF0aXZlRnVuY3Rp
b24pOwogICAgICAgICBQcm90b3R5cGVGdW5jdGlvbihFeGVjU3RhdGUqLCBQYXNzUmVmUHRyPFN0
cnVjdHVyZT4sIGludCBsZW5ndGgsIGNvbnN0IElkZW50aWZpZXImLCBOYXRpdmVGdW5jdGlvbik7
CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oIGIvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHAuaAppbmRleCAyNGQ0MTk5Li44NjM0ODRlIDEwMDY0NAotLS0g
YS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBj
bGFzcyBKU0dsb2JhbERhdGE7CiAKLSAgICBjbGFzcyBSZWdFeHAgOiBwdWJsaWMgUmVmQ291bnRl
ZDxSZWdFeHA+IHsKKyAgICBjbGFzcyBKU19FWFBPUlREQVRBIFJlZ0V4cCA6IHB1YmxpYyBSZWZD
b3VudGVkPFJlZ0V4cD4gewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8
UmVnRXhwPiBjcmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBw
YXR0ZXJuKTsKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8UmVnRXhwPiBjcmVhdGUoSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBwYXR0ZXJuLCBjb25zdCBVU3RyaW5n
JiBmbGFncyk7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVj
dC5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaAppbmRleCBmYWM5OTc4
Li45ZWE5YWQ4IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVj
dC5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgKQEAgLTI2LDcg
KzI2LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLSAgICBjbGFzcyBSZWdFeHBPYmplY3QgOiBw
dWJsaWMgSlNPYmplY3QgeworICAgIGNsYXNzIEpTX0VYUE9SVERBVEEgUmVnRXhwT2JqZWN0IDog
cHVibGljIEpTT2JqZWN0IHsKICAgICBwdWJsaWM6CiAgICAgICAgIFJlZ0V4cE9iamVjdChQYXNz
UmVmUHRyPFN0cnVjdHVyZT4sIFBhc3NSZWZQdHI8UmVnRXhwPik7CiAgICAgICAgIHZpcnR1YWwg
flJlZ0V4cE9iamVjdCgpOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFs
bFN0cmluZ3MuaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmgKaW5kZXgg
ZjBkZDhkZi4uMGY2MDllYSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFs
bFN0cmluZ3MuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5oCkBA
IC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgU21hbGxTdHJpbmdz
U3RvcmFnZTsKIAotICAgIGNsYXNzIFNtYWxsU3RyaW5ncyA6IHB1YmxpYyBOb25jb3B5YWJsZSB7
CisgICAgY2xhc3MgSlNfRVhQT1JUREFUQSBTbWFsbFN0cmluZ3MgOiBwdWJsaWMgTm9uY29weWFi
bGUgewogICAgIHB1YmxpYzoKICAgICAgICAgU21hbGxTdHJpbmdzKCk7CiAgICAgICAgIH5TbWFs
bFN0cmluZ3MoKTsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2Jq
ZWN0LmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCmluZGV4IGVhM2Ew
NDUuLmJhNDlmYzEgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2Jq
ZWN0LmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaApAQCAtMjYs
NyArMjYsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotICAgIGNsYXNzIFN0cmluZ09iamVjdCA6
IHB1YmxpYyBKU1dyYXBwZXJPYmplY3QgeworICAgIGNsYXNzIEpTX0VYUE9SVERBVEEgU3RyaW5n
T2JqZWN0IDogcHVibGljIEpTV3JhcHBlck9iamVjdCB7CiAgICAgcHVibGljOgogICAgICAgICBT
dHJpbmdPYmplY3QoRXhlY1N0YXRlKiwgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+KTsKICAgICAgICAg
U3RyaW5nT2JqZWN0KEV4ZWNTdGF0ZSosIFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgY29uc3QgVVN0
cmluZyYpOwpAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdmlydHVh
bCB2b2lkIGdldFByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmKTsK
IAogICAgICAgICB2aXJ0dWFsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3QgeyBy
ZXR1cm4gJmluZm87IH0KLSAgICAgICAgc3RhdGljIGNvbnN0IEpTX0VYUE9SVERBVEEgQ2xhc3NJ
bmZvIGluZm87CisgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gaW5mbzsKIAogICAgICAg
ICBKU1N0cmluZyogaW50ZXJuYWxWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIGFzU3RyaW5nKEpTV3Jh
cHBlck9iamVjdDo6aW50ZXJuYWxWYWx1ZSgpKTt9CiAKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlLmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZS5oCmluZGV4IDg2Njk5OWQuLmM2YWQxMDAgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUu
aApAQCAtNDgsNyArNDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBQcm9wZXJ0eU5h
bWVBcnJheTsKICAgICBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheURhdGE7CiAKLSAgICBjbGFzcyBT
dHJ1Y3R1cmUgOiBwdWJsaWMgUmVmQ291bnRlZDxTdHJ1Y3R1cmU+IHsKKyAgICBjbGFzcyBKU19F
WFBPUlREQVRBIFN0cnVjdHVyZSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0cnVjdHVyZT4gewogICAg
IHB1YmxpYzoKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKICAgICAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8U3RydWN0dXJlPiBjcmVhdGUoSlNWYWx1ZSBwcm90b3R5cGUsIGNvbnN0IFR5cGVJbmZv
JiB0eXBlSW5mbykKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGltZW91dENo
ZWNrZXIuaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGltZW91dENoZWNrZXIuaAppbmRleCA3
YmZhNmQwLi4zZTVhMjgyIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RpbWVv
dXRDaGVja2VyLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UaW1lb3V0Q2hlY2tlci5o
CkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRXhlY1N0YXRl
OwogCi0gICAgY2xhc3MgVGltZW91dENoZWNrZXIgeworICAgIGNsYXNzIEpTX0VYUE9SVERBVEEg
VGltZW91dENoZWNrZXIgewogICAgIHB1YmxpYzoKICAgICAgICAgVGltZW91dENoZWNrZXIoKTsK
IApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nLmggYi9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuaAppbmRleCBkMDFiNzVkLi45NzVhYmZlIDEwMDY0NAot
LS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuaAorKysgYi9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1VTdHJpbmcuaApAQCAtNDEsOCArNDEsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICB1c2luZyBXVEY6OlBsYWNlbWVudE5ld0Fkb3B0OwogCiAgICAgY2xhc3MgSWRlbnRpZmllclRh
YmxlOwotICAKLSAgICBjbGFzcyBDU3RyaW5nIHsKKworICAgIGNsYXNzIEpTX0VYUE9SVERBVEEg
Q1N0cmluZyB7CiAgICAgcHVibGljOgogICAgICAgICBDU3RyaW5nKCkKICAgICAgICAgICAgIDog
bV9sZW5ndGgoMCkKQEAgLTczLDEzICs3MywxMyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIHR5
cGVkZWYgVmVjdG9yPGNoYXIsIDMyPiBDU3RyaW5nQnVmZmVyOwogCi0gICAgY2xhc3MgVVN0cmlu
ZyB7CisgICAgY2xhc3MgSlNfRVhQT1JUREFUQSBVU3RyaW5nIHsKICAgICAgICAgZnJpZW5kIGNs
YXNzIEpJVDsKIAogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBDcm9zc1RocmVhZFJlZkNv
dW50ZWQ8T3duRmFzdE1hbGxvY1B0cjxVQ2hhcj4gPiBTaGFyZWRVQ2hhcjsKICAgICAgICAgc3Ry
dWN0IEJhc2VTdHJpbmc7Ci0gICAgICAgIHN0cnVjdCBSZXAgOiBOb25jb3B5YWJsZSB7CisgICAg
ICAgIHN0cnVjdCBKU19FWFBPUlREQVRBIFJlcCA6IE5vbmNvcHlhYmxlIHsKICAgICAgICAgICAg
IGZyaWVuZCBjbGFzcyBKSVQ7CiAKICAgICAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlcD4g
Y3JlYXRlKFVDaGFyKiBidWZmZXIsIGludCBsZW5ndGgpCkBAIC0xODUsOCArMTg1LDggQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICAgICAgICAgIGZyaWVuZCBjbGFzcyBTbWFsbFN0cmluZ3NTdG9y
YWdlOwogICAgICAgICAgICAgZnJpZW5kIHZvaWQgaW5pdGlhbGl6ZVVTdHJpbmcoKTsKLSAgICAg
ICAgICAgIEpTX0VYUE9SVERBVEEgc3RhdGljIEJhc2VTdHJpbmcqIG51bGxCYXNlU3RyaW5nOwot
ICAgICAgICAgICAgSlNfRVhQT1JUREFUQSBzdGF0aWMgQmFzZVN0cmluZyogZW1wdHlCYXNlU3Ry
aW5nOworICAgICAgICAgICAgc3RhdGljIEJhc2VTdHJpbmcqIG51bGxCYXNlU3RyaW5nOworICAg
ICAgICAgICAgc3RhdGljIEJhc2VTdHJpbmcqIGVtcHR5QmFzZVN0cmluZzsKICAgICAgICAgfTsK
IAogCkBAIC00MzEsOSArNDMxLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVybiBV
U3RyaW5nKHJlc3VsdCA/IHJlc3VsdC5yZWxlYXNlKCkgOiBVU3RyaW5nOjpudWxsUmVwKCkpOwog
ICAgIH0KIAotICAgIGludCBjb21wYXJlKGNvbnN0IFVTdHJpbmcmLCBjb25zdCBVU3RyaW5nJik7
CisgICAgSlNfRVhQT1JUREFUQSBpbnQgY29tcGFyZShjb25zdCBVU3RyaW5nJiwgY29uc3QgVVN0
cmluZyYpOwogCi0gICAgYm9vbCBlcXVhbChjb25zdCBVU3RyaW5nOjpSZXAqLCBjb25zdCBVU3Ry
aW5nOjpSZXAqKTsKKyAgICBKU19FWFBPUlREQVRBIGJvb2wgZXF1YWwoY29uc3QgVVN0cmluZzo6
UmVwKiwgY29uc3QgVVN0cmluZzo6UmVwKik7CiAKICAgICBpbmxpbmUgUGFzc1JlZlB0cjxVU3Ry
aW5nOjpSZXA+IFVTdHJpbmc6OlJlcDo6Y3JlYXRlKFBhc3NSZWZQdHI8VVN0cmluZzo6UmVwPiBy
ZXAsIGludCBvZmZzZXQsIGludCBsZW5ndGgpCiAgICAgewpAQCAtNTQxLDEzICs1NDEsMTMgQEAg
bmFtZXNwYWNlIFdURiB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IERlZmF1bHRI
YXNoOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBTdHJIYXNoOwogCi0gICAgdGVt
cGxhdGU8PiBzdHJ1Y3QgU3RySGFzaDxKU0M6OlVTdHJpbmc6OlJlcCo+IHsKKyAgICB0ZW1wbGF0
ZTw+IHN0cnVjdCBKU19FWFBPUlREQVRBIFN0ckhhc2g8SlNDOjpVU3RyaW5nOjpSZXAqPiB7CiAg
ICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IEpTQzo6VVN0cmluZzo6UmVwKiBrZXkp
IHsgcmV0dXJuIGtleS0+aGFzaCgpOyB9CiAgICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0
IEpTQzo6VVN0cmluZzo6UmVwKiBhLCBjb25zdCBKU0M6OlVTdHJpbmc6OlJlcCogYikgeyByZXR1
cm4gSlNDOjplcXVhbChhLCBiKTsgfQogICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9D
b21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNlOwogICAgIH07CiAKLSAgICB0ZW1wbGF0ZTw+
IHN0cnVjdCBTdHJIYXNoPFJlZlB0cjxKU0M6OlVTdHJpbmc6OlJlcD4gPiA6IHB1YmxpYyBTdHJI
YXNoPEpTQzo6VVN0cmluZzo6UmVwKj4geworICAgIHRlbXBsYXRlPD4gc3RydWN0IEpTX0VYUE9S
VERBVEEgU3RySGFzaDxSZWZQdHI8SlNDOjpVU3RyaW5nOjpSZXA+ID4gOiBwdWJsaWMgU3RySGFz
aDxKU0M6OlVTdHJpbmc6OlJlcCo+IHsKICAgICAgICAgdXNpbmcgU3RySGFzaDxKU0M6OlVTdHJp
bmc6OlJlcCo+OjpoYXNoOwogICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBSZWZQ
dHI8SlNDOjpVU3RyaW5nOjpSZXA+JiBrZXkpIHsgcmV0dXJuIGtleS0+aGFzaCgpOyB9CiAgICAg
ICAgIHVzaW5nIFN0ckhhc2g8SlNDOjpVU3RyaW5nOjpSZXAqPjo6ZXF1YWw7CkBAIC01NTgsMTEg
KzU1OCwxMSBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2Fm
ZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKICAgICB9OwogCi0gICAgdGVtcGxh
dGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8SlNDOjpVU3RyaW5nOjpSZXAqPiB7CisgICAgdGVtcGxh
dGU8PiBzdHJ1Y3QgSlNfRVhQT1JUREFUQSBEZWZhdWx0SGFzaDxKU0M6OlVTdHJpbmc6OlJlcCo+
IHsKICAgICAgICAgdHlwZWRlZiBTdHJIYXNoPEpTQzo6VVN0cmluZzo6UmVwKj4gSGFzaDsKICAg
ICB9OwogCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8UmVmUHRyPEpTQzo6VVN0
cmluZzo6UmVwPiA+IHsKKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBKU19FWFBPUlREQVRBIERlZmF1
bHRIYXNoPFJlZlB0cjxKU0M6OlVTdHJpbmc6OlJlcD4gPiB7CiAgICAgICAgIHR5cGVkZWYgU3Ry
SGFzaDxSZWZQdHI8SlNDOjpVU3RyaW5nOjpSZXA+ID4gSGFzaDsKIAogICAgIH07CmRpZmYgLS1n
aXQgYS9KYXZhU2NyaXB0Q29yZS93dGYvQnl0ZUFycmF5LmggYi9KYXZhU2NyaXB0Q29yZS93dGYv
Qnl0ZUFycmF5LmgKaW5kZXggOTZlOWNjMi4uMDZkMTgxMCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlw
dENvcmUvd3RmL0J5dGVBcnJheS5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3d0Zi9CeXRlQXJyYXku
aApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVz
cGFjZSBXVEYgewotICAgIGNsYXNzIEJ5dGVBcnJheSA6IHB1YmxpYyBSZWZDb3VudGVkQmFzZSB7
CisgICAgY2xhc3MgSlNfRVhQT1JUREFUQSBCeXRlQXJyYXkgOiBwdWJsaWMgUmVmQ291bnRlZEJh
c2UgewogICAgIHB1YmxpYzoKICAgICAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1
cm4gbV9zaXplOyB9CiAKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3d0Zi9DdXJyZW50VGlt
ZS5oIGIvSmF2YVNjcmlwdENvcmUvd3RmL0N1cnJlbnRUaW1lLmgKaW5kZXggMzFmMWVjOC4uMThi
NTA1OCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvd3RmL0N1cnJlbnRUaW1lLmgKKysrIGIv
SmF2YVNjcmlwdENvcmUvd3RmL0N1cnJlbnRUaW1lLmgKQEAgLTM1LDEzICszNSwxMiBAQAogbmFt
ZXNwYWNlIFdURiB7CiAKICAgICAvLyBSZXR1cm5zIHRoZSBjdXJyZW50IHN5c3RlbSAoVVRDKSB0
aW1lIGluIHNlY29uZHMsIHN0YXJ0aW5nIEphbnVhcnkgMSwgMTk3MC4KLSAgICAvLyBQcmVjaXNp
b24gdmFyaWVzIGRlcGVuZGluZyBvbiBhIHBsYXRmb3JtIGJ1dCB1c3VhbGx5IGlzIGFzIGdvb2Qg
b3IgYmV0dGVyIAorICAgIC8vIFByZWNpc2lvbiB2YXJpZXMgZGVwZW5kaW5nIG9uIGEgcGxhdGZv
cm0gYnV0IHVzdWFsbHkgaXMgYXMgZ29vZCBvciBiZXR0ZXIKICAgICAvLyB0aGFuIGEgbWlsbGlz
ZWNvbmQuCi0gICAgZG91YmxlIGN1cnJlbnRUaW1lKCk7CisgICAgSlNfRVhQT1JUREFUQSBkb3Vi
bGUgY3VycmVudFRpbWUoKTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6Y3Vy
cmVudFRpbWU7CiAKICNlbmRpZiAvLyBDdXJyZW50VGltZV9oCi0KZGlmZiAtLWdpdCBhL0phdmFT
Y3JpcHRDb3JlL3d0Zi9GYXN0TWFsbG9jLmggYi9KYXZhU2NyaXB0Q29yZS93dGYvRmFzdE1hbGxv
Yy5oCmluZGV4IDYxZWJlMzIuLmYwNjQzZmQgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3d0
Zi9GYXN0TWFsbG9jLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvd3RmL0Zhc3RNYWxsb2MuaApAQCAt
MjgsMTggKzI4LDE4IEBACiBuYW1lc3BhY2UgV1RGIHsKIAogICAgIC8vIFRoZXNlIGZ1bmN0aW9u
cyBjYWxsIENSQVNIKCkgaWYgYW4gYWxsb2NhdGlvbiBmYWlscy4KLSAgICB2b2lkKiBmYXN0TWFs
bG9jKHNpemVfdCBuKTsKLSAgICB2b2lkKiBmYXN0WmVyb2VkTWFsbG9jKHNpemVfdCBuKTsKLSAg
ICB2b2lkKiBmYXN0Q2FsbG9jKHNpemVfdCBuX2VsZW1lbnRzLCBzaXplX3QgZWxlbWVudF9zaXpl
KTsKLSAgICB2b2lkKiBmYXN0UmVhbGxvYyh2b2lkKiBwLCBzaXplX3Qgbik7CisgICAgSlNfRVhQ
T1JUREFUQSB2b2lkKiBmYXN0TWFsbG9jKHNpemVfdCBuKTsKKyAgICBKU19FWFBPUlREQVRBIHZv
aWQqIGZhc3RaZXJvZWRNYWxsb2Moc2l6ZV90IG4pOworICAgIEpTX0VYUE9SVERBVEEgdm9pZCog
ZmFzdENhbGxvYyhzaXplX3Qgbl9lbGVtZW50cywgc2l6ZV90IGVsZW1lbnRfc2l6ZSk7CisgICAg
SlNfRVhQT1JUREFUQSB2b2lkKiBmYXN0UmVhbGxvYyh2b2lkKiBwLCBzaXplX3Qgbik7CiAKICAg
ICAvLyBUaGVzZSBmdW5jdGlvbnMgcmV0dXJuIE5VTEwgaWYgYW4gYWxsb2NhdGlvbiBmYWlscy4K
LSAgICB2b2lkKiB0cnlGYXN0TWFsbG9jKHNpemVfdCBuKTsKLSAgICB2b2lkKiB0cnlGYXN0WmVy
b2VkTWFsbG9jKHNpemVfdCBuKTsKLSAgICB2b2lkKiB0cnlGYXN0Q2FsbG9jKHNpemVfdCBuX2Vs
ZW1lbnRzLCBzaXplX3QgZWxlbWVudF9zaXplKTsKLSAgICB2b2lkKiB0cnlGYXN0UmVhbGxvYyh2
b2lkKiBwLCBzaXplX3Qgbik7CisgICAgSlNfRVhQT1JUREFUQSB2b2lkKiB0cnlGYXN0TWFsbG9j
KHNpemVfdCBuKTsKKyAgICBKU19FWFBPUlREQVRBIHZvaWQqIHRyeUZhc3RaZXJvZWRNYWxsb2Mo
c2l6ZV90IG4pOworICAgIEpTX0VYUE9SVERBVEEgdm9pZCogdHJ5RmFzdENhbGxvYyhzaXplX3Qg
bl9lbGVtZW50cywgc2l6ZV90IGVsZW1lbnRfc2l6ZSk7CisgICAgSlNfRVhQT1JUREFUQSB2b2lk
KiB0cnlGYXN0UmVhbGxvYyh2b2lkKiBwLCBzaXplX3Qgbik7CiAKLSAgICB2b2lkIGZhc3RGcmVl
KHZvaWQqIHApOworICAgIEpTX0VYUE9SVERBVEEgdm9pZCBmYXN0RnJlZSh2b2lkKiBwKTsKIAog
I2lmbmRlZiBOREVCVUcgICAgCiAgICAgdm9pZCBmYXN0TWFsbG9jRm9yYmlkKCk7CmRpZmYgLS1n
aXQgYS9KYXZhU2NyaXB0Q29yZS93dGYvTWFpblRocmVhZC5oIGIvSmF2YVNjcmlwdENvcmUvd3Rm
L01haW5UaHJlYWQuaAppbmRleCAwMWNlODA0Li44YTRlMzNmIDEwMDY0NAotLS0gYS9KYXZhU2Ny
aXB0Q29yZS93dGYvTWFpblRocmVhZC5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3d0Zi9NYWluVGhy
ZWFkLmgKQEAgLTM2LDEyICszNiwxMiBAQCBjbGFzcyBNdXRleDsKIAogdHlwZWRlZiB2b2lkIE1h
aW5UaHJlYWRGdW5jdGlvbih2b2lkKik7CiAKLXZvaWQgY2FsbE9uTWFpblRocmVhZChNYWluVGhy
ZWFkRnVuY3Rpb24qLCB2b2lkKiBjb250ZXh0KTsKK0pTX0VYUE9SVERBVEEgdm9pZCBjYWxsT25N
YWluVGhyZWFkKE1haW5UaHJlYWRGdW5jdGlvbiosIHZvaWQqIGNvbnRleHQpOwogCi12b2lkIHNl
dE1haW5UaHJlYWRDYWxsYmFja3NQYXVzZWQoYm9vbCBwYXVzZWQpOworSlNfRVhQT1JUREFUQSB2
b2lkIHNldE1haW5UaHJlYWRDYWxsYmFja3NQYXVzZWQoYm9vbCBwYXVzZWQpOwogCiAvLyBNdXN0
IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZCAoRGFyd2luIGlzIGFuIGV4Y2VwdGlvbiB0
byB0aGlzIHJ1bGUpLgotdm9pZCBpbml0aWFsaXplTWFpblRocmVhZCgpOworSlNfRVhQT1JUREFU
QSB2b2lkIGluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAKIC8vIFRoZXNlIGZ1bmN0aW9ucyBhcmUg
aW50ZXJuYWwgdG8gdGhlIGNhbGxPbk1haW5UaHJlYWQgaW1wbGVtZW50YXRpb24uCiB2b2lkIGlu
aXRpYWxpemVNYWluVGhyZWFkUGxhdGZvcm0oKTsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3Jl
L3d0Zi9SYW5kb21OdW1iZXIuaCBiL0phdmFTY3JpcHRDb3JlL3d0Zi9SYW5kb21OdW1iZXIuaApp
bmRleCBmZTE2ODdjLi5jZjA4MWE3IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS93dGYvUmFu
ZG9tTnVtYmVyLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvd3RmL1JhbmRvbU51bWJlci5oCkBAIC0z
MCwxMiArMzAsMTIgQEAgbmFtZXNwYWNlIFdURiB7CiAKICAgICAvLyBSZXR1cm5zIGEgcHNldWRv
LXJhbmRvbSBudW1iZXIgaW4gdGhlIHJhbmdlIFswLCAxKSwgYXR0ZW1wdHMgdG8gYmUKICAgICAv
LyBjcnlwdG9ncmFwaGljYWxseSBzZWN1cmUgaWYgcG9zc2libGUgb24gdGhlIHRhcmdldCBwbGF0
Zm9ybQotICAgIGRvdWJsZSByYW5kb21OdW1iZXIoKTsKKyAgICBKU19FWFBPUlREQVRBIGRvdWJs
ZSByYW5kb21OdW1iZXIoKTsKIAogICAgIC8vIFJldHVybnMgYSBwc2V1ZG8tcmFuZG9tIG51bWJl
ciBpbiB0aGUgcmFuZ2UgWzAsIDEpLCBhdHRlbXB0cyB0bwogICAgIC8vIHByb2R1Y2UgYSByZWFz
b25hYmxlICJyYW5kb20iIG51bWJlciBmYXN0LgogICAgIC8vIFdlIG9ubHkgbmVlZCB0aGlzIGJl
Y2F1c2UgcmFuZF9zIGlzIHNvIHNsb3cgb24gd2luZG93cy4KLSAgICBkb3VibGUgd2Vha1JhbmRv
bU51bWJlcigpOworICAgIEpTX0VYUE9SVERBVEEgZG91YmxlIHdlYWtSYW5kb21OdW1iZXIoKTsK
IAogfQogCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nLmggYi9KYXZh
U2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nLmgKaW5kZXggNjU3ODE1MS4uYjVmZTQwYSAxMDA2NDQK
LS0tIGEvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZy5oCisrKyBiL0phdmFTY3JpcHRDb3Jl
L3d0Zi9UaHJlYWRpbmcuaApAQCAtMTEwLDE5ICsxMTAsMTkgQEAgdHlwZWRlZiB2b2lkKiAoKlRo
cmVhZEZ1bmN0aW9uKSh2b2lkKiBhcmd1bWVudCk7CiAKIC8vIFJldHVybnMgMCBpZiB0aHJlYWQg
Y3JlYXRpb24gZmFpbGVkLgogLy8gVGhlIHRocmVhZCBuYW1lIG11c3QgYmUgYSBsaXRlcmFsIHNp
bmNlIG9uIHNvbWUgcGxhdGZvcm1zIGl0J3MgcGFzc2VkIGluIHRvIHRoZSB0aHJlYWQuCi1UaHJl
YWRJZGVudGlmaWVyIGNyZWF0ZVRocmVhZChUaHJlYWRGdW5jdGlvbiwgdm9pZCosIGNvbnN0IGNo
YXIqIHRocmVhZE5hbWUpOworSlNfRVhQT1JUREFUQSBUaHJlYWRJZGVudGlmaWVyIGNyZWF0ZVRo
cmVhZChUaHJlYWRGdW5jdGlvbiwgdm9pZCosIGNvbnN0IGNoYXIqIHRocmVhZE5hbWUpOwogCiAv
LyBJbnRlcm5hbCBwbGF0Zm9ybS1zcGVjaWZpYyBjcmVhdGVUaHJlYWQgaW1wbGVtZW50YXRpb24u
Ci1UaHJlYWRJZGVudGlmaWVyIGNyZWF0ZVRocmVhZEludGVybmFsKFRocmVhZEZ1bmN0aW9uLCB2
b2lkKiwgY29uc3QgY2hhciogdGhyZWFkTmFtZSk7CitKU19FWFBPUlREQVRBIFRocmVhZElkZW50
aWZpZXIgY3JlYXRlVGhyZWFkSW50ZXJuYWwoVGhyZWFkRnVuY3Rpb24sIHZvaWQqLCBjb25zdCBj
aGFyKiB0aHJlYWROYW1lKTsKIAogLy8gQ2FsbGVkIGluIHRoZSB0aHJlYWQgZHVyaW5nIGluaXRp
YWxpemF0aW9uLgogLy8gSGVscGZ1bCBmb3IgcGxhdGZvcm1zIHdoZXJlIHRoZSB0aHJlYWQgbmFt
ZSBtdXN0IGJlIHNldCBmcm9tIHdpdGhpbiB0aGUgdGhyZWFkLgotdm9pZCBzZXRUaHJlYWROYW1l
SW50ZXJuYWwoY29uc3QgY2hhciogdGhyZWFkTmFtZSk7CitKU19FWFBPUlREQVRBIHZvaWQgc2V0
VGhyZWFkTmFtZUludGVybmFsKGNvbnN0IGNoYXIqIHRocmVhZE5hbWUpOwogCi1UaHJlYWRJZGVu
dGlmaWVyIGN1cnJlbnRUaHJlYWQoKTsKLWJvb2wgaXNNYWluVGhyZWFkKCk7Ci1pbnQgd2FpdEZv
clRocmVhZENvbXBsZXRpb24oVGhyZWFkSWRlbnRpZmllciwgdm9pZCoqKTsKLXZvaWQgZGV0YWNo
VGhyZWFkKFRocmVhZElkZW50aWZpZXIpOworSlNfRVhQT1JUREFUQSBUaHJlYWRJZGVudGlmaWVy
IGN1cnJlbnRUaHJlYWQoKTsKK0pTX0VYUE9SVERBVEEgYm9vbCBpc01haW5UaHJlYWQoKTsKK0pT
X0VYUE9SVERBVEEgaW50IHdhaXRGb3JUaHJlYWRDb21wbGV0aW9uKFRocmVhZElkZW50aWZpZXIs
IHZvaWQqKik7CitKU19FWFBPUlREQVRBIHZvaWQgZGV0YWNoVGhyZWFkKFRocmVhZElkZW50aWZp
ZXIpOwogCiAjaWYgVVNFKFBUSFJFQURTKQogdHlwZWRlZiBwdGhyZWFkX211dGV4X3QgUGxhdGZv
cm1NdXRleDsKQEAgLTE1OSw3ICsxNTksNyBAQCB0eXBlZGVmIHZvaWQqIFBsYXRmb3JtUmVhZFdy
aXRlTG9jazsKIHR5cGVkZWYgdm9pZCogUGxhdGZvcm1Db25kaXRpb247CiAjZW5kaWYKICAgICAK
LWNsYXNzIE11dGV4IDogcHVibGljIE5vbmNvcHlhYmxlIHsKK2NsYXNzIEpTX0VYUE9SVERBVEEg
TXV0ZXggOiBwdWJsaWMgTm9uY29weWFibGUgewogcHVibGljOgogICAgIE11dGV4KCk7CiAgICAg
fk11dGV4KCk7CkBAIC0xNzYsNyArMTc2LDcgQEAgcHJpdmF0ZToKIAogdHlwZWRlZiBMb2NrZXI8
TXV0ZXg+IE11dGV4TG9ja2VyOwogCi1jbGFzcyBSZWFkV3JpdGVMb2NrIDogcHVibGljIE5vbmNv
cHlhYmxlIHsKK2NsYXNzIEpTX0VYUE9SVERBVEEgUmVhZFdyaXRlTG9jayA6IHB1YmxpYyBOb25j
b3B5YWJsZSB7CiBwdWJsaWM6CiAgICAgUmVhZFdyaXRlTG9jaygpOwogICAgIH5SZWFkV3JpdGVM
b2NrKCk7CkBAIC0zMTAsMTAgKzMxMCwxMCBAQCBwdWJsaWM6CiAKIC8vIFRoaXMgZnVuY3Rpb24g
bXVzdCBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQuIEl0IGlzIHNhZmUgdG8gY2FsbCBp
dCByZXBlYXRlZGx5LgogLy8gRGFyd2luIGlzIGFuIGV4Y2VwdGlvbiB0byB0aGlzIHJ1bGU6IGl0
IGlzIE9LIHRvIGNhbGwgaXQgZnJvbSBhbnkgdGhyZWFkLCB0aGUgb25seSByZXF1aXJlbWVudCBp
cyB0aGF0IHRoZSBjYWxscyBhcmUgbm90IHJlZW50cmFudC4KLXZvaWQgaW5pdGlhbGl6ZVRocmVh
ZGluZygpOworSlNfRVhQT1JUREFUQSB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKTsKIAotdm9p
ZCBsb2NrQXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljTXV0ZXgoKTsKLXZvaWQgdW5sb2NrQXRv
bWljYWxseUluaXRpYWxpemVkU3RhdGljTXV0ZXgoKTsKK0pTX0VYUE9SVERBVEEgdm9pZCBsb2Nr
QXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljTXV0ZXgoKTsKK0pTX0VYUE9SVERBVEEgdm9pZCB1
bmxvY2tBdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleCgpOwogCiB9IC8vIG5hbWVzcGFj
ZSBXVEYKIApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvd3RmL2R0b2EuaCBiL0phdmFTY3Jp
cHRDb3JlL3d0Zi9kdG9hLmgKaW5kZXggY2JlYzdjNy4uY2U2MjgzOCAxMDA2NDQKLS0tIGEvSmF2
YVNjcmlwdENvcmUvd3RmL2R0b2EuaAorKysgYi9KYXZhU2NyaXB0Q29yZS93dGYvZHRvYS5oCkBA
IC0yOSw4ICsyOSw4IEBAIG5hbWVzcGFjZSBXVEYgewogCiAgICAgZXh0ZXJuIFdURjo6TXV0ZXgq
IHNfZHRvYVA1TXV0ZXg7CiAKLSAgICBkb3VibGUgc3RydG9kKGNvbnN0IGNoYXIqIHMwMCwgY2hh
cioqIHNlKTsKLSAgICB2b2lkIGR0b2EoY2hhciogcmVzdWx0LCBkb3VibGUgZCwgaW50IG5kaWdp
dHMsIGludCogZGVjcHQsIGludCogc2lnbiwgY2hhcioqIHJ2ZSk7CisgICAgSlNfRVhQT1JUREFU
QSBkb3VibGUgc3RydG9kKGNvbnN0IGNoYXIqIHMwMCwgY2hhcioqIHNlKTsKKyAgICBKU19FWFBP
UlREQVRBIHZvaWQgZHRvYShjaGFyKiByZXN1bHQsIGRvdWJsZSBkLCBpbnQgbmRpZ2l0cywgaW50
KiBkZWNwdCwgaW50KiBzaWduLCBjaGFyKiogcnZlKTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAK
ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3d0Zi91bmljb2RlL1VURjguY3BwIGIvSmF2YVNj
cmlwdENvcmUvd3RmL3VuaWNvZGUvVVRGOC5jcHAKaW5kZXggOWU3MTNmZS4uMjFkNTg1NiAxMDA2
NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUvVVRGOC5jcHAKKysrIGIvSmF2YVNj
cmlwdENvcmUvd3RmL3VuaWNvZGUvVVRGOC5jcHAKQEAgLTIzLDYgKzIzLDcgQEAKICAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAogICovCiAKKyNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJVVEY4LmgiCiAK
IG5hbWVzcGFjZSBXVEYgewpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUv
VVRGOC5oIGIvSmF2YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUvVVRGOC5oCmluZGV4IGE1ZWQ5M2Uu
LmRlMjYxMmEgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3d0Zi91bmljb2RlL1VURjguaAor
KysgYi9KYXZhU2NyaXB0Q29yZS93dGYvdW5pY29kZS9VVEY4LmgKQEAgLTM0LDE0ICszNCwxNCBA
QCBuYW1lc3BhY2UgV1RGIHsKICAgICAvLyBHaXZlbiBhIGZpcnN0IGJ5dGUsIGdpdmVzIHRoZSBs
ZW5ndGggb2YgdGhlIFVURi04IHNlcXVlbmNlIGl0IGJlZ2lucy4KICAgICAvLyBSZXR1cm5zIDAg
Zm9yIGJ5dGVzIHRoYXQgYXJlIG5vdCBsZWdhbCBzdGFydHMgb2YgVVRGLTggc2VxdWVuY2VzLgog
ICAgIC8vIE9ubHkgYWxsb3dzIHNlcXVlbmNlcyBvZiB1cCB0byA0IGJ5dGVzLCBzaW5jZSB0aGF0
IHdvcmtzIGZvciBhbGwgVW5pY29kZSBjaGFyYWN0ZXJzIChVLTAwMDAwMDAwIHRvIFUtMDAxMEZG
RkYpLgotICAgIGludCBVVEY4U2VxdWVuY2VMZW5ndGgoY2hhcik7CisgICAgSlNfRVhQT1JUREFU
QSBpbnQgVVRGOFNlcXVlbmNlTGVuZ3RoKGNoYXIpOwogCiAgICAgLy8gVGFrZXMgYSBudWxsLXRl
cm1pbmF0ZWQgQy1zdHlsZSBzdHJpbmcgd2l0aCBhIFVURi04IHNlcXVlbmNlIGluIGl0IGFuZCBj
b252ZXJ0cyBpdCB0byBhIGNoYXJhY3Rlci4KICAgICAvLyBPbmx5IGFsbG93cyBVbmljb2RlIGNo
YXJhY3RlcnMgKFUtMDAwMDAwMDAgdG8gVS0wMDEwRkZGRikuCiAgICAgLy8gUmV0dXJucyAtMSBp
ZiB0aGUgc2VxdWVuY2UgaXMgbm90IHZhbGlkIChpbmNsdWRpbmcgcHJlc2VuY2Ugb2YgZXh0cmEg
Ynl0ZXMpLgotICAgIGludCBkZWNvZGVVVEY4U2VxdWVuY2UoY29uc3QgY2hhciopOworICAgIEpT
X0VYUE9SVERBVEEgaW50IGRlY29kZVVURjhTZXF1ZW5jZShjb25zdCBjaGFyKik7CiAKLSAgICB0
eXBlZGVmIGVudW0geworICAgIHR5cGVkZWYgZW51bSBKU19FWFBPUlREQVRBIHsKICAgICAgICAg
ICAgIGNvbnZlcnNpb25PSywgICAgICAgLy8gY29udmVyc2lvbiBzdWNjZXNzZnVsCiAgICAgICAg
ICAgICBzb3VyY2VFeGhhdXN0ZWQsICAgIC8vIHBhcnRpYWwgY2hhcmFjdGVyIGluIHNvdXJjZSwg
YnV0IGhpdCBlbmQKICAgICAgICAgICAgIHRhcmdldEV4aGF1c3RlZCwgICAgLy8gaW5zdWZmLiBy
b29tIGluIHRhcmdldCBmb3IgY29udmVyc2lvbgpAQCAtNjIsMTIgKzYyLDEyIEBAIG5hbWVzcGFj
ZSBXVEYgewogICAgIC8vIHRvIHRoZSByZXBsYWNlbWVudCBjaGFyYWN0ZXI7IG90aGVyd2lzZSAo
d2hlbiB0aGUgZmxhZyBpcyBzZXQgdG8gc3RyaWN0KQogICAgIC8vIHRoZXkgY29uc3RpdHV0ZSBh
biBlcnJvci4KIAotICAgIENvbnZlcnNpb25SZXN1bHQgY29udmVydFVURjhUb1VURjE2KAotICAg
ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiogc291cmNlU3RhcnQsIGNvbnN0IGNoYXIqIHNv
dXJjZUVuZCwgCisgICAgSlNfRVhQT1JUREFUQSBDb252ZXJzaW9uUmVzdWx0IGNvbnZlcnRVVEY4
VG9VVEYxNigKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhcioqIHNvdXJjZVN0YXJ0LCBj
b25zdCBjaGFyKiBzb3VyY2VFbmQsCiAgICAgICAgICAgICAgICAgICAgIFVDaGFyKiogdGFyZ2V0
U3RhcnQsIFVDaGFyKiB0YXJnZXRFbmQsIGJvb2wgc3RyaWN0ID0gdHJ1ZSk7CiAKLSAgICBDb252
ZXJzaW9uUmVzdWx0IGNvbnZlcnRVVEYxNlRvVVRGOCgKLSAgICAgICAgICAgICAgICAgICAgY29u
c3QgVUNoYXIqKiBzb3VyY2VTdGFydCwgY29uc3QgVUNoYXIqIHNvdXJjZUVuZCwgCisgICAgSlNf
RVhQT1JUREFUQSBDb252ZXJzaW9uUmVzdWx0IGNvbnZlcnRVVEYxNlRvVVRGOCgKKyAgICAgICAg
ICAgICAgICAgICAgY29uc3QgVUNoYXIqKiBzb3VyY2VTdGFydCwgY29uc3QgVUNoYXIqIHNvdXJj
ZUVuZCwKICAgICAgICAgICAgICAgICAgICAgY2hhcioqIHRhcmdldFN0YXJ0LCBjaGFyKiB0YXJn
ZXRFbmQsIGJvb2wgc3RyaWN0ID0gdHJ1ZSk7CiAgIH0KIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTMwZDVlYi4uMGVhMTdmNSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAwOS0wNy0yMiAgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4gIDxrZW5u
ZXRoLmNocmlzdGlhbnNlbkBvcGVuYm9zc2Eub3JnPiwgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5o
YXVzbWFubkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgRm9yIHRoZSBRdCBidWlsZCwgbGluayBKYXZhU2NyaXB0Q29yZSBhcyBzaGFy
ZWQgbGlicmFyeS4KKworICAgICAgICBEaXNhYmxlIGJvZ3VzIERMTCBsaW5rYWdlIHdhcm5pbmdz
IHdpdGggTVNWQy4KKworICAgICAgICBEZWZpbmUgSlNfRVhQT1JUREFUQSBhbmQgV0VCS0lUX0VY
UE9SVERBVEEgZm9yIGdjYywgYW5kIGF2b2lkIGRlZmluaW5nCisgICAgICAgIEpTX0VYUE9SVERB
VEEgdG8gZGxsZXhwb3J0IHdpdGggTVNWQyB3aGVuIGJ1aWxkaW5nIHRoZSBRVE1vdmllIHRhcmdl
dCwKKyAgICAgICAgYmVjYXVzZSBpdCBsaW5rcyBzdGF0aWNhbGx5IGFnYWluc3QgV1RGLiBJdCBp
cyBub3QgcG9zc2libGUgdG8gdXNlCisgICAgICAgIGRsbGV4cG9ydCB0b2dldGhlciB3aXRoIHN5
bWJvbHMgZnJvbSBhIHN0YXRpYyBsaWJyYXJ5LgorCisgICAgICAgICogV2ViQ29yZS5wcm86IExp
bmsgSlNDIGFzIHNoYXJlZCBsaWJyYXJ5LgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qOiBEaXNhYmxlIGJvZ3VzIERMTCBsaW5rYWdlIHdhcm5pbmcuCisgICAgICAgICog
Y29uZmlnLmg6IFR3ZWFrIGZvciBnY2MgYW5kIE1TVkMuCisKIDIwMDktMDctMjIgIEFkYW0gTGFu
Z2xleSAgPGFnbEBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZpc2hl
ci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9XZWJDb3JlL1dlYkNvcmUucHJv
CmluZGV4IDAwMjI0MzkuLmM3MDA0MTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5wcm8K
KysrIGIvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtMTY2LDYgKzE2NiwzNSBAQCBDT05GSUcoY29t
cHV0ZV9kZWZhdWx0cykgewogICAgIGVycm9yKCJEb25lIGNvbXB1dGluZyBkZWZhdWx0cyIpCiB9
CiAKK2xpbnV4LWcrKyogeworCisgICAgSU5DTFVERVBBVEggKz0gXAorICAgICAgICAkJFBXRC8g
XAorICAgICAgICAkJFBXRC8uLiBcCisgICAgICAgICQkUFdELy4uL0phdmFTY3JpcHRDb3JlIFwK
KyAgICAgICAgJCRQV0QvLi4vSmF2YVNjcmlwdENvcmUvQVBJIFwKKyAgICAgICAgJCRQV0QvLi4v
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyIFwKKyAgICAgICAgJCRQV0QvLi4vSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUgXAorICAgICAgICAkJFBXRC8uLi9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIgXAorICAgICAgICAkJFBXRC8uLi9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlciBcCisgICAgICAg
ICQkUFdELy4uL0phdmFTY3JpcHRDb3JlL0ZvcndhcmRpbmdIZWFkZXJzIFwKKyAgICAgICAgJCRQ
V0QvLi4vSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIgXAorICAgICAgICAkJFBXRC8uLi9KYXZh
U2NyaXB0Q29yZS9qaXQgXAorICAgICAgICAkJFBXRC8uLi9KYXZhU2NyaXB0Q29yZS9wYXJzZXIg
XAorICAgICAgICAkJFBXRC8uLi9KYXZhU2NyaXB0Q29yZS9wcm9maWxlciBcCisgICAgICAgICQk
UFdELy4uL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUgXAorICAgICAgICAkJFBXRC8uLi9KYXZhU2Ny
aXB0Q29yZS93cmVjIFwKKyAgICAgICAgJCRQV0QvLi4vSmF2YVNjcmlwdENvcmUvd3RmIFwKKyAg
ICAgICAgJCRQV0QvLi4vSmF2YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUgXAorICAgICAgICAkJFBX
RC8uLi9KYXZhU2NyaXB0Q29yZS95YXJyCisKKyAgICBMSUJTICs9IC1MJCRERVNURElSIC1sUXRK
YXZhU2NyaXB0Q29yZQorICAgIFFNQUtFX1JQQVRIRElSICs9ICQkREVTVERJUgorCit9IGVsc2Ug
eworICAgIGluY2x1ZGUoJCRQV0QvLi4vSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUucHJp
KQorfQorCiBSRVNPVVJDRVMgKz0gXAogICAgICQkUFdELy4uL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9XZWJLaXQucXJjIFwKICAgICAkJFBXRC8uLi9XZWJDb3JlL1dlYkNvcmUucXJjCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCA3NzcyYmI4Li42NzE5YTZkIDEw
MDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTM5LDYgKzM5LDcgQEAKIAkJ
CTxUb29sDQogCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQogCQkJCUFkZGl0aW9uYWxJbmNs
dWRlRGlyZWN0b3JpZXM9IiINCisJCQkJRGlzYWJsZVNwZWNpZmljV2FybmluZ3M9IjQyNTE7NDI3
MyINCiAJCQkJRm9yY2VkSW5jbHVkZUZpbGVzPSIiDQogCQkJLz4NCiAJCQk8VG9vbA0KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvY29uZmlnLmggYi9XZWJDb3JlL2NvbmZpZy5oCmluZGV4IDQxMWRkYjEu
LmE4ZTJjYjAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY29uZmlnLmgKKysrIGIvV2ViQ29yZS9jb25m
aWcuaApAQCAtMjQsMjAgKzI0LDI1IEBACiAKICNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KIAot
I2lmIFBMQVRGT1JNKFdJTl9PUykgJiYgIWRlZmluZWQoQlVJTERJTkdfV1hfXykgJiYgIUNPTVBJ
TEVSKEdDQykKLSNpZiBkZWZpbmVkKEJVSUxESU5HX0phdmFTY3JpcHRDb3JlKSB8fCBkZWZpbmVk
KEJVSUxESU5HX1dURikKLSNkZWZpbmUgSlNfRVhQT1JUREFUQSBfX2RlY2xzcGVjKGRsbGV4cG9y
dCkKKyN1bmRlZiBKU19FWFBPUlREQVRBCisjdW5kZWYgV0VCS0lUX0VYUE9SVERBVEEKKyNpZiBD
T01QSUxFUihHQ0MpCisgICAgI2RlZmluZSBKU19FWFBPUlREQVRBIF9fYXR0cmlidXRlX18oKHZp
c2liaWxpdHkoImRlZmF1bHQiKSkpCisgICAgI2RlZmluZSBXRUJLSVRfRVhQT1JUREFUQSBfX2F0
dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKQorI2VsaWYgUExBVEZPUk0oV0lOX09T
KSAmJiAhZGVmaW5lZChCVUlMRElOR19XWF9fKSAmJiAhZGVmaW5lZChCVUlMRElOR19RVE1vdmll
V2luKQorICAgICNpZiBkZWZpbmVkKEJVSUxESU5HX0phdmFTY3JpcHRDb3JlKSB8fCBkZWZpbmVk
KEJVSUxESU5HX1dURikKKyAgICAgICAgI2RlZmluZSBKU19FWFBPUlREQVRBIF9fZGVjbHNwZWMo
ZGxsZXhwb3J0KQorICAgICNlbHNlCisgICAgICAgICNkZWZpbmUgSlNfRVhQT1JUREFUQSBfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkKKyAgICAjZW5kaWYKKyAgICAjaWYgZGVmaW5lZChCVUlMRElOR19X
ZWJDb3JlKSB8fCBkZWZpbmVkKEJVSUxESU5HX1dlYktpdCkKKyAgICAgICAgI2RlZmluZSBXRUJL
SVRfRVhQT1JUREFUQSBfX2RlY2xzcGVjKGRsbGV4cG9ydCkKKyAgICAjZWxzZQorICAgICAgICAj
ZGVmaW5lIFdFQktJVF9FWFBPUlREQVRBIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQorICAgICNlbmRp
ZgogI2Vsc2UKLSNkZWZpbmUgSlNfRVhQT1JUREFUQSBfX2RlY2xzcGVjKGRsbGltcG9ydCkKLSNl
bmRpZgotI2lmIGRlZmluZWQoQlVJTERJTkdfV2ViQ29yZSkgfHwgZGVmaW5lZChCVUlMRElOR19X
ZWJLaXQpCi0jZGVmaW5lIFdFQktJVF9FWFBPUlREQVRBIF9fZGVjbHNwZWMoZGxsZXhwb3J0KQot
I2Vsc2UKLSNkZWZpbmUgV0VCS0lUX0VYUE9SVERBVEEgX19kZWNsc3BlYyhkbGxpbXBvcnQpCi0j
ZW5kaWYKLSNlbHNlCi0jZGVmaW5lIEpTX0VYUE9SVERBVEEKLSNkZWZpbmUgV0VCS0lUX0VYUE9S
VERBVEEKKyAgICAjZGVmaW5lIEpTX0VYUE9SVERBVEEKKyAgICAjZGVmaW5lIFdFQktJVF9FWFBP
UlREQVRBCiAjZW5kaWYKIAogI2RlZmluZSBNT0JJTEUgMApkaWZmIC0tZ2l0IGEvV2ViS2l0LnBy
byBiL1dlYktpdC5wcm8KaW5kZXggMjFkM2RhYS4uZWIxZjEzNSAxMDA2NDQKLS0tIGEvV2ViS2l0
LnBybworKysgYi9XZWJLaXQucHJvCkBAIC0xLDYgKzEsOCBAQAogVEVNUExBVEUgPSBzdWJkaXJz
CiBDT05GSUcgKz0gb3JkZXJlZAogCitsaW51eC1nKys6IFNVQkRJUlMgKz0gSmF2YVNjcmlwdENv
cmUKKwogU1VCRElSUyArPSBcCiAgICAgICAgIFdlYkNvcmUgXAogICAgICAgICBKYXZhU2NyaXB0
Q29yZS9qc2MucHJvIFwKZGlmZiAtLWdpdCBhL1dlYktpdC9jZi9DaGFuZ2VMb2cgYi9XZWJLaXQv
Y2YvQ2hhbmdlTG9nCmluZGV4IDI3Y2FmMWMuLjM4NTNkYjggMTAwNjQ0Ci0tLSBhL1dlYktpdC9j
Zi9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2NmL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisy
MDA5LTA3LTIyICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggY29tcGls
YXRpb24gb24gdGhlIE1hYywgZG9uJ3QgcmUtZGVmaW5lIEpTX0VYUE9SVERBVEEgZW1wdHkgYnV0
CisgICAgICAgIHJlLXVzZSB0aGUgZGVmaW5pdGlvbiBmcm9tIFdlYktpdFByZWZpeC5oLgorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwOgorCiAyMDA5
LTA0LTIwICBTdGV2ZSBGYWxrZW5idXJnICA8c2ZhbGtlbkBhcHBsZS5jb20+CiAKICAgICAgICAg
U2VwYXJhdGUgSmF2YVNjcmlwdENvcmUuZGxsIGZyb20gV2ViS2l0LmRsbC4KZGlmZiAtLWdpdCBh
L1dlYktpdC9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAgYi9XZWJL
aXQvY2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCmluZGV4IDYwMGQ1
OGQuLjliODliOGEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnRDRi5jcHAKKysrIGIvV2ViS2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckNsaWVudENGLmNwcApAQCAtNDMsOCArNDMsNiBAQAogI2Vsc2UKICNkZWZpbmUgSlNfRVhQ
T1JUREFUQSBfX2RlY2xzcGVjKGRsbGltcG9ydCkKICNlbmRpZgotI2Vsc2UKLSNkZWZpbmUgSlNf
RVhQT1JUREFUQQogI2VuZGlmCiAKICNpbmNsdWRlICJXZWJJbnNwZWN0b3JDbGllbnQuaCIKZGlm
ZiAtLWdpdCBhL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5k
ZXggOGEyZTcyNy4uZDJiZDM2YyAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysr
IGIvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAwOS0wNy0yMiAgU2lt
b24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRHVwbGljYXRlIHRoZSBKU19FWFBPUlRE
QVRBIGFuZCBXRUJLSVRfRVhQT1JUREFUQSBkZWZpbml0aW9uIGZyb20KKyAgICAgICAgV2ViQ29y
ZS9jb25maWcuaCB0byBmaXggY29tcGlsYXRpb24gYWdhaW5zdCBKYXZhU2NyaXB0Q29yZSBhbmQK
KyAgICAgICAgV2ViQ29yZSBvbiB0aGUgTWFjLgorCisgICAgICAgICogV2ViS2l0UHJlZml4Lmg6
CisKIDIwMDktMDctMjAgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL1dlYktp
dFByZWZpeC5oIGIvV2ViS2l0L21hYy9XZWJLaXRQcmVmaXguaAppbmRleCAwZWRlYzA2Li5mODI4
YzIyIDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL1dlYktpdFByZWZpeC5oCisrKyBiL1dlYktpdC9t
YWMvV2ViS2l0UHJlZml4LmgKQEAgLTgzLDYgKzgzLDI3IEBAIHR5cGVkZWYgZmxvYXQgQ0dGbG9h
dDsKICNkZWZpbmUgV1RGX1VTRV9KU0MgMQogI2RlZmluZSBXVEZfVVNFX1Y4IDAKIAorI3VuZGVm
IEpTX0VYUE9SVERBVEEKKyN1bmRlZiBXRUJLSVRfRVhQT1JUREFUQQorI2lmIENPTVBJTEVSKEdD
QykKKyAgICAjZGVmaW5lIEpTX0VYUE9SVERBVEEgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgi
ZGVmYXVsdCIpKSkKKyAgICAjZGVmaW5lIFdFQktJVF9FWFBPUlREQVRBIF9fYXR0cmlidXRlX18o
KHZpc2liaWxpdHkoImRlZmF1bHQiKSkpCisjZWxpZiBQTEFURk9STShXSU5fT1MpICYmICFkZWZp
bmVkKEJVSUxESU5HX1dYX18pICYmICFkZWZpbmVkKEJVSUxESU5HX1FUTW92aWVXaW4pCisgICAg
I2lmIGRlZmluZWQoQlVJTERJTkdfSmF2YVNjcmlwdENvcmUpIHx8IGRlZmluZWQoQlVJTERJTkdf
V1RGKQorICAgICAgICAjZGVmaW5lIEpTX0VYUE9SVERBVEEgX19kZWNsc3BlYyhkbGxleHBvcnQp
CisgICAgI2Vsc2UKKyAgICAgICAgI2RlZmluZSBKU19FWFBPUlREQVRBIF9fZGVjbHNwZWMoZGxs
aW1wb3J0KQorICAgICNlbmRpZgorICAgICNpZiBkZWZpbmVkKEJVSUxESU5HX1dlYkNvcmUpIHx8
IGRlZmluZWQoQlVJTERJTkdfV2ViS2l0KQorICAgICAgICAjZGVmaW5lIFdFQktJVF9FWFBPUlRE
QVRBIF9fZGVjbHNwZWMoZGxsZXhwb3J0KQorICAgICNlbHNlCisgICAgICAgICNkZWZpbmUgV0VC
S0lUX0VYUE9SVERBVEEgX19kZWNsc3BlYyhkbGxpbXBvcnQpCisgICAgI2VuZGlmCisjZWxzZQor
ICAgICNkZWZpbmUgSlNfRVhQT1JUREFUQQorICAgICNkZWZpbmUgV0VCS0lUX0VYUE9SVERBVEEK
KyNlbmRpZgorCiAjaWZkZWYgX19jcGx1c3BsdXMKICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5o
PgogI2VuZGlmCkBAIC05Miw2ICsxMTMsMyBAQCB0eXBlZGVmIGZsb2F0IENHRmxvYXQ7CiAvKiBX
b3JrIGFyb3VuZCBidWcgd2l0aCBDKysgbGlicmFyeSB0aGF0IHNjcmV3cyB1cCBPYmplY3RpdmUt
QysrIHdoZW4gZXhjZXB0aW9uIHN1cHBvcnQgaXMgZGlzYWJsZWQuICovCiAjdW5kZWYgdHJ5CiAj
dW5kZWYgY2F0Y2gKLQotI2RlZmluZSBKU19FWFBPUlREQVRBCi0jZGVmaW5lIFdFQktJVF9FWFBP
UlREQVRBCmRpZmYgLS1naXQgYS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1dlYktpdC93aW4vQ2hh
bmdlTG9nCmluZGV4IGE5ZmNmNzQuLmFkNmVmY2QgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vQ2hh
bmdlTG9nCisrKyBiL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMDkt
MDctMjIgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCBjb21waWxhdGlv
biwgZGlzYWJsZSBib2d1cyBETEwgbGlua2FnZSB3YXJuaW5ncyBhbmQKKyAgICAgICAgZGVmaW5l
IEpTX0VYUE9SVERBVEEgbGlrZSBpbiBKYXZhU2NyaXB0Q29yZS9jb25maWcuaCwgdG8KKyAgICAg
ICAgZml4IHN5bWJvbCBpbXBvcnQgZm9ybSBKYXZhU2NyaXB0Q29yZS4KKworICAgICAgICAqIFdl
YktpdC52Y3Byb2ovV2ViS2l0LnZjcHJvajogVHdlYWsuCisgICAgICAgICogV2ViS2l0RExMLmg6
IERlZmluZSBKU19FWFBPUlREQVRBLgorCiAyMDA5LTA3LTIxICBSb2xhbmQgU3RlaW5lciAgPHJv
bGFuZHN0ZWluZXJAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXZpZCBMZXZp
bi4KZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXQudmNwcm9qIGIv
V2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdC52Y3Byb2oKaW5kZXggZDkzNzQ3OS4uYTBm
Y2I2NiAxMDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdC52Y3Byb2oK
KysrIGIvV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdC52Y3Byb2oKQEAgLTQzLDYgKzQz
LDcgQEAKIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1VTUkRMTDtXRUJLSVRfRVhQT1JU
UztGUkFNRVdPUktfTkFNRT1XZWJLaXQ7RU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HO0VOQUJMRV9E
QVRBQkFTRTtFTkFCTEVfREFUQUdSSUQ7RU5BQkxFX0RPTV9TVE9SQUdFO0VOQUJMRV9JQ09OREFU
QUJBU0U7RU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUztFTkFCTEVfUlVCWTtFTkFCTEVf
U1ZHO0VOQUJMRV9TVkdfQU5JTUFUSU9OO0VOQUJMRV9TVkdfQVNfSU1BR0U7RU5BQkxFX1NWR19G
T05UUztFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUO0VOQUJMRV9TVkdfVVNFO0VOQUJMRV9WSURF
TztFTkFCTEVfV0VCX1NPQ0tFVFM7RU5BQkxFX1dPUktFUlM7RU5BQkxFX1hQQVRIO0VOQUJMRV9Y
U0xUIg0KIAkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiINCiAJCQkJUHJlY29tcGlsZWRIZWFk
ZXJUaHJvdWdoPSJXZWJLaXRQcmVmaXguaCINCisJCQkJRGlzYWJsZVNwZWNpZmljV2FybmluZ3M9
IjQyNTE7NDI3MyINCiAJCQkJRm9yY2VkSW5jbHVkZUZpbGVzPSJXZWJLaXRQcmVmaXguaCINCiAJ
CQkvPg0KIAkJCTxUb29sDQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9XZWJLaXRETEwuaCBiL1dl
YktpdC93aW4vV2ViS2l0RExMLmgKaW5kZXggZDk0NGIwNy4uMzEyOGRmYSAxMDA2NDQKLS0tIGEv
V2ViS2l0L3dpbi9XZWJLaXRETEwuaAorKysgYi9XZWJLaXQvd2luL1dlYktpdERMTC5oCkBAIC0z
MCw2ICszMCwxNiBAQAogI2RlZmluZSBfSEFTX0VYQ0VQVElPTlMgMAogI2VuZGlmCiAKKyNpZiBk
ZWZpbmVkKFdJTjMyKSB8fCBkZWZpbmVkKF9XSU4zMikKKyNpZiBkZWZpbmVkKEJVSUxESU5HX0ph
dmFTY3JpcHRDb3JlKSB8fCBkZWZpbmVkKEJVSUxESU5HX1dURikKKyNkZWZpbmUgSlNfRVhQT1JU
REFUQSBfX2RlY2xzcGVjKGRsbGV4cG9ydCkKKyNlbHNlCisjZGVmaW5lIEpTX0VYUE9SVERBVEEg
X19kZWNsc3BlYyhkbGxpbXBvcnQpCisjZW5kaWYKKyNlbHNlCisjZGVmaW5lIEpTX0VYUE9SVERB
VEEKKyNlbmRpZgorCiAjaW5jbHVkZSA8d2luc29jazIuaD4KICNpbmNsdWRlIDx3aW5kb3dzLmg+
CiAjaW5jbHVkZSA8d3RmL0hhc2hDb3VudGVkU2V0Lmg+CmRpZmYgLS1naXQgYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKaW5kZXggZGY4YzI5YS4uMzQwZmFj
ZSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdFRvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDA5LTA3LTIyICBTaW1vbiBIYXVzbWFubiAgPHNp
bW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBGaXggY29tcGlsYXRpb24gYnkgaW5jbHVkaW5nIGNvbmZpZy5oLCB0
byBpbXBvcnQgdGhlCisgICAgICAgIGNvcnJlY3QgZGVmaW5pdGlvbiBvZiBKU19FWFBPUlREQVRB
LgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlDb250cm9sbGVy
TWFjLm1tOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50TWFjLm1tOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5t
bToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVXaW5kb3cubW06
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0VkaXRpbmdEZWxlZ2F0ZS5tbToKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRnJhbWVMb2FkRGVsZWdhdGUubW06CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL21hYy9QaXhlbER1bXBTdXBwb3J0TWFjLm1tOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL21hYy9Qb2xpY3lEZWxlZ2F0ZS5tbToKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9tYWMvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW06CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvbWFjL1VJRGVsZWdhdGUubW06CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcHRocmVhZHMv
SmF2YVNjcmlwdFRocmVhZGluZ1B0aHJlYWRzLmNwcDoKKwogMjAwOS0wNy0yMSAgSmFrb2IgUGV0
c292aXRzICA8amFrb2IucGV0c292aXRzQHRvcmNobW9iaWxlLmNvbT4KIAogICAgICAgICAgUmV2
aWV3ZWQgYnkgQWRhbSBUcmVhdC4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlck1hYy5tbSBiL1dlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlck1hYy5tbQppbmRleCA0ODJjNGYz
Li5hMTkxNDk1IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXJNYWMubW0KKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyTWFjLm1tCkBAIC0yMyw2ICsyMyw3IEBACiAg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKICAqLwogCisjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkR1bXBS
ZW5kZXJUcmVlLmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oIgogCmRpZmYg
LS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudE1hYy5tbSBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50TWFjLm1tCmluZGV4IDIwNGQ1MDAuLjdlMmEwZmUgMTAwNjQ0Ci0tLSBhL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCisr
KyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
TWFjLm1tCkBAIC0yMyw2ICsyMyw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCisjaW1wb3J0
ICJjb25maWcuaCIKICNpbXBvcnQgIkR1bXBSZW5kZXJUcmVlLmgiCiAjaW1wb3J0ICJBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50LmgiCiAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbSBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9EdW1wUmVuZGVyVHJlZS5tbQppbmRleCAzZWQyYjZkLi4wNjk1OWJjIDEwMDY0NAotLS0gYS9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KKysrIGIvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCkBAIC0yNyw2ICsy
Nyw3IEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKKyNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAi
RHVtcFJlbmRlclRyZWUuaCIKIAogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaCIK
ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJl
ZVdpbmRvdy5tbSBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJl
ZVdpbmRvdy5tbQppbmRleCBjMzAwOWI0Li5hYTViMTE3IDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVXaW5kb3cubW0KKysrIGIvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlV2luZG93Lm1tCkBAIC0yOCw2
ICsyOCw3IEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAgCisjaW1wb3J0ICJjb25maWcuaCIKICNpbXBv
cnQgIkR1bXBSZW5kZXJUcmVlV2luZG93LmgiCiAKICNpbXBvcnQgIkR1bXBSZW5kZXJUcmVlLmgi
CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRWRpdGluZ0RlbGVn
YXRlLm1tIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0VkaXRpbmdEZWxlZ2F0ZS5t
bQppbmRleCBjZjQwMjZiLi4wMmU5MzFjIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvRWRpdGluZ0RlbGVnYXRlLm1tCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9FZGl0aW5nRGVsZWdhdGUubW0KQEAgLTI2LDYgKzI2LDcgQEAKICAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KICAKKyNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiRWRpdGluZ0RlbGVnYXRl
LmgiCiAKICNpbXBvcnQgIkR1bXBSZW5kZXJUcmVlLmgiCmRpZmYgLS1naXQgYS9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvRnJhbWVMb2FkRGVsZWdhdGUubW0gYi9XZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvRnJhbWVMb2FkRGVsZWdhdGUubW0KaW5kZXggOTc1ZDk1MS4uNGJm
MDJlZCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0ZyYW1lTG9h
ZERlbGVnYXRlLm1tCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9GcmFtZUxv
YWREZWxlZ2F0ZS5tbQpAQCAtMjYsNiArMjYsNyBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCisjaW1w
b3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkR1bXBSZW5kZXJUcmVlLmgiCiAjaW1wb3J0ICJGcmFt
ZUxvYWREZWxlZ2F0ZS5oIgogCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0gYi9XZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KaW5kZXggNTA3NzEzNi4uY2FmNTVl
ZCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RD
b250cm9sbGVyTWFjLm1tCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlv
dXRUZXN0Q29udHJvbGxlck1hYy5tbQpAQCAtMjYsNiArMjYsNyBAQAogICogVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCisjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkR1bXBSZW5kZXJUcmVlLmgiCiAjaW1w
b3J0ICJMYXlvdXRUZXN0Q29udHJvbGxlci5oIgogCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvUGl4ZWxEdW1wU3VwcG9ydE1hYy5tbSBiL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9QaXhlbER1bXBTdXBwb3J0TWFjLm1tCmluZGV4IDk0N2M2ZGIuLjBk
OTFhMTEgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9QaXhlbER1
bXBTdXBwb3J0TWFjLm1tCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9QaXhl
bER1bXBTdXBwb3J0TWFjLm1tCkBAIC0yOCw2ICsyOCw3IEBACiAgKiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
KyNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJEdW1wUmVuZGVyVHJlZS5oIiAKICNpbmNs
dWRlICJQaXhlbER1bXBTdXBwb3J0LmgiCiAjaW5jbHVkZSAiUGl4ZWxEdW1wU3VwcG9ydENHLmgi
CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvUG9saWN5RGVsZWdh
dGUubW0gYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvUG9saWN5RGVsZWdhdGUubW0K
aW5kZXggMTA4MTRkOS4uNjkzNWVhNyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL1BvbGljeURlbGVnYXRlLm1tCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9Qb2xpY3lEZWxlZ2F0ZS5tbQpAQCAtMjYsNiArMjYsNyBAQAogICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAqLwogCisjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlBvbGljeURlbGVnYXRlLmgiCiAK
ICNpbXBvcnQgIkR1bXBSZW5kZXJUcmVlLmgiCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0gYi9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0KaW5kZXggOTM4Y2UwMi4uYTM0
MTRiOCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Jlc291cmNl
TG9hZERlbGVnYXRlLm1tCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9SZXNv
dXJjZUxvYWREZWxlZ2F0ZS5tbQpAQCAtMjYsNiArMjYsNyBAQAogICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
CisjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlJlc291cmNlTG9hZERlbGVnYXRlLmgiCiAK
ICNpbXBvcnQgIkR1bXBSZW5kZXJUcmVlLmgiCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbSBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9VSURlbGVnYXRlLm1tCmluZGV4IDY2YWFkZjkuLmMxYzMxYjMgMTAwNjQ0Ci0tLSBhL1dl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tCisrKyBiL1dlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tCkBAIC0yNiw2ICsyNiw3IEBACiAg
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKKyNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiRHVtcFJlbmRl
clRyZWUuaCIKICNpbXBvcnQgIlVJRGVsZWdhdGUuaCIKIApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvcHRocmVhZHMvSmF2YVNjcmlwdFRocmVhZGluZ1B0aHJlYWRzLmNw
cCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3B0aHJlYWRzL0phdmFTY3JpcHRUaHJlYWRp
bmdQdGhyZWFkcy5jcHAKaW5kZXggM2FjMjU3ZC4uNWE0OGIyNyAxMDA2NDQKLS0tIGEvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvcHRocmVhZHMvSmF2YVNjcmlwdFRocmVhZGluZ1B0aHJlYWRz
LmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9wdGhyZWFkcy9KYXZhU2NyaXB0
VGhyZWFkaW5nUHRocmVhZHMuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAgKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAgCisjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSmF2YVNjcmlwdFRocmVhZGluZy5o
IgogCiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KLS0gCjEuNi4z
LjEuMTY5LmczM2ZkCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33357</attachid>
            <date>2009-07-23 13:03:13 -0700</date>
            <delta_ts>2009-07-28 07:10:40 -0700</delta_ts>
            <desc>Make it possible to build JSC as a shared library without symbol lists</desc>
            <filename>JSC-shared-library-possibility.patch</filename>
            <type>text/plain</type>
            <size>78984</size>
            <attacher name="Kenneth Rohde Christiansen">kenneth</attacher>
            
              <data encoding="base64">RnJvbSA4M2E1MTE0ZjE1NTIzZjZkMTAzMTU3M2MxOWZkZDc0YWNhMmM1NmI1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiA8a2VubmV0aEB3
ZWJraXQub3JnPgpEYXRlOiBUaHUsIDIzIEp1bCAyMDA5IDE2OjU1OjQ3IC0wMzAwClN1YmplY3Q6
IFtQQVRDSF0gSmF2YVNjcmlwdENvcmU6CgoyMDA5LTA3LTIyICBLZW5uZXRoIFJvaGRlIENocmlz
dGlhbnNlbiAgPGtlbm5ldGguY2hyaXN0aWFuc2VuQG9wZW5ib3NzYS5vcmc+LCBTaW1vbiBIYXVz
bWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KCiAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCgogICAgICAgIE1ha2UgaXQgcG9zc2libGUgdG8gYnVpbGQgSmF2YVNjcmlw
dENvcmUgYXMgc2hhcmVkIGxpYnJhcnkgd2l0aG91dAogICAgICAgIGV4cG9ydGVkIHN5bWJvbCBs
aXN0cy4KCiAgICAgICAgQWRkZWQgSlNfRVhQT1JUREFUQSB0byBhbGwgdGhlIGNsYXNzZXMgdGhh
dCBhcmUgYWNjZXNzZWQgZnJvbSBXZWJDb3JlLAogICAgICAgIHRvIGVuc3VyZSB0aGVpciB2aXNp
YmlsaXR5LgoKICAgICAgICAqIEFQSS9PcGFxdWVKU1N0cmluZy5oOiBVc2UgSlNfRVhQT1JUREFU
QS4KICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3Byb2o6IERpc2FibGUKICAgICAgICBNU1ZDIHdhcm5pbmcgYWJvdXQgaW5jb25z
aXN0ZW50IGxpbmthZ2UuCiAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovanNjL2pzYy52
Y3Byb2o6IERpdHRvLgogICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajogSW5jbHVkZSBQcm9maWxlR2VuZXJhdG9yLmgKICAgICAgICBpbiB0aGUgcHJpdmF0
ZSBoZWFkZXJzLCBhcyBpdCBpcyBpbmNsdWRlZCBmcm9tIFByb2ZpbGVyLmgsIHdoaWNoIGlzCiAg
ICAgICAgYWxzbyBpbmNsdWRlZCBmcm9tIFdlYkNvcmUuCiAgICAgICAgKiBieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuaDogVXNlIEpTX0VYUE9SVERBVEEuCiAgICAgICAgKiBjb25maWcu
aDogRGVmaW5lIEpTX0VYUE9SVERBVEEgYWNjb3JkaW5nbHkgd2l0aCBnY2M7IERlZmluZSBpdCB0
bwogICAgICAgIGRsbGltcG9ydCB3aXRoIE1TVkMuCiAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dl
ci5oOiBVc2UgSlNfRVhQT1JUREFUQS4KICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZy
YW1lLmg6IERpdHRvLgogICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDogRGl0dG8u
CiAgICAgICAgKiBqc2MucHJvOiBMaW5rIGFnYWluc3QgSlNDIGFzIHNoYXJlZCBsaWJyYXJ5Lgog
ICAgICAgICogcGFyc2VyL05vZGVzLmg6IFVzZSBKU19FWFBPUlREQVRBLgogICAgICAgICogcGFy
c2VyL1BhcnNlci5oOiBEaXR0by4KICAgICAgICAqIHBhcnNlci9QYXJzZXJBcmVuYS5oOiBEaXR0
by4KICAgICAgICAqIHBjcmUvcGNyZS5oOiBEaXR0by4KICAgICAgICAqIHByb2ZpbGVyL1Byb2Zp
bGUuaDogVXNlIEpTX0VYUE9SVERBVEEuCiAgICAgICAgKiBwcm9maWxlci9Qcm9maWxlci5oOiBV
c2UgSlNfRVhQT1JUREFUQSBhbmQgcmVwbGFjZSBQcm9maWxlR2VuZXJhdG9yCiAgICAgICAgZm9y
d2FyZCBkZWNsYXJhdGlvbiB3aXRoIGluY2x1c2lvbiB0byBmaXggTVNWQyBjb21waWxhdGlvbiwg
d2hpY2ggcmVxdWlyZXMKICAgICAgICBpdHMgdmlzaWJsaXR5IHdoZW4gbWFya2luZyBQcm9maWxl
ciB3aXRoIGRsbGV4cG9ydC4KICAgICAgICAqIHJ1bnRpbWUvQXJnTGlzdC5oOiBVc2UgSlNfRVhQ
T1JUREFUQS4KICAgICAgICAqIHJ1bnRpbWUvQm9vbGVhbk9iamVjdC5oOiBEaXR0by4KICAgICAg
ICAqIHJ1bnRpbWUvQ2FsbERhdGEuaDogRGl0dG8uCiAgICAgICAgKiBydW50aW1lL0NvbGxlY3Rv
ci5oOiBEaXR0by4KICAgICAgICAqIHJ1bnRpbWUvQ29tcGxldGlvbi5oOiBEaXR0by4KICAgICAg
ICAqIHJ1bnRpbWUvQ29uc3RydWN0RGF0YS5oOiBEaXR0by4KICAgICAgICAqIHJ1bnRpbWUvRGF0
ZUluc3RhbmNlLmg6IERpdHRvLgogICAgICAgICogcnVudGltZS9FcnJvci5oOiBEaXR0by4KICAg
ICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oOiBEaXR0by4KICAgICAgICAqIHJ1
bnRpbWUvSWRlbnRpZmllci5oOiBEaXR0by4KICAgICAgICAqIHJ1bnRpbWUvSW5pdGlhbGl6ZVRo
cmVhZGluZy5oOiBEaXR0by4KICAgICAgICAqIHJ1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oOiBN
b3ZlZCBKU19FWFBPUlREQVRBIGZyb20gSW50ZXJuYWxGdW5jdGlvbjo6aW5mbyB0bwogICAgICAg
IEludGVybmFsRnVuY3Rpb24sIHRvIGV4cG9ydCB0aGUgZW50aXJlIGNsYXNzLgogICAgICAgICog
cnVudGltZS9KU0FycmF5Lmg6IFVzZSBKU19FWFBPUlREQVRBLgogICAgICAgICogcnVudGltZS9K
U0J5dGVBcnJheS5oOiBEaXR0by4KICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6IERpdHRvLgog
ICAgICAgICogcnVudGltZS9KU0dsb2JhbERhdGEuaDogRGl0dG8uCiAgICAgICAgKiBydW50aW1l
L0pTR2xvYmFsT2JqZWN0Lmg6IERpdHRvLgogICAgICAgICogcnVudGltZS9KU0ltbWVkaWF0ZS5o
OiBEaXR0by4KICAgICAgICAqIHJ1bnRpbWUvSlNMb2NrLmg6IERpdHRvLgogICAgICAgICogcnVu
dGltZS9KU051bWJlckNlbGwuaDogRGl0dG8uCiAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6
IERpdHRvLgogICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOiBEaXR0by4KICAgICAgICAqIHJ1
bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oOiBEaXR0by4KICAgICAgICAqIHJ1bnRpbWUvSlNXcmFw
cGVyT2JqZWN0Lmg6IERpdHRvLgogICAgICAgICogcnVudGltZS9Mb29rdXAuaDogRGl0dG8uCiAg
ICAgICAgKiBydW50aW1lL051bWJlck9iamVjdC5oOiBEaXR0by4KICAgICAgICAqIHJ1bnRpbWUv
T2JqZWN0UHJvdG90eXBlLmg6IERpdHRvLgogICAgICAgICogcnVudGltZS9Qcm9wZXJ0eU5hbWVB
cnJheS5oOiBEaXR0by4KICAgICAgICAqIHJ1bnRpbWUvUHJvdG90eXBlRnVuY3Rpb24uaDogRGl0
dG8uCiAgICAgICAgKiBydW50aW1lL1JlZ0V4cC5oOiBEaXR0by4KICAgICAgICAqIHJ1bnRpbWUv
UmVnRXhwT2JqZWN0Lmg6IERpdHRvLgogICAgICAgICogcnVudGltZS9TbWFsbFN0cmluZ3MuaDog
RGl0dG8uCiAgICAgICAgKiBydW50aW1lL1N0cmluZ09iamVjdC5oOiBNb3ZlZCBKU19FWFBPUlRE
QVRBIGZyb20gU3RyaW5nT2JqZWN0OjppbmZvIHRvIFN0cmluZ09iamVjdCwgdG8KICAgICAgICBl
eHBvcnQgdGhlIGVudGlyZSBjbGFzcy4KICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6IFVz
ZSBKU19FWFBPUlREQVRBLgogICAgICAgICogcnVudGltZS9UaW1lb3V0Q2hlY2tlci5oOiBEaXR0
by4KICAgICAgICAqIHJ1bnRpbWUvVVN0cmluZy5oOiBSZXBsYWNlZCBzaW5nbGUgZXhwb3J0IG9m
IFVTdHJpbmc6OlJlcDo6e251bGwsZW1wdHl9QmFzZVN0cmluZyB3aXRoCiAgICAgICAgZXhwb3J0
IG9mIGVudGlyZSBjbGFzcy4KICAgICAgICAqIHd0Zi9CeXRlQXJyYXkuaDogVXNlIEpTX0VYUE9S
VERBVEEuCiAgICAgICAgKiB3dGYvQ3VycmVudFRpbWUuaDogRGl0dG8uCiAgICAgICAgKiB3dGYv
RmFzdE1hbGxvYy5oOiBEaXR0by4KICAgICAgICAqIHd0Zi9NYWluVGhyZWFkLmg6IERpdHRvLgog
ICAgICAgICogd3RmL1JhbmRvbU51bWJlci5oOiBEaXR0by4KICAgICAgICAqIHd0Zi9UaHJlYWRp
bmcuaDogRGl0dG8uCiAgICAgICAgKiB3dGYvZHRvYS5oOiBEaXR0by4KICAgICAgICAqIHd0Zi91
bmljb2RlL1VURjguaDogRGl0dG8uCiAgICAgICAgKiB3dGYvdW5pY29kZS9VVEY4LmNwcDogSW5j
bHVkZSBjb25maWcuaCBpbiBvcmRlciB0byBjb21waWxlIHdpdGggTVNWQy4KCldlYkNvcmU6Cgoy
MDA5LTA3LTIyICBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5ldGguY2hyaXN0aWFu
c2VuQG9wZW5ib3NzYS5vcmc+LCBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lh
LmNvbT4KCiAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgogICAgICAgIERpc2Fi
bGUgYm9ndXMgRExMIGxpbmthZ2Ugd2FybmluZ3Mgd2l0aCBNU1ZDLgoKICAgICAgICBEZWZpbmUg
SlNfRVhQT1JUREFUQSBhbmQgV0VCS0lUX0VYUE9SVERBVEEgZm9yIGdjYywgYW5kIGF2b2lkIGRl
ZmluaW5nCiAgICAgICAgSlNfRVhQT1JUREFUQSB0byBkbGxleHBvcnQgd2l0aCBNU1ZDIHdoZW4g
YnVpbGRpbmcgdGhlIFFUTW92aWUgdGFyZ2V0LAogICAgICAgIGJlY2F1c2UgaXQgbGlua3Mgc3Rh
dGljYWxseSBhZ2FpbnN0IFdURi4gSXQgaXMgbm90IHBvc3NpYmxlIHRvIHVzZQogICAgICAgIGRs
bGV4cG9ydCB0b2dldGhlciB3aXRoIHN5bWJvbHMgZnJvbSBhIHN0YXRpYyBsaWJyYXJ5LgoKICAg
ICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOiBEaXNhYmxlIGJvZ3VzIERMTCBs
aW5rYWdlIHdhcm5pbmcuCiAgICAgICAgKiBjb25maWcuaDogVHdlYWsgZm9yIGdjYyBhbmQgTVNW
Qy4KCldlYktpdC9jZjoKCjIwMDktMDctMjIgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21h
bm5Abm9raWEuY29tPgoKICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCiAgICAg
ICAgRml4IGNvbXBpbGF0aW9uIG9uIHRoZSBNYWMsIGRvbid0IHJlLWRlZmluZSBKU19FWFBPUlRE
QVRBIGVtcHR5IGJ1dAogICAgICAgIHJlLXVzZSB0aGUgZGVmaW5pdGlvbiBmcm9tIFdlYktpdFBy
ZWZpeC5oLgoKICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNw
cDoKCldlYktpdC9tYWM6CgoyMDA5LTA3LTIyICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNt
YW5uQG5va2lhLmNvbT4KCiAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgogICAg
ICAgIER1cGxpY2F0ZSB0aGUgSlNfRVhQT1JUREFUQSBhbmQgV0VCS0lUX0VYUE9SVERBVEEgZGVm
aW5pdGlvbiBmcm9tCiAgICAgICAgV2ViQ29yZS9jb25maWcuaCB0byBmaXggY29tcGlsYXRpb24g
YWdhaW5zdCBKYXZhU2NyaXB0Q29yZSBhbmQKICAgICAgICBXZWJDb3JlIG9uIHRoZSBNYWMuCgog
ICAgICAgICogV2ViS2l0UHJlZml4Lmg6CgpXZWJLaXQvd2luOgoKMjAwOS0wNy0yMiAgU2ltb24g
SGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CgogICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICBGaXggY29tcGlsYXRpb24sIGRpc2FibGUgYm9ndXMg
RExMIGxpbmthZ2Ugd2FybmluZ3MgYW5kCiAgICAgICAgZGVmaW5lIEpTX0VYUE9SVERBVEEgbGlr
ZSBpbiBKYXZhU2NyaXB0Q29yZS9jb25maWcuaCwgdG8KICAgICAgICBmaXggc3ltYm9sIGltcG9y
dCBmb3JtIEphdmFTY3JpcHRDb3JlLgoKICAgICAgICAqIFdlYktpdC52Y3Byb2ovV2ViS2l0LnZj
cHJvajogVHdlYWsuCiAgICAgICAgKiBXZWJLaXRETEwuaDogRGVmaW5lIEpTX0VYUE9SVERBVEEu
CgpXZWJLaXRUb29sczoKCjIwMDktMDctMjIgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21h
bm5Abm9raWEuY29tPgoKICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCiAgICAg
ICAgRml4IGNvbXBpbGF0aW9uIGJ5IGluY2x1ZGluZyBjb25maWcuaCwgdG8gaW1wb3J0IHRoZQog
ICAgICAgIGNvcnJlY3QgZGVmaW5pdGlvbiBvZiBKU19FWFBPUlREQVRBLgoKICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlck1hYy5tbToKICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tOgogICAgICAg
ICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tOgogICAgICAgICogRHVtcFJl
bmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlV2luZG93Lm1tOgogICAgICAgICogRHVtcFJlbmRl
clRyZWUvbWFjL0VkaXRpbmdEZWxlZ2F0ZS5tbToKICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21h
Yy9GcmFtZUxvYWREZWxlZ2F0ZS5tbToKICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9MYXlv
dXRUZXN0Q29udHJvbGxlck1hYy5tbToKICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9QaXhl
bER1bXBTdXBwb3J0TWFjLm1tOgogICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1BvbGljeURl
bGVnYXRlLm1tOgogICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1Jlc291cmNlTG9hZERlbGVn
YXRlLm1tOgogICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW06CiAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9wdGhyZWFkcy9KYXZhU2NyaXB0VGhyZWFkaW5nUHRocmVhZHMu
Y3BwOgotLS0KIEphdmFTY3JpcHRDb3JlL0FQSS9PcGFxdWVKU1N0cmluZy5oICAgICAgICAgICAg
ICAgIHwgICAgMiArLQogSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCAgIDgxICsrKysrKysrKysrKysrKysrKysrCiAuLi4vSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUudmNwcm9qICAgICAgICAgICB8ICAgIDEgKwogLi4uL0phdmFTY3JpcHRD
b3JlLnZjcHJvai9qc2MvanNjLnZjcHJvaiAgICAgICAgICAgfCAgICAxICsKIC4uLi9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qICAgICAgIHwgICAgMiArLQogSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggICAgfCAgICAyICstCiBK
YXZhU2NyaXB0Q29yZS9jb25maWcuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTcg
KysrLS0KIEphdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmggICAgICAgICAgICAgICAg
IHwgICAgMiArLQogSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuaCAg
ICAgICAgfCAgICA2ICstCiBKYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5o
ICAgICAgICAgICB8ICAgIDIgKy0KIEphdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oICAgICAg
ICAgICAgICAgICAgICAgIHwgICAgNiArLQogSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5o
ICAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCiBKYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyQXJlbmEuaCAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIEphdmFTY3JpcHRDb3JlL3BjcmUv
cGNyZS5oICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNiArLQogSmF2YVNjcmlwdENvcmUv
cHJvZmlsZXIvUHJvZmlsZS5oICAgICAgICAgICAgICAgICAgfCAgICAyICstCiBKYXZhU2NyaXB0
Q29yZS9wcm9maWxlci9Qcm9maWxlci5oICAgICAgICAgICAgICAgICB8ICAgIDYgKy0KIEphdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5oICAgICAgICAgICAgICAgICAgIHwgICAgNCArLQog
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuT2JqZWN0LmggICAgICAgICAgICAgfCAgICAy
ICstCiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhbGxEYXRhLmggICAgICAgICAgICAgICAgICB8
ICAgIDYgKy0KIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29sbGVjdG9yLmggICAgICAgICAgICAg
ICAgIHwgICAgMiArLQogSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmggICAgICAg
ICAgICAgICAgfCAgICA2ICstCiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0cnVjdERhdGEu
aCAgICAgICAgICAgICB8ICAgIDYgKy0KIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3Rh
bmNlLmggICAgICAgICAgICAgIHwgICAgMiArLQogSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJv
ci5oICAgICAgICAgICAgICAgICAgICAgfCAgICA4ICstCiBKYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Z1bmN0aW9uQ29uc3RydWN0b3IuaCAgICAgICB8ICAgIDggKy0KIEphdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSWRlbnRpZmllci5oICAgICAgICAgICAgICAgIHwgICAgMiArLQogSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmggICAgICAgfCAgICA0ICstCiBKYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaCAgICAgICAgICB8ICAgIDQgKy0KIEph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oICAgICAgICAgICAgICAgICAgIHwgICAgOCAr
LQogSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJheS5oICAgICAgICAgICAgICAgfCAg
ICAyICstCiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oICAgICAgICAgICAgICAgICAg
ICB8ICAgIDIgKy0KIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmggICAgICAg
ICAgICAgIHwgICAgMiArLQogSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
ICAgICAgICAgICAgfCAgICAyICstCiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW1tZWRpYXRl
LmggICAgICAgICAgICAgICB8ICAgMTAgKy0KIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2Nr
LmggICAgICAgICAgICAgICAgICAgIHwgICAgMiArLQogSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U051bWJlckNlbGwuaCAgICAgICAgICAgICAgfCAgIDEwICstCiBKYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmggICAgICAgICAgICAgICAgICB8ICAgIDYgKy0KIEphdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTdHJpbmcuaCAgICAgICAgICAgICAgICAgIHwgICAzNCArKysrLS0tLQogSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmggICAgICAgICAgfCAgICA0ICst
CiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9iamVjdC5oICAgICAgICAgICB8ICAg
IDQgKy0KIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmggICAgICAgICAgICAgICAgICAg
IHwgICAgNCArLQogSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJPYmplY3QuaCAgICAgICAg
ICAgICAgfCAgICAyICstCiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5o
ICAgICAgICAgICB8ICAgIDIgKy0KIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1l
QXJyYXkuaCAgICAgICAgIHwgICAgMiArLQogSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm90b3R5
cGVGdW5jdGlvbi5oICAgICAgICAgfCAgICAyICstCiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Jl
Z0V4cC5oICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIEphdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwT2JqZWN0LmggICAgICAgICAgICAgIHwgICAgMiArLQogSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TbWFsbFN0cmluZ3MuaCAgICAgICAgICAgICAgfCAgICAyICstCiBKYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oICAgICAgICAgICAgICB8ICAgIDQgKy0KIEphdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmggICAgICAgICAgICAgICAgIHwgICAgMiArLQog
SmF2YVNjcmlwdENvcmUvcnVudGltZS9UaW1lb3V0Q2hlY2tlci5oICAgICAgICAgICAgfCAgICAy
ICstCiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuaCAgICAgICAgICAgICAgICAgICB8
ICAgMjQgKysrLS0tCiBKYXZhU2NyaXB0Q29yZS93dGYvQnl0ZUFycmF5LmggICAgICAgICAgICAg
ICAgICAgICB8ICAgIDIgKy0KIEphdmFTY3JpcHRDb3JlL3d0Zi9DdXJyZW50VGltZS5oICAgICAg
ICAgICAgICAgICAgIHwgICAgNSArLQogSmF2YVNjcmlwdENvcmUvd3RmL0Zhc3RNYWxsb2MuaCAg
ICAgICAgICAgICAgICAgICAgfCAgIDE4ICsrLS0KIEphdmFTY3JpcHRDb3JlL3d0Zi9NYWluVGhy
ZWFkLmggICAgICAgICAgICAgICAgICAgIHwgICAgNiArLQogSmF2YVNjcmlwdENvcmUvd3RmL1Jh
bmRvbU51bWJlci5oICAgICAgICAgICAgICAgICAgfCAgICA0ICstCiBKYXZhU2NyaXB0Q29yZS93
dGYvVGhyZWFkaW5nLmggICAgICAgICAgICAgICAgICAgICB8ICAgMjQgKysrLS0tCiBKYXZhU2Ny
aXB0Q29yZS93dGYvZHRvYS5oICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDQgKy0KIEph
dmFTY3JpcHRDb3JlL3d0Zi91bmljb2RlL1VURjguY3BwICAgICAgICAgICAgICAgIHwgICAgMSAr
CiBKYXZhU2NyaXB0Q29yZS93dGYvdW5pY29kZS9VVEY4LmggICAgICAgICAgICAgICAgICB8ICAg
MTQgKystLQogV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgIDE0ICsrKysKIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogICAg
ICAgICAgICAgIHwgICAgMSArCiBXZWJDb3JlL2NvbmZpZy5oICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8ICAgMzEgKysrKystLS0KIFdlYktpdC9jZi9DaGFuZ2VMb2cgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgOSArKwogV2ViS2l0L2NmL1dlYkNvcmVTdXBw
b3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcCAgfCAgICAyIC0KIFdlYktpdC9tYWMvQ2hhbmdl
TG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMCArKysKIFdlYktpdC9tYWMv
V2ViS2l0UHJlZml4LmggICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyNCArKysrKy0KIFdl
YktpdC93aW4vQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMSAr
KysKIFdlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXQudmNwcm9qICAgICAgICAgICAgIHwg
ICAgMSArCiBXZWJLaXQvd2luL1dlYktpdERMTC5oICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgMTAgKysrCiBXZWJLaXRUb29scy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8ICAgMjAgKysrKysKIC4uLi9tYWMvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJNYWMu
bW0gICAgICAgICAgICAgIHwgICAgMSArCiAuLi4vbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRN
YWMubW0gICAgICAgICAgICAgICB8ICAgIDEgKwogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL0R1bXBSZW5kZXJUcmVlLm1tICAgfCAgICAxICsKIC4uLi9EdW1wUmVuZGVyVHJlZS9tYWMv
RHVtcFJlbmRlclRyZWVXaW5kb3cubW0gICAgIHwgICAgMSArCiBXZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvRWRpdGluZ0RlbGVnYXRlLm1tICB8ICAgIDEgKwogLi4uL0R1bXBSZW5kZXJU
cmVlL21hYy9GcmFtZUxvYWREZWxlZ2F0ZS5tbSAgICAgICAgfCAgICAxICsKIC4uLi9EdW1wUmVu
ZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0gIHwgICAgMSArCiAuLi4vRHVt
cFJlbmRlclRyZWUvbWFjL1BpeGVsRHVtcFN1cHBvcnRNYWMubW0gICAgICB8ICAgIDEgKwogV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1BvbGljeURlbGVnYXRlLm1tICAgfCAgICAxICsK
IC4uLi9EdW1wUmVuZGVyVHJlZS9tYWMvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0gICAgIHwgICAg
MSArCiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbSAgICAgICB8
ICAgIDEgKwogLi4uL3B0aHJlYWRzL0phdmFTY3JpcHRUaHJlYWRpbmdQdGhyZWFkcy5jcHAgICAg
ICAgfCAgICAxICsKIDg0IGZpbGVzIGNoYW5nZWQsIDM3NCBpbnNlcnRpb25zKCspLCAxNzkgZGVs
ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvQVBJL09wYXF1ZUpTU3RyaW5n
LmggYi9KYXZhU2NyaXB0Q29yZS9BUEkvT3BhcXVlSlNTdHJpbmcuaAppbmRleCA0NzNjODE1Li45
MjE2MjI0IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9BUEkvT3BhcXVlSlNTdHJpbmcuaAor
KysgYi9KYXZhU2NyaXB0Q29yZS9BUEkvT3BhcXVlSlNTdHJpbmcuaApAQCAtMzMsNyArMzMsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBKU0dsb2JhbERhdGE7CiB9CiAKLXN0cnVjdCBP
cGFxdWVKU1N0cmluZyA6IHB1YmxpYyBUaHJlYWRTYWZlU2hhcmVkPE9wYXF1ZUpTU3RyaW5nPiB7
CitzdHJ1Y3QgSlNfRVhQT1JUREFUQSBPcGFxdWVKU1N0cmluZyA6IHB1YmxpYyBUaHJlYWRTYWZl
U2hhcmVkPE9wYXF1ZUpTU3RyaW5nPiB7CiAKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxPcGFxdWVK
U1N0cmluZz4gY3JlYXRlKCkgLy8gbnVsbAogICAgIHsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAxZjNjNjE0Li5j
NDc0NzhhIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNj
cmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODQgQEAKKzIwMDktMDctMjIgIEtlbm5ldGgg
Um9oZGUgQ2hyaXN0aWFuc2VuICA8a2VubmV0aC5jaHJpc3RpYW5zZW5Ab3BlbmJvc3NhLm9yZz4s
IFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgaXQgcG9zc2libGUgdG8g
YnVpbGQgSmF2YVNjcmlwdENvcmUgYXMgc2hhcmVkIGxpYnJhcnkgd2l0aG91dAorICAgICAgICBl
eHBvcnRlZCBzeW1ib2wgbGlzdHMuCisKKyAgICAgICAgQWRkZWQgSlNfRVhQT1JUREFUQSB0byBh
bGwgdGhlIGNsYXNzZXMgdGhhdCBhcmUgYWNjZXNzZWQgZnJvbSBXZWJDb3JlLAorICAgICAgICB0
byBlbnN1cmUgdGhlaXIgdmlzaWJpbGl0eS4KKworICAgICAgICAqIEFQSS9PcGFxdWVKU1N0cmlu
Zy5oOiBVc2UgSlNfRVhQT1JUREFUQS4KKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ov
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qOiBEaXNhYmxlCisgICAgICAgIE1T
VkMgd2FybmluZyBhYm91dCBpbmNvbnNpc3RlbnQgbGlua2FnZS4KKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS52Y3Byb2ovanNjL2pzYy52Y3Byb2o6IERpdHRvLgorICAgICAgICAqIEphdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEluY2x1ZGUgUHJvZmlsZUdlbmVyYXRv
ci5oCisgICAgICAgIGluIHRoZSBwcml2YXRlIGhlYWRlcnMsIGFzIGl0IGlzIGluY2x1ZGVkIGZy
b20gUHJvZmlsZXIuaCwgd2hpY2ggaXMKKyAgICAgICAgYWxzbyBpbmNsdWRlZCBmcm9tIFdlYkNv
cmUuCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6IFVzZSBKU19F
WFBPUlREQVRBLgorICAgICAgICAqIGNvbmZpZy5oOiBEZWZpbmUgSlNfRVhQT1JUREFUQSBhY2Nv
cmRpbmdseSB3aXRoIGdjYzsgRGVmaW5lIGl0IHRvCisgICAgICAgIGRsbGltcG9ydCB3aXRoIE1T
VkMuCisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXIuaDogVXNlIEpTX0VYUE9SVERBVEEuCisg
ICAgICAgICogZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuaDogRGl0dG8uCisgICAgICAgICog
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDogRGl0dG8uCisgICAgICAgICoganNjLnBybzogTGlu
ayBhZ2FpbnN0IEpTQyBhcyBzaGFyZWQgbGlicmFyeS4KKyAgICAgICAgKiBwYXJzZXIvTm9kZXMu
aDogVXNlIEpTX0VYUE9SVERBVEEuCisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOiBEaXR0by4K
KyAgICAgICAgKiBwYXJzZXIvUGFyc2VyQXJlbmEuaDogRGl0dG8uCisgICAgICAgICogcGNyZS9w
Y3JlLmg6IERpdHRvLgorICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGUuaDogVXNlIEpTX0VYUE9S
VERBVEEuCisgICAgICAgICogcHJvZmlsZXIvUHJvZmlsZXIuaDogVXNlIEpTX0VYUE9SVERBVEEg
YW5kIHJlcGxhY2UgUHJvZmlsZUdlbmVyYXRvcgorICAgICAgICBmb3J3YXJkIGRlY2xhcmF0aW9u
IHdpdGggaW5jbHVzaW9uIHRvIGZpeCBNU1ZDIGNvbXBpbGF0aW9uLCB3aGljaCByZXF1aXJlcwor
ICAgICAgICBpdHMgdmlzaWJsaXR5IHdoZW4gbWFya2luZyBQcm9maWxlciB3aXRoIGRsbGV4cG9y
dC4KKyAgICAgICAgKiBydW50aW1lL0FyZ0xpc3QuaDogVXNlIEpTX0VYUE9SVERBVEEuCisgICAg
ICAgICogcnVudGltZS9Cb29sZWFuT2JqZWN0Lmg6IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUv
Q2FsbERhdGEuaDogRGl0dG8uCisgICAgICAgICogcnVudGltZS9Db2xsZWN0b3IuaDogRGl0dG8u
CisgICAgICAgICogcnVudGltZS9Db21wbGV0aW9uLmg6IERpdHRvLgorICAgICAgICAqIHJ1bnRp
bWUvQ29uc3RydWN0RGF0YS5oOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL0RhdGVJbnN0YW5j
ZS5oOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL0Vycm9yLmg6IERpdHRvLgorICAgICAgICAq
IHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1l
L0lkZW50aWZpZXIuaDogRGl0dG8uCisgICAgICAgICogcnVudGltZS9Jbml0aWFsaXplVGhyZWFk
aW5nLmg6IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oOiBNb3Zl
ZCBKU19FWFBPUlREQVRBIGZyb20gSW50ZXJuYWxGdW5jdGlvbjo6aW5mbyB0bworICAgICAgICBJ
bnRlcm5hbEZ1bmN0aW9uLCB0byBleHBvcnQgdGhlIGVudGlyZSBjbGFzcy4KKyAgICAgICAgKiBy
dW50aW1lL0pTQXJyYXkuaDogVXNlIEpTX0VYUE9SVERBVEEuCisgICAgICAgICogcnVudGltZS9K
U0J5dGVBcnJheS5oOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5oOiBEaXR0by4K
KyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5oOiBEaXR0by4KKyAgICAgICAgKiBydW50
aW1lL0pTR2xvYmFsT2JqZWN0Lmg6IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvSlNJbW1lZGlh
dGUuaDogRGl0dG8uCisgICAgICAgICogcnVudGltZS9KU0xvY2suaDogRGl0dG8uCisgICAgICAg
ICogcnVudGltZS9KU051bWJlckNlbGwuaDogRGl0dG8uCisgICAgICAgICogcnVudGltZS9KU09i
amVjdC5oOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL0pTU3RyaW5nLmg6IERpdHRvLgorICAg
ICAgICAqIHJ1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oOiBEaXR0by4KKyAgICAgICAgKiBydW50
aW1lL0pTV3JhcHBlck9iamVjdC5oOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5o
OiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL051bWJlck9iamVjdC5oOiBEaXR0by4KKyAgICAg
ICAgKiBydW50aW1lL09iamVjdFByb3RvdHlwZS5oOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1l
L1Byb3BlcnR5TmFtZUFycmF5Lmg6IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvUHJvdG90eXBl
RnVuY3Rpb24uaDogRGl0dG8uCisgICAgICAgICogcnVudGltZS9SZWdFeHAuaDogRGl0dG8uCisg
ICAgICAgICogcnVudGltZS9SZWdFeHBPYmplY3QuaDogRGl0dG8uCisgICAgICAgICogcnVudGlt
ZS9TbWFsbFN0cmluZ3MuaDogRGl0dG8uCisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3Qu
aDogTW92ZWQgSlNfRVhQT1JUREFUQSBmcm9tIFN0cmluZ09iamVjdDo6aW5mbyB0byBTdHJpbmdP
YmplY3QsIHRvCisgICAgICAgIGV4cG9ydCB0aGUgZW50aXJlIGNsYXNzLgorICAgICAgICAqIHJ1
bnRpbWUvU3RydWN0dXJlLmg6IFVzZSBKU19FWFBPUlREQVRBLgorICAgICAgICAqIHJ1bnRpbWUv
VGltZW91dENoZWNrZXIuaDogRGl0dG8uCisgICAgICAgICogcnVudGltZS9VU3RyaW5nLmg6IFJl
cGxhY2VkIHNpbmdsZSBleHBvcnQgb2YgVVN0cmluZzo6UmVwOjp7bnVsbCxlbXB0eX1CYXNlU3Ry
aW5nIHdpdGgKKyAgICAgICAgZXhwb3J0IG9mIGVudGlyZSBjbGFzcy4KKyAgICAgICAgKiB3dGYv
Qnl0ZUFycmF5Lmg6IFVzZSBKU19FWFBPUlREQVRBLgorICAgICAgICAqIHd0Zi9DdXJyZW50VGlt
ZS5oOiBEaXR0by4KKyAgICAgICAgKiB3dGYvRmFzdE1hbGxvYy5oOiBEaXR0by4KKyAgICAgICAg
KiB3dGYvTWFpblRocmVhZC5oOiBEaXR0by4KKyAgICAgICAgKiB3dGYvUmFuZG9tTnVtYmVyLmg6
IERpdHRvLgorICAgICAgICAqIHd0Zi9UaHJlYWRpbmcuaDogRGl0dG8uCisgICAgICAgICogd3Rm
L2R0b2EuaDogRGl0dG8uCisgICAgICAgICogd3RmL3VuaWNvZGUvVVRGOC5oOiBEaXR0by4KKyAg
ICAgICAgKiB3dGYvdW5pY29kZS9VVEY4LmNwcDogSW5jbHVkZSBjb25maWcuaCBpbiBvcmRlciB0
byBjb21waWxlIHdpdGggTVNWQy4KKwogMjAwOS0wNy0yMiAgR2F2aW4gQmFycmFjbG91Z2ggIDxi
YXJyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4K
ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ogYi9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCmluZGV4IGUz
NWUxMTAuLjVlZTQ1ZjYgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oKKysrIGIvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjcHJvagpAQCAtMzgsNiArMzgsNyBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1l
PSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncz0iNDI1MSIN
CiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJU
b29sIg0KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9q
c2MvanNjLnZjcHJvaiBiL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9qc2Mv
anNjLnZjcHJvagppbmRleCBjZTJmZTA0Li4yMTVkOTVhIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovanNjL2pzYy52Y3Byb2oKKysrIGIvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL2pzYy9qc2MudmNwcm9qCkBAIC0zOCw2ICszOCw3
IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJ
CURpc2FibGVTcGVjaWZpY1dhcm5pbmdzPSI0MjUxOzQyNzMiDQogCQkJLz4NCiAJCQk8VG9vbA0K
IAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCmRpZmYgLS1naXQgYS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCAyZjllZjIzLi5mNDExOTBhIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE3Myw3ICsxNzMsNyBA
QAogCQk5NUFCODM0MjBEQTQzMjI1MDBCQzgzRjMgLyogUHJvZmlsZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTVBQjgzMkUwREE0MkNBRDAwQkM4
M0YzIC8qIFByb2ZpbGVyLmNwcCAqLzsgfTsKIAkJOTVBQjgzNTYwREE0M0MzMDAwQkM4M0YzIC8q
IFByb2ZpbGVOb2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk1QUI4MzU0MERBNDNCNDQwMEJDODNGMyAvKiBQcm9maWxlTm9kZS5jcHAgKi87IH07
CiAJCTk1Q0Q0NTc2MEUxQzRGREQwMDg1MzU4RSAvKiBQcm9maWxlR2VuZXJhdG9yLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1Q0Q0NTc0MEUxQzRG
REQwMDg1MzU4RSAvKiBQcm9maWxlR2VuZXJhdG9yLmNwcCAqLzsgfTsKLQkJOTVDRDQ1NzcwRTFD
NEZERDAwODUzNThFIC8qIFByb2ZpbGVHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1Q0Q0NTc1MEUxQzRGREQwMDg1MzU4RSAvKiBQcm9m
aWxlR2VuZXJhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKKwkJ
OTVDRDQ1NzcwRTFDNEZERDAwODUzNThFIC8qIFByb2ZpbGVHZW5lcmF0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1Q0Q0NTc1MEUxQzRGREQwMDg1
MzU4RSAvKiBQcm9maWxlR2VuZXJhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTVFM0JDMDUwRTFBRTY4MjAwQjJEMUMxIC8qIENhbGxJZGVu
dGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
NUUzQkMwNDBFMUFFNjgyMDBCMkQxQzEgLyogQ2FsbElkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5NUY2RTY5NTBFNUI1Rjk3MDA5
MUU4NjAgLyogSlNQcm9maWxlclByaXZhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTU5ODhCQTkwRTQ3N0JFQzAwRDI4RDREIC8qIEpTUHJvZmls
ZXJQcml2YXRlLmNwcCAqLzsgfTsKIAkJOTYwMDk3QTYwRUJBQkI1ODAwN0E3Mjk3IC8qIExhYmVs
U2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk2
MDA5N0E1MEVCQUJCNTgwMDdBNzI5NyAvKiBMYWJlbFNjb3BlLmggKi87IH07CmRpZmYgLS1naXQg
YS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDU0ZDAyODku
LjJhMDU5NzEgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5oCisrKyBiL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5oCkBAIC02MSw3ICs2MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBGaW5h
bGx5Q29udGV4dCBmaW5hbGx5Q29udGV4dDsKICAgICB9OwogCi0gICAgY2xhc3MgQnl0ZWNvZGVH
ZW5lcmF0b3IgOiBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsKKyAgICBjbGFzcyBKU19FWFBP
UlREQVRBIEJ5dGVjb2RlR2VuZXJhdG9yIDogcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7CiAg
ICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIERlY2xhcmF0aW9uU3RhY2tzOjpWYXJTdGFjayBW
YXJTdGFjazsKICAgICAgICAgdHlwZWRlZiBEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFj
ayBGdW5jdGlvblN0YWNrOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvY29uZmlnLmggYi9K
YXZhU2NyaXB0Q29yZS9jb25maWcuaAppbmRleCA2NjgxNzYxLi4xZTAyYWI3IDEwMDY0NAotLS0g
YS9KYXZhU2NyaXB0Q29yZS9jb25maWcuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9jb25maWcuaApA
QCAtMjUsMTQgKzI1LDE3IEBACiAKICNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KIAotI2lmIFBM
QVRGT1JNKFdJTl9PUykgJiYgIWRlZmluZWQoQlVJTERJTkdfV1hfXykgJiYgIUNPTVBJTEVSKEdD
QykKLSNpZiBkZWZpbmVkKEJVSUxESU5HX0phdmFTY3JpcHRDb3JlKSB8fCBkZWZpbmVkKEJVSUxE
SU5HX1dURikKLSNkZWZpbmUgSlNfRVhQT1JUREFUQSBfX2RlY2xzcGVjKGRsbGV4cG9ydCkKKyN1
bmRlZiBKU19FWFBPUlREQVRBCisjaWYgQ09NUElMRVIoR0NDKQorICAgICNkZWZpbmUgSlNfRVhQ
T1JUREFUQSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKQorI2VsaWYgUExB
VEZPUk0oV0lOX09TKSAmJiAhZGVmaW5lZChCVUlMRElOR19XWF9fKQorICAgICNpZiBkZWZpbmVk
KEJVSUxESU5HX0phdmFTY3JpcHRDb3JlKSB8fCBkZWZpbmVkKEJVSUxESU5HX1dURikKKyAgICAg
ICAgI2RlZmluZSBKU19FWFBPUlREQVRBIF9fZGVjbHNwZWMoZGxsZXhwb3J0KQorICAgICNlbHNl
CisgICAgICAgICNkZWZpbmUgSlNfRVhQT1JUREFUQSBfX2RlY2xzcGVjKGRsbGltcG9ydCkKKyAg
ICAjZW5kaWYKICNlbHNlCi0jZGVmaW5lIEpTX0VYUE9SVERBVEEgX19kZWNsc3BlYyhkbGxpbXBv
cnQpCi0jZW5kaWYKLSNlbHNlCi0jZGVmaW5lIEpTX0VYUE9SVERBVEEKKyAgICAjZGVmaW5lIEpT
X0VYUE9SVERBVEEKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oV0lOX09TKQpkaWZmIC0tZ2l0IGEv
SmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuaCBiL0phdmFTY3JpcHRDb3JlL2RlYnVn
Z2VyL0RlYnVnZ2VyLmgKaW5kZXggOThkMDkzNS4uNmI2YzlkMiAxMDA2NDQKLS0tIGEvSmF2YVNj
cmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dl
ci9EZWJ1Z2dlci5oCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNz
IFNvdXJjZUNvZGU7CiAgICAgY2xhc3MgVVN0cmluZzsKIAotICAgIGNsYXNzIERlYnVnZ2VyIHsK
KyAgICBjbGFzcyBKU19FWFBPUlREQVRBIERlYnVnZ2VyIHsKICAgICBwdWJsaWM6CiAgICAgICAg
IERlYnVnZ2VyKCk7CiAgICAgICAgIHZpcnR1YWwgfkRlYnVnZ2VyKCk7CmRpZmYgLS1naXQgYS9K
YXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5oIGIvSmF2YVNjcmlwdENv
cmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuaAppbmRleCA5ZDM3N2VmLi42OTY1NGYxIDEw
MDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5oCisr
KyBiL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmgKQEAgLTI1LDE1
ICsyNSwxNSBAQAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCi0gCisKICNp
Zm5kZWYgRGVidWdnZXJDYWxsRnJhbWVfaAogI2RlZmluZSBEZWJ1Z2dlckNhbGxGcmFtZV9oCiAK
ICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKIAogbmFtZXNwYWNlIEpTQyB7Ci0gICAgCi0gICAgY2xh
c3MgRGVidWdnZXJDYWxsRnJhbWUgeworCisgICAgY2xhc3MgSlNfRVhQT1JUREFUQSBEZWJ1Z2dl
ckNhbGxGcmFtZSB7CiAgICAgcHVibGljOgogICAgICAgICBlbnVtIFR5cGUgeyBQcm9ncmFtVHlw
ZSwgRnVuY3Rpb25UeXBlIH07CiAKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmggYi9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5oCmluZGV4IDUzMzFkOTIuLmVkMzIzMGQgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXIuaApAQCAtNjYsNyArNjYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGVu
dW0geyBNYXhNYWluVGhyZWFkUmVlbnRyeURlcHRoID0gMjU2LCBNYXhTZWNvbmRhcnlUaHJlYWRS
ZWVudHJ5RGVwdGggPSAzMiB9OwogCi0gICAgY2xhc3MgSW50ZXJwcmV0ZXIgOiBwdWJsaWMgRmFz
dEFsbG9jQmFzZSB7CisgICAgY2xhc3MgSlNfRVhQT1JUREFUQSBJbnRlcnByZXRlciA6IHB1Ymxp
YyBGYXN0QWxsb2NCYXNlIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKICAgICAgICAgZnJp
ZW5kIGNsYXNzIENhY2hlZENhbGw7CiAgICAgcHVibGljOgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL05vZGVzLmggYi9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRl
eCA4NGU4Yjk1Li43ZDEzNTI1IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9k
ZXMuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaApAQCAtMTU5LDcgKzE1OSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBpbnQgbV9saW5lOwogICAgIH07CiAKLSAgICBj
bGFzcyBFeHByZXNzaW9uTm9kZSA6IHB1YmxpYyBOb2RlIHsKKyAgICBjbGFzcyBKU19FWFBPUlRE
QVRBIEV4cHJlc3Npb25Ob2RlIDogcHVibGljIE5vZGUgewogICAgIHB1YmxpYzoKICAgICAgICAg
RXhwcmVzc2lvbk5vZGUoSlNHbG9iYWxEYXRhKiwgUmVzdWx0VHlwZSA9IFJlc3VsdFR5cGU6OnVu
a25vd25UeXBlKCkpOwogCkBAIC0xODcsNyArMTg3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIFJlc3VsdFR5cGUgbV9yZXN1bHRUeXBlOwogICAgIH07CiAKLSAgICBjbGFzcyBTdGF0ZW1l
bnROb2RlIDogcHVibGljIE5vZGUgeworICAgIGNsYXNzIEpTX0VYUE9SVERBVEEgU3RhdGVtZW50
Tm9kZSA6IHB1YmxpYyBOb2RlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFN0YXRlbWVudE5vZGUo
SlNHbG9iYWxEYXRhKik7CiAKQEAgLTE1MzksNyArMTUzOSw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBPd25QdHI8RXZhbENvZGVCbG9jaz4gbV9jb2RlOwogICAgIH07CiAKLSAgICBjbGFz
cyBGdW5jdGlvbkJvZHlOb2RlIDogcHVibGljIFNjb3BlTm9kZSB7CisgICAgY2xhc3MgSlNfRVhQ
T1JUREFUQSBGdW5jdGlvbkJvZHlOb2RlIDogcHVibGljIFNjb3BlTm9kZSB7CiAgICAgICAgIGZy
aWVuZCBjbGFzcyBKSVQ7CiAgICAgcHVibGljOgogI2lmIEVOQUJMRShKSVQpCmRpZmYgLS1naXQg
YS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmgKaW5kZXggMzczZGMwMC4uY2NlYmM5ZSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApA
QCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPiBzdHJ1Y3QgUGFyc2VyQXJlbmFEYXRhIDogUGFyc2VyQXJlbmFEZWxldGFibGUgeyBUIGRh
dGE7IH07CiAKLSAgICBjbGFzcyBQYXJzZXIgOiBwdWJsaWMgTm9uY29weWFibGUgeworICAgIGNs
YXNzIEpTX0VYUE9SVERBVEEgUGFyc2VyIDogcHVibGljIE5vbmNvcHlhYmxlIHsKICAgICBwdWJs
aWM6CiAgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBQYXJzZWROb2RlPiBQYXNzUmVmUHRyPFBhcnNl
ZE5vZGU+IHBhcnNlKEV4ZWNTdGF0ZSosIERlYnVnZ2VyKiwgY29uc3QgU291cmNlQ29kZSYsIGlu
dCogZXJyTGluZSA9IDAsIFVTdHJpbmcqIGVyck1zZyA9IDApOwogICAgICAgICB0ZW1wbGF0ZSA8
Y2xhc3MgUGFyc2VkTm9kZT4gUGFzc1JlZlB0cjxQYXJzZWROb2RlPiByZXBhcnNlKEpTR2xvYmFs
RGF0YSosIFBhcnNlZE5vZGUqKTsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXJBcmVuYS5oIGIvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmgKaW5kZXgg
NjZjODUyOS4uNTQ5YjdkZCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ckFyZW5hLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmgKQEAgLTM1
LDcgKzM1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgUGFyc2VyQXJlbmFEZWxldGFi
bGU7CiAgICAgY2xhc3MgUGFyc2VyQXJlbmFSZWZDb3VudGVkOwogCi0gICAgY2xhc3MgUGFyc2Vy
QXJlbmEgeworICAgIGNsYXNzIEpTX0VYUE9SVERBVEEgUGFyc2VyQXJlbmEgewogICAgIHB1Ymxp
YzoKICAgICAgICAgdm9pZCBzd2FwKFBhcnNlckFyZW5hJiBvdGhlckFyZW5hKQogICAgICAgICB7
CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9wY3JlL3BjcmUuaCBiL0phdmFTY3JpcHRDb3Jl
L3BjcmUvcGNyZS5oCmluZGV4IDU1MDQ0ZmQuLmIyMGQ5MGQgMTAwNjQ0Ci0tLSBhL0phdmFTY3Jp
cHRDb3JlL3BjcmUvcGNyZS5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3BjcmUvcGNyZS5oCkBAIC01
NSwxNCArNTUsMTQgQEAgY29uc3QgaW50IEpTUmVnRXhwRXJyb3JIaXRMaW1pdCA9IC0yOwogY29u
c3QgaW50IEpTUmVnRXhwRXJyb3JOb01lbW9yeSA9IC0zOwogY29uc3QgaW50IEpTUmVnRXhwRXJy
b3JJbnRlcm5hbCA9IC00OwogCi1KU1JlZ0V4cCoganNSZWdFeHBDb21waWxlKGNvbnN0IFVDaGFy
KiBwYXR0ZXJuLCBpbnQgcGF0dGVybkxlbmd0aCwKK0pTX0VYUE9SVERBVEEgSlNSZWdFeHAqIGpz
UmVnRXhwQ29tcGlsZShjb25zdCBVQ2hhciogcGF0dGVybiwgaW50IHBhdHRlcm5MZW5ndGgsCiAg
ICAgSlNSZWdFeHBJZ25vcmVDYXNlT3B0aW9uLCBKU1JlZ0V4cE11bHRpbGluZU9wdGlvbiwKICAg
ICB1bnNpZ25lZCogbnVtU3VicGF0dGVybnMsIGNvbnN0IGNoYXIqKiBlcnJvck1lc3NhZ2UpOwog
Ci1pbnQganNSZWdFeHBFeGVjdXRlKGNvbnN0IEpTUmVnRXhwKiwKK0pTX0VYUE9SVERBVEEgaW50
IGpzUmVnRXhwRXhlY3V0ZShjb25zdCBKU1JlZ0V4cCosCiAgICAgY29uc3QgVUNoYXIqIHN1Ympl
Y3QsIGludCBzdWJqZWN0TGVuZ3RoLCBpbnQgc3RhcnRPZmZzZXQsCiAgICAgaW50KiBvZmZzZXRz
VmVjdG9yLCBpbnQgb2Zmc2V0c1ZlY3Rvckxlbmd0aCk7CiAKLXZvaWQganNSZWdFeHBGcmVlKEpT
UmVnRXhwKik7CitKU19FWFBPUlREQVRBIHZvaWQganNSZWdFeHBGcmVlKEpTUmVnRXhwKik7CiAK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZS5oIGIv
SmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZS5oCmluZGV4IDZiZjI5ZjcuLmFmMzMyNDMg
MTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGUuaAorKysgYi9KYXZh
U2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlLmgKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNw
YWNlIEpTQyB7CiAKLSAgICBjbGFzcyBQcm9maWxlIDogcHVibGljIFJlZkNvdW50ZWQ8UHJvZmls
ZT4geworICAgIGNsYXNzIEpTX0VYUE9SVERBVEEgUHJvZmlsZSA6IHB1YmxpYyBSZWZDb3VudGVk
PFByb2ZpbGU+IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFByb2Zp
bGU+IGNyZWF0ZShjb25zdCBVU3RyaW5nJiB0aXRsZSwgdW5zaWduZWQgdWlkKTsKICAgICAgICAg
dmlydHVhbCB+UHJvZmlsZSgpOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIv
UHJvZmlsZXIuaCBiL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyLmgKaW5kZXggODY5
ZjQxOS4uMjRkZDEyYiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmls
ZXIuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlci5oCkBAIC0zMCw2ICsz
MCw3IEBACiAjZGVmaW5lIFByb2ZpbGVyX2gKIAogI2luY2x1ZGUgIlByb2ZpbGUuaCIKKyNpbmNs
dWRlICJQcm9maWxlR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNDEsMTcg
KzQyLDE2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTR2xvYmFsRGF0YTsKICAgICBj
bGFzcyBKU09iamVjdDsKICAgICBjbGFzcyBKU1ZhbHVlOwotICAgIGNsYXNzIFByb2ZpbGVHZW5l
cmF0b3I7CiAgICAgY2xhc3MgVVN0cmluZzsKIAotICAgIGNsYXNzIFByb2ZpbGVyIDogcHVibGlj
IEZhc3RBbGxvY0Jhc2UgeworICAgIGNsYXNzIEpTX0VYUE9SVERBVEEgUHJvZmlsZXIgOiBwdWJs
aWMgRmFzdEFsbG9jQmFzZSB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgUHJvZmlsZXIq
KiBlbmFibGVkUHJvZmlsZXJSZWZlcmVuY2UoKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1
cm4gJnNfc2hhcmVkRW5hYmxlZFByb2ZpbGVyUmVmZXJlbmNlOwogICAgICAgICB9CiAKLSAgICAg
ICAgc3RhdGljIFByb2ZpbGVyKiBwcm9maWxlcigpOyAKKyAgICAgICAgc3RhdGljIFByb2ZpbGVy
KiBwcm9maWxlcigpOwogICAgICAgICBzdGF0aWMgQ2FsbElkZW50aWZpZXIgY3JlYXRlQ2FsbElk
ZW50aWZpZXIoSlNHbG9iYWxEYXRhKiwgSlNWYWx1ZSwgY29uc3QgVVN0cmluZyYgc291cmNlVVJM
LCBpbnQgbGluZU51bWJlcik7CiAKICAgICAgICAgdm9pZCBzdGFydFByb2ZpbGluZyhFeGVjU3Rh
dGUqLCBjb25zdCBVU3RyaW5nJiB0aXRsZSk7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FyZ0xpc3QuaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5oCmluZGV4
IDA4OTllODUuLjhlOWI5NmEgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJn
TGlzdC5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5oCkBAIC0zMSw3ICsz
MSw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogICAgIAotICAgIGNsYXNzIE1hcmtlZEFyZ3VtZW50
QnVmZmVyIDogcHVibGljIE5vbmNvcHlhYmxlIHsKKyAgICBjbGFzcyBKU19FWFBPUlREQVRBIE1h
cmtlZEFyZ3VtZW50QnVmZmVyIDogcHVibGljIE5vbmNvcHlhYmxlIHsKICAgICBwcml2YXRlOgog
ICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW5saW5lQ2FwYWNpdHkgPSA4OwogICAgICAg
ICB0eXBlZGVmIFZlY3RvcjxSZWdpc3RlciwgaW5saW5lQ2FwYWNpdHk+IFZlY3RvclR5cGU7CkBA
IC0xNzEsNyArMTcxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgb3BlcmF0b3Ig
ZGVsZXRlKHZvaWQqLCBzaXplX3QpOwogICAgIH07CiAKLSAgICBjbGFzcyBBcmdMaXN0IHsKKyAg
ICBjbGFzcyBKU19FWFBPUlREQVRBIEFyZ0xpc3QgewogICAgICAgICBmcmllbmQgY2xhc3MgSklU
OwogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBKU1ZhbHVlKiBpdGVyYXRvcjsKZGlmZiAt
LWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbk9iamVjdC5oIGIvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Cb29sZWFuT2JqZWN0LmgKaW5kZXggY2ZkNTVmZS4uZTQxYjYxZSAxMDA2
NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuT2JqZWN0LmgKKysrIGIvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuT2JqZWN0LmgKQEAgLTI1LDcgKzI1LDcgQEAKIAog
bmFtZXNwYWNlIEpTQyB7CiAKLSAgICBjbGFzcyBCb29sZWFuT2JqZWN0IDogcHVibGljIEpTV3Jh
cHBlck9iamVjdCB7CisgICAgY2xhc3MgSlNfRVhQT1JUREFUQSBCb29sZWFuT2JqZWN0IDogcHVi
bGljIEpTV3JhcHBlck9iamVjdCB7CiAgICAgcHVibGljOgogICAgICAgICBleHBsaWNpdCBCb29s
ZWFuT2JqZWN0KFBhc3NSZWZQdHI8U3RydWN0dXJlPik7CiAKZGlmZiAtLWdpdCBhL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ2FsbERhdGEuaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FsbERh
dGEuaAppbmRleCBkNWIwMTcyLi4wZTE1MDMxIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NhbGxEYXRhLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWxsRGF0YS5o
CkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTVmFsdWU7CiAg
ICAgY2xhc3MgU2NvcGVDaGFpbk5vZGU7CiAKLSAgICBlbnVtIENhbGxUeXBlIHsKKyAgICBlbnVt
IEpTX0VYUE9SVERBVEEgQ2FsbFR5cGUgewogICAgICAgICBDYWxsVHlwZU5vbmUsCiAgICAgICAg
IENhbGxUeXBlSG9zdCwKICAgICAgICAgQ2FsbFR5cGVKUwpAQCAtNDgsNyArNDgsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgIHR5cGVkZWYgSlNWYWx1ZSAoSlNDX0hPU1RfQ0FMTCAqTmF0aXZl
RnVuY3Rpb24pKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0
IEFyZ0xpc3QmKTsKIAotICAgIHVuaW9uIENhbGxEYXRhIHsKKyAgICB1bmlvbiBKU19FWFBPUlRE
QVRBIENhbGxEYXRhIHsKICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgIE5hdGl2ZUZ1bmN0
aW9uIGZ1bmN0aW9uOwogICAgICAgICB9IG5hdGl2ZTsKQEAgLTU4LDcgKzU4LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIH0ganM7CiAgICAgfTsKIAotICAgIEpTVmFsdWUgY2FsbChFeGVj
U3RhdGUqLCBKU1ZhbHVlIGZ1bmN0aW9uT2JqZWN0LCBDYWxsVHlwZSwgY29uc3QgQ2FsbERhdGEm
LCBKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgQXJnTGlzdCYpOworICAgIEpTX0VYUE9SVERBVEEg
SlNWYWx1ZSBjYWxsKEV4ZWNTdGF0ZSosIEpTVmFsdWUgZnVuY3Rpb25PYmplY3QsIENhbGxUeXBl
LCBjb25zdCBDYWxsRGF0YSYsIEpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0Jik7CiAK
IH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbGxlY3Rvci5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2xsZWN0b3IuaAppbmRleCA4
NTJhYzU5Li5kMDk2M2ZhIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbGxl
Y3Rvci5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29sbGVjdG9yLmgKQEAgLTYzLDcg
KzYzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE9wZXJhdGlvbkluUHJvZ3Jlc3Mgb3Bl
cmF0aW9uSW5Qcm9ncmVzczsKICAgICB9OwogCi0gICAgY2xhc3MgSGVhcCA6IHB1YmxpYyBOb25j
b3B5YWJsZSB7CisgICAgY2xhc3MgSlNfRVhQT1JUREFUQSBIZWFwIDogcHVibGljIE5vbmNvcHlh
YmxlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIGNsYXNzIFRocmVhZDsKICAgICAgICAgdHlwZWRl
ZiBDb2xsZWN0b3JIZWFwSXRlcmF0b3I8UHJpbWFyeUhlYXA+IGl0ZXJhdG9yOwpkaWZmIC0tZ2l0
IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmggYi9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbXBsZXRpb24uaAppbmRleCA0MWM5YTY0Li4xMGY3ZmJhIDEwMDY0NAotLS0gYS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uaAorKysgYi9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbXBsZXRpb24uaApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgKiBDb21wbGV0aW9uIG9iamVjdHMgYXJlIHVzZWQgdG8gY29udmV5IHRoZSByZXR1cm4gc3Rh
dHVzIGFuZCB2YWx1ZQogICAgICAqIGZyb20gZnVuY3Rpb25zLgogICAgICAqLwotICAgIGNsYXNz
IENvbXBsZXRpb24geworICAgIGNsYXNzIEpTX0VYUE9SVERBVEEgQ29tcGxldGlvbiB7CiAgICAg
cHVibGljOgogICAgICAgICBDb21wbGV0aW9uKENvbXBsVHlwZSB0eXBlID0gTm9ybWFsLCBKU1Zh
bHVlIHZhbHVlID0gSlNWYWx1ZSgpKQogICAgICAgICAgICAgOiBtX3R5cGUodHlwZSkKQEAgLTU1
LDggKzU1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTVmFsdWUgbV92YWx1ZTsKICAg
ICB9OwogCi0gICAgQ29tcGxldGlvbiBjaGVja1N5bnRheChFeGVjU3RhdGUqLCBjb25zdCBTb3Vy
Y2VDb2RlJik7Ci0gICAgQ29tcGxldGlvbiBldmFsdWF0ZShFeGVjU3RhdGUqLCBTY29wZUNoYWlu
JiwgY29uc3QgU291cmNlQ29kZSYsIEpTVmFsdWUgdGhpc1ZhbHVlID0gSlNWYWx1ZSgpKTsKKyAg
ICBKU19FWFBPUlREQVRBIENvbXBsZXRpb24gY2hlY2tTeW50YXgoRXhlY1N0YXRlKiwgY29uc3Qg
U291cmNlQ29kZSYpOworICAgIEpTX0VYUE9SVERBVEEgQ29tcGxldGlvbiBldmFsdWF0ZShFeGVj
U3RhdGUqLCBTY29wZUNoYWluJiwgY29uc3QgU291cmNlQ29kZSYsIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gSlNWYWx1ZSgpKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29uc3RydWN0RGF0YS5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db25zdHJ1Y3REYXRhLmgKaW5kZXggOWQ1ODBkNS4uZmRiYjM5NiAxMDA2NDQKLS0tIGEvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db25zdHJ1Y3REYXRhLmgKKysrIGIvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db25zdHJ1Y3REYXRhLmgKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgY2xhc3MgSlNWYWx1ZTsKICAgICBjbGFzcyBTY29wZUNoYWluTm9kZTsKIAotICAgIGVu
dW0gQ29uc3RydWN0VHlwZSB7CisgICAgZW51bSBKU19FWFBPUlREQVRBIENvbnN0cnVjdFR5cGUg
ewogICAgICAgICBDb25zdHJ1Y3RUeXBlTm9uZSwKICAgICAgICAgQ29uc3RydWN0VHlwZUhvc3Qs
CiAgICAgICAgIENvbnN0cnVjdFR5cGVKUwpAQCAtNDYsNyArNDYsNyBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgIHR5cGVkZWYgSlNPYmplY3QqICgqTmF0aXZlQ29uc3RydWN0b3IpKEV4ZWNTdGF0
ZSosIEpTT2JqZWN0KiwgY29uc3QgQXJnTGlzdCYpOwogCi0gICAgdW5pb24gQ29uc3RydWN0RGF0
YSB7CisgICAgdW5pb24gSlNfRVhQT1JUREFUQSBDb25zdHJ1Y3REYXRhIHsKICAgICAgICAgc3Ry
dWN0IHsKICAgICAgICAgICAgIE5hdGl2ZUNvbnN0cnVjdG9yIGZ1bmN0aW9uOwogICAgICAgICB9
IG5hdGl2ZTsKQEAgLTU2LDcgKzU2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0ganM7
CiAgICAgfTsKIAotICAgIEpTT2JqZWN0KiBjb25zdHJ1Y3QoRXhlY1N0YXRlKiwgSlNWYWx1ZSBj
b25zdHJ1Y3RvciwgQ29uc3RydWN0VHlwZSwgY29uc3QgQ29uc3RydWN0RGF0YSYsIGNvbnN0IEFy
Z0xpc3QmKTsKKyAgICBKU19FWFBPUlREQVRBIEpTT2JqZWN0KiBjb25zdHJ1Y3QoRXhlY1N0YXRl
KiwgSlNWYWx1ZSBjb25zdHJ1Y3RvciwgQ29uc3RydWN0VHlwZSwgY29uc3QgQ29uc3RydWN0RGF0
YSYsIGNvbnN0IEFyZ0xpc3QmKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBh
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmggYi9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0RhdGVJbnN0YW5jZS5oCmluZGV4IDNiNzM1MjEuLjBjMjc2M2MgMTAwNjQ0Ci0tLSBh
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmgKKysrIGIvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9EYXRlSW5zdGFuY2UuaApAQCAtMjksNyArMjksNyBAQCBuYW1lc3BhY2UgV1RG
IHsKIAogbmFtZXNwYWNlIEpTQyB7CiAKLSAgICBjbGFzcyBEYXRlSW5zdGFuY2UgOiBwdWJsaWMg
SlNXcmFwcGVyT2JqZWN0IHsKKyAgICBjbGFzcyBKU19FWFBPUlREQVRBIERhdGVJbnN0YW5jZSA6
IHB1YmxpYyBKU1dyYXBwZXJPYmplY3QgewogICAgIHB1YmxpYzoKICAgICAgICAgZXhwbGljaXQg
RGF0ZUluc3RhbmNlKFBhc3NSZWZQdHI8U3RydWN0dXJlPik7CiAgICAgICAgIHZpcnR1YWwgfkRh
dGVJbnN0YW5jZSgpOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5o
IGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oCmluZGV4IGFkZjdmZGYuLmNkMWZhYzkg
MTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaAorKysgYi9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Vycm9yLmgKQEAgLTU1LDEwICs1NSwxMCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgc3RhdGljIEpTT2JqZWN0KiBjcmVhdGUoRXhlY1N0YXRlKiwgRXJyb3JUeXBl
LCBjb25zdCBjaGFyKiBtZXNzYWdlKTsKICAgICB9OwogCi0gICAgSlNPYmplY3QqIHRocm93RXJy
b3IoRXhlY1N0YXRlKiwgRXJyb3JUeXBlLCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlLCBpbnQgbGlu
ZU51bWJlciwgaW50cHRyX3Qgc291cmNlSUQsIGNvbnN0IFVTdHJpbmcmIHNvdXJjZVVSTCk7Ci0g
ICAgSlNPYmplY3QqIHRocm93RXJyb3IoRXhlY1N0YXRlKiwgRXJyb3JUeXBlLCBjb25zdCBVU3Ry
aW5nJiBtZXNzYWdlKTsKLSAgICBKU09iamVjdCogdGhyb3dFcnJvcihFeGVjU3RhdGUqLCBFcnJv
clR5cGUsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpOwotICAgIEpTT2JqZWN0KiB0aHJvd0Vycm9yKEV4
ZWNTdGF0ZSosIEVycm9yVHlwZSk7CisgICAgSlNfRVhQT1JUREFUQSBKU09iamVjdCogdGhyb3dF
cnJvcihFeGVjU3RhdGUqLCBFcnJvclR5cGUsIGNvbnN0IFVTdHJpbmcmIG1lc3NhZ2UsIGludCBs
aW5lTnVtYmVyLCBpbnRwdHJfdCBzb3VyY2VJRCwgY29uc3QgVVN0cmluZyYgc291cmNlVVJMKTsK
KyAgICBKU19FWFBPUlREQVRBIEpTT2JqZWN0KiB0aHJvd0Vycm9yKEV4ZWNTdGF0ZSosIEVycm9y
VHlwZSwgY29uc3QgVVN0cmluZyYgbWVzc2FnZSk7CisgICAgSlNfRVhQT1JUREFUQSBKU09iamVj
dCogdGhyb3dFcnJvcihFeGVjU3RhdGUqLCBFcnJvclR5cGUsIGNvbnN0IGNoYXIqIG1lc3NhZ2Up
OworICAgIEpTX0VYUE9SVERBVEEgSlNPYmplY3QqIHRocm93RXJyb3IoRXhlY1N0YXRlKiwgRXJy
b3JUeXBlKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgKaW5kZXggMTI0YjM1NC4uYzdiNzdmMiAxMDA2NDQKLS0t
IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgKKysrIGIvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgKQEAgLTI5LDcgKzI5LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgUHJvZ3JhbU5vZGU7CiAgICAgY2xhc3MgRnVu
Y3Rpb25Cb2R5Tm9kZTsKIAotICAgIGNsYXNzIEZ1bmN0aW9uQ29uc3RydWN0b3IgOiBwdWJsaWMg
SW50ZXJuYWxGdW5jdGlvbiB7CisgICAgY2xhc3MgSlNfRVhQT1JUREFUQSBGdW5jdGlvbkNvbnN0
cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewogICAgIHB1YmxpYzoKICAgICAgICAg
RnVuY3Rpb25Db25zdHJ1Y3RvcihFeGVjU3RhdGUqLCBQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIEZ1
bmN0aW9uUHJvdG90eXBlKik7CiAKQEAgLTM4LDEwICszOCwxMCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgdmlydHVhbCBDYWxsVHlwZSBnZXRDYWxsRGF0YShDYWxsRGF0YSYpOwogICAgIH07
CiAKLSAgICBKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiwgY29uc3QgQXJn
TGlzdCYsIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwgY29uc3QgVVN0cmluZyYgc291
cmNlVVJMLCBpbnQgbGluZU51bWJlcik7Ci0gICAgSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9u
KEV4ZWNTdGF0ZSosIGNvbnN0IEFyZ0xpc3QmKTsKKyAgICBKU19FWFBPUlREQVRBIEpTT2JqZWN0
KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqLCBjb25zdCBBcmdMaXN0JiwgY29uc3QgSWRl
bnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBVU3RyaW5nJiBzb3VyY2VVUkwsIGludCBsaW5l
TnVtYmVyKTsKKyAgICBKU19FWFBPUlREQVRBIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihF
eGVjU3RhdGUqLCBjb25zdCBBcmdMaXN0Jik7CiAKLSAgICBGdW5jdGlvbkJvZHlOb2RlKiBleHRy
YWN0RnVuY3Rpb25Cb2R5KFByb2dyYW1Ob2RlKik7CisgICAgSlNfRVhQT1JUREFUQSBGdW5jdGlv
bkJvZHlOb2RlKiBleHRyYWN0RnVuY3Rpb25Cb2R5KFByb2dyYW1Ob2RlKik7CiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZp
ZXIuaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCmluZGV4IDYzMWNmNDIu
LmEwZDk2NzEgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5o
CisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCkBAIC0yOCw3ICsyOCw3
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRXhlY1N0YXRlOwogCi0gICAgY2xhc3Mg
SWRlbnRpZmllciB7CisgICAgY2xhc3MgSlNfRVhQT1JUREFUQSBJZGVudGlmaWVyIHsKICAgICAg
ICAgZnJpZW5kIGNsYXNzIFN0cnVjdHVyZTsKICAgICBwdWJsaWM6CiAgICAgICAgIElkZW50aWZp
ZXIoKSB7IH0KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRo
cmVhZGluZy5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmgK
aW5kZXggMWE5M2NjYi4uZDgzOTdlMCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Jbml0aWFsaXplVGhyZWFkaW5nLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0
aWFsaXplVGhyZWFkaW5nLmgKQEAgLTI1LDcgKzI1LDcgQEAKICAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgog
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwotIAorCiAjaWZuZGVmIEluaXRpYWxpemVUaHJlYWRpbmdfaAogI2Rl
ZmluZSBJbml0aWFsaXplVGhyZWFkaW5nX2gKIApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgIC8vIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQgZnJvbSB0aGUgbWFp
biB0aHJlYWQuIEl0IGlzIHNhZmUgdG8gY2FsbCBpdCByZXBlYXRlZGx5LgogICAgIC8vIERhcndp
biBpcyBhbiBleGNlcHRpb24gdG8gdGhpcyBydWxlOiBpdCBpcyBPSyB0byBjYWxsIHRoaXMgZnVu
Y3Rpb24gZnJvbSBhbnkgdGhyZWFkLCBldmVuIHJlZW50cmFudGx5LgotICAgIHZvaWQgaW5pdGlh
bGl6ZVRocmVhZGluZygpOworICAgIEpTX0VYUE9SVERBVEEgdm9pZCBpbml0aWFsaXplVGhyZWFk
aW5nKCk7CiAKIH0KIApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5h
bEZ1bmN0aW9uLmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaApp
bmRleCAzMTA2NDRjLi5jOWVhMjdiIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGVybmFsRnVuY3Rpb24uaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFs
RnVuY3Rpb24uaApAQCAtMzEsMTAgKzMxLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xh
c3MgRnVuY3Rpb25Qcm90b3R5cGU7CiAKLSAgICBjbGFzcyBJbnRlcm5hbEZ1bmN0aW9uIDogcHVi
bGljIEpTT2JqZWN0IHsKKyAgICBjbGFzcyBKU19FWFBPUlREQVRBIEludGVybmFsRnVuY3Rpb24g
OiBwdWJsaWMgSlNPYmplY3QgewogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCBjb25zdCBD
bGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0OyAKLSAgICAgICAgc3RhdGljIEpTX0VYUE9SVERB
VEEgY29uc3QgQ2xhc3NJbmZvIGluZm87CisgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8g
aW5mbzsKIAogICAgICAgICBjb25zdCBVU3RyaW5nJiBuYW1lKEpTR2xvYmFsRGF0YSopOwogICAg
ICAgICBjb25zdCBVU3RyaW5nIGRpc3BsYXlOYW1lKEpTR2xvYmFsRGF0YSopOwpkaWZmIC0tZ2l0
IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmggYi9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXkuaAppbmRleCBlYTQ5MGQ4Li40YzBhY2M5IDEwMDY0NAotLS0gYS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyYXkuaApAQCAtMTEyLDEwICsxMTIsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBKU0Fy
cmF5KiBhc0FycmF5KEpTVmFsdWUpOwogCi0gICAgSlNBcnJheSogY29uc3RydWN0RW1wdHlBcnJh
eShFeGVjU3RhdGUqKTsKLSAgICBKU0FycmF5KiBjb25zdHJ1Y3RFbXB0eUFycmF5KEV4ZWNTdGF0
ZSosIHVuc2lnbmVkIGluaXRpYWxMZW5ndGgpOwotICAgIEpTQXJyYXkqIGNvbnN0cnVjdEFycmF5
KEV4ZWNTdGF0ZSosIEpTVmFsdWUgc2luZ2xlSXRlbVZhbHVlKTsKLSAgICBKU0FycmF5KiBjb25z
dHJ1Y3RBcnJheShFeGVjU3RhdGUqLCBjb25zdCBBcmdMaXN0JiB2YWx1ZXMpOworICAgIEpTX0VY
UE9SVERBVEEgSlNBcnJheSogY29uc3RydWN0RW1wdHlBcnJheShFeGVjU3RhdGUqKTsKKyAgICBK
U19FWFBPUlREQVRBIEpTQXJyYXkqIGNvbnN0cnVjdEVtcHR5QXJyYXkoRXhlY1N0YXRlKiwgdW5z
aWduZWQgaW5pdGlhbExlbmd0aCk7CisgICAgSlNfRVhQT1JUREFUQSBKU0FycmF5KiBjb25zdHJ1
Y3RBcnJheShFeGVjU3RhdGUqLCBKU1ZhbHVlIHNpbmdsZUl0ZW1WYWx1ZSk7CisgICAgSlNfRVhQ
T1JUREFUQSBKU0FycmF5KiBjb25zdHJ1Y3RBcnJheShFeGVjU3RhdGUqLCBjb25zdCBBcmdMaXN0
JiB2YWx1ZXMpOwogCiAgICAgaW5saW5lIEpTQXJyYXkqIGFzQXJyYXkoSlNWYWx1ZSB2YWx1ZSkK
ICAgICB7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5Lmgg
Yi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5LmgKaW5kZXggNTczNzRlMC4uODY2
YjhhZSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJheS5oCisr
KyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuaApAQCAtMzIsNyArMzIsNyBA
QAogCiBuYW1lc3BhY2UgSlNDIHsKIAotICAgIGNsYXNzIEpTQnl0ZUFycmF5IDogcHVibGljIEpT
T2JqZWN0IHsKKyAgICBjbGFzcyBKU19FWFBPUlREQVRBIEpTQnl0ZUFycmF5IDogcHVibGljIEpT
T2JqZWN0IHsKICAgICAgICAgZnJpZW5kIGNsYXNzIFZQdHJTZXQ7CiAgICAgcHVibGljOgogICAg
ICAgICBib29sIGNhbkFjY2Vzc0luZGV4KHVuc2lnbmVkIGkpIHsgcmV0dXJuIGkgPCBtX3N0b3Jh
Z2UtPmxlbmd0aCgpOyB9CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2Vs
bC5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAppbmRleCAzMmFhMjJiLi5mOWFl
OTNkIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCisrKyBiL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFtZXNw
YWNlIEpTQyB7CiAKLSAgICBjbGFzcyBKU0NlbGwgOiBwdWJsaWMgTm9uY29weWFibGVDdXN0b21B
bGxvY2F0ZWQgeworICAgIGNsYXNzIEpTX0VYUE9SVERBVEEgSlNDZWxsIDogcHVibGljIE5vbmNv
cHlhYmxlQ3VzdG9tQWxsb2NhdGVkIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEdldHRlclNldHRl
cjsKICAgICAgICAgZnJpZW5kIGNsYXNzIEhlYXA7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7
CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oIGIvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAppbmRleCA5NmEzYzJjLi5iMDhlZjE2
IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCisrKyBi
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgKQEAgLTYxLDcgKzYxLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgc3RydWN0IEhhc2hUYWJsZTsKICAgICBzdHJ1Y3QgVlB0clNl
dDsKIAotICAgIGNsYXNzIEpTR2xvYmFsRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPEpTR2xvYmFs
RGF0YT4geworICAgIGNsYXNzIEpTX0VYUE9SVERBVEEgSlNHbG9iYWxEYXRhIDogcHVibGljIFJl
ZkNvdW50ZWQ8SlNHbG9iYWxEYXRhPiB7CiAgICAgcHVibGljOgogICAgICAgICBzdHJ1Y3QgQ2xp
ZW50RGF0YSB7CiAgICAgICAgICAgICB2aXJ0dWFsIH5DbGllbnREYXRhKCkgPSAwOwpkaWZmIC0t
Z2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDdhYjc1OWQuLjgyZjEzNjggMTAw
NjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTUxLDcgKzUxLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICB0eXBlZGVmIFZlY3RvcjxFeGVjU3RhdGUqLCAxNj4gRXhl
Y1N0YXRlU3RhY2s7CiAKLSAgICBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1Zhcmlh
YmxlT2JqZWN0IHsKKyAgICBjbGFzcyBKU19FWFBPUlREQVRBIEpTR2xvYmFsT2JqZWN0IDogcHVi
bGljIEpTVmFyaWFibGVPYmplY3QgewogICAgIHByb3RlY3RlZDoKICAgICAgICAgdXNpbmcgSlNW
YXJpYWJsZU9iamVjdDo6SlNWYXJpYWJsZU9iamVjdERhdGE7CiAKZGlmZiAtLWdpdCBhL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNJbW1lZGlhdGUuaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNJbW1lZGlhdGUuaAppbmRleCA3MDYzOTZlLi5kZjg4NWE5IDEwMDY0NAotLS0gYS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTSW1tZWRpYXRlLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0ltbWVkaWF0ZS5oCkBAIC0xMjksNyArMTI5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICogdmFsdWVzIGFyZSBlbmNvZGVkIGluIHRoZSBzYW1lIG1hbm5lciBhcyB0aGUgZGVmYXVsdCBm
b3JtYXQuCiAgICAgICovCiAKLSAgICBjbGFzcyBKU0ltbWVkaWF0ZSB7CisgICAgY2xhc3MgSlNf
RVhQT1JUREFUQSBKU0ltbWVkaWF0ZSB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNs
YXNzIEpJVDsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpTVmFsdWU7CkBAIC01NDIsMTAgKzU0Miwx
MCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9CiAKICAgICAvLyBUaGVzZSBhcmUgaWRlbnRpY2Fs
IGxvZ2ljIHRvIHRoZSBKU1ZhbHVlIGZ1bmN0aW9ucyBhYm92ZSwgYW5kIGZhc3RlciB0aGFuIGpz
TnVtYmVyKG51bWJlcikudG9JbnQzMigpLgotICAgIGludDMyX3QgdG9JbnQzMihkb3VibGUpOwot
ICAgIHVpbnQzMl90IHRvVUludDMyKGRvdWJsZSk7Ci0gICAgaW50MzJfdCB0b0ludDMyU2xvd0Nh
c2UoZG91YmxlLCBib29sJiBvayk7Ci0gICAgdWludDMyX3QgdG9VSW50MzJTbG93Q2FzZShkb3Vi
bGUsIGJvb2wmIG9rKTsKKyAgICBKU19FWFBPUlREQVRBIGludDMyX3QgdG9JbnQzMihkb3VibGUp
OworICAgIEpTX0VYUE9SVERBVEEgdWludDMyX3QgdG9VSW50MzIoZG91YmxlKTsKKyAgICBKU19F
WFBPUlREQVRBIGludDMyX3QgdG9JbnQzMlNsb3dDYXNlKGRvdWJsZSwgYm9vbCYgb2spOworICAg
IEpTX0VYUE9SVERBVEEgdWludDMyX3QgdG9VSW50MzJTbG93Q2FzZShkb3VibGUsIGJvb2wmIG9r
KTsKIAogICAgIGlubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKEpTTnVsbFRhZykKICAgICB7CmRpZmYg
LS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oIGIvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0xvY2suaAppbmRleCA3MGY2YTYyLi4xMmZlMGUxIDEwMDY0NAotLS0gYS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNMb2NrLmgKQEAgLTUwLDcgKzUwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBF
eGVjU3RhdGU7CiAKLSAgICBjbGFzcyBKU0xvY2sgOiBwdWJsaWMgTm9uY29weWFibGUgeworICAg
IGNsYXNzIEpTX0VYUE9SVERBVEEgSlNMb2NrIDogcHVibGljIE5vbmNvcHlhYmxlIHsKICAgICBw
dWJsaWM6CiAgICAgICAgIEpTTG9jayhFeGVjU3RhdGUqKTsKIApkaWZmIC0tZ2l0IGEvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU051bWJlckNlbGwuaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNOdW1iZXJDZWxsLmgKaW5kZXggYTM1ZTIxMC4uNjUwZTU3YiAxMDA2NDQKLS0tIGEvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU051bWJlckNlbGwuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTnVtYmVyQ2VsbC5oCkBAIC0zMiwxMSArMzIsMTEgQEAKIAogbmFtZXNwYWNlIEpTQyB7
CiAKLSAgICBleHRlcm4gY29uc3QgZG91YmxlIE5hTjsKLSAgICBleHRlcm4gY29uc3QgZG91Ymxl
IEluZjsKKyAgICBKU19FWFBPUlREQVRBIGV4dGVybiBjb25zdCBkb3VibGUgTmFOOworICAgIEpT
X0VYUE9SVERBVEEgZXh0ZXJuIGNvbnN0IGRvdWJsZSBJbmY7CiAKLSAgICBKU1ZhbHVlIGpzTnVt
YmVyQ2VsbChFeGVjU3RhdGUqLCBkb3VibGUpOwotICAgIEpTVmFsdWUganNBUElNYW5nbGVkTnVt
YmVyKEV4ZWNTdGF0ZSosIGRvdWJsZSk7CisgICAgSlNfRVhQT1JUREFUQSBKU1ZhbHVlIGpzTnVt
YmVyQ2VsbChFeGVjU3RhdGUqLCBkb3VibGUpOworICAgIEpTX0VYUE9SVERBVEEgSlNWYWx1ZSBq
c0FQSU1hbmdsZWROdW1iZXIoRXhlY1N0YXRlKiwgZG91YmxlKTsKIAogI2lmICFVU0UoQUxURVJO
QVRFX0pTSU1NRURJQVRFKQogCkBAIC00OSw3ICs0OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IHN0cnVjdCBDbGFzc0luZm87CiAgICAgc3RydWN0IEluc3RydWN0aW9uOwogCi0gICAgY2xhc3Mg
SlNOdW1iZXJDZWxsIDogcHVibGljIEpTQ2VsbCB7CisgICAgY2xhc3MgSlNfRVhQT1JUREFUQSBK
U051bWJlckNlbGwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsK
ICAgICAgICAgZnJpZW5kIEpTVmFsdWUganNOdW1iZXJDZWxsKEpTR2xvYmFsRGF0YSosIGRvdWJs
ZSk7CiAgICAgICAgIGZyaWVuZCBKU1ZhbHVlIGpzTnVtYmVyQ2VsbChFeGVjU3RhdGUqLCBkb3Vi
bGUpOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oIGIvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCmluZGV4IGRiNDdhYzcuLjYzOGViN2UgMTAw
NjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAorKysgYi9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKQEAgLTY0LDcgKzY0LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSogUHJvcGVydHlTdG9yYWdlOwogICAgIHR5
cGVkZWYgY29uc3QgRW5jb2RlZEpTVmFsdWUqIENvbnN0UHJvcGVydHlTdG9yYWdlOwogCi0gICAg
Y2xhc3MgSlNPYmplY3QgOiBwdWJsaWMgSlNDZWxsIHsKKyAgICBjbGFzcyBKU19FWFBPUlREQVRB
IEpTT2JqZWN0IDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBCYXRjaGVk
VHJhbnNpdGlvbk9wdGltaXplcjsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKICAgICAgICAg
ZnJpZW5kIGNsYXNzIEpTQ2VsbDsKQEAgLTIzNCw5ICsyMzQsOSBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgfTsKICAgICB9OwogCi0gICAgSlNPYmplY3QqIGFzT2JqZWN0KEpTVmFsdWUpOwor
ICAgIEpTX0VYUE9SVERBVEEgSlNPYmplY3QqIGFzT2JqZWN0KEpTVmFsdWUpOwogCi0gICAgSlNP
YmplY3QqIGNvbnN0cnVjdEVtcHR5T2JqZWN0KEV4ZWNTdGF0ZSopOworICAgIEpTX0VYUE9SVERB
VEEgSlNPYmplY3QqIGNvbnN0cnVjdEVtcHR5T2JqZWN0KEV4ZWNTdGF0ZSopOwogCiBpbmxpbmUg
SlNPYmplY3QqIGFzT2JqZWN0KEpTVmFsdWUgdmFsdWUpCiB7CmRpZmYgLS1naXQgYS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3Ry
aW5nLmgKaW5kZXggOTAwYzU2NS4uOWNiMzRkMSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1N0cmluZy5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcu
aApAQCAtMzMsMzIgKzMzLDMyIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSlNTdHJp
bmc7CiAKLSAgICBKU1N0cmluZyoganNFbXB0eVN0cmluZyhKU0dsb2JhbERhdGEqKTsKLSAgICBK
U1N0cmluZyoganNFbXB0eVN0cmluZyhFeGVjU3RhdGUqKTsKLSAgICBKU1N0cmluZyoganNTdHJp
bmcoSlNHbG9iYWxEYXRhKiwgY29uc3QgVVN0cmluZyYpOyAvLyByZXR1cm5zIGVtcHR5IHN0cmlu
ZyBpZiBwYXNzZWQgbnVsbCBzdHJpbmcKLSAgICBKU1N0cmluZyoganNTdHJpbmcoRXhlY1N0YXRl
KiwgY29uc3QgVVN0cmluZyYpOyAvLyByZXR1cm5zIGVtcHR5IHN0cmluZyBpZiBwYXNzZWQgbnVs
bCBzdHJpbmcKLQotICAgIEpTU3RyaW5nKiBqc1NpbmdsZUNoYXJhY3RlclN0cmluZyhKU0dsb2Jh
bERhdGEqLCBVQ2hhcik7Ci0gICAgSlNTdHJpbmcqIGpzU2luZ2xlQ2hhcmFjdGVyU3RyaW5nKEV4
ZWNTdGF0ZSosIFVDaGFyKTsKLSAgICBKU1N0cmluZyoganNTaW5nbGVDaGFyYWN0ZXJTdWJzdHJp
bmcoSlNHbG9iYWxEYXRhKiwgY29uc3QgVVN0cmluZyYsIHVuc2lnbmVkIG9mZnNldCk7Ci0gICAg
SlNTdHJpbmcqIGpzU2luZ2xlQ2hhcmFjdGVyU3Vic3RyaW5nKEV4ZWNTdGF0ZSosIGNvbnN0IFVT
dHJpbmcmLCB1bnNpZ25lZCBvZmZzZXQpOwotICAgIEpTU3RyaW5nKiBqc1N1YnN0cmluZyhKU0ds
b2JhbERhdGEqLCBjb25zdCBVU3RyaW5nJiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5n
dGgpOwotICAgIEpTU3RyaW5nKiBqc1N1YnN0cmluZyhFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5n
JiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIEpTX0VYUE9SVERBVEEg
SlNTdHJpbmcqIGpzRW1wdHlTdHJpbmcoSlNHbG9iYWxEYXRhKik7CisgICAgSlNfRVhQT1JUREFU
QSBKU1N0cmluZyoganNFbXB0eVN0cmluZyhFeGVjU3RhdGUqKTsKKyAgICBKU19FWFBPUlREQVRB
IEpTU3RyaW5nKiBqc1N0cmluZyhKU0dsb2JhbERhdGEqLCBjb25zdCBVU3RyaW5nJik7IC8vIHJl
dHVybnMgZW1wdHkgc3RyaW5nIGlmIHBhc3NlZCBudWxsIHN0cmluZworICAgIEpTX0VYUE9SVERB
VEEgSlNTdHJpbmcqIGpzU3RyaW5nKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmKTsgLy8gcmV0
dXJucyBlbXB0eSBzdHJpbmcgaWYgcGFzc2VkIG51bGwgc3RyaW5nCisKKyAgICBKU19FWFBPUlRE
QVRBIEpTU3RyaW5nKiBqc1NpbmdsZUNoYXJhY3RlclN0cmluZyhKU0dsb2JhbERhdGEqLCBVQ2hh
cik7CisgICAgSlNfRVhQT1JUREFUQSBKU1N0cmluZyoganNTaW5nbGVDaGFyYWN0ZXJTdHJpbmco
RXhlY1N0YXRlKiwgVUNoYXIpOworICAgIEpTX0VYUE9SVERBVEEgSlNTdHJpbmcqIGpzU2luZ2xl
Q2hhcmFjdGVyU3Vic3RyaW5nKEpTR2xvYmFsRGF0YSosIGNvbnN0IFVTdHJpbmcmLCB1bnNpZ25l
ZCBvZmZzZXQpOworICAgIEpTX0VYUE9SVERBVEEgSlNTdHJpbmcqIGpzU2luZ2xlQ2hhcmFjdGVy
U3Vic3RyaW5nKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmLCB1bnNpZ25lZCBvZmZzZXQpOwor
ICAgIEpTX0VYUE9SVERBVEEgSlNTdHJpbmcqIGpzU3Vic3RyaW5nKEpTR2xvYmFsRGF0YSosIGNv
bnN0IFVTdHJpbmcmLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgSlNf
RVhQT1JUREFUQSBKU1N0cmluZyoganNTdWJzdHJpbmcoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmlu
ZyYsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKIAogICAgIC8vIE5vbi10cml2
aWFsIHN0cmluZ3MgYXJlIHR3byBvciBtb3JlIGNoYXJhY3RlcnMgbG9uZy4KICAgICAvLyBUaGVz
ZSBmdW5jdGlvbnMgYXJlIGZhc3RlciB0aGFuIGp1c3QgY2FsbGluZyBqc1N0cmluZy4KLSAgICBK
U1N0cmluZyoganNOb250cml2aWFsU3RyaW5nKEpTR2xvYmFsRGF0YSosIGNvbnN0IFVTdHJpbmcm
KTsKLSAgICBKU1N0cmluZyoganNOb250cml2aWFsU3RyaW5nKEV4ZWNTdGF0ZSosIGNvbnN0IFVT
dHJpbmcmKTsKLSAgICBKU1N0cmluZyoganNOb250cml2aWFsU3RyaW5nKEpTR2xvYmFsRGF0YSos
IGNvbnN0IGNoYXIqKTsKLSAgICBKU1N0cmluZyoganNOb250cml2aWFsU3RyaW5nKEV4ZWNTdGF0
ZSosIGNvbnN0IGNoYXIqKTsKKyAgICBKU19FWFBPUlREQVRBIEpTU3RyaW5nKiBqc05vbnRyaXZp
YWxTdHJpbmcoSlNHbG9iYWxEYXRhKiwgY29uc3QgVVN0cmluZyYpOworICAgIEpTX0VYUE9SVERB
VEEgSlNTdHJpbmcqIGpzTm9udHJpdmlhbFN0cmluZyhFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5n
Jik7CisgICAgSlNfRVhQT1JUREFUQSBKU1N0cmluZyoganNOb250cml2aWFsU3RyaW5nKEpTR2xv
YmFsRGF0YSosIGNvbnN0IGNoYXIqKTsKKyAgICBKU19FWFBPUlREQVRBIEpTU3RyaW5nKiBqc05v
bnRyaXZpYWxTdHJpbmcoRXhlY1N0YXRlKiwgY29uc3QgY2hhciopOwogCiAgICAgLy8gU2hvdWxk
IGJlIHVzZWQgZm9yIHN0cmluZ3MgdGhhdCBhcmUgb3duZWQgYnkgYW4gb2JqZWN0IHRoYXQgd2ls
bAogICAgIC8vIGxpa2VseSBvdXRsaXZlIHRoZSBKU1ZhbHVlIHRoaXMgbWFrZXMsIHN1Y2ggYXMg
dGhlIHBhcnNlIHRyZWUgb3IgYQogICAgIC8vIERPTSBvYmplY3QgdGhhdCBjb250YWlucyBhIFVT
dHJpbmcKLSAgICBKU1N0cmluZyoganNPd25lZFN0cmluZyhKU0dsb2JhbERhdGEqLCBjb25zdCBV
U3RyaW5nJik7IAotICAgIEpTU3RyaW5nKiBqc093bmVkU3RyaW5nKEV4ZWNTdGF0ZSosIGNvbnN0
IFVTdHJpbmcmKTsgCisgICAgSlNfRVhQT1JUREFUQSBKU1N0cmluZyoganNPd25lZFN0cmluZyhK
U0dsb2JhbERhdGEqLCBjb25zdCBVU3RyaW5nJik7CisgICAgSlNfRVhQT1JUREFUQSBKU1N0cmlu
ZyoganNPd25lZFN0cmluZyhFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJik7CiAKLSAgICBjbGFz
cyBKU1N0cmluZyA6IHB1YmxpYyBKU0NlbGwgeworICAgIGNsYXNzIEpTX0VYUE9SVERBVEEgSlNT
dHJpbmcgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKICAgICAg
ICAgZnJpZW5kIGNsYXNzIFZQdHJTZXQ7CiAKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Zhcmlh
YmxlT2JqZWN0LmgKaW5kZXggYjk2OWRhNS4uNTYwMzJjYyAxMDA2NDQKLS0tIGEvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgKQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICBjbGFzcyBSZWdpc3RlcjsKIAotICAgIGNsYXNzIEpTVmFyaWFibGVPYmplY3QgOiBw
dWJsaWMgSlNPYmplY3QgeworICAgIGNsYXNzIEpTX0VYUE9SVERBVEEgSlNWYXJpYWJsZU9iamVj
dCA6IHB1YmxpYyBKU09iamVjdCB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAKICAgICBw
dWJsaWM6CkBAIC01MCw3ICs1MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZpcnR1
YWwgYm9vbCBkZWxldGVQcm9wZXJ0eShFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJik7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZUFycmF5Jik7Ci0gICAgICAgIAorCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1ZhcmlhYmxl
T2JqZWN0KCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0R5bmFtaWNTY29wZSgpIGNv
bnN0ID0gMDsKIApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dyYXBwZXJP
YmplY3QuaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmgKaW5kZXgg
MmEyZTNjNi4uZDBiYWE4NSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dy
YXBwZXJPYmplY3QuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9iamVj
dC5oCkBAIC0yNSwxMCArMjUsMTAgQEAKICNpbmNsdWRlICJKU09iamVjdC5oIgogCiBuYW1lc3Bh
Y2UgSlNDIHsKLSAgICAKKwogICAgIC8vIFRoaXMgY2xhc3MgaXMgdXNlZCBhcyBhIGJhc2UgZm9y
IGNsYXNzZXMgc3VjaCBhcyBTdHJpbmcsCiAgICAgLy8gTnVtYmVyLCBCb29sZWFuIGFuZCBEYXRl
IHdoaWNoIGFyZSB3cmFwcGVycyBmb3IgcHJpbWl0aXZlIHR5cGVzLgotICAgIGNsYXNzIEpTV3Jh
cHBlck9iamVjdCA6IHB1YmxpYyBKU09iamVjdCB7CisgICAgY2xhc3MgSlNfRVhQT1JUREFUQSBK
U1dyYXBwZXJPYmplY3QgOiBwdWJsaWMgSlNPYmplY3QgewogICAgIHByb3RlY3RlZDoKICAgICAg
ICAgZXhwbGljaXQgSlNXcmFwcGVyT2JqZWN0KFBhc3NSZWZQdHI8U3RydWN0dXJlPik7CiAKZGlm
ZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmggYi9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0xvb2t1cC5oCmluZGV4IDE2N2YyYmMuLjMwNjRjODMgMTAwNjQ0Ci0tLSBhL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Mb29rdXAuaApAQCAtMTA0LDcgKzEwNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBI
YXNoRW50cnkqIG1fbmV4dDsKICAgICB9OwogCi0gICAgc3RydWN0IEhhc2hUYWJsZSB7CisgICAg
c3RydWN0IEpTX0VYUE9SVERBVEEgSGFzaFRhYmxlIHsKIAogICAgICAgICBpbnQgY29tcGFjdFNp
emU7CiAgICAgICAgIGludCBjb21wYWN0SGFzaFNpemVNYXNrOwpAQCAtMTYyLDcgKzE2Miw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGNyZWF0ZVRhYmxlKEpTR2xvYmFsRGF0YSop
IGNvbnN0OwogICAgIH07CiAKLSAgICB2b2lkIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNT
dGF0ZSosIGNvbnN0IEhhc2hFbnRyeSosIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgIEpTX0VYUE9SVERBVEEg
dm9pZCBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChFeGVjU3RhdGUqLCBjb25zdCBIYXNoRW50cnkq
LCBKU09iamVjdCogdGhpc09iamVjdCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eVNsb3QmKTsKIAogICAgIC8qKgogICAgICAqIFRoaXMgbWV0aG9kIGRvZXMgaXQgYWxs
IChsb29raW5nIGluIHRoZSBoYXNodGFibGUsIGNoZWNraW5nIGZvciBmdW5jdGlvbgpkaWZmIC0t
Z2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJPYmplY3QuaCBiL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTnVtYmVyT2JqZWN0LmgKaW5kZXggZDM1NGI5Yi4uZTM0MTU3NiAxMDA2NDQK
LS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJPYmplY3QuaAorKysgYi9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL051bWJlck9iamVjdC5oCkBAIC0yNSw3ICsyNSw3IEBACiAKIG5hbWVz
cGFjZSBKU0MgewogCi0gICAgY2xhc3MgTnVtYmVyT2JqZWN0IDogcHVibGljIEpTV3JhcHBlck9i
amVjdCB7CisgICAgY2xhc3MgSlNfRVhQT1JUREFUQSBOdW1iZXJPYmplY3QgOiBwdWJsaWMgSlNX
cmFwcGVyT2JqZWN0IHsKICAgICBwdWJsaWM6CiAgICAgICAgIGV4cGxpY2l0IE51bWJlck9iamVj
dChQYXNzUmVmUHRyPFN0cnVjdHVyZT4pOwogCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09iamVjdFByb3RvdHlwZS5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQ
cm90b3R5cGUuaAppbmRleCA3NzkwYWUwLi4yNDk5NzEzIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT2JqZWN0UHJvdG90eXBlLmgKQEAgLTMwLDcgKzMwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIE9iamVjdFByb3RvdHlwZShFeGVjU3RhdGUqLCBQYXNzUmVmUHRyPFN0cnVjdHVyZT4s
IFN0cnVjdHVyZSogcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUpOwogICAgIH07CiAKLSAgICBK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKiwg
SlNPYmplY3QqLCBKU1ZhbHVlLCBjb25zdCBBcmdMaXN0Jik7CisgICAgSlNfRVhQT1JUREFUQSBK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKiwg
SlNPYmplY3QqLCBKU1ZhbHVlLCBjb25zdCBBcmdMaXN0Jik7CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwogCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5
LmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmgKaW5kZXggYjQz
ODJmNC4uZjEyODQ0NCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0
eU5hbWVBcnJheS5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJy
YXkuaApAQCAtNTgsNyArNTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVmUHRyPFN0
cnVjdHVyZUNoYWluPiBtX2NhY2hlZFByb3RvdHlwZUNoYWluOwogICAgIH07CiAKLSAgICBjbGFz
cyBQcm9wZXJ0eU5hbWVBcnJheSB7CisgICAgY2xhc3MgSlNfRVhQT1JUREFUQSBQcm9wZXJ0eU5h
bWVBcnJheSB7CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIFByb3BlcnR5TmFtZUFycmF5
RGF0YTo6Y29uc3RfaXRlcmF0b3IgY29uc3RfaXRlcmF0b3I7CiAKZGlmZiAtLWdpdCBhL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90eXBlRnVuY3Rpb24uaCBiL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJvdG90eXBlRnVuY3Rpb24uaAppbmRleCA5OWFiMzI3Li5jNjI2ODgxIDEwMDY0NAot
LS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3RvdHlwZUZ1bmN0aW9uLmgKKysrIGIvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm90b3R5cGVGdW5jdGlvbi5oCkBAIC0yOSw3ICsyOSw3IEBA
CiAKIG5hbWVzcGFjZSBKU0MgewogCi0gICAgY2xhc3MgUHJvdG90eXBlRnVuY3Rpb24gOiBwdWJs
aWMgSW50ZXJuYWxGdW5jdGlvbiB7CisgICAgY2xhc3MgSlNfRVhQT1JUREFUQSBQcm90b3R5cGVG
dW5jdGlvbiA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKICAgICBwdWJsaWM6CiAgICAgICAg
IFByb3RvdHlwZUZ1bmN0aW9uKEV4ZWNTdGF0ZSosIGludCBsZW5ndGgsIGNvbnN0IElkZW50aWZp
ZXImLCBOYXRpdmVGdW5jdGlvbik7CiAgICAgICAgIFByb3RvdHlwZUZ1bmN0aW9uKEV4ZWNTdGF0
ZSosIFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgaW50IGxlbmd0aCwgY29uc3QgSWRlbnRpZmllciYs
IE5hdGl2ZUZ1bmN0aW9uKTsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVn
RXhwLmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCmluZGV4IDI0ZDQxOTkuLjg2
MzQ4NGUgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgKKysrIGIv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgIGNsYXNzIEpTR2xvYmFsRGF0YTsKIAotICAgIGNsYXNzIFJlZ0V4cCA6
IHB1YmxpYyBSZWZDb3VudGVkPFJlZ0V4cD4geworICAgIGNsYXNzIEpTX0VYUE9SVERBVEEgUmVn
RXhwIDogcHVibGljIFJlZkNvdW50ZWQ8UmVnRXhwPiB7CiAgICAgcHVibGljOgogICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxSZWdFeHA+IGNyZWF0ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEs
IGNvbnN0IFVTdHJpbmcmIHBhdHRlcm4pOwogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZWdF
eHA+IGNyZWF0ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIHBhdHRl
cm4sIGNvbnN0IFVTdHJpbmcmIGZsYWdzKTsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwT2JqZWN0LmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVj
dC5oCmluZGV4IGZhYzk5NzguLjllYTlhZDggMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwT2JqZWN0LmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBP
YmplY3QuaApAQCAtMjYsNyArMjYsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotICAgIGNsYXNz
IFJlZ0V4cE9iamVjdCA6IHB1YmxpYyBKU09iamVjdCB7CisgICAgY2xhc3MgSlNfRVhQT1JUREFU
QSBSZWdFeHBPYmplY3QgOiBwdWJsaWMgSlNPYmplY3QgewogICAgIHB1YmxpYzoKICAgICAgICAg
UmVnRXhwT2JqZWN0KFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgUGFzc1JlZlB0cjxSZWdFeHA+KTsK
ICAgICAgICAgdmlydHVhbCB+UmVnRXhwT2JqZWN0KCk7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFs
bFN0cmluZ3MuaAppbmRleCBmMGRkOGRmLi4wZjYwOWVhIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U21hbGxTdHJpbmdzLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBj
bGFzcyBTbWFsbFN0cmluZ3NTdG9yYWdlOwogCi0gICAgY2xhc3MgU21hbGxTdHJpbmdzIDogcHVi
bGljIE5vbmNvcHlhYmxlIHsKKyAgICBjbGFzcyBKU19FWFBPUlREQVRBIFNtYWxsU3RyaW5ncyA6
IHB1YmxpYyBOb25jb3B5YWJsZSB7CiAgICAgcHVibGljOgogICAgICAgICBTbWFsbFN0cmluZ3Mo
KTsKICAgICAgICAgflNtYWxsU3RyaW5ncygpOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJpbmdPYmplY3QuaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2Jq
ZWN0LmgKaW5kZXggZWEzYTA0NS4uYmE0OWZjMSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJpbmdPYmplY3QuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmlu
Z09iamVjdC5oCkBAIC0yNiw3ICsyNiw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi0gICAgY2xh
c3MgU3RyaW5nT2JqZWN0IDogcHVibGljIEpTV3JhcHBlck9iamVjdCB7CisgICAgY2xhc3MgSlNf
RVhQT1JUREFUQSBTdHJpbmdPYmplY3QgOiBwdWJsaWMgSlNXcmFwcGVyT2JqZWN0IHsKICAgICBw
dWJsaWM6CiAgICAgICAgIFN0cmluZ09iamVjdChFeGVjU3RhdGUqLCBQYXNzUmVmUHRyPFN0cnVj
dHVyZT4pOwogICAgICAgICBTdHJpbmdPYmplY3QoRXhlY1N0YXRlKiwgUGFzc1JlZlB0cjxTdHJ1
Y3R1cmU+LCBjb25zdCBVU3RyaW5nJik7CkBAIC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWVBcnJheSYpOwogCiAgICAgICAgIHZpcnR1YWwgY29uc3QgQ2xhc3NJbmZvKiBjbGFz
c0luZm8oKSBjb25zdCB7IHJldHVybiAmaW5mbzsgfQotICAgICAgICBzdGF0aWMgY29uc3QgSlNf
RVhQT1JUREFUQSBDbGFzc0luZm8gaW5mbzsKKyAgICAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5m
byBpbmZvOwogCiAgICAgICAgIEpTU3RyaW5nKiBpbnRlcm5hbFZhbHVlKCkgY29uc3QgeyByZXR1
cm4gYXNTdHJpbmcoSlNXcmFwcGVyT2JqZWN0OjppbnRlcm5hbFZhbHVlKCkpO30KIApkaWZmIC0t
Z2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaCBiL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlLmgKaW5kZXggODY2OTk5ZC4uYzZhZDEwMCAxMDA2NDQKLS0tIGEv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZS5oCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IGNsYXNzIFByb3BlcnR5TmFtZUFycmF5OwogICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5RGF0
YTsKIAotICAgIGNsYXNzIFN0cnVjdHVyZSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0cnVjdHVyZT4g
eworICAgIGNsYXNzIEpTX0VYUE9SVERBVEEgU3RydWN0dXJlIDogcHVibGljIFJlZkNvdW50ZWQ8
U3RydWN0dXJlPiB7CiAgICAgcHVibGljOgogICAgICAgICBmcmllbmQgY2xhc3MgSklUOwogICAg
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZShKU1ZhbHVlIHByb3RvdHlw
ZSwgY29uc3QgVHlwZUluZm8mIHR5cGVJbmZvKQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9UaW1lb3V0Q2hlY2tlci5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UaW1lb3V0
Q2hlY2tlci5oCmluZGV4IDdiZmE2ZDAuLjNlNWEyODIgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVGltZW91dENoZWNrZXIuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1RpbWVvdXRDaGVja2VyLmgKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICBjbGFzcyBFeGVjU3RhdGU7CiAKLSAgICBjbGFzcyBUaW1lb3V0Q2hlY2tlciB7CisgICAgY2xh
c3MgSlNfRVhQT1JUREFUQSBUaW1lb3V0Q2hlY2tlciB7CiAgICAgcHVibGljOgogICAgICAgICBU
aW1lb3V0Q2hlY2tlcigpOwogCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VT
dHJpbmcuaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZy5oCmluZGV4IGQwMWI3NWQu
Ljk3NWFiZmUgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZy5oCisr
KyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZy5oCkBAIC00MSw4ICs0MSw4IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIHVzaW5nIFdURjo6UGxhY2VtZW50TmV3QWRvcHQ7CiAKICAgICBj
bGFzcyBJZGVudGlmaWVyVGFibGU7Ci0gIAotICAgIGNsYXNzIENTdHJpbmcgeworCisgICAgY2xh
c3MgSlNfRVhQT1JUREFUQSBDU3RyaW5nIHsKICAgICBwdWJsaWM6CiAgICAgICAgIENTdHJpbmco
KQogICAgICAgICAgICAgOiBtX2xlbmd0aCgwKQpAQCAtNzMsMTMgKzczLDEzIEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgdHlwZWRlZiBWZWN0b3I8Y2hhciwgMzI+IENTdHJpbmdCdWZmZXI7CiAK
LSAgICBjbGFzcyBVU3RyaW5nIHsKKyAgICBjbGFzcyBKU19FWFBPUlREQVRBIFVTdHJpbmcgewog
ICAgICAgICBmcmllbmQgY2xhc3MgSklUOwogCiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVm
IENyb3NzVGhyZWFkUmVmQ291bnRlZDxPd25GYXN0TWFsbG9jUHRyPFVDaGFyPiA+IFNoYXJlZFVD
aGFyOwogICAgICAgICBzdHJ1Y3QgQmFzZVN0cmluZzsKLSAgICAgICAgc3RydWN0IFJlcCA6IE5v
bmNvcHlhYmxlIHsKKyAgICAgICAgc3RydWN0IEpTX0VYUE9SVERBVEEgUmVwIDogTm9uY29weWFi
bGUgewogICAgICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKIAogICAgICAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8UmVwPiBjcmVhdGUoVUNoYXIqIGJ1ZmZlciwgaW50IGxlbmd0aCkKQEAgLTE4
NSw4ICsxODUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICAgICAgZnJpZW5kIGNsYXNz
IFNtYWxsU3RyaW5nc1N0b3JhZ2U7CiAgICAgICAgICAgICBmcmllbmQgdm9pZCBpbml0aWFsaXpl
VVN0cmluZygpOwotICAgICAgICAgICAgSlNfRVhQT1JUREFUQSBzdGF0aWMgQmFzZVN0cmluZyog
bnVsbEJhc2VTdHJpbmc7Ci0gICAgICAgICAgICBKU19FWFBPUlREQVRBIHN0YXRpYyBCYXNlU3Ry
aW5nKiBlbXB0eUJhc2VTdHJpbmc7CisgICAgICAgICAgICBzdGF0aWMgQmFzZVN0cmluZyogbnVs
bEJhc2VTdHJpbmc7CisgICAgICAgICAgICBzdGF0aWMgQmFzZVN0cmluZyogZW1wdHlCYXNlU3Ry
aW5nOwogICAgICAgICB9OwogCiAKQEAgLTQzMSw5ICs0MzEsOSBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgcmV0dXJuIFVTdHJpbmcocmVzdWx0ID8gcmVzdWx0LnJlbGVhc2UoKSA6IFVTdHJp
bmc6Om51bGxSZXAoKSk7CiAgICAgfQogCi0gICAgaW50IGNvbXBhcmUoY29uc3QgVVN0cmluZyYs
IGNvbnN0IFVTdHJpbmcmKTsKKyAgICBKU19FWFBPUlREQVRBIGludCBjb21wYXJlKGNvbnN0IFVT
dHJpbmcmLCBjb25zdCBVU3RyaW5nJik7CiAKLSAgICBib29sIGVxdWFsKGNvbnN0IFVTdHJpbmc6
OlJlcCosIGNvbnN0IFVTdHJpbmc6OlJlcCopOworICAgIEpTX0VYUE9SVERBVEEgYm9vbCBlcXVh
bChjb25zdCBVU3RyaW5nOjpSZXAqLCBjb25zdCBVU3RyaW5nOjpSZXAqKTsKIAogICAgIGlubGlu
ZSBQYXNzUmVmUHRyPFVTdHJpbmc6OlJlcD4gVVN0cmluZzo6UmVwOjpjcmVhdGUoUGFzc1JlZlB0
cjxVU3RyaW5nOjpSZXA+IHJlcCwgaW50IG9mZnNldCwgaW50IGxlbmd0aCkKICAgICB7CkBAIC01
NDEsMTMgKzU0MSwxMyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBzdHJ1Y3QgRGVmYXVsdEhhc2g7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IFN0
ckhhc2g7CiAKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBTdHJIYXNoPEpTQzo6VVN0cmluZzo6UmVw
Kj4geworICAgIHRlbXBsYXRlPD4gc3RydWN0IEpTX0VYUE9SVERBVEEgU3RySGFzaDxKU0M6OlVT
dHJpbmc6OlJlcCo+IHsKICAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgSlNDOjpV
U3RyaW5nOjpSZXAqIGtleSkgeyByZXR1cm4ga2V5LT5oYXNoKCk7IH0KICAgICAgICAgc3RhdGlj
IGJvb2wgZXF1YWwoY29uc3QgSlNDOjpVU3RyaW5nOjpSZXAqIGEsIGNvbnN0IEpTQzo6VVN0cmlu
Zzo6UmVwKiBiKSB7IHJldHVybiBKU0M6OmVxdWFsKGEsIGIpOyB9CiAgICAgICAgIHN0YXRpYyBj
b25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gZmFsc2U7CiAgICAgfTsK
IAotICAgIHRlbXBsYXRlPD4gc3RydWN0IFN0ckhhc2g8UmVmUHRyPEpTQzo6VVN0cmluZzo6UmVw
PiA+IDogcHVibGljIFN0ckhhc2g8SlNDOjpVU3RyaW5nOjpSZXAqPiB7CisgICAgdGVtcGxhdGU8
PiBzdHJ1Y3QgSlNfRVhQT1JUREFUQSBTdHJIYXNoPFJlZlB0cjxKU0M6OlVTdHJpbmc6OlJlcD4g
PiA6IHB1YmxpYyBTdHJIYXNoPEpTQzo6VVN0cmluZzo6UmVwKj4gewogICAgICAgICB1c2luZyBT
dHJIYXNoPEpTQzo6VVN0cmluZzo6UmVwKj46Omhhc2g7CiAgICAgICAgIHN0YXRpYyB1bnNpZ25l
ZCBoYXNoKGNvbnN0IFJlZlB0cjxKU0M6OlVTdHJpbmc6OlJlcD4mIGtleSkgeyByZXR1cm4ga2V5
LT5oYXNoKCk7IH0KICAgICAgICAgdXNpbmcgU3RySGFzaDxKU0M6OlVTdHJpbmc6OlJlcCo+Ojpl
cXVhbDsKQEAgLTU1OCwxMSArNTU4LDExIEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICBzdGF0
aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNlOwogICAg
IH07CiAKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxKU0M6OlVTdHJpbmc6OlJl
cCo+IHsKKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBKU19FWFBPUlREQVRBIERlZmF1bHRIYXNoPEpT
Qzo6VVN0cmluZzo6UmVwKj4gewogICAgICAgICB0eXBlZGVmIFN0ckhhc2g8SlNDOjpVU3RyaW5n
OjpSZXAqPiBIYXNoOwogICAgIH07CiAKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFz
aDxSZWZQdHI8SlNDOjpVU3RyaW5nOjpSZXA+ID4geworICAgIHRlbXBsYXRlPD4gc3RydWN0IEpT
X0VYUE9SVERBVEEgRGVmYXVsdEhhc2g8UmVmUHRyPEpTQzo6VVN0cmluZzo6UmVwPiA+IHsKICAg
ICAgICAgdHlwZWRlZiBTdHJIYXNoPFJlZlB0cjxKU0M6OlVTdHJpbmc6OlJlcD4gPiBIYXNoOwog
CiAgICAgfTsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3d0Zi9CeXRlQXJyYXkuaCBiL0ph
dmFTY3JpcHRDb3JlL3d0Zi9CeXRlQXJyYXkuaAppbmRleCA5NmU5Y2MyLi4wNmQxODEwIDEwMDY0
NAotLS0gYS9KYXZhU2NyaXB0Q29yZS93dGYvQnl0ZUFycmF5LmgKKysrIGIvSmF2YVNjcmlwdENv
cmUvd3RmL0J5dGVBcnJheS5oCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KIAogbmFtZXNwYWNlIFdURiB7Ci0gICAgY2xhc3MgQnl0ZUFycmF5IDogcHVibGlj
IFJlZkNvdW50ZWRCYXNlIHsKKyAgICBjbGFzcyBKU19FWFBPUlREQVRBIEJ5dGVBcnJheSA6IHB1
YmxpYyBSZWZDb3VudGVkQmFzZSB7CiAgICAgcHVibGljOgogICAgICAgICB1bnNpZ25lZCBsZW5n
dGgoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KIApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENv
cmUvd3RmL0N1cnJlbnRUaW1lLmggYi9KYXZhU2NyaXB0Q29yZS93dGYvQ3VycmVudFRpbWUuaApp
bmRleCAzMWYxZWM4Li4xOGI1MDU4IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS93dGYvQ3Vy
cmVudFRpbWUuaAorKysgYi9KYXZhU2NyaXB0Q29yZS93dGYvQ3VycmVudFRpbWUuaApAQCAtMzUs
MTMgKzM1LDEyIEBACiBuYW1lc3BhY2UgV1RGIHsKIAogICAgIC8vIFJldHVybnMgdGhlIGN1cnJl
bnQgc3lzdGVtIChVVEMpIHRpbWUgaW4gc2Vjb25kcywgc3RhcnRpbmcgSmFudWFyeSAxLCAxOTcw
LgotICAgIC8vIFByZWNpc2lvbiB2YXJpZXMgZGVwZW5kaW5nIG9uIGEgcGxhdGZvcm0gYnV0IHVz
dWFsbHkgaXMgYXMgZ29vZCBvciBiZXR0ZXIgCisgICAgLy8gUHJlY2lzaW9uIHZhcmllcyBkZXBl
bmRpbmcgb24gYSBwbGF0Zm9ybSBidXQgdXN1YWxseSBpcyBhcyBnb29kIG9yIGJldHRlcgogICAg
IC8vIHRoYW4gYSBtaWxsaXNlY29uZC4KLSAgICBkb3VibGUgY3VycmVudFRpbWUoKTsKKyAgICBK
U19FWFBPUlREQVRBIGRvdWJsZSBjdXJyZW50VGltZSgpOwogCiB9IC8vIG5hbWVzcGFjZSBXVEYK
IAogdXNpbmcgV1RGOjpjdXJyZW50VGltZTsKIAogI2VuZGlmIC8vIEN1cnJlbnRUaW1lX2gKLQpk
aWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvd3RmL0Zhc3RNYWxsb2MuaCBiL0phdmFTY3JpcHRD
b3JlL3d0Zi9GYXN0TWFsbG9jLmgKaW5kZXggNjFlYmUzMi4uZjA2NDNmZCAxMDA2NDQKLS0tIGEv
SmF2YVNjcmlwdENvcmUvd3RmL0Zhc3RNYWxsb2MuaAorKysgYi9KYXZhU2NyaXB0Q29yZS93dGYv
RmFzdE1hbGxvYy5oCkBAIC0yOCwxOCArMjgsMTggQEAKIG5hbWVzcGFjZSBXVEYgewogCiAgICAg
Ly8gVGhlc2UgZnVuY3Rpb25zIGNhbGwgQ1JBU0goKSBpZiBhbiBhbGxvY2F0aW9uIGZhaWxzLgot
ICAgIHZvaWQqIGZhc3RNYWxsb2Moc2l6ZV90IG4pOwotICAgIHZvaWQqIGZhc3RaZXJvZWRNYWxs
b2Moc2l6ZV90IG4pOwotICAgIHZvaWQqIGZhc3RDYWxsb2Moc2l6ZV90IG5fZWxlbWVudHMsIHNp
emVfdCBlbGVtZW50X3NpemUpOwotICAgIHZvaWQqIGZhc3RSZWFsbG9jKHZvaWQqIHAsIHNpemVf
dCBuKTsKKyAgICBKU19FWFBPUlREQVRBIHZvaWQqIGZhc3RNYWxsb2Moc2l6ZV90IG4pOworICAg
IEpTX0VYUE9SVERBVEEgdm9pZCogZmFzdFplcm9lZE1hbGxvYyhzaXplX3Qgbik7CisgICAgSlNf
RVhQT1JUREFUQSB2b2lkKiBmYXN0Q2FsbG9jKHNpemVfdCBuX2VsZW1lbnRzLCBzaXplX3QgZWxl
bWVudF9zaXplKTsKKyAgICBKU19FWFBPUlREQVRBIHZvaWQqIGZhc3RSZWFsbG9jKHZvaWQqIHAs
IHNpemVfdCBuKTsKIAogICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyByZXR1cm4gTlVMTCBpZiBhbiBh
bGxvY2F0aW9uIGZhaWxzLgotICAgIHZvaWQqIHRyeUZhc3RNYWxsb2Moc2l6ZV90IG4pOwotICAg
IHZvaWQqIHRyeUZhc3RaZXJvZWRNYWxsb2Moc2l6ZV90IG4pOwotICAgIHZvaWQqIHRyeUZhc3RD
YWxsb2Moc2l6ZV90IG5fZWxlbWVudHMsIHNpemVfdCBlbGVtZW50X3NpemUpOwotICAgIHZvaWQq
IHRyeUZhc3RSZWFsbG9jKHZvaWQqIHAsIHNpemVfdCBuKTsKKyAgICBKU19FWFBPUlREQVRBIHZv
aWQqIHRyeUZhc3RNYWxsb2Moc2l6ZV90IG4pOworICAgIEpTX0VYUE9SVERBVEEgdm9pZCogdHJ5
RmFzdFplcm9lZE1hbGxvYyhzaXplX3Qgbik7CisgICAgSlNfRVhQT1JUREFUQSB2b2lkKiB0cnlG
YXN0Q2FsbG9jKHNpemVfdCBuX2VsZW1lbnRzLCBzaXplX3QgZWxlbWVudF9zaXplKTsKKyAgICBK
U19FWFBPUlREQVRBIHZvaWQqIHRyeUZhc3RSZWFsbG9jKHZvaWQqIHAsIHNpemVfdCBuKTsKIAot
ICAgIHZvaWQgZmFzdEZyZWUodm9pZCogcCk7CisgICAgSlNfRVhQT1JUREFUQSB2b2lkIGZhc3RG
cmVlKHZvaWQqIHApOwogCiAjaWZuZGVmIE5ERUJVRyAgICAKICAgICB2b2lkIGZhc3RNYWxsb2NG
b3JiaWQoKTsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3d0Zi9NYWluVGhyZWFkLmggYi9K
YXZhU2NyaXB0Q29yZS93dGYvTWFpblRocmVhZC5oCmluZGV4IDAxY2U4MDQuLjhhNGUzM2YgMTAw
NjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3d0Zi9NYWluVGhyZWFkLmgKKysrIGIvSmF2YVNjcmlw
dENvcmUvd3RmL01haW5UaHJlYWQuaApAQCAtMzYsMTIgKzM2LDEyIEBAIGNsYXNzIE11dGV4Owog
CiB0eXBlZGVmIHZvaWQgTWFpblRocmVhZEZ1bmN0aW9uKHZvaWQqKTsKIAotdm9pZCBjYWxsT25N
YWluVGhyZWFkKE1haW5UaHJlYWRGdW5jdGlvbiosIHZvaWQqIGNvbnRleHQpOworSlNfRVhQT1JU
REFUQSB2b2lkIGNhbGxPbk1haW5UaHJlYWQoTWFpblRocmVhZEZ1bmN0aW9uKiwgdm9pZCogY29u
dGV4dCk7CiAKLXZvaWQgc2V0TWFpblRocmVhZENhbGxiYWNrc1BhdXNlZChib29sIHBhdXNlZCk7
CitKU19FWFBPUlREQVRBIHZvaWQgc2V0TWFpblRocmVhZENhbGxiYWNrc1BhdXNlZChib29sIHBh
dXNlZCk7CiAKIC8vIE11c3QgYmUgY2FsbGVkIGZyb20gdGhlIG1haW4gdGhyZWFkIChEYXJ3aW4g
aXMgYW4gZXhjZXB0aW9uIHRvIHRoaXMgcnVsZSkuCi12b2lkIGluaXRpYWxpemVNYWluVGhyZWFk
KCk7CitKU19FWFBPUlREQVRBIHZvaWQgaW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKIAogLy8gVGhl
c2UgZnVuY3Rpb25zIGFyZSBpbnRlcm5hbCB0byB0aGUgY2FsbE9uTWFpblRocmVhZCBpbXBsZW1l
bnRhdGlvbi4KIHZvaWQgaW5pdGlhbGl6ZU1haW5UaHJlYWRQbGF0Zm9ybSgpOwpkaWZmIC0tZ2l0
IGEvSmF2YVNjcmlwdENvcmUvd3RmL1JhbmRvbU51bWJlci5oIGIvSmF2YVNjcmlwdENvcmUvd3Rm
L1JhbmRvbU51bWJlci5oCmluZGV4IGZlMTY4N2MuLmNmMDgxYTcgMTAwNjQ0Ci0tLSBhL0phdmFT
Y3JpcHRDb3JlL3d0Zi9SYW5kb21OdW1iZXIuaAorKysgYi9KYXZhU2NyaXB0Q29yZS93dGYvUmFu
ZG9tTnVtYmVyLmgKQEAgLTMwLDEyICszMCwxMiBAQCBuYW1lc3BhY2UgV1RGIHsKIAogICAgIC8v
IFJldHVybnMgYSBwc2V1ZG8tcmFuZG9tIG51bWJlciBpbiB0aGUgcmFuZ2UgWzAsIDEpLCBhdHRl
bXB0cyB0byBiZQogICAgIC8vIGNyeXB0b2dyYXBoaWNhbGx5IHNlY3VyZSBpZiBwb3NzaWJsZSBv
biB0aGUgdGFyZ2V0IHBsYXRmb3JtCi0gICAgZG91YmxlIHJhbmRvbU51bWJlcigpOworICAgIEpT
X0VYUE9SVERBVEEgZG91YmxlIHJhbmRvbU51bWJlcigpOwogCiAgICAgLy8gUmV0dXJucyBhIHBz
ZXVkby1yYW5kb20gbnVtYmVyIGluIHRoZSByYW5nZSBbMCwgMSksIGF0dGVtcHRzIHRvCiAgICAg
Ly8gcHJvZHVjZSBhIHJlYXNvbmFibGUgInJhbmRvbSIgbnVtYmVyIGZhc3QuCiAgICAgLy8gV2Ug
b25seSBuZWVkIHRoaXMgYmVjYXVzZSByYW5kX3MgaXMgc28gc2xvdyBvbiB3aW5kb3dzLgotICAg
IGRvdWJsZSB3ZWFrUmFuZG9tTnVtYmVyKCk7CisgICAgSlNfRVhQT1JUREFUQSBkb3VibGUgd2Vh
a1JhbmRvbU51bWJlcigpOwogCiB9CiAKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3d0Zi9U
aHJlYWRpbmcuaCBiL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmcuaAppbmRleCA2NTc4MTUx
Li5iNWZlNDBhIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nLmgKKysr
IGIvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZy5oCkBAIC0xMTAsMTkgKzExMCwxOSBAQCB0
eXBlZGVmIHZvaWQqICgqVGhyZWFkRnVuY3Rpb24pKHZvaWQqIGFyZ3VtZW50KTsKIAogLy8gUmV0
dXJucyAwIGlmIHRocmVhZCBjcmVhdGlvbiBmYWlsZWQuCiAvLyBUaGUgdGhyZWFkIG5hbWUgbXVz
dCBiZSBhIGxpdGVyYWwgc2luY2Ugb24gc29tZSBwbGF0Zm9ybXMgaXQncyBwYXNzZWQgaW4gdG8g
dGhlIHRocmVhZC4KLVRocmVhZElkZW50aWZpZXIgY3JlYXRlVGhyZWFkKFRocmVhZEZ1bmN0aW9u
LCB2b2lkKiwgY29uc3QgY2hhciogdGhyZWFkTmFtZSk7CitKU19FWFBPUlREQVRBIFRocmVhZElk
ZW50aWZpZXIgY3JlYXRlVGhyZWFkKFRocmVhZEZ1bmN0aW9uLCB2b2lkKiwgY29uc3QgY2hhciog
dGhyZWFkTmFtZSk7CiAKIC8vIEludGVybmFsIHBsYXRmb3JtLXNwZWNpZmljIGNyZWF0ZVRocmVh
ZCBpbXBsZW1lbnRhdGlvbi4KLVRocmVhZElkZW50aWZpZXIgY3JlYXRlVGhyZWFkSW50ZXJuYWwo
VGhyZWFkRnVuY3Rpb24sIHZvaWQqLCBjb25zdCBjaGFyKiB0aHJlYWROYW1lKTsKK0pTX0VYUE9S
VERBVEEgVGhyZWFkSWRlbnRpZmllciBjcmVhdGVUaHJlYWRJbnRlcm5hbChUaHJlYWRGdW5jdGlv
biwgdm9pZCosIGNvbnN0IGNoYXIqIHRocmVhZE5hbWUpOwogCiAvLyBDYWxsZWQgaW4gdGhlIHRo
cmVhZCBkdXJpbmcgaW5pdGlhbGl6YXRpb24uCiAvLyBIZWxwZnVsIGZvciBwbGF0Zm9ybXMgd2hl
cmUgdGhlIHRocmVhZCBuYW1lIG11c3QgYmUgc2V0IGZyb20gd2l0aGluIHRoZSB0aHJlYWQuCi12
b2lkIHNldFRocmVhZE5hbWVJbnRlcm5hbChjb25zdCBjaGFyKiB0aHJlYWROYW1lKTsKK0pTX0VY
UE9SVERBVEEgdm9pZCBzZXRUaHJlYWROYW1lSW50ZXJuYWwoY29uc3QgY2hhciogdGhyZWFkTmFt
ZSk7CiAKLVRocmVhZElkZW50aWZpZXIgY3VycmVudFRocmVhZCgpOwotYm9vbCBpc01haW5UaHJl
YWQoKTsKLWludCB3YWl0Rm9yVGhyZWFkQ29tcGxldGlvbihUaHJlYWRJZGVudGlmaWVyLCB2b2lk
KiopOwotdm9pZCBkZXRhY2hUaHJlYWQoVGhyZWFkSWRlbnRpZmllcik7CitKU19FWFBPUlREQVRB
IFRocmVhZElkZW50aWZpZXIgY3VycmVudFRocmVhZCgpOworSlNfRVhQT1JUREFUQSBib29sIGlz
TWFpblRocmVhZCgpOworSlNfRVhQT1JUREFUQSBpbnQgd2FpdEZvclRocmVhZENvbXBsZXRpb24o
VGhyZWFkSWRlbnRpZmllciwgdm9pZCoqKTsKK0pTX0VYUE9SVERBVEEgdm9pZCBkZXRhY2hUaHJl
YWQoVGhyZWFkSWRlbnRpZmllcik7CiAKICNpZiBVU0UoUFRIUkVBRFMpCiB0eXBlZGVmIHB0aHJl
YWRfbXV0ZXhfdCBQbGF0Zm9ybU11dGV4OwpAQCAtMTU5LDcgKzE1OSw3IEBAIHR5cGVkZWYgdm9p
ZCogUGxhdGZvcm1SZWFkV3JpdGVMb2NrOwogdHlwZWRlZiB2b2lkKiBQbGF0Zm9ybUNvbmRpdGlv
bjsKICNlbmRpZgogICAgIAotY2xhc3MgTXV0ZXggOiBwdWJsaWMgTm9uY29weWFibGUgeworY2xh
c3MgSlNfRVhQT1JUREFUQSBNdXRleCA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiBwdWJsaWM6CiAg
ICAgTXV0ZXgoKTsKICAgICB+TXV0ZXgoKTsKQEAgLTE3Niw3ICsxNzYsNyBAQCBwcml2YXRlOgog
CiB0eXBlZGVmIExvY2tlcjxNdXRleD4gTXV0ZXhMb2NrZXI7CiAKLWNsYXNzIFJlYWRXcml0ZUxv
Y2sgOiBwdWJsaWMgTm9uY29weWFibGUgeworY2xhc3MgSlNfRVhQT1JUREFUQSBSZWFkV3JpdGVM
b2NrIDogcHVibGljIE5vbmNvcHlhYmxlIHsKIHB1YmxpYzoKICAgICBSZWFkV3JpdGVMb2NrKCk7
CiAgICAgflJlYWRXcml0ZUxvY2soKTsKQEAgLTMxMCwxMCArMzEwLDEwIEBAIHB1YmxpYzoKIAog
Ly8gVGhpcyBmdW5jdGlvbiBtdXN0IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4gSXQg
aXMgc2FmZSB0byBjYWxsIGl0IHJlcGVhdGVkbHkuCiAvLyBEYXJ3aW4gaXMgYW4gZXhjZXB0aW9u
IHRvIHRoaXMgcnVsZTogaXQgaXMgT0sgdG8gY2FsbCBpdCBmcm9tIGFueSB0aHJlYWQsIHRoZSBv
bmx5IHJlcXVpcmVtZW50IGlzIHRoYXQgdGhlIGNhbGxzIGFyZSBub3QgcmVlbnRyYW50Lgotdm9p
ZCBpbml0aWFsaXplVGhyZWFkaW5nKCk7CitKU19FWFBPUlREQVRBIHZvaWQgaW5pdGlhbGl6ZVRo
cmVhZGluZygpOwogCi12b2lkIGxvY2tBdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleCgp
Owotdm9pZCB1bmxvY2tBdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleCgpOworSlNfRVhQ
T1JUREFUQSB2b2lkIGxvY2tBdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleCgpOworSlNf
RVhQT1JUREFUQSB2b2lkIHVubG9ja0F0b21pY2FsbHlJbml0aWFsaXplZFN0YXRpY011dGV4KCk7
CiAKIH0gLy8gbmFtZXNwYWNlIFdURgogCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS93dGYv
ZHRvYS5oIGIvSmF2YVNjcmlwdENvcmUvd3RmL2R0b2EuaAppbmRleCBjYmVjN2M3Li5jZTYyODM4
IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS93dGYvZHRvYS5oCisrKyBiL0phdmFTY3JpcHRD
b3JlL3d0Zi9kdG9hLmgKQEAgLTI5LDggKzI5LDggQEAgbmFtZXNwYWNlIFdURiB7CiAKICAgICBl
eHRlcm4gV1RGOjpNdXRleCogc19kdG9hUDVNdXRleDsKIAotICAgIGRvdWJsZSBzdHJ0b2QoY29u
c3QgY2hhciogczAwLCBjaGFyKiogc2UpOwotICAgIHZvaWQgZHRvYShjaGFyKiByZXN1bHQsIGRv
dWJsZSBkLCBpbnQgbmRpZ2l0cywgaW50KiBkZWNwdCwgaW50KiBzaWduLCBjaGFyKiogcnZlKTsK
KyAgICBKU19FWFBPUlREQVRBIGRvdWJsZSBzdHJ0b2QoY29uc3QgY2hhciogczAwLCBjaGFyKiog
c2UpOworICAgIEpTX0VYUE9SVERBVEEgdm9pZCBkdG9hKGNoYXIqIHJlc3VsdCwgZG91YmxlIGQs
IGludCBuZGlnaXRzLCBpbnQqIGRlY3B0LCBpbnQqIHNpZ24sIGNoYXIqKiBydmUpOwogCiB9IC8v
IG5hbWVzcGFjZSBXVEYKIApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUv
VVRGOC5jcHAgYi9KYXZhU2NyaXB0Q29yZS93dGYvdW5pY29kZS9VVEY4LmNwcAppbmRleCA5ZTcx
M2ZlLi4yMWQ1ODU2IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS93dGYvdW5pY29kZS9VVEY4
LmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS93dGYvdW5pY29kZS9VVEY4LmNwcApAQCAtMjMsNiAr
MjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAorI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIlVURjguaCIKIAogbmFtZXNwYWNlIFdURiB7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0
Q29yZS93dGYvdW5pY29kZS9VVEY4LmggYi9KYXZhU2NyaXB0Q29yZS93dGYvdW5pY29kZS9VVEY4
LmgKaW5kZXggYTVlZDkzZS4uZGUyNjEyYSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvd3Rm
L3VuaWNvZGUvVVRGOC5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3d0Zi91bmljb2RlL1VURjguaApA
QCAtMzQsMTQgKzM0LDE0IEBAIG5hbWVzcGFjZSBXVEYgewogICAgIC8vIEdpdmVuIGEgZmlyc3Qg
Ynl0ZSwgZ2l2ZXMgdGhlIGxlbmd0aCBvZiB0aGUgVVRGLTggc2VxdWVuY2UgaXQgYmVnaW5zLgog
ICAgIC8vIFJldHVybnMgMCBmb3IgYnl0ZXMgdGhhdCBhcmUgbm90IGxlZ2FsIHN0YXJ0cyBvZiBV
VEYtOCBzZXF1ZW5jZXMuCiAgICAgLy8gT25seSBhbGxvd3Mgc2VxdWVuY2VzIG9mIHVwIHRvIDQg
Ynl0ZXMsIHNpbmNlIHRoYXQgd29ya3MgZm9yIGFsbCBVbmljb2RlIGNoYXJhY3RlcnMgKFUtMDAw
MDAwMDAgdG8gVS0wMDEwRkZGRikuCi0gICAgaW50IFVURjhTZXF1ZW5jZUxlbmd0aChjaGFyKTsK
KyAgICBKU19FWFBPUlREQVRBIGludCBVVEY4U2VxdWVuY2VMZW5ndGgoY2hhcik7CiAKICAgICAv
LyBUYWtlcyBhIG51bGwtdGVybWluYXRlZCBDLXN0eWxlIHN0cmluZyB3aXRoIGEgVVRGLTggc2Vx
dWVuY2UgaW4gaXQgYW5kIGNvbnZlcnRzIGl0IHRvIGEgY2hhcmFjdGVyLgogICAgIC8vIE9ubHkg
YWxsb3dzIFVuaWNvZGUgY2hhcmFjdGVycyAoVS0wMDAwMDAwMCB0byBVLTAwMTBGRkZGKS4KICAg
ICAvLyBSZXR1cm5zIC0xIGlmIHRoZSBzZXF1ZW5jZSBpcyBub3QgdmFsaWQgKGluY2x1ZGluZyBw
cmVzZW5jZSBvZiBleHRyYSBieXRlcykuCi0gICAgaW50IGRlY29kZVVURjhTZXF1ZW5jZShjb25z
dCBjaGFyKik7CisgICAgSlNfRVhQT1JUREFUQSBpbnQgZGVjb2RlVVRGOFNlcXVlbmNlKGNvbnN0
IGNoYXIqKTsKIAotICAgIHR5cGVkZWYgZW51bSB7CisgICAgdHlwZWRlZiBlbnVtIEpTX0VYUE9S
VERBVEEgewogICAgICAgICAgICAgY29udmVyc2lvbk9LLCAgICAgICAvLyBjb252ZXJzaW9uIHN1
Y2Nlc3NmdWwKICAgICAgICAgICAgIHNvdXJjZUV4aGF1c3RlZCwgICAgLy8gcGFydGlhbCBjaGFy
YWN0ZXIgaW4gc291cmNlLCBidXQgaGl0IGVuZAogICAgICAgICAgICAgdGFyZ2V0RXhoYXVzdGVk
LCAgICAvLyBpbnN1ZmYuIHJvb20gaW4gdGFyZ2V0IGZvciBjb252ZXJzaW9uCkBAIC02MiwxMiAr
NjIsMTIgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgLy8gdG8gdGhlIHJlcGxhY2VtZW50IGNoYXJh
Y3Rlcjsgb3RoZXJ3aXNlICh3aGVuIHRoZSBmbGFnIGlzIHNldCB0byBzdHJpY3QpCiAgICAgLy8g
dGhleSBjb25zdGl0dXRlIGFuIGVycm9yLgogCi0gICAgQ29udmVyc2lvblJlc3VsdCBjb252ZXJ0
VVRGOFRvVVRGMTYoCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqKiBzb3VyY2VTdGFy
dCwgY29uc3QgY2hhciogc291cmNlRW5kLCAKKyAgICBKU19FWFBPUlREQVRBIENvbnZlcnNpb25S
ZXN1bHQgY29udmVydFVURjhUb1VURjE2KAorICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
Kiogc291cmNlU3RhcnQsIGNvbnN0IGNoYXIqIHNvdXJjZUVuZCwKICAgICAgICAgICAgICAgICAg
ICAgVUNoYXIqKiB0YXJnZXRTdGFydCwgVUNoYXIqIHRhcmdldEVuZCwgYm9vbCBzdHJpY3QgPSB0
cnVlKTsKIAotICAgIENvbnZlcnNpb25SZXN1bHQgY29udmVydFVURjE2VG9VVEY4KAotICAgICAg
ICAgICAgICAgICAgICBjb25zdCBVQ2hhcioqIHNvdXJjZVN0YXJ0LCBjb25zdCBVQ2hhciogc291
cmNlRW5kLCAKKyAgICBKU19FWFBPUlREQVRBIENvbnZlcnNpb25SZXN1bHQgY29udmVydFVURjE2
VG9VVEY4KAorICAgICAgICAgICAgICAgICAgICBjb25zdCBVQ2hhcioqIHNvdXJjZVN0YXJ0LCBj
b25zdCBVQ2hhciogc291cmNlRW5kLAogICAgICAgICAgICAgICAgICAgICBjaGFyKiogdGFyZ2V0
U3RhcnQsIGNoYXIqIHRhcmdldEVuZCwgYm9vbCBzdHJpY3QgPSB0cnVlKTsKICAgfQogfQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwOWIx
NWE2Li5hMWQ4ZTQ2IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDA5LTA3LTIyICBLZW5uZXRoIFJvaGRlIENo
cmlzdGlhbnNlbiAgPGtlbm5ldGguY2hyaXN0aWFuc2VuQG9wZW5ib3NzYS5vcmc+LCBTaW1vbiBI
YXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEaXNhYmxlIGJvZ3VzIERMTCBsaW5rYWdlIHdh
cm5pbmdzIHdpdGggTVNWQy4KKworICAgICAgICBEZWZpbmUgSlNfRVhQT1JUREFUQSBhbmQgV0VC
S0lUX0VYUE9SVERBVEEgZm9yIGdjYywgYW5kIGF2b2lkIGRlZmluaW5nCisgICAgICAgIEpTX0VY
UE9SVERBVEEgdG8gZGxsZXhwb3J0IHdpdGggTVNWQyB3aGVuIGJ1aWxkaW5nIHRoZSBRVE1vdmll
IHRhcmdldCwKKyAgICAgICAgYmVjYXVzZSBpdCBsaW5rcyBzdGF0aWNhbGx5IGFnYWluc3QgV1RG
LiBJdCBpcyBub3QgcG9zc2libGUgdG8gdXNlCisgICAgICAgIGRsbGV4cG9ydCB0b2dldGhlciB3
aXRoIHN5bWJvbHMgZnJvbSBhIHN0YXRpYyBsaWJyYXJ5LgorCisgICAgICAgICogV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2o6IERpc2FibGUgYm9ndXMgRExMIGxpbmthZ2Ugd2FybmluZy4K
KyAgICAgICAgKiBjb25maWcuaDogVHdlYWsgZm9yIGdjYyBhbmQgTVNWQy4KKwogMjAwOS0wNy0y
MiAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IERhdmlkIExldmluLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvaiBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggNzc3
MmJiOC4uNjcxOWE2ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0z
OSw2ICszOSw3IEBACiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KIAkJ
CQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCURpc2FibGVTcGVjaWZpY1dh
cm5pbmdzPSI0MjUxOzQyNzMiDQogCQkJCUZvcmNlZEluY2x1ZGVGaWxlcz0iIg0KIAkJCS8+DQog
CQkJPFRvb2wNCmRpZmYgLS1naXQgYS9XZWJDb3JlL2NvbmZpZy5oIGIvV2ViQ29yZS9jb25maWcu
aAppbmRleCA0MTFkZGIxLi5hOGUyY2IwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2NvbmZpZy5oCisr
KyBiL1dlYkNvcmUvY29uZmlnLmgKQEAgLTI0LDIwICsyNCwyNSBAQAogCiAjaW5jbHVkZSA8d3Rm
L1BsYXRmb3JtLmg+CiAKLSNpZiBQTEFURk9STShXSU5fT1MpICYmICFkZWZpbmVkKEJVSUxESU5H
X1dYX18pICYmICFDT01QSUxFUihHQ0MpCi0jaWYgZGVmaW5lZChCVUlMRElOR19KYXZhU2NyaXB0
Q29yZSkgfHwgZGVmaW5lZChCVUlMRElOR19XVEYpCi0jZGVmaW5lIEpTX0VYUE9SVERBVEEgX19k
ZWNsc3BlYyhkbGxleHBvcnQpCisjdW5kZWYgSlNfRVhQT1JUREFUQQorI3VuZGVmIFdFQktJVF9F
WFBPUlREQVRBCisjaWYgQ09NUElMRVIoR0NDKQorICAgICNkZWZpbmUgSlNfRVhQT1JUREFUQSBf
X2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKQorICAgICNkZWZpbmUgV0VCS0lU
X0VYUE9SVERBVEEgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkKKyNlbGlm
IFBMQVRGT1JNKFdJTl9PUykgJiYgIWRlZmluZWQoQlVJTERJTkdfV1hfXykgJiYgIWRlZmluZWQo
QlVJTERJTkdfUVRNb3ZpZVdpbikKKyAgICAjaWYgZGVmaW5lZChCVUlMRElOR19KYXZhU2NyaXB0
Q29yZSkgfHwgZGVmaW5lZChCVUlMRElOR19XVEYpCisgICAgICAgICNkZWZpbmUgSlNfRVhQT1JU
REFUQSBfX2RlY2xzcGVjKGRsbGV4cG9ydCkKKyAgICAjZWxzZQorICAgICAgICAjZGVmaW5lIEpT
X0VYUE9SVERBVEEgX19kZWNsc3BlYyhkbGxpbXBvcnQpCisgICAgI2VuZGlmCisgICAgI2lmIGRl
ZmluZWQoQlVJTERJTkdfV2ViQ29yZSkgfHwgZGVmaW5lZChCVUlMRElOR19XZWJLaXQpCisgICAg
ICAgICNkZWZpbmUgV0VCS0lUX0VYUE9SVERBVEEgX19kZWNsc3BlYyhkbGxleHBvcnQpCisgICAg
I2Vsc2UKKyAgICAgICAgI2RlZmluZSBXRUJLSVRfRVhQT1JUREFUQSBfX2RlY2xzcGVjKGRsbGlt
cG9ydCkKKyAgICAjZW5kaWYKICNlbHNlCi0jZGVmaW5lIEpTX0VYUE9SVERBVEEgX19kZWNsc3Bl
YyhkbGxpbXBvcnQpCi0jZW5kaWYKLSNpZiBkZWZpbmVkKEJVSUxESU5HX1dlYkNvcmUpIHx8IGRl
ZmluZWQoQlVJTERJTkdfV2ViS2l0KQotI2RlZmluZSBXRUJLSVRfRVhQT1JUREFUQSBfX2RlY2xz
cGVjKGRsbGV4cG9ydCkKLSNlbHNlCi0jZGVmaW5lIFdFQktJVF9FWFBPUlREQVRBIF9fZGVjbHNw
ZWMoZGxsaW1wb3J0KQotI2VuZGlmCi0jZWxzZQotI2RlZmluZSBKU19FWFBPUlREQVRBCi0jZGVm
aW5lIFdFQktJVF9FWFBPUlREQVRBCisgICAgI2RlZmluZSBKU19FWFBPUlREQVRBCisgICAgI2Rl
ZmluZSBXRUJLSVRfRVhQT1JUREFUQQogI2VuZGlmCiAKICNkZWZpbmUgTU9CSUxFIDAKZGlmZiAt
LWdpdCBhL1dlYktpdC9jZi9DaGFuZ2VMb2cgYi9XZWJLaXQvY2YvQ2hhbmdlTG9nCmluZGV4IDI3
Y2FmMWMuLjM4NTNkYjggMTAwNjQ0Ci0tLSBhL1dlYktpdC9jZi9DaGFuZ2VMb2cKKysrIGIvV2Vi
S2l0L2NmL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDA5LTA3LTIyICBTaW1vbiBIYXVz
bWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggY29tcGlsYXRpb24gb24gdGhlIE1hYywgZG9u
J3QgcmUtZGVmaW5lIEpTX0VYUE9SVERBVEEgZW1wdHkgYnV0CisgICAgICAgIHJlLXVzZSB0aGUg
ZGVmaW5pdGlvbiBmcm9tIFdlYktpdFByZWZpeC5oLgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwOgorCiAyMDA5LTA0LTIwICBTdGV2ZSBGYWxrZW5i
dXJnICA8c2ZhbGtlbkBhcHBsZS5jb20+CiAKICAgICAgICAgU2VwYXJhdGUgSmF2YVNjcmlwdENv
cmUuZGxsIGZyb20gV2ViS2l0LmRsbC4KZGlmZiAtLWdpdCBhL1dlYktpdC9jZi9XZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAgYi9XZWJLaXQvY2YvV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCmluZGV4IDYwMGQ1OGQuLjliODliOGEgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAKKysr
IGIvV2ViS2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcApAQCAt
NDMsOCArNDMsNiBAQAogI2Vsc2UKICNkZWZpbmUgSlNfRVhQT1JUREFUQSBfX2RlY2xzcGVjKGRs
bGltcG9ydCkKICNlbmRpZgotI2Vsc2UKLSNkZWZpbmUgSlNfRVhQT1JUREFUQQogI2VuZGlmCiAK
ICNpbmNsdWRlICJXZWJJbnNwZWN0b3JDbGllbnQuaCIKZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMv
Q2hhbmdlTG9nIGIvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggOGEyZTcyNy4uZDJiZDM2YyAx
MDA2NDQKLS0tIGEvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxMyBAQAorMjAwOS0wNy0yMiAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5o
YXVzbWFubkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgRHVwbGljYXRlIHRoZSBKU19FWFBPUlREQVRBIGFuZCBXRUJLSVRfRVhQT1JU
REFUQSBkZWZpbml0aW9uIGZyb20KKyAgICAgICAgV2ViQ29yZS9jb25maWcuaCB0byBmaXggY29t
cGlsYXRpb24gYWdhaW5zdCBKYXZhU2NyaXB0Q29yZSBhbmQKKyAgICAgICAgV2ViQ29yZSBvbiB0
aGUgTWFjLgorCisgICAgICAgICogV2ViS2l0UHJlZml4Lmg6CisKIDIwMDktMDctMjAgIERhcmlu
IEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJu
c3RlaW4uCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL1dlYktpdFByZWZpeC5oIGIvV2ViS2l0L21h
Yy9XZWJLaXRQcmVmaXguaAppbmRleCAwZWRlYzA2Li5mODI4YzIyIDEwMDY0NAotLS0gYS9XZWJL
aXQvbWFjL1dlYktpdFByZWZpeC5oCisrKyBiL1dlYktpdC9tYWMvV2ViS2l0UHJlZml4LmgKQEAg
LTgzLDYgKzgzLDI3IEBAIHR5cGVkZWYgZmxvYXQgQ0dGbG9hdDsKICNkZWZpbmUgV1RGX1VTRV9K
U0MgMQogI2RlZmluZSBXVEZfVVNFX1Y4IDAKIAorI3VuZGVmIEpTX0VYUE9SVERBVEEKKyN1bmRl
ZiBXRUJLSVRfRVhQT1JUREFUQQorI2lmIENPTVBJTEVSKEdDQykKKyAgICAjZGVmaW5lIEpTX0VY
UE9SVERBVEEgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkKKyAgICAjZGVm
aW5lIFdFQktJVF9FWFBPUlREQVRBIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQi
KSkpCisjZWxpZiBQTEFURk9STShXSU5fT1MpICYmICFkZWZpbmVkKEJVSUxESU5HX1dYX18pICYm
ICFkZWZpbmVkKEJVSUxESU5HX1FUTW92aWVXaW4pCisgICAgI2lmIGRlZmluZWQoQlVJTERJTkdf
SmF2YVNjcmlwdENvcmUpIHx8IGRlZmluZWQoQlVJTERJTkdfV1RGKQorICAgICAgICAjZGVmaW5l
IEpTX0VYUE9SVERBVEEgX19kZWNsc3BlYyhkbGxleHBvcnQpCisgICAgI2Vsc2UKKyAgICAgICAg
I2RlZmluZSBKU19FWFBPUlREQVRBIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQorICAgICNlbmRpZgor
ICAgICNpZiBkZWZpbmVkKEJVSUxESU5HX1dlYkNvcmUpIHx8IGRlZmluZWQoQlVJTERJTkdfV2Vi
S2l0KQorICAgICAgICAjZGVmaW5lIFdFQktJVF9FWFBPUlREQVRBIF9fZGVjbHNwZWMoZGxsZXhw
b3J0KQorICAgICNlbHNlCisgICAgICAgICNkZWZpbmUgV0VCS0lUX0VYUE9SVERBVEEgX19kZWNs
c3BlYyhkbGxpbXBvcnQpCisgICAgI2VuZGlmCisjZWxzZQorICAgICNkZWZpbmUgSlNfRVhQT1JU
REFUQQorICAgICNkZWZpbmUgV0VCS0lUX0VYUE9SVERBVEEKKyNlbmRpZgorCiAjaWZkZWYgX19j
cGx1c3BsdXMKICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2VuZGlmCkBAIC05Miw2ICsx
MTMsMyBAQCB0eXBlZGVmIGZsb2F0IENHRmxvYXQ7CiAvKiBXb3JrIGFyb3VuZCBidWcgd2l0aCBD
KysgbGlicmFyeSB0aGF0IHNjcmV3cyB1cCBPYmplY3RpdmUtQysrIHdoZW4gZXhjZXB0aW9uIHN1
cHBvcnQgaXMgZGlzYWJsZWQuICovCiAjdW5kZWYgdHJ5CiAjdW5kZWYgY2F0Y2gKLQotI2RlZmlu
ZSBKU19FWFBPUlREQVRBCi0jZGVmaW5lIFdFQktJVF9FWFBPUlREQVRBCmRpZmYgLS1naXQgYS9X
ZWJLaXQvd2luL0NoYW5nZUxvZyBiL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDA2NzI3NjEu
LmQ0MDliYzQgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1dlYktpdC93
aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMDktMDctMjIgIFNpbW9uIEhhdXNtYW5u
ICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEZpeCBjb21waWxhdGlvbiwgZGlzYWJsZSBib2d1cyBETEwg
bGlua2FnZSB3YXJuaW5ncyBhbmQKKyAgICAgICAgZGVmaW5lIEpTX0VYUE9SVERBVEEgbGlrZSBp
biBKYXZhU2NyaXB0Q29yZS9jb25maWcuaCwgdG8KKyAgICAgICAgZml4IHN5bWJvbCBpbXBvcnQg
Zm9ybSBKYXZhU2NyaXB0Q29yZS4KKworICAgICAgICAqIFdlYktpdC52Y3Byb2ovV2ViS2l0LnZj
cHJvajogVHdlYWsuCisgICAgICAgICogV2ViS2l0RExMLmg6IERlZmluZSBKU19FWFBPUlREQVRB
LgorCiAyMDA5LTA3LTIyICBUYWtlc2hpIFlvc2hpbm8gIDx0eW9zaGlub0Bnb29nbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dp
bi9XZWJLaXQudmNwcm9qL1dlYktpdC52Y3Byb2ogYi9XZWJLaXQvd2luL1dlYktpdC52Y3Byb2ov
V2ViS2l0LnZjcHJvagppbmRleCBkOTM3NDc5Li5hMGZjYjY2IDEwMDY0NAotLS0gYS9XZWJLaXQv
d2luL1dlYktpdC52Y3Byb2ovV2ViS2l0LnZjcHJvagorKysgYi9XZWJLaXQvd2luL1dlYktpdC52
Y3Byb2ovV2ViS2l0LnZjcHJvagpAQCAtNDMsNiArNDMsNyBAQAogCQkJCVByZXByb2Nlc3NvckRl
ZmluaXRpb25zPSJfVVNSRExMO1dFQktJVF9FWFBPUlRTO0ZSQU1FV09SS19OQU1FPVdlYktpdDtF
TkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkc7RU5BQkxFX0RBVEFCQVNFO0VOQUJMRV9EQVRBR1JJRDtF
TkFCTEVfRE9NX1NUT1JBR0U7RU5BQkxFX0lDT05EQVRBQkFTRTtFTkFCTEVfT0ZGTElORV9XRUJf
QVBQTElDQVRJT05TO0VOQUJMRV9SVUJZO0VOQUJMRV9TVkc7RU5BQkxFX1NWR19BTklNQVRJT047
RU5BQkxFX1NWR19BU19JTUFHRTtFTkFCTEVfU1ZHX0ZPTlRTO0VOQUJMRV9TVkdfRk9SRUlHTl9P
QkpFQ1Q7RU5BQkxFX1NWR19VU0U7RU5BQkxFX1ZJREVPO0VOQUJMRV9XRUJfU09DS0VUUztFTkFC
TEVfV09SS0VSUztFTkFCTEVfWFBBVEg7RU5BQkxFX1hTTFQiDQogCQkJCVVzZVByZWNvbXBpbGVk
SGVhZGVyPSIyIg0KIAkJCQlQcmVjb21waWxlZEhlYWRlclRocm91Z2g9IldlYktpdFByZWZpeC5o
Ig0KKwkJCQlEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncz0iNDI1MTs0MjczIg0KIAkJCQlGb3JjZWRJ
bmNsdWRlRmlsZXM9IldlYktpdFByZWZpeC5oIg0KIAkJCS8+DQogCQkJPFRvb2wNCmRpZmYgLS1n
aXQgYS9XZWJLaXQvd2luL1dlYktpdERMTC5oIGIvV2ViS2l0L3dpbi9XZWJLaXRETEwuaAppbmRl
eCBkOTQ0YjA3Li4zMTI4ZGZhIDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL1dlYktpdERMTC5oCisr
KyBiL1dlYktpdC93aW4vV2ViS2l0RExMLmgKQEAgLTMwLDYgKzMwLDE2IEBACiAjZGVmaW5lIF9I
QVNfRVhDRVBUSU9OUyAwCiAjZW5kaWYKIAorI2lmIGRlZmluZWQoV0lOMzIpIHx8IGRlZmluZWQo
X1dJTjMyKQorI2lmIGRlZmluZWQoQlVJTERJTkdfSmF2YVNjcmlwdENvcmUpIHx8IGRlZmluZWQo
QlVJTERJTkdfV1RGKQorI2RlZmluZSBKU19FWFBPUlREQVRBIF9fZGVjbHNwZWMoZGxsZXhwb3J0
KQorI2Vsc2UKKyNkZWZpbmUgSlNfRVhQT1JUREFUQSBfX2RlY2xzcGVjKGRsbGltcG9ydCkKKyNl
bmRpZgorI2Vsc2UKKyNkZWZpbmUgSlNfRVhQT1JUREFUQQorI2VuZGlmCisKICNpbmNsdWRlIDx3
aW5zb2NrMi5oPgogI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNpbmNsdWRlIDx3dGYvSGFzaENvdW50
ZWRTZXQuaD4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xz
L0NoYW5nZUxvZwppbmRleCAzNGMwNDc4Li5jNzM4YjgyIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAK
KzIwMDktMDctMjIgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCBjb21w
aWxhdGlvbiBieSBpbmNsdWRpbmcgY29uZmlnLmgsIHRvIGltcG9ydCB0aGUKKyAgICAgICAgY29y
cmVjdCBkZWZpbml0aW9uIG9mIEpTX0VYUE9SVERBVEEuCisKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9tYWMvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJNYWMubW06CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW06CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL21hYy9EdW1wUmVuZGVyVHJlZVdpbmRvdy5tbToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9tYWMvRWRpdGluZ0RlbGVnYXRlLm1tOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9G
cmFtZUxvYWREZWxlZ2F0ZS5tbToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0
VGVzdENvbnRyb2xsZXJNYWMubW06CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1BpeGVs
RHVtcFN1cHBvcnRNYWMubW06CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1BvbGljeURl
bGVnYXRlLm1tOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9SZXNvdXJjZUxvYWREZWxl
Z2F0ZS5tbToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbToKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9wdGhyZWFkcy9KYXZhU2NyaXB0VGhyZWFkaW5nUHRocmVh
ZHMuY3BwOgorCiAyMDA5LTA3LTIyICBTdGV2ZSBGYWxrZW5idXJnICA8c2ZhbGtlbkBhcHBsZS5j
b20+CiAKICAgICAgICAgQ2hlY2twb2ludCBuZXcgV2luZG93cyBuaWdodGx5IGxhdW5jaGVyLgpk
aWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlD
b250cm9sbGVyTWFjLm1tIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2li
aWxpdHlDb250cm9sbGVyTWFjLm1tCmluZGV4IDQ4MmM0ZjMuLmExOTE0OTUgMTAwNjQ0Ci0tLSBh
L1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlck1h
Yy5tbQorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXJNYWMubW0KQEAgLTIzLDYgKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAK
KyNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiRHVtcFJlbmRlclRyZWUuaCIKICNpbXBvcnQg
IkFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmgiCiAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tIGIvV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KaW5kZXgg
MjA0ZDUwMC4uN2UyYTBmZSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KQEAgLTIzLDYgKzIzLDcg
QEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKKyNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAi
RHVtcFJlbmRlclRyZWUuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaCIKIApk
aWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVl
Lm1tIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCmlu
ZGV4IDNlZDJiNmQuLjA2OTU5YmMgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KQEAgLTI3LDYgKzI3LDcgQEAKICAqIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KIAorI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJEdW1wUmVuZGVyVHJlZS5oIgogCiAj
aW1wb3J0ICJBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oIgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlV2luZG93Lm1tIGIvV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlV2luZG93Lm1tCmluZGV4IGMzMDA5
YjQuLmFhNWIxMTcgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9E
dW1wUmVuZGVyVHJlZVdpbmRvdy5tbQorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvRHVtcFJlbmRlclRyZWVXaW5kb3cubW0KQEAgLTI4LDYgKzI4LDcgQEAKICAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KICAKKyNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiRHVtcFJlbmRlclRyZWVXaW5k
b3cuaCIKIAogI2ltcG9ydCAiRHVtcFJlbmRlclRyZWUuaCIKZGlmZiAtLWdpdCBhL1dlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FZGl0aW5nRGVsZWdhdGUubW0gYi9XZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvRWRpdGluZ0RlbGVnYXRlLm1tCmluZGV4IGNmNDAyNmIuLjAyZTkz
MWMgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FZGl0aW5nRGVs
ZWdhdGUubW0KKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0VkaXRpbmdEZWxl
Z2F0ZS5tbQpAQCAtMjYsNiArMjYsNyBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogIAorI2ltcG9ydCAi
Y29uZmlnLmgiCiAjaW1wb3J0ICJFZGl0aW5nRGVsZWdhdGUuaCIKIAogI2ltcG9ydCAiRHVtcFJl
bmRlclRyZWUuaCIKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9G
cmFtZUxvYWREZWxlZ2F0ZS5tbSBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9GcmFt
ZUxvYWREZWxlZ2F0ZS5tbQppbmRleCA5NzVkOTUxLi40YmYwMmVkIDEwMDY0NAotLS0gYS9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRnJhbWVMb2FkRGVsZWdhdGUubW0KKysrIGIvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0ZyYW1lTG9hZERlbGVnYXRlLm1tCkBAIC0yNiw2
ICsyNiw3IEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKKyNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9y
dCAiRHVtcFJlbmRlclRyZWUuaCIKICNpbXBvcnQgIkZyYW1lTG9hZERlbGVnYXRlLmgiCiAKZGlm
ZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJv
bGxlck1hYy5tbSBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29u
dHJvbGxlck1hYy5tbQppbmRleCA1MDc3MTM2Li5jYWY1NWVkIDEwMDY0NAotLS0gYS9XZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KKysrIGIv
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1t
CkBAIC0yNiw2ICsyNiw3IEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKKyNpbXBvcnQgImNvbmZpZy5o
IgogI2ltcG9ydCAiRHVtcFJlbmRlclRyZWUuaCIKICNpbXBvcnQgIkxheW91dFRlc3RDb250cm9s
bGVyLmgiCiAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9QaXhl
bER1bXBTdXBwb3J0TWFjLm1tIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1BpeGVs
RHVtcFN1cHBvcnRNYWMubW0KaW5kZXggOTQ3YzZkYi4uMGQ5MWExMSAxMDA2NDQKLS0tIGEvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1BpeGVsRHVtcFN1cHBvcnRNYWMubW0KKysrIGIv
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1BpeGVsRHVtcFN1cHBvcnRNYWMubW0KQEAg
LTI4LDYgKzI4LDcgQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAorI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkR1bXBSZW5kZXJUcmVlLmgiIAogI2luY2x1ZGUgIlBpeGVsRHVtcFN1cHBvcnQu
aCIKICNpbmNsdWRlICJQaXhlbER1bXBTdXBwb3J0Q0cuaCIKZGlmZiAtLWdpdCBhL1dlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9Qb2xpY3lEZWxlZ2F0ZS5tbSBiL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9Qb2xpY3lEZWxlZ2F0ZS5tbQppbmRleCAxMDgxNGQ5Li42OTM1ZWE3
IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvUG9saWN5RGVsZWdh
dGUubW0KKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1BvbGljeURlbGVnYXRl
Lm1tCkBAIC0yNiw2ICsyNiw3IEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKKyNpbXBvcnQgImNvbmZp
Zy5oIgogI2ltcG9ydCAiUG9saWN5RGVsZWdhdGUuaCIKIAogI2ltcG9ydCAiRHVtcFJlbmRlclRy
ZWUuaCIKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9SZXNvdXJj
ZUxvYWREZWxlZ2F0ZS5tbSBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9SZXNvdXJj
ZUxvYWREZWxlZ2F0ZS5tbQppbmRleCA5MzhjZTAyLi5hMzQxNGI4IDEwMDY0NAotLS0gYS9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0KKysrIGIv
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Jlc291cmNlTG9hZERlbGVnYXRlLm1tCkBA
IC0yNiw2ICsyNiw3IEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKKyNpbXBvcnQgImNvbmZpZy5oIgog
I2ltcG9ydCAiUmVzb3VyY2VMb2FkRGVsZWdhdGUuaCIKIAogI2ltcG9ydCAiRHVtcFJlbmRlclRy
ZWUuaCIKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVn
YXRlLm1tIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW0KaW5k
ZXggNjZhYWRmOS4uYzFjMzFiMyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL1VJRGVsZWdhdGUubW0KKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L1VJRGVsZWdhdGUubW0KQEAgLTI2LDYgKzI2LDcgQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAorI2lt
cG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJEdW1wUmVuZGVyVHJlZS5oIgogI2ltcG9ydCAiVUlE
ZWxlZ2F0ZS5oIgogCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9wdGhy
ZWFkcy9KYXZhU2NyaXB0VGhyZWFkaW5nUHRocmVhZHMuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvcHRocmVhZHMvSmF2YVNjcmlwdFRocmVhZGluZ1B0aHJlYWRzLmNwcAppbmRleCAz
YWMyNTdkLi41YTQ4YjI3IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9w
dGhyZWFkcy9KYXZhU2NyaXB0VGhyZWFkaW5nUHRocmVhZHMuY3BwCisrKyBiL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL3B0aHJlYWRzL0phdmFTY3JpcHRUaHJlYWRpbmdQdGhyZWFkcy5jcHAK
QEAgLTI4LDYgKzI4LDcgQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KICAKKyNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJKYXZhU2NyaXB0VGhyZWFkaW5nLmgiCiAKICNpbmNsdWRlIDxDb3JlRm91
bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgotLSAKMS42LjAuNAoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33358</attachid>
            <date>2009-07-23 13:05:30 -0700</date>
            <delta_ts>2009-07-28 07:11:17 -0700</delta_ts>
            <desc>Build JSC as a shared library for QtWebKit</desc>
            <filename>build-qtwebkit-with-shared-jsc.patch</filename>
            <type>text/plain</type>
            <size>6077</size>
            <attacher name="Kenneth Rohde Christiansen">kenneth</attacher>
            
              <data encoding="base64">RnJvbSAxZWVlOGE2YzJjMGFkZmEyMjkzNjg4N2E1ZDU5YTA3MjZkNjQ4ZjQwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiA8a2VubmV0aEB3
ZWJraXQub3JnPgpEYXRlOiBUaHUsIDIzIEp1bCAyMDA5IDE3OjAwOjE1IC0wMzAwClN1YmplY3Q6
IFtQQVRDSF0gLjoKCjIwMDktMDctMjIgIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8a2Vu
bmV0aC5jaHJpc3RpYW5zZW5Ab3BlbmJvc3NhLm9yZz4KCiAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCgogICAgICAgIEJ1aWxkIEphdmFTY3JpcHRDb3JlIGFzIHNoYXJlZCBsaWJy
YXJ5LgoKICAgICAgICAqIFdlYktpdC5wcm86IFJlY3Vyc2UgaW50byBKYXZhU2NyaXB0Q29yZSB0
byBidWlsZCBpdCBhcyBzaGFyZWQKICAgICAgICBsaWJyYXJ5LgoKSmF2YVNjcmlwdENvcmU6Cgoy
MDA5LTA3LTIzICBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5ldGhAd2Via2l0Lm9y
Zz4sIFNpbW9uIEhhdXNtYW5uIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CgogICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICBDaGFuZ2VkIHRoZSBRdCAucHJvIGZp
bGVzIHRvIGJ1aWxkIEpTQyBhcyBhIHNoYXJlZCBsaWJyYXJ5LgoKICAgICAgICAqIEphdmFTY3Jp
cHRDb3JlLnBybzoKICAgICAgICAqIGpzYy5wcm86CgpXZWJDb3JlOgoKMjAwOS0wNy0yMyAgS2Vu
bmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4gIDxrZW5uZXRoQHdlYmtpdC5vcmc+LCBTaW1vbiBIYXVz
bWFubiA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgoKICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KCiAgICAgICAgRm9yIHRoZSBRdCBidWlsZCwgbGluayBKYXZhU2NyaXB0Q29y
ZSBhcyBzaGFyZWQgbGlicmFyeS4KCiAgICAgICAgKiBXZWJDb3JlLnBybzogTGluayBKU0MgYXMg
c2hhcmVkIGxpYnJhcnkuCi0tLQogQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgIHwg
ICAgOSArKysrKysrKysKIEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyAgICAgICAgICB8ICAgIDkg
KysrKysrKysrCiBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcm8gfCAgICA2ICsrKyst
LQogSmF2YVNjcmlwdENvcmUvanNjLnBybyAgICAgICAgICAgIHwgICAyNiArKysrKysrKysrKysr
KysrKysrKysrKysrLQogV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgIHwgICAgOCAr
KysrKysrKwogV2ViQ29yZS9XZWJDb3JlLnBybyAgICAgICAgICAgICAgIHwgICAyOSArKysrKysr
KysrKysrKysrKysrKysrKysrKysrKwogV2ViS2l0LnBybyAgICAgICAgICAgICAgICAgICAgICAg
IHwgICAgMiArKwogNyBmaWxlcyBjaGFuZ2VkLCA4NiBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9u
cygtKQoKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBmMjMwMTBkLi4x
ODk1YmU1IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTIgQEAKKzIwMDktMDctMjIgIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8a2VubmV0aC5j
aHJpc3RpYW5zZW5Ab3BlbmJvc3NhLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBCdWlsZCBKYXZhU2NyaXB0Q29yZSBhcyBzaGFyZWQgbGlicmFy
eS4KKworICAgICAgICAqIFdlYktpdC5wcm86IFJlY3Vyc2UgaW50byBKYXZhU2NyaXB0Q29yZSB0
byBidWlsZCBpdCBhcyBzaGFyZWQKKyAgICAgICAgbGlicmFyeS4KKwogMjAwOS0wNy0yMSAgUm9s
YW5kIFN0ZWluZXIgIDxyb2xhbmRzdGVpbmVyQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgRGF2aWQgTGV2aW4uCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cg
Yi9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggYzQ3NDc4YS4uNDQyNGI2ZCAxMDA2NDQK
LS0tIGEvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL0phdmFTY3JpcHRDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDA5LTA3LTIzICBLZW5uZXRoIFJvaGRlIENocmlzdGlh
bnNlbiAgPGtlbm5ldGhAd2Via2l0Lm9yZz4sIFNpbW9uIEhhdXNtYW5uIDxzaW1vbi5oYXVzbWFu
bkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQ2hhbmdlZCB0aGUgUXQgLnBybyBmaWxlcyB0byBidWlsZCBKU0MgYXMgYSBzaGFyZWQg
bGlicmFyeS4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnBybzoKKyAgICAgICAgKiBqc2Mu
cHJvOgorCiAyMDA5LTA3LTIyICBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5ldGgu
Y2hyaXN0aWFuc2VuQG9wZW5ib3NzYS5vcmc+LCBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNt
YW5uQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KZGlm
ZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnBybyBiL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnBybwppbmRleCBmODgxYzA1Li5iMmY3YmNmIDEwMDY0NAotLS0g
YS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcm8KKysrIGIvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUucHJvCkBAIC0yLDkgKzIsMTAgQEAKIENPTkZJRyArPSBidWlsZGluZy1s
aWJzCiBpbmNsdWRlKCQkUFdELy4uL1dlYktpdC5wcmkpCiAKK1FUIC09IGd1aQorCiBURU1QTEFU
RSA9IGxpYgotQ09ORklHICs9IHN0YXRpY2xpYgotVEFSR0VUID0gSmF2YVNjcmlwdENvcmUKK1RB
UkdFVCA9IFF0SmF2YVNjcmlwdENvcmUKIAogQ09ORklHICs9IGRlcGVuZF9pbmNsdWRlcGF0aAog
CkBAIC0zMSw2ICszMiw3IEBAIElOQ0xVREVQQVRIICs9ICQkR0VORVJBVEVEX1NPVVJDRVNfRElS
CiAgICAgfSBlbHNlIHsgIyBSZWxlYXNlCiAgICAgICAgIE9CSkVDVFNfRElSID0gb2JqL3JlbGVh
c2UKICAgICB9CisgICAgREVTVERJUiA9ICQkT1VUUFVUX0RJUi9saWIKIH0KIAogQ09ORklHIC09
IHdhcm5fb24KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL2pzYy5wcm8gYi9KYXZhU2NyaXB0
Q29yZS9qc2MucHJvCmluZGV4IGJhODgwZmYuLmE4NGMwMmUgMTAwNjQ0Ci0tLSBhL0phdmFTY3Jp
cHRDb3JlL2pzYy5wcm8KKysrIGIvSmF2YVNjcmlwdENvcmUvanNjLnBybwpAQCAtMjEsNyArMjEs
MzEgQEAgQ09ORklHKGRlYnVnLCBkZWJ1Z3xyZWxlYXNlKSB7CiAgICAgT0JKRUNUU19ESVIgPSBv
YmovcmVsZWFzZQogfQogT0JKRUNUU19ESVJfV1RSID0gJCRPQkpFQ1RTX0RJUiQke1FNQUtFX0RJ
Ul9TRVB9Ci1pbmNsdWRlKCQkUFdEL0phdmFTY3JpcHRDb3JlLnByaSkKKworbGludXgtZysrKiB7
CisKKyAgICBJTkNMVURFUEFUSCArPSBcCisgICAgICAgIEFQSSBcCisgICAgICAgIGFzc2VtYmxl
ciBcCisgICAgICAgIGJ5dGVjb2RlIFwKKyAgICAgICAgYnl0ZWNvbXBpbGVyIFwKKyAgICAgICAg
ZGVidWdnZXIgXAorICAgICAgICBGb3J3YXJkaW5nSGVhZGVycyBcCisgICAgICAgIGludGVycHJl
dGVyIFwKKyAgICAgICAgaml0IFwKKyAgICAgICAgcGFyc2VyIFwKKyAgICAgICAgcHJvZmlsZXIg
XAorICAgICAgICBydW50aW1lIFwKKyAgICAgICAgd3JlYyBcCisgICAgICAgIHd0ZiBcCisgICAg
ICAgIHd0Zi91bmljb2RlIFwKKyAgICAgICAgeWFycgorCisgICAgTElCUyArPSAtTCQkT1VUUFVU
X0RJUi9saWIgLWxRdEphdmFTY3JpcHRDb3JlCisgICAgUU1BS0VfUlBBVEhESVIgKz0gJCRPVVRQ
VVRfRElSL2xpYgorfSBlbHNlIHsKKyAgICBpbmNsdWRlKCQkUFdEL0phdmFTY3JpcHRDb3JlLnBy
aSkKK30KIAogbGVzc1RoYW4oUVRfTUlOT1JfVkVSU0lPTiwgNCkgewogICAgIERFRklORVMgKz0g
UVRfQkVHSU5fTkFNRVNQQUNFPSIiIFFUX0VORF9OQU1FU1BBQ0U9IiIKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTFkOGU0Ni4uZjNlMGIy
NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMSBAQAorMjAwOS0wNy0yMyAgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4g
IDxrZW5uZXRoQHdlYmtpdC5vcmc+LCBTaW1vbiBIYXVzbWFubiA8c2ltb24uaGF1c21hbm5Abm9r
aWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEZvciB0aGUgUXQgYnVpbGQsIGxpbmsgSmF2YVNjcmlwdENvcmUgYXMgc2hhcmVkIGxpYnJhcnku
CisKKyAgICAgICAgKiBXZWJDb3JlLnBybzogTGluayBKU0MgYXMgc2hhcmVkIGxpYnJhcnkuCisK
IDIwMDktMDctMjIgIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8a2VubmV0aC5jaHJpc3Rp
YW5zZW5Ab3BlbmJvc3NhLm9yZz4sIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9r
aWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggMDAyMjQz
OS4uYzcwMDQxNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9XZWJDb3Jl
L1dlYkNvcmUucHJvCkBAIC0xNjYsNiArMTY2LDM1IEBAIENPTkZJRyhjb21wdXRlX2RlZmF1bHRz
KSB7CiAgICAgZXJyb3IoIkRvbmUgY29tcHV0aW5nIGRlZmF1bHRzIikKIH0KIAorbGludXgtZysr
KiB7CisKKyAgICBJTkNMVURFUEFUSCArPSBcCisgICAgICAgICQkUFdELyBcCisgICAgICAgICQk
UFdELy4uIFwKKyAgICAgICAgJCRQV0QvLi4vSmF2YVNjcmlwdENvcmUgXAorICAgICAgICAkJFBX
RC8uLi9KYXZhU2NyaXB0Q29yZS9BUEkgXAorICAgICAgICAkJFBXRC8uLi9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIgXAorICAgICAgICAkJFBXRC8uLi9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZSBc
CisgICAgICAgICQkUFdELy4uL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlciBcCisgICAgICAg
ICQkUFdELy4uL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyIFwKKyAgICAgICAgJCRQV0QvLi4vSmF2
YVNjcmlwdENvcmUvRm9yd2FyZGluZ0hlYWRlcnMgXAorICAgICAgICAkJFBXRC8uLi9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlciBcCisgICAgICAgICQkUFdELy4uL0phdmFTY3JpcHRDb3JlL2pp
dCBcCisgICAgICAgICQkUFdELy4uL0phdmFTY3JpcHRDb3JlL3BhcnNlciBcCisgICAgICAgICQk
UFdELy4uL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyIFwKKyAgICAgICAgJCRQV0QvLi4vSmF2YVNj
cmlwdENvcmUvcnVudGltZSBcCisgICAgICAgICQkUFdELy4uL0phdmFTY3JpcHRDb3JlL3dyZWMg
XAorICAgICAgICAkJFBXRC8uLi9KYXZhU2NyaXB0Q29yZS93dGYgXAorICAgICAgICAkJFBXRC8u
Li9KYXZhU2NyaXB0Q29yZS93dGYvdW5pY29kZSBcCisgICAgICAgICQkUFdELy4uL0phdmFTY3Jp
cHRDb3JlL3lhcnIKKworICAgIExJQlMgKz0gLUwkJERFU1RESVIgLWxRdEphdmFTY3JpcHRDb3Jl
CisgICAgUU1BS0VfUlBBVEhESVIgKz0gJCRERVNURElSCisKK30gZWxzZSB7CisgICAgaW5jbHVk
ZSgkJFBXRC8uLi9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcmkpCit9CisKIFJFU09V
UkNFUyArPSBcCiAgICAgJCRQV0QvLi4vV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktp
dC5xcmMgXAogICAgICQkUFdELy4uL1dlYkNvcmUvV2ViQ29yZS5xcmMKZGlmZiAtLWdpdCBhL1dl
YktpdC5wcm8gYi9XZWJLaXQucHJvCmluZGV4IDIxZDNkYWEuLmViMWYxMzUgMTAwNjQ0Ci0tLSBh
L1dlYktpdC5wcm8KKysrIGIvV2ViS2l0LnBybwpAQCAtMSw2ICsxLDggQEAKIFRFTVBMQVRFID0g
c3ViZGlycwogQ09ORklHICs9IG9yZGVyZWQKIAorbGludXgtZysrOiBTVUJESVJTICs9IEphdmFT
Y3JpcHRDb3JlCisKIFNVQkRJUlMgKz0gXAogICAgICAgICBXZWJDb3JlIFwKICAgICAgICAgSmF2
YVNjcmlwdENvcmUvanNjLnBybyBcCi0tIAoxLjYuMC40Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33626</attachid>
            <date>2009-07-28 07:10:40 -0700</date>
            <delta_ts>2009-07-30 05:46:38 -0700</delta_ts>
            <desc>Updated patch, rebased against ToT and fixed windows and mac builds.</desc>
            <filename>0001-JavaScriptCore.patch</filename>
            <type>text/plain</type>
            <size>78272</size>
            <attacher name="Simon Hausmann">hausmann</attacher>
            
              <data encoding="base64">RnJvbSBjNTliYTA1YWRkZDRhNTE5M2E0OTM0ODcyZGY2YzQ2YWVjZWE1Zjk1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBTaW1vbiBIYXVzbWFubiA8c2ltb24uaGF1c21hbm5Abm9raWEu
Y29tPgpEYXRlOiBUdWUsIDI4IEp1bCAyMDA5IDE2OjA3OjM1ICswMjAwClN1YmplY3Q6IFtQQVRD
SCAxLzJdIEphdmFTY3JpcHRDb3JlOgoKMjAwOS0wNy0yNCAgS2VubmV0aCBSb2hkZSBDaHJpc3Rp
YW5zZW4gIDxrZW5uZXRoLmNocmlzdGlhbnNlbkBvcGVuYm9zc2Eub3JnPiwgU2ltb24gSGF1c21h
bm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CgogICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgoKICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGJ1aWxkIEphdmFTY3JpcHRD
b3JlIGFzIHNoYXJlZCBsaWJyYXJ5IHdpdGhvdXQKICAgICAgICBleHBvcnRlZCBzeW1ib2wgbGlz
dHMuCgogICAgICAgIEFkZGVkIEpTX0VYUE9SVERBVEEgdG8gYWxsIHRoZSBjbGFzc2VzIHRoYXQg
YXJlIGFjY2Vzc2VkIGZyb20gV2ViQ29yZSwKICAgICAgICB0byBlbnN1cmUgdGhlaXIgdmlzaWJp
bGl0eS4KCiAgICAgICAgKiBBUEkvT3BhcXVlSlNTdHJpbmcuaDogVXNlIEpTX0VYUE9SVERBVEEu
CiAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmNwcm9qOiBEaXNhYmxlCiAgICAgICAgTVNWQyB3YXJuaW5nIGFib3V0IGluY29uc2lz
dGVudCBsaW5rYWdlLgogICAgICAgICogSmF2YVNjcmlwdENvcmUudmNwcm9qL2pzYy9qc2MudmNw
cm9qOiBEaXR0by4KICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6IEluY2x1ZGUgUHJvZmlsZUdlbmVyYXRvci5oCiAgICAgICAgaW4gdGhlIHByaXZhdGUg
aGVhZGVycywgYXMgaXQgaXMgaW5jbHVkZWQgZnJvbSBQcm9maWxlci5oLCB3aGljaCBpcwogICAg
ICAgIGFsc28gaW5jbHVkZWQgZnJvbSBXZWJDb3JlLgogICAgICAgICogYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmg6IFVzZSBKU19FWFBPUlREQVRBLgogICAgICAgICogY29uZmlnLmg6
IERlZmluZSBKU19FWFBPUlREQVRBIGFjY29yZGluZ2x5IHdpdGggZ2NjOyBEZWZpbmUgaXQgdG8K
ICAgICAgICBkbGxpbXBvcnQgd2l0aCBNU1ZDLgogICAgICAgICogZGVidWdnZXIvRGVidWdnZXIu
aDogVXNlIEpTX0VYUE9SVERBVEEuCiAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFt
ZS5oOiBEaXR0by4KICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmg6IERpdHRvLgog
ICAgICAgICoganNjLnBybzogTGluayBhZ2FpbnN0IEpTQyBhcyBzaGFyZWQgbGlicmFyeS4KICAg
ICAgICAqIHBhcnNlci9Ob2Rlcy5oOiBVc2UgSlNfRVhQT1JUREFUQS4KICAgICAgICAqIHBhcnNl
ci9QYXJzZXIuaDogRGl0dG8uCiAgICAgICAgKiBwYXJzZXIvUGFyc2VyQXJlbmEuaDogRGl0dG8u
CiAgICAgICAgKiBwY3JlL3BjcmUuaDogRGl0dG8uCiAgICAgICAgKiBwcm9maWxlci9Qcm9maWxl
Lmg6IFVzZSBKU19FWFBPUlREQVRBLgogICAgICAgICogcHJvZmlsZXIvUHJvZmlsZXIuaDogVXNl
IEpTX0VYUE9SVERBVEEgYW5kIHJlcGxhY2UgUHJvZmlsZUdlbmVyYXRvcgogICAgICAgIGZvcndh
cmQgZGVjbGFyYXRpb24gd2l0aCBpbmNsdXNpb24gdG8gZml4IE1TVkMgY29tcGlsYXRpb24sIHdo
aWNoIHJlcXVpcmVzCiAgICAgICAgaXRzIHZpc2libGl0eSB3aGVuIG1hcmtpbmcgUHJvZmlsZXIg
d2l0aCBkbGxleHBvcnQuCiAgICAgICAgKiBydW50aW1lL0FyZ0xpc3QuaDogVXNlIEpTX0VYUE9S
VERBVEEuCiAgICAgICAgKiBydW50aW1lL0Jvb2xlYW5PYmplY3QuaDogRGl0dG8uCiAgICAgICAg
KiBydW50aW1lL0NhbGxEYXRhLmg6IERpdHRvLgogICAgICAgICogcnVudGltZS9Db2xsZWN0b3Iu
aDogRGl0dG8uCiAgICAgICAgKiBydW50aW1lL0NvbXBsZXRpb24uaDogRGl0dG8uCiAgICAgICAg
KiBydW50aW1lL0NvbnN0cnVjdERhdGEuaDogRGl0dG8uCiAgICAgICAgKiBydW50aW1lL0RhdGVJ
bnN0YW5jZS5oOiBEaXR0by4KICAgICAgICAqIHJ1bnRpbWUvRXJyb3IuaDogRGl0dG8uCiAgICAg
ICAgKiBydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaDogRGl0dG8uCiAgICAgICAgKiBydW50
aW1lL0lkZW50aWZpZXIuaDogRGl0dG8uCiAgICAgICAgKiBydW50aW1lL0luaXRpYWxpemVUaHJl
YWRpbmcuaDogRGl0dG8uCiAgICAgICAgKiBydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaDogTW92
ZWQgSlNfRVhQT1JUREFUQSBmcm9tIEludGVybmFsRnVuY3Rpb246OmluZm8gdG8KICAgICAgICBJ
bnRlcm5hbEZ1bmN0aW9uLCB0byBleHBvcnQgdGhlIGVudGlyZSBjbGFzcy4KICAgICAgICAqIHJ1
bnRpbWUvSlNBcnJheS5oOiBVc2UgSlNfRVhQT1JUREFUQS4KICAgICAgICAqIHJ1bnRpbWUvSlNC
eXRlQXJyYXkuaDogRGl0dG8uCiAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5oOiBEaXR0by4KICAg
ICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmg6IERpdHRvLgogICAgICAgICogcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oOiBEaXR0by4KICAgICAgICAqIHJ1bnRpbWUvSlNJbW1lZGlhdGUuaDog
RGl0dG8uCiAgICAgICAgKiBydW50aW1lL0pTTG9jay5oOiBEaXR0by4KICAgICAgICAqIHJ1bnRp
bWUvSlNOdW1iZXJDZWxsLmg6IERpdHRvLgogICAgICAgICogcnVudGltZS9KU09iamVjdC5oOiBE
aXR0by4KICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmcuaDogRGl0dG8uCiAgICAgICAgKiBydW50
aW1lL0pTVmFyaWFibGVPYmplY3QuaDogRGl0dG8uCiAgICAgICAgKiBydW50aW1lL0pTV3JhcHBl
ck9iamVjdC5oOiBEaXR0by4KICAgICAgICAqIHJ1bnRpbWUvTG9va3VwLmg6IERpdHRvLgogICAg
ICAgICogcnVudGltZS9OdW1iZXJPYmplY3QuaDogRGl0dG8uCiAgICAgICAgKiBydW50aW1lL09i
amVjdFByb3RvdHlwZS5oOiBEaXR0by4KICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlOYW1lQXJy
YXkuaDogRGl0dG8uCiAgICAgICAgKiBydW50aW1lL1Byb3RvdHlwZUZ1bmN0aW9uLmg6IERpdHRv
LgogICAgICAgICogcnVudGltZS9SZWdFeHAuaDogRGl0dG8uCiAgICAgICAgKiBydW50aW1lL1Jl
Z0V4cE9iamVjdC5oOiBEaXR0by4KICAgICAgICAqIHJ1bnRpbWUvU21hbGxTdHJpbmdzLmg6IERp
dHRvLgogICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuaDogTW92ZWQgSlNfRVhQT1JUREFU
QSBmcm9tIFN0cmluZ09iamVjdDo6aW5mbyB0byBTdHJpbmdPYmplY3QsIHRvCiAgICAgICAgZXhw
b3J0IHRoZSBlbnRpcmUgY2xhc3MuCiAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5oOiBVc2Ug
SlNfRVhQT1JUREFUQS4KICAgICAgICAqIHJ1bnRpbWUvVGltZW91dENoZWNrZXIuaDogRGl0dG8u
CiAgICAgICAgKiBydW50aW1lL1VTdHJpbmcuaDogUmVwbGFjZWQgc2luZ2xlIGV4cG9ydCBvZiBV
U3RyaW5nOjpSZXA6OntudWxsLGVtcHR5fUJhc2VTdHJpbmcgd2l0aAogICAgICAgIGV4cG9ydCBv
ZiBlbnRpcmUgY2xhc3MuCiAgICAgICAgKiB3dGYvQnl0ZUFycmF5Lmg6IFVzZSBKU19FWFBPUlRE
QVRBLgogICAgICAgICogd3RmL0N1cnJlbnRUaW1lLmg6IERpdHRvLgogICAgICAgICogd3RmL0Zh
c3RNYWxsb2MuaDogRGl0dG8uCiAgICAgICAgKiB3dGYvTWFpblRocmVhZC5oOiBEaXR0by4KICAg
ICAgICAqIHd0Zi9SYW5kb21OdW1iZXIuaDogRGl0dG8uCiAgICAgICAgKiB3dGYvVGhyZWFkaW5n
Lmg6IERpdHRvLgogICAgICAgICogd3RmL2R0b2EuaDogRGl0dG8uCiAgICAgICAgKiB3dGYvdW5p
Y29kZS9VVEY4Lmg6IERpdHRvLgogICAgICAgICogd3RmL3VuaWNvZGUvVVRGOC5jcHA6IEluY2x1
ZGUgY29uZmlnLmggaW4gb3JkZXIgdG8gY29tcGlsZSB3aXRoIE1TVkMuCgpXZWJDb3JlOgoKMjAw
OS0wNy0yNCAgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4gIDxrZW5uZXRoLmNocmlzdGlhbnNl
bkBvcGVuYm9zc2Eub3JnPiwgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5j
b20+CgogICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICBEaXNhYmxl
IGJvZ3VzIERMTCBsaW5rYWdlIHdhcm5pbmdzIHdpdGggTVNWQy4KCiAgICAgICAgRGVmaW5lIEpT
X0VYUE9SVERBVEEgYW5kIFdFQktJVF9FWFBPUlREQVRBIGZvciBnY2MuCgogICAgICAgIExpbmsg
UVRNb3ZpZVdpbiBhZ2FpbnN0IEphdmFTY3JpcHRDb3JlIGZvciB0aGUgZXhwb3J0ZWQKICAgICAg
ICBXVEYgc3ltYm9scy4KCiAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajog
RGlzYWJsZSBib2d1cyBETEwgbGlua2FnZSB3YXJuaW5nLgogICAgICAgICogV2ViQ29yZS52Y3By
b2ovUVRNb3ZpZVdpbi52Y3Byb2o6IExpbmsgUVRNb3ZpZVdpbiBhZ2FpbnN0IEpTQyBkbGwsCiAg
ICAgICAgZm9yIHRoZSBleHBvcnRlZCBXVEYgc3ltYm9scy4KICAgICAgICAqIGNvbmZpZy5oOiBU
d2VhayBmb3IgZ2NjLgoKV2ViS2l0L2NmOgoKMjAwOS0wNy0yNCAgU2ltb24gSGF1c21hbm4gIDxz
aW1vbi5oYXVzbWFubkBub2tpYS5jb20+CgogICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgoKICAgICAgICBGaXggY29tcGlsYXRpb24gb24gdGhlIE1hYywgZG9uJ3QgcmUtZGVmaW5l
IEpTX0VYUE9SVERBVEEgZW1wdHkgYnV0CiAgICAgICAgcmUtdXNlIHRoZSBkZWZpbml0aW9uIGZy
b20gV2ViS2l0UHJlZml4LmguCgogICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9y
Q2xpZW50Q0YuY3BwOgoKV2ViS2l0L21hYzoKCjIwMDktMDctMjQgIFNpbW9uIEhhdXNtYW5uICA8
c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgoKICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KCiAgICAgICAgRHVwbGljYXRlIHRoZSBKU19FWFBPUlREQVRBIGFuZCBXRUJLSVRfRVhQ
T1JUREFUQSBkZWZpbml0aW9uIGZyb20KICAgICAgICBXZWJDb3JlL2NvbmZpZy5oIHRvIGZpeCBj
b21waWxhdGlvbiBhZ2FpbnN0IEphdmFTY3JpcHRDb3JlIGFuZAogICAgICAgIFdlYkNvcmUgb24g
dGhlIE1hYy4KCiAgICAgICAgKiBXZWJLaXRQcmVmaXguaDoKCldlYktpdC93aW46CgoyMDA5LTA3
LTI0ICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KCiAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgogICAgICAgIEZpeCBjb21waWxhdGlvbiwgZGlz
YWJsZSBib2d1cyBETEwgbGlua2FnZSB3YXJuaW5ncyBhbmQKICAgICAgICBkZWZpbmUgSlNfRVhQ
T1JUREFUQSBsaWtlIGluIEphdmFTY3JpcHRDb3JlL2NvbmZpZy5oLCB0bwogICAgICAgIGZpeCBz
eW1ib2wgaW1wb3J0IGZvcm0gSmF2YVNjcmlwdENvcmUuCgogICAgICAgICogV2ViS2l0LnZjcHJv
ai9XZWJLaXQudmNwcm9qOiBUd2Vhay4KICAgICAgICAqIFdlYktpdERMTC5oOiBEZWZpbmUgSlNf
RVhQT1JUREFUQS4KCldlYktpdFRvb2xzOgoKMjAwOS0wNy0yOCAgU2ltb24gSGF1c21hbm4gIDxz
aW1vbi5oYXVzbWFubkBub2tpYS5jb20+CgogICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgoKICAgICAgICBGaXggY29tcGlsYXRpb24gb24gdGhlIE1hYy4KCiAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9jb25maWcuaDogTW92ZSBGYXN0TWFsbG9jLmggaW5jbHVzaW9uIHVudGlsIGFm
dGVyIHRoZSBkZWZpbml0aW9uIG9mCiAgICAgICAgSlNfRVhQT1JUREFUQS4KICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL3B0aHJlYWRzL0phdmFTY3JpcHRUaHJlYWRpbmdQdGhyZWFkcy5jcHA6IElu
Y2x1ZGUgY29uZmlnLmggZm9yIHRoZQogICAgICAgIGV4cG9ydCBtYWNyb3MuCi0tLQogSmF2YVNj
cmlwdENvcmUvQVBJL09wYXF1ZUpTU3RyaW5nLmggICAgICAgICAgICAgICAgfCAgICAyICstCiBK
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgODEg
KysrKysrKysrKysrKysrKysrKysKIC4uLi9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3Byb2ogICAgICAgICAgIHwgICAgNyArKwogLi4uL0phdmFTY3JpcHRDb3JlLnZjcHJvai9qc2Mv
anNjLnZjcHJvaiAgICAgICAgICAgfCAgICAzICsKIC4uLi9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qICAgICAgIHwgICAgMiArLQogSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggICAgfCAgICAyICstCiBKYXZhU2NyaXB0Q29yZS9j
b25maWcuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTcgKysrLS0KIEphdmFTY3Jp
cHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmggICAgICAgICAgICAgICAgIHwgICAgMiArLQogSmF2
YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuaCAgICAgICAgfCAgICA2ICst
CiBKYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oICAgICAgICAgICB8ICAg
IDIgKy0KIEphdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oICAgICAgICAgICAgICAgICAgICAg
IHwgICAgNiArLQogSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oICAgICAgICAgICAgICAg
ICAgICAgfCAgICAyICstCiBKYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaCAgICAg
ICAgICAgICAgICB8ICAgIDIgKy0KIEphdmFTY3JpcHRDb3JlL3BjcmUvcGNyZS5oICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgICAgNiArLQogSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmls
ZS5oICAgICAgICAgICAgICAgICAgfCAgICAyICstCiBKYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Q
cm9maWxlci5oICAgICAgICAgICAgICAgICB8ICAgIDYgKy0KIEphdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJnTGlzdC5oICAgICAgICAgICAgICAgICAgIHwgICAgNCArLQogSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Cb29sZWFuT2JqZWN0LmggICAgICAgICAgICAgfCAgICAyICstCiBKYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NhbGxEYXRhLmggICAgICAgICAgICAgICAgICB8ICAgIDYgKy0KIEphdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29sbGVjdG9yLmggICAgICAgICAgICAgICAgIHwgICAgMiArLQog
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmggICAgICAgICAgICAgICAgfCAgICA2
ICstCiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0cnVjdERhdGEuaCAgICAgICAgICAgICB8
ICAgIDYgKy0KIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmggICAgICAgICAg
ICAgIHwgICAgMiArLQogSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oICAgICAgICAgICAg
ICAgICAgICAgfCAgICA4ICstCiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3Ry
dWN0b3IuaCAgICAgICB8ICAgIDggKy0KIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmll
ci5oICAgICAgICAgICAgICAgIHwgICAgMiArLQogSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0
aWFsaXplVGhyZWFkaW5nLmggICAgICAgfCAgICA0ICstCiBKYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGVybmFsRnVuY3Rpb24uaCAgICAgICAgICB8ICAgIDQgKy0KIEphdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBcnJheS5oICAgICAgICAgICAgICAgICAgIHwgICAgOCArLQogSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0J5dGVBcnJheS5oICAgICAgICAgICAgICAgfCAgICAyICstCiBKYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIEph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmggICAgICAgICAgICAgIHwgICAgMiAr
LQogSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oICAgICAgICAgICAgfCAg
ICAyICstCiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW1tZWRpYXRlLmggICAgICAgICAgICAg
ICB8ICAgMTAgKy0KIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmggICAgICAgICAgICAg
ICAgICAgIHwgICAgMiArLQogSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU051bWJlckNlbGwuaCAg
ICAgICAgICAgICAgfCAgIDEwICstCiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0Lmgg
ICAgICAgICAgICAgICAgICB8ICAgIDYgKy0KIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJp
bmcuaCAgICAgICAgICAgICAgICAgIHwgICAzNCArKysrLS0tLQogSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1ZhcmlhYmxlT2JqZWN0LmggICAgICAgICAgfCAgICA0ICstCiBKYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTV3JhcHBlck9iamVjdC5oICAgICAgICAgICB8ICAgIDQgKy0KIEphdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTG9va3VwLmggICAgICAgICAgICAgICAgICAgIHwgICAgNCArLQogSmF2
YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJPYmplY3QuaCAgICAgICAgICAgICAgfCAgICAyICst
CiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5oICAgICAgICAgICB8ICAg
IDIgKy0KIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuaCAgICAgICAg
IHwgICAgMiArLQogSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm90b3R5cGVGdW5jdGlvbi5oICAg
ICAgICAgfCAgICAyICstCiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oICAgICAgICAg
ICAgICAgICAgICB8ICAgIDIgKy0KIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0
LmggICAgICAgICAgICAgIHwgICAgMiArLQogSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0
cmluZ3MuaCAgICAgICAgICAgICAgfCAgICAyICstCiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cmluZ09iamVjdC5oICAgICAgICAgICAgICB8ICAgIDQgKy0KIEphdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlLmggICAgICAgICAgICAgICAgIHwgICAgMiArLQogSmF2YVNjcmlwdENvcmUv
cnVudGltZS9UaW1lb3V0Q2hlY2tlci5oICAgICAgICAgICAgfCAgICAyICstCiBKYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1VTdHJpbmcuaCAgICAgICAgICAgICAgICAgICB8ICAgMjQgKysrLS0tCiBK
YXZhU2NyaXB0Q29yZS93dGYvQnl0ZUFycmF5LmggICAgICAgICAgICAgICAgICAgICB8ICAgIDIg
Ky0KIEphdmFTY3JpcHRDb3JlL3d0Zi9DdXJyZW50VGltZS5oICAgICAgICAgICAgICAgICAgIHwg
ICAgNSArLQogSmF2YVNjcmlwdENvcmUvd3RmL0Zhc3RNYWxsb2MuaCAgICAgICAgICAgICAgICAg
ICAgfCAgIDE4ICsrLS0KIEphdmFTY3JpcHRDb3JlL3d0Zi9NYWluVGhyZWFkLmggICAgICAgICAg
ICAgICAgICAgIHwgICAgNiArLQogSmF2YVNjcmlwdENvcmUvd3RmL1JhbmRvbU51bWJlci5oICAg
ICAgICAgICAgICAgICAgfCAgICA0ICstCiBKYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nLmgg
ICAgICAgICAgICAgICAgICAgICB8ICAgMjQgKysrLS0tCiBKYXZhU2NyaXB0Q29yZS93dGYvZHRv
YS5oICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDQgKy0KIEphdmFTY3JpcHRDb3JlL3d0
Zi91bmljb2RlL1VURjguY3BwICAgICAgICAgICAgICAgIHwgICAgMSArCiBKYXZhU2NyaXB0Q29y
ZS93dGYvdW5pY29kZS9VVEY4LmggICAgICAgICAgICAgICAgICB8ICAgMTQgKystLQogV2ViQ29y
ZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE2ICsrKysK
IFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovUVRNb3ZpZVdpbi52Y3Byb2ogICAgICAgICAgIHwgICAg
NiArLQogV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiAgICAgICAgICAgICAg
fCAgICA1ICsKIFdlYkNvcmUvY29uZmlnLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgICAzMSArKysrKy0tLQogV2ViS2l0L2NmL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCAgICA5ICsrCiBXZWJLaXQvY2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5z
cGVjdG9yQ2xpZW50Q0YuY3BwICB8ICAgIDIgLQogV2ViS2l0L21hYy9DaGFuZ2VMb2cgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEwICsrKwogV2ViS2l0L21hYy9XZWJLaXRQcmVm
aXguaCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDI0ICsrKysrLQogV2ViS2l0L3dpbi9D
aGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDExICsrKwogV2ViS2l0
L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdC52Y3Byb2ogICAgICAgICAgICAgfCAgIDEwICstCiBX
ZWJLaXQvd2luL1dlYktpdERMTC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTAg
KysrCiBXZWJLaXRUb29scy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
ICAgMTEgKysrCiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jb25maWcuaCAgICAgICAgICAg
ICAgICB8ICAgMTIgKystLQogLi4uL3B0aHJlYWRzL0phdmFTY3JpcHRUaHJlYWRpbmdQdGhyZWFk
cy5jcHAgICAgICAgfCAgICAzICstCiA3NSBmaWxlcyBjaGFuZ2VkLCAzODIgaW5zZXJ0aW9ucygr
KSwgMTk0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0FQSS9PcGFx
dWVKU1N0cmluZy5oIGIvSmF2YVNjcmlwdENvcmUvQVBJL09wYXF1ZUpTU3RyaW5nLmgKaW5kZXgg
NDczYzgxNS4uOTIxNjIyNCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvQVBJL09wYXF1ZUpT
U3RyaW5nLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvQVBJL09wYXF1ZUpTU3RyaW5nLmgKQEAgLTMz
LDcgKzMzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNHbG9iYWxEYXRhOwogfQog
Ci1zdHJ1Y3QgT3BhcXVlSlNTdHJpbmcgOiBwdWJsaWMgVGhyZWFkU2FmZVNoYXJlZDxPcGFxdWVK
U1N0cmluZz4geworc3RydWN0IEpTX0VYUE9SVERBVEEgT3BhcXVlSlNTdHJpbmcgOiBwdWJsaWMg
VGhyZWFkU2FmZVNoYXJlZDxPcGFxdWVKU1N0cmluZz4gewogCiAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8T3BhcXVlSlNTdHJpbmc+IGNyZWF0ZSgpIC8vIG51bGwKICAgICB7CmRpZmYgLS1naXQgYS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXgg
Njc4OTllYS4uMmY1YTE1NyAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisr
KyBiL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg0IEBACisyMDA5LTA3LTI0
ICBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5ldGguY2hyaXN0aWFuc2VuQG9wZW5i
b3NzYS5vcmc+LCBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIGl0IHBv
c3NpYmxlIHRvIGJ1aWxkIEphdmFTY3JpcHRDb3JlIGFzIHNoYXJlZCBsaWJyYXJ5IHdpdGhvdXQK
KyAgICAgICAgZXhwb3J0ZWQgc3ltYm9sIGxpc3RzLgorCisgICAgICAgIEFkZGVkIEpTX0VYUE9S
VERBVEEgdG8gYWxsIHRoZSBjbGFzc2VzIHRoYXQgYXJlIGFjY2Vzc2VkIGZyb20gV2ViQ29yZSwK
KyAgICAgICAgdG8gZW5zdXJlIHRoZWlyIHZpc2liaWxpdHkuCisKKyAgICAgICAgKiBBUEkvT3Bh
cXVlSlNTdHJpbmcuaDogVXNlIEpTX0VYUE9SVERBVEEuCisgICAgICAgICogSmF2YVNjcmlwdENv
cmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvajogRGlzYWJsZQor
ICAgICAgICBNU1ZDIHdhcm5pbmcgYWJvdXQgaW5jb25zaXN0ZW50IGxpbmthZ2UuCisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUudmNwcm9qL2pzYy9qc2MudmNwcm9qOiBEaXR0by4KKyAgICAgICAg
KiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBJbmNsdWRlIFByb2Zp
bGVHZW5lcmF0b3IuaAorICAgICAgICBpbiB0aGUgcHJpdmF0ZSBoZWFkZXJzLCBhcyBpdCBpcyBp
bmNsdWRlZCBmcm9tIFByb2ZpbGVyLmgsIHdoaWNoIGlzCisgICAgICAgIGFsc28gaW5jbHVkZWQg
ZnJvbSBXZWJDb3JlLgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
OiBVc2UgSlNfRVhQT1JUREFUQS4KKyAgICAgICAgKiBjb25maWcuaDogRGVmaW5lIEpTX0VYUE9S
VERBVEEgYWNjb3JkaW5nbHkgd2l0aCBnY2M7IERlZmluZSBpdCB0bworICAgICAgICBkbGxpbXBv
cnQgd2l0aCBNU1ZDLgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyLmg6IFVzZSBKU19FWFBP
UlREQVRBLgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmg6IERpdHRvLgor
ICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmg6IERpdHRvLgorICAgICAgICAqIGpz
Yy5wcm86IExpbmsgYWdhaW5zdCBKU0MgYXMgc2hhcmVkIGxpYnJhcnkuCisgICAgICAgICogcGFy
c2VyL05vZGVzLmg6IFVzZSBKU19FWFBPUlREQVRBLgorICAgICAgICAqIHBhcnNlci9QYXJzZXIu
aDogRGl0dG8uCisgICAgICAgICogcGFyc2VyL1BhcnNlckFyZW5hLmg6IERpdHRvLgorICAgICAg
ICAqIHBjcmUvcGNyZS5oOiBEaXR0by4KKyAgICAgICAgKiBwcm9maWxlci9Qcm9maWxlLmg6IFVz
ZSBKU19FWFBPUlREQVRBLgorICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVyLmg6IFVzZSBKU19F
WFBPUlREQVRBIGFuZCByZXBsYWNlIFByb2ZpbGVHZW5lcmF0b3IKKyAgICAgICAgZm9yd2FyZCBk
ZWNsYXJhdGlvbiB3aXRoIGluY2x1c2lvbiB0byBmaXggTVNWQyBjb21waWxhdGlvbiwgd2hpY2gg
cmVxdWlyZXMKKyAgICAgICAgaXRzIHZpc2libGl0eSB3aGVuIG1hcmtpbmcgUHJvZmlsZXIgd2l0
aCBkbGxleHBvcnQuCisgICAgICAgICogcnVudGltZS9BcmdMaXN0Lmg6IFVzZSBKU19FWFBPUlRE
QVRBLgorICAgICAgICAqIHJ1bnRpbWUvQm9vbGVhbk9iamVjdC5oOiBEaXR0by4KKyAgICAgICAg
KiBydW50aW1lL0NhbGxEYXRhLmg6IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvQ29sbGVjdG9y
Lmg6IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvQ29tcGxldGlvbi5oOiBEaXR0by4KKyAgICAg
ICAgKiBydW50aW1lL0NvbnN0cnVjdERhdGEuaDogRGl0dG8uCisgICAgICAgICogcnVudGltZS9E
YXRlSW5zdGFuY2UuaDogRGl0dG8uCisgICAgICAgICogcnVudGltZS9FcnJvci5oOiBEaXR0by4K
KyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaDogRGl0dG8uCisgICAgICAg
ICogcnVudGltZS9JZGVudGlmaWVyLmg6IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvSW5pdGlh
bGl6ZVRocmVhZGluZy5oOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL0ludGVybmFsRnVuY3Rp
b24uaDogTW92ZWQgSlNfRVhQT1JUREFUQSBmcm9tIEludGVybmFsRnVuY3Rpb246OmluZm8gdG8K
KyAgICAgICAgSW50ZXJuYWxGdW5jdGlvbiwgdG8gZXhwb3J0IHRoZSBlbnRpcmUgY2xhc3MuCisg
ICAgICAgICogcnVudGltZS9KU0FycmF5Lmg6IFVzZSBKU19FWFBPUlREQVRBLgorICAgICAgICAq
IHJ1bnRpbWUvSlNCeXRlQXJyYXkuaDogRGl0dG8uCisgICAgICAgICogcnVudGltZS9KU0NlbGwu
aDogRGl0dG8uCisgICAgICAgICogcnVudGltZS9KU0dsb2JhbERhdGEuaDogRGl0dG8uCisgICAg
ICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1l
L0pTSW1tZWRpYXRlLmg6IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvSlNMb2NrLmg6IERpdHRv
LgorICAgICAgICAqIHJ1bnRpbWUvSlNOdW1iZXJDZWxsLmg6IERpdHRvLgorICAgICAgICAqIHJ1
bnRpbWUvSlNPYmplY3QuaDogRGl0dG8uCisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOiBE
aXR0by4KKyAgICAgICAgKiBydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaDogRGl0dG8uCisgICAg
ICAgICogcnVudGltZS9KU1dyYXBwZXJPYmplY3QuaDogRGl0dG8uCisgICAgICAgICogcnVudGlt
ZS9Mb29rdXAuaDogRGl0dG8uCisgICAgICAgICogcnVudGltZS9OdW1iZXJPYmplY3QuaDogRGl0
dG8uCisgICAgICAgICogcnVudGltZS9PYmplY3RQcm90b3R5cGUuaDogRGl0dG8uCisgICAgICAg
ICogcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1l
L1Byb3RvdHlwZUZ1bmN0aW9uLmg6IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwLmg6
IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0Lmg6IERpdHRvLgorICAgICAg
ICAqIHJ1bnRpbWUvU21hbGxTdHJpbmdzLmg6IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvU3Ry
aW5nT2JqZWN0Lmg6IE1vdmVkIEpTX0VYUE9SVERBVEEgZnJvbSBTdHJpbmdPYmplY3Q6OmluZm8g
dG8gU3RyaW5nT2JqZWN0LCB0bworICAgICAgICBleHBvcnQgdGhlIGVudGlyZSBjbGFzcy4KKyAg
ICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5oOiBVc2UgSlNfRVhQT1JUREFUQS4KKyAgICAgICAg
KiBydW50aW1lL1RpbWVvdXRDaGVja2VyLmg6IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvVVN0
cmluZy5oOiBSZXBsYWNlZCBzaW5nbGUgZXhwb3J0IG9mIFVTdHJpbmc6OlJlcDo6e251bGwsZW1w
dHl9QmFzZVN0cmluZyB3aXRoCisgICAgICAgIGV4cG9ydCBvZiBlbnRpcmUgY2xhc3MuCisgICAg
ICAgICogd3RmL0J5dGVBcnJheS5oOiBVc2UgSlNfRVhQT1JUREFUQS4KKyAgICAgICAgKiB3dGYv
Q3VycmVudFRpbWUuaDogRGl0dG8uCisgICAgICAgICogd3RmL0Zhc3RNYWxsb2MuaDogRGl0dG8u
CisgICAgICAgICogd3RmL01haW5UaHJlYWQuaDogRGl0dG8uCisgICAgICAgICogd3RmL1JhbmRv
bU51bWJlci5oOiBEaXR0by4KKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nLmg6IERpdHRvLgorICAg
ICAgICAqIHd0Zi9kdG9hLmg6IERpdHRvLgorICAgICAgICAqIHd0Zi91bmljb2RlL1VURjguaDog
RGl0dG8uCisgICAgICAgICogd3RmL3VuaWNvZGUvVVRGOC5jcHA6IEluY2x1ZGUgY29uZmlnLmgg
aW4gb3JkZXIgdG8gY29tcGlsZSB3aXRoIE1TVkMuCisKIDIwMDktMDctMjcgIEJyaWFuIFdlaW5z
dGVpbiAgPGJ3ZWluc3RlaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBvZiBtaXN1c2Ugb2Yg
c29ydCBjb21tYW5kLgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvaiBiL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3Byb2oKaW5kZXggZTM1ZTExMC4uNGY0YmYzYSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJv
agorKysgYi9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCkBAIC0zOCw2ICszOCw3IEBACiAJCQkvPg0KIAkJCTxU
b29sDQogCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCURpc2FibGVTcGVjaWZpY1dh
cm5pbmdzPSI0MjUxIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVz
b3VyY2VDb21waWxlclRvb2wiDQpAQCAtMTAwLDYgKzEwMSw3IEBACiAJCQkvPg0KIAkJCTxUb29s
DQogCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCURpc2FibGVTcGVjaWZpY1dhcm5p
bmdzPSI0MjUxIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3Vy
Y2VDb21waWxlclRvb2wiDQpAQCAtMTYxLDYgKzE2Myw3IEBACiAJCQkvPg0KIAkJCTxUb29sDQog
CQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCURpc2FibGVTcGVjaWZpY1dhcm5pbmdz
PSI0MjUxIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VD
b21waWxlclRvb2wiDQpAQCAtMjI0LDYgKzIyNyw3IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJ
CU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCURpc2FibGVTcGVjaWZpY1dhcm5pbmdzPSI0
MjUxIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21w
aWxlclRvb2wiDQpAQCAtMjg3LDYgKzI5MSw3IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5h
bWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCURpc2FibGVTcGVjaWZpY1dhcm5pbmdzPSI0MjUx
Ig0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxl
clRvb2wiDQpAQCAtMzQ4LDYgKzM1Myw3IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9
IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCURpc2FibGVTcGVjaWZpY1dhcm5pbmdzPSI0MjUxIg0K
IAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRv
b2wiDQpAQCAtNDEwLDYgKzQxNiw3IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZD
Q0xDb21waWxlclRvb2wiDQorCQkJCURpc2FibGVTcGVjaWZpY1dhcm5pbmdzPSI0MjUxIg0KIAkJ
CS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wi
DQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL2pzYy9q
c2MudmNwcm9qIGIvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL2pzYy9qc2Mu
dmNwcm9qCmluZGV4IGNlMmZlMDQuLjFlNTAzZWYgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjcHJvai9qc2MvanNjLnZjcHJvagorKysgYi9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovanNjL2pzYy52Y3Byb2oKQEAgLTM4LDYgKzM4LDcgQEAK
IAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJRGlz
YWJsZVNwZWNpZmljV2FybmluZ3M9IjQyNTE7NDI3MyINCiAJCQkvPg0KIAkJCTxUb29sDQogCQkJ
CU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KQEAgLTEwMCw2ICsxMDEsNyBA
QAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlE
aXNhYmxlU3BlY2lmaWNXYXJuaW5ncz0iNDI1MTs0MjczIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJ
CQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQpAQCAtMTYxLDYgKzE2Myw3
IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJ
CURpc2FibGVTcGVjaWZpY1dhcm5pbmdzPSI0MjUxOzQyNzMiDQogCQkJLz4NCiAJCQk8VG9vbA0K
IAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCmRpZmYgLS1naXQgYS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCAyZjllZjIzLi5mNDExOTBhIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE3Myw3ICsxNzMsNyBA
QAogCQk5NUFCODM0MjBEQTQzMjI1MDBCQzgzRjMgLyogUHJvZmlsZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTVBQjgzMkUwREE0MkNBRDAwQkM4
M0YzIC8qIFByb2ZpbGVyLmNwcCAqLzsgfTsKIAkJOTVBQjgzNTYwREE0M0MzMDAwQkM4M0YzIC8q
IFByb2ZpbGVOb2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk1QUI4MzU0MERBNDNCNDQwMEJDODNGMyAvKiBQcm9maWxlTm9kZS5jcHAgKi87IH07
CiAJCTk1Q0Q0NTc2MEUxQzRGREQwMDg1MzU4RSAvKiBQcm9maWxlR2VuZXJhdG9yLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1Q0Q0NTc0MEUxQzRG
REQwMDg1MzU4RSAvKiBQcm9maWxlR2VuZXJhdG9yLmNwcCAqLzsgfTsKLQkJOTVDRDQ1NzcwRTFD
NEZERDAwODUzNThFIC8qIFByb2ZpbGVHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1Q0Q0NTc1MEUxQzRGREQwMDg1MzU4RSAvKiBQcm9m
aWxlR2VuZXJhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKKwkJ
OTVDRDQ1NzcwRTFDNEZERDAwODUzNThFIC8qIFByb2ZpbGVHZW5lcmF0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1Q0Q0NTc1MEUxQzRGREQwMDg1
MzU4RSAvKiBQcm9maWxlR2VuZXJhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTVFM0JDMDUwRTFBRTY4MjAwQjJEMUMxIC8qIENhbGxJZGVu
dGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
NUUzQkMwNDBFMUFFNjgyMDBCMkQxQzEgLyogQ2FsbElkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5NUY2RTY5NTBFNUI1Rjk3MDA5
MUU4NjAgLyogSlNQcm9maWxlclByaXZhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTU5ODhCQTkwRTQ3N0JFQzAwRDI4RDREIC8qIEpTUHJvZmls
ZXJQcml2YXRlLmNwcCAqLzsgfTsKIAkJOTYwMDk3QTYwRUJBQkI1ODAwN0E3Mjk3IC8qIExhYmVs
U2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk2
MDA5N0E1MEVCQUJCNTgwMDdBNzI5NyAvKiBMYWJlbFNjb3BlLmggKi87IH07CmRpZmYgLS1naXQg
YS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDU0ZDAyODku
LjJhMDU5NzEgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5oCisrKyBiL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5oCkBAIC02MSw3ICs2MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBGaW5h
bGx5Q29udGV4dCBmaW5hbGx5Q29udGV4dDsKICAgICB9OwogCi0gICAgY2xhc3MgQnl0ZWNvZGVH
ZW5lcmF0b3IgOiBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsKKyAgICBjbGFzcyBKU19FWFBP
UlREQVRBIEJ5dGVjb2RlR2VuZXJhdG9yIDogcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7CiAg
ICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIERlY2xhcmF0aW9uU3RhY2tzOjpWYXJTdGFjayBW
YXJTdGFjazsKICAgICAgICAgdHlwZWRlZiBEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFj
ayBGdW5jdGlvblN0YWNrOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvY29uZmlnLmggYi9K
YXZhU2NyaXB0Q29yZS9jb25maWcuaAppbmRleCA2NjgxNzYxLi4xZTAyYWI3IDEwMDY0NAotLS0g
YS9KYXZhU2NyaXB0Q29yZS9jb25maWcuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9jb25maWcuaApA
QCAtMjUsMTQgKzI1LDE3IEBACiAKICNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KIAotI2lmIFBM
QVRGT1JNKFdJTl9PUykgJiYgIWRlZmluZWQoQlVJTERJTkdfV1hfXykgJiYgIUNPTVBJTEVSKEdD
QykKLSNpZiBkZWZpbmVkKEJVSUxESU5HX0phdmFTY3JpcHRDb3JlKSB8fCBkZWZpbmVkKEJVSUxE
SU5HX1dURikKLSNkZWZpbmUgSlNfRVhQT1JUREFUQSBfX2RlY2xzcGVjKGRsbGV4cG9ydCkKKyN1
bmRlZiBKU19FWFBPUlREQVRBCisjaWYgQ09NUElMRVIoR0NDKQorICAgICNkZWZpbmUgSlNfRVhQ
T1JUREFUQSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKQorI2VsaWYgUExB
VEZPUk0oV0lOX09TKSAmJiAhZGVmaW5lZChCVUlMRElOR19XWF9fKQorICAgICNpZiBkZWZpbmVk
KEJVSUxESU5HX0phdmFTY3JpcHRDb3JlKSB8fCBkZWZpbmVkKEJVSUxESU5HX1dURikKKyAgICAg
ICAgI2RlZmluZSBKU19FWFBPUlREQVRBIF9fZGVjbHNwZWMoZGxsZXhwb3J0KQorICAgICNlbHNl
CisgICAgICAgICNkZWZpbmUgSlNfRVhQT1JUREFUQSBfX2RlY2xzcGVjKGRsbGltcG9ydCkKKyAg
ICAjZW5kaWYKICNlbHNlCi0jZGVmaW5lIEpTX0VYUE9SVERBVEEgX19kZWNsc3BlYyhkbGxpbXBv
cnQpCi0jZW5kaWYKLSNlbHNlCi0jZGVmaW5lIEpTX0VYUE9SVERBVEEKKyAgICAjZGVmaW5lIEpT
X0VYUE9SVERBVEEKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oV0lOX09TKQpkaWZmIC0tZ2l0IGEv
SmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuaCBiL0phdmFTY3JpcHRDb3JlL2RlYnVn
Z2VyL0RlYnVnZ2VyLmgKaW5kZXggOThkMDkzNS4uNmI2YzlkMiAxMDA2NDQKLS0tIGEvSmF2YVNj
cmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dl
ci9EZWJ1Z2dlci5oCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNz
IFNvdXJjZUNvZGU7CiAgICAgY2xhc3MgVVN0cmluZzsKIAotICAgIGNsYXNzIERlYnVnZ2VyIHsK
KyAgICBjbGFzcyBKU19FWFBPUlREQVRBIERlYnVnZ2VyIHsKICAgICBwdWJsaWM6CiAgICAgICAg
IERlYnVnZ2VyKCk7CiAgICAgICAgIHZpcnR1YWwgfkRlYnVnZ2VyKCk7CmRpZmYgLS1naXQgYS9K
YXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5oIGIvSmF2YVNjcmlwdENv
cmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuaAppbmRleCA5ZDM3N2VmLi42OTY1NGYxIDEw
MDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5oCisr
KyBiL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmgKQEAgLTI1LDE1
ICsyNSwxNSBAQAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCi0gCisKICNp
Zm5kZWYgRGVidWdnZXJDYWxsRnJhbWVfaAogI2RlZmluZSBEZWJ1Z2dlckNhbGxGcmFtZV9oCiAK
ICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKIAogbmFtZXNwYWNlIEpTQyB7Ci0gICAgCi0gICAgY2xh
c3MgRGVidWdnZXJDYWxsRnJhbWUgeworCisgICAgY2xhc3MgSlNfRVhQT1JUREFUQSBEZWJ1Z2dl
ckNhbGxGcmFtZSB7CiAgICAgcHVibGljOgogICAgICAgICBlbnVtIFR5cGUgeyBQcm9ncmFtVHlw
ZSwgRnVuY3Rpb25UeXBlIH07CiAKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmggYi9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5oCmluZGV4IDUzMzFkOTIuLmVkMzIzMGQgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXIuaApAQCAtNjYsNyArNjYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGVu
dW0geyBNYXhNYWluVGhyZWFkUmVlbnRyeURlcHRoID0gMjU2LCBNYXhTZWNvbmRhcnlUaHJlYWRS
ZWVudHJ5RGVwdGggPSAzMiB9OwogCi0gICAgY2xhc3MgSW50ZXJwcmV0ZXIgOiBwdWJsaWMgRmFz
dEFsbG9jQmFzZSB7CisgICAgY2xhc3MgSlNfRVhQT1JUREFUQSBJbnRlcnByZXRlciA6IHB1Ymxp
YyBGYXN0QWxsb2NCYXNlIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKICAgICAgICAgZnJp
ZW5kIGNsYXNzIENhY2hlZENhbGw7CiAgICAgcHVibGljOgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL05vZGVzLmggYi9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRl
eCA4NGU4Yjk1Li43ZDEzNTI1IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9k
ZXMuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaApAQCAtMTU5LDcgKzE1OSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBpbnQgbV9saW5lOwogICAgIH07CiAKLSAgICBj
bGFzcyBFeHByZXNzaW9uTm9kZSA6IHB1YmxpYyBOb2RlIHsKKyAgICBjbGFzcyBKU19FWFBPUlRE
QVRBIEV4cHJlc3Npb25Ob2RlIDogcHVibGljIE5vZGUgewogICAgIHB1YmxpYzoKICAgICAgICAg
RXhwcmVzc2lvbk5vZGUoSlNHbG9iYWxEYXRhKiwgUmVzdWx0VHlwZSA9IFJlc3VsdFR5cGU6OnVu
a25vd25UeXBlKCkpOwogCkBAIC0xODcsNyArMTg3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIFJlc3VsdFR5cGUgbV9yZXN1bHRUeXBlOwogICAgIH07CiAKLSAgICBjbGFzcyBTdGF0ZW1l
bnROb2RlIDogcHVibGljIE5vZGUgeworICAgIGNsYXNzIEpTX0VYUE9SVERBVEEgU3RhdGVtZW50
Tm9kZSA6IHB1YmxpYyBOb2RlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFN0YXRlbWVudE5vZGUo
SlNHbG9iYWxEYXRhKik7CiAKQEAgLTE1MzksNyArMTUzOSw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBPd25QdHI8RXZhbENvZGVCbG9jaz4gbV9jb2RlOwogICAgIH07CiAKLSAgICBjbGFz
cyBGdW5jdGlvbkJvZHlOb2RlIDogcHVibGljIFNjb3BlTm9kZSB7CisgICAgY2xhc3MgSlNfRVhQ
T1JUREFUQSBGdW5jdGlvbkJvZHlOb2RlIDogcHVibGljIFNjb3BlTm9kZSB7CiAgICAgICAgIGZy
aWVuZCBjbGFzcyBKSVQ7CiAgICAgcHVibGljOgogI2lmIEVOQUJMRShKSVQpCmRpZmYgLS1naXQg
YS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmgKaW5kZXggMzczZGMwMC4uY2NlYmM5ZSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApA
QCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPiBzdHJ1Y3QgUGFyc2VyQXJlbmFEYXRhIDogUGFyc2VyQXJlbmFEZWxldGFibGUgeyBUIGRh
dGE7IH07CiAKLSAgICBjbGFzcyBQYXJzZXIgOiBwdWJsaWMgTm9uY29weWFibGUgeworICAgIGNs
YXNzIEpTX0VYUE9SVERBVEEgUGFyc2VyIDogcHVibGljIE5vbmNvcHlhYmxlIHsKICAgICBwdWJs
aWM6CiAgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBQYXJzZWROb2RlPiBQYXNzUmVmUHRyPFBhcnNl
ZE5vZGU+IHBhcnNlKEV4ZWNTdGF0ZSosIERlYnVnZ2VyKiwgY29uc3QgU291cmNlQ29kZSYsIGlu
dCogZXJyTGluZSA9IDAsIFVTdHJpbmcqIGVyck1zZyA9IDApOwogICAgICAgICB0ZW1wbGF0ZSA8
Y2xhc3MgUGFyc2VkTm9kZT4gUGFzc1JlZlB0cjxQYXJzZWROb2RlPiByZXBhcnNlKEpTR2xvYmFs
RGF0YSosIFBhcnNlZE5vZGUqKTsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXJBcmVuYS5oIGIvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmgKaW5kZXgg
NjZjODUyOS4uNTQ5YjdkZCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ckFyZW5hLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmgKQEAgLTM1
LDcgKzM1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgUGFyc2VyQXJlbmFEZWxldGFi
bGU7CiAgICAgY2xhc3MgUGFyc2VyQXJlbmFSZWZDb3VudGVkOwogCi0gICAgY2xhc3MgUGFyc2Vy
QXJlbmEgeworICAgIGNsYXNzIEpTX0VYUE9SVERBVEEgUGFyc2VyQXJlbmEgewogICAgIHB1Ymxp
YzoKICAgICAgICAgdm9pZCBzd2FwKFBhcnNlckFyZW5hJiBvdGhlckFyZW5hKQogICAgICAgICB7
CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9wY3JlL3BjcmUuaCBiL0phdmFTY3JpcHRDb3Jl
L3BjcmUvcGNyZS5oCmluZGV4IDU1MDQ0ZmQuLmIyMGQ5MGQgMTAwNjQ0Ci0tLSBhL0phdmFTY3Jp
cHRDb3JlL3BjcmUvcGNyZS5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3BjcmUvcGNyZS5oCkBAIC01
NSwxNCArNTUsMTQgQEAgY29uc3QgaW50IEpTUmVnRXhwRXJyb3JIaXRMaW1pdCA9IC0yOwogY29u
c3QgaW50IEpTUmVnRXhwRXJyb3JOb01lbW9yeSA9IC0zOwogY29uc3QgaW50IEpTUmVnRXhwRXJy
b3JJbnRlcm5hbCA9IC00OwogCi1KU1JlZ0V4cCoganNSZWdFeHBDb21waWxlKGNvbnN0IFVDaGFy
KiBwYXR0ZXJuLCBpbnQgcGF0dGVybkxlbmd0aCwKK0pTX0VYUE9SVERBVEEgSlNSZWdFeHAqIGpz
UmVnRXhwQ29tcGlsZShjb25zdCBVQ2hhciogcGF0dGVybiwgaW50IHBhdHRlcm5MZW5ndGgsCiAg
ICAgSlNSZWdFeHBJZ25vcmVDYXNlT3B0aW9uLCBKU1JlZ0V4cE11bHRpbGluZU9wdGlvbiwKICAg
ICB1bnNpZ25lZCogbnVtU3VicGF0dGVybnMsIGNvbnN0IGNoYXIqKiBlcnJvck1lc3NhZ2UpOwog
Ci1pbnQganNSZWdFeHBFeGVjdXRlKGNvbnN0IEpTUmVnRXhwKiwKK0pTX0VYUE9SVERBVEEgaW50
IGpzUmVnRXhwRXhlY3V0ZShjb25zdCBKU1JlZ0V4cCosCiAgICAgY29uc3QgVUNoYXIqIHN1Ympl
Y3QsIGludCBzdWJqZWN0TGVuZ3RoLCBpbnQgc3RhcnRPZmZzZXQsCiAgICAgaW50KiBvZmZzZXRz
VmVjdG9yLCBpbnQgb2Zmc2V0c1ZlY3Rvckxlbmd0aCk7CiAKLXZvaWQganNSZWdFeHBGcmVlKEpT
UmVnRXhwKik7CitKU19FWFBPUlREQVRBIHZvaWQganNSZWdFeHBGcmVlKEpTUmVnRXhwKik7CiAK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZS5oIGIv
SmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZS5oCmluZGV4IDZiZjI5ZjcuLmFmMzMyNDMg
MTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGUuaAorKysgYi9KYXZh
U2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlLmgKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNw
YWNlIEpTQyB7CiAKLSAgICBjbGFzcyBQcm9maWxlIDogcHVibGljIFJlZkNvdW50ZWQ8UHJvZmls
ZT4geworICAgIGNsYXNzIEpTX0VYUE9SVERBVEEgUHJvZmlsZSA6IHB1YmxpYyBSZWZDb3VudGVk
PFByb2ZpbGU+IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFByb2Zp
bGU+IGNyZWF0ZShjb25zdCBVU3RyaW5nJiB0aXRsZSwgdW5zaWduZWQgdWlkKTsKICAgICAgICAg
dmlydHVhbCB+UHJvZmlsZSgpOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIv
UHJvZmlsZXIuaCBiL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyLmgKaW5kZXggODY5
ZjQxOS4uMjRkZDEyYiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmls
ZXIuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlci5oCkBAIC0zMCw2ICsz
MCw3IEBACiAjZGVmaW5lIFByb2ZpbGVyX2gKIAogI2luY2x1ZGUgIlByb2ZpbGUuaCIKKyNpbmNs
dWRlICJQcm9maWxlR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNDEsMTcg
KzQyLDE2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTR2xvYmFsRGF0YTsKICAgICBj
bGFzcyBKU09iamVjdDsKICAgICBjbGFzcyBKU1ZhbHVlOwotICAgIGNsYXNzIFByb2ZpbGVHZW5l
cmF0b3I7CiAgICAgY2xhc3MgVVN0cmluZzsKIAotICAgIGNsYXNzIFByb2ZpbGVyIDogcHVibGlj
IEZhc3RBbGxvY0Jhc2UgeworICAgIGNsYXNzIEpTX0VYUE9SVERBVEEgUHJvZmlsZXIgOiBwdWJs
aWMgRmFzdEFsbG9jQmFzZSB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgUHJvZmlsZXIq
KiBlbmFibGVkUHJvZmlsZXJSZWZlcmVuY2UoKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1
cm4gJnNfc2hhcmVkRW5hYmxlZFByb2ZpbGVyUmVmZXJlbmNlOwogICAgICAgICB9CiAKLSAgICAg
ICAgc3RhdGljIFByb2ZpbGVyKiBwcm9maWxlcigpOyAKKyAgICAgICAgc3RhdGljIFByb2ZpbGVy
KiBwcm9maWxlcigpOwogICAgICAgICBzdGF0aWMgQ2FsbElkZW50aWZpZXIgY3JlYXRlQ2FsbElk
ZW50aWZpZXIoSlNHbG9iYWxEYXRhKiwgSlNWYWx1ZSwgY29uc3QgVVN0cmluZyYgc291cmNlVVJM
LCBpbnQgbGluZU51bWJlcik7CiAKICAgICAgICAgdm9pZCBzdGFydFByb2ZpbGluZyhFeGVjU3Rh
dGUqLCBjb25zdCBVU3RyaW5nJiB0aXRsZSk7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FyZ0xpc3QuaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5oCmluZGV4
IDA4OTllODUuLjhlOWI5NmEgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJn
TGlzdC5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5oCkBAIC0zMSw3ICsz
MSw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogICAgIAotICAgIGNsYXNzIE1hcmtlZEFyZ3VtZW50
QnVmZmVyIDogcHVibGljIE5vbmNvcHlhYmxlIHsKKyAgICBjbGFzcyBKU19FWFBPUlREQVRBIE1h
cmtlZEFyZ3VtZW50QnVmZmVyIDogcHVibGljIE5vbmNvcHlhYmxlIHsKICAgICBwcml2YXRlOgog
ICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW5saW5lQ2FwYWNpdHkgPSA4OwogICAgICAg
ICB0eXBlZGVmIFZlY3RvcjxSZWdpc3RlciwgaW5saW5lQ2FwYWNpdHk+IFZlY3RvclR5cGU7CkBA
IC0xNzEsNyArMTcxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgb3BlcmF0b3Ig
ZGVsZXRlKHZvaWQqLCBzaXplX3QpOwogICAgIH07CiAKLSAgICBjbGFzcyBBcmdMaXN0IHsKKyAg
ICBjbGFzcyBKU19FWFBPUlREQVRBIEFyZ0xpc3QgewogICAgICAgICBmcmllbmQgY2xhc3MgSklU
OwogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBKU1ZhbHVlKiBpdGVyYXRvcjsKZGlmZiAt
LWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbk9iamVjdC5oIGIvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Cb29sZWFuT2JqZWN0LmgKaW5kZXggY2ZkNTVmZS4uZTQxYjYxZSAxMDA2
NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuT2JqZWN0LmgKKysrIGIvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuT2JqZWN0LmgKQEAgLTI1LDcgKzI1LDcgQEAKIAog
bmFtZXNwYWNlIEpTQyB7CiAKLSAgICBjbGFzcyBCb29sZWFuT2JqZWN0IDogcHVibGljIEpTV3Jh
cHBlck9iamVjdCB7CisgICAgY2xhc3MgSlNfRVhQT1JUREFUQSBCb29sZWFuT2JqZWN0IDogcHVi
bGljIEpTV3JhcHBlck9iamVjdCB7CiAgICAgcHVibGljOgogICAgICAgICBleHBsaWNpdCBCb29s
ZWFuT2JqZWN0KFBhc3NSZWZQdHI8U3RydWN0dXJlPik7CiAKZGlmZiAtLWdpdCBhL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ2FsbERhdGEuaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FsbERh
dGEuaAppbmRleCBkNWIwMTcyLi4wZTE1MDMxIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NhbGxEYXRhLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWxsRGF0YS5o
CkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTVmFsdWU7CiAg
ICAgY2xhc3MgU2NvcGVDaGFpbk5vZGU7CiAKLSAgICBlbnVtIENhbGxUeXBlIHsKKyAgICBlbnVt
IEpTX0VYUE9SVERBVEEgQ2FsbFR5cGUgewogICAgICAgICBDYWxsVHlwZU5vbmUsCiAgICAgICAg
IENhbGxUeXBlSG9zdCwKICAgICAgICAgQ2FsbFR5cGVKUwpAQCAtNDgsNyArNDgsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgIHR5cGVkZWYgSlNWYWx1ZSAoSlNDX0hPU1RfQ0FMTCAqTmF0aXZl
RnVuY3Rpb24pKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0
IEFyZ0xpc3QmKTsKIAotICAgIHVuaW9uIENhbGxEYXRhIHsKKyAgICB1bmlvbiBKU19FWFBPUlRE
QVRBIENhbGxEYXRhIHsKICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgIE5hdGl2ZUZ1bmN0
aW9uIGZ1bmN0aW9uOwogICAgICAgICB9IG5hdGl2ZTsKQEAgLTU4LDcgKzU4LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIH0ganM7CiAgICAgfTsKIAotICAgIEpTVmFsdWUgY2FsbChFeGVj
U3RhdGUqLCBKU1ZhbHVlIGZ1bmN0aW9uT2JqZWN0LCBDYWxsVHlwZSwgY29uc3QgQ2FsbERhdGEm
LCBKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgQXJnTGlzdCYpOworICAgIEpTX0VYUE9SVERBVEEg
SlNWYWx1ZSBjYWxsKEV4ZWNTdGF0ZSosIEpTVmFsdWUgZnVuY3Rpb25PYmplY3QsIENhbGxUeXBl
LCBjb25zdCBDYWxsRGF0YSYsIEpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0Jik7CiAK
IH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbGxlY3Rvci5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2xsZWN0b3IuaAppbmRleCA4
NTJhYzU5Li5kMDk2M2ZhIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbGxl
Y3Rvci5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29sbGVjdG9yLmgKQEAgLTYzLDcg
KzYzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE9wZXJhdGlvbkluUHJvZ3Jlc3Mgb3Bl
cmF0aW9uSW5Qcm9ncmVzczsKICAgICB9OwogCi0gICAgY2xhc3MgSGVhcCA6IHB1YmxpYyBOb25j
b3B5YWJsZSB7CisgICAgY2xhc3MgSlNfRVhQT1JUREFUQSBIZWFwIDogcHVibGljIE5vbmNvcHlh
YmxlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIGNsYXNzIFRocmVhZDsKICAgICAgICAgdHlwZWRl
ZiBDb2xsZWN0b3JIZWFwSXRlcmF0b3I8UHJpbWFyeUhlYXA+IGl0ZXJhdG9yOwpkaWZmIC0tZ2l0
IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmggYi9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbXBsZXRpb24uaAppbmRleCA0MWM5YTY0Li4xMGY3ZmJhIDEwMDY0NAotLS0gYS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uaAorKysgYi9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbXBsZXRpb24uaApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgKiBDb21wbGV0aW9uIG9iamVjdHMgYXJlIHVzZWQgdG8gY29udmV5IHRoZSByZXR1cm4gc3Rh
dHVzIGFuZCB2YWx1ZQogICAgICAqIGZyb20gZnVuY3Rpb25zLgogICAgICAqLwotICAgIGNsYXNz
IENvbXBsZXRpb24geworICAgIGNsYXNzIEpTX0VYUE9SVERBVEEgQ29tcGxldGlvbiB7CiAgICAg
cHVibGljOgogICAgICAgICBDb21wbGV0aW9uKENvbXBsVHlwZSB0eXBlID0gTm9ybWFsLCBKU1Zh
bHVlIHZhbHVlID0gSlNWYWx1ZSgpKQogICAgICAgICAgICAgOiBtX3R5cGUodHlwZSkKQEAgLTU1
LDggKzU1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTVmFsdWUgbV92YWx1ZTsKICAg
ICB9OwogCi0gICAgQ29tcGxldGlvbiBjaGVja1N5bnRheChFeGVjU3RhdGUqLCBjb25zdCBTb3Vy
Y2VDb2RlJik7Ci0gICAgQ29tcGxldGlvbiBldmFsdWF0ZShFeGVjU3RhdGUqLCBTY29wZUNoYWlu
JiwgY29uc3QgU291cmNlQ29kZSYsIEpTVmFsdWUgdGhpc1ZhbHVlID0gSlNWYWx1ZSgpKTsKKyAg
ICBKU19FWFBPUlREQVRBIENvbXBsZXRpb24gY2hlY2tTeW50YXgoRXhlY1N0YXRlKiwgY29uc3Qg
U291cmNlQ29kZSYpOworICAgIEpTX0VYUE9SVERBVEEgQ29tcGxldGlvbiBldmFsdWF0ZShFeGVj
U3RhdGUqLCBTY29wZUNoYWluJiwgY29uc3QgU291cmNlQ29kZSYsIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gSlNWYWx1ZSgpKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29uc3RydWN0RGF0YS5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db25zdHJ1Y3REYXRhLmgKaW5kZXggOWQ1ODBkNS4uZmRiYjM5NiAxMDA2NDQKLS0tIGEvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db25zdHJ1Y3REYXRhLmgKKysrIGIvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db25zdHJ1Y3REYXRhLmgKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgY2xhc3MgSlNWYWx1ZTsKICAgICBjbGFzcyBTY29wZUNoYWluTm9kZTsKIAotICAgIGVu
dW0gQ29uc3RydWN0VHlwZSB7CisgICAgZW51bSBKU19FWFBPUlREQVRBIENvbnN0cnVjdFR5cGUg
ewogICAgICAgICBDb25zdHJ1Y3RUeXBlTm9uZSwKICAgICAgICAgQ29uc3RydWN0VHlwZUhvc3Qs
CiAgICAgICAgIENvbnN0cnVjdFR5cGVKUwpAQCAtNDYsNyArNDYsNyBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgIHR5cGVkZWYgSlNPYmplY3QqICgqTmF0aXZlQ29uc3RydWN0b3IpKEV4ZWNTdGF0
ZSosIEpTT2JqZWN0KiwgY29uc3QgQXJnTGlzdCYpOwogCi0gICAgdW5pb24gQ29uc3RydWN0RGF0
YSB7CisgICAgdW5pb24gSlNfRVhQT1JUREFUQSBDb25zdHJ1Y3REYXRhIHsKICAgICAgICAgc3Ry
dWN0IHsKICAgICAgICAgICAgIE5hdGl2ZUNvbnN0cnVjdG9yIGZ1bmN0aW9uOwogICAgICAgICB9
IG5hdGl2ZTsKQEAgLTU2LDcgKzU2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0ganM7
CiAgICAgfTsKIAotICAgIEpTT2JqZWN0KiBjb25zdHJ1Y3QoRXhlY1N0YXRlKiwgSlNWYWx1ZSBj
b25zdHJ1Y3RvciwgQ29uc3RydWN0VHlwZSwgY29uc3QgQ29uc3RydWN0RGF0YSYsIGNvbnN0IEFy
Z0xpc3QmKTsKKyAgICBKU19FWFBPUlREQVRBIEpTT2JqZWN0KiBjb25zdHJ1Y3QoRXhlY1N0YXRl
KiwgSlNWYWx1ZSBjb25zdHJ1Y3RvciwgQ29uc3RydWN0VHlwZSwgY29uc3QgQ29uc3RydWN0RGF0
YSYsIGNvbnN0IEFyZ0xpc3QmKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBh
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmggYi9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0RhdGVJbnN0YW5jZS5oCmluZGV4IDNiNzM1MjEuLjBjMjc2M2MgMTAwNjQ0Ci0tLSBh
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmgKKysrIGIvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9EYXRlSW5zdGFuY2UuaApAQCAtMjksNyArMjksNyBAQCBuYW1lc3BhY2UgV1RG
IHsKIAogbmFtZXNwYWNlIEpTQyB7CiAKLSAgICBjbGFzcyBEYXRlSW5zdGFuY2UgOiBwdWJsaWMg
SlNXcmFwcGVyT2JqZWN0IHsKKyAgICBjbGFzcyBKU19FWFBPUlREQVRBIERhdGVJbnN0YW5jZSA6
IHB1YmxpYyBKU1dyYXBwZXJPYmplY3QgewogICAgIHB1YmxpYzoKICAgICAgICAgZXhwbGljaXQg
RGF0ZUluc3RhbmNlKFBhc3NSZWZQdHI8U3RydWN0dXJlPik7CiAgICAgICAgIHZpcnR1YWwgfkRh
dGVJbnN0YW5jZSgpOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5o
IGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oCmluZGV4IGFkZjdmZGYuLmNkMWZhYzkg
MTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaAorKysgYi9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Vycm9yLmgKQEAgLTU1LDEwICs1NSwxMCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgc3RhdGljIEpTT2JqZWN0KiBjcmVhdGUoRXhlY1N0YXRlKiwgRXJyb3JUeXBl
LCBjb25zdCBjaGFyKiBtZXNzYWdlKTsKICAgICB9OwogCi0gICAgSlNPYmplY3QqIHRocm93RXJy
b3IoRXhlY1N0YXRlKiwgRXJyb3JUeXBlLCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlLCBpbnQgbGlu
ZU51bWJlciwgaW50cHRyX3Qgc291cmNlSUQsIGNvbnN0IFVTdHJpbmcmIHNvdXJjZVVSTCk7Ci0g
ICAgSlNPYmplY3QqIHRocm93RXJyb3IoRXhlY1N0YXRlKiwgRXJyb3JUeXBlLCBjb25zdCBVU3Ry
aW5nJiBtZXNzYWdlKTsKLSAgICBKU09iamVjdCogdGhyb3dFcnJvcihFeGVjU3RhdGUqLCBFcnJv
clR5cGUsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpOwotICAgIEpTT2JqZWN0KiB0aHJvd0Vycm9yKEV4
ZWNTdGF0ZSosIEVycm9yVHlwZSk7CisgICAgSlNfRVhQT1JUREFUQSBKU09iamVjdCogdGhyb3dF
cnJvcihFeGVjU3RhdGUqLCBFcnJvclR5cGUsIGNvbnN0IFVTdHJpbmcmIG1lc3NhZ2UsIGludCBs
aW5lTnVtYmVyLCBpbnRwdHJfdCBzb3VyY2VJRCwgY29uc3QgVVN0cmluZyYgc291cmNlVVJMKTsK
KyAgICBKU19FWFBPUlREQVRBIEpTT2JqZWN0KiB0aHJvd0Vycm9yKEV4ZWNTdGF0ZSosIEVycm9y
VHlwZSwgY29uc3QgVVN0cmluZyYgbWVzc2FnZSk7CisgICAgSlNfRVhQT1JUREFUQSBKU09iamVj
dCogdGhyb3dFcnJvcihFeGVjU3RhdGUqLCBFcnJvclR5cGUsIGNvbnN0IGNoYXIqIG1lc3NhZ2Up
OworICAgIEpTX0VYUE9SVERBVEEgSlNPYmplY3QqIHRocm93RXJyb3IoRXhlY1N0YXRlKiwgRXJy
b3JUeXBlKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgKaW5kZXggMTI0YjM1NC4uYzdiNzdmMiAxMDA2NDQKLS0t
IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgKKysrIGIvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgKQEAgLTI5LDcgKzI5LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgUHJvZ3JhbU5vZGU7CiAgICAgY2xhc3MgRnVu
Y3Rpb25Cb2R5Tm9kZTsKIAotICAgIGNsYXNzIEZ1bmN0aW9uQ29uc3RydWN0b3IgOiBwdWJsaWMg
SW50ZXJuYWxGdW5jdGlvbiB7CisgICAgY2xhc3MgSlNfRVhQT1JUREFUQSBGdW5jdGlvbkNvbnN0
cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewogICAgIHB1YmxpYzoKICAgICAgICAg
RnVuY3Rpb25Db25zdHJ1Y3RvcihFeGVjU3RhdGUqLCBQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIEZ1
bmN0aW9uUHJvdG90eXBlKik7CiAKQEAgLTM4LDEwICszOCwxMCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgdmlydHVhbCBDYWxsVHlwZSBnZXRDYWxsRGF0YShDYWxsRGF0YSYpOwogICAgIH07
CiAKLSAgICBKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiwgY29uc3QgQXJn
TGlzdCYsIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwgY29uc3QgVVN0cmluZyYgc291
cmNlVVJMLCBpbnQgbGluZU51bWJlcik7Ci0gICAgSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9u
KEV4ZWNTdGF0ZSosIGNvbnN0IEFyZ0xpc3QmKTsKKyAgICBKU19FWFBPUlREQVRBIEpTT2JqZWN0
KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqLCBjb25zdCBBcmdMaXN0JiwgY29uc3QgSWRl
bnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBVU3RyaW5nJiBzb3VyY2VVUkwsIGludCBsaW5l
TnVtYmVyKTsKKyAgICBKU19FWFBPUlREQVRBIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihF
eGVjU3RhdGUqLCBjb25zdCBBcmdMaXN0Jik7CiAKLSAgICBGdW5jdGlvbkJvZHlOb2RlKiBleHRy
YWN0RnVuY3Rpb25Cb2R5KFByb2dyYW1Ob2RlKik7CisgICAgSlNfRVhQT1JUREFUQSBGdW5jdGlv
bkJvZHlOb2RlKiBleHRyYWN0RnVuY3Rpb25Cb2R5KFByb2dyYW1Ob2RlKik7CiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZp
ZXIuaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCmluZGV4IDYzMWNmNDIu
LmEwZDk2NzEgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5o
CisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCkBAIC0yOCw3ICsyOCw3
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRXhlY1N0YXRlOwogCi0gICAgY2xhc3Mg
SWRlbnRpZmllciB7CisgICAgY2xhc3MgSlNfRVhQT1JUREFUQSBJZGVudGlmaWVyIHsKICAgICAg
ICAgZnJpZW5kIGNsYXNzIFN0cnVjdHVyZTsKICAgICBwdWJsaWM6CiAgICAgICAgIElkZW50aWZp
ZXIoKSB7IH0KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRo
cmVhZGluZy5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmgK
aW5kZXggMWE5M2NjYi4uZDgzOTdlMCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Jbml0aWFsaXplVGhyZWFkaW5nLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0
aWFsaXplVGhyZWFkaW5nLmgKQEAgLTI1LDcgKzI1LDcgQEAKICAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgog
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwotIAorCiAjaWZuZGVmIEluaXRpYWxpemVUaHJlYWRpbmdfaAogI2Rl
ZmluZSBJbml0aWFsaXplVGhyZWFkaW5nX2gKIApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgIC8vIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQgZnJvbSB0aGUgbWFp
biB0aHJlYWQuIEl0IGlzIHNhZmUgdG8gY2FsbCBpdCByZXBlYXRlZGx5LgogICAgIC8vIERhcndp
biBpcyBhbiBleGNlcHRpb24gdG8gdGhpcyBydWxlOiBpdCBpcyBPSyB0byBjYWxsIHRoaXMgZnVu
Y3Rpb24gZnJvbSBhbnkgdGhyZWFkLCBldmVuIHJlZW50cmFudGx5LgotICAgIHZvaWQgaW5pdGlh
bGl6ZVRocmVhZGluZygpOworICAgIEpTX0VYUE9SVERBVEEgdm9pZCBpbml0aWFsaXplVGhyZWFk
aW5nKCk7CiAKIH0KIApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5h
bEZ1bmN0aW9uLmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaApp
bmRleCAzMTA2NDRjLi5jOWVhMjdiIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGVybmFsRnVuY3Rpb24uaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFs
RnVuY3Rpb24uaApAQCAtMzEsMTAgKzMxLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xh
c3MgRnVuY3Rpb25Qcm90b3R5cGU7CiAKLSAgICBjbGFzcyBJbnRlcm5hbEZ1bmN0aW9uIDogcHVi
bGljIEpTT2JqZWN0IHsKKyAgICBjbGFzcyBKU19FWFBPUlREQVRBIEludGVybmFsRnVuY3Rpb24g
OiBwdWJsaWMgSlNPYmplY3QgewogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCBjb25zdCBD
bGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0OyAKLSAgICAgICAgc3RhdGljIEpTX0VYUE9SVERB
VEEgY29uc3QgQ2xhc3NJbmZvIGluZm87CisgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8g
aW5mbzsKIAogICAgICAgICBjb25zdCBVU3RyaW5nJiBuYW1lKEpTR2xvYmFsRGF0YSopOwogICAg
ICAgICBjb25zdCBVU3RyaW5nIGRpc3BsYXlOYW1lKEpTR2xvYmFsRGF0YSopOwpkaWZmIC0tZ2l0
IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmggYi9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXkuaAppbmRleCBlYTQ5MGQ4Li40YzBhY2M5IDEwMDY0NAotLS0gYS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyYXkuaApAQCAtMTEyLDEwICsxMTIsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBKU0Fy
cmF5KiBhc0FycmF5KEpTVmFsdWUpOwogCi0gICAgSlNBcnJheSogY29uc3RydWN0RW1wdHlBcnJh
eShFeGVjU3RhdGUqKTsKLSAgICBKU0FycmF5KiBjb25zdHJ1Y3RFbXB0eUFycmF5KEV4ZWNTdGF0
ZSosIHVuc2lnbmVkIGluaXRpYWxMZW5ndGgpOwotICAgIEpTQXJyYXkqIGNvbnN0cnVjdEFycmF5
KEV4ZWNTdGF0ZSosIEpTVmFsdWUgc2luZ2xlSXRlbVZhbHVlKTsKLSAgICBKU0FycmF5KiBjb25z
dHJ1Y3RBcnJheShFeGVjU3RhdGUqLCBjb25zdCBBcmdMaXN0JiB2YWx1ZXMpOworICAgIEpTX0VY
UE9SVERBVEEgSlNBcnJheSogY29uc3RydWN0RW1wdHlBcnJheShFeGVjU3RhdGUqKTsKKyAgICBK
U19FWFBPUlREQVRBIEpTQXJyYXkqIGNvbnN0cnVjdEVtcHR5QXJyYXkoRXhlY1N0YXRlKiwgdW5z
aWduZWQgaW5pdGlhbExlbmd0aCk7CisgICAgSlNfRVhQT1JUREFUQSBKU0FycmF5KiBjb25zdHJ1
Y3RBcnJheShFeGVjU3RhdGUqLCBKU1ZhbHVlIHNpbmdsZUl0ZW1WYWx1ZSk7CisgICAgSlNfRVhQ
T1JUREFUQSBKU0FycmF5KiBjb25zdHJ1Y3RBcnJheShFeGVjU3RhdGUqLCBjb25zdCBBcmdMaXN0
JiB2YWx1ZXMpOwogCiAgICAgaW5saW5lIEpTQXJyYXkqIGFzQXJyYXkoSlNWYWx1ZSB2YWx1ZSkK
ICAgICB7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5Lmgg
Yi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5LmgKaW5kZXggNTczNzRlMC4uODY2
YjhhZSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJheS5oCisr
KyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuaApAQCAtMzIsNyArMzIsNyBA
QAogCiBuYW1lc3BhY2UgSlNDIHsKIAotICAgIGNsYXNzIEpTQnl0ZUFycmF5IDogcHVibGljIEpT
T2JqZWN0IHsKKyAgICBjbGFzcyBKU19FWFBPUlREQVRBIEpTQnl0ZUFycmF5IDogcHVibGljIEpT
T2JqZWN0IHsKICAgICAgICAgZnJpZW5kIGNsYXNzIFZQdHJTZXQ7CiAgICAgcHVibGljOgogICAg
ICAgICBib29sIGNhbkFjY2Vzc0luZGV4KHVuc2lnbmVkIGkpIHsgcmV0dXJuIGkgPCBtX3N0b3Jh
Z2UtPmxlbmd0aCgpOyB9CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2Vs
bC5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAppbmRleCAzMmFhMjJiLi5mOWFl
OTNkIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCisrKyBiL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFtZXNw
YWNlIEpTQyB7CiAKLSAgICBjbGFzcyBKU0NlbGwgOiBwdWJsaWMgTm9uY29weWFibGVDdXN0b21B
bGxvY2F0ZWQgeworICAgIGNsYXNzIEpTX0VYUE9SVERBVEEgSlNDZWxsIDogcHVibGljIE5vbmNv
cHlhYmxlQ3VzdG9tQWxsb2NhdGVkIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEdldHRlclNldHRl
cjsKICAgICAgICAgZnJpZW5kIGNsYXNzIEhlYXA7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7
CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oIGIvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAppbmRleCA5NmEzYzJjLi5iMDhlZjE2
IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCisrKyBi
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgKQEAgLTYxLDcgKzYxLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgc3RydWN0IEhhc2hUYWJsZTsKICAgICBzdHJ1Y3QgVlB0clNl
dDsKIAotICAgIGNsYXNzIEpTR2xvYmFsRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPEpTR2xvYmFs
RGF0YT4geworICAgIGNsYXNzIEpTX0VYUE9SVERBVEEgSlNHbG9iYWxEYXRhIDogcHVibGljIFJl
ZkNvdW50ZWQ8SlNHbG9iYWxEYXRhPiB7CiAgICAgcHVibGljOgogICAgICAgICBzdHJ1Y3QgQ2xp
ZW50RGF0YSB7CiAgICAgICAgICAgICB2aXJ0dWFsIH5DbGllbnREYXRhKCkgPSAwOwpkaWZmIC0t
Z2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDdhYjc1OWQuLjgyZjEzNjggMTAw
NjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTUxLDcgKzUxLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICB0eXBlZGVmIFZlY3RvcjxFeGVjU3RhdGUqLCAxNj4gRXhl
Y1N0YXRlU3RhY2s7CiAKLSAgICBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1Zhcmlh
YmxlT2JqZWN0IHsKKyAgICBjbGFzcyBKU19FWFBPUlREQVRBIEpTR2xvYmFsT2JqZWN0IDogcHVi
bGljIEpTVmFyaWFibGVPYmplY3QgewogICAgIHByb3RlY3RlZDoKICAgICAgICAgdXNpbmcgSlNW
YXJpYWJsZU9iamVjdDo6SlNWYXJpYWJsZU9iamVjdERhdGE7CiAKZGlmZiAtLWdpdCBhL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNJbW1lZGlhdGUuaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNJbW1lZGlhdGUuaAppbmRleCA3MDYzOTZlLi5kZjg4NWE5IDEwMDY0NAotLS0gYS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTSW1tZWRpYXRlLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0ltbWVkaWF0ZS5oCkBAIC0xMjksNyArMTI5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICogdmFsdWVzIGFyZSBlbmNvZGVkIGluIHRoZSBzYW1lIG1hbm5lciBhcyB0aGUgZGVmYXVsdCBm
b3JtYXQuCiAgICAgICovCiAKLSAgICBjbGFzcyBKU0ltbWVkaWF0ZSB7CisgICAgY2xhc3MgSlNf
RVhQT1JUREFUQSBKU0ltbWVkaWF0ZSB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNs
YXNzIEpJVDsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpTVmFsdWU7CkBAIC01NDIsMTAgKzU0Miwx
MCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9CiAKICAgICAvLyBUaGVzZSBhcmUgaWRlbnRpY2Fs
IGxvZ2ljIHRvIHRoZSBKU1ZhbHVlIGZ1bmN0aW9ucyBhYm92ZSwgYW5kIGZhc3RlciB0aGFuIGpz
TnVtYmVyKG51bWJlcikudG9JbnQzMigpLgotICAgIGludDMyX3QgdG9JbnQzMihkb3VibGUpOwot
ICAgIHVpbnQzMl90IHRvVUludDMyKGRvdWJsZSk7Ci0gICAgaW50MzJfdCB0b0ludDMyU2xvd0Nh
c2UoZG91YmxlLCBib29sJiBvayk7Ci0gICAgdWludDMyX3QgdG9VSW50MzJTbG93Q2FzZShkb3Vi
bGUsIGJvb2wmIG9rKTsKKyAgICBKU19FWFBPUlREQVRBIGludDMyX3QgdG9JbnQzMihkb3VibGUp
OworICAgIEpTX0VYUE9SVERBVEEgdWludDMyX3QgdG9VSW50MzIoZG91YmxlKTsKKyAgICBKU19F
WFBPUlREQVRBIGludDMyX3QgdG9JbnQzMlNsb3dDYXNlKGRvdWJsZSwgYm9vbCYgb2spOworICAg
IEpTX0VYUE9SVERBVEEgdWludDMyX3QgdG9VSW50MzJTbG93Q2FzZShkb3VibGUsIGJvb2wmIG9r
KTsKIAogICAgIGlubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKEpTTnVsbFRhZykKICAgICB7CmRpZmYg
LS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oIGIvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0xvY2suaAppbmRleCA4YjAxNWM0Li5kYjVjNTFkIDEwMDY0NAotLS0gYS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNMb2NrLmgKQEAgLTUyLDcgKzUyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBlbnVtIEpT
TG9ja0JlaGF2aW9yIHsgU2lsZW5jZUFzc2VydGlvbnNPbmx5LCBMb2NrRm9yUmVhbCB9OwogCi0g
ICAgY2xhc3MgSlNMb2NrIDogcHVibGljIE5vbmNvcHlhYmxlIHsKKyAgICBjbGFzcyBKU19FWFBP
UlREQVRBIEpTTG9jayA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiAgICAgcHVibGljOgogICAgICAg
ICBKU0xvY2soRXhlY1N0YXRlKik7CiAKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNOdW1iZXJDZWxsLmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTnVtYmVyQ2VsbC5o
CmluZGV4IGEzNWUyMTAuLjY1MGU1N2IgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNOdW1iZXJDZWxsLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU051bWJlckNl
bGwuaApAQCAtMzIsMTEgKzMyLDExIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi0gICAgZXh0ZXJu
IGNvbnN0IGRvdWJsZSBOYU47Ci0gICAgZXh0ZXJuIGNvbnN0IGRvdWJsZSBJbmY7CisgICAgSlNf
RVhQT1JUREFUQSBleHRlcm4gY29uc3QgZG91YmxlIE5hTjsKKyAgICBKU19FWFBPUlREQVRBIGV4
dGVybiBjb25zdCBkb3VibGUgSW5mOwogCi0gICAgSlNWYWx1ZSBqc051bWJlckNlbGwoRXhlY1N0
YXRlKiwgZG91YmxlKTsKLSAgICBKU1ZhbHVlIGpzQVBJTWFuZ2xlZE51bWJlcihFeGVjU3RhdGUq
LCBkb3VibGUpOworICAgIEpTX0VYUE9SVERBVEEgSlNWYWx1ZSBqc051bWJlckNlbGwoRXhlY1N0
YXRlKiwgZG91YmxlKTsKKyAgICBKU19FWFBPUlREQVRBIEpTVmFsdWUganNBUElNYW5nbGVkTnVt
YmVyKEV4ZWNTdGF0ZSosIGRvdWJsZSk7CiAKICNpZiAhVVNFKEFMVEVSTkFURV9KU0lNTUVESUFU
RSkKIApAQCAtNDksNyArNDksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBzdHJ1Y3QgQ2xhc3NJ
bmZvOwogICAgIHN0cnVjdCBJbnN0cnVjdGlvbjsKIAotICAgIGNsYXNzIEpTTnVtYmVyQ2VsbCA6
IHB1YmxpYyBKU0NlbGwgeworICAgIGNsYXNzIEpTX0VYUE9SVERBVEEgSlNOdW1iZXJDZWxsIDog
cHVibGljIEpTQ2VsbCB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAgICAgIGZyaWVu
ZCBKU1ZhbHVlIGpzTnVtYmVyQ2VsbChKU0dsb2JhbERhdGEqLCBkb3VibGUpOwogICAgICAgICBm
cmllbmQgSlNWYWx1ZSBqc051bWJlckNlbGwoRXhlY1N0YXRlKiwgZG91YmxlKTsKZGlmZiAtLWdp
dCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCBiL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuaAppbmRleCBkYjQ3YWM3Li42MzhlYjdlIDEwMDY0NAotLS0gYS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdC5oCkBAIC02NCw3ICs2NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHR5cGVk
ZWYgRW5jb2RlZEpTVmFsdWUqIFByb3BlcnR5U3RvcmFnZTsKICAgICB0eXBlZGVmIGNvbnN0IEVu
Y29kZWRKU1ZhbHVlKiBDb25zdFByb3BlcnR5U3RvcmFnZTsKIAotICAgIGNsYXNzIEpTT2JqZWN0
IDogcHVibGljIEpTQ2VsbCB7CisgICAgY2xhc3MgSlNfRVhQT1JUREFUQSBKU09iamVjdCA6IHB1
YmxpYyBKU0NlbGwgewogICAgICAgICBmcmllbmQgY2xhc3MgQmF0Y2hlZFRyYW5zaXRpb25PcHRp
bWl6ZXI7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBK
U0NlbGw7CkBAIC0yMzQsOSArMjM0LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH07CiAg
ICAgfTsKIAotICAgIEpTT2JqZWN0KiBhc09iamVjdChKU1ZhbHVlKTsKKyAgICBKU19FWFBPUlRE
QVRBIEpTT2JqZWN0KiBhc09iamVjdChKU1ZhbHVlKTsKIAotICAgIEpTT2JqZWN0KiBjb25zdHJ1
Y3RFbXB0eU9iamVjdChFeGVjU3RhdGUqKTsKKyAgICBKU19FWFBPUlREQVRBIEpTT2JqZWN0KiBj
b25zdHJ1Y3RFbXB0eU9iamVjdChFeGVjU3RhdGUqKTsKIAogaW5saW5lIEpTT2JqZWN0KiBhc09i
amVjdChKU1ZhbHVlIHZhbHVlKQogewpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N0cmluZy5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCmluZGV4IDkw
MGM1NjUuLjljYjM0ZDEgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJp
bmcuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKQEAgLTMzLDMyICsz
MywzMiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEpTU3RyaW5nOwogCi0gICAgSlNT
dHJpbmcqIGpzRW1wdHlTdHJpbmcoSlNHbG9iYWxEYXRhKik7Ci0gICAgSlNTdHJpbmcqIGpzRW1w
dHlTdHJpbmcoRXhlY1N0YXRlKik7Ci0gICAgSlNTdHJpbmcqIGpzU3RyaW5nKEpTR2xvYmFsRGF0
YSosIGNvbnN0IFVTdHJpbmcmKTsgLy8gcmV0dXJucyBlbXB0eSBzdHJpbmcgaWYgcGFzc2VkIG51
bGwgc3RyaW5nCi0gICAgSlNTdHJpbmcqIGpzU3RyaW5nKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJp
bmcmKTsgLy8gcmV0dXJucyBlbXB0eSBzdHJpbmcgaWYgcGFzc2VkIG51bGwgc3RyaW5nCi0KLSAg
ICBKU1N0cmluZyoganNTaW5nbGVDaGFyYWN0ZXJTdHJpbmcoSlNHbG9iYWxEYXRhKiwgVUNoYXIp
OwotICAgIEpTU3RyaW5nKiBqc1NpbmdsZUNoYXJhY3RlclN0cmluZyhFeGVjU3RhdGUqLCBVQ2hh
cik7Ci0gICAgSlNTdHJpbmcqIGpzU2luZ2xlQ2hhcmFjdGVyU3Vic3RyaW5nKEpTR2xvYmFsRGF0
YSosIGNvbnN0IFVTdHJpbmcmLCB1bnNpZ25lZCBvZmZzZXQpOwotICAgIEpTU3RyaW5nKiBqc1Np
bmdsZUNoYXJhY3RlclN1YnN0cmluZyhFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJiwgdW5zaWdu
ZWQgb2Zmc2V0KTsKLSAgICBKU1N0cmluZyoganNTdWJzdHJpbmcoSlNHbG9iYWxEYXRhKiwgY29u
c3QgVVN0cmluZyYsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBKU1N0
cmluZyoganNTdWJzdHJpbmcoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYsIHVuc2lnbmVkIG9m
ZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBKU19FWFBPUlREQVRBIEpTU3RyaW5nKiBqc0Vt
cHR5U3RyaW5nKEpTR2xvYmFsRGF0YSopOworICAgIEpTX0VYUE9SVERBVEEgSlNTdHJpbmcqIGpz
RW1wdHlTdHJpbmcoRXhlY1N0YXRlKik7CisgICAgSlNfRVhQT1JUREFUQSBKU1N0cmluZyoganNT
dHJpbmcoSlNHbG9iYWxEYXRhKiwgY29uc3QgVVN0cmluZyYpOyAvLyByZXR1cm5zIGVtcHR5IHN0
cmluZyBpZiBwYXNzZWQgbnVsbCBzdHJpbmcKKyAgICBKU19FWFBPUlREQVRBIEpTU3RyaW5nKiBq
c1N0cmluZyhFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJik7IC8vIHJldHVybnMgZW1wdHkgc3Ry
aW5nIGlmIHBhc3NlZCBudWxsIHN0cmluZworCisgICAgSlNfRVhQT1JUREFUQSBKU1N0cmluZyog
anNTaW5nbGVDaGFyYWN0ZXJTdHJpbmcoSlNHbG9iYWxEYXRhKiwgVUNoYXIpOworICAgIEpTX0VY
UE9SVERBVEEgSlNTdHJpbmcqIGpzU2luZ2xlQ2hhcmFjdGVyU3RyaW5nKEV4ZWNTdGF0ZSosIFVD
aGFyKTsKKyAgICBKU19FWFBPUlREQVRBIEpTU3RyaW5nKiBqc1NpbmdsZUNoYXJhY3RlclN1YnN0
cmluZyhKU0dsb2JhbERhdGEqLCBjb25zdCBVU3RyaW5nJiwgdW5zaWduZWQgb2Zmc2V0KTsKKyAg
ICBKU19FWFBPUlREQVRBIEpTU3RyaW5nKiBqc1NpbmdsZUNoYXJhY3RlclN1YnN0cmluZyhFeGVj
U3RhdGUqLCBjb25zdCBVU3RyaW5nJiwgdW5zaWduZWQgb2Zmc2V0KTsKKyAgICBKU19FWFBPUlRE
QVRBIEpTU3RyaW5nKiBqc1N1YnN0cmluZyhKU0dsb2JhbERhdGEqLCBjb25zdCBVU3RyaW5nJiwg
dW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIEpTX0VYUE9SVERBVEEgSlNT
dHJpbmcqIGpzU3Vic3RyaW5nKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmLCB1bnNpZ25lZCBv
ZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CiAKICAgICAvLyBOb24tdHJpdmlhbCBzdHJpbmdzIGFy
ZSB0d28gb3IgbW9yZSBjaGFyYWN0ZXJzIGxvbmcuCiAgICAgLy8gVGhlc2UgZnVuY3Rpb25zIGFy
ZSBmYXN0ZXIgdGhhbiBqdXN0IGNhbGxpbmcganNTdHJpbmcuCi0gICAgSlNTdHJpbmcqIGpzTm9u
dHJpdmlhbFN0cmluZyhKU0dsb2JhbERhdGEqLCBjb25zdCBVU3RyaW5nJik7Ci0gICAgSlNTdHJp
bmcqIGpzTm9udHJpdmlhbFN0cmluZyhFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJik7Ci0gICAg
SlNTdHJpbmcqIGpzTm9udHJpdmlhbFN0cmluZyhKU0dsb2JhbERhdGEqLCBjb25zdCBjaGFyKik7
Ci0gICAgSlNTdHJpbmcqIGpzTm9udHJpdmlhbFN0cmluZyhFeGVjU3RhdGUqLCBjb25zdCBjaGFy
Kik7CisgICAgSlNfRVhQT1JUREFUQSBKU1N0cmluZyoganNOb250cml2aWFsU3RyaW5nKEpTR2xv
YmFsRGF0YSosIGNvbnN0IFVTdHJpbmcmKTsKKyAgICBKU19FWFBPUlREQVRBIEpTU3RyaW5nKiBq
c05vbnRyaXZpYWxTdHJpbmcoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYpOworICAgIEpTX0VY
UE9SVERBVEEgSlNTdHJpbmcqIGpzTm9udHJpdmlhbFN0cmluZyhKU0dsb2JhbERhdGEqLCBjb25z
dCBjaGFyKik7CisgICAgSlNfRVhQT1JUREFUQSBKU1N0cmluZyoganNOb250cml2aWFsU3RyaW5n
KEV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIqKTsKIAogICAgIC8vIFNob3VsZCBiZSB1c2VkIGZvciBz
dHJpbmdzIHRoYXQgYXJlIG93bmVkIGJ5IGFuIG9iamVjdCB0aGF0IHdpbGwKICAgICAvLyBsaWtl
bHkgb3V0bGl2ZSB0aGUgSlNWYWx1ZSB0aGlzIG1ha2VzLCBzdWNoIGFzIHRoZSBwYXJzZSB0cmVl
IG9yIGEKICAgICAvLyBET00gb2JqZWN0IHRoYXQgY29udGFpbnMgYSBVU3RyaW5nCi0gICAgSlNT
dHJpbmcqIGpzT3duZWRTdHJpbmcoSlNHbG9iYWxEYXRhKiwgY29uc3QgVVN0cmluZyYpOyAKLSAg
ICBKU1N0cmluZyoganNPd25lZFN0cmluZyhFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJik7IAor
ICAgIEpTX0VYUE9SVERBVEEgSlNTdHJpbmcqIGpzT3duZWRTdHJpbmcoSlNHbG9iYWxEYXRhKiwg
Y29uc3QgVVN0cmluZyYpOworICAgIEpTX0VYUE9SVERBVEEgSlNTdHJpbmcqIGpzT3duZWRTdHJp
bmcoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYpOwogCi0gICAgY2xhc3MgSlNTdHJpbmcgOiBw
dWJsaWMgSlNDZWxsIHsKKyAgICBjbGFzcyBKU19FWFBPUlREQVRBIEpTU3RyaW5nIDogcHVibGlj
IEpTQ2VsbCB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAgICAgIGZyaWVuZCBjbGFz
cyBWUHRyU2V0OwogCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFi
bGVPYmplY3QuaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oCmlu
ZGV4IGI5NjlkYTUuLjU2MDMyY2MgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNWYXJpYWJsZU9iamVjdC5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJs
ZU9iamVjdC5oCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3Mg
UmVnaXN0ZXI7CiAKLSAgICBjbGFzcyBKU1ZhcmlhYmxlT2JqZWN0IDogcHVibGljIEpTT2JqZWN0
IHsKKyAgICBjbGFzcyBKU19FWFBPUlREQVRBIEpTVmFyaWFibGVPYmplY3QgOiBwdWJsaWMgSlNP
YmplY3QgewogICAgICAgICBmcmllbmQgY2xhc3MgSklUOwogCiAgICAgcHVibGljOgpAQCAtNTAs
NyArNTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRl
UHJvcGVydHkoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYpOwogICAgICAgICB2aXJ0dWFs
IHZvaWQgZ2V0UHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYpOwot
ICAgICAgICAKKwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNWYXJpYWJsZU9iamVjdCgpIGNvbnN0
OwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNEeW5hbWljU2NvcGUoKSBjb25zdCA9IDA7CiAKZGlm
ZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmggYi9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9iamVjdC5oCmluZGV4IDJhMmUzYzYuLmQwYmFh
ODUgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmgK
KysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dyYXBwZXJPYmplY3QuaApAQCAtMjUsMTAg
KzI1LDEwIEBACiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKIAogbmFtZXNwYWNlIEpTQyB7Ci0gICAg
CisKICAgICAvLyBUaGlzIGNsYXNzIGlzIHVzZWQgYXMgYSBiYXNlIGZvciBjbGFzc2VzIHN1Y2gg
YXMgU3RyaW5nLAogICAgIC8vIE51bWJlciwgQm9vbGVhbiBhbmQgRGF0ZSB3aGljaCBhcmUgd3Jh
cHBlcnMgZm9yIHByaW1pdGl2ZSB0eXBlcy4KLSAgICBjbGFzcyBKU1dyYXBwZXJPYmplY3QgOiBw
dWJsaWMgSlNPYmplY3QgeworICAgIGNsYXNzIEpTX0VYUE9SVERBVEEgSlNXcmFwcGVyT2JqZWN0
IDogcHVibGljIEpTT2JqZWN0IHsKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIGV4cGxpY2l0IEpT
V3JhcHBlck9iamVjdChQYXNzUmVmUHRyPFN0cnVjdHVyZT4pOwogCmRpZmYgLS1naXQgYS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29r
dXAuaAppbmRleCAxNjdmMmJjLi4zMDY0YzgzIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0xvb2t1cC5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKQEAg
LTEwNCw3ICsxMDQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSGFzaEVudHJ5KiBtX25l
eHQ7CiAgICAgfTsKIAotICAgIHN0cnVjdCBIYXNoVGFibGUgeworICAgIHN0cnVjdCBKU19FWFBP
UlREQVRBIEhhc2hUYWJsZSB7CiAKICAgICAgICAgaW50IGNvbXBhY3RTaXplOwogICAgICAgICBp
bnQgY29tcGFjdEhhc2hTaXplTWFzazsKQEAgLTE2Miw3ICsxNjIsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgdm9pZCBjcmVhdGVUYWJsZShKU0dsb2JhbERhdGEqKSBjb25zdDsKICAgICB9
OwogCi0gICAgdm9pZCBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChFeGVjU3RhdGUqLCBjb25zdCBI
YXNoRW50cnkqLCBKU09iamVjdCogdGhpc09iamVjdCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICBKU19FWFBPUlREQVRBIHZvaWQgc2V0VXBTdGF0
aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSGFzaEVudHJ5KiwgSlNPYmplY3QqIHRo
aXNPYmplY3QsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7
CiAKICAgICAvKioKICAgICAgKiBUaGlzIG1ldGhvZCBkb2VzIGl0IGFsbCAobG9va2luZyBpbiB0
aGUgaGFzaHRhYmxlLCBjaGVja2luZyBmb3IgZnVuY3Rpb24KZGlmZiAtLWdpdCBhL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTnVtYmVyT2JqZWN0LmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051
bWJlck9iamVjdC5oCmluZGV4IGQzNTRiOWIuLmUzNDE1NzYgMTAwNjQ0Ci0tLSBhL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTnVtYmVyT2JqZWN0LmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9OdW1iZXJPYmplY3QuaApAQCAtMjUsNyArMjUsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAot
ICAgIGNsYXNzIE51bWJlck9iamVjdCA6IHB1YmxpYyBKU1dyYXBwZXJPYmplY3QgeworICAgIGNs
YXNzIEpTX0VYUE9SVERBVEEgTnVtYmVyT2JqZWN0IDogcHVibGljIEpTV3JhcHBlck9iamVjdCB7
CiAgICAgcHVibGljOgogICAgICAgICBleHBsaWNpdCBOdW1iZXJPYmplY3QoUGFzc1JlZlB0cjxT
dHJ1Y3R1cmU+KTsKIApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQ
cm90b3R5cGUuaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmgKaW5k
ZXggNzc5MGFlMC4uMjQ5OTcxMyAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
YmplY3RQcm90b3R5cGUuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3Rv
dHlwZS5oCkBAIC0zMCw3ICszMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBPYmplY3RQ
cm90b3R5cGUoRXhlY1N0YXRlKiwgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBTdHJ1Y3R1cmUqIHBy
b3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlKTsKICAgICB9OwogCi0gICAgSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG9iamVjdFByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNW
YWx1ZSwgY29uc3QgQXJnTGlzdCYpOworICAgIEpTX0VYUE9SVERBVEEgSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG9iamVjdFByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNW
YWx1ZSwgY29uc3QgQXJnTGlzdCYpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0
IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oIGIvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oCmluZGV4IGI0MzgyZjQuLmYxMjg0NDQg
MTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuaAor
KysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmgKQEAgLTU4LDcg
KzU4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmVDaGFpbj4g
bV9jYWNoZWRQcm90b3R5cGVDaGFpbjsKICAgICB9OwogCi0gICAgY2xhc3MgUHJvcGVydHlOYW1l
QXJyYXkgeworICAgIGNsYXNzIEpTX0VYUE9SVERBVEEgUHJvcGVydHlOYW1lQXJyYXkgewogICAg
IHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBQcm9wZXJ0eU5hbWVBcnJheURhdGE6OmNvbnN0X2l0
ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOwogCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3RvdHlwZUZ1bmN0aW9uLmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3RvdHlw
ZUZ1bmN0aW9uLmgKaW5kZXggOTlhYjMyNy4uYzYyNjg4MSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm90b3R5cGVGdW5jdGlvbi5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJvdG90eXBlRnVuY3Rpb24uaApAQCAtMjksNyArMjksNyBAQAogCiBuYW1lc3BhY2Ug
SlNDIHsKIAotICAgIGNsYXNzIFByb3RvdHlwZUZ1bmN0aW9uIDogcHVibGljIEludGVybmFsRnVu
Y3Rpb24geworICAgIGNsYXNzIEpTX0VYUE9SVERBVEEgUHJvdG90eXBlRnVuY3Rpb24gOiBwdWJs
aWMgSW50ZXJuYWxGdW5jdGlvbiB7CiAgICAgcHVibGljOgogICAgICAgICBQcm90b3R5cGVGdW5j
dGlvbihFeGVjU3RhdGUqLCBpbnQgbGVuZ3RoLCBjb25zdCBJZGVudGlmaWVyJiwgTmF0aXZlRnVu
Y3Rpb24pOwogICAgICAgICBQcm90b3R5cGVGdW5jdGlvbihFeGVjU3RhdGUqLCBQYXNzUmVmUHRy
PFN0cnVjdHVyZT4sIGludCBsZW5ndGgsIGNvbnN0IElkZW50aWZpZXImLCBOYXRpdmVGdW5jdGlv
bik7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oIGIvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAppbmRleCAyNGQ0MTk5Li44NjM0ODRlIDEwMDY0NAot
LS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCisrKyBiL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICBjbGFzcyBKU0dsb2JhbERhdGE7CiAKLSAgICBjbGFzcyBSZWdFeHAgOiBwdWJsaWMgUmVmQ291
bnRlZDxSZWdFeHA+IHsKKyAgICBjbGFzcyBKU19FWFBPUlREQVRBIFJlZ0V4cCA6IHB1YmxpYyBS
ZWZDb3VudGVkPFJlZ0V4cD4gewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8UmVnRXhwPiBjcmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5n
JiBwYXR0ZXJuKTsKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8UmVnRXhwPiBjcmVhdGUoSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBwYXR0ZXJuLCBjb25zdCBVU3Ry
aW5nJiBmbGFncyk7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9i
amVjdC5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaAppbmRleCBmYWM5
OTc4Li45ZWE5YWQ4IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9i
amVjdC5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgKQEAgLTI2
LDcgKzI2LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLSAgICBjbGFzcyBSZWdFeHBPYmplY3Qg
OiBwdWJsaWMgSlNPYmplY3QgeworICAgIGNsYXNzIEpTX0VYUE9SVERBVEEgUmVnRXhwT2JqZWN0
IDogcHVibGljIEpTT2JqZWN0IHsKICAgICBwdWJsaWM6CiAgICAgICAgIFJlZ0V4cE9iamVjdChQ
YXNzUmVmUHRyPFN0cnVjdHVyZT4sIFBhc3NSZWZQdHI8UmVnRXhwPik7CiAgICAgICAgIHZpcnR1
YWwgflJlZ0V4cE9iamVjdCgpOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
bWFsbFN0cmluZ3MuaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmgKaW5k
ZXggZjBkZDhkZi4uMGY2MDllYSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
bWFsbFN0cmluZ3MuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5o
CkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgU21hbGxTdHJp
bmdzU3RvcmFnZTsKIAotICAgIGNsYXNzIFNtYWxsU3RyaW5ncyA6IHB1YmxpYyBOb25jb3B5YWJs
ZSB7CisgICAgY2xhc3MgSlNfRVhQT1JUREFUQSBTbWFsbFN0cmluZ3MgOiBwdWJsaWMgTm9uY29w
eWFibGUgewogICAgIHB1YmxpYzoKICAgICAgICAgU21hbGxTdHJpbmdzKCk7CiAgICAgICAgIH5T
bWFsbFN0cmluZ3MoKTsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5n
T2JqZWN0LmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCmluZGV4IGVh
M2EwNDUuLmJhNDlmYzEgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5n
T2JqZWN0LmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaApAQCAt
MjYsNyArMjYsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotICAgIGNsYXNzIFN0cmluZ09iamVj
dCA6IHB1YmxpYyBKU1dyYXBwZXJPYmplY3QgeworICAgIGNsYXNzIEpTX0VYUE9SVERBVEEgU3Ry
aW5nT2JqZWN0IDogcHVibGljIEpTV3JhcHBlck9iamVjdCB7CiAgICAgcHVibGljOgogICAgICAg
ICBTdHJpbmdPYmplY3QoRXhlY1N0YXRlKiwgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+KTsKICAgICAg
ICAgU3RyaW5nT2JqZWN0KEV4ZWNTdGF0ZSosIFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgY29uc3Qg
VVN0cmluZyYpOwpAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdmly
dHVhbCB2b2lkIGdldFByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkm
KTsKIAogICAgICAgICB2aXJ0dWFsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3Qg
eyByZXR1cm4gJmluZm87IH0KLSAgICAgICAgc3RhdGljIGNvbnN0IEpTX0VYUE9SVERBVEEgQ2xh
c3NJbmZvIGluZm87CisgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gaW5mbzsKIAogICAg
ICAgICBKU1N0cmluZyogaW50ZXJuYWxWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIGFzU3RyaW5nKEpT
V3JhcHBlck9iamVjdDo6aW50ZXJuYWxWYWx1ZSgpKTt9CiAKZGlmZiAtLWdpdCBhL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZS5oCmluZGV4IDg2Njk5OWQuLmM2YWQxMDAgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmUuaApAQCAtNDgsNyArNDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBQcm9wZXJ0
eU5hbWVBcnJheTsKICAgICBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheURhdGE7CiAKLSAgICBjbGFz
cyBTdHJ1Y3R1cmUgOiBwdWJsaWMgUmVmQ291bnRlZDxTdHJ1Y3R1cmU+IHsKKyAgICBjbGFzcyBK
U19FWFBPUlREQVRBIFN0cnVjdHVyZSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0cnVjdHVyZT4gewog
ICAgIHB1YmxpYzoKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKICAgICAgICAgc3RhdGljIFBh
c3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGUoSlNWYWx1ZSBwcm90b3R5cGUsIGNvbnN0IFR5cGVJ
bmZvJiB0eXBlSW5mbykKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGltZW91
dENoZWNrZXIuaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGltZW91dENoZWNrZXIuaAppbmRl
eCA3YmZhNmQwLi4zZTVhMjgyIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rp
bWVvdXRDaGVja2VyLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UaW1lb3V0Q2hlY2tl
ci5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRXhlY1N0
YXRlOwogCi0gICAgY2xhc3MgVGltZW91dENoZWNrZXIgeworICAgIGNsYXNzIEpTX0VYUE9SVERB
VEEgVGltZW91dENoZWNrZXIgewogICAgIHB1YmxpYzoKICAgICAgICAgVGltZW91dENoZWNrZXIo
KTsKIApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nLmggYi9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuaAppbmRleCBkMDFiNzVkLi45NzVhYmZlIDEwMDY0
NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuaAorKysgYi9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1VTdHJpbmcuaApAQCAtNDEsOCArNDEsOCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICB1c2luZyBXVEY6OlBsYWNlbWVudE5ld0Fkb3B0OwogCiAgICAgY2xhc3MgSWRlbnRpZmll
clRhYmxlOwotICAKLSAgICBjbGFzcyBDU3RyaW5nIHsKKworICAgIGNsYXNzIEpTX0VYUE9SVERB
VEEgQ1N0cmluZyB7CiAgICAgcHVibGljOgogICAgICAgICBDU3RyaW5nKCkKICAgICAgICAgICAg
IDogbV9sZW5ndGgoMCkKQEAgLTczLDEzICs3MywxMyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
IHR5cGVkZWYgVmVjdG9yPGNoYXIsIDMyPiBDU3RyaW5nQnVmZmVyOwogCi0gICAgY2xhc3MgVVN0
cmluZyB7CisgICAgY2xhc3MgSlNfRVhQT1JUREFUQSBVU3RyaW5nIHsKICAgICAgICAgZnJpZW5k
IGNsYXNzIEpJVDsKIAogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBDcm9zc1RocmVhZFJl
ZkNvdW50ZWQ8T3duRmFzdE1hbGxvY1B0cjxVQ2hhcj4gPiBTaGFyZWRVQ2hhcjsKICAgICAgICAg
c3RydWN0IEJhc2VTdHJpbmc7Ci0gICAgICAgIHN0cnVjdCBSZXAgOiBOb25jb3B5YWJsZSB7Cisg
ICAgICAgIHN0cnVjdCBKU19FWFBPUlREQVRBIFJlcCA6IE5vbmNvcHlhYmxlIHsKICAgICAgICAg
ICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAKICAgICAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJl
cD4gY3JlYXRlKFVDaGFyKiBidWZmZXIsIGludCBsZW5ndGgpCkBAIC0xODUsOCArMTg1LDggQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgICAgIGZyaWVuZCBjbGFzcyBTbWFsbFN0cmluZ3NT
dG9yYWdlOwogICAgICAgICAgICAgZnJpZW5kIHZvaWQgaW5pdGlhbGl6ZVVTdHJpbmcoKTsKLSAg
ICAgICAgICAgIEpTX0VYUE9SVERBVEEgc3RhdGljIEJhc2VTdHJpbmcqIG51bGxCYXNlU3RyaW5n
OwotICAgICAgICAgICAgSlNfRVhQT1JUREFUQSBzdGF0aWMgQmFzZVN0cmluZyogZW1wdHlCYXNl
U3RyaW5nOworICAgICAgICAgICAgc3RhdGljIEJhc2VTdHJpbmcqIG51bGxCYXNlU3RyaW5nOwor
ICAgICAgICAgICAgc3RhdGljIEJhc2VTdHJpbmcqIGVtcHR5QmFzZVN0cmluZzsKICAgICAgICAg
fTsKIAogCkBAIC00MzEsOSArNDMxLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVy
biBVU3RyaW5nKHJlc3VsdCA/IHJlc3VsdC5yZWxlYXNlKCkgOiBVU3RyaW5nOjpudWxsUmVwKCkp
OwogICAgIH0KIAotICAgIGludCBjb21wYXJlKGNvbnN0IFVTdHJpbmcmLCBjb25zdCBVU3RyaW5n
Jik7CisgICAgSlNfRVhQT1JUREFUQSBpbnQgY29tcGFyZShjb25zdCBVU3RyaW5nJiwgY29uc3Qg
VVN0cmluZyYpOwogCi0gICAgYm9vbCBlcXVhbChjb25zdCBVU3RyaW5nOjpSZXAqLCBjb25zdCBV
U3RyaW5nOjpSZXAqKTsKKyAgICBKU19FWFBPUlREQVRBIGJvb2wgZXF1YWwoY29uc3QgVVN0cmlu
Zzo6UmVwKiwgY29uc3QgVVN0cmluZzo6UmVwKik7CiAKICAgICBpbmxpbmUgUGFzc1JlZlB0cjxV
U3RyaW5nOjpSZXA+IFVTdHJpbmc6OlJlcDo6Y3JlYXRlKFBhc3NSZWZQdHI8VVN0cmluZzo6UmVw
PiByZXAsIGludCBvZmZzZXQsIGludCBsZW5ndGgpCiAgICAgewpAQCAtNTQxLDEzICs1NDEsMTMg
QEAgbmFtZXNwYWNlIFdURiB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IERlZmF1
bHRIYXNoOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBTdHJIYXNoOwogCi0gICAg
dGVtcGxhdGU8PiBzdHJ1Y3QgU3RySGFzaDxKU0M6OlVTdHJpbmc6OlJlcCo+IHsKKyAgICB0ZW1w
bGF0ZTw+IHN0cnVjdCBKU19FWFBPUlREQVRBIFN0ckhhc2g8SlNDOjpVU3RyaW5nOjpSZXAqPiB7
CiAgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IEpTQzo6VVN0cmluZzo6UmVwKiBr
ZXkpIHsgcmV0dXJuIGtleS0+aGFzaCgpOyB9CiAgICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNv
bnN0IEpTQzo6VVN0cmluZzo6UmVwKiBhLCBjb25zdCBKU0M6OlVTdHJpbmc6OlJlcCogYikgeyBy
ZXR1cm4gSlNDOjplcXVhbChhLCBiKTsgfQogICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZl
VG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNlOwogICAgIH07CiAKLSAgICB0ZW1wbGF0
ZTw+IHN0cnVjdCBTdHJIYXNoPFJlZlB0cjxKU0M6OlVTdHJpbmc6OlJlcD4gPiA6IHB1YmxpYyBT
dHJIYXNoPEpTQzo6VVN0cmluZzo6UmVwKj4geworICAgIHRlbXBsYXRlPD4gc3RydWN0IEpTX0VY
UE9SVERBVEEgU3RySGFzaDxSZWZQdHI8SlNDOjpVU3RyaW5nOjpSZXA+ID4gOiBwdWJsaWMgU3Ry
SGFzaDxKU0M6OlVTdHJpbmc6OlJlcCo+IHsKICAgICAgICAgdXNpbmcgU3RySGFzaDxKU0M6OlVT
dHJpbmc6OlJlcCo+OjpoYXNoOwogICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBS
ZWZQdHI8SlNDOjpVU3RyaW5nOjpSZXA+JiBrZXkpIHsgcmV0dXJuIGtleS0+aGFzaCgpOyB9CiAg
ICAgICAgIHVzaW5nIFN0ckhhc2g8SlNDOjpVU3RyaW5nOjpSZXAqPjo6ZXF1YWw7CkBAIC01NTgs
MTEgKzU1OCwxMSBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wg
c2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKICAgICB9OwogCi0gICAgdGVt
cGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8SlNDOjpVU3RyaW5nOjpSZXAqPiB7CisgICAgdGVt
cGxhdGU8PiBzdHJ1Y3QgSlNfRVhQT1JUREFUQSBEZWZhdWx0SGFzaDxKU0M6OlVTdHJpbmc6OlJl
cCo+IHsKICAgICAgICAgdHlwZWRlZiBTdHJIYXNoPEpTQzo6VVN0cmluZzo6UmVwKj4gSGFzaDsK
ICAgICB9OwogCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8UmVmUHRyPEpTQzo6
VVN0cmluZzo6UmVwPiA+IHsKKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBKU19FWFBPUlREQVRBIERl
ZmF1bHRIYXNoPFJlZlB0cjxKU0M6OlVTdHJpbmc6OlJlcD4gPiB7CiAgICAgICAgIHR5cGVkZWYg
U3RySGFzaDxSZWZQdHI8SlNDOjpVU3RyaW5nOjpSZXA+ID4gSGFzaDsKIAogICAgIH07CmRpZmYg
LS1naXQgYS9KYXZhU2NyaXB0Q29yZS93dGYvQnl0ZUFycmF5LmggYi9KYXZhU2NyaXB0Q29yZS93
dGYvQnl0ZUFycmF5LmgKaW5kZXggOTZlOWNjMi4uMDZkMTgxMCAxMDA2NDQKLS0tIGEvSmF2YVNj
cmlwdENvcmUvd3RmL0J5dGVBcnJheS5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3d0Zi9CeXRlQXJy
YXkuaApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5h
bWVzcGFjZSBXVEYgewotICAgIGNsYXNzIEJ5dGVBcnJheSA6IHB1YmxpYyBSZWZDb3VudGVkQmFz
ZSB7CisgICAgY2xhc3MgSlNfRVhQT1JUREFUQSBCeXRlQXJyYXkgOiBwdWJsaWMgUmVmQ291bnRl
ZEJhc2UgewogICAgIHB1YmxpYzoKICAgICAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyBy
ZXR1cm4gbV9zaXplOyB9CiAKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3d0Zi9DdXJyZW50
VGltZS5oIGIvSmF2YVNjcmlwdENvcmUvd3RmL0N1cnJlbnRUaW1lLmgKaW5kZXggMzFmMWVjOC4u
MThiNTA1OCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvd3RmL0N1cnJlbnRUaW1lLmgKKysr
IGIvSmF2YVNjcmlwdENvcmUvd3RmL0N1cnJlbnRUaW1lLmgKQEAgLTM1LDEzICszNSwxMiBAQAog
bmFtZXNwYWNlIFdURiB7CiAKICAgICAvLyBSZXR1cm5zIHRoZSBjdXJyZW50IHN5c3RlbSAoVVRD
KSB0aW1lIGluIHNlY29uZHMsIHN0YXJ0aW5nIEphbnVhcnkgMSwgMTk3MC4KLSAgICAvLyBQcmVj
aXNpb24gdmFyaWVzIGRlcGVuZGluZyBvbiBhIHBsYXRmb3JtIGJ1dCB1c3VhbGx5IGlzIGFzIGdv
b2Qgb3IgYmV0dGVyIAorICAgIC8vIFByZWNpc2lvbiB2YXJpZXMgZGVwZW5kaW5nIG9uIGEgcGxh
dGZvcm0gYnV0IHVzdWFsbHkgaXMgYXMgZ29vZCBvciBiZXR0ZXIKICAgICAvLyB0aGFuIGEgbWls
bGlzZWNvbmQuCi0gICAgZG91YmxlIGN1cnJlbnRUaW1lKCk7CisgICAgSlNfRVhQT1JUREFUQSBk
b3VibGUgY3VycmVudFRpbWUoKTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6
Y3VycmVudFRpbWU7CiAKICNlbmRpZiAvLyBDdXJyZW50VGltZV9oCi0KZGlmZiAtLWdpdCBhL0ph
dmFTY3JpcHRDb3JlL3d0Zi9GYXN0TWFsbG9jLmggYi9KYXZhU2NyaXB0Q29yZS93dGYvRmFzdE1h
bGxvYy5oCmluZGV4IDYxZWJlMzIuLmYwNjQzZmQgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3Jl
L3d0Zi9GYXN0TWFsbG9jLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvd3RmL0Zhc3RNYWxsb2MuaApA
QCAtMjgsMTggKzI4LDE4IEBACiBuYW1lc3BhY2UgV1RGIHsKIAogICAgIC8vIFRoZXNlIGZ1bmN0
aW9ucyBjYWxsIENSQVNIKCkgaWYgYW4gYWxsb2NhdGlvbiBmYWlscy4KLSAgICB2b2lkKiBmYXN0
TWFsbG9jKHNpemVfdCBuKTsKLSAgICB2b2lkKiBmYXN0WmVyb2VkTWFsbG9jKHNpemVfdCBuKTsK
LSAgICB2b2lkKiBmYXN0Q2FsbG9jKHNpemVfdCBuX2VsZW1lbnRzLCBzaXplX3QgZWxlbWVudF9z
aXplKTsKLSAgICB2b2lkKiBmYXN0UmVhbGxvYyh2b2lkKiBwLCBzaXplX3Qgbik7CisgICAgSlNf
RVhQT1JUREFUQSB2b2lkKiBmYXN0TWFsbG9jKHNpemVfdCBuKTsKKyAgICBKU19FWFBPUlREQVRB
IHZvaWQqIGZhc3RaZXJvZWRNYWxsb2Moc2l6ZV90IG4pOworICAgIEpTX0VYUE9SVERBVEEgdm9p
ZCogZmFzdENhbGxvYyhzaXplX3Qgbl9lbGVtZW50cywgc2l6ZV90IGVsZW1lbnRfc2l6ZSk7Cisg
ICAgSlNfRVhQT1JUREFUQSB2b2lkKiBmYXN0UmVhbGxvYyh2b2lkKiBwLCBzaXplX3Qgbik7CiAK
ICAgICAvLyBUaGVzZSBmdW5jdGlvbnMgcmV0dXJuIE5VTEwgaWYgYW4gYWxsb2NhdGlvbiBmYWls
cy4KLSAgICB2b2lkKiB0cnlGYXN0TWFsbG9jKHNpemVfdCBuKTsKLSAgICB2b2lkKiB0cnlGYXN0
WmVyb2VkTWFsbG9jKHNpemVfdCBuKTsKLSAgICB2b2lkKiB0cnlGYXN0Q2FsbG9jKHNpemVfdCBu
X2VsZW1lbnRzLCBzaXplX3QgZWxlbWVudF9zaXplKTsKLSAgICB2b2lkKiB0cnlGYXN0UmVhbGxv
Yyh2b2lkKiBwLCBzaXplX3Qgbik7CisgICAgSlNfRVhQT1JUREFUQSB2b2lkKiB0cnlGYXN0TWFs
bG9jKHNpemVfdCBuKTsKKyAgICBKU19FWFBPUlREQVRBIHZvaWQqIHRyeUZhc3RaZXJvZWRNYWxs
b2Moc2l6ZV90IG4pOworICAgIEpTX0VYUE9SVERBVEEgdm9pZCogdHJ5RmFzdENhbGxvYyhzaXpl
X3Qgbl9lbGVtZW50cywgc2l6ZV90IGVsZW1lbnRfc2l6ZSk7CisgICAgSlNfRVhQT1JUREFUQSB2
b2lkKiB0cnlGYXN0UmVhbGxvYyh2b2lkKiBwLCBzaXplX3Qgbik7CiAKLSAgICB2b2lkIGZhc3RG
cmVlKHZvaWQqIHApOworICAgIEpTX0VYUE9SVERBVEEgdm9pZCBmYXN0RnJlZSh2b2lkKiBwKTsK
IAogI2lmbmRlZiBOREVCVUcgICAgCiAgICAgdm9pZCBmYXN0TWFsbG9jRm9yYmlkKCk7CmRpZmYg
LS1naXQgYS9KYXZhU2NyaXB0Q29yZS93dGYvTWFpblRocmVhZC5oIGIvSmF2YVNjcmlwdENvcmUv
d3RmL01haW5UaHJlYWQuaAppbmRleCAwMWNlODA0Li44YTRlMzNmIDEwMDY0NAotLS0gYS9KYXZh
U2NyaXB0Q29yZS93dGYvTWFpblRocmVhZC5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3d0Zi9NYWlu
VGhyZWFkLmgKQEAgLTM2LDEyICszNiwxMiBAQCBjbGFzcyBNdXRleDsKIAogdHlwZWRlZiB2b2lk
IE1haW5UaHJlYWRGdW5jdGlvbih2b2lkKik7CiAKLXZvaWQgY2FsbE9uTWFpblRocmVhZChNYWlu
VGhyZWFkRnVuY3Rpb24qLCB2b2lkKiBjb250ZXh0KTsKK0pTX0VYUE9SVERBVEEgdm9pZCBjYWxs
T25NYWluVGhyZWFkKE1haW5UaHJlYWRGdW5jdGlvbiosIHZvaWQqIGNvbnRleHQpOwogCi12b2lk
IHNldE1haW5UaHJlYWRDYWxsYmFja3NQYXVzZWQoYm9vbCBwYXVzZWQpOworSlNfRVhQT1JUREFU
QSB2b2lkIHNldE1haW5UaHJlYWRDYWxsYmFja3NQYXVzZWQoYm9vbCBwYXVzZWQpOwogCiAvLyBN
dXN0IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZCAoRGFyd2luIGlzIGFuIGV4Y2VwdGlv
biB0byB0aGlzIHJ1bGUpLgotdm9pZCBpbml0aWFsaXplTWFpblRocmVhZCgpOworSlNfRVhQT1JU
REFUQSB2b2lkIGluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAKIC8vIFRoZXNlIGZ1bmN0aW9ucyBh
cmUgaW50ZXJuYWwgdG8gdGhlIGNhbGxPbk1haW5UaHJlYWQgaW1wbGVtZW50YXRpb24uCiB2b2lk
IGluaXRpYWxpemVNYWluVGhyZWFkUGxhdGZvcm0oKTsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRD
b3JlL3d0Zi9SYW5kb21OdW1iZXIuaCBiL0phdmFTY3JpcHRDb3JlL3d0Zi9SYW5kb21OdW1iZXIu
aAppbmRleCBmZTE2ODdjLi5jZjA4MWE3IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS93dGYv
UmFuZG9tTnVtYmVyLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvd3RmL1JhbmRvbU51bWJlci5oCkBA
IC0zMCwxMiArMzAsMTIgQEAgbmFtZXNwYWNlIFdURiB7CiAKICAgICAvLyBSZXR1cm5zIGEgcHNl
dWRvLXJhbmRvbSBudW1iZXIgaW4gdGhlIHJhbmdlIFswLCAxKSwgYXR0ZW1wdHMgdG8gYmUKICAg
ICAvLyBjcnlwdG9ncmFwaGljYWxseSBzZWN1cmUgaWYgcG9zc2libGUgb24gdGhlIHRhcmdldCBw
bGF0Zm9ybQotICAgIGRvdWJsZSByYW5kb21OdW1iZXIoKTsKKyAgICBKU19FWFBPUlREQVRBIGRv
dWJsZSByYW5kb21OdW1iZXIoKTsKIAogICAgIC8vIFJldHVybnMgYSBwc2V1ZG8tcmFuZG9tIG51
bWJlciBpbiB0aGUgcmFuZ2UgWzAsIDEpLCBhdHRlbXB0cyB0bwogICAgIC8vIHByb2R1Y2UgYSBy
ZWFzb25hYmxlICJyYW5kb20iIG51bWJlciBmYXN0LgogICAgIC8vIFdlIG9ubHkgbmVlZCB0aGlz
IGJlY2F1c2UgcmFuZF9zIGlzIHNvIHNsb3cgb24gd2luZG93cy4KLSAgICBkb3VibGUgd2Vha1Jh
bmRvbU51bWJlcigpOworICAgIEpTX0VYUE9SVERBVEEgZG91YmxlIHdlYWtSYW5kb21OdW1iZXIo
KTsKIAogfQogCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nLmggYi9K
YXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nLmgKaW5kZXggNjU3ODE1MS4uYjVmZTQwYSAxMDA2
NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZy5oCisrKyBiL0phdmFTY3JpcHRD
b3JlL3d0Zi9UaHJlYWRpbmcuaApAQCAtMTEwLDE5ICsxMTAsMTkgQEAgdHlwZWRlZiB2b2lkKiAo
KlRocmVhZEZ1bmN0aW9uKSh2b2lkKiBhcmd1bWVudCk7CiAKIC8vIFJldHVybnMgMCBpZiB0aHJl
YWQgY3JlYXRpb24gZmFpbGVkLgogLy8gVGhlIHRocmVhZCBuYW1lIG11c3QgYmUgYSBsaXRlcmFs
IHNpbmNlIG9uIHNvbWUgcGxhdGZvcm1zIGl0J3MgcGFzc2VkIGluIHRvIHRoZSB0aHJlYWQuCi1U
aHJlYWRJZGVudGlmaWVyIGNyZWF0ZVRocmVhZChUaHJlYWRGdW5jdGlvbiwgdm9pZCosIGNvbnN0
IGNoYXIqIHRocmVhZE5hbWUpOworSlNfRVhQT1JUREFUQSBUaHJlYWRJZGVudGlmaWVyIGNyZWF0
ZVRocmVhZChUaHJlYWRGdW5jdGlvbiwgdm9pZCosIGNvbnN0IGNoYXIqIHRocmVhZE5hbWUpOwog
CiAvLyBJbnRlcm5hbCBwbGF0Zm9ybS1zcGVjaWZpYyBjcmVhdGVUaHJlYWQgaW1wbGVtZW50YXRp
b24uCi1UaHJlYWRJZGVudGlmaWVyIGNyZWF0ZVRocmVhZEludGVybmFsKFRocmVhZEZ1bmN0aW9u
LCB2b2lkKiwgY29uc3QgY2hhciogdGhyZWFkTmFtZSk7CitKU19FWFBPUlREQVRBIFRocmVhZElk
ZW50aWZpZXIgY3JlYXRlVGhyZWFkSW50ZXJuYWwoVGhyZWFkRnVuY3Rpb24sIHZvaWQqLCBjb25z
dCBjaGFyKiB0aHJlYWROYW1lKTsKIAogLy8gQ2FsbGVkIGluIHRoZSB0aHJlYWQgZHVyaW5nIGlu
aXRpYWxpemF0aW9uLgogLy8gSGVscGZ1bCBmb3IgcGxhdGZvcm1zIHdoZXJlIHRoZSB0aHJlYWQg
bmFtZSBtdXN0IGJlIHNldCBmcm9tIHdpdGhpbiB0aGUgdGhyZWFkLgotdm9pZCBzZXRUaHJlYWRO
YW1lSW50ZXJuYWwoY29uc3QgY2hhciogdGhyZWFkTmFtZSk7CitKU19FWFBPUlREQVRBIHZvaWQg
c2V0VGhyZWFkTmFtZUludGVybmFsKGNvbnN0IGNoYXIqIHRocmVhZE5hbWUpOwogCi1UaHJlYWRJ
ZGVudGlmaWVyIGN1cnJlbnRUaHJlYWQoKTsKLWJvb2wgaXNNYWluVGhyZWFkKCk7Ci1pbnQgd2Fp
dEZvclRocmVhZENvbXBsZXRpb24oVGhyZWFkSWRlbnRpZmllciwgdm9pZCoqKTsKLXZvaWQgZGV0
YWNoVGhyZWFkKFRocmVhZElkZW50aWZpZXIpOworSlNfRVhQT1JUREFUQSBUaHJlYWRJZGVudGlm
aWVyIGN1cnJlbnRUaHJlYWQoKTsKK0pTX0VYUE9SVERBVEEgYm9vbCBpc01haW5UaHJlYWQoKTsK
K0pTX0VYUE9SVERBVEEgaW50IHdhaXRGb3JUaHJlYWRDb21wbGV0aW9uKFRocmVhZElkZW50aWZp
ZXIsIHZvaWQqKik7CitKU19FWFBPUlREQVRBIHZvaWQgZGV0YWNoVGhyZWFkKFRocmVhZElkZW50
aWZpZXIpOwogCiAjaWYgVVNFKFBUSFJFQURTKQogdHlwZWRlZiBwdGhyZWFkX211dGV4X3QgUGxh
dGZvcm1NdXRleDsKQEAgLTE1OSw3ICsxNTksNyBAQCB0eXBlZGVmIHZvaWQqIFBsYXRmb3JtUmVh
ZFdyaXRlTG9jazsKIHR5cGVkZWYgdm9pZCogUGxhdGZvcm1Db25kaXRpb247CiAjZW5kaWYKICAg
ICAKLWNsYXNzIE11dGV4IDogcHVibGljIE5vbmNvcHlhYmxlIHsKK2NsYXNzIEpTX0VYUE9SVERB
VEEgTXV0ZXggOiBwdWJsaWMgTm9uY29weWFibGUgewogcHVibGljOgogICAgIE11dGV4KCk7CiAg
ICAgfk11dGV4KCk7CkBAIC0xNzYsNyArMTc2LDcgQEAgcHJpdmF0ZToKIAogdHlwZWRlZiBMb2Nr
ZXI8TXV0ZXg+IE11dGV4TG9ja2VyOwogCi1jbGFzcyBSZWFkV3JpdGVMb2NrIDogcHVibGljIE5v
bmNvcHlhYmxlIHsKK2NsYXNzIEpTX0VYUE9SVERBVEEgUmVhZFdyaXRlTG9jayA6IHB1YmxpYyBO
b25jb3B5YWJsZSB7CiBwdWJsaWM6CiAgICAgUmVhZFdyaXRlTG9jaygpOwogICAgIH5SZWFkV3Jp
dGVMb2NrKCk7CkBAIC0zMTAsMTAgKzMxMCwxMCBAQCBwdWJsaWM6CiAKIC8vIFRoaXMgZnVuY3Rp
b24gbXVzdCBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQuIEl0IGlzIHNhZmUgdG8gY2Fs
bCBpdCByZXBlYXRlZGx5LgogLy8gRGFyd2luIGlzIGFuIGV4Y2VwdGlvbiB0byB0aGlzIHJ1bGU6
IGl0IGlzIE9LIHRvIGNhbGwgaXQgZnJvbSBhbnkgdGhyZWFkLCB0aGUgb25seSByZXF1aXJlbWVu
dCBpcyB0aGF0IHRoZSBjYWxscyBhcmUgbm90IHJlZW50cmFudC4KLXZvaWQgaW5pdGlhbGl6ZVRo
cmVhZGluZygpOworSlNfRVhQT1JUREFUQSB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKTsKIAot
dm9pZCBsb2NrQXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljTXV0ZXgoKTsKLXZvaWQgdW5sb2Nr
QXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljTXV0ZXgoKTsKK0pTX0VYUE9SVERBVEEgdm9pZCBs
b2NrQXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljTXV0ZXgoKTsKK0pTX0VYUE9SVERBVEEgdm9p
ZCB1bmxvY2tBdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleCgpOwogCiB9IC8vIG5hbWVz
cGFjZSBXVEYKIApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvd3RmL2R0b2EuaCBiL0phdmFT
Y3JpcHRDb3JlL3d0Zi9kdG9hLmgKaW5kZXggY2JlYzdjNy4uY2U2MjgzOCAxMDA2NDQKLS0tIGEv
SmF2YVNjcmlwdENvcmUvd3RmL2R0b2EuaAorKysgYi9KYXZhU2NyaXB0Q29yZS93dGYvZHRvYS5o
CkBAIC0yOSw4ICsyOSw4IEBAIG5hbWVzcGFjZSBXVEYgewogCiAgICAgZXh0ZXJuIFdURjo6TXV0
ZXgqIHNfZHRvYVA1TXV0ZXg7CiAKLSAgICBkb3VibGUgc3RydG9kKGNvbnN0IGNoYXIqIHMwMCwg
Y2hhcioqIHNlKTsKLSAgICB2b2lkIGR0b2EoY2hhciogcmVzdWx0LCBkb3VibGUgZCwgaW50IG5k
aWdpdHMsIGludCogZGVjcHQsIGludCogc2lnbiwgY2hhcioqIHJ2ZSk7CisgICAgSlNfRVhQT1JU
REFUQSBkb3VibGUgc3RydG9kKGNvbnN0IGNoYXIqIHMwMCwgY2hhcioqIHNlKTsKKyAgICBKU19F
WFBPUlREQVRBIHZvaWQgZHRvYShjaGFyKiByZXN1bHQsIGRvdWJsZSBkLCBpbnQgbmRpZ2l0cywg
aW50KiBkZWNwdCwgaW50KiBzaWduLCBjaGFyKiogcnZlKTsKIAogfSAvLyBuYW1lc3BhY2UgV1RG
CiAKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3d0Zi91bmljb2RlL1VURjguY3BwIGIvSmF2
YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUvVVRGOC5jcHAKaW5kZXggOWU3MTNmZS4uMjFkNTg1NiAx
MDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUvVVRGOC5jcHAKKysrIGIvSmF2
YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUvVVRGOC5jcHAKQEAgLTIzLDYgKzIzLDcgQEAKICAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAogICovCiAKKyNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJVVEY4Lmgi
CiAKIG5hbWVzcGFjZSBXVEYgewpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvd3RmL3VuaWNv
ZGUvVVRGOC5oIGIvSmF2YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUvVVRGOC5oCmluZGV4IGE1ZWQ5
M2UuLmRlMjYxMmEgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3d0Zi91bmljb2RlL1VURjgu
aAorKysgYi9KYXZhU2NyaXB0Q29yZS93dGYvdW5pY29kZS9VVEY4LmgKQEAgLTM0LDE0ICszNCwx
NCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAvLyBHaXZlbiBhIGZpcnN0IGJ5dGUsIGdpdmVzIHRo
ZSBsZW5ndGggb2YgdGhlIFVURi04IHNlcXVlbmNlIGl0IGJlZ2lucy4KICAgICAvLyBSZXR1cm5z
IDAgZm9yIGJ5dGVzIHRoYXQgYXJlIG5vdCBsZWdhbCBzdGFydHMgb2YgVVRGLTggc2VxdWVuY2Vz
LgogICAgIC8vIE9ubHkgYWxsb3dzIHNlcXVlbmNlcyBvZiB1cCB0byA0IGJ5dGVzLCBzaW5jZSB0
aGF0IHdvcmtzIGZvciBhbGwgVW5pY29kZSBjaGFyYWN0ZXJzIChVLTAwMDAwMDAwIHRvIFUtMDAx
MEZGRkYpLgotICAgIGludCBVVEY4U2VxdWVuY2VMZW5ndGgoY2hhcik7CisgICAgSlNfRVhQT1JU
REFUQSBpbnQgVVRGOFNlcXVlbmNlTGVuZ3RoKGNoYXIpOwogCiAgICAgLy8gVGFrZXMgYSBudWxs
LXRlcm1pbmF0ZWQgQy1zdHlsZSBzdHJpbmcgd2l0aCBhIFVURi04IHNlcXVlbmNlIGluIGl0IGFu
ZCBjb252ZXJ0cyBpdCB0byBhIGNoYXJhY3Rlci4KICAgICAvLyBPbmx5IGFsbG93cyBVbmljb2Rl
IGNoYXJhY3RlcnMgKFUtMDAwMDAwMDAgdG8gVS0wMDEwRkZGRikuCiAgICAgLy8gUmV0dXJucyAt
MSBpZiB0aGUgc2VxdWVuY2UgaXMgbm90IHZhbGlkIChpbmNsdWRpbmcgcHJlc2VuY2Ugb2YgZXh0
cmEgYnl0ZXMpLgotICAgIGludCBkZWNvZGVVVEY4U2VxdWVuY2UoY29uc3QgY2hhciopOworICAg
IEpTX0VYUE9SVERBVEEgaW50IGRlY29kZVVURjhTZXF1ZW5jZShjb25zdCBjaGFyKik7CiAKLSAg
ICB0eXBlZGVmIGVudW0geworICAgIHR5cGVkZWYgZW51bSBKU19FWFBPUlREQVRBIHsKICAgICAg
ICAgICAgIGNvbnZlcnNpb25PSywgICAgICAgLy8gY29udmVyc2lvbiBzdWNjZXNzZnVsCiAgICAg
ICAgICAgICBzb3VyY2VFeGhhdXN0ZWQsICAgIC8vIHBhcnRpYWwgY2hhcmFjdGVyIGluIHNvdXJj
ZSwgYnV0IGhpdCBlbmQKICAgICAgICAgICAgIHRhcmdldEV4aGF1c3RlZCwgICAgLy8gaW5zdWZm
LiByb29tIGluIHRhcmdldCBmb3IgY29udmVyc2lvbgpAQCAtNjIsMTIgKzYyLDEyIEBAIG5hbWVz
cGFjZSBXVEYgewogICAgIC8vIHRvIHRoZSByZXBsYWNlbWVudCBjaGFyYWN0ZXI7IG90aGVyd2lz
ZSAod2hlbiB0aGUgZmxhZyBpcyBzZXQgdG8gc3RyaWN0KQogICAgIC8vIHRoZXkgY29uc3RpdHV0
ZSBhbiBlcnJvci4KIAotICAgIENvbnZlcnNpb25SZXN1bHQgY29udmVydFVURjhUb1VURjE2KAot
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiogc291cmNlU3RhcnQsIGNvbnN0IGNoYXIq
IHNvdXJjZUVuZCwgCisgICAgSlNfRVhQT1JUREFUQSBDb252ZXJzaW9uUmVzdWx0IGNvbnZlcnRV
VEY4VG9VVEYxNigKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhcioqIHNvdXJjZVN0YXJ0
LCBjb25zdCBjaGFyKiBzb3VyY2VFbmQsCiAgICAgICAgICAgICAgICAgICAgIFVDaGFyKiogdGFy
Z2V0U3RhcnQsIFVDaGFyKiB0YXJnZXRFbmQsIGJvb2wgc3RyaWN0ID0gdHJ1ZSk7CiAKLSAgICBD
b252ZXJzaW9uUmVzdWx0IGNvbnZlcnRVVEYxNlRvVVRGOCgKLSAgICAgICAgICAgICAgICAgICAg
Y29uc3QgVUNoYXIqKiBzb3VyY2VTdGFydCwgY29uc3QgVUNoYXIqIHNvdXJjZUVuZCwgCisgICAg
SlNfRVhQT1JUREFUQSBDb252ZXJzaW9uUmVzdWx0IGNvbnZlcnRVVEYxNlRvVVRGOCgKKyAgICAg
ICAgICAgICAgICAgICAgY29uc3QgVUNoYXIqKiBzb3VyY2VTdGFydCwgY29uc3QgVUNoYXIqIHNv
dXJjZUVuZCwKICAgICAgICAgICAgICAgICAgICAgY2hhcioqIHRhcmdldFN0YXJ0LCBjaGFyKiB0
YXJnZXRFbmQsIGJvb2wgc3RyaWN0ID0gdHJ1ZSk7CiAgIH0KIH0KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDY3MzQ1YS4uZDZlMDYwOCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxOSBAQAorMjAwOS0wNy0yNCAgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4gIDxr
ZW5uZXRoLmNocmlzdGlhbnNlbkBvcGVuYm9zc2Eub3JnPiwgU2ltb24gSGF1c21hbm4gIDxzaW1v
bi5oYXVzbWFubkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgRGlzYWJsZSBib2d1cyBETEwgbGlua2FnZSB3YXJuaW5ncyB3aXRoIE1T
VkMuCisKKyAgICAgICAgRGVmaW5lIEpTX0VYUE9SVERBVEEgYW5kIFdFQktJVF9FWFBPUlREQVRB
IGZvciBnY2MuCisKKyAgICAgICAgTGluayBRVE1vdmllV2luIGFnYWluc3QgSmF2YVNjcmlwdENv
cmUgZm9yIHRoZSBleHBvcnRlZAorICAgICAgICBXVEYgc3ltYm9scy4KKworICAgICAgICAqIFdl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOiBEaXNhYmxlIGJvZ3VzIERMTCBsaW5rYWdlIHdh
cm5pbmcuCisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovUVRNb3ZpZVdpbi52Y3Byb2o6IExpbmsg
UVRNb3ZpZVdpbiBhZ2FpbnN0IEpTQyBkbGwsCisgICAgICAgIGZvciB0aGUgZXhwb3J0ZWQgV1RG
IHN5bWJvbHMuCisgICAgICAgICogY29uZmlnLmg6IFR3ZWFrIGZvciBnY2MuCisKIDIwMDktMDct
MjMgIEFudG9uIE11aGluICA8YW50b25tQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBBZGFtIEJhcnRoLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9RVE1v
dmllV2luLnZjcHJvaiBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovUVRNb3ZpZVdpbi52Y3Byb2oK
aW5kZXggNTkzODU1Yi4uZTVmODViMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9RVE1vdmllV2luLnZjcHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1FUTW92aWVX
aW4udmNwcm9qCkBAIC01NSw3ICs1NSw3IEBACiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJW
Q0xpbmtlclRvb2wiCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iUVRNTENsaWVudC5saWIg
V1RGJChXZWJLaXRDb25maWdTdWZmaXgpLmxpYiB3aW5tbS5saWIgcHRocmVhZFZDMiQoTGlicmFy
eUNvbmZpZ1N1ZmZpeCkubGliIE1zaW1nMzIubGliIHVzZXIzMi5saWIgYWR2YXBpMzIubGliIgor
CQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IlFUTUxDbGllbnQubGliIEphdmFTY3JpcHRDb3Jl
JChXZWJLaXRETExDb25maWdTdWZmaXgpLmxpYiB3aW5tbS5saWIgcHRocmVhZFZDMiQoTGlicmFy
eUNvbmZpZ1N1ZmZpeCkubGliIE1zaW1nMzIubGliIHVzZXIzMi5saWIgYWR2YXBpMzIubGliIgog
CQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKSQoV2ViS2l0Q29uZmlnU3Vm
Zml4KS5kbGwiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iJnF1b3Q7JChXZWJL
aXRMaWJyYXJpZXNEaXIpXFF1aWNrVGltZSBTREtcTGlicmFyaWVzJnF1b3Q7OyZxdW90OyQoUHJv
Z3JhbUZpbGVzKVxRdWlja1RpbWUgU0RLXExpYnJhcmllcyZxdW90OyIKIAkJCQlJZ25vcmVEZWZh
dWx0TGlicmFyeU5hbWVzPSJMSUJDTVQiCkBAIC0xMjgsNyArMTI4LDcgQEAKIAkJCS8+CiAJCQk8
VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVz
PSJRVE1MQ2xpZW50LmxpYiBXVEYkKFdlYktpdENvbmZpZ1N1ZmZpeCkubGliIHdpbm1tLmxpYiBw
dGhyZWFkVkMyJChMaWJyYXJ5Q29uZmlnU3VmZml4KS5saWIgTXNpbWczMi5saWIgdXNlcjMyLmxp
YiBhZHZhcGkzMi5saWIiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iUVRNTENsaWVudC5s
aWIgSmF2YVNjcmlwdENvcmUkKFdlYktpdERMTENvbmZpZ1N1ZmZpeCkubGliIHdpbm1tLmxpYiBw
dGhyZWFkVkMyJChMaWJyYXJ5Q29uZmlnU3VmZml4KS5saWIgTXNpbWczMi5saWIgdXNlcjMyLmxp
YiBhZHZhcGkzMi5saWIiCiAJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUp
JChXZWJLaXRDb25maWdTdWZmaXgpLmRsbCIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9y
aWVzPSImcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcUXVpY2tUaW1lIFNES1xMaWJyYXJpZXMm
cXVvdDs7JnF1b3Q7JChQcm9ncmFtRmlsZXMpXFF1aWNrVGltZSBTREtcTGlicmFyaWVzJnF1b3Q7
IgogCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9IkxJQkNNVCIKQEAgLTIwMCw3ICsyMDAs
NyBAQAogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgotCQkJCUFkZGl0
aW9uYWxEZXBlbmRlbmNpZXM9IlFUTUxDbGllbnQubGliIFdURiQoV2ViS2l0Q29uZmlnU3VmZml4
KS5saWIgd2lubW0ubGliIHB0aHJlYWRWQzIkKExpYnJhcnlDb25maWdTdWZmaXgpLmxpYiBNc2lt
ZzMyLmxpYiB1c2VyMzIubGliIGFkdmFwaTMyLmxpYiIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5j
aWVzPSJRVE1MQ2xpZW50LmxpYiBKYXZhU2NyaXB0Q29yZSQoV2ViS2l0RExMQ29uZmlnU3VmZml4
KS5saWIgd2lubW0ubGliIHB0aHJlYWRWQzIkKExpYnJhcnlDb25maWdTdWZmaXgpLmxpYiBNc2lt
ZzMyLmxpYiB1c2VyMzIubGliIGFkdmFwaTMyLmxpYiIKIAkJCQlPdXRwdXRGaWxlPSIkKE91dERp
cilcJChQcm9qZWN0TmFtZSkkKFdlYktpdENvbmZpZ1N1ZmZpeCkuZGxsIgogCQkJCUFkZGl0aW9u
YWxMaWJyYXJ5RGlyZWN0b3JpZXM9IiZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxRdWlja1Rp
bWUgU0RLXExpYnJhcmllcyZxdW90OzsmcXVvdDskKFByb2dyYW1GaWxlcylcUXVpY2tUaW1lIFNE
S1xMaWJyYXJpZXMmcXVvdDsiCiAJCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0iTElCQ01U
IgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggOTg0Y2Q1OS4uYjY2ZDE5
MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysg
Yi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0zOSw2ICszOSw3IEBA
CiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KIAkJCQlBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCURpc2FibGVTcGVjaWZpY1dhcm5pbmdzPSI0MjUx
OzQyNzMiDQogCQkJCUZvcmNlZEluY2x1ZGVGaWxlcz0iIg0KIAkJCS8+DQogCQkJPFRvb2wNCkBA
IC05NSw2ICs5Niw3IEBACiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0K
IAkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCURpc2FibGVTcGVjaWZp
Y1dhcm5pbmdzPSI0MjUxOzQyNzMiDQogCQkJCUZvcmNlZEluY2x1ZGVGaWxlcz0iIg0KIAkJCS8+
DQogCQkJPFRvb2wNCkBAIC0xNTAsNiArMTUyLDcgQEAKIAkJCTxUb29sDQogCQkJCU5hbWU9IlZD
Q0xDb21waWxlclRvb2wiDQogCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCisJ
CQkJRGlzYWJsZVNwZWNpZmljV2FybmluZ3M9IjQyNTE7NDI3MyINCiAJCQkJRm9yY2VkSW5jbHVk
ZUZpbGVzPSIiDQogCQkJLz4NCiAJCQk8VG9vbA0KQEAgLTIwNSw2ICsyMDgsNyBAQAogCQkJPFRv
b2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCiAJCQkJQWRkaXRpb25hbEluY2x1ZGVE
aXJlY3Rvcmllcz0iIg0KKwkJCQlEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncz0iNDI1MTs0MjczIg0K
IAkJCQlGb3JjZWRJbmNsdWRlRmlsZXM9IiINCiAJCQkvPg0KIAkJCTxUb29sDQpAQCAtMjYxLDYg
KzI2NSw3IEBACiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KIAkJCQlB
ZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQorCQkJCURpc2FibGVTcGVjaWZpY1dhcm5p
bmdzPSI0MjUxOzQyNzMiDQogCQkJCUZvcmNlZEluY2x1ZGVGaWxlcz0iIg0KIAkJCS8+DQogCQkJ
PFRvb2wNCmRpZmYgLS1naXQgYS9XZWJDb3JlL2NvbmZpZy5oIGIvV2ViQ29yZS9jb25maWcuaApp
bmRleCA0MTFkZGIxLi5kMzViYzhhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2NvbmZpZy5oCisrKyBi
L1dlYkNvcmUvY29uZmlnLmgKQEAgLTI0LDIwICsyNCwyNSBAQAogCiAjaW5jbHVkZSA8d3RmL1Bs
YXRmb3JtLmg+CiAKLSNpZiBQTEFURk9STShXSU5fT1MpICYmICFkZWZpbmVkKEJVSUxESU5HX1dY
X18pICYmICFDT01QSUxFUihHQ0MpCi0jaWYgZGVmaW5lZChCVUlMRElOR19KYXZhU2NyaXB0Q29y
ZSkgfHwgZGVmaW5lZChCVUlMRElOR19XVEYpCi0jZGVmaW5lIEpTX0VYUE9SVERBVEEgX19kZWNs
c3BlYyhkbGxleHBvcnQpCisjdW5kZWYgSlNfRVhQT1JUREFUQQorI3VuZGVmIFdFQktJVF9FWFBP
UlREQVRBCisjaWYgQ09NUElMRVIoR0NDKQorICAgICNkZWZpbmUgSlNfRVhQT1JUREFUQSBfX2F0
dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKQorICAgICNkZWZpbmUgV0VCS0lUX0VY
UE9SVERBVEEgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkKKyNlbGlmIFBM
QVRGT1JNKFdJTl9PUykgJiYgIWRlZmluZWQoQlVJTERJTkdfV1hfXykKKyAgICAjaWYgZGVmaW5l
ZChCVUlMRElOR19KYXZhU2NyaXB0Q29yZSkgfHwgZGVmaW5lZChCVUlMRElOR19XVEYpCisgICAg
ICAgICNkZWZpbmUgSlNfRVhQT1JUREFUQSBfX2RlY2xzcGVjKGRsbGV4cG9ydCkKKyAgICAjZWxz
ZQorICAgICAgICAjZGVmaW5lIEpTX0VYUE9SVERBVEEgX19kZWNsc3BlYyhkbGxpbXBvcnQpCisg
ICAgI2VuZGlmCisgICAgI2lmIGRlZmluZWQoQlVJTERJTkdfV2ViQ29yZSkgfHwgZGVmaW5lZChC
VUlMRElOR19XZWJLaXQpCisgICAgICAgICNkZWZpbmUgV0VCS0lUX0VYUE9SVERBVEEgX19kZWNs
c3BlYyhkbGxleHBvcnQpCisgICAgI2Vsc2UKKyAgICAgICAgI2RlZmluZSBXRUJLSVRfRVhQT1JU
REFUQSBfX2RlY2xzcGVjKGRsbGltcG9ydCkKKyAgICAjZW5kaWYKICNlbHNlCi0jZGVmaW5lIEpT
X0VYUE9SVERBVEEgX19kZWNsc3BlYyhkbGxpbXBvcnQpCi0jZW5kaWYKLSNpZiBkZWZpbmVkKEJV
SUxESU5HX1dlYkNvcmUpIHx8IGRlZmluZWQoQlVJTERJTkdfV2ViS2l0KQotI2RlZmluZSBXRUJL
SVRfRVhQT1JUREFUQSBfX2RlY2xzcGVjKGRsbGV4cG9ydCkKLSNlbHNlCi0jZGVmaW5lIFdFQktJ
VF9FWFBPUlREQVRBIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQotI2VuZGlmCi0jZWxzZQotI2RlZmlu
ZSBKU19FWFBPUlREQVRBCi0jZGVmaW5lIFdFQktJVF9FWFBPUlREQVRBCisgICAgI2RlZmluZSBK
U19FWFBPUlREQVRBCisgICAgI2RlZmluZSBXRUJLSVRfRVhQT1JUREFUQQogI2VuZGlmCiAKICNk
ZWZpbmUgTU9CSUxFIDAKZGlmZiAtLWdpdCBhL1dlYktpdC9jZi9DaGFuZ2VMb2cgYi9XZWJLaXQv
Y2YvQ2hhbmdlTG9nCmluZGV4IDI3Y2FmMWMuLjc5NTJhYzUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9j
Zi9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2NmL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisy
MDA5LTA3LTI0ICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggY29tcGls
YXRpb24gb24gdGhlIE1hYywgZG9uJ3QgcmUtZGVmaW5lIEpTX0VYUE9SVERBVEEgZW1wdHkgYnV0
CisgICAgICAgIHJlLXVzZSB0aGUgZGVmaW5pdGlvbiBmcm9tIFdlYktpdFByZWZpeC5oLgorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwOgorCiAyMDA5
LTA0LTIwICBTdGV2ZSBGYWxrZW5idXJnICA8c2ZhbGtlbkBhcHBsZS5jb20+CiAKICAgICAgICAg
U2VwYXJhdGUgSmF2YVNjcmlwdENvcmUuZGxsIGZyb20gV2ViS2l0LmRsbC4KZGlmZiAtLWdpdCBh
L1dlYktpdC9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAgYi9XZWJL
aXQvY2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCmluZGV4IDYwMGQ1
OGQuLjliODliOGEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnRDRi5jcHAKKysrIGIvV2ViS2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckNsaWVudENGLmNwcApAQCAtNDMsOCArNDMsNiBAQAogI2Vsc2UKICNkZWZpbmUgSlNfRVhQ
T1JUREFUQSBfX2RlY2xzcGVjKGRsbGltcG9ydCkKICNlbmRpZgotI2Vsc2UKLSNkZWZpbmUgSlNf
RVhQT1JUREFUQQogI2VuZGlmCiAKICNpbmNsdWRlICJXZWJJbnNwZWN0b3JDbGllbnQuaCIKZGlm
ZiAtLWdpdCBhL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5k
ZXggOTlkYTgyZS4uNjIyNjNiNyAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysr
IGIvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAwOS0wNy0yNCAgU2lt
b24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRHVwbGljYXRlIHRoZSBKU19FWFBPUlRE
QVRBIGFuZCBXRUJLSVRfRVhQT1JUREFUQSBkZWZpbml0aW9uIGZyb20KKyAgICAgICAgV2ViQ29y
ZS9jb25maWcuaCB0byBmaXggY29tcGlsYXRpb24gYWdhaW5zdCBKYXZhU2NyaXB0Q29yZSBhbmQK
KyAgICAgICAgV2ViQ29yZSBvbiB0aGUgTWFjLgorCisgICAgICAgICogV2ViS2l0UHJlZml4Lmg6
CisKIDIwMDktMDctMjcgIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvV2ViS2l0UHJl
Zml4LmggYi9XZWJLaXQvbWFjL1dlYktpdFByZWZpeC5oCmluZGV4IDBlZGVjMDYuLmY4MjhjMjIg
MTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvV2ViS2l0UHJlZml4LmgKKysrIGIvV2ViS2l0L21hYy9X
ZWJLaXRQcmVmaXguaApAQCAtODMsNiArODMsMjcgQEAgdHlwZWRlZiBmbG9hdCBDR0Zsb2F0Owog
I2RlZmluZSBXVEZfVVNFX0pTQyAxCiAjZGVmaW5lIFdURl9VU0VfVjggMAogCisjdW5kZWYgSlNf
RVhQT1JUREFUQQorI3VuZGVmIFdFQktJVF9FWFBPUlREQVRBCisjaWYgQ09NUElMRVIoR0NDKQor
ICAgICNkZWZpbmUgSlNfRVhQT1JUREFUQSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZh
dWx0IikpKQorICAgICNkZWZpbmUgV0VCS0lUX0VYUE9SVERBVEEgX19hdHRyaWJ1dGVfXygodmlz
aWJpbGl0eSgiZGVmYXVsdCIpKSkKKyNlbGlmIFBMQVRGT1JNKFdJTl9PUykgJiYgIWRlZmluZWQo
QlVJTERJTkdfV1hfXykgJiYgIWRlZmluZWQoQlVJTERJTkdfUVRNb3ZpZVdpbikKKyAgICAjaWYg
ZGVmaW5lZChCVUlMRElOR19KYXZhU2NyaXB0Q29yZSkgfHwgZGVmaW5lZChCVUlMRElOR19XVEYp
CisgICAgICAgICNkZWZpbmUgSlNfRVhQT1JUREFUQSBfX2RlY2xzcGVjKGRsbGV4cG9ydCkKKyAg
ICAjZWxzZQorICAgICAgICAjZGVmaW5lIEpTX0VYUE9SVERBVEEgX19kZWNsc3BlYyhkbGxpbXBv
cnQpCisgICAgI2VuZGlmCisgICAgI2lmIGRlZmluZWQoQlVJTERJTkdfV2ViQ29yZSkgfHwgZGVm
aW5lZChCVUlMRElOR19XZWJLaXQpCisgICAgICAgICNkZWZpbmUgV0VCS0lUX0VYUE9SVERBVEEg
X19kZWNsc3BlYyhkbGxleHBvcnQpCisgICAgI2Vsc2UKKyAgICAgICAgI2RlZmluZSBXRUJLSVRf
RVhQT1JUREFUQSBfX2RlY2xzcGVjKGRsbGltcG9ydCkKKyAgICAjZW5kaWYKKyNlbHNlCisgICAg
I2RlZmluZSBKU19FWFBPUlREQVRBCisgICAgI2RlZmluZSBXRUJLSVRfRVhQT1JUREFUQQorI2Vu
ZGlmCisKICNpZmRlZiBfX2NwbHVzcGx1cwogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAj
ZW5kaWYKQEAgLTkyLDYgKzExMywzIEBAIHR5cGVkZWYgZmxvYXQgQ0dGbG9hdDsKIC8qIFdvcmsg
YXJvdW5kIGJ1ZyB3aXRoIEMrKyBsaWJyYXJ5IHRoYXQgc2NyZXdzIHVwIE9iamVjdGl2ZS1DKysg
d2hlbiBleGNlcHRpb24gc3VwcG9ydCBpcyBkaXNhYmxlZC4gKi8KICN1bmRlZiB0cnkKICN1bmRl
ZiBjYXRjaAotCi0jZGVmaW5lIEpTX0VYUE9SVERBVEEKLSNkZWZpbmUgV0VCS0lUX0VYUE9SVERB
VEEKZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvV2ViS2l0L3dpbi9DaGFuZ2VM
b2cKaW5kZXggMTk2MzliYy4uMDFjODI3NiAxMDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAwOS0wNy0y
NCAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IGNvbXBpbGF0aW9uLCBk
aXNhYmxlIGJvZ3VzIERMTCBsaW5rYWdlIHdhcm5pbmdzIGFuZAorICAgICAgICBkZWZpbmUgSlNf
RVhQT1JUREFUQSBsaWtlIGluIEphdmFTY3JpcHRDb3JlL2NvbmZpZy5oLCB0bworICAgICAgICBm
aXggc3ltYm9sIGltcG9ydCBmb3JtIEphdmFTY3JpcHRDb3JlLgorCisgICAgICAgICogV2ViS2l0
LnZjcHJvai9XZWJLaXQudmNwcm9qOiBUd2Vhay4KKyAgICAgICAgKiBXZWJLaXRETEwuaDogRGVm
aW5lIEpTX0VYUE9SVERBVEEuCisKIDIwMDktMDctMjcgIEJyaWFuIFdlaW5zdGVpbiAgPGJ3ZWlu
c3RlaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEJ1aWxkIGZpeCBmb3IgV2luZG93cy4KZGlmZiAt
LWdpdCBhL1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXQudmNwcm9qIGIvV2ViS2l0L3dp
bi9XZWJLaXQudmNwcm9qL1dlYktpdC52Y3Byb2oKaW5kZXggM2JhZjU2Yy4uMDI5NjEzZCAxMDA2
NDQKLS0tIGEvV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdC52Y3Byb2oKKysrIGIvV2Vi
S2l0L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdC52Y3Byb2oKQEAgLTQ0LDcgKzQ0LDcgQEAKIAkJ
CQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiINCiAJCQkJUHJlY29tcGlsZWRIZWFkZXJUaHJvdWdo
PSJXZWJLaXRQcmVmaXguaCINCiAJCQkJRm9yY2VkSW5jbHVkZUZpbGVzPSJXZWJLaXRQcmVmaXgu
aCINCi0JCQkJRGlzYWJsZVNwZWNpZmljV2FybmluZ3M9IjQ4MTkiDQorCQkJCURpc2FibGVTcGVj
aWZpY1dhcm5pbmdzPSI0ODE5OzQyNTE7NDI3MyINCiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5h
bWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KQEAgLTEyMSw3ICsxMjEsNyBAQAog
CQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIg0KIAkJCQlQcmVjb21waWxlZEhlYWRlclRocm91
Z2g9IldlYktpdFByZWZpeC5oIg0KIAkJCQlGb3JjZWRJbmNsdWRlRmlsZXM9IldlYktpdFByZWZp
eC5oIg0KLQkJCQlEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncz0iNDgxOSINCisJCQkJRGlzYWJsZVNw
ZWNpZmljV2FybmluZ3M9IjQ4MTk7NDI1MTs0MjczIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJ
TmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQpAQCAtMTk4LDcgKzE5OCw3IEBA
CiAJCQkJUHJlY29tcGlsZWRIZWFkZXJUaHJvdWdoPSJXZWJLaXRQcmVmaXguaCINCiAJCQkJRGV0
ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJmYWxzZSINCiAJCQkJRm9yY2VkSW5jbHVkZUZp
bGVzPSJXZWJLaXRQcmVmaXguaCINCi0JCQkJRGlzYWJsZVNwZWNpZmljV2FybmluZ3M9IjQ4MTki
DQorCQkJCURpc2FibGVTcGVjaWZpY1dhcm5pbmdzPSI0ODE5OzQyNTE7NDI3MyINCiAJCQkvPg0K
IAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KQEAg
LTI3Niw3ICsyNzYsNyBAQAogCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIg0KIAkJCQlQcmVj
b21waWxlZEhlYWRlclRocm91Z2g9IldlYktpdFByZWZpeC5oIg0KIAkJCQlGb3JjZWRJbmNsdWRl
RmlsZXM9IldlYktpdFByZWZpeC5oIg0KLQkJCQlEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncz0iNDgx
OSINCisJCQkJRGlzYWJsZVNwZWNpZmljV2FybmluZ3M9IjQ4MTk7NDI1MTs0MjczIg0KIAkJCS8+
DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQpA
QCAtMzU2LDcgKzM1Niw3IEBACiAJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiDQogCQkJCVBy
ZWNvbXBpbGVkSGVhZGVyVGhyb3VnaD0iV2ViS2l0UHJlZml4LmgiDQogCQkJCUZvcmNlZEluY2x1
ZGVGaWxlcz0iV2ViS2l0UHJlZml4LmgiDQotCQkJCURpc2FibGVTcGVjaWZpY1dhcm5pbmdzPSI0
ODE5Ig0KKwkJCQlEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncz0iNDgxOTs0MjUxOzQyNzMiDQogCQkJ
Lz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIN
CmRpZmYgLS1naXQgYS9XZWJLaXQvd2luL1dlYktpdERMTC5oIGIvV2ViS2l0L3dpbi9XZWJLaXRE
TEwuaAppbmRleCBkOTQ0YjA3Li4zMTI4ZGZhIDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL1dlYktp
dERMTC5oCisrKyBiL1dlYktpdC93aW4vV2ViS2l0RExMLmgKQEAgLTMwLDYgKzMwLDE2IEBACiAj
ZGVmaW5lIF9IQVNfRVhDRVBUSU9OUyAwCiAjZW5kaWYKIAorI2lmIGRlZmluZWQoV0lOMzIpIHx8
IGRlZmluZWQoX1dJTjMyKQorI2lmIGRlZmluZWQoQlVJTERJTkdfSmF2YVNjcmlwdENvcmUpIHx8
IGRlZmluZWQoQlVJTERJTkdfV1RGKQorI2RlZmluZSBKU19FWFBPUlREQVRBIF9fZGVjbHNwZWMo
ZGxsZXhwb3J0KQorI2Vsc2UKKyNkZWZpbmUgSlNfRVhQT1JUREFUQSBfX2RlY2xzcGVjKGRsbGlt
cG9ydCkKKyNlbmRpZgorI2Vsc2UKKyNkZWZpbmUgSlNfRVhQT1JUREFUQQorI2VuZGlmCisKICNp
bmNsdWRlIDx3aW5zb2NrMi5oPgogI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNpbmNsdWRlIDx3dGYv
SGFzaENvdW50ZWRTZXQuaD4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dl
YktpdFRvb2xzL0NoYW5nZUxvZwppbmRleCA4OWY5MTUxLi4xY2ZhMGVmIDEwMDY0NAotLS0gYS9X
ZWJLaXRUb29scy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTQgQEAKKzIwMDktMDctMjggIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9r
aWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEZpeCBjb21waWxhdGlvbiBvbiB0aGUgTWFjLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
Y29uZmlnLmg6IE1vdmUgRmFzdE1hbGxvYy5oIGluY2x1c2lvbiB1bnRpbCBhZnRlciB0aGUgZGVm
aW5pdGlvbiBvZgorICAgICAgICBKU19FWFBPUlREQVRBLgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL3B0aHJlYWRzL0phdmFTY3JpcHRUaHJlYWRpbmdQdGhyZWFkcy5jcHA6IEluY2x1ZGUgY29u
ZmlnLmggZm9yIHRoZQorICAgICAgICBleHBvcnQgbWFjcm9zLgorCiAyMDA5LTA3LTI3ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTYW0g
V2VpbmlnLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY29uZmlnLmgg
Yi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jb25maWcuaAppbmRleCAwNjNlZWVhLi4xOTlm
NjUyIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jb25maWcuaAorKysg
Yi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jb25maWcuaApAQCAtMjYsMTIgKzI2LDYgQEAK
IAogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogCi0jaWZkZWYgX19jcGx1c3BsdXMKLSN1bmRl
ZiBuZXcKLSN1bmRlZiBkZWxldGUKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2VuZGlm
Ci0KICNpZiBQTEFURk9STShXSU5fT1MpICYmICFDT01QSUxFUihHQ0MpCiAjZGVmaW5lIEpTX0VY
UE9SVERBVEEgX19kZWNsc3BlYyhkbGxpbXBvcnQpCiAjZGVmaW5lIFdFQktJVF9FWFBPUlREQVRB
IF9fZGVjbHNwZWMoZGxsaW1wb3J0KQpAQCAtNDAsNiArMzQsMTIgQEAKICNkZWZpbmUgV0VCS0lU
X0VYUE9SVERBVEEKICNlbmRpZgogCisjaWZkZWYgX19jcGx1c3BsdXMKKyN1bmRlZiBuZXcKKyN1
bmRlZiBkZWxldGUKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorI2VuZGlmCisKICNpZiBQ
TEFURk9STShXSU4pCiAjZGVmaW5lIFdURl9QTEFURk9STV9DRiAxIAogI2lmIGRlZmluZWQoV0lO
X0NBSVJPKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcHRocmVhZHMv
SmF2YVNjcmlwdFRocmVhZGluZ1B0aHJlYWRzLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL3B0aHJlYWRzL0phdmFTY3JpcHRUaHJlYWRpbmdQdGhyZWFkcy5jcHAKaW5kZXggM2FjMjU3
ZC4uMWY1N2I4NCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcHRocmVh
ZHMvSmF2YVNjcmlwdFRocmVhZGluZ1B0aHJlYWRzLmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9wdGhyZWFkcy9KYXZhU2NyaXB0VGhyZWFkaW5nUHRocmVhZHMuY3BwCkBAIC0y
Nyw3ICsyNyw4IEBACiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKICAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KLSAKKwor
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkphdmFTY3JpcHRUaHJlYWRpbmcuaCIKIAog
I2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+Ci0tIAoxLjYuNC5yYzMu
MTIuZ2RmNzNhCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33627</attachid>
            <date>2009-07-28 07:11:17 -0700</date>
            <delta_ts>2009-08-14 05:41:52 -0700</delta_ts>
            <desc>Rebased patch to build JavaScriptCore as shared library with Qt</desc>
            <filename>0002-.patch</filename>
            <type>text/plain</type>
            <size>6079</size>
            <attacher name="Simon Hausmann">hausmann</attacher>
            
              <data encoding="base64">RnJvbSBjNmMyMWU0YmNjOGQyNWNlMTQ4NmVkZTFmZDk0MzQ2ZDRiNzljYTQyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBTaW1vbiBIYXVzbWFubiA8c2ltb24uaGF1c21hbm5Abm9raWEu
Y29tPgpEYXRlOiBGcmksIDI0IEp1bCAyMDA5IDExOjAyOjA5ICswMjAwClN1YmplY3Q6IFtQQVRD
SCAyLzJdIC46CgoyMDA5LTA3LTI0ICBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5l
dGguY2hyaXN0aWFuc2VuQG9wZW5ib3NzYS5vcmc+CgogICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgoKICAgICAgICBCdWlsZCBKYXZhU2NyaXB0Q29yZSBhcyBzaGFyZWQgbGlicmFy
eS4KCiAgICAgICAgKiBXZWJLaXQucHJvOiBSZWN1cnNlIGludG8gSmF2YVNjcmlwdENvcmUgdG8g
YnVpbGQgaXQgYXMgc2hhcmVkCiAgICAgICAgbGlicmFyeS4KCkphdmFTY3JpcHRDb3JlOgoKMjAw
OS0wNy0yNCAgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4gIDxrZW5uZXRoQHdlYmtpdC5vcmc+
LCBTaW1vbiBIYXVzbWFubiA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgoKICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCiAgICAgICAgQ2hhbmdlZCB0aGUgUXQgLnBybyBmaWxl
cyB0byBidWlsZCBKU0MgYXMgYSBzaGFyZWQgbGlicmFyeS4KCiAgICAgICAgKiBKYXZhU2NyaXB0
Q29yZS5wcm86CiAgICAgICAgKiBqc2MucHJvOgoKV2ViQ29yZToKCjIwMDktMDctMjQgIEtlbm5l
dGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8a2VubmV0aEB3ZWJraXQub3JnPiwgU2ltb24gSGF1c21h
bm4gPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KCiAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCgogICAgICAgIEZvciB0aGUgUXQgYnVpbGQsIGxpbmsgSmF2YVNjcmlwdENvcmUg
YXMgc2hhcmVkIGxpYnJhcnkuCgogICAgICAgICogV2ViQ29yZS5wcm86IExpbmsgSlNDIGFzIHNo
YXJlZCBsaWJyYXJ5LgotLS0KIENoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg
IDkgKysrKysrKysrCiBKYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgICAgICAgICAgfCAgICA5ICsr
KysrKysrKwogSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUucHJvIHwgICAgNiArKysrLS0K
IEphdmFTY3JpcHRDb3JlL2pzYy5wcm8gICAgICAgICAgICB8ICAgMjYgKysrKysrKysrKysrKysr
KysrKysrKysrKy0KIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICB8ICAgIDggKysr
KysrKysKIFdlYkNvcmUvV2ViQ29yZS5wcm8gICAgICAgICAgICAgICB8ICAgMjkgKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysKIFdlYktpdC5wcm8gICAgICAgICAgICAgICAgICAgICAgICB8
ICAgIDIgKysKIDcgZmlsZXMgY2hhbmdlZCwgODYgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMo
LSkKCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggYjliMGRhNy4uOTEx
NThiYiAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEy
IEBACisyMDA5LTA3LTI0ICBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5ldGguY2hy
aXN0aWFuc2VuQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQnVpbGQgSmF2YVNjcmlwdENvcmUgYXMgc2hhcmVkIGxpYnJhcnku
CisKKyAgICAgICAgKiBXZWJLaXQucHJvOiBSZWN1cnNlIGludG8gSmF2YVNjcmlwdENvcmUgdG8g
YnVpbGQgaXQgYXMgc2hhcmVkCisgICAgICAgIGxpYnJhcnkuCisKIDIwMDktMDctMjQgIFhhbiBM
b3BleiAgPHhsb3BlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEd1c3Rhdm8g
Tm9yb25oYS4KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3Jp
cHRDb3JlL0NoYW5nZUxvZwppbmRleCAyZjVhMTU3Li5kMjRjN2FiIDEwMDY0NAotLS0gYS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTIgQEAKKzIwMDktMDctMjQgIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8a2Vu
bmV0aEB3ZWJraXQub3JnPiwgU2ltb24gSGF1c21hbm4gPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFu
Z2VkIHRoZSBRdCAucHJvIGZpbGVzIHRvIGJ1aWxkIEpTQyBhcyBhIHNoYXJlZCBsaWJyYXJ5Lgor
CisgICAgICAgICogSmF2YVNjcmlwdENvcmUucHJvOgorICAgICAgICAqIGpzYy5wcm86CisKIDIw
MDktMDctMjQgIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8a2VubmV0aC5jaHJpc3RpYW5z
ZW5Ab3BlbmJvc3NhLm9yZz4sIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9raWEu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgpkaWZmIC0tZ2l0IGEv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUucHJvIGIvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUucHJvCmluZGV4IGY4ODFjMDUuLmIyZjdiY2YgMTAwNjQ0Ci0tLSBhL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnBybworKysgYi9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS5wcm8KQEAgLTIsOSArMiwxMCBAQAogQ09ORklHICs9IGJ1aWxkaW5nLWxpYnMKIGluY2x1
ZGUoJCRQV0QvLi4vV2ViS2l0LnByaSkKIAorUVQgLT0gZ3VpCisKIFRFTVBMQVRFID0gbGliCi1D
T05GSUcgKz0gc3RhdGljbGliCi1UQVJHRVQgPSBKYXZhU2NyaXB0Q29yZQorVEFSR0VUID0gUXRK
YXZhU2NyaXB0Q29yZQogCiBDT05GSUcgKz0gZGVwZW5kX2luY2x1ZGVwYXRoCiAKQEAgLTMxLDYg
KzMyLDcgQEAgSU5DTFVERVBBVEggKz0gJCRHRU5FUkFURURfU09VUkNFU19ESVIKICAgICB9IGVs
c2UgeyAjIFJlbGVhc2UKICAgICAgICAgT0JKRUNUU19ESVIgPSBvYmovcmVsZWFzZQogICAgIH0K
KyAgICBERVNURElSID0gJCRPVVRQVVRfRElSL2xpYgogfQogCiBDT05GSUcgLT0gd2Fybl9vbgpk
aWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvanNjLnBybyBiL0phdmFTY3JpcHRDb3JlL2pzYy5w
cm8KaW5kZXggYmE4ODBmZi4uYTg0YzAyZSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvanNj
LnBybworKysgYi9KYXZhU2NyaXB0Q29yZS9qc2MucHJvCkBAIC0yMSw3ICsyMSwzMSBAQCBDT05G
SUcoZGVidWcsIGRlYnVnfHJlbGVhc2UpIHsKICAgICBPQkpFQ1RTX0RJUiA9IG9iai9yZWxlYXNl
CiB9CiBPQkpFQ1RTX0RJUl9XVFIgPSAkJE9CSkVDVFNfRElSJCR7UU1BS0VfRElSX1NFUH0KLWlu
Y2x1ZGUoJCRQV0QvSmF2YVNjcmlwdENvcmUucHJpKQorCitsaW51eC1nKysqIHsKKworICAgIElO
Q0xVREVQQVRIICs9IFwKKyAgICAgICAgQVBJIFwKKyAgICAgICAgYXNzZW1ibGVyIFwKKyAgICAg
ICAgYnl0ZWNvZGUgXAorICAgICAgICBieXRlY29tcGlsZXIgXAorICAgICAgICBkZWJ1Z2dlciBc
CisgICAgICAgIEZvcndhcmRpbmdIZWFkZXJzIFwKKyAgICAgICAgaW50ZXJwcmV0ZXIgXAorICAg
ICAgICBqaXQgXAorICAgICAgICBwYXJzZXIgXAorICAgICAgICBwcm9maWxlciBcCisgICAgICAg
IHJ1bnRpbWUgXAorICAgICAgICB3cmVjIFwKKyAgICAgICAgd3RmIFwKKyAgICAgICAgd3RmL3Vu
aWNvZGUgXAorICAgICAgICB5YXJyCisKKyAgICBMSUJTICs9IC1MJCRPVVRQVVRfRElSL2xpYiAt
bFF0SmF2YVNjcmlwdENvcmUKKyAgICBRTUFLRV9SUEFUSERJUiArPSAkJE9VVFBVVF9ESVIvbGli
Cit9IGVsc2UgeworICAgIGluY2x1ZGUoJCRQV0QvSmF2YVNjcmlwdENvcmUucHJpKQorfQogCiBs
ZXNzVGhhbihRVF9NSU5PUl9WRVJTSU9OLCA0KSB7CiAgICAgREVGSU5FUyArPSBRVF9CRUdJTl9O
QU1FU1BBQ0U9IiIgUVRfRU5EX05BTUVTUEFDRT0iIgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkNmUwNjA4Li5kYmMyOWFlIDEwMDY0NAot
LS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDExIEBACisyMDA5LTA3LTI0ICBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5ldGhA
d2Via2l0Lm9yZz4sIFNpbW9uIEhhdXNtYW5uIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRm9yIHRoZSBR
dCBidWlsZCwgbGluayBKYXZhU2NyaXB0Q29yZSBhcyBzaGFyZWQgbGlicmFyeS4KKworICAgICAg
ICAqIFdlYkNvcmUucHJvOiBMaW5rIEpTQyBhcyBzaGFyZWQgbGlicmFyeS4KKwogMjAwOS0wNy0y
NCAgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4gIDxrZW5uZXRoLmNocmlzdGlhbnNlbkBvcGVu
Ym9zc2Eub3JnPiwgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L1dlYkNvcmUucHJvIGIvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCA2Njg2NzhiLi5hZjA0Zjlm
IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5w
cm8KQEAgLTE2Nyw2ICsxNjcsMzUgQEAgQ09ORklHKGNvbXB1dGVfZGVmYXVsdHMpIHsKICAgICBl
cnJvcigiRG9uZSBjb21wdXRpbmcgZGVmYXVsdHMiKQogfQogCitsaW51eC1nKysqIHsKKworICAg
IElOQ0xVREVQQVRIICs9IFwKKyAgICAgICAgJCRQV0QvIFwKKyAgICAgICAgJCRQV0QvLi4gXAor
ICAgICAgICAkJFBXRC8uLi9KYXZhU2NyaXB0Q29yZSBcCisgICAgICAgICQkUFdELy4uL0phdmFT
Y3JpcHRDb3JlL0FQSSBcCisgICAgICAgICQkUFdELy4uL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ciBcCisgICAgICAgICQkUFdELy4uL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlIFwKKyAgICAgICAg
JCRQV0QvLi4vSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyIFwKKyAgICAgICAgJCRQV0QvLi4v
SmF2YVNjcmlwdENvcmUvZGVidWdnZXIgXAorICAgICAgICAkJFBXRC8uLi9KYXZhU2NyaXB0Q29y
ZS9Gb3J3YXJkaW5nSGVhZGVycyBcCisgICAgICAgICQkUFdELy4uL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyIFwKKyAgICAgICAgJCRQV0QvLi4vSmF2YVNjcmlwdENvcmUvaml0IFwKKyAgICAg
ICAgJCRQV0QvLi4vSmF2YVNjcmlwdENvcmUvcGFyc2VyIFwKKyAgICAgICAgJCRQV0QvLi4vSmF2
YVNjcmlwdENvcmUvcHJvZmlsZXIgXAorICAgICAgICAkJFBXRC8uLi9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lIFwKKyAgICAgICAgJCRQV0QvLi4vSmF2YVNjcmlwdENvcmUvd3JlYyBcCisgICAgICAg
ICQkUFdELy4uL0phdmFTY3JpcHRDb3JlL3d0ZiBcCisgICAgICAgICQkUFdELy4uL0phdmFTY3Jp
cHRDb3JlL3d0Zi91bmljb2RlIFwKKyAgICAgICAgJCRQV0QvLi4vSmF2YVNjcmlwdENvcmUveWFy
cgorCisgICAgTElCUyArPSAtTCQkREVTVERJUiAtbFF0SmF2YVNjcmlwdENvcmUKKyAgICBRTUFL
RV9SUEFUSERJUiArPSAkJERFU1RESVIKKworfSBlbHNlIHsKKyAgICBpbmNsdWRlKCQkUFdELy4u
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnByaSkKK30KKwogUkVTT1VSQ0VTICs9IFwK
ICAgICAkJFBXRC8uLi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYyBcCiAg
ICAgJCRQV0QvLi4vV2ViQ29yZS9XZWJDb3JlLnFyYwpkaWZmIC0tZ2l0IGEvV2ViS2l0LnBybyBi
L1dlYktpdC5wcm8KaW5kZXggMjFkM2RhYS4uZWIxZjEzNSAxMDA2NDQKLS0tIGEvV2ViS2l0LnBy
bworKysgYi9XZWJLaXQucHJvCkBAIC0xLDYgKzEsOCBAQAogVEVNUExBVEUgPSBzdWJkaXJzCiBD
T05GSUcgKz0gb3JkZXJlZAogCitsaW51eC1nKys6IFNVQkRJUlMgKz0gSmF2YVNjcmlwdENvcmUK
KwogU1VCRElSUyArPSBcCiAgICAgICAgIFdlYkNvcmUgXAogICAgICAgICBKYXZhU2NyaXB0Q29y
ZS9qc2MucHJvIFwKLS0gCjEuNi40LnJjMy4xMi5nZGY3M2EKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33773</attachid>
            <date>2009-07-30 05:46:38 -0700</date>
            <delta_ts>2009-08-13 05:41:23 -0700</delta_ts>
            <desc>Updated patch with one MSVC warning fixed and explanation for the other ignored warning</desc>
            <filename>0001-JavaScriptCore.patch</filename>
            <type>text/plain</type>
            <size>73684</size>
            <attacher name="Simon Hausmann">hausmann</attacher>
            
              <data encoding="base64">RnJvbSA2NmI0ODYyODcxM2RlMTBiMWIzMWQ3NDM4ZmQ3OGUwNWMxNzFmYWM2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBTaW1vbiBIYXVzbWFubiA8c2ltb24uaGF1c21hbm5Abm9raWEu
Y29tPgpEYXRlOiBUaHUsIDMwIEp1bCAyMDA5IDE0OjIxOjUzICswMjAwClN1YmplY3Q6IFtQQVRD
SCAxLzJdIEphdmFTY3JpcHRDb3JlOgoKMjAwOS0wNy0yNCAgS2VubmV0aCBSb2hkZSBDaHJpc3Rp
YW5zZW4gIDxrZW5uZXRoLmNocmlzdGlhbnNlbkBvcGVuYm9zc2Eub3JnPiwgU2ltb24gSGF1c21h
bm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CgogICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgoKICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGJ1aWxkIEphdmFTY3JpcHRD
b3JlIGFzIHNoYXJlZCBsaWJyYXJ5IHdpdGhvdXQKICAgICAgICBleHBvcnRlZCBzeW1ib2wgbGlz
dHMuCgogICAgICAgIEFkZGVkIEpTX0VYUE9SVERBVEEgdG8gYWxsIHRoZSBjbGFzc2VzIHRoYXQg
YXJlIGFjY2Vzc2VkIGZyb20gV2ViQ29yZSwKICAgICAgICB0byBlbnN1cmUgdGhlaXIgdmlzaWJp
bGl0eS4KCiAgICAgICAgKiBBUEkvT3BhcXVlSlNTdHJpbmcuaDogVXNlIEpTX0VYUE9SVERBVEEu
CiAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmNwcm9qOiBEaXNhYmxlCiAgICAgICAgTVNWQyB3YXJuaW5nIGFib3V0IGluY29uc2lz
dGVudCBsaW5rYWdlLgogICAgICAgICogSmF2YVNjcmlwdENvcmUudmNwcm9qL2pzYy9qc2MudmNw
cm9qOiBEaXR0by4KICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6IEluY2x1ZGUgUHJvZmlsZUdlbmVyYXRvci5oCiAgICAgICAgaW4gdGhlIHByaXZhdGUg
aGVhZGVycywgYXMgaXQgaXMgaW5jbHVkZWQgZnJvbSBQcm9maWxlci5oLCB3aGljaCBpcwogICAg
ICAgIGFsc28gaW5jbHVkZWQgZnJvbSBXZWJDb3JlLgogICAgICAgICogYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmg6IFVzZSBKU19FWFBPUlREQVRBLgogICAgICAgICogY29uZmlnLmg6
IERlZmluZSBKU19FWFBPUlREQVRBIGFjY29yZGluZ2x5IHdpdGggZ2NjOyBEZWZpbmUgaXQgdG8K
ICAgICAgICBkbGxpbXBvcnQgd2l0aCBNU1ZDLgogICAgICAgICogZGVidWdnZXIvRGVidWdnZXIu
aDogVXNlIEpTX0VYUE9SVERBVEEuCiAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFt
ZS5oOiBEaXR0by4KICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmg6IERpdHRvLgog
ICAgICAgICoganNjLnBybzogTGluayBhZ2FpbnN0IEpTQyBhcyBzaGFyZWQgbGlicmFyeS4KICAg
ICAgICAqIHBhcnNlci9Ob2Rlcy5oOiBVc2UgSlNfRVhQT1JUREFUQS4KICAgICAgICAqIHBhcnNl
ci9QYXJzZXIuaDogRGl0dG8uCiAgICAgICAgKiBwYXJzZXIvUGFyc2VyQXJlbmEuaDogRGl0dG8u
CiAgICAgICAgKiBwY3JlL3BjcmUuaDogRGl0dG8uCiAgICAgICAgKiBwcm9maWxlci9Qcm9maWxl
Lmg6IFVzZSBKU19FWFBPUlREQVRBLgogICAgICAgICogcHJvZmlsZXIvUHJvZmlsZXIuaDogVXNl
IEpTX0VYUE9SVERBVEEgYW5kIHJlcGxhY2UgUHJvZmlsZUdlbmVyYXRvcgogICAgICAgIGZvcndh
cmQgZGVjbGFyYXRpb24gd2l0aCBpbmNsdXNpb24gdG8gZml4IE1TVkMgY29tcGlsYXRpb24sIHdo
aWNoIHJlcXVpcmVzCiAgICAgICAgaXRzIHZpc2libGl0eSB3aGVuIG1hcmtpbmcgUHJvZmlsZXIg
d2l0aCBkbGxleHBvcnQuCiAgICAgICAgKiBydW50aW1lL0FyZ0xpc3QuaDogVXNlIEpTX0VYUE9S
VERBVEEuCiAgICAgICAgKiBydW50aW1lL0Jvb2xlYW5PYmplY3QuaDogRGl0dG8uCiAgICAgICAg
KiBydW50aW1lL0NhbGxEYXRhLmg6IERpdHRvLgogICAgICAgICogcnVudGltZS9Db2xsZWN0b3Iu
aDogRGl0dG8uCiAgICAgICAgKiBydW50aW1lL0NvbXBsZXRpb24uaDogRGl0dG8uCiAgICAgICAg
KiBydW50aW1lL0NvbnN0cnVjdERhdGEuaDogRGl0dG8uCiAgICAgICAgKiBydW50aW1lL0RhdGVJ
bnN0YW5jZS5oOiBEaXR0by4KICAgICAgICAqIHJ1bnRpbWUvRXJyb3IuaDogRGl0dG8uCiAgICAg
ICAgKiBydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaDogRGl0dG8uCiAgICAgICAgKiBydW50
aW1lL0lkZW50aWZpZXIuaDogRGl0dG8uCiAgICAgICAgKiBydW50aW1lL0luaXRpYWxpemVUaHJl
YWRpbmcuaDogRGl0dG8uCiAgICAgICAgKiBydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaDogTW92
ZWQgSlNfRVhQT1JUREFUQSBmcm9tIEludGVybmFsRnVuY3Rpb246OmluZm8gdG8KICAgICAgICBJ
bnRlcm5hbEZ1bmN0aW9uLCB0byBleHBvcnQgdGhlIGVudGlyZSBjbGFzcy4KICAgICAgICAqIHJ1
bnRpbWUvSlNBcnJheS5oOiBVc2UgSlNfRVhQT1JUREFUQS4KICAgICAgICAqIHJ1bnRpbWUvSlNC
eXRlQXJyYXkuaDogRGl0dG8uCiAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5oOiBEaXR0by4KICAg
ICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmg6IERpdHRvLgogICAgICAgICogcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oOiBEaXR0by4KICAgICAgICAqIHJ1bnRpbWUvSlNJbW1lZGlhdGUuaDog
RGl0dG8uCiAgICAgICAgKiBydW50aW1lL0pTTG9jay5oOiBEaXR0by4KICAgICAgICAqIHJ1bnRp
bWUvSlNOdW1iZXJDZWxsLmg6IERpdHRvLgogICAgICAgICogcnVudGltZS9KU09iamVjdC5oOiBE
aXR0by4KICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmcuaDogRGl0dG8uCiAgICAgICAgKiBydW50
aW1lL0pTVmFyaWFibGVPYmplY3QuaDogRGl0dG8uCiAgICAgICAgKiBydW50aW1lL0pTV3JhcHBl
ck9iamVjdC5oOiBEaXR0by4KICAgICAgICAqIHJ1bnRpbWUvTG9va3VwLmg6IERpdHRvLgogICAg
ICAgICogcnVudGltZS9OdW1iZXJPYmplY3QuaDogRGl0dG8uCiAgICAgICAgKiBydW50aW1lL09i
amVjdFByb3RvdHlwZS5oOiBEaXR0by4KICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlOYW1lQXJy
YXkuaDogRGl0dG8uCiAgICAgICAgKiBydW50aW1lL1Byb3RvdHlwZUZ1bmN0aW9uLmg6IERpdHRv
LgogICAgICAgICogcnVudGltZS9SZWdFeHAuaDogRGl0dG8uCiAgICAgICAgKiBydW50aW1lL1Jl
Z0V4cE9iamVjdC5oOiBEaXR0by4KICAgICAgICAqIHJ1bnRpbWUvU21hbGxTdHJpbmdzLmg6IERp
dHRvLgogICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuaDogTW92ZWQgSlNfRVhQT1JUREFU
QSBmcm9tIFN0cmluZ09iamVjdDo6aW5mbyB0byBTdHJpbmdPYmplY3QsIHRvCiAgICAgICAgZXhw
b3J0IHRoZSBlbnRpcmUgY2xhc3MuCiAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5oOiBVc2Ug
SlNfRVhQT1JUREFUQS4KICAgICAgICAqIHJ1bnRpbWUvVGltZW91dENoZWNrZXIuaDogRGl0dG8u
CiAgICAgICAgKiBydW50aW1lL1VTdHJpbmcuaDogUmVwbGFjZWQgc2luZ2xlIGV4cG9ydCBvZiBV
U3RyaW5nOjpSZXA6OntudWxsLGVtcHR5fUJhc2VTdHJpbmcgd2l0aAogICAgICAgIGV4cG9ydCBv
ZiBlbnRpcmUgY2xhc3MuIEFsc28gZXhwb3J0IGEgZmV3IGhlbHBlciBmdW5jdGlvbnMuCiAgICAg
ICAgKiB3dGYvQnl0ZUFycmF5Lmg6IFVzZSBKU19FWFBPUlREQVRBLgogICAgICAgICogd3RmL0N1
cnJlbnRUaW1lLmg6IERpdHRvLgogICAgICAgICogd3RmL0Zhc3RNYWxsb2MuaDogRGl0dG8uCiAg
ICAgICAgKiB3dGYvTWFpblRocmVhZC5oOiBEaXR0by4KICAgICAgICAqIHd0Zi9SYW5kb21OdW1i
ZXIuaDogRGl0dG8uCiAgICAgICAgKiB3dGYvVGhyZWFkaW5nLmg6IERpdHRvLgogICAgICAgICog
d3RmL2R0b2EuaDogRGl0dG8uCiAgICAgICAgKiB3dGYvdW5pY29kZS9VVEY4Lmg6IERpdHRvLgog
ICAgICAgICogd3RmL3VuaWNvZGUvVVRGOC5jcHA6IEluY2x1ZGUgY29uZmlnLmggaW4gb3JkZXIg
dG8gY29tcGlsZSB3aXRoIE1TVkMuCgpXZWJDb3JlOgoKMjAwOS0wNy0yNCAgS2VubmV0aCBSb2hk
ZSBDaHJpc3RpYW5zZW4gIDxrZW5uZXRoLmNocmlzdGlhbnNlbkBvcGVuYm9zc2Eub3JnPiwgU2lt
b24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CgogICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICBEZWZpbmUgSlNfRVhQT1JUREFUQSBhbmQgV0VC
S0lUX0VYUE9SVERBVEEgZm9yIGdjYy4KCiAgICAgICAgTGluayBRVE1vdmllV2luIGFnYWluc3Qg
SmF2YVNjcmlwdENvcmUgZm9yIHRoZSBleHBvcnRlZAogICAgICAgIFdURiBzeW1ib2xzLgoKICAg
ICAgICAqIFdlYkNvcmUudmNwcm9qL1FUTW92aWVXaW4udmNwcm9qOiBMaW5rIFFUTW92aWVXaW4g
YWdhaW5zdCBKU0MgZGxsLAogICAgICAgIGZvciB0aGUgZXhwb3J0ZWQgV1RGIHN5bWJvbHMuCiAg
ICAgICAgKiBjb25maWcuaDogVHdlYWsgZm9yIGdjYy4KCldlYktpdC9jZjoKCjIwMDktMDctMjQg
IFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgoKICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCiAgICAgICAgRml4IGNvbXBpbGF0aW9uIG9uIHRoZSBN
YWMsIGRvbid0IHJlLWRlZmluZSBKU19FWFBPUlREQVRBIGVtcHR5IGJ1dAogICAgICAgIHJlLXVz
ZSB0aGUgZGVmaW5pdGlvbiBmcm9tIFdlYktpdFByZWZpeC5oLgoKICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcDoKCldlYktpdC9tYWM6CgoyMDA5LTA3LTI0
ICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KCiAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgogICAgICAgIER1cGxpY2F0ZSB0aGUgSlNfRVhQT1JU
REFUQSBhbmQgV0VCS0lUX0VYUE9SVERBVEEgZGVmaW5pdGlvbiBmcm9tCiAgICAgICAgV2ViQ29y
ZS9jb25maWcuaCB0byBmaXggY29tcGlsYXRpb24gYWdhaW5zdCBKYXZhU2NyaXB0Q29yZSBhbmQK
ICAgICAgICBXZWJDb3JlIG9uIHRoZSBNYWMuCgogICAgICAgICogV2ViS2l0UHJlZml4Lmg6CgpX
ZWJLaXQvd2luOgoKMjAwOS0wNy0yNCAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBu
b2tpYS5jb20+CgogICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICBG
aXggY29tcGlsYXRpb24sIGRpc2FibGUgYm9ndXMgRExMIGxpbmthZ2Ugd2FybmluZ3MgYW5kCiAg
ICAgICAgZGVmaW5lIEpTX0VYUE9SVERBVEEgbGlrZSBpbiBKYXZhU2NyaXB0Q29yZS9jb25maWcu
aCwgdG8KICAgICAgICBmaXggc3ltYm9sIGltcG9ydCBmb3JtIEphdmFTY3JpcHRDb3JlLgoKICAg
ICAgICAqIFdlYktpdC52Y3Byb2ovV2ViS2l0LnZjcHJvajogVHdlYWsuCiAgICAgICAgKiBXZWJL
aXRETEwuaDogRGVmaW5lIEpTX0VYUE9SVERBVEEuCgpXZWJLaXRMaWJyYXJpZXM6CgoyMDA5LTA3
LTMwICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KCiAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgogICAgICAgIERpc2FibGUgTVNWQyB3YXJuaW5n
IDQyNTEgYWJvdXQgdGhlIG5lZWQgdG8gdGhlIHR5cGVzIG9mIG1lbWJlciB2YXJpYWJsZXMKICAg
ICAgICB0aGF0IGFyZW4ndCBleHBvcnRlZCB5ZXQuIFdlIGRlY2lkZSB0byBpZ25vcmUgdGhpcyB3
YXJuaW5nLCBhcyBmaXhpbmcgaXQKICAgICAgICByZXF1aXJlcyBleHBsaWNpdGx5IGV4cG9ydGlu
ZyBhbGwgdGVtcGxhdGUgaW5zdGFudGlhdGlvbnMgdXNlZCBpbiBleHBvcnRlZAogICAgICAgIGNs
YXNzZXMnIG1lbWJlciB2YXJpYWJsZXMuIEFsbCBvZiB0aGF0IGRvZXNuJ3Qgc2VlbSB0byBiZSBu
ZWNlc3NhcnksIGFzCiAgICAgICAgdGhlIHN1Y2Nlc3NmdWwgdXNlIG9mIC5kZWYgZmlsZXMgd2l0
aCBoYW5kLXBpY2tlZCBzeW1ib2xzIHByb292ZXMuCgogICAgICAgIEFzIGEgc2lkZS1ub3RlIFF0
IGZvciBleGFtcGxlIGhhcyB0aGlzIHBhcnRpY3VsYXIgd2FybmluZyBnbG9iYWxseQogICAgICAg
IGRpc2FibGVkICh2aWEgcHJhZ21hIGluIHFnbG9iYWwuaCkgYW5kIGl0J3Mgd29ya2luZyBqdXN0
IGZpbmUgZm9yCiAgICAgICAgZXZlcnlvbmUuCgogICAgICAgICogd2luL3Rvb2xzL3ZzcHJvcHMv
Y29tbW9uLnZzcHJvcHM6CgpXZWJLaXRUb29sczoKCjIwMDktMDctMjggIFNpbW9uIEhhdXNtYW5u
ICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgoKICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KCiAgICAgICAgRml4IGNvbXBpbGF0aW9uIG9uIHRoZSBNYWMuCgogICAgICAgICog
RHVtcFJlbmRlclRyZWUvY29uZmlnLmg6IE1vdmUgRmFzdE1hbGxvYy5oIGluY2x1c2lvbiB1bnRp
bCBhZnRlciB0aGUgZGVmaW5pdGlvbiBvZgogICAgICAgIEpTX0VYUE9SVERBVEEuCiAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9wdGhyZWFkcy9KYXZhU2NyaXB0VGhyZWFkaW5nUHRocmVhZHMuY3Bw
OiBJbmNsdWRlIGNvbmZpZy5oIGZvciB0aGUKICAgICAgICBleHBvcnQgbWFjcm9zLgotLS0KIEph
dmFTY3JpcHRDb3JlL0FQSS9PcGFxdWVKU1N0cmluZy5oICAgICAgICAgICAgICAgIHwgICAgMiAr
LQogSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg
IDgxICsrKysrKysrKysrKysrKysrKysrCiAuLi4vSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiAgICAgICB8ICAgIDIgKy0KIEphdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5oICAgIHwgICAgMiArLQogSmF2YVNjcmlwdENvcmUvY29uZmln
LmggICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE3ICsrKy0tCiBKYXZhU2NyaXB0Q29y
ZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIEphdmFTY3Jp
cHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmggICAgICAgIHwgICAgNiArLQogSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaCAgICAgICAgICAgfCAgICAyICst
CiBKYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCAgICAgICAgICAgICAgICAgICAgICB8ICAg
IDYgKy0KIEphdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCAgICAgICAgICAgICAgICAgICAg
IHwgICAgMiArLQogSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmggICAgICAgICAg
ICAgICAgfCAgICAyICstCiBKYXZhU2NyaXB0Q29yZS9wY3JlL3BjcmUuaCAgICAgICAgICAgICAg
ICAgICAgICAgICB8ICAgIDYgKy0KIEphdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGUuaCAg
ICAgICAgICAgICAgICAgIHwgICAgMiArLQogSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmls
ZXIuaCAgICAgICAgICAgICAgICAgfCAgICA2ICstCiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
Z0xpc3QuaCAgICAgICAgICAgICAgICAgICB8ICAgIDQgKy0KIEphdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQm9vbGVhbk9iamVjdC5oICAgICAgICAgICAgIHwgICAgMiArLQogSmF2YVNjcmlwdENvcmUv
cnVudGltZS9DYWxsRGF0YS5oICAgICAgICAgICAgICAgICAgfCAgICA0ICstCiBKYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbGxlY3Rvci5oICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIEphdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5oICAgICAgICAgICAgICAgIHwgICAgNiArLQog
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zdHJ1Y3REYXRhLmggICAgICAgICAgICAgfCAgICA0
ICstCiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5jZS5oICAgICAgICAgICAgICB8
ICAgIDIgKy0KIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaCAgICAgICAgICAgICAgICAg
ICAgIHwgICAgOCArLQogSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9y
LmggICAgICAgfCAgICA4ICstCiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaCAg
ICAgICAgICAgICAgICB8ICAgIDIgKy0KIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6
ZVRocmVhZGluZy5oICAgICAgIHwgICAgNCArLQogSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRl
cm5hbEZ1bmN0aW9uLmggICAgICAgICAgfCAgICA0ICstCiBKYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyYXkuaCAgICAgICAgICAgICAgICAgICB8ICAgIDggKy0KIEphdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNCeXRlQXJyYXkuaCAgICAgICAgICAgICAgIHwgICAgMiArLQogSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NlbGwuaCAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCiBKYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oICAgICAgICAgICAgICB8ICAgIDIgKy0KIEph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCAgICAgICAgICAgIHwgICAgMiAr
LQogSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ltbWVkaWF0ZS5oICAgICAgICAgICAgICAgfCAg
IDEwICstCiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oICAgICAgICAgICAgICAgICAg
ICB8ICAgIDIgKy0KIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOdW1iZXJDZWxsLmggICAgICAg
ICAgICAgIHwgICAxNCArKy0tCiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmggICAg
ICAgICAgICAgICAgICB8ICAgIDYgKy0KIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcu
aCAgICAgICAgICAgICAgICAgIHwgICAzNCArKysrLS0tLQogSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1ZhcmlhYmxlT2JqZWN0LmggICAgICAgICAgfCAgICA0ICstCiBKYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTV3JhcHBlck9iamVjdC5oICAgICAgICAgICB8ICAgIDQgKy0KIEphdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTG9va3VwLmggICAgICAgICAgICAgICAgICAgIHwgICAgNCArLQogSmF2YVNj
cmlwdENvcmUvcnVudGltZS9OdW1iZXJPYmplY3QuaCAgICAgICAgICAgICAgfCAgICAyICstCiBK
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5oICAgICAgICAgICB8ICAgIDIg
Ky0KIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuaCAgICAgICAgIHwg
ICAgMiArLQogSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm90b3R5cGVGdW5jdGlvbi5oICAgICAg
ICAgfCAgICAyICstCiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oICAgICAgICAgICAg
ICAgICAgICB8ICAgIDIgKy0KIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0Lmgg
ICAgICAgICAgICAgIHwgICAgMiArLQogSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0cmlu
Z3MuaCAgICAgICAgICAgICAgfCAgICAyICstCiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmlu
Z09iamVjdC5oICAgICAgICAgICAgICB8ICAgIDQgKy0KIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlLmggICAgICAgICAgICAgICAgIHwgICAgMiArLQogSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UaW1lb3V0Q2hlY2tlci5oICAgICAgICAgICAgfCAgICAyICstCiBKYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1VTdHJpbmcuaCAgICAgICAgICAgICAgICAgICB8ICAgMTYgKystLQogSmF2YVNj
cmlwdENvcmUvd3RmL0J5dGVBcnJheS5oICAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCiBK
YXZhU2NyaXB0Q29yZS93dGYvQ3VycmVudFRpbWUuaCAgICAgICAgICAgICAgICAgICB8ICAgIDUg
Ky0KIEphdmFTY3JpcHRDb3JlL3d0Zi9GYXN0TWFsbG9jLmggICAgICAgICAgICAgICAgICAgIHwg
ICAxOCArKy0tCiBKYXZhU2NyaXB0Q29yZS93dGYvTWFpblRocmVhZC5oICAgICAgICAgICAgICAg
ICAgICB8ICAgIDYgKy0KIEphdmFTY3JpcHRDb3JlL3d0Zi9SYW5kb21OdW1iZXIuaCAgICAgICAg
ICAgICAgICAgIHwgICAgNCArLQogSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZy5oICAgICAg
ICAgICAgICAgICAgICAgfCAgIDI0ICsrKy0tLQogSmF2YVNjcmlwdENvcmUvd3RmL2R0b2EuaCAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA0ICstCiBKYXZhU2NyaXB0Q29yZS93dGYvdW5p
Y29kZS9VVEY4LmNwcCAgICAgICAgICAgICAgICB8ICAgIDEgKwogSmF2YVNjcmlwdENvcmUvd3Rm
L3VuaWNvZGUvVVRGOC5oICAgICAgICAgICAgICAgICAgfCAgIDEyICsrLS0KIFdlYkNvcmUvQ2hh
bmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMyArKysKIFdlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovUVRNb3ZpZVdpbi52Y3Byb2ogICAgICAgICAgIHwgICAgNiArLQog
V2ViQ29yZS9jb25maWcuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDMx
ICsrKysrLS0tCiBXZWJLaXQvY2YvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAgIDkgKysKIFdlYktpdC9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnRDRi5jcHAgIHwgICAgMiAtCiBXZWJLaXQvbWFjL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8ICAgMTAgKysrCiBXZWJLaXQvbWFjL1dlYktpdFByZWZpeC5oICAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgMjQgKysrKystCiBXZWJLaXQvd2luL0NoYW5nZUxvZyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTEgKysrCiBXZWJLaXQvd2luL1dlYktp
dERMTC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTAgKysrCiBXZWJLaXRMaWJy
YXJpZXMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTYgKysrKwogV2Vi
S2l0TGlicmFyaWVzL3dpbi90b29scy92c3Byb3BzL2NvbW1vbi52c3Byb3BzICAgfCAgICAyICst
CiBXZWJLaXRUb29scy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg
MTEgKysrCiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jb25maWcuaCAgICAgICAgICAgICAg
ICB8ICAgMTIgKystLQogLi4uL3B0aHJlYWRzL0phdmFTY3JpcHRUaHJlYWRpbmdQdGhyZWFkcy5j
cHAgICAgICAgfCAgICAzICstCiA3MyBmaWxlcyBjaGFuZ2VkLCAzNzEgaW5zZXJ0aW9ucygrKSwg
MTg1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0FQSS9PcGFxdWVK
U1N0cmluZy5oIGIvSmF2YVNjcmlwdENvcmUvQVBJL09wYXF1ZUpTU3RyaW5nLmgKaW5kZXggNDcz
YzgxNS4uOTIxNjIyNCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvQVBJL09wYXF1ZUpTU3Ry
aW5nLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvQVBJL09wYXF1ZUpTU3RyaW5nLmgKQEAgLTMzLDcg
KzMzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNHbG9iYWxEYXRhOwogfQogCi1z
dHJ1Y3QgT3BhcXVlSlNTdHJpbmcgOiBwdWJsaWMgVGhyZWFkU2FmZVNoYXJlZDxPcGFxdWVKU1N0
cmluZz4geworc3RydWN0IEpTX0VYUE9SVERBVEEgT3BhcXVlSlNTdHJpbmcgOiBwdWJsaWMgVGhy
ZWFkU2FmZVNoYXJlZDxPcGFxdWVKU1N0cmluZz4gewogCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8
T3BhcXVlSlNTdHJpbmc+IGNyZWF0ZSgpIC8vIG51bGwKICAgICB7CmRpZmYgLS1naXQgYS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggZGQx
ZTgwMy4uNjk3NGMwZCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBi
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg0IEBACisyMDA5LTA3LTI0ICBL
ZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5ldGguY2hyaXN0aWFuc2VuQG9wZW5ib3Nz
YS5vcmc+LCBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIGl0IHBvc3Np
YmxlIHRvIGJ1aWxkIEphdmFTY3JpcHRDb3JlIGFzIHNoYXJlZCBsaWJyYXJ5IHdpdGhvdXQKKyAg
ICAgICAgZXhwb3J0ZWQgc3ltYm9sIGxpc3RzLgorCisgICAgICAgIEFkZGVkIEpTX0VYUE9SVERB
VEEgdG8gYWxsIHRoZSBjbGFzc2VzIHRoYXQgYXJlIGFjY2Vzc2VkIGZyb20gV2ViQ29yZSwKKyAg
ICAgICAgdG8gZW5zdXJlIHRoZWlyIHZpc2liaWxpdHkuCisKKyAgICAgICAgKiBBUEkvT3BhcXVl
SlNTdHJpbmcuaDogVXNlIEpTX0VYUE9SVERBVEEuCisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
dmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvajogRGlzYWJsZQorICAg
ICAgICBNU1ZDIHdhcm5pbmcgYWJvdXQgaW5jb25zaXN0ZW50IGxpbmthZ2UuCisgICAgICAgICog
SmF2YVNjcmlwdENvcmUudmNwcm9qL2pzYy9qc2MudmNwcm9qOiBEaXR0by4KKyAgICAgICAgKiBK
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBJbmNsdWRlIFByb2ZpbGVH
ZW5lcmF0b3IuaAorICAgICAgICBpbiB0aGUgcHJpdmF0ZSBoZWFkZXJzLCBhcyBpdCBpcyBpbmNs
dWRlZCBmcm9tIFByb2ZpbGVyLmgsIHdoaWNoIGlzCisgICAgICAgIGFsc28gaW5jbHVkZWQgZnJv
bSBXZWJDb3JlLgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOiBV
c2UgSlNfRVhQT1JUREFUQS4KKyAgICAgICAgKiBjb25maWcuaDogRGVmaW5lIEpTX0VYUE9SVERB
VEEgYWNjb3JkaW5nbHkgd2l0aCBnY2M7IERlZmluZSBpdCB0bworICAgICAgICBkbGxpbXBvcnQg
d2l0aCBNU1ZDLgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyLmg6IFVzZSBKU19FWFBPUlRE
QVRBLgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmg6IERpdHRvLgorICAg
ICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmg6IERpdHRvLgorICAgICAgICAqIGpzYy5w
cm86IExpbmsgYWdhaW5zdCBKU0MgYXMgc2hhcmVkIGxpYnJhcnkuCisgICAgICAgICogcGFyc2Vy
L05vZGVzLmg6IFVzZSBKU19FWFBPUlREQVRBLgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDog
RGl0dG8uCisgICAgICAgICogcGFyc2VyL1BhcnNlckFyZW5hLmg6IERpdHRvLgorICAgICAgICAq
IHBjcmUvcGNyZS5oOiBEaXR0by4KKyAgICAgICAgKiBwcm9maWxlci9Qcm9maWxlLmg6IFVzZSBK
U19FWFBPUlREQVRBLgorICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVyLmg6IFVzZSBKU19FWFBP
UlREQVRBIGFuZCByZXBsYWNlIFByb2ZpbGVHZW5lcmF0b3IKKyAgICAgICAgZm9yd2FyZCBkZWNs
YXJhdGlvbiB3aXRoIGluY2x1c2lvbiB0byBmaXggTVNWQyBjb21waWxhdGlvbiwgd2hpY2ggcmVx
dWlyZXMKKyAgICAgICAgaXRzIHZpc2libGl0eSB3aGVuIG1hcmtpbmcgUHJvZmlsZXIgd2l0aCBk
bGxleHBvcnQuCisgICAgICAgICogcnVudGltZS9BcmdMaXN0Lmg6IFVzZSBKU19FWFBPUlREQVRB
LgorICAgICAgICAqIHJ1bnRpbWUvQm9vbGVhbk9iamVjdC5oOiBEaXR0by4KKyAgICAgICAgKiBy
dW50aW1lL0NhbGxEYXRhLmg6IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvQ29sbGVjdG9yLmg6
IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvQ29tcGxldGlvbi5oOiBEaXR0by4KKyAgICAgICAg
KiBydW50aW1lL0NvbnN0cnVjdERhdGEuaDogRGl0dG8uCisgICAgICAgICogcnVudGltZS9EYXRl
SW5zdGFuY2UuaDogRGl0dG8uCisgICAgICAgICogcnVudGltZS9FcnJvci5oOiBEaXR0by4KKyAg
ICAgICAgKiBydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaDogRGl0dG8uCisgICAgICAgICog
cnVudGltZS9JZGVudGlmaWVyLmg6IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvSW5pdGlhbGl6
ZVRocmVhZGluZy5oOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL0ludGVybmFsRnVuY3Rpb24u
aDogTW92ZWQgSlNfRVhQT1JUREFUQSBmcm9tIEludGVybmFsRnVuY3Rpb246OmluZm8gdG8KKyAg
ICAgICAgSW50ZXJuYWxGdW5jdGlvbiwgdG8gZXhwb3J0IHRoZSBlbnRpcmUgY2xhc3MuCisgICAg
ICAgICogcnVudGltZS9KU0FycmF5Lmg6IFVzZSBKU19FWFBPUlREQVRBLgorICAgICAgICAqIHJ1
bnRpbWUvSlNCeXRlQXJyYXkuaDogRGl0dG8uCisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDog
RGl0dG8uCisgICAgICAgICogcnVudGltZS9KU0dsb2JhbERhdGEuaDogRGl0dG8uCisgICAgICAg
ICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL0pT
SW1tZWRpYXRlLmg6IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvSlNMb2NrLmg6IERpdHRvLgor
ICAgICAgICAqIHJ1bnRpbWUvSlNOdW1iZXJDZWxsLmg6IERpdHRvLgorICAgICAgICAqIHJ1bnRp
bWUvSlNPYmplY3QuaDogRGl0dG8uCisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOiBEaXR0
by4KKyAgICAgICAgKiBydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaDogRGl0dG8uCisgICAgICAg
ICogcnVudGltZS9KU1dyYXBwZXJPYmplY3QuaDogRGl0dG8uCisgICAgICAgICogcnVudGltZS9M
b29rdXAuaDogRGl0dG8uCisgICAgICAgICogcnVudGltZS9OdW1iZXJPYmplY3QuaDogRGl0dG8u
CisgICAgICAgICogcnVudGltZS9PYmplY3RQcm90b3R5cGUuaDogRGl0dG8uCisgICAgICAgICog
cnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL1By
b3RvdHlwZUZ1bmN0aW9uLmg6IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwLmg6IERp
dHRvLgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0Lmg6IERpdHRvLgorICAgICAgICAq
IHJ1bnRpbWUvU21hbGxTdHJpbmdzLmg6IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5n
T2JqZWN0Lmg6IE1vdmVkIEpTX0VYUE9SVERBVEEgZnJvbSBTdHJpbmdPYmplY3Q6OmluZm8gdG8g
U3RyaW5nT2JqZWN0LCB0bworICAgICAgICBleHBvcnQgdGhlIGVudGlyZSBjbGFzcy4KKyAgICAg
ICAgKiBydW50aW1lL1N0cnVjdHVyZS5oOiBVc2UgSlNfRVhQT1JUREFUQS4KKyAgICAgICAgKiBy
dW50aW1lL1RpbWVvdXRDaGVja2VyLmg6IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvVVN0cmlu
Zy5oOiBSZXBsYWNlZCBzaW5nbGUgZXhwb3J0IG9mIFVTdHJpbmc6OlJlcDo6e251bGwsZW1wdHl9
QmFzZVN0cmluZyB3aXRoCisgICAgICAgIGV4cG9ydCBvZiBlbnRpcmUgY2xhc3MuIEFsc28gZXhw
b3J0IGEgZmV3IGhlbHBlciBmdW5jdGlvbnMuCisgICAgICAgICogd3RmL0J5dGVBcnJheS5oOiBV
c2UgSlNfRVhQT1JUREFUQS4KKyAgICAgICAgKiB3dGYvQ3VycmVudFRpbWUuaDogRGl0dG8uCisg
ICAgICAgICogd3RmL0Zhc3RNYWxsb2MuaDogRGl0dG8uCisgICAgICAgICogd3RmL01haW5UaHJl
YWQuaDogRGl0dG8uCisgICAgICAgICogd3RmL1JhbmRvbU51bWJlci5oOiBEaXR0by4KKyAgICAg
ICAgKiB3dGYvVGhyZWFkaW5nLmg6IERpdHRvLgorICAgICAgICAqIHd0Zi9kdG9hLmg6IERpdHRv
LgorICAgICAgICAqIHd0Zi91bmljb2RlL1VURjguaDogRGl0dG8uCisgICAgICAgICogd3RmL3Vu
aWNvZGUvVVRGOC5jcHA6IEluY2x1ZGUgY29uZmlnLmggaW4gb3JkZXIgdG8gY29tcGlsZSB3aXRo
IE1TVkMuCisKIDIwMDktMDctMjkgIExhc3psbyBHb21ib3MgIDxsYXN6bG8uMS5nb21ib3NAbm9r
aWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEdlb3JnZSBTdGFpa29zLgpkaWZmIC0tZ2l0
IGEvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggMmY5ZWYyMy4uZjQxMTkwYSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNzMsNyArMTcz
LDcgQEAKIAkJOTVBQjgzNDIwREE0MzIyNTAwQkM4M0YzIC8qIFByb2ZpbGVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1QUI4MzJFMERBNDJDQUQw
MEJDODNGMyAvKiBQcm9maWxlci5jcHAgKi87IH07CiAJCTk1QUI4MzU2MERBNDNDMzAwMEJDODNG
MyAvKiBQcm9maWxlTm9kZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5NUFCODM1NDBEQTQzQjQ0MDBCQzgzRjMgLyogUHJvZmlsZU5vZGUuY3BwICov
OyB9OwogCQk5NUNENDU3NjBFMUM0RkREMDA4NTM1OEUgLyogUHJvZmlsZUdlbmVyYXRvci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NUNENDU3NDBF
MUM0RkREMDA4NTM1OEUgLyogUHJvZmlsZUdlbmVyYXRvci5jcHAgKi87IH07Ci0JCTk1Q0Q0NTc3
MEUxQzRGREQwMDg1MzU4RSAvKiBQcm9maWxlR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NUNENDU3NTBFMUM0RkREMDA4NTM1OEUgLyog
UHJvZmlsZUdlbmVyYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07
CisJCTk1Q0Q0NTc3MEUxQzRGREQwMDg1MzU4RSAvKiBQcm9maWxlR2VuZXJhdG9yLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NUNENDU3NTBFMUM0RkRE
MDA4NTM1OEUgLyogUHJvZmlsZUdlbmVyYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk1RTNCQzA1MEUxQUU2ODIwMEIyRDFDMSAvKiBDYWxs
SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTVFM0JDMDQwRTFBRTY4MjAwQjJEMUMxIC8qIENhbGxJZGVudGlmaWVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTVGNkU2OTUwRTVCNUY5
NzAwOTFFODYwIC8qIEpTUHJvZmlsZXJQcml2YXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1OTg4QkE5MEU0NzdCRUMwMEQyOEQ0RCAvKiBKU1By
b2ZpbGVyUHJpdmF0ZS5jcHAgKi87IH07CiAJCTk2MDA5N0E2MEVCQUJCNTgwMDdBNzI5NyAvKiBM
YWJlbFNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5NjAwOTdBNTBFQkFCQjU4MDA3QTcyOTcgLyogTGFiZWxTY29wZS5oICovOyB9OwpkaWZmIC0t
Z2l0IGEvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCA1NGQw
Mjg5Li4yYTA1OTcxIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaApAQCAtNjEsNyArNjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
RmluYWxseUNvbnRleHQgZmluYWxseUNvbnRleHQ7CiAgICAgfTsKIAotICAgIGNsYXNzIEJ5dGVj
b2RlR2VuZXJhdG9yIDogcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7CisgICAgY2xhc3MgSlNf
RVhQT1JUREFUQSBCeXRlY29kZUdlbmVyYXRvciA6IHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ug
ewogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBEZWNsYXJhdGlvblN0YWNrczo6VmFyU3Rh
Y2sgVmFyU3RhY2s7CiAgICAgICAgIHR5cGVkZWYgRGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0aW9u
U3RhY2sgRnVuY3Rpb25TdGFjazsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL2NvbmZpZy5o
IGIvSmF2YVNjcmlwdENvcmUvY29uZmlnLmgKaW5kZXggNjY4MTc2MS4uMWUwMmFiNyAxMDA2NDQK
LS0tIGEvSmF2YVNjcmlwdENvcmUvY29uZmlnLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvY29uZmln
LmgKQEAgLTI1LDE0ICsyNSwxNyBAQAogCiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CiAKLSNp
ZiBQTEFURk9STShXSU5fT1MpICYmICFkZWZpbmVkKEJVSUxESU5HX1dYX18pICYmICFDT01QSUxF
UihHQ0MpCi0jaWYgZGVmaW5lZChCVUlMRElOR19KYXZhU2NyaXB0Q29yZSkgfHwgZGVmaW5lZChC
VUlMRElOR19XVEYpCi0jZGVmaW5lIEpTX0VYUE9SVERBVEEgX19kZWNsc3BlYyhkbGxleHBvcnQp
CisjdW5kZWYgSlNfRVhQT1JUREFUQQorI2lmIENPTVBJTEVSKEdDQykKKyAgICAjZGVmaW5lIEpT
X0VYUE9SVERBVEEgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkKKyNlbGlm
IFBMQVRGT1JNKFdJTl9PUykgJiYgIWRlZmluZWQoQlVJTERJTkdfV1hfXykKKyAgICAjaWYgZGVm
aW5lZChCVUlMRElOR19KYXZhU2NyaXB0Q29yZSkgfHwgZGVmaW5lZChCVUlMRElOR19XVEYpCisg
ICAgICAgICNkZWZpbmUgSlNfRVhQT1JUREFUQSBfX2RlY2xzcGVjKGRsbGV4cG9ydCkKKyAgICAj
ZWxzZQorICAgICAgICAjZGVmaW5lIEpTX0VYUE9SVERBVEEgX19kZWNsc3BlYyhkbGxpbXBvcnQp
CisgICAgI2VuZGlmCiAjZWxzZQotI2RlZmluZSBKU19FWFBPUlREQVRBIF9fZGVjbHNwZWMoZGxs
aW1wb3J0KQotI2VuZGlmCi0jZWxzZQotI2RlZmluZSBKU19FWFBPUlREQVRBCisgICAgI2RlZmlu
ZSBKU19FWFBPUlREQVRBCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKFdJTl9PUykKZGlmZiAtLWdp
dCBhL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmggYi9KYXZhU2NyaXB0Q29yZS9k
ZWJ1Z2dlci9EZWJ1Z2dlci5oCmluZGV4IDk4ZDA5MzUuLjZiNmM5ZDIgMTAwNjQ0Ci0tLSBhL0ph
dmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvZGVi
dWdnZXIvRGVidWdnZXIuaApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBj
bGFzcyBTb3VyY2VDb2RlOwogICAgIGNsYXNzIFVTdHJpbmc7CiAKLSAgICBjbGFzcyBEZWJ1Z2dl
ciB7CisgICAgY2xhc3MgSlNfRVhQT1JUREFUQSBEZWJ1Z2dlciB7CiAgICAgcHVibGljOgogICAg
ICAgICBEZWJ1Z2dlcigpOwogICAgICAgICB2aXJ0dWFsIH5EZWJ1Z2dlcigpOwpkaWZmIC0tZ2l0
IGEvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuaCBiL0phdmFTY3Jp
cHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmgKaW5kZXggOWQzNzdlZi4uNjk2NTRm
MSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUu
aAorKysgYi9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5oCkBAIC0y
NSwxNSArMjUsMTUgQEAKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgogICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwotIAor
CiAjaWZuZGVmIERlYnVnZ2VyQ2FsbEZyYW1lX2gKICNkZWZpbmUgRGVidWdnZXJDYWxsRnJhbWVf
aAogCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAKIG5hbWVzcGFjZSBKU0MgewotICAgIAotICAg
IGNsYXNzIERlYnVnZ2VyQ2FsbEZyYW1lIHsKKworICAgIGNsYXNzIEpTX0VYUE9SVERBVEEgRGVi
dWdnZXJDYWxsRnJhbWUgewogICAgIHB1YmxpYzoKICAgICAgICAgZW51bSBUeXBlIHsgUHJvZ3Jh
bVR5cGUsIEZ1bmN0aW9uVHlwZSB9OwogCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9JbnRlcnByZXRlci5oIGIvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXIuaAppbmRleCA1MTljNTA4Li5kOWIwYTdmIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCisrKyBiL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmgKQEAgLTY2LDcgKzY2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICBlbnVtIHsgTWF4TWFpblRocmVhZFJlZW50cnlEZXB0aCA9IDI1NiwgTWF4U2Vjb25kYXJ5VGhy
ZWFkUmVlbnRyeURlcHRoID0gMzIgfTsKIAotICAgIGNsYXNzIEludGVycHJldGVyIDogcHVibGlj
IEZhc3RBbGxvY0Jhc2UgeworICAgIGNsYXNzIEpTX0VYUE9SVERBVEEgSW50ZXJwcmV0ZXIgOiBw
dWJsaWMgRmFzdEFsbG9jQmFzZSB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAgICAg
IGZyaWVuZCBjbGFzcyBDYWNoZWRDYWxsOwogICAgIHB1YmxpYzoKZGlmZiAtLWdpdCBhL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oIGIvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgK
aW5kZXggODRlOGI5NS4uN2QxMzUyNSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L05vZGVzLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKQEAgLTE1OSw3ICsx
NTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgaW50IG1fbGluZTsKICAgICB9OwogCi0g
ICAgY2xhc3MgRXhwcmVzc2lvbk5vZGUgOiBwdWJsaWMgTm9kZSB7CisgICAgY2xhc3MgSlNfRVhQ
T1JUREFUQSBFeHByZXNzaW9uTm9kZSA6IHB1YmxpYyBOb2RlIHsKICAgICBwdWJsaWM6CiAgICAg
ICAgIEV4cHJlc3Npb25Ob2RlKEpTR2xvYmFsRGF0YSosIFJlc3VsdFR5cGUgPSBSZXN1bHRUeXBl
Ojp1bmtub3duVHlwZSgpKTsKIApAQCAtMTg3LDcgKzE4Nyw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBSZXN1bHRUeXBlIG1fcmVzdWx0VHlwZTsKICAgICB9OwogCi0gICAgY2xhc3MgU3Rh
dGVtZW50Tm9kZSA6IHB1YmxpYyBOb2RlIHsKKyAgICBjbGFzcyBKU19FWFBPUlREQVRBIFN0YXRl
bWVudE5vZGUgOiBwdWJsaWMgTm9kZSB7CiAgICAgcHVibGljOgogICAgICAgICBTdGF0ZW1lbnRO
b2RlKEpTR2xvYmFsRGF0YSopOwogCkBAIC0xNTM5LDcgKzE1MzksNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgT3duUHRyPEV2YWxDb2RlQmxvY2s+IG1fY29kZTsKICAgICB9OwogCi0gICAg
Y2xhc3MgRnVuY3Rpb25Cb2R5Tm9kZSA6IHB1YmxpYyBTY29wZU5vZGUgeworICAgIGNsYXNzIEpT
X0VYUE9SVERBVEEgRnVuY3Rpb25Cb2R5Tm9kZSA6IHB1YmxpYyBTY29wZU5vZGUgewogICAgICAg
ICBmcmllbmQgY2xhc3MgSklUOwogICAgIHB1YmxpYzoKICNpZiBFTkFCTEUoSklUKQpkaWZmIC0t
Z2l0IGEvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5oCmluZGV4IDM3M2RjMDAuLmNjZWJjOWUgMTAwNjQ0Ci0tLSBhL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmgKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4gc3RydWN0IFBhcnNlckFyZW5hRGF0YSA6IFBhcnNlckFyZW5hRGVsZXRhYmxlIHsg
VCBkYXRhOyB9OwogCi0gICAgY2xhc3MgUGFyc2VyIDogcHVibGljIE5vbmNvcHlhYmxlIHsKKyAg
ICBjbGFzcyBKU19FWFBPUlREQVRBIFBhcnNlciA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiAgICAg
cHVibGljOgogICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgUGFyc2VkTm9kZT4gUGFzc1JlZlB0cjxQ
YXJzZWROb2RlPiBwYXJzZShFeGVjU3RhdGUqLCBEZWJ1Z2dlciosIGNvbnN0IFNvdXJjZUNvZGUm
LCBpbnQqIGVyckxpbmUgPSAwLCBVU3RyaW5nKiBlcnJNc2cgPSAwKTsKICAgICAgICAgdGVtcGxh
dGUgPGNsYXNzIFBhcnNlZE5vZGU+IFBhc3NSZWZQdHI8UGFyc2VkTm9kZT4gcmVwYXJzZShKU0ds
b2JhbERhdGEqLCBQYXJzZWROb2RlKik7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyQXJlbmEuaCBiL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5oCmlu
ZGV4IDY2Yzg1MjkuLjU0OWI3ZGQgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXJBcmVuYS5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5oCkBA
IC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIFBhcnNlckFyZW5hRGVs
ZXRhYmxlOwogICAgIGNsYXNzIFBhcnNlckFyZW5hUmVmQ291bnRlZDsKIAotICAgIGNsYXNzIFBh
cnNlckFyZW5hIHsKKyAgICBjbGFzcyBKU19FWFBPUlREQVRBIFBhcnNlckFyZW5hIHsKICAgICBw
dWJsaWM6CiAgICAgICAgIHZvaWQgc3dhcChQYXJzZXJBcmVuYSYgb3RoZXJBcmVuYSkKICAgICAg
ICAgewpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcGNyZS9wY3JlLmggYi9KYXZhU2NyaXB0
Q29yZS9wY3JlL3BjcmUuaAppbmRleCA1NTA0NGZkLi5iMjBkOTBkIDEwMDY0NAotLS0gYS9KYXZh
U2NyaXB0Q29yZS9wY3JlL3BjcmUuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9wY3JlL3BjcmUuaApA
QCAtNTUsMTQgKzU1LDE0IEBAIGNvbnN0IGludCBKU1JlZ0V4cEVycm9ySGl0TGltaXQgPSAtMjsK
IGNvbnN0IGludCBKU1JlZ0V4cEVycm9yTm9NZW1vcnkgPSAtMzsKIGNvbnN0IGludCBKU1JlZ0V4
cEVycm9ySW50ZXJuYWwgPSAtNDsKIAotSlNSZWdFeHAqIGpzUmVnRXhwQ29tcGlsZShjb25zdCBV
Q2hhciogcGF0dGVybiwgaW50IHBhdHRlcm5MZW5ndGgsCitKU19FWFBPUlREQVRBIEpTUmVnRXhw
KiBqc1JlZ0V4cENvbXBpbGUoY29uc3QgVUNoYXIqIHBhdHRlcm4sIGludCBwYXR0ZXJuTGVuZ3Ro
LAogICAgIEpTUmVnRXhwSWdub3JlQ2FzZU9wdGlvbiwgSlNSZWdFeHBNdWx0aWxpbmVPcHRpb24s
CiAgICAgdW5zaWduZWQqIG51bVN1YnBhdHRlcm5zLCBjb25zdCBjaGFyKiogZXJyb3JNZXNzYWdl
KTsKIAotaW50IGpzUmVnRXhwRXhlY3V0ZShjb25zdCBKU1JlZ0V4cCosCitKU19FWFBPUlREQVRB
IGludCBqc1JlZ0V4cEV4ZWN1dGUoY29uc3QgSlNSZWdFeHAqLAogICAgIGNvbnN0IFVDaGFyKiBz
dWJqZWN0LCBpbnQgc3ViamVjdExlbmd0aCwgaW50IHN0YXJ0T2Zmc2V0LAogICAgIGludCogb2Zm
c2V0c1ZlY3RvciwgaW50IG9mZnNldHNWZWN0b3JMZW5ndGgpOwogCi12b2lkIGpzUmVnRXhwRnJl
ZShKU1JlZ0V4cCopOworSlNfRVhQT1JUREFUQSB2b2lkIGpzUmVnRXhwRnJlZShKU1JlZ0V4cCop
OwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGUu
aCBiL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGUuaAppbmRleCA2YmYyOWY3Li5hZjMz
MjQzIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlLmgKKysrIGIv
SmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZS5oCkBAIC0zMyw3ICszMyw3IEBACiAKIG5h
bWVzcGFjZSBKU0MgewogCi0gICAgY2xhc3MgUHJvZmlsZSA6IHB1YmxpYyBSZWZDb3VudGVkPFBy
b2ZpbGU+IHsKKyAgICBjbGFzcyBKU19FWFBPUlREQVRBIFByb2ZpbGUgOiBwdWJsaWMgUmVmQ291
bnRlZDxQcm9maWxlPiB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxQ
cm9maWxlPiBjcmVhdGUoY29uc3QgVVN0cmluZyYgdGl0bGUsIHVuc2lnbmVkIHVpZCk7CiAgICAg
ICAgIHZpcnR1YWwgflByb2ZpbGUoKTsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3Byb2Zp
bGVyL1Byb2ZpbGVyLmggYi9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlci5oCmluZGV4
IDIxNjIxYmYuLjZmZTAzOTMgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1By
b2ZpbGVyLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXIuaApAQCAtMzAs
NiArMzAsNyBAQAogI2RlZmluZSBQcm9maWxlcl9oCiAKICNpbmNsdWRlICJQcm9maWxlLmgiCisj
aW5jbHVkZSAiUHJvZmlsZUdlbmVyYXRvci5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTQw
LDE4ICs0MSwxNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBKU0dsb2JhbERhdGE7CiAg
ICAgY2xhc3MgSlNPYmplY3Q7CiAgICAgY2xhc3MgSlNWYWx1ZTsKLSAgICBjbGFzcyBQcm9maWxl
R2VuZXJhdG9yOwogICAgIGNsYXNzIFVTdHJpbmc7CiAgICAgc3RydWN0IENhbGxJZGVudGlmaWVy
OyAgICAKIAotICAgIGNsYXNzIFByb2ZpbGVyIDogcHVibGljIEZhc3RBbGxvY0Jhc2UgeworICAg
IGNsYXNzIEpTX0VYUE9SVERBVEEgUHJvZmlsZXIgOiBwdWJsaWMgRmFzdEFsbG9jQmFzZSB7CiAg
ICAgcHVibGljOgogICAgICAgICBzdGF0aWMgUHJvZmlsZXIqKiBlbmFibGVkUHJvZmlsZXJSZWZl
cmVuY2UoKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gJnNfc2hhcmVkRW5hYmxlZFBy
b2ZpbGVyUmVmZXJlbmNlOwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIFByb2ZpbGVyKiBw
cm9maWxlcigpOyAKKyAgICAgICAgc3RhdGljIFByb2ZpbGVyKiBwcm9maWxlcigpOwogICAgICAg
ICBzdGF0aWMgQ2FsbElkZW50aWZpZXIgY3JlYXRlQ2FsbElkZW50aWZpZXIoSlNHbG9iYWxEYXRh
KiwgSlNWYWx1ZSwgY29uc3QgVVN0cmluZyYgc291cmNlVVJMLCBpbnQgbGluZU51bWJlcik7CiAK
ICAgICAgICAgdm9pZCBzdGFydFByb2ZpbGluZyhFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJiB0
aXRsZSk7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuaCBiL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5oCmluZGV4IDA4OTllODUuLjhlOWI5NmEgMTAw
NjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5oCisrKyBiL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5oCkBAIC0zMSw3ICszMSw3IEBACiAKIG5hbWVzcGFjZSBK
U0MgewogICAgIAotICAgIGNsYXNzIE1hcmtlZEFyZ3VtZW50QnVmZmVyIDogcHVibGljIE5vbmNv
cHlhYmxlIHsKKyAgICBjbGFzcyBKU19FWFBPUlREQVRBIE1hcmtlZEFyZ3VtZW50QnVmZmVyIDog
cHVibGljIE5vbmNvcHlhYmxlIHsKICAgICBwcml2YXRlOgogICAgICAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgaW5saW5lQ2FwYWNpdHkgPSA4OwogICAgICAgICB0eXBlZGVmIFZlY3RvcjxSZWdp
c3RlciwgaW5saW5lQ2FwYWNpdHk+IFZlY3RvclR5cGU7CkBAIC0xNzEsNyArMTcxLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqLCBzaXplX3Qp
OwogICAgIH07CiAKLSAgICBjbGFzcyBBcmdMaXN0IHsKKyAgICBjbGFzcyBKU19FWFBPUlREQVRB
IEFyZ0xpc3QgewogICAgICAgICBmcmllbmQgY2xhc3MgSklUOwogICAgIHB1YmxpYzoKICAgICAg
ICAgdHlwZWRlZiBKU1ZhbHVlKiBpdGVyYXRvcjsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQm9vbGVhbk9iamVjdC5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFu
T2JqZWN0LmgKaW5kZXggY2ZkNTVmZS4uZTQxYjYxZSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Cb29sZWFuT2JqZWN0LmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9C
b29sZWFuT2JqZWN0LmgKQEAgLTI1LDcgKzI1LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLSAg
ICBjbGFzcyBCb29sZWFuT2JqZWN0IDogcHVibGljIEpTV3JhcHBlck9iamVjdCB7CisgICAgY2xh
c3MgSlNfRVhQT1JUREFUQSBCb29sZWFuT2JqZWN0IDogcHVibGljIEpTV3JhcHBlck9iamVjdCB7
CiAgICAgcHVibGljOgogICAgICAgICBleHBsaWNpdCBCb29sZWFuT2JqZWN0KFBhc3NSZWZQdHI8
U3RydWN0dXJlPik7CiAKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FsbERh
dGEuaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FsbERhdGEuaAppbmRleCBkNWIwMTcyLi43
NDRkNmE1IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhbGxEYXRhLmgKKysr
IGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWxsRGF0YS5oCkBAIC00OCw3ICs0OCw3IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgdHlwZWRlZiBKU1ZhbHVlIChKU0NfSE9TVF9DQUxMICpOYXRp
dmVGdW5jdGlvbikoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgY29u
c3QgQXJnTGlzdCYpOwogCi0gICAgdW5pb24gQ2FsbERhdGEgeworICAgIHVuaW9uIEpTX0VYUE9S
VERBVEEgQ2FsbERhdGEgewogICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgTmF0aXZlRnVu
Y3Rpb24gZnVuY3Rpb247CiAgICAgICAgIH0gbmF0aXZlOwpAQCAtNTgsNyArNTgsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgfSBqczsKICAgICB9OwogCi0gICAgSlNWYWx1ZSBjYWxsKEV4
ZWNTdGF0ZSosIEpTVmFsdWUgZnVuY3Rpb25PYmplY3QsIENhbGxUeXBlLCBjb25zdCBDYWxsRGF0
YSYsIEpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0Jik7CisgICAgSlNfRVhQT1JUREFU
QSBKU1ZhbHVlIGNhbGwoRXhlY1N0YXRlKiwgSlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwgQ2FsbFR5
cGUsIGNvbnN0IENhbGxEYXRhJiwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3QmKTsK
IAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29sbGVjdG9yLmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbGxlY3Rvci5oCmluZGV4
IDg1MmFjNTkuLmQwOTYzZmEgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29s
bGVjdG9yLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2xsZWN0b3IuaApAQCAtNjMs
NyArNjMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgT3BlcmF0aW9uSW5Qcm9ncmVzcyBv
cGVyYXRpb25JblByb2dyZXNzOwogICAgIH07CiAKLSAgICBjbGFzcyBIZWFwIDogcHVibGljIE5v
bmNvcHlhYmxlIHsKKyAgICBjbGFzcyBKU19FWFBPUlREQVRBIEhlYXAgOiBwdWJsaWMgTm9uY29w
eWFibGUgewogICAgIHB1YmxpYzoKICAgICAgICAgY2xhc3MgVGhyZWFkOwogICAgICAgICB0eXBl
ZGVmIENvbGxlY3RvckhlYXBJdGVyYXRvcjxQcmltYXJ5SGVhcD4gaXRlcmF0b3I7CmRpZmYgLS1n
aXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uaCBiL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tcGxldGlvbi5oCmluZGV4IDQxYzlhNjQuLjEwZjdmYmEgMTAwNjQ0Ci0tLSBh
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5oCisrKyBiL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tcGxldGlvbi5oCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAqIENvbXBsZXRpb24gb2JqZWN0cyBhcmUgdXNlZCB0byBjb252ZXkgdGhlIHJldHVybiBz
dGF0dXMgYW5kIHZhbHVlCiAgICAgICogZnJvbSBmdW5jdGlvbnMuCiAgICAgICovCi0gICAgY2xh
c3MgQ29tcGxldGlvbiB7CisgICAgY2xhc3MgSlNfRVhQT1JUREFUQSBDb21wbGV0aW9uIHsKICAg
ICBwdWJsaWM6CiAgICAgICAgIENvbXBsZXRpb24oQ29tcGxUeXBlIHR5cGUgPSBOb3JtYWwsIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlKCkpCiAgICAgICAgICAgICA6IG1fdHlwZSh0eXBlKQpAQCAt
NTUsOCArNTUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNWYWx1ZSBtX3ZhbHVlOwog
ICAgIH07CiAKLSAgICBDb21wbGV0aW9uIGNoZWNrU3ludGF4KEV4ZWNTdGF0ZSosIGNvbnN0IFNv
dXJjZUNvZGUmKTsKLSAgICBDb21wbGV0aW9uIGV2YWx1YXRlKEV4ZWNTdGF0ZSosIFNjb3BlQ2hh
aW4mLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNWYWx1ZSB0aGlzVmFsdWUgPSBKU1ZhbHVlKCkpOwor
ICAgIEpTX0VYUE9SVERBVEEgQ29tcGxldGlvbiBjaGVja1N5bnRheChFeGVjU3RhdGUqLCBjb25z
dCBTb3VyY2VDb2RlJik7CisgICAgSlNfRVhQT1JUREFUQSBDb21wbGV0aW9uIGV2YWx1YXRlKEV4
ZWNTdGF0ZSosIFNjb3BlQ2hhaW4mLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBKU1ZhbHVlKCkpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db25zdHJ1Y3REYXRhLmggYi9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbnN0cnVjdERhdGEuaAppbmRleCA5ZDU4MGQ1Li5lNWU0NmU3IDEwMDY0NAotLS0gYS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0cnVjdERhdGEuaAorKysgYi9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbnN0cnVjdERhdGEuaApAQCAtNDYsNyArNDYsNyBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgIHR5cGVkZWYgSlNPYmplY3QqICgqTmF0aXZlQ29uc3RydWN0b3IpKEV4ZWNTdGF0
ZSosIEpTT2JqZWN0KiwgY29uc3QgQXJnTGlzdCYpOwogCi0gICAgdW5pb24gQ29uc3RydWN0RGF0
YSB7CisgICAgdW5pb24gSlNfRVhQT1JUREFUQSBDb25zdHJ1Y3REYXRhIHsKICAgICAgICAgc3Ry
dWN0IHsKICAgICAgICAgICAgIE5hdGl2ZUNvbnN0cnVjdG9yIGZ1bmN0aW9uOwogICAgICAgICB9
IG5hdGl2ZTsKQEAgLTU2LDcgKzU2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0ganM7
CiAgICAgfTsKIAotICAgIEpTT2JqZWN0KiBjb25zdHJ1Y3QoRXhlY1N0YXRlKiwgSlNWYWx1ZSBj
b25zdHJ1Y3RvciwgQ29uc3RydWN0VHlwZSwgY29uc3QgQ29uc3RydWN0RGF0YSYsIGNvbnN0IEFy
Z0xpc3QmKTsKKyAgICBKU19FWFBPUlREQVRBIEpTT2JqZWN0KiBjb25zdHJ1Y3QoRXhlY1N0YXRl
KiwgSlNWYWx1ZSBjb25zdHJ1Y3RvciwgQ29uc3RydWN0VHlwZSwgY29uc3QgQ29uc3RydWN0RGF0
YSYsIGNvbnN0IEFyZ0xpc3QmKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBh
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmggYi9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0RhdGVJbnN0YW5jZS5oCmluZGV4IDNiNzM1MjEuLjBjMjc2M2MgMTAwNjQ0Ci0tLSBh
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmgKKysrIGIvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9EYXRlSW5zdGFuY2UuaApAQCAtMjksNyArMjksNyBAQCBuYW1lc3BhY2UgV1RG
IHsKIAogbmFtZXNwYWNlIEpTQyB7CiAKLSAgICBjbGFzcyBEYXRlSW5zdGFuY2UgOiBwdWJsaWMg
SlNXcmFwcGVyT2JqZWN0IHsKKyAgICBjbGFzcyBKU19FWFBPUlREQVRBIERhdGVJbnN0YW5jZSA6
IHB1YmxpYyBKU1dyYXBwZXJPYmplY3QgewogICAgIHB1YmxpYzoKICAgICAgICAgZXhwbGljaXQg
RGF0ZUluc3RhbmNlKFBhc3NSZWZQdHI8U3RydWN0dXJlPik7CiAgICAgICAgIHZpcnR1YWwgfkRh
dGVJbnN0YW5jZSgpOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5o
IGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oCmluZGV4IGFkZjdmZGYuLmNkMWZhYzkg
MTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaAorKysgYi9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Vycm9yLmgKQEAgLTU1LDEwICs1NSwxMCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgc3RhdGljIEpTT2JqZWN0KiBjcmVhdGUoRXhlY1N0YXRlKiwgRXJyb3JUeXBl
LCBjb25zdCBjaGFyKiBtZXNzYWdlKTsKICAgICB9OwogCi0gICAgSlNPYmplY3QqIHRocm93RXJy
b3IoRXhlY1N0YXRlKiwgRXJyb3JUeXBlLCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlLCBpbnQgbGlu
ZU51bWJlciwgaW50cHRyX3Qgc291cmNlSUQsIGNvbnN0IFVTdHJpbmcmIHNvdXJjZVVSTCk7Ci0g
ICAgSlNPYmplY3QqIHRocm93RXJyb3IoRXhlY1N0YXRlKiwgRXJyb3JUeXBlLCBjb25zdCBVU3Ry
aW5nJiBtZXNzYWdlKTsKLSAgICBKU09iamVjdCogdGhyb3dFcnJvcihFeGVjU3RhdGUqLCBFcnJv
clR5cGUsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpOwotICAgIEpTT2JqZWN0KiB0aHJvd0Vycm9yKEV4
ZWNTdGF0ZSosIEVycm9yVHlwZSk7CisgICAgSlNfRVhQT1JUREFUQSBKU09iamVjdCogdGhyb3dF
cnJvcihFeGVjU3RhdGUqLCBFcnJvclR5cGUsIGNvbnN0IFVTdHJpbmcmIG1lc3NhZ2UsIGludCBs
aW5lTnVtYmVyLCBpbnRwdHJfdCBzb3VyY2VJRCwgY29uc3QgVVN0cmluZyYgc291cmNlVVJMKTsK
KyAgICBKU19FWFBPUlREQVRBIEpTT2JqZWN0KiB0aHJvd0Vycm9yKEV4ZWNTdGF0ZSosIEVycm9y
VHlwZSwgY29uc3QgVVN0cmluZyYgbWVzc2FnZSk7CisgICAgSlNfRVhQT1JUREFUQSBKU09iamVj
dCogdGhyb3dFcnJvcihFeGVjU3RhdGUqLCBFcnJvclR5cGUsIGNvbnN0IGNoYXIqIG1lc3NhZ2Up
OworICAgIEpTX0VYUE9SVERBVEEgSlNPYmplY3QqIHRocm93RXJyb3IoRXhlY1N0YXRlKiwgRXJy
b3JUeXBlKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgKaW5kZXggMTI0YjM1NC4uYzdiNzdmMiAxMDA2NDQKLS0t
IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgKKysrIGIvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgKQEAgLTI5LDcgKzI5LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgUHJvZ3JhbU5vZGU7CiAgICAgY2xhc3MgRnVu
Y3Rpb25Cb2R5Tm9kZTsKIAotICAgIGNsYXNzIEZ1bmN0aW9uQ29uc3RydWN0b3IgOiBwdWJsaWMg
SW50ZXJuYWxGdW5jdGlvbiB7CisgICAgY2xhc3MgSlNfRVhQT1JUREFUQSBGdW5jdGlvbkNvbnN0
cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewogICAgIHB1YmxpYzoKICAgICAgICAg
RnVuY3Rpb25Db25zdHJ1Y3RvcihFeGVjU3RhdGUqLCBQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIEZ1
bmN0aW9uUHJvdG90eXBlKik7CiAKQEAgLTM4LDEwICszOCwxMCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgdmlydHVhbCBDYWxsVHlwZSBnZXRDYWxsRGF0YShDYWxsRGF0YSYpOwogICAgIH07
CiAKLSAgICBKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiwgY29uc3QgQXJn
TGlzdCYsIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwgY29uc3QgVVN0cmluZyYgc291
cmNlVVJMLCBpbnQgbGluZU51bWJlcik7Ci0gICAgSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9u
KEV4ZWNTdGF0ZSosIGNvbnN0IEFyZ0xpc3QmKTsKKyAgICBKU19FWFBPUlREQVRBIEpTT2JqZWN0
KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqLCBjb25zdCBBcmdMaXN0JiwgY29uc3QgSWRl
bnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBVU3RyaW5nJiBzb3VyY2VVUkwsIGludCBsaW5l
TnVtYmVyKTsKKyAgICBKU19FWFBPUlREQVRBIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihF
eGVjU3RhdGUqLCBjb25zdCBBcmdMaXN0Jik7CiAKLSAgICBGdW5jdGlvbkJvZHlOb2RlKiBleHRy
YWN0RnVuY3Rpb25Cb2R5KFByb2dyYW1Ob2RlKik7CisgICAgSlNfRVhQT1JUREFUQSBGdW5jdGlv
bkJvZHlOb2RlKiBleHRyYWN0RnVuY3Rpb25Cb2R5KFByb2dyYW1Ob2RlKik7CiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZp
ZXIuaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCmluZGV4IDYzMWNmNDIu
LmEwZDk2NzEgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5o
CisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCkBAIC0yOCw3ICsyOCw3
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRXhlY1N0YXRlOwogCi0gICAgY2xhc3Mg
SWRlbnRpZmllciB7CisgICAgY2xhc3MgSlNfRVhQT1JUREFUQSBJZGVudGlmaWVyIHsKICAgICAg
ICAgZnJpZW5kIGNsYXNzIFN0cnVjdHVyZTsKICAgICBwdWJsaWM6CiAgICAgICAgIElkZW50aWZp
ZXIoKSB7IH0KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRo
cmVhZGluZy5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmgK
aW5kZXggMWE5M2NjYi4uZDgzOTdlMCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Jbml0aWFsaXplVGhyZWFkaW5nLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0
aWFsaXplVGhyZWFkaW5nLmgKQEAgLTI1LDcgKzI1LDcgQEAKICAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgog
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwotIAorCiAjaWZuZGVmIEluaXRpYWxpemVUaHJlYWRpbmdfaAogI2Rl
ZmluZSBJbml0aWFsaXplVGhyZWFkaW5nX2gKIApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgIC8vIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQgZnJvbSB0aGUgbWFp
biB0aHJlYWQuIEl0IGlzIHNhZmUgdG8gY2FsbCBpdCByZXBlYXRlZGx5LgogICAgIC8vIERhcndp
biBpcyBhbiBleGNlcHRpb24gdG8gdGhpcyBydWxlOiBpdCBpcyBPSyB0byBjYWxsIHRoaXMgZnVu
Y3Rpb24gZnJvbSBhbnkgdGhyZWFkLCBldmVuIHJlZW50cmFudGx5LgotICAgIHZvaWQgaW5pdGlh
bGl6ZVRocmVhZGluZygpOworICAgIEpTX0VYUE9SVERBVEEgdm9pZCBpbml0aWFsaXplVGhyZWFk
aW5nKCk7CiAKIH0KIApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5h
bEZ1bmN0aW9uLmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaApp
bmRleCAzMTA2NDRjLi5jOWVhMjdiIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGVybmFsRnVuY3Rpb24uaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFs
RnVuY3Rpb24uaApAQCAtMzEsMTAgKzMxLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xh
c3MgRnVuY3Rpb25Qcm90b3R5cGU7CiAKLSAgICBjbGFzcyBJbnRlcm5hbEZ1bmN0aW9uIDogcHVi
bGljIEpTT2JqZWN0IHsKKyAgICBjbGFzcyBKU19FWFBPUlREQVRBIEludGVybmFsRnVuY3Rpb24g
OiBwdWJsaWMgSlNPYmplY3QgewogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCBjb25zdCBD
bGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0OyAKLSAgICAgICAgc3RhdGljIEpTX0VYUE9SVERB
VEEgY29uc3QgQ2xhc3NJbmZvIGluZm87CisgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8g
aW5mbzsKIAogICAgICAgICBjb25zdCBVU3RyaW5nJiBuYW1lKEpTR2xvYmFsRGF0YSopOwogICAg
ICAgICBjb25zdCBVU3RyaW5nIGRpc3BsYXlOYW1lKEpTR2xvYmFsRGF0YSopOwpkaWZmIC0tZ2l0
IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmggYi9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXkuaAppbmRleCBlYTQ5MGQ4Li40YzBhY2M5IDEwMDY0NAotLS0gYS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyYXkuaApAQCAtMTEyLDEwICsxMTIsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBKU0Fy
cmF5KiBhc0FycmF5KEpTVmFsdWUpOwogCi0gICAgSlNBcnJheSogY29uc3RydWN0RW1wdHlBcnJh
eShFeGVjU3RhdGUqKTsKLSAgICBKU0FycmF5KiBjb25zdHJ1Y3RFbXB0eUFycmF5KEV4ZWNTdGF0
ZSosIHVuc2lnbmVkIGluaXRpYWxMZW5ndGgpOwotICAgIEpTQXJyYXkqIGNvbnN0cnVjdEFycmF5
KEV4ZWNTdGF0ZSosIEpTVmFsdWUgc2luZ2xlSXRlbVZhbHVlKTsKLSAgICBKU0FycmF5KiBjb25z
dHJ1Y3RBcnJheShFeGVjU3RhdGUqLCBjb25zdCBBcmdMaXN0JiB2YWx1ZXMpOworICAgIEpTX0VY
UE9SVERBVEEgSlNBcnJheSogY29uc3RydWN0RW1wdHlBcnJheShFeGVjU3RhdGUqKTsKKyAgICBK
U19FWFBPUlREQVRBIEpTQXJyYXkqIGNvbnN0cnVjdEVtcHR5QXJyYXkoRXhlY1N0YXRlKiwgdW5z
aWduZWQgaW5pdGlhbExlbmd0aCk7CisgICAgSlNfRVhQT1JUREFUQSBKU0FycmF5KiBjb25zdHJ1
Y3RBcnJheShFeGVjU3RhdGUqLCBKU1ZhbHVlIHNpbmdsZUl0ZW1WYWx1ZSk7CisgICAgSlNfRVhQ
T1JUREFUQSBKU0FycmF5KiBjb25zdHJ1Y3RBcnJheShFeGVjU3RhdGUqLCBjb25zdCBBcmdMaXN0
JiB2YWx1ZXMpOwogCiAgICAgaW5saW5lIEpTQXJyYXkqIGFzQXJyYXkoSlNWYWx1ZSB2YWx1ZSkK
ICAgICB7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5Lmgg
Yi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5LmgKaW5kZXggYTU2YWNhNi4uYjc4
MzA1NCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJheS5oCisr
KyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuaApAQCAtMzIsNyArMzIsNyBA
QAogCiBuYW1lc3BhY2UgSlNDIHsKIAotICAgIGNsYXNzIEpTQnl0ZUFycmF5IDogcHVibGljIEpT
T2JqZWN0IHsKKyAgICBjbGFzcyBKU19FWFBPUlREQVRBIEpTQnl0ZUFycmF5IDogcHVibGljIEpT
T2JqZWN0IHsKICAgICAgICAgZnJpZW5kIHN0cnVjdCBWUHRyU2V0OwogICAgIHB1YmxpYzoKICAg
ICAgICAgYm9vbCBjYW5BY2Nlc3NJbmRleCh1bnNpZ25lZCBpKSB7IHJldHVybiBpIDwgbV9zdG9y
YWdlLT5sZW5ndGgoKTsgfQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nl
bGwuaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKaW5kZXggNDg1ZDIwNC4uMTk3
ZTM2NyAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAorKysgYi9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCkBAIC0zMSw3ICszMSw3IEBACiAKIG5hbWVz
cGFjZSBKU0MgewogCi0gICAgY2xhc3MgSlNDZWxsIDogcHVibGljIE5vbmNvcHlhYmxlQ3VzdG9t
QWxsb2NhdGVkIHsKKyAgICBjbGFzcyBKU19FWFBPUlREQVRBIEpTQ2VsbCA6IHB1YmxpYyBOb25j
b3B5YWJsZUN1c3RvbUFsbG9jYXRlZCB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBHZXR0ZXJTZXR0
ZXI7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBIZWFwOwogICAgICAgICBmcmllbmQgY2xhc3MgSklU
OwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaCBiL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgKaW5kZXggMDM5OWYyNi4uNGFkOGQ1
NCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAorKysg
Yi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCkBAIC02MSw3ICs2MSw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIHN0cnVjdCBJbnN0cnVjdGlvbjsgICAgCiAgICAgc3RydWN0
IFZQdHJTZXQ7CiAKLSAgICBjbGFzcyBKU0dsb2JhbERhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxK
U0dsb2JhbERhdGE+IHsKKyAgICBjbGFzcyBKU19FWFBPUlREQVRBIEpTR2xvYmFsRGF0YSA6IHB1
YmxpYyBSZWZDb3VudGVkPEpTR2xvYmFsRGF0YT4gewogICAgIHB1YmxpYzoKICAgICAgICAgc3Ry
dWN0IENsaWVudERhdGEgewogICAgICAgICAgICAgdmlydHVhbCB+Q2xpZW50RGF0YSgpID0gMDsK
ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCA3YWI3NTlkLi44MmYx
MzY4IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgK
KysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC01MSw3ICs1
MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgdHlwZWRlZiBWZWN0b3I8RXhlY1N0YXRlKiwg
MTY+IEV4ZWNTdGF0ZVN0YWNrOwogCi0gICAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMg
SlNWYXJpYWJsZU9iamVjdCB7CisgICAgY2xhc3MgSlNfRVhQT1JUREFUQSBKU0dsb2JhbE9iamVj
dCA6IHB1YmxpYyBKU1ZhcmlhYmxlT2JqZWN0IHsKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHVz
aW5nIEpTVmFyaWFibGVPYmplY3Q6OkpTVmFyaWFibGVPYmplY3REYXRhOwogCmRpZmYgLS1naXQg
YS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW1tZWRpYXRlLmggYi9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTSW1tZWRpYXRlLmgKaW5kZXggNzA2Mzk2ZS4uZGY4ODVhOSAxMDA2NDQKLS0tIGEv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ltbWVkaWF0ZS5oCisrKyBiL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNJbW1lZGlhdGUuaApAQCAtMTI5LDcgKzEyOSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAqIHZhbHVlcyBhcmUgZW5jb2RlZCBpbiB0aGUgc2FtZSBtYW5uZXIgYXMgdGhlIGRl
ZmF1bHQgZm9ybWF0LgogICAgICAqLwogCi0gICAgY2xhc3MgSlNJbW1lZGlhdGUgeworICAgIGNs
YXNzIEpTX0VYUE9SVERBVEEgSlNJbW1lZGlhdGUgewogICAgIHByaXZhdGU6CiAgICAgICAgIGZy
aWVuZCBjbGFzcyBKSVQ7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKU1ZhbHVlOwpAQCAtNTQyLDEw
ICs1NDIsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfQogCiAgICAgLy8gVGhlc2UgYXJlIGlk
ZW50aWNhbCBsb2dpYyB0byB0aGUgSlNWYWx1ZSBmdW5jdGlvbnMgYWJvdmUsIGFuZCBmYXN0ZXIg
dGhhbiBqc051bWJlcihudW1iZXIpLnRvSW50MzIoKS4KLSAgICBpbnQzMl90IHRvSW50MzIoZG91
YmxlKTsKLSAgICB1aW50MzJfdCB0b1VJbnQzMihkb3VibGUpOwotICAgIGludDMyX3QgdG9JbnQz
MlNsb3dDYXNlKGRvdWJsZSwgYm9vbCYgb2spOwotICAgIHVpbnQzMl90IHRvVUludDMyU2xvd0Nh
c2UoZG91YmxlLCBib29sJiBvayk7CisgICAgSlNfRVhQT1JUREFUQSBpbnQzMl90IHRvSW50MzIo
ZG91YmxlKTsKKyAgICBKU19FWFBPUlREQVRBIHVpbnQzMl90IHRvVUludDMyKGRvdWJsZSk7Cisg
ICAgSlNfRVhQT1JUREFUQSBpbnQzMl90IHRvSW50MzJTbG93Q2FzZShkb3VibGUsIGJvb2wmIG9r
KTsKKyAgICBKU19FWFBPUlREQVRBIHVpbnQzMl90IHRvVUludDMyU2xvd0Nhc2UoZG91YmxlLCBi
b29sJiBvayk7CiAKICAgICBpbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShKU051bGxUYWcpCiAgICAg
ewpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaCBiL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNMb2NrLmgKaW5kZXggOGIwMTVjNC4uZGI1YzUxZCAxMDA2NDQKLS0t
IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaAorKysgYi9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTG9jay5oCkBAIC01Miw3ICs1Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
ZW51bSBKU0xvY2tCZWhhdmlvciB7IFNpbGVuY2VBc3NlcnRpb25zT25seSwgTG9ja0ZvclJlYWwg
fTsKIAotICAgIGNsYXNzIEpTTG9jayA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CisgICAgY2xhc3Mg
SlNfRVhQT1JUREFUQSBKU0xvY2sgOiBwdWJsaWMgTm9uY29weWFibGUgewogICAgIHB1YmxpYzoK
ICAgICAgICAgSlNMb2NrKEV4ZWNTdGF0ZSopOwogCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTnVtYmVyQ2VsbC5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU051bWJl
ckNlbGwuaAppbmRleCBhMzVlMjEwLi4yNmMxZDI5IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTnVtYmVyQ2VsbC5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNO
dW1iZXJDZWxsLmgKQEAgLTMyLDExICszMiwxMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotICAg
IGV4dGVybiBjb25zdCBkb3VibGUgTmFOOwotICAgIGV4dGVybiBjb25zdCBkb3VibGUgSW5mOwor
ICAgIEpTX0VYUE9SVERBVEEgZXh0ZXJuIGNvbnN0IGRvdWJsZSBOYU47CisgICAgSlNfRVhQT1JU
REFUQSBleHRlcm4gY29uc3QgZG91YmxlIEluZjsKIAotICAgIEpTVmFsdWUganNOdW1iZXJDZWxs
KEV4ZWNTdGF0ZSosIGRvdWJsZSk7Ci0gICAgSlNWYWx1ZSBqc0FQSU1hbmdsZWROdW1iZXIoRXhl
Y1N0YXRlKiwgZG91YmxlKTsKKyAgICBKU19FWFBPUlREQVRBIEpTVmFsdWUganNOdW1iZXJDZWxs
KEV4ZWNTdGF0ZSosIGRvdWJsZSk7CisgICAgSlNfRVhQT1JUREFUQSBKU1ZhbHVlIGpzQVBJTWFu
Z2xlZE51bWJlcihFeGVjU3RhdGUqLCBkb3VibGUpOwogCiAjaWYgIVVTRShBTFRFUk5BVEVfSlNJ
TU1FRElBVEUpCiAKQEAgLTQ5LDExICs0OSwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBzdHJ1
Y3QgQ2xhc3NJbmZvOwogICAgIHN0cnVjdCBJbnN0cnVjdGlvbjsKIAotICAgIGNsYXNzIEpTTnVt
YmVyQ2VsbCA6IHB1YmxpYyBKU0NlbGwgeworICAgIGNsYXNzIEpTX0VYUE9SVERBVEEgSlNOdW1i
ZXJDZWxsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAg
ICAgIGZyaWVuZCBKU1ZhbHVlIGpzTnVtYmVyQ2VsbChKU0dsb2JhbERhdGEqLCBkb3VibGUpOwot
ICAgICAgICBmcmllbmQgSlNWYWx1ZSBqc051bWJlckNlbGwoRXhlY1N0YXRlKiwgZG91YmxlKTsK
LSAgICAgICAgZnJpZW5kIEpTVmFsdWUganNBUElNYW5nbGVkTnVtYmVyKEV4ZWNTdGF0ZSosIGRv
dWJsZSk7CisgICAgICAgIGZyaWVuZCBKU19FWFBPUlREQVRBIEpTVmFsdWUganNOdW1iZXJDZWxs
KEV4ZWNTdGF0ZSosIGRvdWJsZSk7CisgICAgICAgIGZyaWVuZCBKU19FWFBPUlREQVRBIEpTVmFs
dWUganNBUElNYW5nbGVkTnVtYmVyKEV4ZWNTdGF0ZSosIGRvdWJsZSk7CiAgICAgcHVibGljOgog
ICAgICAgICBkb3VibGUgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CiAKZGlmZiAt
LWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCBiL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuaAppbmRleCAyYzhjODllLi40ZjJiNjE5IDEwMDY0NAotLS0gYS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdC5oCkBAIC02NCw3ICs2NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHR5
cGVkZWYgRW5jb2RlZEpTVmFsdWUqIFByb3BlcnR5U3RvcmFnZTsKICAgICB0eXBlZGVmIGNvbnN0
IEVuY29kZWRKU1ZhbHVlKiBDb25zdFByb3BlcnR5U3RvcmFnZTsKIAotICAgIGNsYXNzIEpTT2Jq
ZWN0IDogcHVibGljIEpTQ2VsbCB7CisgICAgY2xhc3MgSlNfRVhQT1JUREFUQSBKU09iamVjdCA6
IHB1YmxpYyBKU0NlbGwgewogICAgICAgICBmcmllbmQgY2xhc3MgQmF0Y2hlZFRyYW5zaXRpb25P
cHRpbWl6ZXI7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAgICAgIGZyaWVuZCBjbGFz
cyBKU0NlbGw7CkBAIC0yMzQsOSArMjM0LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH07
CiAgICAgfTsKIAotICAgIEpTT2JqZWN0KiBhc09iamVjdChKU1ZhbHVlKTsKKyAgICBKU19FWFBP
UlREQVRBIEpTT2JqZWN0KiBhc09iamVjdChKU1ZhbHVlKTsKIAotICAgIEpTT2JqZWN0KiBjb25z
dHJ1Y3RFbXB0eU9iamVjdChFeGVjU3RhdGUqKTsKKyAgICBKU19FWFBPUlREQVRBIEpTT2JqZWN0
KiBjb25zdHJ1Y3RFbXB0eU9iamVjdChFeGVjU3RhdGUqKTsKIAogaW5saW5lIEpTT2JqZWN0KiBh
c09iamVjdChKU1ZhbHVlIHZhbHVlKQogewpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N0cmluZy5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCmluZGV4
IDQxMGUxNzMuLmFhNmViNzIgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
dHJpbmcuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKQEAgLTMzLDMy
ICszMywzMiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEpTU3RyaW5nOwogCi0gICAg
SlNTdHJpbmcqIGpzRW1wdHlTdHJpbmcoSlNHbG9iYWxEYXRhKik7Ci0gICAgSlNTdHJpbmcqIGpz
RW1wdHlTdHJpbmcoRXhlY1N0YXRlKik7Ci0gICAgSlNTdHJpbmcqIGpzU3RyaW5nKEpTR2xvYmFs
RGF0YSosIGNvbnN0IFVTdHJpbmcmKTsgLy8gcmV0dXJucyBlbXB0eSBzdHJpbmcgaWYgcGFzc2Vk
IG51bGwgc3RyaW5nCi0gICAgSlNTdHJpbmcqIGpzU3RyaW5nKEV4ZWNTdGF0ZSosIGNvbnN0IFVT
dHJpbmcmKTsgLy8gcmV0dXJucyBlbXB0eSBzdHJpbmcgaWYgcGFzc2VkIG51bGwgc3RyaW5nCi0K
LSAgICBKU1N0cmluZyoganNTaW5nbGVDaGFyYWN0ZXJTdHJpbmcoSlNHbG9iYWxEYXRhKiwgVUNo
YXIpOwotICAgIEpTU3RyaW5nKiBqc1NpbmdsZUNoYXJhY3RlclN0cmluZyhFeGVjU3RhdGUqLCBV
Q2hhcik7Ci0gICAgSlNTdHJpbmcqIGpzU2luZ2xlQ2hhcmFjdGVyU3Vic3RyaW5nKEpTR2xvYmFs
RGF0YSosIGNvbnN0IFVTdHJpbmcmLCB1bnNpZ25lZCBvZmZzZXQpOwotICAgIEpTU3RyaW5nKiBq
c1NpbmdsZUNoYXJhY3RlclN1YnN0cmluZyhFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJiwgdW5z
aWduZWQgb2Zmc2V0KTsKLSAgICBKU1N0cmluZyoganNTdWJzdHJpbmcoSlNHbG9iYWxEYXRhKiwg
Y29uc3QgVVN0cmluZyYsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBK
U1N0cmluZyoganNTdWJzdHJpbmcoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYsIHVuc2lnbmVk
IG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBKU19FWFBPUlREQVRBIEpTU3RyaW5nKiBq
c0VtcHR5U3RyaW5nKEpTR2xvYmFsRGF0YSopOworICAgIEpTX0VYUE9SVERBVEEgSlNTdHJpbmcq
IGpzRW1wdHlTdHJpbmcoRXhlY1N0YXRlKik7CisgICAgSlNfRVhQT1JUREFUQSBKU1N0cmluZyog
anNTdHJpbmcoSlNHbG9iYWxEYXRhKiwgY29uc3QgVVN0cmluZyYpOyAvLyByZXR1cm5zIGVtcHR5
IHN0cmluZyBpZiBwYXNzZWQgbnVsbCBzdHJpbmcKKyAgICBKU19FWFBPUlREQVRBIEpTU3RyaW5n
KiBqc1N0cmluZyhFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJik7IC8vIHJldHVybnMgZW1wdHkg
c3RyaW5nIGlmIHBhc3NlZCBudWxsIHN0cmluZworCisgICAgSlNfRVhQT1JUREFUQSBKU1N0cmlu
ZyoganNTaW5nbGVDaGFyYWN0ZXJTdHJpbmcoSlNHbG9iYWxEYXRhKiwgVUNoYXIpOworICAgIEpT
X0VYUE9SVERBVEEgSlNTdHJpbmcqIGpzU2luZ2xlQ2hhcmFjdGVyU3RyaW5nKEV4ZWNTdGF0ZSos
IFVDaGFyKTsKKyAgICBKU19FWFBPUlREQVRBIEpTU3RyaW5nKiBqc1NpbmdsZUNoYXJhY3RlclN1
YnN0cmluZyhKU0dsb2JhbERhdGEqLCBjb25zdCBVU3RyaW5nJiwgdW5zaWduZWQgb2Zmc2V0KTsK
KyAgICBKU19FWFBPUlREQVRBIEpTU3RyaW5nKiBqc1NpbmdsZUNoYXJhY3RlclN1YnN0cmluZyhF
eGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJiwgdW5zaWduZWQgb2Zmc2V0KTsKKyAgICBKU19FWFBP
UlREQVRBIEpTU3RyaW5nKiBqc1N1YnN0cmluZyhKU0dsb2JhbERhdGEqLCBjb25zdCBVU3RyaW5n
JiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIEpTX0VYUE9SVERBVEEg
SlNTdHJpbmcqIGpzU3Vic3RyaW5nKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmLCB1bnNpZ25l
ZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CiAKICAgICAvLyBOb24tdHJpdmlhbCBzdHJpbmdz
IGFyZSB0d28gb3IgbW9yZSBjaGFyYWN0ZXJzIGxvbmcuCiAgICAgLy8gVGhlc2UgZnVuY3Rpb25z
IGFyZSBmYXN0ZXIgdGhhbiBqdXN0IGNhbGxpbmcganNTdHJpbmcuCi0gICAgSlNTdHJpbmcqIGpz
Tm9udHJpdmlhbFN0cmluZyhKU0dsb2JhbERhdGEqLCBjb25zdCBVU3RyaW5nJik7Ci0gICAgSlNT
dHJpbmcqIGpzTm9udHJpdmlhbFN0cmluZyhFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJik7Ci0g
ICAgSlNTdHJpbmcqIGpzTm9udHJpdmlhbFN0cmluZyhKU0dsb2JhbERhdGEqLCBjb25zdCBjaGFy
Kik7Ci0gICAgSlNTdHJpbmcqIGpzTm9udHJpdmlhbFN0cmluZyhFeGVjU3RhdGUqLCBjb25zdCBj
aGFyKik7CisgICAgSlNfRVhQT1JUREFUQSBKU1N0cmluZyoganNOb250cml2aWFsU3RyaW5nKEpT
R2xvYmFsRGF0YSosIGNvbnN0IFVTdHJpbmcmKTsKKyAgICBKU19FWFBPUlREQVRBIEpTU3RyaW5n
KiBqc05vbnRyaXZpYWxTdHJpbmcoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYpOworICAgIEpT
X0VYUE9SVERBVEEgSlNTdHJpbmcqIGpzTm9udHJpdmlhbFN0cmluZyhKU0dsb2JhbERhdGEqLCBj
b25zdCBjaGFyKik7CisgICAgSlNfRVhQT1JUREFUQSBKU1N0cmluZyoganNOb250cml2aWFsU3Ry
aW5nKEV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIqKTsKIAogICAgIC8vIFNob3VsZCBiZSB1c2VkIGZv
ciBzdHJpbmdzIHRoYXQgYXJlIG93bmVkIGJ5IGFuIG9iamVjdCB0aGF0IHdpbGwKICAgICAvLyBs
aWtlbHkgb3V0bGl2ZSB0aGUgSlNWYWx1ZSB0aGlzIG1ha2VzLCBzdWNoIGFzIHRoZSBwYXJzZSB0
cmVlIG9yIGEKICAgICAvLyBET00gb2JqZWN0IHRoYXQgY29udGFpbnMgYSBVU3RyaW5nCi0gICAg
SlNTdHJpbmcqIGpzT3duZWRTdHJpbmcoSlNHbG9iYWxEYXRhKiwgY29uc3QgVVN0cmluZyYpOyAK
LSAgICBKU1N0cmluZyoganNPd25lZFN0cmluZyhFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJik7
IAorICAgIEpTX0VYUE9SVERBVEEgSlNTdHJpbmcqIGpzT3duZWRTdHJpbmcoSlNHbG9iYWxEYXRh
KiwgY29uc3QgVVN0cmluZyYpOworICAgIEpTX0VYUE9SVERBVEEgSlNTdHJpbmcqIGpzT3duZWRT
dHJpbmcoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYpOwogCi0gICAgY2xhc3MgSlNTdHJpbmcg
OiBwdWJsaWMgSlNDZWxsIHsKKyAgICBjbGFzcyBKU19FWFBPUlREQVRBIEpTU3RyaW5nIDogcHVi
bGljIEpTQ2VsbCB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAgICAgIGZyaWVuZCBz
dHJ1Y3QgVlB0clNldDsKIApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Zh
cmlhYmxlT2JqZWN0LmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3Qu
aAppbmRleCBiOTY5ZGE1Li41NjAzMmNjIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTVmFyaWFibGVPYmplY3QuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFy
aWFibGVPYmplY3QuaApAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNs
YXNzIFJlZ2lzdGVyOwogCi0gICAgY2xhc3MgSlNWYXJpYWJsZU9iamVjdCA6IHB1YmxpYyBKU09i
amVjdCB7CisgICAgY2xhc3MgSlNfRVhQT1JUREFUQSBKU1ZhcmlhYmxlT2JqZWN0IDogcHVibGlj
IEpTT2JqZWN0IHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKIAogICAgIHB1YmxpYzoKQEAg
LTUwLDcgKzUwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdmlydHVhbCBib29sIGRl
bGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImKTsKICAgICAgICAgdmly
dHVhbCB2b2lkIGdldFByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkm
KTsKLSAgICAgICAgCisKICAgICAgICAgdmlydHVhbCBib29sIGlzVmFyaWFibGVPYmplY3QoKSBj
b25zdDsKICAgICAgICAgdmlydHVhbCBib29sIGlzRHluYW1pY1Njb3BlKCkgY29uc3QgPSAwOwog
CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9iamVjdC5oIGIv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dyYXBwZXJPYmplY3QuaAppbmRleCAyYTJlM2M2Li5k
MGJhYTg1IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9iamVj
dC5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmgKQEAgLTI1
LDEwICsyNSwxMCBAQAogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAKIG5hbWVzcGFjZSBKU0Mgewot
ICAgIAorCiAgICAgLy8gVGhpcyBjbGFzcyBpcyB1c2VkIGFzIGEgYmFzZSBmb3IgY2xhc3NlcyBz
dWNoIGFzIFN0cmluZywKICAgICAvLyBOdW1iZXIsIEJvb2xlYW4gYW5kIERhdGUgd2hpY2ggYXJl
IHdyYXBwZXJzIGZvciBwcmltaXRpdmUgdHlwZXMuCi0gICAgY2xhc3MgSlNXcmFwcGVyT2JqZWN0
IDogcHVibGljIEpTT2JqZWN0IHsKKyAgICBjbGFzcyBKU19FWFBPUlREQVRBIEpTV3JhcHBlck9i
amVjdCA6IHB1YmxpYyBKU09iamVjdCB7CiAgICAgcHJvdGVjdGVkOgogICAgICAgICBleHBsaWNp
dCBKU1dyYXBwZXJPYmplY3QoUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+KTsKIApkaWZmIC0tZ2l0IGEv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TG9va3VwLmgKaW5kZXggMTY3ZjJiYy4uMzA2NGM4MyAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Mb29rdXAuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5o
CkBAIC0xMDQsNyArMTA0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEhhc2hFbnRyeSog
bV9uZXh0OwogICAgIH07CiAKLSAgICBzdHJ1Y3QgSGFzaFRhYmxlIHsKKyAgICBzdHJ1Y3QgSlNf
RVhQT1JUREFUQSBIYXNoVGFibGUgewogCiAgICAgICAgIGludCBjb21wYWN0U2l6ZTsKICAgICAg
ICAgaW50IGNvbXBhY3RIYXNoU2l6ZU1hc2s7CkBAIC0xNjIsNyArMTYyLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHZvaWQgY3JlYXRlVGFibGUoSlNHbG9iYWxEYXRhKikgY29uc3Q7CiAg
ICAgfTsKIAotICAgIHZvaWQgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRlKiwgY29u
c3QgSGFzaEVudHJ5KiwgSlNPYmplY3QqIHRoaXNPYmplY3QsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgSlNfRVhQT1JUREFUQSB2b2lkIHNldFVw
U3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSosIGNvbnN0IEhhc2hFbnRyeSosIEpTT2JqZWN0
KiB0aGlzT2JqZWN0LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYpOwogCiAgICAgLyoqCiAgICAgICogVGhpcyBtZXRob2QgZG9lcyBpdCBhbGwgKGxvb2tpbmcg
aW4gdGhlIGhhc2h0YWJsZSwgY2hlY2tpbmcgZm9yIGZ1bmN0aW9uCmRpZmYgLS1naXQgYS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL051bWJlck9iamVjdC5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9OdW1iZXJPYmplY3QuaAppbmRleCBkMzU0YjliLi5lMzQxNTc2IDEwMDY0NAotLS0gYS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL051bWJlck9iamVjdC5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTnVtYmVyT2JqZWN0LmgKQEAgLTI1LDcgKzI1LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7
CiAKLSAgICBjbGFzcyBOdW1iZXJPYmplY3QgOiBwdWJsaWMgSlNXcmFwcGVyT2JqZWN0IHsKKyAg
ICBjbGFzcyBKU19FWFBPUlREQVRBIE51bWJlck9iamVjdCA6IHB1YmxpYyBKU1dyYXBwZXJPYmpl
Y3QgewogICAgIHB1YmxpYzoKICAgICAgICAgZXhwbGljaXQgTnVtYmVyT2JqZWN0KFBhc3NSZWZQ
dHI8U3RydWN0dXJlPik7CiAKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2Jq
ZWN0UHJvdG90eXBlLmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5o
CmluZGV4IDc3OTBhZTAuLjI0OTk3MTMgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT2JqZWN0UHJvdG90eXBlLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQ
cm90b3R5cGUuaApAQCAtMzAsNyArMzAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgT2Jq
ZWN0UHJvdG90eXBlKEV4ZWNTdGF0ZSosIFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgU3RydWN0dXJl
KiBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSk7CiAgICAgfTsKIAotICAgIEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqLCBKU09iamVjdCos
IEpTVmFsdWUsIGNvbnN0IEFyZ0xpc3QmKTsKKyAgICBKU19FWFBPUlREQVRBIEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqLCBKU09iamVjdCos
IEpTVmFsdWUsIGNvbnN0IEFyZ0xpc3QmKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAt
LWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuaCBiL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuaAppbmRleCBiNDM4MmY0Li5mMTI4
NDQ0IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5
LmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oCkBAIC01
OCw3ICs1OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWZQdHI8U3RydWN0dXJlQ2hh
aW4+IG1fY2FjaGVkUHJvdG90eXBlQ2hhaW47CiAgICAgfTsKIAotICAgIGNsYXNzIFByb3BlcnR5
TmFtZUFycmF5IHsKKyAgICBjbGFzcyBKU19FWFBPUlREQVRBIFByb3BlcnR5TmFtZUFycmF5IHsK
ICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgUHJvcGVydHlOYW1lQXJyYXlEYXRhOjpjb25z
dF9pdGVyYXRvciBjb25zdF9pdGVyYXRvcjsKIApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcm90b3R5cGVGdW5jdGlvbi5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm90
b3R5cGVGdW5jdGlvbi5oCmluZGV4IDk5YWIzMjcuLmM2MjY4ODEgMTAwNjQ0Ci0tLSBhL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90eXBlRnVuY3Rpb24uaAorKysgYi9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3RvdHlwZUZ1bmN0aW9uLmgKQEAgLTI5LDcgKzI5LDcgQEAKIAogbmFtZXNw
YWNlIEpTQyB7CiAKLSAgICBjbGFzcyBQcm90b3R5cGVGdW5jdGlvbiA6IHB1YmxpYyBJbnRlcm5h
bEZ1bmN0aW9uIHsKKyAgICBjbGFzcyBKU19FWFBPUlREQVRBIFByb3RvdHlwZUZ1bmN0aW9uIDog
cHVibGljIEludGVybmFsRnVuY3Rpb24gewogICAgIHB1YmxpYzoKICAgICAgICAgUHJvdG90eXBl
RnVuY3Rpb24oRXhlY1N0YXRlKiwgaW50IGxlbmd0aCwgY29uc3QgSWRlbnRpZmllciYsIE5hdGl2
ZUZ1bmN0aW9uKTsKICAgICAgICAgUHJvdG90eXBlRnVuY3Rpb24oRXhlY1N0YXRlKiwgUGFzc1Jl
ZlB0cjxTdHJ1Y3R1cmU+LCBpbnQgbGVuZ3RoLCBjb25zdCBJZGVudGlmaWVyJiwgTmF0aXZlRnVu
Y3Rpb24pOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaCBiL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgKaW5kZXggMjRkNDE5OS4uODYzNDg0ZSAxMDA2
NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAorKysgYi9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cC5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgY2xhc3MgSlNHbG9iYWxEYXRhOwogCi0gICAgY2xhc3MgUmVnRXhwIDogcHVibGljIFJl
ZkNvdW50ZWQ8UmVnRXhwPiB7CisgICAgY2xhc3MgSlNfRVhQT1JUREFUQSBSZWdFeHAgOiBwdWJs
aWMgUmVmQ291bnRlZDxSZWdFeHA+IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFJlZ0V4cD4gY3JlYXRlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgVVN0
cmluZyYgcGF0dGVybik7CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlZ0V4cD4gY3JlYXRl
KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgcGF0dGVybiwgY29uc3Qg
VVN0cmluZyYgZmxhZ3MpOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBPYmplY3QuaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgKaW5kZXgg
ZmFjOTk3OC4uOWVhOWFkOCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBPYmplY3QuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCkBA
IC0yNiw3ICsyNiw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi0gICAgY2xhc3MgUmVnRXhwT2Jq
ZWN0IDogcHVibGljIEpTT2JqZWN0IHsKKyAgICBjbGFzcyBKU19FWFBPUlREQVRBIFJlZ0V4cE9i
amVjdCA6IHB1YmxpYyBKU09iamVjdCB7CiAgICAgcHVibGljOgogICAgICAgICBSZWdFeHBPYmpl
Y3QoUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBQYXNzUmVmUHRyPFJlZ0V4cD4pOwogICAgICAgICB2
aXJ0dWFsIH5SZWdFeHBPYmplY3QoKTsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU21hbGxTdHJpbmdzLmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5o
CmluZGV4IGYwZGQ4ZGYuLjBmNjA5ZWEgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU21hbGxTdHJpbmdzLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0cmlu
Z3MuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFNtYWxs
U3RyaW5nc1N0b3JhZ2U7CiAKLSAgICBjbGFzcyBTbWFsbFN0cmluZ3MgOiBwdWJsaWMgTm9uY29w
eWFibGUgeworICAgIGNsYXNzIEpTX0VYUE9SVERBVEEgU21hbGxTdHJpbmdzIDogcHVibGljIE5v
bmNvcHlhYmxlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFNtYWxsU3RyaW5ncygpOwogICAgICAg
ICB+U21hbGxTdHJpbmdzKCk7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cmluZ09iamVjdC5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAppbmRl
eCBlYTNhMDQ1Li5iYTQ5ZmMxIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cmluZ09iamVjdC5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgK
QEAgLTI2LDcgKzI2LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLSAgICBjbGFzcyBTdHJpbmdP
YmplY3QgOiBwdWJsaWMgSlNXcmFwcGVyT2JqZWN0IHsKKyAgICBjbGFzcyBKU19FWFBPUlREQVRB
IFN0cmluZ09iamVjdCA6IHB1YmxpYyBKU1dyYXBwZXJPYmplY3QgewogICAgIHB1YmxpYzoKICAg
ICAgICAgU3RyaW5nT2JqZWN0KEV4ZWNTdGF0ZSosIFBhc3NSZWZQdHI8U3RydWN0dXJlPik7CiAg
ICAgICAgIFN0cmluZ09iamVjdChFeGVjU3RhdGUqLCBQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIGNv
bnN0IFVTdHJpbmcmKTsKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFy
cmF5Jik7CiAKICAgICAgICAgdmlydHVhbCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNv
bnN0IHsgcmV0dXJuICZpbmZvOyB9Ci0gICAgICAgIHN0YXRpYyBjb25zdCBKU19FWFBPUlREQVRB
IENsYXNzSW5mbyBpbmZvOworICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIGluZm87CiAK
ICAgICAgICAgSlNTdHJpbmcqIGludGVybmFsVmFsdWUoKSBjb25zdCB7IHJldHVybiBhc1N0cmlu
ZyhKU1dyYXBwZXJPYmplY3Q6OmludGVybmFsVmFsdWUoKSk7fQogCmRpZmYgLS1naXQgYS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmUuaAppbmRleCA4NjY5OTlkLi5jNmFkMTAwIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgUHJv
cGVydHlOYW1lQXJyYXk7CiAgICAgY2xhc3MgUHJvcGVydHlOYW1lQXJyYXlEYXRhOwogCi0gICAg
Y2xhc3MgU3RydWN0dXJlIDogcHVibGljIFJlZkNvdW50ZWQ8U3RydWN0dXJlPiB7CisgICAgY2xh
c3MgSlNfRVhQT1JUREFUQSBTdHJ1Y3R1cmUgOiBwdWJsaWMgUmVmQ291bnRlZDxTdHJ1Y3R1cmU+
IHsKICAgICBwdWJsaWM6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlKEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBU
eXBlSW5mbyYgdHlwZUluZm8pCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rp
bWVvdXRDaGVja2VyLmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RpbWVvdXRDaGVja2VyLmgK
aW5kZXggN2JmYTZkMC4uM2U1YTI4MiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9UaW1lb3V0Q2hlY2tlci5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGltZW91dENo
ZWNrZXIuaApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEV4
ZWNTdGF0ZTsKIAotICAgIGNsYXNzIFRpbWVvdXRDaGVja2VyIHsKKyAgICBjbGFzcyBKU19FWFBP
UlREQVRBIFRpbWVvdXRDaGVja2VyIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFRpbWVvdXRDaGVj
a2VyKCk7CiAKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZy5oIGIv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nLmgKaW5kZXggZDAxYjc1ZC4uNWZiNmRkMCAx
MDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nLmgKKysrIGIvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9VU3RyaW5nLmgKQEAgLTQxLDggKzQxLDggQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgdXNpbmcgV1RGOjpQbGFjZW1lbnROZXdBZG9wdDsKIAogICAgIGNsYXNzIElkZW50
aWZpZXJUYWJsZTsKLSAgCi0gICAgY2xhc3MgQ1N0cmluZyB7CisKKyAgICBjbGFzcyBKU19FWFBP
UlREQVRBIENTdHJpbmcgewogICAgIHB1YmxpYzoKICAgICAgICAgQ1N0cmluZygpCiAgICAgICAg
ICAgICA6IG1fbGVuZ3RoKDApCkBAIC03MywxMyArNzMsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICB0eXBlZGVmIFZlY3RvcjxjaGFyLCAzMj4gQ1N0cmluZ0J1ZmZlcjsKIAotICAgIGNsYXNz
IFVTdHJpbmcgeworICAgIGNsYXNzIEpTX0VYUE9SVERBVEEgVVN0cmluZyB7CiAgICAgICAgIGZy
aWVuZCBjbGFzcyBKSVQ7CiAKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgQ3Jvc3NUaHJl
YWRSZWZDb3VudGVkPE93bkZhc3RNYWxsb2NQdHI8VUNoYXI+ID4gU2hhcmVkVUNoYXI7CiAgICAg
ICAgIHN0cnVjdCBCYXNlU3RyaW5nOwotICAgICAgICBzdHJ1Y3QgUmVwIDogTm9uY29weWFibGUg
eworICAgICAgICBzdHJ1Y3QgSlNfRVhQT1JUREFUQSBSZXAgOiBOb25jb3B5YWJsZSB7CiAgICAg
ICAgICAgICBmcmllbmQgY2xhc3MgSklUOwogCiAgICAgICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxSZXA+IGNyZWF0ZShVQ2hhciogYnVmZmVyLCBpbnQgbGVuZ3RoKQpAQCAtMTg1LDggKzE4NSw4
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgICAgICBmcmllbmQgY2xhc3MgU21hbGxTdHJp
bmdzU3RvcmFnZTsKICAgICAgICAgICAgIGZyaWVuZCB2b2lkIGluaXRpYWxpemVVU3RyaW5nKCk7
Ci0gICAgICAgICAgICBKU19FWFBPUlREQVRBIHN0YXRpYyBCYXNlU3RyaW5nKiBudWxsQmFzZVN0
cmluZzsKLSAgICAgICAgICAgIEpTX0VYUE9SVERBVEEgc3RhdGljIEJhc2VTdHJpbmcqIGVtcHR5
QmFzZVN0cmluZzsKKyAgICAgICAgICAgIHN0YXRpYyBCYXNlU3RyaW5nKiBudWxsQmFzZVN0cmlu
ZzsKKyAgICAgICAgICAgIHN0YXRpYyBCYXNlU3RyaW5nKiBlbXB0eUJhc2VTdHJpbmc7CiAgICAg
ICAgIH07CiAKIApAQCAtNDMxLDkgKzQzMSw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBy
ZXR1cm4gVVN0cmluZyhyZXN1bHQgPyByZXN1bHQucmVsZWFzZSgpIDogVVN0cmluZzo6bnVsbFJl
cCgpKTsKICAgICB9CiAKLSAgICBpbnQgY29tcGFyZShjb25zdCBVU3RyaW5nJiwgY29uc3QgVVN0
cmluZyYpOworICAgIEpTX0VYUE9SVERBVEEgaW50IGNvbXBhcmUoY29uc3QgVVN0cmluZyYsIGNv
bnN0IFVTdHJpbmcmKTsKIAotICAgIGJvb2wgZXF1YWwoY29uc3QgVVN0cmluZzo6UmVwKiwgY29u
c3QgVVN0cmluZzo6UmVwKik7CisgICAgSlNfRVhQT1JUREFUQSBib29sIGVxdWFsKGNvbnN0IFVT
dHJpbmc6OlJlcCosIGNvbnN0IFVTdHJpbmc6OlJlcCopOwogCiAgICAgaW5saW5lIFBhc3NSZWZQ
dHI8VVN0cmluZzo6UmVwPiBVU3RyaW5nOjpSZXA6OmNyZWF0ZShQYXNzUmVmUHRyPFVTdHJpbmc6
OlJlcD4gcmVwLCBpbnQgb2Zmc2V0LCBpbnQgbGVuZ3RoKQogICAgIHsKZGlmZiAtLWdpdCBhL0ph
dmFTY3JpcHRDb3JlL3d0Zi9CeXRlQXJyYXkuaCBiL0phdmFTY3JpcHRDb3JlL3d0Zi9CeXRlQXJy
YXkuaAppbmRleCA5NmU5Y2MyLi4wNmQxODEwIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS93
dGYvQnl0ZUFycmF5LmgKKysrIGIvSmF2YVNjcmlwdENvcmUvd3RmL0J5dGVBcnJheS5oCkBAIC0z
MCw3ICszMCw3IEBACiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdU
RiB7Ci0gICAgY2xhc3MgQnl0ZUFycmF5IDogcHVibGljIFJlZkNvdW50ZWRCYXNlIHsKKyAgICBj
bGFzcyBKU19FWFBPUlREQVRBIEJ5dGVBcnJheSA6IHB1YmxpYyBSZWZDb3VudGVkQmFzZSB7CiAg
ICAgcHVibGljOgogICAgICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX3Np
emU7IH0KIApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvd3RmL0N1cnJlbnRUaW1lLmggYi9K
YXZhU2NyaXB0Q29yZS93dGYvQ3VycmVudFRpbWUuaAppbmRleCAzMWYxZWM4Li4xOGI1MDU4IDEw
MDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS93dGYvQ3VycmVudFRpbWUuaAorKysgYi9KYXZhU2Ny
aXB0Q29yZS93dGYvQ3VycmVudFRpbWUuaApAQCAtMzUsMTMgKzM1LDEyIEBACiBuYW1lc3BhY2Ug
V1RGIHsKIAogICAgIC8vIFJldHVybnMgdGhlIGN1cnJlbnQgc3lzdGVtIChVVEMpIHRpbWUgaW4g
c2Vjb25kcywgc3RhcnRpbmcgSmFudWFyeSAxLCAxOTcwLgotICAgIC8vIFByZWNpc2lvbiB2YXJp
ZXMgZGVwZW5kaW5nIG9uIGEgcGxhdGZvcm0gYnV0IHVzdWFsbHkgaXMgYXMgZ29vZCBvciBiZXR0
ZXIgCisgICAgLy8gUHJlY2lzaW9uIHZhcmllcyBkZXBlbmRpbmcgb24gYSBwbGF0Zm9ybSBidXQg
dXN1YWxseSBpcyBhcyBnb29kIG9yIGJldHRlcgogICAgIC8vIHRoYW4gYSBtaWxsaXNlY29uZC4K
LSAgICBkb3VibGUgY3VycmVudFRpbWUoKTsKKyAgICBKU19FWFBPUlREQVRBIGRvdWJsZSBjdXJy
ZW50VGltZSgpOwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RGOjpjdXJyZW50VGlt
ZTsKIAogI2VuZGlmIC8vIEN1cnJlbnRUaW1lX2gKLQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENv
cmUvd3RmL0Zhc3RNYWxsb2MuaCBiL0phdmFTY3JpcHRDb3JlL3d0Zi9GYXN0TWFsbG9jLmgKaW5k
ZXggNjFlYmUzMi4uZjA2NDNmZCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvd3RmL0Zhc3RN
YWxsb2MuaAorKysgYi9KYXZhU2NyaXB0Q29yZS93dGYvRmFzdE1hbGxvYy5oCkBAIC0yOCwxOCAr
MjgsMTggQEAKIG5hbWVzcGFjZSBXVEYgewogCiAgICAgLy8gVGhlc2UgZnVuY3Rpb25zIGNhbGwg
Q1JBU0goKSBpZiBhbiBhbGxvY2F0aW9uIGZhaWxzLgotICAgIHZvaWQqIGZhc3RNYWxsb2Moc2l6
ZV90IG4pOwotICAgIHZvaWQqIGZhc3RaZXJvZWRNYWxsb2Moc2l6ZV90IG4pOwotICAgIHZvaWQq
IGZhc3RDYWxsb2Moc2l6ZV90IG5fZWxlbWVudHMsIHNpemVfdCBlbGVtZW50X3NpemUpOwotICAg
IHZvaWQqIGZhc3RSZWFsbG9jKHZvaWQqIHAsIHNpemVfdCBuKTsKKyAgICBKU19FWFBPUlREQVRB
IHZvaWQqIGZhc3RNYWxsb2Moc2l6ZV90IG4pOworICAgIEpTX0VYUE9SVERBVEEgdm9pZCogZmFz
dFplcm9lZE1hbGxvYyhzaXplX3Qgbik7CisgICAgSlNfRVhQT1JUREFUQSB2b2lkKiBmYXN0Q2Fs
bG9jKHNpemVfdCBuX2VsZW1lbnRzLCBzaXplX3QgZWxlbWVudF9zaXplKTsKKyAgICBKU19FWFBP
UlREQVRBIHZvaWQqIGZhc3RSZWFsbG9jKHZvaWQqIHAsIHNpemVfdCBuKTsKIAogICAgIC8vIFRo
ZXNlIGZ1bmN0aW9ucyByZXR1cm4gTlVMTCBpZiBhbiBhbGxvY2F0aW9uIGZhaWxzLgotICAgIHZv
aWQqIHRyeUZhc3RNYWxsb2Moc2l6ZV90IG4pOwotICAgIHZvaWQqIHRyeUZhc3RaZXJvZWRNYWxs
b2Moc2l6ZV90IG4pOwotICAgIHZvaWQqIHRyeUZhc3RDYWxsb2Moc2l6ZV90IG5fZWxlbWVudHMs
IHNpemVfdCBlbGVtZW50X3NpemUpOwotICAgIHZvaWQqIHRyeUZhc3RSZWFsbG9jKHZvaWQqIHAs
IHNpemVfdCBuKTsKKyAgICBKU19FWFBPUlREQVRBIHZvaWQqIHRyeUZhc3RNYWxsb2Moc2l6ZV90
IG4pOworICAgIEpTX0VYUE9SVERBVEEgdm9pZCogdHJ5RmFzdFplcm9lZE1hbGxvYyhzaXplX3Qg
bik7CisgICAgSlNfRVhQT1JUREFUQSB2b2lkKiB0cnlGYXN0Q2FsbG9jKHNpemVfdCBuX2VsZW1l
bnRzLCBzaXplX3QgZWxlbWVudF9zaXplKTsKKyAgICBKU19FWFBPUlREQVRBIHZvaWQqIHRyeUZh
c3RSZWFsbG9jKHZvaWQqIHAsIHNpemVfdCBuKTsKIAotICAgIHZvaWQgZmFzdEZyZWUodm9pZCog
cCk7CisgICAgSlNfRVhQT1JUREFUQSB2b2lkIGZhc3RGcmVlKHZvaWQqIHApOwogCiAjaWZuZGVm
IE5ERUJVRyAgICAKICAgICB2b2lkIGZhc3RNYWxsb2NGb3JiaWQoKTsKZGlmZiAtLWdpdCBhL0ph
dmFTY3JpcHRDb3JlL3d0Zi9NYWluVGhyZWFkLmggYi9KYXZhU2NyaXB0Q29yZS93dGYvTWFpblRo
cmVhZC5oCmluZGV4IDAxY2U4MDQuLjhhNGUzM2YgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3Jl
L3d0Zi9NYWluVGhyZWFkLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvd3RmL01haW5UaHJlYWQuaApA
QCAtMzYsMTIgKzM2LDEyIEBAIGNsYXNzIE11dGV4OwogCiB0eXBlZGVmIHZvaWQgTWFpblRocmVh
ZEZ1bmN0aW9uKHZvaWQqKTsKIAotdm9pZCBjYWxsT25NYWluVGhyZWFkKE1haW5UaHJlYWRGdW5j
dGlvbiosIHZvaWQqIGNvbnRleHQpOworSlNfRVhQT1JUREFUQSB2b2lkIGNhbGxPbk1haW5UaHJl
YWQoTWFpblRocmVhZEZ1bmN0aW9uKiwgdm9pZCogY29udGV4dCk7CiAKLXZvaWQgc2V0TWFpblRo
cmVhZENhbGxiYWNrc1BhdXNlZChib29sIHBhdXNlZCk7CitKU19FWFBPUlREQVRBIHZvaWQgc2V0
TWFpblRocmVhZENhbGxiYWNrc1BhdXNlZChib29sIHBhdXNlZCk7CiAKIC8vIE11c3QgYmUgY2Fs
bGVkIGZyb20gdGhlIG1haW4gdGhyZWFkIChEYXJ3aW4gaXMgYW4gZXhjZXB0aW9uIHRvIHRoaXMg
cnVsZSkuCi12b2lkIGluaXRpYWxpemVNYWluVGhyZWFkKCk7CitKU19FWFBPUlREQVRBIHZvaWQg
aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKIAogLy8gVGhlc2UgZnVuY3Rpb25zIGFyZSBpbnRlcm5h
bCB0byB0aGUgY2FsbE9uTWFpblRocmVhZCBpbXBsZW1lbnRhdGlvbi4KIHZvaWQgaW5pdGlhbGl6
ZU1haW5UaHJlYWRQbGF0Zm9ybSgpOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvd3RmL1Jh
bmRvbU51bWJlci5oIGIvSmF2YVNjcmlwdENvcmUvd3RmL1JhbmRvbU51bWJlci5oCmluZGV4IGZl
MTY4N2MuLmNmMDgxYTcgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3d0Zi9SYW5kb21OdW1i
ZXIuaAorKysgYi9KYXZhU2NyaXB0Q29yZS93dGYvUmFuZG9tTnVtYmVyLmgKQEAgLTMwLDEyICsz
MCwxMiBAQCBuYW1lc3BhY2UgV1RGIHsKIAogICAgIC8vIFJldHVybnMgYSBwc2V1ZG8tcmFuZG9t
IG51bWJlciBpbiB0aGUgcmFuZ2UgWzAsIDEpLCBhdHRlbXB0cyB0byBiZQogICAgIC8vIGNyeXB0
b2dyYXBoaWNhbGx5IHNlY3VyZSBpZiBwb3NzaWJsZSBvbiB0aGUgdGFyZ2V0IHBsYXRmb3JtCi0g
ICAgZG91YmxlIHJhbmRvbU51bWJlcigpOworICAgIEpTX0VYUE9SVERBVEEgZG91YmxlIHJhbmRv
bU51bWJlcigpOwogCiAgICAgLy8gUmV0dXJucyBhIHBzZXVkby1yYW5kb20gbnVtYmVyIGluIHRo
ZSByYW5nZSBbMCwgMSksIGF0dGVtcHRzIHRvCiAgICAgLy8gcHJvZHVjZSBhIHJlYXNvbmFibGUg
InJhbmRvbSIgbnVtYmVyIGZhc3QuCiAgICAgLy8gV2Ugb25seSBuZWVkIHRoaXMgYmVjYXVzZSBy
YW5kX3MgaXMgc28gc2xvdyBvbiB3aW5kb3dzLgotICAgIGRvdWJsZSB3ZWFrUmFuZG9tTnVtYmVy
KCk7CisgICAgSlNfRVhQT1JUREFUQSBkb3VibGUgd2Vha1JhbmRvbU51bWJlcigpOwogCiB9CiAK
ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmcuaCBiL0phdmFTY3JpcHRD
b3JlL3d0Zi9UaHJlYWRpbmcuaAppbmRleCA2NTc4MTUxLi5iNWZlNDBhIDEwMDY0NAotLS0gYS9K
YXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvd3RmL1Ro
cmVhZGluZy5oCkBAIC0xMTAsMTkgKzExMCwxOSBAQCB0eXBlZGVmIHZvaWQqICgqVGhyZWFkRnVu
Y3Rpb24pKHZvaWQqIGFyZ3VtZW50KTsKIAogLy8gUmV0dXJucyAwIGlmIHRocmVhZCBjcmVhdGlv
biBmYWlsZWQuCiAvLyBUaGUgdGhyZWFkIG5hbWUgbXVzdCBiZSBhIGxpdGVyYWwgc2luY2Ugb24g
c29tZSBwbGF0Zm9ybXMgaXQncyBwYXNzZWQgaW4gdG8gdGhlIHRocmVhZC4KLVRocmVhZElkZW50
aWZpZXIgY3JlYXRlVGhyZWFkKFRocmVhZEZ1bmN0aW9uLCB2b2lkKiwgY29uc3QgY2hhciogdGhy
ZWFkTmFtZSk7CitKU19FWFBPUlREQVRBIFRocmVhZElkZW50aWZpZXIgY3JlYXRlVGhyZWFkKFRo
cmVhZEZ1bmN0aW9uLCB2b2lkKiwgY29uc3QgY2hhciogdGhyZWFkTmFtZSk7CiAKIC8vIEludGVy
bmFsIHBsYXRmb3JtLXNwZWNpZmljIGNyZWF0ZVRocmVhZCBpbXBsZW1lbnRhdGlvbi4KLVRocmVh
ZElkZW50aWZpZXIgY3JlYXRlVGhyZWFkSW50ZXJuYWwoVGhyZWFkRnVuY3Rpb24sIHZvaWQqLCBj
b25zdCBjaGFyKiB0aHJlYWROYW1lKTsKK0pTX0VYUE9SVERBVEEgVGhyZWFkSWRlbnRpZmllciBj
cmVhdGVUaHJlYWRJbnRlcm5hbChUaHJlYWRGdW5jdGlvbiwgdm9pZCosIGNvbnN0IGNoYXIqIHRo
cmVhZE5hbWUpOwogCiAvLyBDYWxsZWQgaW4gdGhlIHRocmVhZCBkdXJpbmcgaW5pdGlhbGl6YXRp
b24uCiAvLyBIZWxwZnVsIGZvciBwbGF0Zm9ybXMgd2hlcmUgdGhlIHRocmVhZCBuYW1lIG11c3Qg
YmUgc2V0IGZyb20gd2l0aGluIHRoZSB0aHJlYWQuCi12b2lkIHNldFRocmVhZE5hbWVJbnRlcm5h
bChjb25zdCBjaGFyKiB0aHJlYWROYW1lKTsKK0pTX0VYUE9SVERBVEEgdm9pZCBzZXRUaHJlYWRO
YW1lSW50ZXJuYWwoY29uc3QgY2hhciogdGhyZWFkTmFtZSk7CiAKLVRocmVhZElkZW50aWZpZXIg
Y3VycmVudFRocmVhZCgpOwotYm9vbCBpc01haW5UaHJlYWQoKTsKLWludCB3YWl0Rm9yVGhyZWFk
Q29tcGxldGlvbihUaHJlYWRJZGVudGlmaWVyLCB2b2lkKiopOwotdm9pZCBkZXRhY2hUaHJlYWQo
VGhyZWFkSWRlbnRpZmllcik7CitKU19FWFBPUlREQVRBIFRocmVhZElkZW50aWZpZXIgY3VycmVu
dFRocmVhZCgpOworSlNfRVhQT1JUREFUQSBib29sIGlzTWFpblRocmVhZCgpOworSlNfRVhQT1JU
REFUQSBpbnQgd2FpdEZvclRocmVhZENvbXBsZXRpb24oVGhyZWFkSWRlbnRpZmllciwgdm9pZCoq
KTsKK0pTX0VYUE9SVERBVEEgdm9pZCBkZXRhY2hUaHJlYWQoVGhyZWFkSWRlbnRpZmllcik7CiAK
ICNpZiBVU0UoUFRIUkVBRFMpCiB0eXBlZGVmIHB0aHJlYWRfbXV0ZXhfdCBQbGF0Zm9ybU11dGV4
OwpAQCAtMTU5LDcgKzE1OSw3IEBAIHR5cGVkZWYgdm9pZCogUGxhdGZvcm1SZWFkV3JpdGVMb2Nr
OwogdHlwZWRlZiB2b2lkKiBQbGF0Zm9ybUNvbmRpdGlvbjsKICNlbmRpZgogICAgIAotY2xhc3Mg
TXV0ZXggOiBwdWJsaWMgTm9uY29weWFibGUgeworY2xhc3MgSlNfRVhQT1JUREFUQSBNdXRleCA6
IHB1YmxpYyBOb25jb3B5YWJsZSB7CiBwdWJsaWM6CiAgICAgTXV0ZXgoKTsKICAgICB+TXV0ZXgo
KTsKQEAgLTE3Niw3ICsxNzYsNyBAQCBwcml2YXRlOgogCiB0eXBlZGVmIExvY2tlcjxNdXRleD4g
TXV0ZXhMb2NrZXI7CiAKLWNsYXNzIFJlYWRXcml0ZUxvY2sgOiBwdWJsaWMgTm9uY29weWFibGUg
eworY2xhc3MgSlNfRVhQT1JUREFUQSBSZWFkV3JpdGVMb2NrIDogcHVibGljIE5vbmNvcHlhYmxl
IHsKIHB1YmxpYzoKICAgICBSZWFkV3JpdGVMb2NrKCk7CiAgICAgflJlYWRXcml0ZUxvY2soKTsK
QEAgLTMxMCwxMCArMzEwLDEwIEBAIHB1YmxpYzoKIAogLy8gVGhpcyBmdW5jdGlvbiBtdXN0IGJl
IGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4gSXQgaXMgc2FmZSB0byBjYWxsIGl0IHJlcGVh
dGVkbHkuCiAvLyBEYXJ3aW4gaXMgYW4gZXhjZXB0aW9uIHRvIHRoaXMgcnVsZTogaXQgaXMgT0sg
dG8gY2FsbCBpdCBmcm9tIGFueSB0aHJlYWQsIHRoZSBvbmx5IHJlcXVpcmVtZW50IGlzIHRoYXQg
dGhlIGNhbGxzIGFyZSBub3QgcmVlbnRyYW50Lgotdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nKCk7
CitKU19FWFBPUlREQVRBIHZvaWQgaW5pdGlhbGl6ZVRocmVhZGluZygpOwogCi12b2lkIGxvY2tB
dG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleCgpOwotdm9pZCB1bmxvY2tBdG9taWNhbGx5
SW5pdGlhbGl6ZWRTdGF0aWNNdXRleCgpOworSlNfRVhQT1JUREFUQSB2b2lkIGxvY2tBdG9taWNh
bGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleCgpOworSlNfRVhQT1JUREFUQSB2b2lkIHVubG9ja0F0
b21pY2FsbHlJbml0aWFsaXplZFN0YXRpY011dGV4KCk7CiAKIH0gLy8gbmFtZXNwYWNlIFdURgog
CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS93dGYvZHRvYS5oIGIvSmF2YVNjcmlwdENvcmUv
d3RmL2R0b2EuaAppbmRleCBjYmVjN2M3Li5jZTYyODM4IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0
Q29yZS93dGYvZHRvYS5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3d0Zi9kdG9hLmgKQEAgLTI5LDgg
KzI5LDggQEAgbmFtZXNwYWNlIFdURiB7CiAKICAgICBleHRlcm4gV1RGOjpNdXRleCogc19kdG9h
UDVNdXRleDsKIAotICAgIGRvdWJsZSBzdHJ0b2QoY29uc3QgY2hhciogczAwLCBjaGFyKiogc2Up
OwotICAgIHZvaWQgZHRvYShjaGFyKiByZXN1bHQsIGRvdWJsZSBkLCBpbnQgbmRpZ2l0cywgaW50
KiBkZWNwdCwgaW50KiBzaWduLCBjaGFyKiogcnZlKTsKKyAgICBKU19FWFBPUlREQVRBIGRvdWJs
ZSBzdHJ0b2QoY29uc3QgY2hhciogczAwLCBjaGFyKiogc2UpOworICAgIEpTX0VYUE9SVERBVEEg
dm9pZCBkdG9hKGNoYXIqIHJlc3VsdCwgZG91YmxlIGQsIGludCBuZGlnaXRzLCBpbnQqIGRlY3B0
LCBpbnQqIHNpZ24sIGNoYXIqKiBydmUpOwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIApkaWZmIC0t
Z2l0IGEvSmF2YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUvVVRGOC5jcHAgYi9KYXZhU2NyaXB0Q29y
ZS93dGYvdW5pY29kZS9VVEY4LmNwcAppbmRleCA5ZTcxM2ZlLi4yMWQ1ODU2IDEwMDY0NAotLS0g
YS9KYXZhU2NyaXB0Q29yZS93dGYvdW5pY29kZS9VVEY4LmNwcAorKysgYi9KYXZhU2NyaXB0Q29y
ZS93dGYvdW5pY29kZS9VVEY4LmNwcApAQCAtMjMsNiArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CiAgKi8KIAorI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlVURjguaCIKIAogbmFtZXNw
YWNlIFdURiB7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS93dGYvdW5pY29kZS9VVEY4Lmgg
Yi9KYXZhU2NyaXB0Q29yZS93dGYvdW5pY29kZS9VVEY4LmgKaW5kZXggYTVlZDkzZS4uNDRhODBj
MCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUvVVRGOC5oCisrKyBiL0ph
dmFTY3JpcHRDb3JlL3d0Zi91bmljb2RlL1VURjguaApAQCAtMzQsMTIgKzM0LDEyIEBAIG5hbWVz
cGFjZSBXVEYgewogICAgIC8vIEdpdmVuIGEgZmlyc3QgYnl0ZSwgZ2l2ZXMgdGhlIGxlbmd0aCBv
ZiB0aGUgVVRGLTggc2VxdWVuY2UgaXQgYmVnaW5zLgogICAgIC8vIFJldHVybnMgMCBmb3IgYnl0
ZXMgdGhhdCBhcmUgbm90IGxlZ2FsIHN0YXJ0cyBvZiBVVEYtOCBzZXF1ZW5jZXMuCiAgICAgLy8g
T25seSBhbGxvd3Mgc2VxdWVuY2VzIG9mIHVwIHRvIDQgYnl0ZXMsIHNpbmNlIHRoYXQgd29ya3Mg
Zm9yIGFsbCBVbmljb2RlIGNoYXJhY3RlcnMgKFUtMDAwMDAwMDAgdG8gVS0wMDEwRkZGRikuCi0g
ICAgaW50IFVURjhTZXF1ZW5jZUxlbmd0aChjaGFyKTsKKyAgICBKU19FWFBPUlREQVRBIGludCBV
VEY4U2VxdWVuY2VMZW5ndGgoY2hhcik7CiAKICAgICAvLyBUYWtlcyBhIG51bGwtdGVybWluYXRl
ZCBDLXN0eWxlIHN0cmluZyB3aXRoIGEgVVRGLTggc2VxdWVuY2UgaW4gaXQgYW5kIGNvbnZlcnRz
IGl0IHRvIGEgY2hhcmFjdGVyLgogICAgIC8vIE9ubHkgYWxsb3dzIFVuaWNvZGUgY2hhcmFjdGVy
cyAoVS0wMDAwMDAwMCB0byBVLTAwMTBGRkZGKS4KICAgICAvLyBSZXR1cm5zIC0xIGlmIHRoZSBz
ZXF1ZW5jZSBpcyBub3QgdmFsaWQgKGluY2x1ZGluZyBwcmVzZW5jZSBvZiBleHRyYSBieXRlcyku
Ci0gICAgaW50IGRlY29kZVVURjhTZXF1ZW5jZShjb25zdCBjaGFyKik7CisgICAgSlNfRVhQT1JU
REFUQSBpbnQgZGVjb2RlVVRGOFNlcXVlbmNlKGNvbnN0IGNoYXIqKTsKIAogICAgIHR5cGVkZWYg
ZW51bSB7CiAgICAgICAgICAgICBjb252ZXJzaW9uT0ssICAgICAgIC8vIGNvbnZlcnNpb24gc3Vj
Y2Vzc2Z1bApAQCAtNjIsMTIgKzYyLDEyIEBAIG5hbWVzcGFjZSBXVEYgewogICAgIC8vIHRvIHRo
ZSByZXBsYWNlbWVudCBjaGFyYWN0ZXI7IG90aGVyd2lzZSAod2hlbiB0aGUgZmxhZyBpcyBzZXQg
dG8gc3RyaWN0KQogICAgIC8vIHRoZXkgY29uc3RpdHV0ZSBhbiBlcnJvci4KIAotICAgIENvbnZl
cnNpb25SZXN1bHQgY29udmVydFVURjhUb1VURjE2KAotICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyKiogc291cmNlU3RhcnQsIGNvbnN0IGNoYXIqIHNvdXJjZUVuZCwgCisgICAgSlNfRVhQ
T1JUREFUQSBDb252ZXJzaW9uUmVzdWx0IGNvbnZlcnRVVEY4VG9VVEYxNigKKyAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhcioqIHNvdXJjZVN0YXJ0LCBjb25zdCBjaGFyKiBzb3VyY2VFbmQs
CiAgICAgICAgICAgICAgICAgICAgIFVDaGFyKiogdGFyZ2V0U3RhcnQsIFVDaGFyKiB0YXJnZXRF
bmQsIGJvb2wgc3RyaWN0ID0gdHJ1ZSk7CiAKLSAgICBDb252ZXJzaW9uUmVzdWx0IGNvbnZlcnRV
VEYxNlRvVVRGOCgKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgVUNoYXIqKiBzb3VyY2VTdGFy
dCwgY29uc3QgVUNoYXIqIHNvdXJjZUVuZCwgCisgICAgSlNfRVhQT1JUREFUQSBDb252ZXJzaW9u
UmVzdWx0IGNvbnZlcnRVVEYxNlRvVVRGOCgKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgVUNo
YXIqKiBzb3VyY2VTdGFydCwgY29uc3QgVUNoYXIqIHNvdXJjZUVuZCwKICAgICAgICAgICAgICAg
ICAgICAgY2hhcioqIHRhcmdldFN0YXJ0LCBjaGFyKiB0YXJnZXRFbmQsIGJvb2wgc3RyaWN0ID0g
dHJ1ZSk7CiAgIH0KIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggMjQyZTU4ZS4uMzc2YWI4NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAwOS0wNy0y
NCAgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4gIDxrZW5uZXRoLmNocmlzdGlhbnNlbkBvcGVu
Ym9zc2Eub3JnPiwgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGVmaW5lIEpT
X0VYUE9SVERBVEEgYW5kIFdFQktJVF9FWFBPUlREQVRBIGZvciBnY2MuCisKKyAgICAgICAgTGlu
ayBRVE1vdmllV2luIGFnYWluc3QgSmF2YVNjcmlwdENvcmUgZm9yIHRoZSBleHBvcnRlZAorICAg
ICAgICBXVEYgc3ltYm9scy4KKworICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1FUTW92aWVXaW4u
dmNwcm9qOiBMaW5rIFFUTW92aWVXaW4gYWdhaW5zdCBKU0MgZGxsLAorICAgICAgICBmb3IgdGhl
IGV4cG9ydGVkIFdURiBzeW1ib2xzLgorICAgICAgICAqIGNvbmZpZy5oOiBUd2VhayBmb3IgZ2Nj
LgorCiAyMDA5LTA3LTMwICBYYW4gTG9wZXogIDx4bG9wZXpAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBNYWNpZWogU3RhY2hvd2lhay4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovUVRNb3ZpZVdpbi52Y3Byb2ogYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1FU
TW92aWVXaW4udmNwcm9qCmluZGV4IDU5Mzg1NWIuLmU1Zjg1YjIgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovUVRNb3ZpZVdpbi52Y3Byb2oKKysrIGIvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9RVE1vdmllV2luLnZjcHJvagpAQCAtNTUsNyArNTUsNyBAQAogCQkJLz4KIAkJCTxU
b29sCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9
IlFUTUxDbGllbnQubGliIFdURiQoV2ViS2l0Q29uZmlnU3VmZml4KS5saWIgd2lubW0ubGliIHB0
aHJlYWRWQzIkKExpYnJhcnlDb25maWdTdWZmaXgpLmxpYiBNc2ltZzMyLmxpYiB1c2VyMzIubGli
IGFkdmFwaTMyLmxpYiIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJRVE1MQ2xpZW50Lmxp
YiBKYXZhU2NyaXB0Q29yZSQoV2ViS2l0RExMQ29uZmlnU3VmZml4KS5saWIgd2lubW0ubGliIHB0
aHJlYWRWQzIkKExpYnJhcnlDb25maWdTdWZmaXgpLmxpYiBNc2ltZzMyLmxpYiB1c2VyMzIubGli
IGFkdmFwaTMyLmxpYiIKIAkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkk
KFdlYktpdENvbmZpZ1N1ZmZpeCkuZGxsIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3Jp
ZXM9IiZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxRdWlja1RpbWUgU0RLXExpYnJhcmllcyZx
dW90OzsmcXVvdDskKFByb2dyYW1GaWxlcylcUXVpY2tUaW1lIFNES1xMaWJyYXJpZXMmcXVvdDsi
CiAJCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0iTElCQ01UIgpAQCAtMTI4LDcgKzEyOCw3
IEBACiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCi0JCQkJQWRkaXRp
b25hbERlcGVuZGVuY2llcz0iUVRNTENsaWVudC5saWIgV1RGJChXZWJLaXRDb25maWdTdWZmaXgp
LmxpYiB3aW5tbS5saWIgcHRocmVhZFZDMiQoTGlicmFyeUNvbmZpZ1N1ZmZpeCkubGliIE1zaW1n
MzIubGliIHVzZXIzMi5saWIgYWR2YXBpMzIubGliIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNp
ZXM9IlFUTUxDbGllbnQubGliIEphdmFTY3JpcHRDb3JlJChXZWJLaXRETExDb25maWdTdWZmaXgp
LmxpYiB3aW5tbS5saWIgcHRocmVhZFZDMiQoTGlicmFyeUNvbmZpZ1N1ZmZpeCkubGliIE1zaW1n
MzIubGliIHVzZXIzMi5saWIgYWR2YXBpMzIubGliIgogCQkJCU91dHB1dEZpbGU9IiQoT3V0RGly
KVwkKFByb2plY3ROYW1lKSQoV2ViS2l0Q29uZmlnU3VmZml4KS5kbGwiCiAJCQkJQWRkaXRpb25h
bExpYnJhcnlEaXJlY3Rvcmllcz0iJnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXFF1aWNrVGlt
ZSBTREtcTGlicmFyaWVzJnF1b3Q7OyZxdW90OyQoUHJvZ3JhbUZpbGVzKVxRdWlja1RpbWUgU0RL
XExpYnJhcmllcyZxdW90OyIKIAkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJMSUJDTVQi
CkBAIC0yMDAsNyArMjAwLDcgQEAKIAkJCS8+CiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2Vy
VG9vbCIKLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJRVE1MQ2xpZW50LmxpYiBXVEYkKFdl
YktpdENvbmZpZ1N1ZmZpeCkubGliIHdpbm1tLmxpYiBwdGhyZWFkVkMyJChMaWJyYXJ5Q29uZmln
U3VmZml4KS5saWIgTXNpbWczMi5saWIgdXNlcjMyLmxpYiBhZHZhcGkzMi5saWIiCisJCQkJQWRk
aXRpb25hbERlcGVuZGVuY2llcz0iUVRNTENsaWVudC5saWIgSmF2YVNjcmlwdENvcmUkKFdlYktp
dERMTENvbmZpZ1N1ZmZpeCkubGliIHdpbm1tLmxpYiBwdGhyZWFkVkMyJChMaWJyYXJ5Q29uZmln
U3VmZml4KS5saWIgTXNpbWczMi5saWIgdXNlcjMyLmxpYiBhZHZhcGkzMi5saWIiCiAJCQkJT3V0
cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpJChXZWJLaXRDb25maWdTdWZmaXgpLmRs
bCIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSImcXVvdDskKFdlYktpdExpYnJh
cmllc0RpcilcUXVpY2tUaW1lIFNES1xMaWJyYXJpZXMmcXVvdDs7JnF1b3Q7JChQcm9ncmFtRmls
ZXMpXFF1aWNrVGltZSBTREtcTGlicmFyaWVzJnF1b3Q7IgogCQkJCUlnbm9yZURlZmF1bHRMaWJy
YXJ5TmFtZXM9IkxJQkNNVCIKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY29uZmlnLmggYi9XZWJDb3Jl
L2NvbmZpZy5oCmluZGV4IDQxMWRkYjEuLmQzNWJjOGEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY29u
ZmlnLmgKKysrIGIvV2ViQ29yZS9jb25maWcuaApAQCAtMjQsMjAgKzI0LDI1IEBACiAKICNpbmNs
dWRlIDx3dGYvUGxhdGZvcm0uaD4KIAotI2lmIFBMQVRGT1JNKFdJTl9PUykgJiYgIWRlZmluZWQo
QlVJTERJTkdfV1hfXykgJiYgIUNPTVBJTEVSKEdDQykKLSNpZiBkZWZpbmVkKEJVSUxESU5HX0ph
dmFTY3JpcHRDb3JlKSB8fCBkZWZpbmVkKEJVSUxESU5HX1dURikKLSNkZWZpbmUgSlNfRVhQT1JU
REFUQSBfX2RlY2xzcGVjKGRsbGV4cG9ydCkKKyN1bmRlZiBKU19FWFBPUlREQVRBCisjdW5kZWYg
V0VCS0lUX0VYUE9SVERBVEEKKyNpZiBDT01QSUxFUihHQ0MpCisgICAgI2RlZmluZSBKU19FWFBP
UlREQVRBIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpCisgICAgI2RlZmlu
ZSBXRUJLSVRfRVhQT1JUREFUQSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0Iikp
KQorI2VsaWYgUExBVEZPUk0oV0lOX09TKSAmJiAhZGVmaW5lZChCVUlMRElOR19XWF9fKQorICAg
ICNpZiBkZWZpbmVkKEJVSUxESU5HX0phdmFTY3JpcHRDb3JlKSB8fCBkZWZpbmVkKEJVSUxESU5H
X1dURikKKyAgICAgICAgI2RlZmluZSBKU19FWFBPUlREQVRBIF9fZGVjbHNwZWMoZGxsZXhwb3J0
KQorICAgICNlbHNlCisgICAgICAgICNkZWZpbmUgSlNfRVhQT1JUREFUQSBfX2RlY2xzcGVjKGRs
bGltcG9ydCkKKyAgICAjZW5kaWYKKyAgICAjaWYgZGVmaW5lZChCVUlMRElOR19XZWJDb3JlKSB8
fCBkZWZpbmVkKEJVSUxESU5HX1dlYktpdCkKKyAgICAgICAgI2RlZmluZSBXRUJLSVRfRVhQT1JU
REFUQSBfX2RlY2xzcGVjKGRsbGV4cG9ydCkKKyAgICAjZWxzZQorICAgICAgICAjZGVmaW5lIFdF
QktJVF9FWFBPUlREQVRBIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQorICAgICNlbmRpZgogI2Vsc2UK
LSNkZWZpbmUgSlNfRVhQT1JUREFUQSBfX2RlY2xzcGVjKGRsbGltcG9ydCkKLSNlbmRpZgotI2lm
IGRlZmluZWQoQlVJTERJTkdfV2ViQ29yZSkgfHwgZGVmaW5lZChCVUlMRElOR19XZWJLaXQpCi0j
ZGVmaW5lIFdFQktJVF9FWFBPUlREQVRBIF9fZGVjbHNwZWMoZGxsZXhwb3J0KQotI2Vsc2UKLSNk
ZWZpbmUgV0VCS0lUX0VYUE9SVERBVEEgX19kZWNsc3BlYyhkbGxpbXBvcnQpCi0jZW5kaWYKLSNl
bHNlCi0jZGVmaW5lIEpTX0VYUE9SVERBVEEKLSNkZWZpbmUgV0VCS0lUX0VYUE9SVERBVEEKKyAg
ICAjZGVmaW5lIEpTX0VYUE9SVERBVEEKKyAgICAjZGVmaW5lIFdFQktJVF9FWFBPUlREQVRBCiAj
ZW5kaWYKIAogI2RlZmluZSBNT0JJTEUgMApkaWZmIC0tZ2l0IGEvV2ViS2l0L2NmL0NoYW5nZUxv
ZyBiL1dlYktpdC9jZi9DaGFuZ2VMb2cKaW5kZXggMjdjYWYxYy4uNzk1MmFjNSAxMDA2NDQKLS0t
IGEvV2ViS2l0L2NmL0NoYW5nZUxvZworKysgYi9XZWJLaXQvY2YvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTIgQEAKKzIwMDktMDctMjQgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9r
aWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEZpeCBjb21waWxhdGlvbiBvbiB0aGUgTWFjLCBkb24ndCByZS1kZWZpbmUgSlNfRVhQT1JUREFU
QSBlbXB0eSBidXQKKyAgICAgICAgcmUtdXNlIHRoZSBkZWZpbml0aW9uIGZyb20gV2ViS2l0UHJl
Zml4LmguCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5j
cHA6CisKIDIwMDktMDQtMjAgIFN0ZXZlIEZhbGtlbmJ1cmcgIDxzZmFsa2VuQGFwcGxlLmNvbT4K
IAogICAgICAgICBTZXBhcmF0ZSBKYXZhU2NyaXB0Q29yZS5kbGwgZnJvbSBXZWJLaXQuZGxsLgpk
aWZmIC0tZ2l0IGEvV2ViS2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENG
LmNwcCBiL1dlYktpdC9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAK
aW5kZXggNjAwZDU4ZC4uOWI4OWI4YSAxMDA2NDQKLS0tIGEvV2ViS2l0L2NmL1dlYkNvcmVTdXBw
b3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcAorKysgYi9XZWJLaXQvY2YvV2ViQ29yZVN1cHBv
cnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCkBAIC00Myw4ICs0Myw2IEBACiAjZWxzZQogI2Rl
ZmluZSBKU19FWFBPUlREQVRBIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQogI2VuZGlmCi0jZWxzZQot
I2RlZmluZSBKU19FWFBPUlREQVRBCiAjZW5kaWYKIAogI2luY2x1ZGUgIldlYkluc3BlY3RvckNs
aWVudC5oIgpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9XZWJLaXQvbWFjL0No
YW5nZUxvZwppbmRleCBjMGZlNDE4Li5jZDc2MWI5IDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL0No
YW5nZUxvZworKysgYi9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDA5
LTA3LTI0ICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEdXBsaWNhdGUgdGhl
IEpTX0VYUE9SVERBVEEgYW5kIFdFQktJVF9FWFBPUlREQVRBIGRlZmluaXRpb24gZnJvbQorICAg
ICAgICBXZWJDb3JlL2NvbmZpZy5oIHRvIGZpeCBjb21waWxhdGlvbiBhZ2FpbnN0IEphdmFTY3Jp
cHRDb3JlIGFuZAorICAgICAgICBXZWJDb3JlIG9uIHRoZSBNYWMuCisKKyAgICAgICAgKiBXZWJL
aXRQcmVmaXguaDoKKwogMjAwOS0wNy0yOSAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUu
Y29tPgogCiAgICAgICAgIDxodHRwOi8vd2Via2l0Lm9yZy9iLzI3Nzg4PiBEb24ndCBleHBvcnQg
V2ViUGx1Z2luQ29udHJvbGxlci5oIGFzIGEgcHJpdmF0ZSBoZWFkZXIKZGlmZiAtLWdpdCBhL1dl
YktpdC9tYWMvV2ViS2l0UHJlZml4LmggYi9XZWJLaXQvbWFjL1dlYktpdFByZWZpeC5oCmluZGV4
IDBlZGVjMDYuLmY4MjhjMjIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvV2ViS2l0UHJlZml4LmgK
KysrIGIvV2ViS2l0L21hYy9XZWJLaXRQcmVmaXguaApAQCAtODMsNiArODMsMjcgQEAgdHlwZWRl
ZiBmbG9hdCBDR0Zsb2F0OwogI2RlZmluZSBXVEZfVVNFX0pTQyAxCiAjZGVmaW5lIFdURl9VU0Vf
VjggMAogCisjdW5kZWYgSlNfRVhQT1JUREFUQQorI3VuZGVmIFdFQktJVF9FWFBPUlREQVRBCisj
aWYgQ09NUElMRVIoR0NDKQorICAgICNkZWZpbmUgSlNfRVhQT1JUREFUQSBfX2F0dHJpYnV0ZV9f
KCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKQorICAgICNkZWZpbmUgV0VCS0lUX0VYUE9SVERBVEEg
X19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkKKyNlbGlmIFBMQVRGT1JNKFdJ
Tl9PUykgJiYgIWRlZmluZWQoQlVJTERJTkdfV1hfXykgJiYgIWRlZmluZWQoQlVJTERJTkdfUVRN
b3ZpZVdpbikKKyAgICAjaWYgZGVmaW5lZChCVUlMRElOR19KYXZhU2NyaXB0Q29yZSkgfHwgZGVm
aW5lZChCVUlMRElOR19XVEYpCisgICAgICAgICNkZWZpbmUgSlNfRVhQT1JUREFUQSBfX2RlY2xz
cGVjKGRsbGV4cG9ydCkKKyAgICAjZWxzZQorICAgICAgICAjZGVmaW5lIEpTX0VYUE9SVERBVEEg
X19kZWNsc3BlYyhkbGxpbXBvcnQpCisgICAgI2VuZGlmCisgICAgI2lmIGRlZmluZWQoQlVJTERJ
TkdfV2ViQ29yZSkgfHwgZGVmaW5lZChCVUlMRElOR19XZWJLaXQpCisgICAgICAgICNkZWZpbmUg
V0VCS0lUX0VYUE9SVERBVEEgX19kZWNsc3BlYyhkbGxleHBvcnQpCisgICAgI2Vsc2UKKyAgICAg
ICAgI2RlZmluZSBXRUJLSVRfRVhQT1JUREFUQSBfX2RlY2xzcGVjKGRsbGltcG9ydCkKKyAgICAj
ZW5kaWYKKyNlbHNlCisgICAgI2RlZmluZSBKU19FWFBPUlREQVRBCisgICAgI2RlZmluZSBXRUJL
SVRfRVhQT1JUREFUQQorI2VuZGlmCisKICNpZmRlZiBfX2NwbHVzcGx1cwogI2luY2x1ZGUgPHd0
Zi9GYXN0TWFsbG9jLmg+CiAjZW5kaWYKQEAgLTkyLDYgKzExMywzIEBAIHR5cGVkZWYgZmxvYXQg
Q0dGbG9hdDsKIC8qIFdvcmsgYXJvdW5kIGJ1ZyB3aXRoIEMrKyBsaWJyYXJ5IHRoYXQgc2NyZXdz
IHVwIE9iamVjdGl2ZS1DKysgd2hlbiBleGNlcHRpb24gc3VwcG9ydCBpcyBkaXNhYmxlZC4gKi8K
ICN1bmRlZiB0cnkKICN1bmRlZiBjYXRjaAotCi0jZGVmaW5lIEpTX0VYUE9SVERBVEEKLSNkZWZp
bmUgV0VCS0lUX0VYUE9SVERBVEEKZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIv
V2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggOGE2NGMyYS4uNWE3ZDIwZSAxMDA2NDQKLS0tIGEv
V2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNCBAQAorMjAwOS0wNy0yNCAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tp
YS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
Rml4IGNvbXBpbGF0aW9uLCBkaXNhYmxlIGJvZ3VzIERMTCBsaW5rYWdlIHdhcm5pbmdzIGFuZAor
ICAgICAgICBkZWZpbmUgSlNfRVhQT1JUREFUQSBsaWtlIGluIEphdmFTY3JpcHRDb3JlL2NvbmZp
Zy5oLCB0bworICAgICAgICBmaXggc3ltYm9sIGltcG9ydCBmb3JtIEphdmFTY3JpcHRDb3JlLgor
CisgICAgICAgICogV2ViS2l0LnZjcHJvai9XZWJLaXQudmNwcm9qOiBUd2Vhay4KKyAgICAgICAg
KiBXZWJLaXRETEwuaDogRGVmaW5lIEpTX0VYUE9SVERBVEEuCisKIDIwMDktMDctMjkgIEJyaWFu
IFdlaW5zdGVpbiAgPGJ3ZWluc3RlaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFdhcyBkb2luZyB0
aGUgYnVpbGQgZml4IHdyb25nLCBOb3RJbXBsZW1lbnRlZC5oIGlzIGluIFdlYkNvcmUuCmRpZmYg
LS1naXQgYS9XZWJLaXQvd2luL1dlYktpdERMTC5oIGIvV2ViS2l0L3dpbi9XZWJLaXRETEwuaApp
bmRleCBkOTQ0YjA3Li4zMTI4ZGZhIDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL1dlYktpdERMTC5o
CisrKyBiL1dlYktpdC93aW4vV2ViS2l0RExMLmgKQEAgLTMwLDYgKzMwLDE2IEBACiAjZGVmaW5l
IF9IQVNfRVhDRVBUSU9OUyAwCiAjZW5kaWYKIAorI2lmIGRlZmluZWQoV0lOMzIpIHx8IGRlZmlu
ZWQoX1dJTjMyKQorI2lmIGRlZmluZWQoQlVJTERJTkdfSmF2YVNjcmlwdENvcmUpIHx8IGRlZmlu
ZWQoQlVJTERJTkdfV1RGKQorI2RlZmluZSBKU19FWFBPUlREQVRBIF9fZGVjbHNwZWMoZGxsZXhw
b3J0KQorI2Vsc2UKKyNkZWZpbmUgSlNfRVhQT1JUREFUQSBfX2RlY2xzcGVjKGRsbGltcG9ydCkK
KyNlbmRpZgorI2Vsc2UKKyNkZWZpbmUgSlNfRVhQT1JUREFUQQorI2VuZGlmCisKICNpbmNsdWRl
IDx3aW5zb2NrMi5oPgogI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNpbmNsdWRlIDx3dGYvSGFzaENv
dW50ZWRTZXQuaD4KZGlmZiAtLWdpdCBhL1dlYktpdExpYnJhcmllcy9DaGFuZ2VMb2cgYi9XZWJL
aXRMaWJyYXJpZXMvQ2hhbmdlTG9nCmluZGV4IDRhMzIwODQuLjlkOTg3OTkgMTAwNjQ0Ci0tLSBh
L1dlYktpdExpYnJhcmllcy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0TGlicmFyaWVzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE5IEBACisyMDA5LTA3LTMwICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhh
dXNtYW5uQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBEaXNhYmxlIE1TVkMgd2FybmluZyA0MjUxIGFib3V0IHRoZSBuZWVkIHRvIHRo
ZSB0eXBlcyBvZiBtZW1iZXIgdmFyaWFibGVzCisgICAgICAgIHRoYXQgYXJlbid0IGV4cG9ydGVk
IHlldC4gV2UgZGVjaWRlIHRvIGlnbm9yZSB0aGlzIHdhcm5pbmcsIGFzIGZpeGluZyBpdAorICAg
ICAgICByZXF1aXJlcyBleHBsaWNpdGx5IGV4cG9ydGluZyBhbGwgdGVtcGxhdGUgaW5zdGFudGlh
dGlvbnMgdXNlZCBpbiBleHBvcnRlZAorICAgICAgICBjbGFzc2VzJyBtZW1iZXIgdmFyaWFibGVz
LiBBbGwgb2YgdGhhdCBkb2Vzbid0IHNlZW0gdG8gYmUgbmVjZXNzYXJ5LCBhcworICAgICAgICB0
aGUgc3VjY2Vzc2Z1bCB1c2Ugb2YgLmRlZiBmaWxlcyB3aXRoIGhhbmQtcGlja2VkIHN5bWJvbHMg
cHJvb3Zlcy4KKworICAgICAgICBBcyBhIHNpZGUtbm90ZSBRdCBmb3IgZXhhbXBsZSBoYXMgdGhp
cyBwYXJ0aWN1bGFyIHdhcm5pbmcgZ2xvYmFsbHkKKyAgICAgICAgZGlzYWJsZWQgKHZpYSBwcmFn
bWEgaW4gcWdsb2JhbC5oKSBhbmQgaXQncyB3b3JraW5nIGp1c3QgZmluZSBmb3IKKyAgICAgICAg
ZXZlcnlvbmUuCisKKyAgICAgICAgKiB3aW4vdG9vbHMvdnNwcm9wcy9jb21tb24udnNwcm9wczoK
KwogMjAwOS0wNy0yNyAgUGV0ZXIgS2FzdGluZyAgPHBrYXN0aW5nQGdvb2dsZS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBSb2Jlbi4KZGlmZiAtLWdpdCBhL1dlYktpdExpYnJhcmll
cy93aW4vdG9vbHMvdnNwcm9wcy9jb21tb24udnNwcm9wcyBiL1dlYktpdExpYnJhcmllcy93aW4v
dG9vbHMvdnNwcm9wcy9jb21tb24udnNwcm9wcwppbmRleCA0YzdjOWRmLi5lOWZhYjJjIDEwMDY0
NAotLS0gYS9XZWJLaXRMaWJyYXJpZXMvd2luL3Rvb2xzL3ZzcHJvcHMvY29tbW9uLnZzcHJvcHMK
KysrIGIvV2ViS2l0TGlicmFyaWVzL3dpbi90b29scy92c3Byb3BzL2NvbW1vbi52c3Byb3BzCkBA
IC0xNSw3ICsxNSw3IEBACiAJCVdhcm5pbmdMZXZlbD0iNCIKIAkJV2FybkFzRXJyb3I9InRydWUi
CiAJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCi0JCURpc2FibGVTcGVjaWZpY1dhcm5pbmdz
PSI0MDE4OzQwNjg7NDA5OTs0MTAwOzQxMjc7NDEzODs0MTg5OzQyNDQ7NDI3NTs0MjkxOzQzMDU7
NDM0NDs0MzU1OzQzODk7NDUwMzs0NTA1OzQ1MTA7NDUxMjs0NjEwOzQ3MDY7NDgwMDs0OTUxOzQ5
NTI7NDk5Njs2MDExOzYwMzE7NjIxMTs2MjQ2OzYyNTU7NjM4NyIKKwkJRGlzYWJsZVNwZWNpZmlj
V2FybmluZ3M9IjQwMTg7NDA2ODs0MDk5OzQxMDA7NDEyNzs0MTM4OzQxODk7NDI0NDs0MjUxOzQy
NzU7NDI5MTs0MzA1OzQzNDQ7NDM1NTs0Mzg5OzQ1MDM7NDUwNTs0NTEwOzQ1MTI7NDYxMDs0NzA2
OzQ4MDA7NDk1MTs0OTUyOzQ5OTY7NjAxMTs2MDMxOzYyMTE7NjI0Njs2MjU1OzYzODciCiAJLz4K
IAk8VG9vbAogCQlOYW1lPSJWQ0xpYnJhcmlhblRvb2wiCmRpZmYgLS1naXQgYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKaW5kZXggMmVlZWIyOS4uYjFhYzk2
NyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdFRvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDA5LTA3LTI4ICBTaW1vbiBIYXVzbWFubiAgPHNp
bW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBGaXggY29tcGlsYXRpb24gb24gdGhlIE1hYy4KKworICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL2NvbmZpZy5oOiBNb3ZlIEZhc3RNYWxsb2MuaCBpbmNsdXNpb24gdW50
aWwgYWZ0ZXIgdGhlIGRlZmluaXRpb24gb2YKKyAgICAgICAgSlNfRVhQT1JUREFUQS4KKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9wdGhyZWFkcy9KYXZhU2NyaXB0VGhyZWFkaW5nUHRocmVhZHMu
Y3BwOiBJbmNsdWRlIGNvbmZpZy5oIGZvciB0aGUKKyAgICAgICAgZXhwb3J0IG1hY3Jvcy4KKwog
MjAwOS0wNy0zMCAgVG9yIEFybmUgVmVzdGLDuCAgPHRvci5hcm5lLnZlc3Rib0Bub2tpYS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9XZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9jb25maWcuaCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L2NvbmZpZy5oCmluZGV4IDA2M2VlZWEuLjE5OWY2NTIgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL2NvbmZpZy5oCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L2NvbmZpZy5oCkBAIC0yNiwxMiArMjYsNiBAQAogCiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+
CiAKLSNpZmRlZiBfX2NwbHVzcGx1cwotI3VuZGVmIG5ldwotI3VuZGVmIGRlbGV0ZQotI2luY2x1
ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jZW5kaWYKLQogI2lmIFBMQVRGT1JNKFdJTl9PUykgJiYg
IUNPTVBJTEVSKEdDQykKICNkZWZpbmUgSlNfRVhQT1JUREFUQSBfX2RlY2xzcGVjKGRsbGltcG9y
dCkKICNkZWZpbmUgV0VCS0lUX0VYUE9SVERBVEEgX19kZWNsc3BlYyhkbGxpbXBvcnQpCkBAIC00
MCw2ICszNCwxMiBAQAogI2RlZmluZSBXRUJLSVRfRVhQT1JUREFUQQogI2VuZGlmCiAKKyNpZmRl
ZiBfX2NwbHVzcGx1cworI3VuZGVmIG5ldworI3VuZGVmIGRlbGV0ZQorI2luY2x1ZGUgPHd0Zi9G
YXN0TWFsbG9jLmg+CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKFdJTikKICNkZWZpbmUgV1RGX1BM
QVRGT1JNX0NGIDEgCiAjaWYgZGVmaW5lZChXSU5fQ0FJUk8pCmRpZmYgLS1naXQgYS9XZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9wdGhyZWFkcy9KYXZhU2NyaXB0VGhyZWFkaW5nUHRocmVhZHMu
Y3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcHRocmVhZHMvSmF2YVNjcmlwdFRocmVh
ZGluZ1B0aHJlYWRzLmNwcAppbmRleCAzYWMyNTdkLi4xZjU3Yjg0IDEwMDY0NAotLS0gYS9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9wdGhyZWFkcy9KYXZhU2NyaXB0VGhyZWFkaW5nUHRocmVh
ZHMuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3B0aHJlYWRzL0phdmFTY3Jp
cHRUaHJlYWRpbmdQdGhyZWFkcy5jcHAKQEAgLTI3LDcgKzI3LDggQEAKICAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRgogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwotIAorCisjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiSmF2YVNjcmlwdFRocmVhZGluZy5oIgogCiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29y
ZUZvdW5kYXRpb24uaD4KLS0gCjEuNi40LnJjMy4xMi5nZGY3M2EKCg==
</data>
<flag name="review"
          id="17976"
          type_id="1"
          status="-"
          setter="mrowe"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34737</attachid>
            <date>2009-08-13 05:41:23 -0700</date>
            <delta_ts>2009-08-14 05:41:52 -0700</delta_ts>
            <desc>Updated patch with JS_EXPORTDATA renamed to JS_EXPORT_PRIVATE</desc>
            <filename>0001-JavaScriptCore-Make-it-possible-to-build-JavaScriptC.patch</filename>
            <type>text/plain</type>
            <size>74525</size>
            <attacher name="Simon Hausmann">hausmann</attacher>
            
              <data encoding="base64">RnJvbSAwMTk5NDQ5ZWM4ZWE3MzMzNGI0ZmU2YzdkMmE3MmVlNzc1OTYzNWEwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBTaW1vbiBIYXVzbWFubiA8c2ltb24uaGF1c21hbm5Abm9raWEu
Y29tPgpEYXRlOiBUaHUsIDEzIEF1ZyAyMDA5IDE0OjM5OjE2ICswMjAwClN1YmplY3Q6IFtQQVRD
SF0gSmF2YVNjcmlwdENvcmU6IE1ha2UgaXQgcG9zc2libGUgdG8gYnVpbGQgSmF2YVNjcmlwdENv
cmUgYXMgc2hhcmVkIGxpYnJhcnkgd2l0aG91dAogZXhwb3J0ZWQgc3ltYm9sIGxpc3RzLgoKUGF0
Y2ggYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4gIDxrZW5uZXRoLmNocmlzdGlhbnNlbkBv
cGVuYm9zc2Eub3JnPiwgU2ltb24gSGF1c21hbm4gPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4g
b24gMjAwOS0wNy0yNApSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KClJlbmFtZWQgSlNfRVhQ
T1JUREFUQSB0byBKU19FWFBPUlRfUFJJVkFURSwgZm9yIGNsYXJpdHkuCgpBZGRlZCBKU19FWFBP
UlRfUFJJVkFURSB0byBhbGwgdGhlIGNsYXNzZXMgdGhhdCBhcmUgYWNjZXNzZWQgZnJvbSBXZWJD
b3JlL1dlYktpdCwKdG8gZW5zdXJlIHRoZWlyIHZpc2liaWxpdHkuCgoqIEFQSS9PcGFxdWVKU1N0
cmluZy5oOiBVc2UgSlNfRVhQT1JUX1BSSVZBVEUuCiogSmF2YVNjcmlwdENvcmUudmNwcm9qL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvajogRGlzYWJsZQpNU1ZDIHdhcm5pbmcg
YWJvdXQgaW5jb25zaXN0ZW50IGxpbmthZ2UuCiogSmF2YVNjcmlwdENvcmUudmNwcm9qL2pzYy9q
c2MudmNwcm9qOiBEaXR0by4KKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOiBJbmNsdWRlIFByb2ZpbGVHZW5lcmF0b3IuaAppbiB0aGUgcHJpdmF0ZSBoZWFkZXJzLCBh
cyBpdCBpcyBpbmNsdWRlZCBmcm9tIFByb2ZpbGVyLmgsIHdoaWNoIGlzCmFsc28gaW5jbHVkZWQg
ZnJvbSBXZWJDb3JlLgoqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOiBVc2UgSlNf
RVhQT1JUX1BSSVZBVEUuCiogY29uZmlnLmg6IERlZmluZSBKU19FWFBPUlRfUFJJVkFURSBhY2Nv
cmRpbmdseSB3aXRoIGdjYzsgRGVmaW5lIGl0IHRvCmRsbGltcG9ydCB3aXRoIE1TVkMuCiogZGVi
dWdnZXIvRGVidWdnZXIuaDogVXNlIEpTX0VYUE9SVF9QUklWQVRFLgoqIGRlYnVnZ2VyL0RlYnVn
Z2VyQ2FsbEZyYW1lLmg6IERpdHRvLgoqIGludGVycHJldGVyL0ludGVycHJldGVyLmg6IERpdHRv
LgoqIGpzYy5wcm86IExpbmsgYWdhaW5zdCBKU0MgYXMgc2hhcmVkIGxpYnJhcnkuCiogcGFyc2Vy
L05vZGVzLmg6IFVzZSBKU19FWFBPUlRfUFJJVkFURS4KKiBwYXJzZXIvUGFyc2VyLmg6IERpdHRv
LgoqIHBhcnNlci9QYXJzZXJBcmVuYS5oOiBEaXR0by4KKiBwY3JlL3BjcmUuaDogRGl0dG8uCiog
cHJvZmlsZXIvUHJvZmlsZS5oOiBVc2UgSlNfRVhQT1JUX1BSSVZBVEUuCiogcHJvZmlsZXIvUHJv
ZmlsZXIuaDogVXNlIEpTX0VYUE9SVF9QUklWQVRFIGFuZCByZXBsYWNlIFByb2ZpbGVHZW5lcmF0
b3IKZm9yd2FyZCBkZWNsYXJhdGlvbiB3aXRoIGluY2x1c2lvbiB0byBmaXggTVNWQyBjb21waWxh
dGlvbiwgd2hpY2ggcmVxdWlyZXMKaXRzIHZpc2libGl0eSB3aGVuIG1hcmtpbmcgUHJvZmlsZXIg
d2l0aCBkbGxleHBvcnQuCiogcnVudGltZS9BcmdMaXN0Lmg6IFVzZSBKU19FWFBPUlRfUFJJVkFU
RS4KKiBydW50aW1lL0Jvb2xlYW5PYmplY3QuaDogRGl0dG8uCiogcnVudGltZS9DYWxsRGF0YS5o
OiBEaXR0by4KKiBydW50aW1lL0NvbGxlY3Rvci5oOiBEaXR0by4KKiBydW50aW1lL0NvbXBsZXRp
b24uaDogRGl0dG8uCiogcnVudGltZS9Db25zdHJ1Y3REYXRhLmg6IERpdHRvLgoqIHJ1bnRpbWUv
RGF0ZUluc3RhbmNlLmg6IERpdHRvLgoqIHJ1bnRpbWUvRXJyb3IuaDogRGl0dG8uCiogcnVudGlt
ZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmg6IERpdHRvLgoqIHJ1bnRpbWUvSWRlbnRpZmllci5oOiBE
aXR0by4KKiBydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuaDogRGl0dG8uCiogcnVudGltZS9J
bnRlcm5hbEZ1bmN0aW9uLmg6IE1vdmVkIEpTX0VYUE9SVF9QUklWQVRFIGZyb20gSW50ZXJuYWxG
dW5jdGlvbjo6aW5mbyB0bwpJbnRlcm5hbEZ1bmN0aW9uLCB0byBleHBvcnQgdGhlIGVudGlyZSBj
bGFzcy4KKiBydW50aW1lL0pTQXJyYXkuaDogVXNlIEpTX0VYUE9SVF9QUklWQVRFLgoqIHJ1bnRp
bWUvSlNCeXRlQXJyYXkuaDogRGl0dG8uCiogcnVudGltZS9KU0NlbGwuaDogRGl0dG8uCiogcnVu
dGltZS9KU0dsb2JhbERhdGEuaDogRGl0dG8uCiogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOiBE
aXR0by4KKiBydW50aW1lL0pTSW1tZWRpYXRlLmg6IERpdHRvLgoqIHJ1bnRpbWUvSlNMb2NrLmg6
IERpdHRvLgoqIHJ1bnRpbWUvSlNOdW1iZXJDZWxsLmg6IERpdHRvLgoqIHJ1bnRpbWUvSlNPYmpl
Y3QuaDogRGl0dG8uCiogcnVudGltZS9KU1N0cmluZy5oOiBEaXR0by4KKiBydW50aW1lL0pTVmFy
aWFibGVPYmplY3QuaDogRGl0dG8uCiogcnVudGltZS9KU1dyYXBwZXJPYmplY3QuaDogRGl0dG8u
CiogcnVudGltZS9Mb29rdXAuaDogRGl0dG8uCiogcnVudGltZS9OdW1iZXJPYmplY3QuaDogRGl0
dG8uCiogcnVudGltZS9PYmplY3RQcm90b3R5cGUuaDogRGl0dG8uCiogcnVudGltZS9Qcm9wZXJ0
eU5hbWVBcnJheS5oOiBEaXR0by4KKiBydW50aW1lL1Byb3RvdHlwZUZ1bmN0aW9uLmg6IERpdHRv
LgoqIHJ1bnRpbWUvUmVnRXhwLmg6IERpdHRvLgoqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0Lmg6IERp
dHRvLgoqIHJ1bnRpbWUvU21hbGxTdHJpbmdzLmg6IERpdHRvLgoqIHJ1bnRpbWUvU3RyaW5nT2Jq
ZWN0Lmg6IE1vdmVkIEpTX0VYUE9SVF9QUklWQVRFIGZyb20gU3RyaW5nT2JqZWN0OjppbmZvIHRv
IFN0cmluZ09iamVjdCwgdG8KZXhwb3J0IHRoZSBlbnRpcmUgY2xhc3MuCiogcnVudGltZS9TdHJ1
Y3R1cmUuaDogVXNlIEpTX0VYUE9SVF9QUklWQVRFLgoqIHJ1bnRpbWUvVGltZW91dENoZWNrZXIu
aDogRGl0dG8uCiogcnVudGltZS9VU3RyaW5nLmg6IFJlcGxhY2VkIHNpbmdsZSBleHBvcnQgb2Yg
VVN0cmluZzo6UmVwOjp7bnVsbCxlbXB0eX1CYXNlU3RyaW5nIHdpdGgKZXhwb3J0IG9mIGVudGly
ZSBjbGFzcy4gQWxzbyBleHBvcnQgYSBmZXcgaGVscGVyIGZ1bmN0aW9ucy4KKiB3dGYvQnl0ZUFy
cmF5Lmg6IFVzZSBKU19FWFBPUlRfUFJJVkFURS4KKiB3dGYvQ3VycmVudFRpbWUuaDogRGl0dG8u
Ciogd3RmL0Zhc3RNYWxsb2MuaDogRGl0dG8uCiogd3RmL01haW5UaHJlYWQuaDogRGl0dG8uCiog
d3RmL1JhbmRvbU51bWJlci5oOiBEaXR0by4KKiB3dGYvVGhyZWFkaW5nLmg6IERpdHRvLgoqIHd0
Zi9kdG9hLmg6IERpdHRvLgoqIHd0Zi91bmljb2RlL1VURjguaDogRGl0dG8uCiogd3RmL3VuaWNv
ZGUvVVRGOC5jcHA6IEluY2x1ZGUgY29uZmlnLmggaW4gb3JkZXIgdG8gY29tcGlsZSB3aXRoIE1T
VkMuCgpXZWJDb3JlOiBEZWZpbmUgSlNfRVhQT1JUX1BSSVZBVEUgYW5kIFdFQktJVF9FWFBPUlRE
QVRBIGZvciBnY2MuCgpQYXRjaCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5l
dGguY2hyaXN0aWFuc2VuQG9wZW5ib3NzYS5vcmc+LCBTaW1vbiBIYXVzbWFubiA8c2ltb24uaGF1
c21hbm5Abm9raWEuY29tPiBvbiAyMDA5LTA3LTI0ClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgoKTGluayBRVE1vdmllV2luIGFnYWluc3QgSmF2YVNjcmlwdENvcmUgZm9yIHRoZSBleHBvcnRl
ZApXVEYgc3ltYm9scy4KCiogV2ViQ29yZS52Y3Byb2ovUVRNb3ZpZVdpbi52Y3Byb2o6IExpbmsg
UVRNb3ZpZVdpbiBhZ2FpbnN0IEpTQyBkbGwsCmZvciB0aGUgZXhwb3J0ZWQgV1RGIHN5bWJvbHMu
CiogY29uZmlnLmg6IFR3ZWFrIGZvciBnY2MuCgpXZWJLaXQvY2Y6IEZpeCBjb21waWxhdGlvbiBv
biB0aGUgTWFjLCBkb24ndCByZS1kZWZpbmUgSlNfRVhQT1JUX1BSSVZBVEUgZW1wdHkgYnV0CnJl
LXVzZSB0aGUgZGVmaW5pdGlvbiBmcm9tIFdlYktpdFByZWZpeC5oLgoKUGF0Y2ggYnkgU2ltb24g
SGF1c21hbm4gPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4gb24gMjAwOS0wNy0yNApSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KCiogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50
Q0YuY3BwOgoKV2ViS2l0L21hYzogRHVwbGljYXRlIHRoZSBKU19FWFBPUlRfUFJJVkFURSBhbmQg
V0VCS0lUX0VYUE9SVERBVEEgZGVmaW5pdGlvbiBmcm9tCldlYkNvcmUvY29uZmlnLmggdG8gZml4
IGNvbXBpbGF0aW9uIGFnYWluc3QgSmF2YVNjcmlwdENvcmUgYW5kCldlYkNvcmUgb24gdGhlIE1h
Yy4KClBhdGNoIGJ5IFNpbW9uIEhhdXNtYW5uIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+IG9u
IDIwMDktMDctMjQKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgoqIFdlYktpdFByZWZpeC5o
OgoKV2ViS2l0L3dpbjogRml4IGNvbXBpbGF0aW9uIGJ5IGRlZmluaW5nIEpTX0VYUE9SVF9QUklW
QVRFIGxpa2UgaW4KSmF2YVNjcmlwdENvcmUvY29uZmlnLmgsIHRvIGZpeCBzeW1ib2wgaW1wb3J0
IGZvcm0gSmF2YVNjcmlwdENvcmUuCgpQYXRjaCBieSBTaW1vbiBIYXVzbWFubiA8c2ltb24uaGF1
c21hbm5Abm9raWEuY29tPiBvbiAyMDA5LTA3LTI0ClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgoKKiBXZWJLaXRETEwuaDogRGVmaW5lIEpTX0VYUE9SVERBVEEuCgpXZWJLaXRMaWJyYXJpZXM6
IERpc2FibGUgTVNWQyB3YXJuaW5nIDQyNTEgYWJvdXQgdGhlIG5lZWQgdG8gdGhlIHR5cGVzIG9m
IG1lbWJlciB2YXJpYWJsZXMKdGhhdCBhcmVuJ3QgZXhwb3J0ZWQgeWV0LiBXZSBkZWNpZGUgdG8g
aWdub3JlIHRoaXMgd2FybmluZywgYXMgZml4aW5nIGl0CnJlcXVpcmVzIGV4cGxpY2l0bHkgZXhw
b3J0aW5nIGFsbCB0ZW1wbGF0ZSBpbnN0YW50aWF0aW9ucyB1c2VkIGluIGV4cG9ydGVkCmNsYXNz
ZXMnIG1lbWJlciB2YXJpYWJsZXMuIEFsbCBvZiB0aGF0IGRvZXNuJ3Qgc2VlbSB0byBiZSBuZWNl
c3NhcnksIGFzCnRoZSBzdWNjZXNzZnVsIHVzZSBvZiAuZGVmIGZpbGVzIHdpdGggaGFuZC1waWNr
ZWQgc3ltYm9scyBwcm9vdmVzLgoKUGF0Y2ggYnkgU2ltb24gSGF1c21hbm4gPHNpbW9uLmhhdXNt
YW5uQG5va2lhLmNvbT4gb24gMjAwOS0wNy0zMApSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
CkFzIGEgc2lkZS1ub3RlIFF0IGZvciBleGFtcGxlIGhhcyB0aGlzIHBhcnRpY3VsYXIgd2Fybmlu
ZyBnbG9iYWxseQpkaXNhYmxlZCAodmlhIHByYWdtYSBpbiBxZ2xvYmFsLmgpIGFuZCBpdCdzIHdv
cmtpbmcganVzdCBmaW5lIGZvcgpldmVyeW9uZS4KCiogd2luL3Rvb2xzL3ZzcHJvcHMvY29tbW9u
LnZzcHJvcHM6CgpXZWJLaXRUb29sczogRml4IGNvbXBpbGF0aW9uIG9uIHRoZSBNYWMuCgpQYXRj
aCBieSBTaW1vbiBIYXVzbWFubiA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPiBvbiAyMDA5LTA3
LTI4ClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKKiBEdW1wUmVuZGVyVHJlZS9jb25maWcu
aDogTW92ZSBGYXN0TWFsbG9jLmggaW5jbHVzaW9uIHVudGlsIGFmdGVyIHRoZSBkZWZpbml0aW9u
IG9mCkpTX0VYUE9SVERBVEEuCiogRHVtcFJlbmRlclRyZWUvcHRocmVhZHMvSmF2YVNjcmlwdFRo
cmVhZGluZ1B0aHJlYWRzLmNwcDogSW5jbHVkZSBjb25maWcuaCBmb3IgdGhlCmV4cG9ydCBtYWNy
b3MuCi0tLQogSmF2YVNjcmlwdENvcmUvQVBJL09wYXF1ZUpTU3RyaW5nLmggICAgICAgICAgICAg
ICAgfCAgICAyICstCiBKYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8ICAgODMgKysrKysrKysrKysrKysrKysrKysKIC4uLi9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qICAgICAgIHwgICAgMiArLQogSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggICAgfCAgICAyICstCiBKYXZhU2NyaXB0
Q29yZS9jb25maWcuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTcgKysrLS0KIEph
dmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmggICAgICAgICAgICAgICAgIHwgICAgMiAr
LQogSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuaCAgICAgICAgfCAg
ICA2ICstCiBKYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oICAgICAgICAg
ICB8ICAgIDIgKy0KIEphdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oICAgICAgICAgICAgICAg
ICAgICAgIHwgICAgNiArLQogSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oICAgICAgICAg
ICAgICAgICAgICAgfCAgICAyICstCiBKYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEu
aCAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIEphdmFTY3JpcHRDb3JlL3BjcmUvcGNyZS5oICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgICAgNiArLQogSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIv
UHJvZmlsZS5oICAgICAgICAgICAgICAgICAgfCAgICAyICstCiBKYXZhU2NyaXB0Q29yZS9wcm9m
aWxlci9Qcm9maWxlci5oICAgICAgICAgICAgICAgICB8ICAgIDYgKy0KIEphdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJnTGlzdC5oICAgICAgICAgICAgICAgICAgIHwgICAgNCArLQogSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Cb29sZWFuT2JqZWN0LmggICAgICAgICAgICAgfCAgICAyICstCiBKYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NhbGxEYXRhLmggICAgICAgICAgICAgICAgICB8ICAgIDQgKy0K
IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29sbGVjdG9yLmggICAgICAgICAgICAgICAgIHwgICAg
MiArLQogSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmggICAgICAgICAgICAgICAg
fCAgICA2ICstCiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0cnVjdERhdGEuaCAgICAgICAg
ICAgICB8ICAgIDQgKy0KIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmggICAg
ICAgICAgICAgIHwgICAgMiArLQogSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oICAgICAg
ICAgICAgICAgICAgICAgfCAgICA4ICstCiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9u
Q29uc3RydWN0b3IuaCAgICAgICB8ICAgIDggKy0KIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRl
bnRpZmllci5oICAgICAgICAgICAgICAgIHwgICAgMiArLQogSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Jbml0aWFsaXplVGhyZWFkaW5nLmggICAgICAgfCAgICA0ICstCiBKYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGVybmFsRnVuY3Rpb24uaCAgICAgICAgICB8ICAgIDQgKy0KIEphdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJheS5oICAgICAgICAgICAgICAgICAgIHwgICAxMCArLQogSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJheS5oICAgICAgICAgICAgICAgfCAgICAyICstCiBK
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oICAgICAgICAgICAgICAgICAgICB8ICAgIDIg
Ky0KIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oICAgICAgICAgICAgICAgIHwg
ICAgMiArLQogSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaCAgICAgICAgICAg
ICAgfCAgICAyICstCiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggICAg
ICAgICAgICB8ICAgIDIgKy0KIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbW1lZGlhdGUuaCAg
ICAgICAgICAgICAgIHwgICAgMiArLQogSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaCAg
ICAgICAgICAgICAgICAgICAgfCAgICAyICstCiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTnVt
YmVyQ2VsbC5oICAgICAgICAgICAgICB8ICAgMTQgKystLQogSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdC5oICAgICAgICAgICAgICAgICAgfCAgICAyICstCiBKYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU3RyaW5nLmggICAgICAgICAgICAgICAgICB8ICAgMzQgKysrKy0tLS0KIEphdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oICAgICAgICAgIHwgICAgNCArLQog
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dyYXBwZXJPYmplY3QuaCAgICAgICAgICAgfCAgICA0
ICstCiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oICAgICAgICAgICAgICAgICAgICB8
ICAgIDQgKy0KIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyT2JqZWN0LmggICAgICAgICAg
ICAgIHwgICAgMiArLQogSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuaCAg
ICAgICAgICAgfCAgICAyICstCiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFy
cmF5LmggICAgICAgICB8ICAgIDIgKy0KIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90eXBl
RnVuY3Rpb24uaCAgICAgICAgIHwgICAgMiArLQogSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHAuaCAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCiBKYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cE9iamVjdC5oICAgICAgICAgICAgICB8ICAgIDIgKy0KIEphdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU21hbGxTdHJpbmdzLmggICAgICAgICAgICAgIHwgICAgMiArLQogSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJpbmdPYmplY3QuaCAgICAgICAgICAgICAgfCAgICA0ICstCiBKYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIEph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVGltZW91dENoZWNrZXIuaCAgICAgICAgICAgIHwgICAgMiAr
LQogSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nLmggICAgICAgICAgICAgICAgICAgfCAg
IDE2ICsrLS0KIEphdmFTY3JpcHRDb3JlL3d0Zi9CeXRlQXJyYXkuaCAgICAgICAgICAgICAgICAg
ICAgIHwgICAgMiArLQogSmF2YVNjcmlwdENvcmUvd3RmL0N1cnJlbnRUaW1lLmggICAgICAgICAg
ICAgICAgICAgfCAgICA1ICstCiBKYXZhU2NyaXB0Q29yZS93dGYvRmFzdE1hbGxvYy5oICAgICAg
ICAgICAgICAgICAgICB8ICAgMTggKystLQogSmF2YVNjcmlwdENvcmUvd3RmL01haW5UaHJlYWQu
aCAgICAgICAgICAgICAgICAgICAgfCAgICA2ICstCiBKYXZhU2NyaXB0Q29yZS93dGYvUmFuZG9t
TnVtYmVyLmggICAgICAgICAgICAgICAgICB8ICAgIDQgKy0KIEphdmFTY3JpcHRDb3JlL3d0Zi9U
aHJlYWRpbmcuaCAgICAgICAgICAgICAgICAgICAgIHwgICAyNCArKystLS0KIEphdmFTY3JpcHRD
b3JlL3d0Zi9kdG9hLmggICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNCArLQogSmF2YVNj
cmlwdENvcmUvd3RmL3VuaWNvZGUvVVRGOC5jcHAgICAgICAgICAgICAgICAgfCAgICAxICsKIEph
dmFTY3JpcHRDb3JlL3d0Zi91bmljb2RlL1VURjguaCAgICAgICAgICAgICAgICAgIHwgICAxMiAr
Ky0tCiBKYXZhU2NyaXB0R2x1ZS9jb25maWcuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
ICAgIDIgKy0KIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgICAxMyArKysKIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovUVRNb3ZpZVdpbi52Y3Byb2og
ICAgICAgICAgIHwgICAgNiArLQogV2ViQ29yZS9jb25maWcuaCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCAgIDMxICsrKystLS0KIFdlYktpdC9jZi9DaGFuZ2VMb2cgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgOSArKwogV2ViS2l0L2NmL1dlYkNvcmVTdXBw
b3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcCAgfCAgICA2ICstCiBXZWJLaXQvbWFjL0NoYW5n
ZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTAgKysrCiBXZWJLaXQvbWFj
L1dlYktpdFByZWZpeC5oICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjQgKysrKystCiBX
ZWJLaXQvd2luL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDkg
KysKIFdlYktpdC93aW4vV2ViS2l0RExMLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
ICAxMCArKysKIFdlYktpdExpYnJhcmllcy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgICAxNiArKysrCiBXZWJLaXRMaWJyYXJpZXMvd2luL3Rvb2xzL3ZzcHJvcHMvY29tbW9u
LnZzcHJvcHMgICB8ICAgIDIgKy0KIFdlYktpdFRvb2xzL0NoYW5nZUxvZyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgICAxMSArKysKIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nv
bmZpZy5oICAgICAgICAgICAgICAgIHwgICAxNiArKy0tCiAuLi4vcHRocmVhZHMvSmF2YVNjcmlw
dFRocmVhZGluZ1B0aHJlYWRzLmNwcCAgICAgICB8ICAgIDMgKy0KIDc1IGZpbGVzIGNoYW5nZWQs
IDM3MiBpbnNlcnRpb25zKCspLCAxODYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvSmF2YVNj
cmlwdENvcmUvQVBJL09wYXF1ZUpTU3RyaW5nLmggYi9KYXZhU2NyaXB0Q29yZS9BUEkvT3BhcXVl
SlNTdHJpbmcuaAppbmRleCA0NzNjODE1Li4wNDExNzQ4IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0
Q29yZS9BUEkvT3BhcXVlSlNTdHJpbmcuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9BUEkvT3BhcXVl
SlNTdHJpbmcuaApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBK
U0dsb2JhbERhdGE7CiB9CiAKLXN0cnVjdCBPcGFxdWVKU1N0cmluZyA6IHB1YmxpYyBUaHJlYWRT
YWZlU2hhcmVkPE9wYXF1ZUpTU3RyaW5nPiB7CitzdHJ1Y3QgSlNfRVhQT1JUX1BSSVZBVEUgT3Bh
cXVlSlNTdHJpbmcgOiBwdWJsaWMgVGhyZWFkU2FmZVNoYXJlZDxPcGFxdWVKU1N0cmluZz4gewog
CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8T3BhcXVlSlNTdHJpbmc+IGNyZWF0ZSgpIC8vIG51bGwK
ICAgICB7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cKaW5kZXggMTZjOTU3Yi4uZGYwNzI2YSAxMDA2NDQKLS0tIGEvSmF2YVNj
cmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDg2IEBACisyMDA5LTA3LTI0ICBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5l
dGguY2hyaXN0aWFuc2VuQG9wZW5ib3NzYS5vcmc+LCBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhh
dXNtYW5uQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGJ1aWxkIEphdmFTY3JpcHRDb3JlIGFzIHNo
YXJlZCBsaWJyYXJ5IHdpdGhvdXQKKyAgICAgICAgZXhwb3J0ZWQgc3ltYm9sIGxpc3RzLgorCisg
ICAgICAgIFJlbmFtZWQgSlNfRVhQT1JUREFUQSB0byBKU19FWFBPUlRfUFJJVkFURSwgZm9yIGNs
YXJpdHkuCisKKyAgICAgICAgQWRkZWQgSlNfRVhQT1JUX1BSSVZBVEUgdG8gYWxsIHRoZSBjbGFz
c2VzIHRoYXQgYXJlIGFjY2Vzc2VkIGZyb20gV2ViQ29yZS9XZWJLaXQsCisgICAgICAgIHRvIGVu
c3VyZSB0aGVpciB2aXNpYmlsaXR5LgorCisgICAgICAgICogQVBJL09wYXF1ZUpTU3RyaW5nLmg6
IFVzZSBKU19FWFBPUlRfUFJJVkFURS4KKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ov
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qOiBEaXNhYmxlCisgICAgICAgIE1T
VkMgd2FybmluZyBhYm91dCBpbmNvbnNpc3RlbnQgbGlua2FnZS4KKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS52Y3Byb2ovanNjL2pzYy52Y3Byb2o6IERpdHRvLgorICAgICAgICAqIEphdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEluY2x1ZGUgUHJvZmlsZUdlbmVyYXRv
ci5oCisgICAgICAgIGluIHRoZSBwcml2YXRlIGhlYWRlcnMsIGFzIGl0IGlzIGluY2x1ZGVkIGZy
b20gUHJvZmlsZXIuaCwgd2hpY2ggaXMKKyAgICAgICAgYWxzbyBpbmNsdWRlZCBmcm9tIFdlYkNv
cmUuCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6IFVzZSBKU19F
WFBPUlRfUFJJVkFURS4KKyAgICAgICAgKiBjb25maWcuaDogRGVmaW5lIEpTX0VYUE9SVF9QUklW
QVRFIGFjY29yZGluZ2x5IHdpdGggZ2NjOyBEZWZpbmUgaXQgdG8KKyAgICAgICAgZGxsaW1wb3J0
IHdpdGggTVNWQy4KKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlci5oOiBVc2UgSlNfRVhQT1JU
X1BSSVZBVEUuCisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuaDogRGl0dG8u
CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDogRGl0dG8uCisgICAgICAgICog
anNjLnBybzogTGluayBhZ2FpbnN0IEpTQyBhcyBzaGFyZWQgbGlicmFyeS4KKyAgICAgICAgKiBw
YXJzZXIvTm9kZXMuaDogVXNlIEpTX0VYUE9SVF9QUklWQVRFLgorICAgICAgICAqIHBhcnNlci9Q
YXJzZXIuaDogRGl0dG8uCisgICAgICAgICogcGFyc2VyL1BhcnNlckFyZW5hLmg6IERpdHRvLgor
ICAgICAgICAqIHBjcmUvcGNyZS5oOiBEaXR0by4KKyAgICAgICAgKiBwcm9maWxlci9Qcm9maWxl
Lmg6IFVzZSBKU19FWFBPUlRfUFJJVkFURS4KKyAgICAgICAgKiBwcm9maWxlci9Qcm9maWxlci5o
OiBVc2UgSlNfRVhQT1JUX1BSSVZBVEUgYW5kIHJlcGxhY2UgUHJvZmlsZUdlbmVyYXRvcgorICAg
ICAgICBmb3J3YXJkIGRlY2xhcmF0aW9uIHdpdGggaW5jbHVzaW9uIHRvIGZpeCBNU1ZDIGNvbXBp
bGF0aW9uLCB3aGljaCByZXF1aXJlcworICAgICAgICBpdHMgdmlzaWJsaXR5IHdoZW4gbWFya2lu
ZyBQcm9maWxlciB3aXRoIGRsbGV4cG9ydC4KKyAgICAgICAgKiBydW50aW1lL0FyZ0xpc3QuaDog
VXNlIEpTX0VYUE9SVF9QUklWQVRFLgorICAgICAgICAqIHJ1bnRpbWUvQm9vbGVhbk9iamVjdC5o
OiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL0NhbGxEYXRhLmg6IERpdHRvLgorICAgICAgICAq
IHJ1bnRpbWUvQ29sbGVjdG9yLmg6IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvQ29tcGxldGlv
bi5oOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL0NvbnN0cnVjdERhdGEuaDogRGl0dG8uCisg
ICAgICAgICogcnVudGltZS9EYXRlSW5zdGFuY2UuaDogRGl0dG8uCisgICAgICAgICogcnVudGlt
ZS9FcnJvci5oOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3Iu
aDogRGl0dG8uCisgICAgICAgICogcnVudGltZS9JZGVudGlmaWVyLmg6IERpdHRvLgorICAgICAg
ICAqIHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5oOiBEaXR0by4KKyAgICAgICAgKiBydW50
aW1lL0ludGVybmFsRnVuY3Rpb24uaDogTW92ZWQgSlNfRVhQT1JUX1BSSVZBVEUgZnJvbSBJbnRl
cm5hbEZ1bmN0aW9uOjppbmZvIHRvCisgICAgICAgIEludGVybmFsRnVuY3Rpb24sIHRvIGV4cG9y
dCB0aGUgZW50aXJlIGNsYXNzLgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5oOiBVc2UgSlNf
RVhQT1JUX1BSSVZBVEUuCisgICAgICAgICogcnVudGltZS9KU0J5dGVBcnJheS5oOiBEaXR0by4K
KyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5oOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL0pT
R2xvYmFsRGF0YS5oOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6
IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvSlNJbW1lZGlhdGUuaDogRGl0dG8uCisgICAgICAg
ICogcnVudGltZS9KU0xvY2suaDogRGl0dG8uCisgICAgICAgICogcnVudGltZS9KU051bWJlckNl
bGwuaDogRGl0dG8uCisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOiBEaXR0by4KKyAgICAg
ICAgKiBydW50aW1lL0pTU3RyaW5nLmg6IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvSlNWYXJp
YWJsZU9iamVjdC5oOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL0pTV3JhcHBlck9iamVjdC5o
OiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5oOiBEaXR0by4KKyAgICAgICAgKiBy
dW50aW1lL051bWJlck9iamVjdC5oOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL09iamVjdFBy
b3RvdHlwZS5oOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5Lmg6
IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvUHJvdG90eXBlRnVuY3Rpb24uaDogRGl0dG8uCisg
ICAgICAgICogcnVudGltZS9SZWdFeHAuaDogRGl0dG8uCisgICAgICAgICogcnVudGltZS9SZWdF
eHBPYmplY3QuaDogRGl0dG8uCisgICAgICAgICogcnVudGltZS9TbWFsbFN0cmluZ3MuaDogRGl0
dG8uCisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuaDogTW92ZWQgSlNfRVhQT1JUX1BS
SVZBVEUgZnJvbSBTdHJpbmdPYmplY3Q6OmluZm8gdG8gU3RyaW5nT2JqZWN0LCB0bworICAgICAg
ICBleHBvcnQgdGhlIGVudGlyZSBjbGFzcy4KKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5o
OiBVc2UgSlNfRVhQT1JUX1BSSVZBVEUuCisgICAgICAgICogcnVudGltZS9UaW1lb3V0Q2hlY2tl
ci5oOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL1VTdHJpbmcuaDogUmVwbGFjZWQgc2luZ2xl
IGV4cG9ydCBvZiBVU3RyaW5nOjpSZXA6OntudWxsLGVtcHR5fUJhc2VTdHJpbmcgd2l0aAorICAg
ICAgICBleHBvcnQgb2YgZW50aXJlIGNsYXNzLiBBbHNvIGV4cG9ydCBhIGZldyBoZWxwZXIgZnVu
Y3Rpb25zLgorICAgICAgICAqIHd0Zi9CeXRlQXJyYXkuaDogVXNlIEpTX0VYUE9SVF9QUklWQVRF
LgorICAgICAgICAqIHd0Zi9DdXJyZW50VGltZS5oOiBEaXR0by4KKyAgICAgICAgKiB3dGYvRmFz
dE1hbGxvYy5oOiBEaXR0by4KKyAgICAgICAgKiB3dGYvTWFpblRocmVhZC5oOiBEaXR0by4KKyAg
ICAgICAgKiB3dGYvUmFuZG9tTnVtYmVyLmg6IERpdHRvLgorICAgICAgICAqIHd0Zi9UaHJlYWRp
bmcuaDogRGl0dG8uCisgICAgICAgICogd3RmL2R0b2EuaDogRGl0dG8uCisgICAgICAgICogd3Rm
L3VuaWNvZGUvVVRGOC5oOiBEaXR0by4KKyAgICAgICAgKiB3dGYvdW5pY29kZS9VVEY4LmNwcDog
SW5jbHVkZSBjb25maWcuaCBpbiBvcmRlciB0byBjb21waWxlIHdpdGggTVNWQy4KKwogMjAwOS0w
OC0xMiAgR2Fib3IgTG9raSAgPGxva2lAaW5mLnUtc3plZ2VkLmh1PgogCiAgICAgICAgIFJldmll
d2VkIGJ5IEdhdmluIEJhcnJhY2xvdWdoLgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYmY3N2I2NS4uMWI5
YWI2OSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNzQsNyArMTc0LDcgQEAKIAkJOTVBQjgzNDIwREE0
MzIyNTAwQkM4M0YzIC8qIFByb2ZpbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk1QUI4MzJFMERBNDJDQUQwMEJDODNGMyAvKiBQcm9maWxlci5j
cHAgKi87IH07CiAJCTk1QUI4MzU2MERBNDNDMzAwMEJDODNGMyAvKiBQcm9maWxlTm9kZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NUFCODM1NDBE
QTQzQjQ0MDBCQzgzRjMgLyogUHJvZmlsZU5vZGUuY3BwICovOyB9OwogCQk5NUNENDU3NjBFMUM0
RkREMDA4NTM1OEUgLyogUHJvZmlsZUdlbmVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NUNENDU3NDBFMUM0RkREMDA4NTM1OEUgLyogUHJv
ZmlsZUdlbmVyYXRvci5jcHAgKi87IH07Ci0JCTk1Q0Q0NTc3MEUxQzRGREQwMDg1MzU4RSAvKiBQ
cm9maWxlR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5NUNENDU3NTBFMUM0RkREMDA4NTM1OEUgLyogUHJvZmlsZUdlbmVyYXRvci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07CisJCTk1Q0Q0NTc3MEUxQzRGREQw
MDg1MzU4RSAvKiBQcm9maWxlR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5NUNENDU3NTBFMUM0RkREMDA4NTM1OEUgLyogUHJvZmlsZUdl
bmVyYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTk1RTNCQzA1MEUxQUU2ODIwMEIyRDFDMSAvKiBDYWxsSWRlbnRpZmllci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTVFM0JDMDQwRTFBRTY4MjAw
QjJEMUMxIC8qIENhbGxJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTVGNkU2OTUwRTVCNUY5NzAwOTFFODYwIC8qIEpTUHJvZmls
ZXJQcml2YXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDk1OTg4QkE5MEU0NzdCRUMwMEQyOEQ0RCAvKiBKU1Byb2ZpbGVyUHJpdmF0ZS5jcHAgKi87
IH07CiAJCTk2MDA5N0E2MEVCQUJCNTgwMDdBNzI5NyAvKiBMYWJlbFNjb3BlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NjAwOTdBNTBFQkFCQjU4MDA3
QTcyOTcgLyogTGFiZWxTY29wZS5oICovOyB9OwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCA2Mjk0ZGQyLi5iMTVkZjRjIDEwMDY0NAot
LS0gYS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysg
Yi9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtNjEs
NyArNjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRmluYWxseUNvbnRleHQgZmluYWxs
eUNvbnRleHQ7CiAgICAgfTsKIAotICAgIGNsYXNzIEJ5dGVjb2RlR2VuZXJhdG9yIDogcHVibGlj
IFdURjo6RmFzdEFsbG9jQmFzZSB7CisgICAgY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgQnl0ZWNv
ZGVHZW5lcmF0b3IgOiBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsKICAgICBwdWJsaWM6CiAg
ICAgICAgIHR5cGVkZWYgRGVjbGFyYXRpb25TdGFja3M6OlZhclN0YWNrIFZhclN0YWNrOwogICAg
ICAgICB0eXBlZGVmIERlY2xhcmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNrIEZ1bmN0aW9uU3Rh
Y2s7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9jb25maWcuaCBiL0phdmFTY3JpcHRDb3Jl
L2NvbmZpZy5oCmluZGV4IDY2ODE3NjEuLmVkZWM2NGQgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRD
b3JlL2NvbmZpZy5oCisrKyBiL0phdmFTY3JpcHRDb3JlL2NvbmZpZy5oCkBAIC0yNSwxNCArMjUs
MTcgQEAKIAogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogCi0jaWYgUExBVEZPUk0oV0lOX09T
KSAmJiAhZGVmaW5lZChCVUlMRElOR19XWF9fKSAmJiAhQ09NUElMRVIoR0NDKQotI2lmIGRlZmlu
ZWQoQlVJTERJTkdfSmF2YVNjcmlwdENvcmUpIHx8IGRlZmluZWQoQlVJTERJTkdfV1RGKQotI2Rl
ZmluZSBKU19FWFBPUlREQVRBIF9fZGVjbHNwZWMoZGxsZXhwb3J0KQorI3VuZGVmIEpTX0VYUE9S
VF9QUklWQVRFCisjaWYgQ09NUElMRVIoR0NDKQorICAgICNkZWZpbmUgSlNfRVhQT1JUX1BSSVZB
VEUgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkKKyNlbGlmIFBMQVRGT1JN
KFdJTl9PUykgJiYgIWRlZmluZWQoQlVJTERJTkdfV1hfXykKKyAgICAjaWYgZGVmaW5lZChCVUlM
RElOR19KYXZhU2NyaXB0Q29yZSkgfHwgZGVmaW5lZChCVUlMRElOR19XVEYpCisgICAgICAgICNk
ZWZpbmUgSlNfRVhQT1JUX1BSSVZBVEUgX19kZWNsc3BlYyhkbGxleHBvcnQpCisgICAgI2Vsc2UK
KyAgICAgICAgI2RlZmluZSBKU19FWFBPUlRfUFJJVkFURSBfX2RlY2xzcGVjKGRsbGltcG9ydCkK
KyAgICAjZW5kaWYKICNlbHNlCi0jZGVmaW5lIEpTX0VYUE9SVERBVEEgX19kZWNsc3BlYyhkbGxp
bXBvcnQpCi0jZW5kaWYKLSNlbHNlCi0jZGVmaW5lIEpTX0VYUE9SVERBVEEKKyAgICAjZGVmaW5l
IEpTX0VYUE9SVF9QUklWQVRFCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKFdJTl9PUykKZGlmZiAt
LWdpdCBhL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmggYi9KYXZhU2NyaXB0Q29y
ZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCmluZGV4IDk4ZDA5MzUuLjc4YTZiMDkgMTAwNjQ0Ci0tLSBh
L0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmgKKysrIGIvSmF2YVNjcmlwdENvcmUv
ZGVidWdnZXIvRGVidWdnZXIuaApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICBjbGFzcyBTb3VyY2VDb2RlOwogICAgIGNsYXNzIFVTdHJpbmc7CiAKLSAgICBjbGFzcyBEZWJ1
Z2dlciB7CisgICAgY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgRGVidWdnZXIgewogICAgIHB1Ymxp
YzoKICAgICAgICAgRGVidWdnZXIoKTsKICAgICAgICAgdmlydHVhbCB+RGVidWdnZXIoKTsKZGlm
ZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmggYi9K
YXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5oCmluZGV4IDlkMzc3ZWYu
LjE4ZTEwOGUgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2Fs
bEZyYW1lLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUu
aApAQCAtMjUsMTUgKzI1LDE1IEBACiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKICAqIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KLSAKKwogI2lmbmRlZiBEZWJ1Z2dlckNhbGxGcmFtZV9oCiAjZGVmaW5lIERlYnVnZ2VyQ2Fs
bEZyYW1lX2gKIAogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKLSAg
ICAKLSAgICBjbGFzcyBEZWJ1Z2dlckNhbGxGcmFtZSB7CisKKyAgICBjbGFzcyBKU19FWFBPUlRf
UFJJVkFURSBEZWJ1Z2dlckNhbGxGcmFtZSB7CiAgICAgcHVibGljOgogICAgICAgICBlbnVtIFR5
cGUgeyBQcm9ncmFtVHlwZSwgRnVuY3Rpb25UeXBlIH07CiAKZGlmZiAtLWdpdCBhL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmggYi9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5oCmluZGV4IDUxOWM1MDguLjNmYjhkNDkgMTAwNjQ0Ci0tLSBhL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKKysrIGIvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaApAQCAtNjYsNyArNjYsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgIGVudW0geyBNYXhNYWluVGhyZWFkUmVlbnRyeURlcHRoID0gMjU2LCBNYXhT
ZWNvbmRhcnlUaHJlYWRSZWVudHJ5RGVwdGggPSAzMiB9OwogCi0gICAgY2xhc3MgSW50ZXJwcmV0
ZXIgOiBwdWJsaWMgRmFzdEFsbG9jQmFzZSB7CisgICAgY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUg
SW50ZXJwcmV0ZXIgOiBwdWJsaWMgRmFzdEFsbG9jQmFzZSB7CiAgICAgICAgIGZyaWVuZCBjbGFz
cyBKSVQ7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBDYWNoZWRDYWxsOwogICAgIHB1YmxpYzoKZGlm
ZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oIGIvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL05vZGVzLmgKaW5kZXggM2NhYjUwZC4uYTU0NzBlNCAxMDA2NDQKLS0tIGEvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL05vZGVzLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVz
LmgKQEAgLTE1OSw3ICsxNTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgaW50IG1fbGlu
ZTsKICAgICB9OwogCi0gICAgY2xhc3MgRXhwcmVzc2lvbk5vZGUgOiBwdWJsaWMgTm9kZSB7Cisg
ICAgY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgRXhwcmVzc2lvbk5vZGUgOiBwdWJsaWMgTm9kZSB7
CiAgICAgcHVibGljOgogICAgICAgICBFeHByZXNzaW9uTm9kZShKU0dsb2JhbERhdGEqLCBSZXN1
bHRUeXBlID0gUmVzdWx0VHlwZTo6dW5rbm93blR5cGUoKSk7CiAKQEAgLTE4Nyw3ICsxODcsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVzdWx0VHlwZSBtX3Jlc3VsdFR5cGU7CiAgICAg
fTsKIAotICAgIGNsYXNzIFN0YXRlbWVudE5vZGUgOiBwdWJsaWMgTm9kZSB7CisgICAgY2xhc3Mg
SlNfRVhQT1JUX1BSSVZBVEUgU3RhdGVtZW50Tm9kZSA6IHB1YmxpYyBOb2RlIHsKICAgICBwdWJs
aWM6CiAgICAgICAgIFN0YXRlbWVudE5vZGUoSlNHbG9iYWxEYXRhKik7CiAKQEAgLTE1MzksNyAr
MTUzOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBPd25QdHI8RXZhbENvZGVCbG9jaz4g
bV9jb2RlOwogICAgIH07CiAKLSAgICBjbGFzcyBGdW5jdGlvbkJvZHlOb2RlIDogcHVibGljIFNj
b3BlTm9kZSB7CisgICAgY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgRnVuY3Rpb25Cb2R5Tm9kZSA6
IHB1YmxpYyBTY29wZU5vZGUgewogICAgICAgICBmcmllbmQgY2xhc3MgSklUOwogICAgIHB1Ymxp
YzoKICNpZiBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5oIGIvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IDM3M2RjMDAuLmJm
NTg0ZTYgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IFBhcnNlckFyZW5hRGF0
YSA6IFBhcnNlckFyZW5hRGVsZXRhYmxlIHsgVCBkYXRhOyB9OwogCi0gICAgY2xhc3MgUGFyc2Vy
IDogcHVibGljIE5vbmNvcHlhYmxlIHsKKyAgICBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBQYXJz
ZXIgOiBwdWJsaWMgTm9uY29weWFibGUgewogICAgIHB1YmxpYzoKICAgICAgICAgdGVtcGxhdGUg
PGNsYXNzIFBhcnNlZE5vZGU+IFBhc3NSZWZQdHI8UGFyc2VkTm9kZT4gcGFyc2UoRXhlY1N0YXRl
KiwgRGVidWdnZXIqLCBjb25zdCBTb3VyY2VDb2RlJiwgaW50KiBlcnJMaW5lID0gMCwgVVN0cmlu
ZyogZXJyTXNnID0gMCk7CiAgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBQYXJzZWROb2RlPiBQYXNz
UmVmUHRyPFBhcnNlZE5vZGU+IHJlcGFyc2UoSlNHbG9iYWxEYXRhKiwgUGFyc2VkTm9kZSopOwpk
aWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmggYi9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaAppbmRleCA2NmM4NTI5Li42MjQzZGY0IDEwMDY0
NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaAorKysgYi9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICBjbGFzcyBQYXJzZXJBcmVuYURlbGV0YWJsZTsKICAgICBjbGFzcyBQYXJzZXJB
cmVuYVJlZkNvdW50ZWQ7CiAKLSAgICBjbGFzcyBQYXJzZXJBcmVuYSB7CisgICAgY2xhc3MgSlNf
RVhQT1JUX1BSSVZBVEUgUGFyc2VyQXJlbmEgewogICAgIHB1YmxpYzoKICAgICAgICAgdm9pZCBz
d2FwKFBhcnNlckFyZW5hJiBvdGhlckFyZW5hKQogICAgICAgICB7CmRpZmYgLS1naXQgYS9KYXZh
U2NyaXB0Q29yZS9wY3JlL3BjcmUuaCBiL0phdmFTY3JpcHRDb3JlL3BjcmUvcGNyZS5oCmluZGV4
IDU1MDQ0ZmQuLjFkYWEyMzQgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3BjcmUvcGNyZS5o
CisrKyBiL0phdmFTY3JpcHRDb3JlL3BjcmUvcGNyZS5oCkBAIC01NSwxNCArNTUsMTQgQEAgY29u
c3QgaW50IEpTUmVnRXhwRXJyb3JIaXRMaW1pdCA9IC0yOwogY29uc3QgaW50IEpTUmVnRXhwRXJy
b3JOb01lbW9yeSA9IC0zOwogY29uc3QgaW50IEpTUmVnRXhwRXJyb3JJbnRlcm5hbCA9IC00Owog
Ci1KU1JlZ0V4cCoganNSZWdFeHBDb21waWxlKGNvbnN0IFVDaGFyKiBwYXR0ZXJuLCBpbnQgcGF0
dGVybkxlbmd0aCwKK0pTX0VYUE9SVF9QUklWQVRFIEpTUmVnRXhwKiBqc1JlZ0V4cENvbXBpbGUo
Y29uc3QgVUNoYXIqIHBhdHRlcm4sIGludCBwYXR0ZXJuTGVuZ3RoLAogICAgIEpTUmVnRXhwSWdu
b3JlQ2FzZU9wdGlvbiwgSlNSZWdFeHBNdWx0aWxpbmVPcHRpb24sCiAgICAgdW5zaWduZWQqIG51
bVN1YnBhdHRlcm5zLCBjb25zdCBjaGFyKiogZXJyb3JNZXNzYWdlKTsKIAotaW50IGpzUmVnRXhw
RXhlY3V0ZShjb25zdCBKU1JlZ0V4cCosCitKU19FWFBPUlRfUFJJVkFURSBpbnQganNSZWdFeHBF
eGVjdXRlKGNvbnN0IEpTUmVnRXhwKiwKICAgICBjb25zdCBVQ2hhciogc3ViamVjdCwgaW50IHN1
YmplY3RMZW5ndGgsIGludCBzdGFydE9mZnNldCwKICAgICBpbnQqIG9mZnNldHNWZWN0b3IsIGlu
dCBvZmZzZXRzVmVjdG9yTGVuZ3RoKTsKIAotdm9pZCBqc1JlZ0V4cEZyZWUoSlNSZWdFeHAqKTsK
K0pTX0VYUE9SVF9QUklWQVRFIHZvaWQganNSZWdFeHBGcmVlKEpTUmVnRXhwKik7CiAKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZS5oIGIvSmF2YVNj
cmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZS5oCmluZGV4IDZiZjI5ZjcuLjhkYWJhOGEgMTAwNjQ0
Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGUuaAorKysgYi9KYXZhU2NyaXB0
Q29yZS9wcm9maWxlci9Qcm9maWxlLmgKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIEpT
QyB7CiAKLSAgICBjbGFzcyBQcm9maWxlIDogcHVibGljIFJlZkNvdW50ZWQ8UHJvZmlsZT4gewor
ICAgIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIFByb2ZpbGUgOiBwdWJsaWMgUmVmQ291bnRlZDxQ
cm9maWxlPiB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxQcm9maWxl
PiBjcmVhdGUoY29uc3QgVVN0cmluZyYgdGl0bGUsIHVuc2lnbmVkIHVpZCk7CiAgICAgICAgIHZp
cnR1YWwgflByb2ZpbGUoKTsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1By
b2ZpbGVyLmggYi9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlci5oCmluZGV4IDIxNjIx
YmYuLjVjMmI4MDAgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVy
LmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXIuaApAQCAtMzAsNiArMzAs
NyBAQAogI2RlZmluZSBQcm9maWxlcl9oCiAKICNpbmNsdWRlICJQcm9maWxlLmgiCisjaW5jbHVk
ZSAiUHJvZmlsZUdlbmVyYXRvci5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTQwLDE4ICs0
MSwxNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBKU0dsb2JhbERhdGE7CiAgICAgY2xh
c3MgSlNPYmplY3Q7CiAgICAgY2xhc3MgSlNWYWx1ZTsKLSAgICBjbGFzcyBQcm9maWxlR2VuZXJh
dG9yOwogICAgIGNsYXNzIFVTdHJpbmc7CiAgICAgc3RydWN0IENhbGxJZGVudGlmaWVyOyAgICAK
IAotICAgIGNsYXNzIFByb2ZpbGVyIDogcHVibGljIEZhc3RBbGxvY0Jhc2UgeworICAgIGNsYXNz
IEpTX0VYUE9SVF9QUklWQVRFIFByb2ZpbGVyIDogcHVibGljIEZhc3RBbGxvY0Jhc2UgewogICAg
IHB1YmxpYzoKICAgICAgICAgc3RhdGljIFByb2ZpbGVyKiogZW5hYmxlZFByb2ZpbGVyUmVmZXJl
bmNlKCkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuICZzX3NoYXJlZEVuYWJsZWRQcm9m
aWxlclJlZmVyZW5jZTsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBQcm9maWxlciogcHJv
ZmlsZXIoKTsgCisgICAgICAgIHN0YXRpYyBQcm9maWxlciogcHJvZmlsZXIoKTsKICAgICAgICAg
c3RhdGljIENhbGxJZGVudGlmaWVyIGNyZWF0ZUNhbGxJZGVudGlmaWVyKEpTR2xvYmFsRGF0YSos
IEpTVmFsdWUsIGNvbnN0IFVTdHJpbmcmIHNvdXJjZVVSTCwgaW50IGxpbmVOdW1iZXIpOwogCiAg
ICAgICAgIHZvaWQgc3RhcnRQcm9maWxpbmcoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYgdGl0
bGUpOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmggYi9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuaAppbmRleCBhYjUwMWI2Li44OGNiZDI2IDEwMDY0
NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuaAorKysgYi9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FyZ0xpc3QuaApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgSlND
IHsKICAgICAKLSAgICBjbGFzcyBNYXJrZWRBcmd1bWVudEJ1ZmZlciA6IHB1YmxpYyBOb25jb3B5
YWJsZSB7CisgICAgY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgTWFya2VkQXJndW1lbnRCdWZmZXIg
OiBwdWJsaWMgTm9uY29weWFibGUgewogICAgIHByaXZhdGU6CiAgICAgICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSA9IDg7CiAgICAgICAgIHR5cGVkZWYgVmVjdG9yPFJl
Z2lzdGVyLCBpbmxpbmVDYXBhY2l0eT4gVmVjdG9yVHlwZTsKQEAgLTE3MCw3ICsxNzAsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCosIHNpemVf
dCk7CiAgICAgfTsKIAotICAgIGNsYXNzIEFyZ0xpc3QgeworICAgIGNsYXNzIEpTX0VYUE9SVF9Q
UklWQVRFIEFyZ0xpc3QgewogICAgICAgICBmcmllbmQgY2xhc3MgSklUOwogICAgIHB1YmxpYzoK
ICAgICAgICAgdHlwZWRlZiBKU1ZhbHVlKiBpdGVyYXRvcjsKZGlmZiAtLWdpdCBhL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQm9vbGVhbk9iamVjdC5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9C
b29sZWFuT2JqZWN0LmgKaW5kZXggY2ZkNTVmZS4uOGM1MjM3MiAxMDA2NDQKLS0tIGEvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Cb29sZWFuT2JqZWN0LmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Cb29sZWFuT2JqZWN0LmgKQEAgLTI1LDcgKzI1LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7
CiAKLSAgICBjbGFzcyBCb29sZWFuT2JqZWN0IDogcHVibGljIEpTV3JhcHBlck9iamVjdCB7Cisg
ICAgY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgQm9vbGVhbk9iamVjdCA6IHB1YmxpYyBKU1dyYXBw
ZXJPYmplY3QgewogICAgIHB1YmxpYzoKICAgICAgICAgZXhwbGljaXQgQm9vbGVhbk9iamVjdChQ
YXNzUmVmUHRyPFN0cnVjdHVyZT4pOwogCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NhbGxEYXRhLmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhbGxEYXRhLmgKaW5kZXgg
ZDViMDE3Mi4uM2RjMWNmYSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWxs
RGF0YS5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FsbERhdGEuaApAQCAtNDgsNyAr
NDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIHR5cGVkZWYgSlNWYWx1ZSAoSlNDX0hPU1Rf
Q0FMTCAqTmF0aXZlRnVuY3Rpb24pKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNWYWx1ZSB0aGlz
VmFsdWUsIGNvbnN0IEFyZ0xpc3QmKTsKIAotICAgIHVuaW9uIENhbGxEYXRhIHsKKyAgICB1bmlv
biBKU19FWFBPUlRfUFJJVkFURSBDYWxsRGF0YSB7CiAgICAgICAgIHN0cnVjdCB7CiAgICAgICAg
ICAgICBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbjsKICAgICAgICAgfSBuYXRpdmU7CkBAIC01OCw3
ICs1OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9IGpzOwogICAgIH07CiAKLSAgICBK
U1ZhbHVlIGNhbGwoRXhlY1N0YXRlKiwgSlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwgQ2FsbFR5cGUs
IGNvbnN0IENhbGxEYXRhJiwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3QmKTsKKyAg
ICBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIGNhbGwoRXhlY1N0YXRlKiwgSlNWYWx1ZSBmdW5j
dGlvbk9iamVjdCwgQ2FsbFR5cGUsIGNvbnN0IENhbGxEYXRhJiwgSlNWYWx1ZSB0aGlzVmFsdWUs
IGNvbnN0IEFyZ0xpc3QmKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29sbGVjdG9yLmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbGxlY3Rvci5oCmluZGV4IDg3N2Y4OTAuLmQ3NmZiNTEgMTAwNjQ0Ci0tLSBhL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29sbGVjdG9yLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b2xsZWN0b3IuaApAQCAtNjQsNyArNjQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgT3Bl
cmF0aW9uSW5Qcm9ncmVzcyBvcGVyYXRpb25JblByb2dyZXNzOwogICAgIH07CiAKLSAgICBjbGFz
cyBIZWFwIDogcHVibGljIE5vbmNvcHlhYmxlIHsKKyAgICBjbGFzcyBKU19FWFBPUlRfUFJJVkFU
RSBIZWFwIDogcHVibGljIE5vbmNvcHlhYmxlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIGNsYXNz
IFRocmVhZDsKICAgICAgICAgdHlwZWRlZiBDb2xsZWN0b3JIZWFwSXRlcmF0b3I8UHJpbWFyeUhl
YXA+IGl0ZXJhdG9yOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0
aW9uLmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uaAppbmRleCA0MWM5YTY0
Li4xZWQwNzc1IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24u
aAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uaApAQCAtMzcsNyArMzcs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgKiBDb21wbGV0aW9uIG9iamVjdHMgYXJlIHVzZWQg
dG8gY29udmV5IHRoZSByZXR1cm4gc3RhdHVzIGFuZCB2YWx1ZQogICAgICAqIGZyb20gZnVuY3Rp
b25zLgogICAgICAqLwotICAgIGNsYXNzIENvbXBsZXRpb24geworICAgIGNsYXNzIEpTX0VYUE9S
VF9QUklWQVRFIENvbXBsZXRpb24gewogICAgIHB1YmxpYzoKICAgICAgICAgQ29tcGxldGlvbihD
b21wbFR5cGUgdHlwZSA9IE5vcm1hbCwgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWUoKSkKICAgICAg
ICAgICAgIDogbV90eXBlKHR5cGUpCkBAIC01NSw4ICs1NSw4IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBKU1ZhbHVlIG1fdmFsdWU7CiAgICAgfTsKIAotICAgIENvbXBsZXRpb24gY2hlY2tT
eW50YXgoRXhlY1N0YXRlKiwgY29uc3QgU291cmNlQ29kZSYpOwotICAgIENvbXBsZXRpb24gZXZh
bHVhdGUoRXhlY1N0YXRlKiwgU2NvcGVDaGFpbiYsIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IEpTVmFsdWUoKSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgQ29tcGxldGlv
biBjaGVja1N5bnRheChFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2RlJik7CisgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgQ29tcGxldGlvbiBldmFsdWF0ZShFeGVjU3RhdGUqLCBTY29wZUNoYWluJiwg
Y29uc3QgU291cmNlQ29kZSYsIEpTVmFsdWUgdGhpc1ZhbHVlID0gSlNWYWx1ZSgpKTsKIAogfSAv
LyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29u
c3RydWN0RGF0YS5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zdHJ1Y3REYXRhLmgKaW5k
ZXggOWQ1ODBkNS4uOTVmZjM1MSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b25zdHJ1Y3REYXRhLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zdHJ1Y3REYXRh
LmgKQEAgLTQ2LDcgKzQ2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICB0eXBlZGVmIEpTT2Jq
ZWN0KiAoKk5hdGl2ZUNvbnN0cnVjdG9yKShFeGVjU3RhdGUqLCBKU09iamVjdCosIGNvbnN0IEFy
Z0xpc3QmKTsKIAotICAgIHVuaW9uIENvbnN0cnVjdERhdGEgeworICAgIHVuaW9uIEpTX0VYUE9S
VF9QUklWQVRFIENvbnN0cnVjdERhdGEgewogICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAg
TmF0aXZlQ29uc3RydWN0b3IgZnVuY3Rpb247CiAgICAgICAgIH0gbmF0aXZlOwpAQCAtNTYsNyAr
NTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfSBqczsKICAgICB9OwogCi0gICAgSlNP
YmplY3QqIGNvbnN0cnVjdChFeGVjU3RhdGUqLCBKU1ZhbHVlIGNvbnN0cnVjdG9yLCBDb25zdHJ1
Y3RUeXBlLCBjb25zdCBDb25zdHJ1Y3REYXRhJiwgY29uc3QgQXJnTGlzdCYpOworICAgIEpTX0VY
UE9SVF9QUklWQVRFIEpTT2JqZWN0KiBjb25zdHJ1Y3QoRXhlY1N0YXRlKiwgSlNWYWx1ZSBjb25z
dHJ1Y3RvciwgQ29uc3RydWN0VHlwZSwgY29uc3QgQ29uc3RydWN0RGF0YSYsIGNvbnN0IEFyZ0xp
c3QmKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRGF0ZUluc3RhbmNlLmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0
YW5jZS5oCmluZGV4IDNiNzM1MjEuLjk4NTJhOTAgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRGF0ZUluc3RhbmNlLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRl
SW5zdGFuY2UuaApAQCAtMjksNyArMjksNyBAQCBuYW1lc3BhY2UgV1RGIHsKIAogbmFtZXNwYWNl
IEpTQyB7CiAKLSAgICBjbGFzcyBEYXRlSW5zdGFuY2UgOiBwdWJsaWMgSlNXcmFwcGVyT2JqZWN0
IHsKKyAgICBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBEYXRlSW5zdGFuY2UgOiBwdWJsaWMgSlNX
cmFwcGVyT2JqZWN0IHsKICAgICBwdWJsaWM6CiAgICAgICAgIGV4cGxpY2l0IERhdGVJbnN0YW5j
ZShQYXNzUmVmUHRyPFN0cnVjdHVyZT4pOwogICAgICAgICB2aXJ0dWFsIH5EYXRlSW5zdGFuY2Uo
KTsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaCBiL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXJyb3IuaAppbmRleCBhZGY3ZmRmLi5iYWFlMDk5IDEwMDY0NAotLS0g
YS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FcnJvci5oCkBAIC01NSwxMCArNTUsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHN0YXRpYyBKU09iamVjdCogY3JlYXRlKEV4ZWNTdGF0ZSosIEVycm9yVHlwZSwgY29uc3QgY2hh
ciogbWVzc2FnZSk7CiAgICAgfTsKIAotICAgIEpTT2JqZWN0KiB0aHJvd0Vycm9yKEV4ZWNTdGF0
ZSosIEVycm9yVHlwZSwgY29uc3QgVVN0cmluZyYgbWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGlu
dHB0cl90IHNvdXJjZUlELCBjb25zdCBVU3RyaW5nJiBzb3VyY2VVUkwpOwotICAgIEpTT2JqZWN0
KiB0aHJvd0Vycm9yKEV4ZWNTdGF0ZSosIEVycm9yVHlwZSwgY29uc3QgVVN0cmluZyYgbWVzc2Fn
ZSk7Ci0gICAgSlNPYmplY3QqIHRocm93RXJyb3IoRXhlY1N0YXRlKiwgRXJyb3JUeXBlLCBjb25z
dCBjaGFyKiBtZXNzYWdlKTsKLSAgICBKU09iamVjdCogdGhyb3dFcnJvcihFeGVjU3RhdGUqLCBF
cnJvclR5cGUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd0Vycm9yKEV4
ZWNTdGF0ZSosIEVycm9yVHlwZSwgY29uc3QgVVN0cmluZyYgbWVzc2FnZSwgaW50IGxpbmVOdW1i
ZXIsIGludHB0cl90IHNvdXJjZUlELCBjb25zdCBVU3RyaW5nJiBzb3VyY2VVUkwpOworICAgIEpT
X0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd0Vycm9yKEV4ZWNTdGF0ZSosIEVycm9yVHlw
ZSwgY29uc3QgVVN0cmluZyYgbWVzc2FnZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmpl
Y3QqIHRocm93RXJyb3IoRXhlY1N0YXRlKiwgRXJyb3JUeXBlLCBjb25zdCBjaGFyKiBtZXNzYWdl
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogdGhyb3dFcnJvcihFeGVjU3RhdGUq
LCBFcnJvclR5cGUpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmggYi9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaAppbmRleCAxMjRiMzU0Li45NDVhMGRlIDEwMDY0
NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaAorKysg
Yi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaApAQCAtMjksNyAr
MjksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBQcm9ncmFtTm9kZTsKICAgICBjbGFz
cyBGdW5jdGlvbkJvZHlOb2RlOwogCi0gICAgY2xhc3MgRnVuY3Rpb25Db25zdHJ1Y3RvciA6IHB1
YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKKyAgICBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBGdW5j
dGlvbkNvbnN0cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewogICAgIHB1YmxpYzoK
ICAgICAgICAgRnVuY3Rpb25Db25zdHJ1Y3RvcihFeGVjU3RhdGUqLCBQYXNzUmVmUHRyPFN0cnVj
dHVyZT4sIEZ1bmN0aW9uUHJvdG90eXBlKik7CiAKQEAgLTM4LDEwICszOCwxMCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgdmlydHVhbCBDYWxsVHlwZSBnZXRDYWxsRGF0YShDYWxsRGF0YSYp
OwogICAgIH07CiAKLSAgICBKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiwg
Y29uc3QgQXJnTGlzdCYsIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwgY29uc3QgVVN0
cmluZyYgc291cmNlVVJMLCBpbnQgbGluZU51bWJlcik7Ci0gICAgSlNPYmplY3QqIGNvbnN0cnVj
dEZ1bmN0aW9uKEV4ZWNTdGF0ZSosIGNvbnN0IEFyZ0xpc3QmKTsKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSBKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiwgY29uc3QgQXJnTGlz
dCYsIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwgY29uc3QgVVN0cmluZyYgc291cmNl
VVJMLCBpbnQgbGluZU51bWJlcik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIGNv
bnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSosIGNvbnN0IEFyZ0xpc3QmKTsKIAotICAgIEZ1bmN0
aW9uQm9keU5vZGUqIGV4dHJhY3RGdW5jdGlvbkJvZHkoUHJvZ3JhbU5vZGUqKTsKKyAgICBKU19F
WFBPUlRfUFJJVkFURSBGdW5jdGlvbkJvZHlOb2RlKiBleHRyYWN0RnVuY3Rpb25Cb2R5KFByb2dy
YW1Ob2RlKik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRp
Zmllci5oCmluZGV4IDYzMWNmNDIuLjYxM2Y5OTUgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSWRlbnRpZmllci5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRp
Zmllci5oCkBAIC0yOCw3ICsyOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRXhl
Y1N0YXRlOwogCi0gICAgY2xhc3MgSWRlbnRpZmllciB7CisgICAgY2xhc3MgSlNfRVhQT1JUX1BS
SVZBVEUgSWRlbnRpZmllciB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBTdHJ1Y3R1cmU7CiAgICAg
cHVibGljOgogICAgICAgICBJZGVudGlmaWVyKCkgeyB9CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW5pdGlhbGl6ZVRocmVhZGluZy5oCmluZGV4IDFhOTNjY2IuLmI2ZjAyYWUgMTAwNjQ0Ci0t
LSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5oCisrKyBiL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5oCkBAIC0yNSw3ICsyNSw3
IEBACiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KLSAKKwogI2lmbmRlZiBJ
bml0aWFsaXplVGhyZWFkaW5nX2gKICNkZWZpbmUgSW5pdGlhbGl6ZVRocmVhZGluZ19oCiAKQEAg
LTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAvLyBUaGlzIGZ1bmN0aW9uIG11
c3QgYmUgY2FsbGVkIGZyb20gdGhlIG1haW4gdGhyZWFkLiBJdCBpcyBzYWZlIHRvIGNhbGwgaXQg
cmVwZWF0ZWRseS4KICAgICAvLyBEYXJ3aW4gaXMgYW4gZXhjZXB0aW9uIHRvIHRoaXMgcnVsZTog
aXQgaXMgT0sgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIGZyb20gYW55IHRocmVhZCwgZXZlbiByZWVu
dHJhbnRseS4KLSAgICB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKTsKKyAgICBKU19FWFBPUlRf
UFJJVkFURSB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKTsKIAogfQogCmRpZmYgLS1naXQgYS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaCBiL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCmluZGV4IDMxMDY0NGMuLmM1NWRhNmEgMTAwNjQ0
Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCisrKyBiL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCkBAIC0zMSwxMCArMzEsMTAg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBGdW5jdGlvblByb3RvdHlwZTsKIAotICAg
IGNsYXNzIEludGVybmFsRnVuY3Rpb24gOiBwdWJsaWMgSlNPYmplY3QgeworICAgIGNsYXNzIEpT
X0VYUE9SVF9QUklWQVRFIEludGVybmFsRnVuY3Rpb24gOiBwdWJsaWMgSlNPYmplY3QgewogICAg
IHB1YmxpYzoKICAgICAgICAgdmlydHVhbCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNv
bnN0OyAKLSAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJbmZvIGluZm87
CisgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gaW5mbzsKIAogICAgICAgICBjb25zdCBV
U3RyaW5nJiBuYW1lKEpTR2xvYmFsRGF0YSopOwogICAgICAgICBjb25zdCBVU3RyaW5nIGRpc3Bs
YXlOYW1lKEpTR2xvYmFsRGF0YSopOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5LmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAppbmRleCA0OWRm
NmM0Li4xZGE1ZjI3IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXku
aAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaApAQCAtNDksNyArNDksNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xv
dChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgcHV0KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSk7IC8vIEZJWE1FOiBNYWtlIHByb3RlY3RlZCBhbmQgYWRkIHNldEl0ZW0uCiAKLSAg
ICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJbmZvIGluZm87CisgICAgICAg
IHN0YXRpYyBKU19FWFBPUlRfUFJJVkFURSBjb25zdCBDbGFzc0luZm8gaW5mbzsKIAogICAgICAg
ICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX3N0b3JhZ2UtPm1fbGVuZ3RoOyB9
CiAgICAgICAgIHZvaWQgc2V0TGVuZ3RoKHVuc2lnbmVkKTsgLy8gT0sgdG8gdXNlIG9uIG5ldyBh
cnJheXMsIGJ1dCBub3QgaWYgaXQgbWlnaHQgYmUgYSBSZWdFeHBNYXRjaEFycmF5LgpAQCAtMTEy
LDEwICsxMTIsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBKU0FycmF5KiBhc0FycmF5KEpT
VmFsdWUpOwogCi0gICAgSlNBcnJheSogY29uc3RydWN0RW1wdHlBcnJheShFeGVjU3RhdGUqKTsK
LSAgICBKU0FycmF5KiBjb25zdHJ1Y3RFbXB0eUFycmF5KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIGlu
aXRpYWxMZW5ndGgpOwotICAgIEpTQXJyYXkqIGNvbnN0cnVjdEFycmF5KEV4ZWNTdGF0ZSosIEpT
VmFsdWUgc2luZ2xlSXRlbVZhbHVlKTsKLSAgICBKU0FycmF5KiBjb25zdHJ1Y3RBcnJheShFeGVj
U3RhdGUqLCBjb25zdCBBcmdMaXN0JiB2YWx1ZXMpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpT
QXJyYXkqIGNvbnN0cnVjdEVtcHR5QXJyYXkoRXhlY1N0YXRlKik7CisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgSlNBcnJheSogY29uc3RydWN0RW1wdHlBcnJheShFeGVjU3RhdGUqLCB1bnNpZ25lZCBp
bml0aWFsTGVuZ3RoKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU0FycmF5KiBjb25zdHJ1Y3RB
cnJheShFeGVjU3RhdGUqLCBKU1ZhbHVlIHNpbmdsZUl0ZW1WYWx1ZSk7CisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgSlNBcnJheSogY29uc3RydWN0QXJyYXkoRXhlY1N0YXRlKiwgY29uc3QgQXJnTGlz
dCYgdmFsdWVzKTsKIAogICAgIGlubGluZSBKU0FycmF5KiBhc0FycmF5KEpTVmFsdWUgdmFsdWUp
CiAgICAgewpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJheS5o
IGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJheS5oCmluZGV4IGE1NmFjYTYuLjI2
ZDZiYmMgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuaAor
KysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5LmgKQEAgLTMyLDcgKzMyLDcg
QEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLSAgICBjbGFzcyBKU0J5dGVBcnJheSA6IHB1YmxpYyBK
U09iamVjdCB7CisgICAgY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgSlNCeXRlQXJyYXkgOiBwdWJs
aWMgSlNPYmplY3QgewogICAgICAgICBmcmllbmQgc3RydWN0IFZQdHJTZXQ7CiAgICAgcHVibGlj
OgogICAgICAgICBib29sIGNhbkFjY2Vzc0luZGV4KHVuc2lnbmVkIGkpIHsgcmV0dXJuIGkgPCBt
X3N0b3JhZ2UtPmxlbmd0aCgpOyB9CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ2VsbC5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAppbmRleCA3NWNjZjdm
Li44NDU3M2NhIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCisr
KyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKQEAgLTMxLDcgKzMxLDcgQEAKIAog
bmFtZXNwYWNlIEpTQyB7CiAKLSAgICBjbGFzcyBKU0NlbGwgOiBwdWJsaWMgTm9uY29weWFibGVD
dXN0b21BbGxvY2F0ZWQgeworICAgIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEpTQ2VsbCA6IHB1
YmxpYyBOb25jb3B5YWJsZUN1c3RvbUFsbG9jYXRlZCB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBH
ZXR0ZXJTZXR0ZXI7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBIZWFwOwogICAgICAgICBmcmllbmQg
Y2xhc3MgSklUOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9u
LmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAppbmRleCA5MDk3ZDUyLi44
ZjQyNGMzIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAor
KysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaApAQCAtNzAsNyArNzAsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgbWFya0NoaWxkcmVuKE1h
cmtTdGFjayYpOwogCi0gICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNzSW5m
byBpbmZvOworICAgICAgICBzdGF0aWMgSlNfRVhQT1JUX1BSSVZBVEUgY29uc3QgQ2xhc3NJbmZv
IGluZm87CiAKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1
Y3R1cmUoSlNWYWx1ZSBwcm90b3R5cGUpIAogICAgICAgICB7IApkaWZmIC0tZ2l0IGEvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxEYXRhLmgKaW5kZXggODhjYjUxNi4uNGI0ODc3ZiAxMDA2NDQKLS0tIGEvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsRGF0YS5oCkBAIC02Miw3ICs2Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IHN0cnVjdCBJbnN0cnVjdGlvbjsgICAgCiAgICAgc3RydWN0IFZQdHJTZXQ7CiAKLSAgICBjbGFz
cyBKU0dsb2JhbERhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxKU0dsb2JhbERhdGE+IHsKKyAgICBj
bGFzcyBKU19FWFBPUlRfUFJJVkFURSBKU0dsb2JhbERhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxK
U0dsb2JhbERhdGE+IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0cnVjdCBDbGllbnREYXRhIHsK
ICAgICAgICAgICAgIHZpcnR1YWwgfkNsaWVudERhdGEoKSA9IDA7CmRpZmYgLS1naXQgYS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggY2RhNDliZC4uMzRiOTZkOCAxMDA2NDQKLS0tIGEv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtNTEsNyArNTEsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgIHR5cGVkZWYgVmVjdG9yPEV4ZWNTdGF0ZSosIDE2PiBFeGVjU3RhdGVTdGFj
azsKIAotICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTVmFyaWFibGVPYmplY3Qg
eworICAgIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpT
VmFyaWFibGVPYmplY3QgewogICAgIHByb3RlY3RlZDoKICAgICAgICAgdXNpbmcgSlNWYXJpYWJs
ZU9iamVjdDo6SlNWYXJpYWJsZU9iamVjdERhdGE7CiAKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNJbW1lZGlhdGUuaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbW1l
ZGlhdGUuaAppbmRleCA0ZWQzNWZjLi5kZDkyODVmIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTSW1tZWRpYXRlLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0lt
bWVkaWF0ZS5oCkBAIC0xMzMsNyArMTMzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICogdmFs
dWVzIGFyZSBlbmNvZGVkIGluIHRoZSBzYW1lIG1hbm5lciBhcyB0aGUgZGVmYXVsdCBmb3JtYXQu
CiAgICAgICovCiAKLSAgICBjbGFzcyBKU0ltbWVkaWF0ZSB7CisgICAgY2xhc3MgSlNfRVhQT1JU
X1BSSVZBVEUgSlNJbW1lZGlhdGUgewogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFz
cyBKSVQ7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKU1ZhbHVlOwpkaWZmIC0tZ2l0IGEvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0xvY2suaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2Nr
LmgKaW5kZXggOGIwMTVjNC4uZWYyNmJkNyAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0xvY2suaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCkBAIC01
Miw3ICs1Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgZW51bSBKU0xvY2tCZWhhdmlvciB7
IFNpbGVuY2VBc3NlcnRpb25zT25seSwgTG9ja0ZvclJlYWwgfTsKIAotICAgIGNsYXNzIEpTTG9j
ayA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CisgICAgY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgSlNM
b2NrIDogcHVibGljIE5vbmNvcHlhYmxlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIEpTTG9jayhF
eGVjU3RhdGUqKTsKIApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU051bWJl
ckNlbGwuaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOdW1iZXJDZWxsLmgKaW5kZXggMDRj
Y2NlZi4uNTcwMWVhNCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU051bWJl
ckNlbGwuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTnVtYmVyQ2VsbC5oCkBAIC0z
MiwxMSArMzIsMTEgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLSAgICBleHRlcm4gY29uc3QgZG91
YmxlIE5hTjsKLSAgICBleHRlcm4gY29uc3QgZG91YmxlIEluZjsKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSBleHRlcm4gY29uc3QgZG91YmxlIE5hTjsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBleHRl
cm4gY29uc3QgZG91YmxlIEluZjsKIAogI2lmIFVTRShKU1ZBTFVFMzIpCi0gICAgSlNWYWx1ZSBq
c051bWJlckNlbGwoRXhlY1N0YXRlKiwgZG91YmxlKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBK
U1ZhbHVlIGpzTnVtYmVyQ2VsbChFeGVjU3RhdGUqLCBkb3VibGUpOwogCiAgICAgY2xhc3MgSWRl
bnRpZmllcjsKICAgICBjbGFzcyBKU0NlbGw7CkBAIC00NywxMCArNDcsMTAgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgc3RydWN0IENsYXNzSW5mbzsKICAgICBzdHJ1Y3QgSW5zdHJ1Y3Rpb247CiAK
LSAgICBjbGFzcyBKU051bWJlckNlbGwgOiBwdWJsaWMgSlNDZWxsIHsKKyAgICBjbGFzcyBKU19F
WFBPUlRfUFJJVkFURSBKU051bWJlckNlbGwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgZnJp
ZW5kIGNsYXNzIEpJVDsKLSAgICAgICAgZnJpZW5kIEpTVmFsdWUganNOdW1iZXJDZWxsKEpTR2xv
YmFsRGF0YSosIGRvdWJsZSk7Ci0gICAgICAgIGZyaWVuZCBKU1ZhbHVlIGpzTnVtYmVyQ2VsbChF
eGVjU3RhdGUqLCBkb3VibGUpOworICAgICAgICBmcmllbmQgSlNfRVhQT1JUX1BSSVZBVEUgSlNW
YWx1ZSBqc051bWJlckNlbGwoSlNHbG9iYWxEYXRhKiwgZG91YmxlKTsKKyAgICAgICAgZnJpZW5k
IEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUganNOdW1iZXJDZWxsKEV4ZWNTdGF0ZSosIGRvdWJs
ZSk7CiAKICAgICBwdWJsaWM6CiAgICAgICAgIGRvdWJsZSB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdmFsdWU7IH0KQEAgLTEwNCw3ICsxMDQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
ZG91YmxlIG1fdmFsdWU7CiAgICAgfTsKIAotICAgIEpTVmFsdWUganNOdW1iZXJDZWxsKEpTR2xv
YmFsRGF0YSosIGRvdWJsZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBqc051bWJl
ckNlbGwoSlNHbG9iYWxEYXRhKiwgZG91YmxlKTsKIAogICAgIGlubGluZSBib29sIGlzTnVtYmVy
Q2VsbChKU1ZhbHVlIHYpCiAgICAgewpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdC5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCmluZGV4IGRl
Y2Q1ZTkuLmZhOGM2ZDMgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKQEAgLTY1LDcgKzY1
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSogUHJvcGVy
dHlTdG9yYWdlOwogICAgIHR5cGVkZWYgY29uc3QgRW5jb2RlZEpTVmFsdWUqIENvbnN0UHJvcGVy
dHlTdG9yYWdlOwogCi0gICAgY2xhc3MgSlNPYmplY3QgOiBwdWJsaWMgSlNDZWxsIHsKKyAgICBj
bGFzcyBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCA6IHB1YmxpYyBKU0NlbGwgewogICAgICAg
ICBmcmllbmQgY2xhc3MgQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXI7CiAgICAgICAgIGZyaWVu
ZCBjbGFzcyBKSVQ7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKU0NlbGw7CmRpZmYgLS1naXQgYS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU3RyaW5nLmgKaW5kZXggM2RhZjU4YS4uNjNkYTM1YyAxMDA2NDQKLS0tIGEvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1N0cmluZy5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
dHJpbmcuaApAQCAtMzMsMzIgKzMzLDMyIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3Mg
SlNTdHJpbmc7CiAKLSAgICBKU1N0cmluZyoganNFbXB0eVN0cmluZyhKU0dsb2JhbERhdGEqKTsK
LSAgICBKU1N0cmluZyoganNFbXB0eVN0cmluZyhFeGVjU3RhdGUqKTsKLSAgICBKU1N0cmluZyog
anNTdHJpbmcoSlNHbG9iYWxEYXRhKiwgY29uc3QgVVN0cmluZyYpOyAvLyByZXR1cm5zIGVtcHR5
IHN0cmluZyBpZiBwYXNzZWQgbnVsbCBzdHJpbmcKLSAgICBKU1N0cmluZyoganNTdHJpbmcoRXhl
Y1N0YXRlKiwgY29uc3QgVVN0cmluZyYpOyAvLyByZXR1cm5zIGVtcHR5IHN0cmluZyBpZiBwYXNz
ZWQgbnVsbCBzdHJpbmcKLQotICAgIEpTU3RyaW5nKiBqc1NpbmdsZUNoYXJhY3RlclN0cmluZyhK
U0dsb2JhbERhdGEqLCBVQ2hhcik7Ci0gICAgSlNTdHJpbmcqIGpzU2luZ2xlQ2hhcmFjdGVyU3Ry
aW5nKEV4ZWNTdGF0ZSosIFVDaGFyKTsKLSAgICBKU1N0cmluZyoganNTaW5nbGVDaGFyYWN0ZXJT
dWJzdHJpbmcoSlNHbG9iYWxEYXRhKiwgY29uc3QgVVN0cmluZyYsIHVuc2lnbmVkIG9mZnNldCk7
Ci0gICAgSlNTdHJpbmcqIGpzU2luZ2xlQ2hhcmFjdGVyU3Vic3RyaW5nKEV4ZWNTdGF0ZSosIGNv
bnN0IFVTdHJpbmcmLCB1bnNpZ25lZCBvZmZzZXQpOwotICAgIEpTU3RyaW5nKiBqc1N1YnN0cmlu
ZyhKU0dsb2JhbERhdGEqLCBjb25zdCBVU3RyaW5nJiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25l
ZCBsZW5ndGgpOwotICAgIEpTU3RyaW5nKiBqc1N1YnN0cmluZyhFeGVjU3RhdGUqLCBjb25zdCBV
U3RyaW5nJiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIEpTX0VYUE9S
VF9QUklWQVRFIEpTU3RyaW5nKiBqc0VtcHR5U3RyaW5nKEpTR2xvYmFsRGF0YSopOworICAgIEpT
X0VYUE9SVF9QUklWQVRFIEpTU3RyaW5nKiBqc0VtcHR5U3RyaW5nKEV4ZWNTdGF0ZSopOworICAg
IEpTX0VYUE9SVF9QUklWQVRFIEpTU3RyaW5nKiBqc1N0cmluZyhKU0dsb2JhbERhdGEqLCBjb25z
dCBVU3RyaW5nJik7IC8vIHJldHVybnMgZW1wdHkgc3RyaW5nIGlmIHBhc3NlZCBudWxsIHN0cmlu
ZworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTU3RyaW5nKiBqc1N0cmluZyhFeGVjU3RhdGUqLCBj
b25zdCBVU3RyaW5nJik7IC8vIHJldHVybnMgZW1wdHkgc3RyaW5nIGlmIHBhc3NlZCBudWxsIHN0
cmluZworCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNTdHJpbmcqIGpzU2luZ2xlQ2hhcmFjdGVy
U3RyaW5nKEpTR2xvYmFsRGF0YSosIFVDaGFyKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU1N0
cmluZyoganNTaW5nbGVDaGFyYWN0ZXJTdHJpbmcoRXhlY1N0YXRlKiwgVUNoYXIpOworICAgIEpT
X0VYUE9SVF9QUklWQVRFIEpTU3RyaW5nKiBqc1NpbmdsZUNoYXJhY3RlclN1YnN0cmluZyhKU0ds
b2JhbERhdGEqLCBjb25zdCBVU3RyaW5nJiwgdW5zaWduZWQgb2Zmc2V0KTsKKyAgICBKU19FWFBP
UlRfUFJJVkFURSBKU1N0cmluZyoganNTaW5nbGVDaGFyYWN0ZXJTdWJzdHJpbmcoRXhlY1N0YXRl
KiwgY29uc3QgVVN0cmluZyYsIHVuc2lnbmVkIG9mZnNldCk7CisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgSlNTdHJpbmcqIGpzU3Vic3RyaW5nKEpTR2xvYmFsRGF0YSosIGNvbnN0IFVTdHJpbmcmLCB1
bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
SlNTdHJpbmcqIGpzU3Vic3RyaW5nKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmLCB1bnNpZ25l
ZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CiAKICAgICAvLyBOb24tdHJpdmlhbCBzdHJpbmdz
IGFyZSB0d28gb3IgbW9yZSBjaGFyYWN0ZXJzIGxvbmcuCiAgICAgLy8gVGhlc2UgZnVuY3Rpb25z
IGFyZSBmYXN0ZXIgdGhhbiBqdXN0IGNhbGxpbmcganNTdHJpbmcuCi0gICAgSlNTdHJpbmcqIGpz
Tm9udHJpdmlhbFN0cmluZyhKU0dsb2JhbERhdGEqLCBjb25zdCBVU3RyaW5nJik7Ci0gICAgSlNT
dHJpbmcqIGpzTm9udHJpdmlhbFN0cmluZyhFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJik7Ci0g
ICAgSlNTdHJpbmcqIGpzTm9udHJpdmlhbFN0cmluZyhKU0dsb2JhbERhdGEqLCBjb25zdCBjaGFy
Kik7Ci0gICAgSlNTdHJpbmcqIGpzTm9udHJpdmlhbFN0cmluZyhFeGVjU3RhdGUqLCBjb25zdCBj
aGFyKik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNTdHJpbmcqIGpzTm9udHJpdmlhbFN0cmlu
ZyhKU0dsb2JhbERhdGEqLCBjb25zdCBVU3RyaW5nJik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
SlNTdHJpbmcqIGpzTm9udHJpdmlhbFN0cmluZyhFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJik7
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNTdHJpbmcqIGpzTm9udHJpdmlhbFN0cmluZyhKU0ds
b2JhbERhdGEqLCBjb25zdCBjaGFyKik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNTdHJpbmcq
IGpzTm9udHJpdmlhbFN0cmluZyhFeGVjU3RhdGUqLCBjb25zdCBjaGFyKik7CiAKICAgICAvLyBT
aG91bGQgYmUgdXNlZCBmb3Igc3RyaW5ncyB0aGF0IGFyZSBvd25lZCBieSBhbiBvYmplY3QgdGhh
dCB3aWxsCiAgICAgLy8gbGlrZWx5IG91dGxpdmUgdGhlIEpTVmFsdWUgdGhpcyBtYWtlcywgc3Vj
aCBhcyB0aGUgcGFyc2UgdHJlZSBvciBhCiAgICAgLy8gRE9NIG9iamVjdCB0aGF0IGNvbnRhaW5z
IGEgVVN0cmluZwotICAgIEpTU3RyaW5nKiBqc093bmVkU3RyaW5nKEpTR2xvYmFsRGF0YSosIGNv
bnN0IFVTdHJpbmcmKTsgCi0gICAgSlNTdHJpbmcqIGpzT3duZWRTdHJpbmcoRXhlY1N0YXRlKiwg
Y29uc3QgVVN0cmluZyYpOyAKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU1N0cmluZyoganNPd25l
ZFN0cmluZyhKU0dsb2JhbERhdGEqLCBjb25zdCBVU3RyaW5nJik7CisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgSlNTdHJpbmcqIGpzT3duZWRTdHJpbmcoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYp
OwogCi0gICAgY2xhc3MgSlNTdHJpbmcgOiBwdWJsaWMgSlNDZWxsIHsKKyAgICBjbGFzcyBKU19F
WFBPUlRfUFJJVkFURSBKU1N0cmluZyA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICBmcmllbmQg
Y2xhc3MgSklUOwogICAgICAgICBmcmllbmQgc3RydWN0IFZQdHJTZXQ7CiAKZGlmZiAtLWdpdCBh
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oIGIvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgKaW5kZXggYjk2OWRhNS4uMWFjNWI4YyAxMDA2
NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgKKysrIGIv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgKQEAgLTQwLDcgKzQwLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBSZWdpc3RlcjsKIAotICAgIGNsYXNzIEpT
VmFyaWFibGVPYmplY3QgOiBwdWJsaWMgSlNPYmplY3QgeworICAgIGNsYXNzIEpTX0VYUE9SVF9Q
UklWQVRFIEpTVmFyaWFibGVPYmplY3QgOiBwdWJsaWMgSlNPYmplY3QgewogICAgICAgICBmcmll
bmQgY2xhc3MgSklUOwogCiAgICAgcHVibGljOgpAQCAtNTAsNyArNTAsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiwg
Y29uc3QgSWRlbnRpZmllciYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJvcGVydHlOYW1l
cyhFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYpOwotICAgICAgICAKKwogICAgICAgICB2
aXJ0dWFsIGJvb2wgaXNWYXJpYWJsZU9iamVjdCgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJv
b2wgaXNEeW5hbWljU2NvcGUoKSBjb25zdCA9IDA7CiAKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
V3JhcHBlck9iamVjdC5oCmluZGV4IDBiMmM2ODAuLjUzNmQ0ZmIgMTAwNjQ0Ci0tLSBhL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmgKKysrIGIvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1dyYXBwZXJPYmplY3QuaApAQCAtMjUsMTAgKzI1LDEwIEBACiAjaW5jbHVkZSAi
SlNPYmplY3QuaCIKIAogbmFtZXNwYWNlIEpTQyB7Ci0gICAgCisKICAgICAvLyBUaGlzIGNsYXNz
IGlzIHVzZWQgYXMgYSBiYXNlIGZvciBjbGFzc2VzIHN1Y2ggYXMgU3RyaW5nLAogICAgIC8vIE51
bWJlciwgQm9vbGVhbiBhbmQgRGF0ZSB3aGljaCBhcmUgd3JhcHBlcnMgZm9yIHByaW1pdGl2ZSB0
eXBlcy4KLSAgICBjbGFzcyBKU1dyYXBwZXJPYmplY3QgOiBwdWJsaWMgSlNPYmplY3QgeworICAg
IGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEpTV3JhcHBlck9iamVjdCA6IHB1YmxpYyBKU09iamVj
dCB7CiAgICAgcHJvdGVjdGVkOgogICAgICAgICBleHBsaWNpdCBKU1dyYXBwZXJPYmplY3QoUGFz
c1JlZlB0cjxTdHJ1Y3R1cmU+KTsKIApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Mb29rdXAuaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKaW5kZXggMTY3ZjJi
Yy4uMWUyYjcwZCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAor
KysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCkBAIC0xMDQsNyArMTA0LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEhhc2hFbnRyeSogbV9uZXh0OwogICAgIH07CiAKLSAg
ICBzdHJ1Y3QgSGFzaFRhYmxlIHsKKyAgICBzdHJ1Y3QgSlNfRVhQT1JUX1BSSVZBVEUgSGFzaFRh
YmxlIHsKIAogICAgICAgICBpbnQgY29tcGFjdFNpemU7CiAgICAgICAgIGludCBjb21wYWN0SGFz
aFNpemVNYXNrOwpAQCAtMTYyLDcgKzE2Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2
b2lkIGNyZWF0ZVRhYmxlKEpTR2xvYmFsRGF0YSopIGNvbnN0OwogICAgIH07CiAKLSAgICB2b2lk
IHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSosIGNvbnN0IEhhc2hFbnRyeSosIEpT
T2JqZWN0KiB0aGlzT2JqZWN0LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0VXBTdGF0aWNGdW5jdGlv
blNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSGFzaEVudHJ5KiwgSlNPYmplY3QqIHRoaXNPYmplY3Qs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAKICAgICAv
KioKICAgICAgKiBUaGlzIG1ldGhvZCBkb2VzIGl0IGFsbCAobG9va2luZyBpbiB0aGUgaGFzaHRh
YmxlLCBjaGVja2luZyBmb3IgZnVuY3Rpb24KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTnVtYmVyT2JqZWN0LmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlck9iamVj
dC5oCmluZGV4IGQzNTRiOWIuLmFhMzBlYmQgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTnVtYmVyT2JqZWN0LmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJP
YmplY3QuaApAQCAtMjUsNyArMjUsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotICAgIGNsYXNz
IE51bWJlck9iamVjdCA6IHB1YmxpYyBKU1dyYXBwZXJPYmplY3QgeworICAgIGNsYXNzIEpTX0VY
UE9SVF9QUklWQVRFIE51bWJlck9iamVjdCA6IHB1YmxpYyBKU1dyYXBwZXJPYmplY3QgewogICAg
IHB1YmxpYzoKICAgICAgICAgZXhwbGljaXQgTnVtYmVyT2JqZWN0KFBhc3NSZWZQdHI8U3RydWN0
dXJlPik7CiAKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90
eXBlLmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5oCmluZGV4IDc3
OTBhZTAuLjc2MzhkMWQgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0
UHJvdG90eXBlLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUu
aApAQCAtMzAsNyArMzAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgT2JqZWN0UHJvdG90
eXBlKEV4ZWNTdGF0ZSosIFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgU3RydWN0dXJlKiBwcm90b3R5
cGVGdW5jdGlvblN0cnVjdHVyZSk7CiAgICAgfTsKIAotICAgIEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBvYmplY3RQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqLCBKU09iamVjdCosIEpTVmFsdWUs
IGNvbnN0IEFyZ0xpc3QmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgb2JqZWN0UHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBKU1Zh
bHVlLCBjb25zdCBBcmdMaXN0Jik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQg
YS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmggYi9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmgKaW5kZXggYjQzODJmNC4uZTlkNTQ3NSAx
MDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oCisr
KyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuaApAQCAtNTgsNyAr
NTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVmUHRyPFN0cnVjdHVyZUNoYWluPiBt
X2NhY2hlZFByb3RvdHlwZUNoYWluOwogICAgIH07CiAKLSAgICBjbGFzcyBQcm9wZXJ0eU5hbWVB
cnJheSB7CisgICAgY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgUHJvcGVydHlOYW1lQXJyYXkgewog
ICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBQcm9wZXJ0eU5hbWVBcnJheURhdGE6OmNvbnN0
X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOwogCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb3RvdHlwZUZ1bmN0aW9uLmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3Rv
dHlwZUZ1bmN0aW9uLmgKaW5kZXggOTlhYjMyNy4uYjUzN2Q2ZiAxMDA2NDQKLS0tIGEvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Qcm90b3R5cGVGdW5jdGlvbi5oCisrKyBiL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUHJvdG90eXBlRnVuY3Rpb24uaApAQCAtMjksNyArMjksNyBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAotICAgIGNsYXNzIFByb3RvdHlwZUZ1bmN0aW9uIDogcHVibGljIEludGVybmFs
RnVuY3Rpb24geworICAgIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIFByb3RvdHlwZUZ1bmN0aW9u
IDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewogICAgIHB1YmxpYzoKICAgICAgICAgUHJvdG90
eXBlRnVuY3Rpb24oRXhlY1N0YXRlKiwgaW50IGxlbmd0aCwgY29uc3QgSWRlbnRpZmllciYsIE5h
dGl2ZUZ1bmN0aW9uKTsKICAgICAgICAgUHJvdG90eXBlRnVuY3Rpb24oRXhlY1N0YXRlKiwgUGFz
c1JlZlB0cjxTdHJ1Y3R1cmU+LCBpbnQgbGVuZ3RoLCBjb25zdCBJZGVudGlmaWVyJiwgTmF0aXZl
RnVuY3Rpb24pOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaCBi
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgKaW5kZXggMjRkNDE5OS4uNTA5OWUzMiAx
MDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAorKysgYi9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiAgICAgY2xhc3MgSlNHbG9iYWxEYXRhOwogCi0gICAgY2xhc3MgUmVnRXhwIDogcHVibGlj
IFJlZkNvdW50ZWQ8UmVnRXhwPiB7CisgICAgY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgUmVnRXhw
IDogcHVibGljIFJlZkNvdW50ZWQ8UmVnRXhwPiB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxSZWdFeHA+IGNyZWF0ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNv
bnN0IFVTdHJpbmcmIHBhdHRlcm4pOwogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZWdFeHA+
IGNyZWF0ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIHBhdHRlcm4s
IGNvbnN0IFVTdHJpbmcmIGZsYWdzKTsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwT2JqZWN0LmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5o
CmluZGV4IGU4M2UwYWMuLjczY2U3ZTkgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwT2JqZWN0LmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmpl
Y3QuaApAQCAtMjYsNyArMjYsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotICAgIGNsYXNzIFJl
Z0V4cE9iamVjdCA6IHB1YmxpYyBKU09iamVjdCB7CisgICAgY2xhc3MgSlNfRVhQT1JUX1BSSVZB
VEUgUmVnRXhwT2JqZWN0IDogcHVibGljIEpTT2JqZWN0IHsKICAgICBwdWJsaWM6CiAgICAgICAg
IFJlZ0V4cE9iamVjdChQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIFBhc3NSZWZQdHI8UmVnRXhwPik7
CiAgICAgICAgIHZpcnR1YWwgflJlZ0V4cE9iamVjdCgpOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3MuaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21h
bGxTdHJpbmdzLmgKaW5kZXggZjBkZDhkZi4uMjViZWVkZSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3MuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1NtYWxsU3RyaW5ncy5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
Y2xhc3MgU21hbGxTdHJpbmdzU3RvcmFnZTsKIAotICAgIGNsYXNzIFNtYWxsU3RyaW5ncyA6IHB1
YmxpYyBOb25jb3B5YWJsZSB7CisgICAgY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgU21hbGxTdHJp
bmdzIDogcHVibGljIE5vbmNvcHlhYmxlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFNtYWxsU3Ry
aW5ncygpOwogICAgICAgICB+U21hbGxTdHJpbmdzKCk7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
bmdPYmplY3QuaAppbmRleCBlYTNhMDQ1Li45YjdkZTJhIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RyaW5nT2JqZWN0LmgKQEAgLTI2LDcgKzI2LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLSAg
ICBjbGFzcyBTdHJpbmdPYmplY3QgOiBwdWJsaWMgSlNXcmFwcGVyT2JqZWN0IHsKKyAgICBjbGFz
cyBKU19FWFBPUlRfUFJJVkFURSBTdHJpbmdPYmplY3QgOiBwdWJsaWMgSlNXcmFwcGVyT2JqZWN0
IHsKICAgICBwdWJsaWM6CiAgICAgICAgIFN0cmluZ09iamVjdChFeGVjU3RhdGUqLCBQYXNzUmVm
UHRyPFN0cnVjdHVyZT4pOwogICAgICAgICBTdHJpbmdPYmplY3QoRXhlY1N0YXRlKiwgUGFzc1Jl
ZlB0cjxTdHJ1Y3R1cmU+LCBjb25zdCBVU3RyaW5nJik7CkBAIC00MSw3ICs0MSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJvcGVydHlOYW1lcyhFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYpOwogCiAgICAgICAgIHZpcnR1YWwgY29uc3QgQ2xhc3NJ
bmZvKiBjbGFzc0luZm8oKSBjb25zdCB7IHJldHVybiAmaW5mbzsgfQotICAgICAgICBzdGF0aWMg
Y29uc3QgSlNfRVhQT1JUREFUQSBDbGFzc0luZm8gaW5mbzsKKyAgICAgICAgc3RhdGljIGNvbnN0
IENsYXNzSW5mbyBpbmZvOwogCiAgICAgICAgIEpTU3RyaW5nKiBpbnRlcm5hbFZhbHVlKCkgY29u
c3QgeyByZXR1cm4gYXNTdHJpbmcoSlNXcmFwcGVyT2JqZWN0OjppbnRlcm5hbFZhbHVlKCkpO30K
IApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaCBiL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKaW5kZXggZjNhMGM3Yy4uZDk0OGVjZiAxMDA2
NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAorKysgYi9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCkBAIC00OSw3ICs0OSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5OwogICAgIGNsYXNzIFByb3BlcnR5TmFt
ZUFycmF5RGF0YTsKIAotICAgIGNsYXNzIFN0cnVjdHVyZSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0
cnVjdHVyZT4geworICAgIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIFN0cnVjdHVyZSA6IHB1Ymxp
YyBSZWZDb3VudGVkPFN0cnVjdHVyZT4gewogICAgIHB1YmxpYzoKICAgICAgICAgZnJpZW5kIGNs
YXNzIEpJVDsKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGUoSlNW
YWx1ZSBwcm90b3R5cGUsIGNvbnN0IFR5cGVJbmZvJiB0eXBlSW5mbykKZGlmZiAtLWdpdCBhL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVGltZW91dENoZWNrZXIuaCBiL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVGltZW91dENoZWNrZXIuaAppbmRleCA3YmZhNmQwLi5iNjY4NTcxIDEwMDY0NAotLS0g
YS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RpbWVvdXRDaGVja2VyLmgKKysrIGIvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9UaW1lb3V0Q2hlY2tlci5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgY2xhc3MgRXhlY1N0YXRlOwogCi0gICAgY2xhc3MgVGltZW91dENoZWNr
ZXIgeworICAgIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIFRpbWVvdXRDaGVja2VyIHsKICAgICBw
dWJsaWM6CiAgICAgICAgIFRpbWVvdXRDaGVja2VyKCk7CiAKZGlmZiAtLWdpdCBhL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVVN0cmluZy5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5n
LmgKaW5kZXggMmRiY2ExZi4uYTA0Nzc3OCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9VU3RyaW5nLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nLmgKQEAg
LTQxLDggKzQxLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgdXNpbmcgV1RGOjpQbGFjZW1lbnRO
ZXdBZG9wdDsKIAogICAgIGNsYXNzIElkZW50aWZpZXJUYWJsZTsKLSAgCi0gICAgY2xhc3MgQ1N0
cmluZyB7CisKKyAgICBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBDU3RyaW5nIHsKICAgICBwdWJs
aWM6CiAgICAgICAgIENTdHJpbmcoKQogICAgICAgICAgICAgOiBtX2xlbmd0aCgwKQpAQCAtNzMs
MTMgKzczLDEzIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgdHlwZWRlZiBWZWN0b3I8Y2hhciwg
MzI+IENTdHJpbmdCdWZmZXI7CiAKLSAgICBjbGFzcyBVU3RyaW5nIHsKKyAgICBjbGFzcyBKU19F
WFBPUlRfUFJJVkFURSBVU3RyaW5nIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKIAogICAg
IHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBDcm9zc1RocmVhZFJlZkNvdW50ZWQ8T3duRmFzdE1h
bGxvY1B0cjxVQ2hhcj4gPiBTaGFyZWRVQ2hhcjsKICAgICAgICAgc3RydWN0IEJhc2VTdHJpbmc7
Ci0gICAgICAgIHN0cnVjdCBSZXAgOiBOb25jb3B5YWJsZSB7CisgICAgICAgIHN0cnVjdCBKU19F
WFBPUlRfUFJJVkFURSBSZXAgOiBOb25jb3B5YWJsZSB7CiAgICAgICAgICAgICBmcmllbmQgY2xh
c3MgSklUOwogCiAgICAgICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZXA+IGNyZWF0ZShVQ2hh
ciogYnVmZmVyLCBpbnQgbGVuZ3RoKQpAQCAtMTg2LDggKzE4Niw4IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiAgICAgICAgICAgICBmcmllbmQgY2xhc3MgU21hbGxTdHJpbmdzU3RvcmFnZTsKICAgICAg
ICAgICAgIGZyaWVuZCB2b2lkIGluaXRpYWxpemVVU3RyaW5nKCk7Ci0gICAgICAgICAgICBKU19F
WFBPUlREQVRBIHN0YXRpYyBCYXNlU3RyaW5nKiBudWxsQmFzZVN0cmluZzsKLSAgICAgICAgICAg
IEpTX0VYUE9SVERBVEEgc3RhdGljIEJhc2VTdHJpbmcqIGVtcHR5QmFzZVN0cmluZzsKKyAgICAg
ICAgICAgIHN0YXRpYyBCYXNlU3RyaW5nKiBudWxsQmFzZVN0cmluZzsKKyAgICAgICAgICAgIHN0
YXRpYyBCYXNlU3RyaW5nKiBlbXB0eUJhc2VTdHJpbmc7CiAgICAgICAgIH07CiAKIApAQCAtNDMz
LDkgKzQzMyw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4gVVN0cmluZyhyZXN1
bHQgPyByZXN1bHQucmVsZWFzZSgpIDogVVN0cmluZzo6bnVsbFJlcCgpKTsKICAgICB9CiAKLSAg
ICBpbnQgY29tcGFyZShjb25zdCBVU3RyaW5nJiwgY29uc3QgVVN0cmluZyYpOworICAgIEpTX0VY
UE9SVF9QUklWQVRFIGludCBjb21wYXJlKGNvbnN0IFVTdHJpbmcmLCBjb25zdCBVU3RyaW5nJik7
CiAKLSAgICBib29sIGVxdWFsKGNvbnN0IFVTdHJpbmc6OlJlcCosIGNvbnN0IFVTdHJpbmc6OlJl
cCopOworICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgZXF1YWwoY29uc3QgVVN0cmluZzo6UmVw
KiwgY29uc3QgVVN0cmluZzo6UmVwKik7CiAKICAgICBpbmxpbmUgUGFzc1JlZlB0cjxVU3RyaW5n
OjpSZXA+IFVTdHJpbmc6OlJlcDo6Y3JlYXRlKFBhc3NSZWZQdHI8VVN0cmluZzo6UmVwPiByZXAs
IGludCBvZmZzZXQsIGludCBsZW5ndGgpCiAgICAgewpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENv
cmUvd3RmL0J5dGVBcnJheS5oIGIvSmF2YVNjcmlwdENvcmUvd3RmL0J5dGVBcnJheS5oCmluZGV4
IDk2ZTljYzIuLjY0ZWNmMzkgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3d0Zi9CeXRlQXJy
YXkuaAorKysgYi9KYXZhU2NyaXB0Q29yZS93dGYvQnl0ZUFycmF5LmgKQEAgLTMwLDcgKzMwLDcg
QEAKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV1RGIHsKLSAgICBj
bGFzcyBCeXRlQXJyYXkgOiBwdWJsaWMgUmVmQ291bnRlZEJhc2UgeworICAgIGNsYXNzIEpTX0VY
UE9SVF9QUklWQVRFIEJ5dGVBcnJheSA6IHB1YmxpYyBSZWZDb3VudGVkQmFzZSB7CiAgICAgcHVi
bGljOgogICAgICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0K
IApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvd3RmL0N1cnJlbnRUaW1lLmggYi9KYXZhU2Ny
aXB0Q29yZS93dGYvQ3VycmVudFRpbWUuaAppbmRleCAzMWYxZWM4Li43YWJlOTQwIDEwMDY0NAot
LS0gYS9KYXZhU2NyaXB0Q29yZS93dGYvQ3VycmVudFRpbWUuaAorKysgYi9KYXZhU2NyaXB0Q29y
ZS93dGYvQ3VycmVudFRpbWUuaApAQCAtMzUsMTMgKzM1LDEyIEBACiBuYW1lc3BhY2UgV1RGIHsK
IAogICAgIC8vIFJldHVybnMgdGhlIGN1cnJlbnQgc3lzdGVtIChVVEMpIHRpbWUgaW4gc2Vjb25k
cywgc3RhcnRpbmcgSmFudWFyeSAxLCAxOTcwLgotICAgIC8vIFByZWNpc2lvbiB2YXJpZXMgZGVw
ZW5kaW5nIG9uIGEgcGxhdGZvcm0gYnV0IHVzdWFsbHkgaXMgYXMgZ29vZCBvciBiZXR0ZXIgCisg
ICAgLy8gUHJlY2lzaW9uIHZhcmllcyBkZXBlbmRpbmcgb24gYSBwbGF0Zm9ybSBidXQgdXN1YWxs
eSBpcyBhcyBnb29kIG9yIGJldHRlcgogICAgIC8vIHRoYW4gYSBtaWxsaXNlY29uZC4KLSAgICBk
b3VibGUgY3VycmVudFRpbWUoKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBkb3VibGUgY3VycmVu
dFRpbWUoKTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6Y3VycmVudFRpbWU7
CiAKICNlbmRpZiAvLyBDdXJyZW50VGltZV9oCi0KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3Jl
L3d0Zi9GYXN0TWFsbG9jLmggYi9KYXZhU2NyaXB0Q29yZS93dGYvRmFzdE1hbGxvYy5oCmluZGV4
IGIyM2U3YjAuLjE1NGRmOTQgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3d0Zi9GYXN0TWFs
bG9jLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvd3RmL0Zhc3RNYWxsb2MuaApAQCAtMjksMTAgKzI5
LDEwIEBACiBuYW1lc3BhY2UgV1RGIHsKIAogICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyBjYWxsIENS
QVNIKCkgaWYgYW4gYWxsb2NhdGlvbiBmYWlscy4KLSAgICB2b2lkKiBmYXN0TWFsbG9jKHNpemVf
dCk7Ci0gICAgdm9pZCogZmFzdFplcm9lZE1hbGxvYyhzaXplX3QpOwotICAgIHZvaWQqIGZhc3RD
YWxsb2Moc2l6ZV90IG51bUVsZW1lbnRzLCBzaXplX3QgZWxlbWVudFNpemUpOwotICAgIHZvaWQq
IGZhc3RSZWFsbG9jKHZvaWQqLCBzaXplX3QpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQq
IGZhc3RNYWxsb2Moc2l6ZV90KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkKiBmYXN0WmVy
b2VkTWFsbG9jKHNpemVfdCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCogZmFzdENhbGxv
YyhzaXplX3QgbnVtRWxlbWVudHMsIHNpemVfdCBlbGVtZW50U2l6ZSk7CisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgdm9pZCogZmFzdFJlYWxsb2Modm9pZCosIHNpemVfdCk7CiAKICAgICBzdHJ1Y3Qg
VHJ5TWFsbG9jUmV0dXJuVmFsdWUgewogICAgICAgICBUcnlNYWxsb2NSZXR1cm5WYWx1ZSh2b2lk
KiBkYXRhKQpAQCAtNjYsMTIgKzY2LDEyIEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICByZXR1
cm4gcmV0dXJuVmFsdWU7CiAgICAgfQogCi0gICAgVHJ5TWFsbG9jUmV0dXJuVmFsdWUgdHJ5RmFz
dE1hbGxvYyhzaXplX3Qgbik7Ci0gICAgVHJ5TWFsbG9jUmV0dXJuVmFsdWUgdHJ5RmFzdFplcm9l
ZE1hbGxvYyhzaXplX3Qgbik7Ci0gICAgVHJ5TWFsbG9jUmV0dXJuVmFsdWUgdHJ5RmFzdENhbGxv
YyhzaXplX3Qgbl9lbGVtZW50cywgc2l6ZV90IGVsZW1lbnRfc2l6ZSk7Ci0gICAgVHJ5TWFsbG9j
UmV0dXJuVmFsdWUgdHJ5RmFzdFJlYWxsb2Modm9pZCogcCwgc2l6ZV90IG4pOworICAgIEpTX0VY
UE9SVF9QUklWQVRFIFRyeU1hbGxvY1JldHVyblZhbHVlIHRyeUZhc3RNYWxsb2Moc2l6ZV90IG4p
OworICAgIEpTX0VYUE9SVF9QUklWQVRFIFRyeU1hbGxvY1JldHVyblZhbHVlIHRyeUZhc3RaZXJv
ZWRNYWxsb2Moc2l6ZV90IG4pOworICAgIEpTX0VYUE9SVF9QUklWQVRFIFRyeU1hbGxvY1JldHVy
blZhbHVlIHRyeUZhc3RDYWxsb2Moc2l6ZV90IG5fZWxlbWVudHMsIHNpemVfdCBlbGVtZW50X3Np
emUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIFRyeU1hbGxvY1JldHVyblZhbHVlIHRyeUZhc3RS
ZWFsbG9jKHZvaWQqIHAsIHNpemVfdCBuKTsKIAotICAgIHZvaWQgZmFzdEZyZWUodm9pZCopOwor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZmFzdEZyZWUodm9pZCopOwogCiAjaWZuZGVmIE5E
RUJVRyAgICAKICAgICB2b2lkIGZhc3RNYWxsb2NGb3JiaWQoKTsKZGlmZiAtLWdpdCBhL0phdmFT
Y3JpcHRDb3JlL3d0Zi9NYWluVGhyZWFkLmggYi9KYXZhU2NyaXB0Q29yZS93dGYvTWFpblRocmVh
ZC5oCmluZGV4IDAxY2U4MDQuLjAzMmVkNDcgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3d0
Zi9NYWluVGhyZWFkLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvd3RmL01haW5UaHJlYWQuaApAQCAt
MzYsMTIgKzM2LDEyIEBAIGNsYXNzIE11dGV4OwogCiB0eXBlZGVmIHZvaWQgTWFpblRocmVhZEZ1
bmN0aW9uKHZvaWQqKTsKIAotdm9pZCBjYWxsT25NYWluVGhyZWFkKE1haW5UaHJlYWRGdW5jdGlv
biosIHZvaWQqIGNvbnRleHQpOworSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBjYWxsT25NYWluVGhy
ZWFkKE1haW5UaHJlYWRGdW5jdGlvbiosIHZvaWQqIGNvbnRleHQpOwogCi12b2lkIHNldE1haW5U
aHJlYWRDYWxsYmFja3NQYXVzZWQoYm9vbCBwYXVzZWQpOworSlNfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBzZXRNYWluVGhyZWFkQ2FsbGJhY2tzUGF1c2VkKGJvb2wgcGF1c2VkKTsKIAogLy8gTXVzdCBi
ZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQgKERhcndpbiBpcyBhbiBleGNlcHRpb24gdG8g
dGhpcyBydWxlKS4KLXZvaWQgaW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKK0pTX0VYUE9SVF9QUklW
QVRFIHZvaWQgaW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKIAogLy8gVGhlc2UgZnVuY3Rpb25zIGFy
ZSBpbnRlcm5hbCB0byB0aGUgY2FsbE9uTWFpblRocmVhZCBpbXBsZW1lbnRhdGlvbi4KIHZvaWQg
aW5pdGlhbGl6ZU1haW5UaHJlYWRQbGF0Zm9ybSgpOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENv
cmUvd3RmL1JhbmRvbU51bWJlci5oIGIvSmF2YVNjcmlwdENvcmUvd3RmL1JhbmRvbU51bWJlci5o
CmluZGV4IGZlMTY4N2MuLjE1NzZmZjYgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3d0Zi9S
YW5kb21OdW1iZXIuaAorKysgYi9KYXZhU2NyaXB0Q29yZS93dGYvUmFuZG9tTnVtYmVyLmgKQEAg
LTMwLDEyICszMCwxMiBAQCBuYW1lc3BhY2UgV1RGIHsKIAogICAgIC8vIFJldHVybnMgYSBwc2V1
ZG8tcmFuZG9tIG51bWJlciBpbiB0aGUgcmFuZ2UgWzAsIDEpLCBhdHRlbXB0cyB0byBiZQogICAg
IC8vIGNyeXB0b2dyYXBoaWNhbGx5IHNlY3VyZSBpZiBwb3NzaWJsZSBvbiB0aGUgdGFyZ2V0IHBs
YXRmb3JtCi0gICAgZG91YmxlIHJhbmRvbU51bWJlcigpOworICAgIEpTX0VYUE9SVF9QUklWQVRF
IGRvdWJsZSByYW5kb21OdW1iZXIoKTsKIAogICAgIC8vIFJldHVybnMgYSBwc2V1ZG8tcmFuZG9t
IG51bWJlciBpbiB0aGUgcmFuZ2UgWzAsIDEpLCBhdHRlbXB0cyB0bwogICAgIC8vIHByb2R1Y2Ug
YSByZWFzb25hYmxlICJyYW5kb20iIG51bWJlciBmYXN0LgogICAgIC8vIFdlIG9ubHkgbmVlZCB0
aGlzIGJlY2F1c2UgcmFuZF9zIGlzIHNvIHNsb3cgb24gd2luZG93cy4KLSAgICBkb3VibGUgd2Vh
a1JhbmRvbU51bWJlcigpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIGRvdWJsZSB3ZWFrUmFuZG9t
TnVtYmVyKCk7CiAKIH0KIApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGlu
Zy5oIGIvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZy5oCmluZGV4IDQ2MzYxYWYuLjRkNTAw
ZjQgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmcuaAorKysgYi9KYXZh
U2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nLmgKQEAgLTExMiwxOSArMTEyLDE5IEBAIHR5cGVkZWYg
dm9pZCogKCpUaHJlYWRGdW5jdGlvbikodm9pZCogYXJndW1lbnQpOwogCiAvLyBSZXR1cm5zIDAg
aWYgdGhyZWFkIGNyZWF0aW9uIGZhaWxlZC4KIC8vIFRoZSB0aHJlYWQgbmFtZSBtdXN0IGJlIGEg
bGl0ZXJhbCBzaW5jZSBvbiBzb21lIHBsYXRmb3JtcyBpdCdzIHBhc3NlZCBpbiB0byB0aGUgdGhy
ZWFkLgotVGhyZWFkSWRlbnRpZmllciBjcmVhdGVUaHJlYWQoVGhyZWFkRnVuY3Rpb24sIHZvaWQq
LCBjb25zdCBjaGFyKiB0aHJlYWROYW1lKTsKK0pTX0VYUE9SVF9QUklWQVRFIFRocmVhZElkZW50
aWZpZXIgY3JlYXRlVGhyZWFkKFRocmVhZEZ1bmN0aW9uLCB2b2lkKiwgY29uc3QgY2hhciogdGhy
ZWFkTmFtZSk7CiAKIC8vIEludGVybmFsIHBsYXRmb3JtLXNwZWNpZmljIGNyZWF0ZVRocmVhZCBp
bXBsZW1lbnRhdGlvbi4KLVRocmVhZElkZW50aWZpZXIgY3JlYXRlVGhyZWFkSW50ZXJuYWwoVGhy
ZWFkRnVuY3Rpb24sIHZvaWQqLCBjb25zdCBjaGFyKiB0aHJlYWROYW1lKTsKK0pTX0VYUE9SVF9Q
UklWQVRFIFRocmVhZElkZW50aWZpZXIgY3JlYXRlVGhyZWFkSW50ZXJuYWwoVGhyZWFkRnVuY3Rp
b24sIHZvaWQqLCBjb25zdCBjaGFyKiB0aHJlYWROYW1lKTsKIAogLy8gQ2FsbGVkIGluIHRoZSB0
aHJlYWQgZHVyaW5nIGluaXRpYWxpemF0aW9uLgogLy8gSGVscGZ1bCBmb3IgcGxhdGZvcm1zIHdo
ZXJlIHRoZSB0aHJlYWQgbmFtZSBtdXN0IGJlIHNldCBmcm9tIHdpdGhpbiB0aGUgdGhyZWFkLgot
dm9pZCBzZXRUaHJlYWROYW1lSW50ZXJuYWwoY29uc3QgY2hhciogdGhyZWFkTmFtZSk7CitKU19F
WFBPUlRfUFJJVkFURSB2b2lkIHNldFRocmVhZE5hbWVJbnRlcm5hbChjb25zdCBjaGFyKiB0aHJl
YWROYW1lKTsKIAotVGhyZWFkSWRlbnRpZmllciBjdXJyZW50VGhyZWFkKCk7Ci1ib29sIGlzTWFp
blRocmVhZCgpOwotaW50IHdhaXRGb3JUaHJlYWRDb21wbGV0aW9uKFRocmVhZElkZW50aWZpZXIs
IHZvaWQqKik7Ci12b2lkIGRldGFjaFRocmVhZChUaHJlYWRJZGVudGlmaWVyKTsKK0pTX0VYUE9S
VF9QUklWQVRFIFRocmVhZElkZW50aWZpZXIgY3VycmVudFRocmVhZCgpOworSlNfRVhQT1JUX1BS
SVZBVEUgYm9vbCBpc01haW5UaHJlYWQoKTsKK0pTX0VYUE9SVF9QUklWQVRFIGludCB3YWl0Rm9y
VGhyZWFkQ29tcGxldGlvbihUaHJlYWRJZGVudGlmaWVyLCB2b2lkKiopOworSlNfRVhQT1JUX1BS
SVZBVEUgdm9pZCBkZXRhY2hUaHJlYWQoVGhyZWFkSWRlbnRpZmllcik7CiAKICNpZiBVU0UoUFRI
UkVBRFMpCiB0eXBlZGVmIHB0aHJlYWRfbXV0ZXhfdCBQbGF0Zm9ybU11dGV4OwpAQCAtMTYxLDcg
KzE2MSw3IEBAIHR5cGVkZWYgdm9pZCogUGxhdGZvcm1SZWFkV3JpdGVMb2NrOwogdHlwZWRlZiB2
b2lkKiBQbGF0Zm9ybUNvbmRpdGlvbjsKICNlbmRpZgogICAgIAotY2xhc3MgTXV0ZXggOiBwdWJs
aWMgTm9uY29weWFibGUgeworY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgTXV0ZXggOiBwdWJsaWMg
Tm9uY29weWFibGUgewogcHVibGljOgogICAgIE11dGV4KCk7CiAgICAgfk11dGV4KCk7CkBAIC0x
NzgsNyArMTc4LDcgQEAgcHJpdmF0ZToKIAogdHlwZWRlZiBMb2NrZXI8TXV0ZXg+IE11dGV4TG9j
a2VyOwogCi1jbGFzcyBSZWFkV3JpdGVMb2NrIDogcHVibGljIE5vbmNvcHlhYmxlIHsKK2NsYXNz
IEpTX0VYUE9SVF9QUklWQVRFIFJlYWRXcml0ZUxvY2sgOiBwdWJsaWMgTm9uY29weWFibGUgewog
cHVibGljOgogICAgIFJlYWRXcml0ZUxvY2soKTsKICAgICB+UmVhZFdyaXRlTG9jaygpOwpAQCAt
MzEyLDEwICszMTIsMTAgQEAgcHVibGljOgogCiAvLyBUaGlzIGZ1bmN0aW9uIG11c3QgYmUgY2Fs
bGVkIGZyb20gdGhlIG1haW4gdGhyZWFkLiBJdCBpcyBzYWZlIHRvIGNhbGwgaXQgcmVwZWF0ZWRs
eS4KIC8vIERhcndpbiBpcyBhbiBleGNlcHRpb24gdG8gdGhpcyBydWxlOiBpdCBpcyBPSyB0byBj
YWxsIGl0IGZyb20gYW55IHRocmVhZCwgdGhlIG9ubHkgcmVxdWlyZW1lbnQgaXMgdGhhdCB0aGUg
Y2FsbHMgYXJlIG5vdCByZWVudHJhbnQuCi12b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKTsKK0pT
X0VYUE9SVF9QUklWQVRFIHZvaWQgaW5pdGlhbGl6ZVRocmVhZGluZygpOwogCi12b2lkIGxvY2tB
dG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleCgpOwotdm9pZCB1bmxvY2tBdG9taWNhbGx5
SW5pdGlhbGl6ZWRTdGF0aWNNdXRleCgpOworSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBsb2NrQXRv
bWljYWxseUluaXRpYWxpemVkU3RhdGljTXV0ZXgoKTsKK0pTX0VYUE9SVF9QUklWQVRFIHZvaWQg
dW5sb2NrQXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljTXV0ZXgoKTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV1RGCiAKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3d0Zi9kdG9hLmggYi9KYXZhU2Ny
aXB0Q29yZS93dGYvZHRvYS5oCmluZGV4IGNiZWM3YzcuLjVjODJhOTAgMTAwNjQ0Ci0tLSBhL0ph
dmFTY3JpcHRDb3JlL3d0Zi9kdG9hLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvd3RmL2R0b2EuaApA
QCAtMjksOCArMjksOCBAQCBuYW1lc3BhY2UgV1RGIHsKIAogICAgIGV4dGVybiBXVEY6Ok11dGV4
KiBzX2R0b2FQNU11dGV4OwogCi0gICAgZG91YmxlIHN0cnRvZChjb25zdCBjaGFyKiBzMDAsIGNo
YXIqKiBzZSk7Ci0gICAgdm9pZCBkdG9hKGNoYXIqIHJlc3VsdCwgZG91YmxlIGQsIGludCBuZGln
aXRzLCBpbnQqIGRlY3B0LCBpbnQqIHNpZ24sIGNoYXIqKiBydmUpOworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIGRvdWJsZSBzdHJ0b2QoY29uc3QgY2hhciogczAwLCBjaGFyKiogc2UpOworICAgIEpT
X0VYUE9SVF9QUklWQVRFIHZvaWQgZHRvYShjaGFyKiByZXN1bHQsIGRvdWJsZSBkLCBpbnQgbmRp
Z2l0cywgaW50KiBkZWNwdCwgaW50KiBzaWduLCBjaGFyKiogcnZlKTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV1RGCiAKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3d0Zi91bmljb2RlL1VURjguY3Bw
IGIvSmF2YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUvVVRGOC5jcHAKaW5kZXggOWU3MTNmZS4uMjFk
NTg1NiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUvVVRGOC5jcHAKKysr
IGIvSmF2YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUvVVRGOC5jcHAKQEAgLTIzLDYgKzIzLDcgQEAK
ICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAogICovCiAKKyNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJV
VEY4LmgiCiAKIG5hbWVzcGFjZSBXVEYgewpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvd3Rm
L3VuaWNvZGUvVVRGOC5oIGIvSmF2YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUvVVRGOC5oCmluZGV4
IGE1ZWQ5M2UuLmIwNjc1NGQgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3d0Zi91bmljb2Rl
L1VURjguaAorKysgYi9KYXZhU2NyaXB0Q29yZS93dGYvdW5pY29kZS9VVEY4LmgKQEAgLTM0LDEy
ICszNCwxMiBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAvLyBHaXZlbiBhIGZpcnN0IGJ5dGUsIGdp
dmVzIHRoZSBsZW5ndGggb2YgdGhlIFVURi04IHNlcXVlbmNlIGl0IGJlZ2lucy4KICAgICAvLyBS
ZXR1cm5zIDAgZm9yIGJ5dGVzIHRoYXQgYXJlIG5vdCBsZWdhbCBzdGFydHMgb2YgVVRGLTggc2Vx
dWVuY2VzLgogICAgIC8vIE9ubHkgYWxsb3dzIHNlcXVlbmNlcyBvZiB1cCB0byA0IGJ5dGVzLCBz
aW5jZSB0aGF0IHdvcmtzIGZvciBhbGwgVW5pY29kZSBjaGFyYWN0ZXJzIChVLTAwMDAwMDAwIHRv
IFUtMDAxMEZGRkYpLgotICAgIGludCBVVEY4U2VxdWVuY2VMZW5ndGgoY2hhcik7CisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgaW50IFVURjhTZXF1ZW5jZUxlbmd0aChjaGFyKTsKIAogICAgIC8vIFRh
a2VzIGEgbnVsbC10ZXJtaW5hdGVkIEMtc3R5bGUgc3RyaW5nIHdpdGggYSBVVEYtOCBzZXF1ZW5j
ZSBpbiBpdCBhbmQgY29udmVydHMgaXQgdG8gYSBjaGFyYWN0ZXIuCiAgICAgLy8gT25seSBhbGxv
d3MgVW5pY29kZSBjaGFyYWN0ZXJzIChVLTAwMDAwMDAwIHRvIFUtMDAxMEZGRkYpLgogICAgIC8v
IFJldHVybnMgLTEgaWYgdGhlIHNlcXVlbmNlIGlzIG5vdCB2YWxpZCAoaW5jbHVkaW5nIHByZXNl
bmNlIG9mIGV4dHJhIGJ5dGVzKS4KLSAgICBpbnQgZGVjb2RlVVRGOFNlcXVlbmNlKGNvbnN0IGNo
YXIqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBpbnQgZGVjb2RlVVRGOFNlcXVlbmNlKGNvbnN0
IGNoYXIqKTsKIAogICAgIHR5cGVkZWYgZW51bSB7CiAgICAgICAgICAgICBjb252ZXJzaW9uT0ss
ICAgICAgIC8vIGNvbnZlcnNpb24gc3VjY2Vzc2Z1bApAQCAtNjIsMTIgKzYyLDEyIEBAIG5hbWVz
cGFjZSBXVEYgewogICAgIC8vIHRvIHRoZSByZXBsYWNlbWVudCBjaGFyYWN0ZXI7IG90aGVyd2lz
ZSAod2hlbiB0aGUgZmxhZyBpcyBzZXQgdG8gc3RyaWN0KQogICAgIC8vIHRoZXkgY29uc3RpdHV0
ZSBhbiBlcnJvci4KIAotICAgIENvbnZlcnNpb25SZXN1bHQgY29udmVydFVURjhUb1VURjE2KAot
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiogc291cmNlU3RhcnQsIGNvbnN0IGNoYXIq
IHNvdXJjZUVuZCwgCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgQ29udmVyc2lvblJlc3VsdCBjb252
ZXJ0VVRGOFRvVVRGMTYoCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqKiBzb3VyY2VT
dGFydCwgY29uc3QgY2hhciogc291cmNlRW5kLAogICAgICAgICAgICAgICAgICAgICBVQ2hhcioq
IHRhcmdldFN0YXJ0LCBVQ2hhciogdGFyZ2V0RW5kLCBib29sIHN0cmljdCA9IHRydWUpOwogCi0g
ICAgQ29udmVyc2lvblJlc3VsdCBjb252ZXJ0VVRGMTZUb1VURjgoCi0gICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFVDaGFyKiogc291cmNlU3RhcnQsIGNvbnN0IFVDaGFyKiBzb3VyY2VFbmQsIAor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIENvbnZlcnNpb25SZXN1bHQgY29udmVydFVURjE2VG9VVEY4
KAorICAgICAgICAgICAgICAgICAgICBjb25zdCBVQ2hhcioqIHNvdXJjZVN0YXJ0LCBjb25zdCBV
Q2hhciogc291cmNlRW5kLAogICAgICAgICAgICAgICAgICAgICBjaGFyKiogdGFyZ2V0U3RhcnQs
IGNoYXIqIHRhcmdldEVuZCwgYm9vbCBzdHJpY3QgPSB0cnVlKTsKICAgfQogfQpkaWZmIC0tZ2l0
IGEvSmF2YVNjcmlwdEdsdWUvY29uZmlnLmggYi9KYXZhU2NyaXB0R2x1ZS9jb25maWcuaAppbmRl
eCBmZGJkNGFlLi4wMzk3OWVjIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0R2x1ZS9jb25maWcuaAor
KysgYi9KYXZhU2NyaXB0R2x1ZS9jb25maWcuaApAQCAtNCw0ICs0LDQgQEAKIAogI2luY2x1ZGUg
PHd0Zi9QbGF0Zm9ybS5oPgogCi0jZGVmaW5lIEpTX0VYUE9SVERBVEEKKyNkZWZpbmUgSlNfRVhQ
T1JUX1BSSVZBVEUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggNThlZjMzZC4uOGQyMTJjMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAwOS0wNy0yNCAg
S2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4gIDxrZW5uZXRoLmNocmlzdGlhbnNlbkBvcGVuYm9z
c2Eub3JnPiwgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGVmaW5lIEpTX0VY
UE9SVF9QUklWQVRFIGFuZCBXRUJLSVRfRVhQT1JUREFUQSBmb3IgZ2NjLgorCisgICAgICAgIExp
bmsgUVRNb3ZpZVdpbiBhZ2FpbnN0IEphdmFTY3JpcHRDb3JlIGZvciB0aGUgZXhwb3J0ZWQKKyAg
ICAgICAgV1RGIHN5bWJvbHMuCisKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9RVE1vdmllV2lu
LnZjcHJvajogTGluayBRVE1vdmllV2luIGFnYWluc3QgSlNDIGRsbCwKKyAgICAgICAgZm9yIHRo
ZSBleHBvcnRlZCBXVEYgc3ltYm9scy4KKyAgICAgICAgKiBjb25maWcuaDogVHdlYWsgZm9yIGdj
Yy4KKwogMjAwOS0wOC0xMiAgSm9zZXBoIFBlY29yYXJvICA8am9lcGVjazAyQGdtYWlsLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCmRpZmYgLS1naXQgYS9XZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1FUTW92aWVXaW4udmNwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9RVE1vdmllV2luLnZjcHJvagppbmRleCA1OTM4NTViLi5lNWY4NWIyIDEwMDY0NAotLS0g
YS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1FUTW92aWVXaW4udmNwcm9qCisrKyBiL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovUVRNb3ZpZVdpbi52Y3Byb2oKQEAgLTU1LDcgKzU1LDcgQEAKIAkJCS8+
CiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKLQkJCQlBZGRpdGlvbmFsRGVwZW5k
ZW5jaWVzPSJRVE1MQ2xpZW50LmxpYiBXVEYkKFdlYktpdENvbmZpZ1N1ZmZpeCkubGliIHdpbm1t
LmxpYiBwdGhyZWFkVkMyJChMaWJyYXJ5Q29uZmlnU3VmZml4KS5saWIgTXNpbWczMi5saWIgdXNl
cjMyLmxpYiBhZHZhcGkzMi5saWIiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iUVRNTENs
aWVudC5saWIgSmF2YVNjcmlwdENvcmUkKFdlYktpdERMTENvbmZpZ1N1ZmZpeCkubGliIHdpbm1t
LmxpYiBwdGhyZWFkVkMyJChMaWJyYXJ5Q29uZmlnU3VmZml4KS5saWIgTXNpbWczMi5saWIgdXNl
cjMyLmxpYiBhZHZhcGkzMi5saWIiCiAJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVj
dE5hbWUpJChXZWJLaXRDb25maWdTdWZmaXgpLmRsbCIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURp
cmVjdG9yaWVzPSImcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcUXVpY2tUaW1lIFNES1xMaWJy
YXJpZXMmcXVvdDs7JnF1b3Q7JChQcm9ncmFtRmlsZXMpXFF1aWNrVGltZSBTREtcTGlicmFyaWVz
JnF1b3Q7IgogCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9IkxJQkNNVCIKQEAgLTEyOCw3
ICsxMjgsNyBAQAogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgotCQkJ
CUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IlFUTUxDbGllbnQubGliIFdURiQoV2ViS2l0Q29uZmln
U3VmZml4KS5saWIgd2lubW0ubGliIHB0aHJlYWRWQzIkKExpYnJhcnlDb25maWdTdWZmaXgpLmxp
YiBNc2ltZzMyLmxpYiB1c2VyMzIubGliIGFkdmFwaTMyLmxpYiIKKwkJCQlBZGRpdGlvbmFsRGVw
ZW5kZW5jaWVzPSJRVE1MQ2xpZW50LmxpYiBKYXZhU2NyaXB0Q29yZSQoV2ViS2l0RExMQ29uZmln
U3VmZml4KS5saWIgd2lubW0ubGliIHB0aHJlYWRWQzIkKExpYnJhcnlDb25maWdTdWZmaXgpLmxp
YiBNc2ltZzMyLmxpYiB1c2VyMzIubGliIGFkdmFwaTMyLmxpYiIKIAkJCQlPdXRwdXRGaWxlPSIk
KE91dERpcilcJChQcm9qZWN0TmFtZSkkKFdlYktpdENvbmZpZ1N1ZmZpeCkuZGxsIgogCQkJCUFk
ZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9IiZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxR
dWlja1RpbWUgU0RLXExpYnJhcmllcyZxdW90OzsmcXVvdDskKFByb2dyYW1GaWxlcylcUXVpY2tU
aW1lIFNES1xMaWJyYXJpZXMmcXVvdDsiCiAJCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0i
TElCQ01UIgpAQCAtMjAwLDcgKzIwMCw3IEBACiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJW
Q0xpbmtlclRvb2wiCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iUVRNTENsaWVudC5saWIg
V1RGJChXZWJLaXRDb25maWdTdWZmaXgpLmxpYiB3aW5tbS5saWIgcHRocmVhZFZDMiQoTGlicmFy
eUNvbmZpZ1N1ZmZpeCkubGliIE1zaW1nMzIubGliIHVzZXIzMi5saWIgYWR2YXBpMzIubGliIgor
CQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IlFUTUxDbGllbnQubGliIEphdmFTY3JpcHRDb3Jl
JChXZWJLaXRETExDb25maWdTdWZmaXgpLmxpYiB3aW5tbS5saWIgcHRocmVhZFZDMiQoTGlicmFy
eUNvbmZpZ1N1ZmZpeCkubGliIE1zaW1nMzIubGliIHVzZXIzMi5saWIgYWR2YXBpMzIubGliIgog
CQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKSQoV2ViS2l0Q29uZmlnU3Vm
Zml4KS5kbGwiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iJnF1b3Q7JChXZWJL
aXRMaWJyYXJpZXNEaXIpXFF1aWNrVGltZSBTREtcTGlicmFyaWVzJnF1b3Q7OyZxdW90OyQoUHJv
Z3JhbUZpbGVzKVxRdWlja1RpbWUgU0RLXExpYnJhcmllcyZxdW90OyIKIAkJCQlJZ25vcmVEZWZh
dWx0TGlicmFyeU5hbWVzPSJMSUJDTVQiCmRpZmYgLS1naXQgYS9XZWJDb3JlL2NvbmZpZy5oIGIv
V2ViQ29yZS9jb25maWcuaAppbmRleCA0MTFkZGIxLi4yM2ExYjFhIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2NvbmZpZy5oCisrKyBiL1dlYkNvcmUvY29uZmlnLmgKQEAgLTI0LDIwICsyNCwyNSBAQAog
CiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CiAKLSNpZiBQTEFURk9STShXSU5fT1MpICYmICFk
ZWZpbmVkKEJVSUxESU5HX1dYX18pICYmICFDT01QSUxFUihHQ0MpCi0jaWYgZGVmaW5lZChCVUlM
RElOR19KYXZhU2NyaXB0Q29yZSkgfHwgZGVmaW5lZChCVUlMRElOR19XVEYpCi0jZGVmaW5lIEpT
X0VYUE9SVERBVEEgX19kZWNsc3BlYyhkbGxleHBvcnQpCisjdW5kZWYgSlNfRVhQT1JUX1BSSVZB
VEUKKyN1bmRlZiBXRUJLSVRfRVhQT1JUREFUQQorI2lmIENPTVBJTEVSKEdDQykKKyAgICAjZGVm
aW5lIEpTX0VYUE9SVF9QUklWQVRFIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQi
KSkpCisgICAgI2RlZmluZSBXRUJLSVRfRVhQT1JUREFUQSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmls
aXR5KCJkZWZhdWx0IikpKQorI2VsaWYgUExBVEZPUk0oV0lOX09TKSAmJiAhZGVmaW5lZChCVUlM
RElOR19XWF9fKQorICAgICNpZiBkZWZpbmVkKEJVSUxESU5HX0phdmFTY3JpcHRDb3JlKSB8fCBk
ZWZpbmVkKEJVSUxESU5HX1dURikKKyAgICAgICAgI2RlZmluZSBKU19FWFBPUlRfUFJJVkFURSBf
X2RlY2xzcGVjKGRsbGV4cG9ydCkKKyAgICAjZWxzZQorICAgICAgICAjZGVmaW5lIEpTX0VYUE9S
VF9QUklWQVRFIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQorICAgICNlbmRpZgorICAgICNpZiBkZWZp
bmVkKEJVSUxESU5HX1dlYkNvcmUpIHx8IGRlZmluZWQoQlVJTERJTkdfV2ViS2l0KQorICAgICAg
ICAjZGVmaW5lIFdFQktJVF9FWFBPUlREQVRBIF9fZGVjbHNwZWMoZGxsZXhwb3J0KQorICAgICNl
bHNlCisgICAgICAgICNkZWZpbmUgV0VCS0lUX0VYUE9SVERBVEEgX19kZWNsc3BlYyhkbGxpbXBv
cnQpCisgICAgI2VuZGlmCiAjZWxzZQotI2RlZmluZSBKU19FWFBPUlREQVRBIF9fZGVjbHNwZWMo
ZGxsaW1wb3J0KQotI2VuZGlmCi0jaWYgZGVmaW5lZChCVUlMRElOR19XZWJDb3JlKSB8fCBkZWZp
bmVkKEJVSUxESU5HX1dlYktpdCkKLSNkZWZpbmUgV0VCS0lUX0VYUE9SVERBVEEgX19kZWNsc3Bl
YyhkbGxleHBvcnQpCi0jZWxzZQotI2RlZmluZSBXRUJLSVRfRVhQT1JUREFUQSBfX2RlY2xzcGVj
KGRsbGltcG9ydCkKLSNlbmRpZgotI2Vsc2UKLSNkZWZpbmUgSlNfRVhQT1JUREFUQQotI2RlZmlu
ZSBXRUJLSVRfRVhQT1JUREFUQQorICAgICNkZWZpbmUgSlNfRVhQT1JUX1BSSVZBVEUKKyAgICAj
ZGVmaW5lIFdFQktJVF9FWFBPUlREQVRBCiAjZW5kaWYKIAogI2RlZmluZSBNT0JJTEUgMApkaWZm
IC0tZ2l0IGEvV2ViS2l0L2NmL0NoYW5nZUxvZyBiL1dlYktpdC9jZi9DaGFuZ2VMb2cKaW5kZXgg
MjdjYWYxYy4uYjM5ZGYwZiAxMDA2NDQKLS0tIGEvV2ViS2l0L2NmL0NoYW5nZUxvZworKysgYi9X
ZWJLaXQvY2YvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMDktMDctMjQgIFNpbW9uIEhh
dXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCBjb21waWxhdGlvbiBvbiB0aGUgTWFjLCBk
b24ndCByZS1kZWZpbmUgSlNfRVhQT1JUX1BSSVZBVEUgZW1wdHkgYnV0CisgICAgICAgIHJlLXVz
ZSB0aGUgZGVmaW5pdGlvbiBmcm9tIFdlYktpdFByZWZpeC5oLgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwOgorCiAyMDA5LTA0LTIwICBTdGV2ZSBG
YWxrZW5idXJnICA8c2ZhbGtlbkBhcHBsZS5jb20+CiAKICAgICAgICAgU2VwYXJhdGUgSmF2YVNj
cmlwdENvcmUuZGxsIGZyb20gV2ViS2l0LmRsbC4KZGlmZiAtLWdpdCBhL1dlYktpdC9jZi9XZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAgYi9XZWJLaXQvY2YvV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCmluZGV4IDYwMGQ1OGQuLjczNmY4OGEgMTAw
NjQ0Ci0tLSBhL1dlYktpdC9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5j
cHAKKysrIGIvV2ViS2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNw
cApAQCAtMzksMTIgKzM5LDEwIEBACiAKICNpZiBkZWZpbmVkKFdJTjMyKSB8fCBkZWZpbmVkKF9X
SU4zMikKICNpZiBkZWZpbmVkKEJVSUxESU5HX0phdmFTY3JpcHRDb3JlKSB8fCBkZWZpbmVkKEJV
SUxESU5HX1dURikKLSNkZWZpbmUgSlNfRVhQT1JUREFUQSBfX2RlY2xzcGVjKGRsbGV4cG9ydCkK
KyNkZWZpbmUgSlNfRVhQT1JUX1BSSVZBVEUgX19kZWNsc3BlYyhkbGxleHBvcnQpCiAjZWxzZQot
I2RlZmluZSBKU19FWFBPUlREQVRBIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQorI2RlZmluZSBKU19F
WFBPUlRfUFJJVkFURSBfX2RlY2xzcGVjKGRsbGltcG9ydCkKICNlbmRpZgotI2Vsc2UKLSNkZWZp
bmUgSlNfRVhQT1JUREFUQQogI2VuZGlmCiAKICNpbmNsdWRlICJXZWJJbnNwZWN0b3JDbGllbnQu
aCIKZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKaW5kZXggNjcxMmRiYy4uYWMyMzI3NSAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAwOS0wNy0y
NCAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRHVwbGljYXRlIHRoZSBKU19F
WFBPUlRfUFJJVkFURSBhbmQgV0VCS0lUX0VYUE9SVERBVEEgZGVmaW5pdGlvbiBmcm9tCisgICAg
ICAgIFdlYkNvcmUvY29uZmlnLmggdG8gZml4IGNvbXBpbGF0aW9uIGFnYWluc3QgSmF2YVNjcmlw
dENvcmUgYW5kCisgICAgICAgIFdlYkNvcmUgb24gdGhlIE1hYy4KKworICAgICAgICAqIFdlYktp
dFByZWZpeC5oOgorCiAyMDA5LTA4LTEyICBNYXJrIFJvd2UgIDxtcm93ZUBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgS2V2aW4gRGVja2VyLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L21h
Yy9XZWJLaXRQcmVmaXguaCBiL1dlYktpdC9tYWMvV2ViS2l0UHJlZml4LmgKaW5kZXggMGVkZWMw
Ni4uN2U2ZjZkMyAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9XZWJLaXRQcmVmaXguaAorKysgYi9X
ZWJLaXQvbWFjL1dlYktpdFByZWZpeC5oCkBAIC04Myw2ICs4MywyNyBAQCB0eXBlZGVmIGZsb2F0
IENHRmxvYXQ7CiAjZGVmaW5lIFdURl9VU0VfSlNDIDEKICNkZWZpbmUgV1RGX1VTRV9WOCAwCiAK
KyN1bmRlZiBKU19FWFBPUlRfUFJJVkFURQorI3VuZGVmIFdFQktJVF9FWFBPUlREQVRBCisjaWYg
Q09NUElMRVIoR0NDKQorICAgICNkZWZpbmUgSlNfRVhQT1JUX1BSSVZBVEUgX19hdHRyaWJ1dGVf
XygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkKKyAgICAjZGVmaW5lIFdFQktJVF9FWFBPUlREQVRB
IF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpCisjZWxpZiBQTEFURk9STShX
SU5fT1MpICYmICFkZWZpbmVkKEJVSUxESU5HX1dYX18pICYmICFkZWZpbmVkKEJVSUxESU5HX1FU
TW92aWVXaW4pCisgICAgI2lmIGRlZmluZWQoQlVJTERJTkdfSmF2YVNjcmlwdENvcmUpIHx8IGRl
ZmluZWQoQlVJTERJTkdfV1RGKQorICAgICAgICAjZGVmaW5lIEpTX0VYUE9SVF9QUklWQVRFIF9f
ZGVjbHNwZWMoZGxsZXhwb3J0KQorICAgICNlbHNlCisgICAgICAgICNkZWZpbmUgSlNfRVhQT1JU
X1BSSVZBVEUgX19kZWNsc3BlYyhkbGxpbXBvcnQpCisgICAgI2VuZGlmCisgICAgI2lmIGRlZmlu
ZWQoQlVJTERJTkdfV2ViQ29yZSkgfHwgZGVmaW5lZChCVUlMRElOR19XZWJLaXQpCisgICAgICAg
ICNkZWZpbmUgV0VCS0lUX0VYUE9SVERBVEEgX19kZWNsc3BlYyhkbGxleHBvcnQpCisgICAgI2Vs
c2UKKyAgICAgICAgI2RlZmluZSBXRUJLSVRfRVhQT1JUREFUQSBfX2RlY2xzcGVjKGRsbGltcG9y
dCkKKyAgICAjZW5kaWYKKyNlbHNlCisgICAgI2RlZmluZSBKU19FWFBPUlRfUFJJVkFURQorICAg
ICNkZWZpbmUgV0VCS0lUX0VYUE9SVERBVEEKKyNlbmRpZgorCiAjaWZkZWYgX19jcGx1c3BsdXMK
ICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2VuZGlmCkBAIC05Miw2ICsxMTMsMyBAQCB0
eXBlZGVmIGZsb2F0IENHRmxvYXQ7CiAvKiBXb3JrIGFyb3VuZCBidWcgd2l0aCBDKysgbGlicmFy
eSB0aGF0IHNjcmV3cyB1cCBPYmplY3RpdmUtQysrIHdoZW4gZXhjZXB0aW9uIHN1cHBvcnQgaXMg
ZGlzYWJsZWQuICovCiAjdW5kZWYgdHJ5CiAjdW5kZWYgY2F0Y2gKLQotI2RlZmluZSBKU19FWFBP
UlREQVRBCi0jZGVmaW5lIFdFQktJVF9FWFBPUlREQVRBCmRpZmYgLS1naXQgYS9XZWJLaXQvd2lu
L0NoYW5nZUxvZyBiL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDc5M2I0YmQuLjhkOWRhYjYg
MTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1dlYktpdC93aW4vQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMDktMDctMjQgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24u
aGF1c21hbm5Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEZpeCBjb21waWxhdGlvbiBieSBkZWZpbmluZyBKU19FWFBPUlRfUFJJVkFU
RSBsaWtlIGluCisgICAgICAgIEphdmFTY3JpcHRDb3JlL2NvbmZpZy5oLCB0byBmaXggc3ltYm9s
IGltcG9ydCBmb3JtIEphdmFTY3JpcHRDb3JlLgorCisgICAgICAgICogV2ViS2l0RExMLmg6IERl
ZmluZSBKU19FWFBPUlREQVRBLgorCiAyMDA5LTA4LTEyICBCcmlhbiBXZWluc3RlaW4gIDxid2Vp
bnN0ZWluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIFJvYmVuLgpkaWZm
IC0tZ2l0IGEvV2ViS2l0L3dpbi9XZWJLaXRETEwuaCBiL1dlYktpdC93aW4vV2ViS2l0RExMLmgK
aW5kZXggZDk0NGIwNy4uMmZjNWMwMyAxMDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9XZWJLaXRETEwu
aAorKysgYi9XZWJLaXQvd2luL1dlYktpdERMTC5oCkBAIC0zMCw2ICszMCwxNiBAQAogI2RlZmlu
ZSBfSEFTX0VYQ0VQVElPTlMgMAogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKFdJTjMyKSB8fCBkZWZp
bmVkKF9XSU4zMikKKyNpZiBkZWZpbmVkKEJVSUxESU5HX0phdmFTY3JpcHRDb3JlKSB8fCBkZWZp
bmVkKEJVSUxESU5HX1dURikKKyNkZWZpbmUgSlNfRVhQT1JUX1BSSVZBVEUgX19kZWNsc3BlYyhk
bGxleHBvcnQpCisjZWxzZQorI2RlZmluZSBKU19FWFBPUlRfUFJJVkFURSBfX2RlY2xzcGVjKGRs
bGltcG9ydCkKKyNlbmRpZgorI2Vsc2UKKyNkZWZpbmUgSlNfRVhQT1JUX1BSSVZBVEUKKyNlbmRp
ZgorCiAjaW5jbHVkZSA8d2luc29jazIuaD4KICNpbmNsdWRlIDx3aW5kb3dzLmg+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hDb3VudGVkU2V0Lmg+CmRpZmYgLS1naXQgYS9XZWJLaXRMaWJyYXJpZXMvQ2hh
bmdlTG9nIGIvV2ViS2l0TGlicmFyaWVzL0NoYW5nZUxvZwppbmRleCBmMjE3YjI2Li42ZTdiNTA5
IDEwMDY0NAotLS0gYS9XZWJLaXRMaWJyYXJpZXMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdExpYnJh
cmllcy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAwOS0wNy0zMCAgU2ltb24gSGF1c21h
bm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgRGlzYWJsZSBNU1ZDIHdhcm5pbmcgNDI1MSBhYm91dCB0
aGUgbmVlZCB0byB0aGUgdHlwZXMgb2YgbWVtYmVyIHZhcmlhYmxlcworICAgICAgICB0aGF0IGFy
ZW4ndCBleHBvcnRlZCB5ZXQuIFdlIGRlY2lkZSB0byBpZ25vcmUgdGhpcyB3YXJuaW5nLCBhcyBm
aXhpbmcgaXQKKyAgICAgICAgcmVxdWlyZXMgZXhwbGljaXRseSBleHBvcnRpbmcgYWxsIHRlbXBs
YXRlIGluc3RhbnRpYXRpb25zIHVzZWQgaW4gZXhwb3J0ZWQKKyAgICAgICAgY2xhc3NlcycgbWVt
YmVyIHZhcmlhYmxlcy4gQWxsIG9mIHRoYXQgZG9lc24ndCBzZWVtIHRvIGJlIG5lY2Vzc2FyeSwg
YXMKKyAgICAgICAgdGhlIHN1Y2Nlc3NmdWwgdXNlIG9mIC5kZWYgZmlsZXMgd2l0aCBoYW5kLXBp
Y2tlZCBzeW1ib2xzIHByb292ZXMuCisKKyAgICAgICAgQXMgYSBzaWRlLW5vdGUgUXQgZm9yIGV4
YW1wbGUgaGFzIHRoaXMgcGFydGljdWxhciB3YXJuaW5nIGdsb2JhbGx5CisgICAgICAgIGRpc2Fi
bGVkICh2aWEgcHJhZ21hIGluIHFnbG9iYWwuaCkgYW5kIGl0J3Mgd29ya2luZyBqdXN0IGZpbmUg
Zm9yCisgICAgICAgIGV2ZXJ5b25lLgorCisgICAgICAgICogd2luL3Rvb2xzL3ZzcHJvcHMvY29t
bW9uLnZzcHJvcHM6CisKIDIwMDktMDgtMTIgIFBldGVyIEthc3RpbmcgIDxwa2FzdGluZ0Bnb29n
bGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEv
V2ViS2l0TGlicmFyaWVzL3dpbi90b29scy92c3Byb3BzL2NvbW1vbi52c3Byb3BzIGIvV2ViS2l0
TGlicmFyaWVzL3dpbi90b29scy92c3Byb3BzL2NvbW1vbi52c3Byb3BzCmluZGV4IDRjN2M5ZGYu
LmU5ZmFiMmMgMTAwNjQ0Ci0tLSBhL1dlYktpdExpYnJhcmllcy93aW4vdG9vbHMvdnNwcm9wcy9j
b21tb24udnNwcm9wcworKysgYi9XZWJLaXRMaWJyYXJpZXMvd2luL3Rvb2xzL3ZzcHJvcHMvY29t
bW9uLnZzcHJvcHMKQEAgLTE1LDcgKzE1LDcgQEAKIAkJV2FybmluZ0xldmVsPSI0IgogCQlXYXJu
QXNFcnJvcj0idHJ1ZSIKIAkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKLQkJRGlzYWJsZVNw
ZWNpZmljV2FybmluZ3M9IjQwMTg7NDA2ODs0MDk5OzQxMDA7NDEyNzs0MTM4OzQxODk7NDI0NDs0
Mjc1OzQyOTE7NDMwNTs0MzQ0OzQzNTU7NDM4OTs0NTAzOzQ1MDU7NDUxMDs0NTEyOzQ2MTA7NDcw
Njs0ODAwOzQ5NTE7NDk1Mjs0OTk2OzYwMTE7NjAzMTs2MjExOzYyNDY7NjI1NTs2Mzg3IgorCQlE
aXNhYmxlU3BlY2lmaWNXYXJuaW5ncz0iNDAxODs0MDY4OzQwOTk7NDEwMDs0MTI3OzQxMzg7NDE4
OTs0MjQ0OzQyNTE7NDI3NTs0MjkxOzQzMDU7NDM0NDs0MzU1OzQzODk7NDUwMzs0NTA1OzQ1MTA7
NDUxMjs0NjEwOzQ3MDY7NDgwMDs0OTUxOzQ5NTI7NDk5Njs2MDExOzYwMzE7NjIxMTs2MjQ2OzYy
NTU7NjM4NyIKIAkvPgogCTxUb29sCiAJCU5hbWU9IlZDTGlicmFyaWFuVG9vbCIKZGlmZiAtLWdp
dCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwppbmRleCBj
ZTA3NWE1Li43NjY3ZjkzIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cKKysrIGIv
V2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMDktMDctMjggIFNpbW9u
IEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCBjb21waWxhdGlvbiBvbiB0aGUgTWFj
LgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY29uZmlnLmg6IE1vdmUgRmFzdE1hbGxvYy5o
IGluY2x1c2lvbiB1bnRpbCBhZnRlciB0aGUgZGVmaW5pdGlvbiBvZgorICAgICAgICBKU19FWFBP
UlREQVRBLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3B0aHJlYWRzL0phdmFTY3JpcHRUaHJl
YWRpbmdQdGhyZWFkcy5jcHA6IEluY2x1ZGUgY29uZmlnLmggZm9yIHRoZQorICAgICAgICBleHBv
cnQgbWFjcm9zLgorCiAyMDA5LTA4LTEyICBHZW9yZ2UgU3RhaWtvcyAgPGdlb3JnZS5zdGFpa29z
QHRvcmNobW9iaWxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIFRyZWF0LgpkaWZm
IC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY29uZmlnLmggYi9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9jb25maWcuaAppbmRleCAwNjNlZWVhLi44YTQ3ZDExIDEwMDY0NAot
LS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jb25maWcuaAorKysgYi9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9jb25maWcuaApAQCAtMjYsMjAgKzI2LDIwIEBACiAKICNpbmNsdWRl
IDx3dGYvUGxhdGZvcm0uaD4KIAotI2lmZGVmIF9fY3BsdXNwbHVzCi0jdW5kZWYgbmV3Ci0jdW5k
ZWYgZGVsZXRlCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNlbmRpZgotCiAjaWYgUExB
VEZPUk0oV0lOX09TKSAmJiAhQ09NUElMRVIoR0NDKQotI2RlZmluZSBKU19FWFBPUlREQVRBIF9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQorI2RlZmluZSBKU19FWFBPUlRfUFJJVkFURSBfX2RlY2xzcGVj
KGRsbGltcG9ydCkKICNkZWZpbmUgV0VCS0lUX0VYUE9SVERBVEEgX19kZWNsc3BlYyhkbGxpbXBv
cnQpCiAjZWxzZQotI2RlZmluZSBKU19FWFBPUlREQVRBCisjZGVmaW5lIEpTX0VYUE9SVF9QUklW
QVRFCiAjZGVmaW5lIFdFQktJVF9FWFBPUlREQVRBCiAjZW5kaWYKIAorI2lmZGVmIF9fY3BsdXNw
bHVzCisjdW5kZWYgbmV3CisjdW5kZWYgZGVsZXRlCisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2Mu
aD4KKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oV0lOKQogI2RlZmluZSBXVEZfUExBVEZPUk1fQ0Yg
MSAKICNpZiBkZWZpbmVkKFdJTl9DQUlSTykKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL3B0aHJlYWRzL0phdmFTY3JpcHRUaHJlYWRpbmdQdGhyZWFkcy5jcHAgYi9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9wdGhyZWFkcy9KYXZhU2NyaXB0VGhyZWFkaW5nUHRocmVh
ZHMuY3BwCmluZGV4IDNhYzI1N2QuLjFmNTdiODQgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL3B0aHJlYWRzL0phdmFTY3JpcHRUaHJlYWRpbmdQdGhyZWFkcy5jcHAKKysr
IGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcHRocmVhZHMvSmF2YVNjcmlwdFRocmVhZGlu
Z1B0aHJlYWRzLmNwcApAQCAtMjcsNyArMjcsOCBAQAogICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCiAgKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCi0gCisKKyNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJKYXZhU2Ny
aXB0VGhyZWFkaW5nLmgiCiAKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlv
bi5oPgotLSAKMS42LjQuNTMuZzNmNTVlCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34831</attachid>
            <date>2009-08-14 05:40:47 -0700</date>
            <delta_ts>2011-05-25 11:54:35 -0700</delta_ts>
            <desc>Patch to remove unused WEBKIT_EXPORTDATA macro</desc>
            <filename>0001-WebCore-Remove-unused-WEBKIT_EXPORTDATA-macro.patch</filename>
            <type>text/plain</type>
            <size>3559</size>
            <attacher name="Simon Hausmann">hausmann</attacher>
            
              <data encoding="base64">RnJvbSBjYzg1OWE2YzNlNjMzYjVlNmFhYWIwOGZhNzgzY2Y3ODZlOGNkOGZmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBTaW1vbiBIYXVzbWFubiA8c2ltb24uaGF1c21hbm5Abm9raWEu
Y29tPgpEYXRlOiBGcmksIDE0IEF1ZyAyMDA5IDEzOjM0OjA0ICswMjAwClN1YmplY3Q6IFtQQVRD
SCAxLzNdIFdlYkNvcmU6IFJlbW92ZSB1bnVzZWQgV0VCS0lUX0VYUE9SVERBVEEgbWFjcm8uCgpQ
YXRjaCBieSBTaW1vbiBIYXVzbWFubiA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPiBvbiAyMDA5
LTA4LTE0ClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKKiBjb25maWcuaDoKCldlYktpdC9t
YWM6IFJlbW92ZSB1bnVzZWQgV0VCS0lUX0VYUE9SVERBVEEgbWFjcm8uCgpQYXRjaCBieSBTaW1v
biBIYXVzbWFubiA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPiBvbiAyMDA5LTA4LTE0ClJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKKiBXZWJLaXRQcmVmaXguaDoKCldlYktpdFRvb2xzOiBS
ZW1vdmUgdW51c2VkIFdFQktJVF9FWFBPUlREQVRBIG1hY3JvLgoKUGF0Y2ggYnkgU2ltb24gSGF1
c21hbm4gPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4gb24gMjAwOS0wOC0xNApSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KCiogRHVtcFJlbmRlclRyZWUvY29uZmlnLmg6Ci0tLQogV2ViQ29y
ZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgfCAgICA4ICsrKysrKysrCiBXZWJDb3JlL2Nv
bmZpZy5oICAgICAgICAgICAgICAgICAgICB8ICAgIDYgLS0tLS0tCiBXZWJLaXQvbWFjL0NoYW5n
ZUxvZyAgICAgICAgICAgICAgICB8ICAgIDggKysrKysrKysKIFdlYktpdC9tYWMvV2ViS2l0UHJl
Zml4LmggICAgICAgICAgIHwgICAgMSAtCiBXZWJLaXRUb29scy9DaGFuZ2VMb2cgICAgICAgICAg
ICAgICB8ICAgIDggKysrKysrKysKIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2NvbmZpZy5o
IHwgICAgMiAtLQogNiBmaWxlcyBjaGFuZ2VkLCAyNCBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9u
cygtKQoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggMzI1YjRmZi4uMDczMDQ2MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMSBAQAorMjAwOS0wOC0xNCAgU2ltb24g
SGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHVudXNlZCBXRUJLSVRfRVhQT1JU
REFUQSBtYWNyby4KKworICAgICAgICAqIGNvbmZpZy5oOgorCiAyMDA5LTA4LTE0ICBQYXZlbCBG
ZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRp
bW90aHkgSGF0Y2hlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvY29uZmlnLmggYi9XZWJDb3JlL2Nv
bmZpZy5oCmluZGV4IDQxMWRkYjEuLjQ4M2VmNzUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY29uZmln
LmgKKysrIGIvV2ViQ29yZS9jb25maWcuaApAQCAtMzAsMTQgKzMwLDggQEAKICNlbHNlCiAjZGVm
aW5lIEpTX0VYUE9SVERBVEEgX19kZWNsc3BlYyhkbGxpbXBvcnQpCiAjZW5kaWYKLSNpZiBkZWZp
bmVkKEJVSUxESU5HX1dlYkNvcmUpIHx8IGRlZmluZWQoQlVJTERJTkdfV2ViS2l0KQotI2RlZmlu
ZSBXRUJLSVRfRVhQT1JUREFUQSBfX2RlY2xzcGVjKGRsbGV4cG9ydCkKLSNlbHNlCi0jZGVmaW5l
IFdFQktJVF9FWFBPUlREQVRBIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQotI2VuZGlmCiAjZWxzZQog
I2RlZmluZSBKU19FWFBPUlREQVRBCi0jZGVmaW5lIFdFQktJVF9FWFBPUlREQVRBCiAjZW5kaWYK
IAogI2RlZmluZSBNT0JJTEUgMApkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9X
ZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCAwZDliOWE2Li4xNjhiMzlhIDEwMDY0NAotLS0gYS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDExIEBACisyMDA5LTA4LTE0ICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lh
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBS
ZW1vdmUgdW51c2VkIFdFQktJVF9FWFBPUlREQVRBIG1hY3JvLgorCisgICAgICAgICogV2ViS2l0
UHJlZml4Lmg6CisKIDIwMDktMDgtMTMgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgog
CiAgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1t
OiBVcGRhdGVkIGluY2x1ZGVzLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9XZWJLaXRQcmVmaXgu
aCBiL1dlYktpdC9tYWMvV2ViS2l0UHJlZml4LmgKaW5kZXggMGVkZWMwNi4uNGJlYWQzMiAxMDA2
NDQKLS0tIGEvV2ViS2l0L21hYy9XZWJLaXRQcmVmaXguaAorKysgYi9XZWJLaXQvbWFjL1dlYktp
dFByZWZpeC5oCkBAIC05NCw0ICs5NCwzIEBAIHR5cGVkZWYgZmxvYXQgQ0dGbG9hdDsKICN1bmRl
ZiBjYXRjaAogCiAjZGVmaW5lIEpTX0VYUE9SVERBVEEKLSNkZWZpbmUgV0VCS0lUX0VYUE9SVERB
VEEKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5n
ZUxvZwppbmRleCBjZjAyM2QxLi5jY2JiZjIxIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFu
Z2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTEgQEAKKzIwMDkt
MDgtMTQgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSB1bnVzZWQg
V0VCS0lUX0VYUE9SVERBVEEgbWFjcm8uCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jb25m
aWcuaDoKKwogMjAwOS0wOC0xMyAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgTm8gcmV2aWV3LCBjb3JyZWN0aW5nIG9idmlvdXMgcHl0aG9uIGVycm9yIHNlZW4gaW4g
dGhlIGNvbW1pdCBxdWV1ZS4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L2NvbmZpZy5oIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY29uZmlnLmgKaW5kZXggMDYz
ZWVlYS4uMzIwZWU0YSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY29u
ZmlnLmgKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY29uZmlnLmgKQEAgLTM0LDEw
ICszNCw4IEBACiAKICNpZiBQTEFURk9STShXSU5fT1MpICYmICFDT01QSUxFUihHQ0MpCiAjZGVm
aW5lIEpTX0VYUE9SVERBVEEgX19kZWNsc3BlYyhkbGxpbXBvcnQpCi0jZGVmaW5lIFdFQktJVF9F
WFBPUlREQVRBIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQogI2Vsc2UKICNkZWZpbmUgSlNfRVhQT1JU
REFUQQotI2RlZmluZSBXRUJLSVRfRVhQT1JUREFUQQogI2VuZGlmCiAKICNpZiBQTEFURk9STShX
SU4pCi0tIAoxLjYuNC41My5nM2Y1NWUKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34832</attachid>
            <date>2009-08-14 05:41:52 -0700</date>
            <delta_ts>2010-06-16 21:51:32 -0700</delta_ts>
            <desc>Rebased patch to build JSC with JS_EXPORT_PRIVATE to export symbols</desc>
            <filename>0002-JavaScriptCore-Make-it-possible-to-build-JavaScriptC.patch</filename>
            <type>text/plain</type>
            <size>74250</size>
            <attacher name="Simon Hausmann">hausmann</attacher>
            
              <data encoding="base64">RnJvbSAzYjllYTM0MDIyNjk0MmM1OGM3YTExZGQ4MzJmZDUxZWNiNzBkODA2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBTaW1vbiBIYXVzbWFubiA8c2ltb24uaGF1c21hbm5Abm9raWEu
Y29tPgpEYXRlOiBGcmksIDE0IEF1ZyAyMDA5IDE0OjM4OjQ2ICswMjAwClN1YmplY3Q6IFtQQVRD
SCAyLzNdIEphdmFTY3JpcHRDb3JlOiBNYWtlIGl0IHBvc3NpYmxlIHRvIGJ1aWxkIEphdmFTY3Jp
cHRDb3JlIGFzIHNoYXJlZCBsaWJyYXJ5IHdpdGhvdXQKIGV4cG9ydGVkIHN5bWJvbCBsaXN0cy4K
ClBhdGNoIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8a2VubmV0aC5jaHJpc3RpYW5z
ZW5Ab3BlbmJvc3NhLm9yZz4sIFNpbW9uIEhhdXNtYW5uIDxzaW1vbi5oYXVzbWFubkBub2tpYS5j
b20+IG9uIDIwMDktMDctMjQKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpSZW5hbWVkIEpT
X0VYUE9SVERBVEEgdG8gSlNfRVhQT1JUX1BSSVZBVEUsIGZvciBjbGFyaXR5LgoKQWRkZWQgSlNf
RVhQT1JUX1BSSVZBVEUgdG8gYWxsIHRoZSBjbGFzc2VzIHRoYXQgYXJlIGFjY2Vzc2VkIGZyb20g
V2ViQ29yZS9XZWJLaXQsCnRvIGVuc3VyZSB0aGVpciB2aXNpYmlsaXR5LgoKKiBBUEkvT3BhcXVl
SlNTdHJpbmcuaDogVXNlIEpTX0VYUE9SVF9QUklWQVRFLgoqIEphdmFTY3JpcHRDb3JlLnZjcHJv
ai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2o6IERpc2FibGUKTVNWQyB3YXJu
aW5nIGFib3V0IGluY29uc2lzdGVudCBsaW5rYWdlLgoqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9q
c2MvanNjLnZjcHJvajogRGl0dG8uCiogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajogSW5jbHVkZSBQcm9maWxlR2VuZXJhdG9yLmgKaW4gdGhlIHByaXZhdGUgaGVhZGVy
cywgYXMgaXQgaXMgaW5jbHVkZWQgZnJvbSBQcm9maWxlci5oLCB3aGljaCBpcwphbHNvIGluY2x1
ZGVkIGZyb20gV2ViQ29yZS4KKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDogVXNl
IEpTX0VYUE9SVF9QUklWQVRFLgoqIGNvbmZpZy5oOiBEZWZpbmUgSlNfRVhQT1JUX1BSSVZBVEUg
YWNjb3JkaW5nbHkgd2l0aCBnY2M7IERlZmluZSBpdCB0bwpkbGxpbXBvcnQgd2l0aCBNU1ZDLgoq
IGRlYnVnZ2VyL0RlYnVnZ2VyLmg6IFVzZSBKU19FWFBPUlRfUFJJVkFURS4KKiBkZWJ1Z2dlci9E
ZWJ1Z2dlckNhbGxGcmFtZS5oOiBEaXR0by4KKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOiBE
aXR0by4KKiBqc2MucHJvOiBMaW5rIGFnYWluc3QgSlNDIGFzIHNoYXJlZCBsaWJyYXJ5LgoqIHBh
cnNlci9Ob2Rlcy5oOiBVc2UgSlNfRVhQT1JUX1BSSVZBVEUuCiogcGFyc2VyL1BhcnNlci5oOiBE
aXR0by4KKiBwYXJzZXIvUGFyc2VyQXJlbmEuaDogRGl0dG8uCiogcGNyZS9wY3JlLmg6IERpdHRv
LgoqIHByb2ZpbGVyL1Byb2ZpbGUuaDogVXNlIEpTX0VYUE9SVF9QUklWQVRFLgoqIHByb2ZpbGVy
L1Byb2ZpbGVyLmg6IFVzZSBKU19FWFBPUlRfUFJJVkFURSBhbmQgcmVwbGFjZSBQcm9maWxlR2Vu
ZXJhdG9yCmZvcndhcmQgZGVjbGFyYXRpb24gd2l0aCBpbmNsdXNpb24gdG8gZml4IE1TVkMgY29t
cGlsYXRpb24sIHdoaWNoIHJlcXVpcmVzCml0cyB2aXNpYmxpdHkgd2hlbiBtYXJraW5nIFByb2Zp
bGVyIHdpdGggZGxsZXhwb3J0LgoqIHJ1bnRpbWUvQXJnTGlzdC5oOiBVc2UgSlNfRVhQT1JUX1BS
SVZBVEUuCiogcnVudGltZS9Cb29sZWFuT2JqZWN0Lmg6IERpdHRvLgoqIHJ1bnRpbWUvQ2FsbERh
dGEuaDogRGl0dG8uCiogcnVudGltZS9Db2xsZWN0b3IuaDogRGl0dG8uCiogcnVudGltZS9Db21w
bGV0aW9uLmg6IERpdHRvLgoqIHJ1bnRpbWUvQ29uc3RydWN0RGF0YS5oOiBEaXR0by4KKiBydW50
aW1lL0RhdGVJbnN0YW5jZS5oOiBEaXR0by4KKiBydW50aW1lL0Vycm9yLmg6IERpdHRvLgoqIHJ1
bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oOiBEaXR0by4KKiBydW50aW1lL0lkZW50aWZpZXIu
aDogRGl0dG8uCiogcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg6IERpdHRvLgoqIHJ1bnRp
bWUvSW50ZXJuYWxGdW5jdGlvbi5oOiBNb3ZlZCBKU19FWFBPUlRfUFJJVkFURSBmcm9tIEludGVy
bmFsRnVuY3Rpb246OmluZm8gdG8KSW50ZXJuYWxGdW5jdGlvbiwgdG8gZXhwb3J0IHRoZSBlbnRp
cmUgY2xhc3MuCiogcnVudGltZS9KU0FycmF5Lmg6IFVzZSBKU19FWFBPUlRfUFJJVkFURS4KKiBy
dW50aW1lL0pTQnl0ZUFycmF5Lmg6IERpdHRvLgoqIHJ1bnRpbWUvSlNDZWxsLmg6IERpdHRvLgoq
IHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmg6IERpdHRvLgoqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aDogRGl0dG8uCiogcnVudGltZS9KU0ltbWVkaWF0ZS5oOiBEaXR0by4KKiBydW50aW1lL0pTTG9j
ay5oOiBEaXR0by4KKiBydW50aW1lL0pTTnVtYmVyQ2VsbC5oOiBEaXR0by4KKiBydW50aW1lL0pT
T2JqZWN0Lmg6IERpdHRvLgoqIHJ1bnRpbWUvSlNTdHJpbmcuaDogRGl0dG8uCiogcnVudGltZS9K
U1ZhcmlhYmxlT2JqZWN0Lmg6IERpdHRvLgoqIHJ1bnRpbWUvSlNXcmFwcGVyT2JqZWN0Lmg6IERp
dHRvLgoqIHJ1bnRpbWUvTG9va3VwLmg6IERpdHRvLgoqIHJ1bnRpbWUvTnVtYmVyT2JqZWN0Lmg6
IERpdHRvLgoqIHJ1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmg6IERpdHRvLgoqIHJ1bnRpbWUvUHJv
cGVydHlOYW1lQXJyYXkuaDogRGl0dG8uCiogcnVudGltZS9Qcm90b3R5cGVGdW5jdGlvbi5oOiBE
aXR0by4KKiBydW50aW1lL1JlZ0V4cC5oOiBEaXR0by4KKiBydW50aW1lL1JlZ0V4cE9iamVjdC5o
OiBEaXR0by4KKiBydW50aW1lL1NtYWxsU3RyaW5ncy5oOiBEaXR0by4KKiBydW50aW1lL1N0cmlu
Z09iamVjdC5oOiBNb3ZlZCBKU19FWFBPUlRfUFJJVkFURSBmcm9tIFN0cmluZ09iamVjdDo6aW5m
byB0byBTdHJpbmdPYmplY3QsIHRvCmV4cG9ydCB0aGUgZW50aXJlIGNsYXNzLgoqIHJ1bnRpbWUv
U3RydWN0dXJlLmg6IFVzZSBKU19FWFBPUlRfUFJJVkFURS4KKiBydW50aW1lL1RpbWVvdXRDaGVj
a2VyLmg6IERpdHRvLgoqIHJ1bnRpbWUvVVN0cmluZy5oOiBSZXBsYWNlZCBzaW5nbGUgZXhwb3J0
IG9mIFVTdHJpbmc6OlJlcDo6e251bGwsZW1wdHl9QmFzZVN0cmluZyB3aXRoCmV4cG9ydCBvZiBl
bnRpcmUgY2xhc3MuIEFsc28gZXhwb3J0IGEgZmV3IGhlbHBlciBmdW5jdGlvbnMuCiogd3RmL0J5
dGVBcnJheS5oOiBVc2UgSlNfRVhQT1JUX1BSSVZBVEUuCiogd3RmL0N1cnJlbnRUaW1lLmg6IERp
dHRvLgoqIHd0Zi9GYXN0TWFsbG9jLmg6IERpdHRvLgoqIHd0Zi9NYWluVGhyZWFkLmg6IERpdHRv
LgoqIHd0Zi9SYW5kb21OdW1iZXIuaDogRGl0dG8uCiogd3RmL1RocmVhZGluZy5oOiBEaXR0by4K
KiB3dGYvZHRvYS5oOiBEaXR0by4KKiB3dGYvdW5pY29kZS9VVEY4Lmg6IERpdHRvLgoqIHd0Zi91
bmljb2RlL1VURjguY3BwOiBJbmNsdWRlIGNvbmZpZy5oIGluIG9yZGVyIHRvIGNvbXBpbGUgd2l0
aCBNU1ZDLgoKV2ViQ29yZTogRGVmaW5lIEpTX0VYUE9SVF9QUklWQVRFIGZvciBnY2MuCgpQYXRj
aCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5ldGguY2hyaXN0aWFuc2VuQG9w
ZW5ib3NzYS5vcmc+LCBTaW1vbiBIYXVzbWFubiA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPiBv
biAyMDA5LTA3LTI0ClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKTGluayBRVE1vdmllV2lu
IGFnYWluc3QgSmF2YVNjcmlwdENvcmUgZm9yIHRoZSBleHBvcnRlZApXVEYgc3ltYm9scy4KCiog
V2ViQ29yZS52Y3Byb2ovUVRNb3ZpZVdpbi52Y3Byb2o6IExpbmsgUVRNb3ZpZVdpbiBhZ2FpbnN0
IEpTQyBkbGwsCmZvciB0aGUgZXhwb3J0ZWQgV1RGIHN5bWJvbHMuCiogY29uZmlnLmg6IFR3ZWFr
IGZvciBnY2MuCgpXZWJLaXQvY2Y6IEZpeCBjb21waWxhdGlvbiBvbiB0aGUgTWFjLCBkb24ndCBy
ZS1kZWZpbmUgSlNfRVhQT1JUX1BSSVZBVEUgZW1wdHkgYnV0CnJlLXVzZSB0aGUgZGVmaW5pdGlv
biBmcm9tIFdlYktpdFByZWZpeC5oLgoKUGF0Y2ggYnkgU2ltb24gSGF1c21hbm4gPHNpbW9uLmhh
dXNtYW5uQG5va2lhLmNvbT4gb24gMjAwOS0wNy0yNApSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KCiogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwOgoKV2ViS2l0L21h
YzogRHVwbGljYXRlIHRoZSBKU19FWFBPUlRfUFJJVkFURSBkZWZpbml0aW9uIGZyb20KV2ViQ29y
ZS9jb25maWcuaCB0byBmaXggY29tcGlsYXRpb24gYWdhaW5zdCBKYXZhU2NyaXB0Q29yZSBhbmQK
V2ViQ29yZSBvbiB0aGUgTWFjLgoKUGF0Y2ggYnkgU2ltb24gSGF1c21hbm4gPHNpbW9uLmhhdXNt
YW5uQG5va2lhLmNvbT4gb24gMjAwOS0wNy0yNApSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
CiogV2ViS2l0UHJlZml4Lmg6CgpXZWJLaXQvd2luOiBGaXggY29tcGlsYXRpb24gYnkgZGVmaW5p
bmcgSlNfRVhQT1JUX1BSSVZBVEUgbGlrZSBpbgpKYXZhU2NyaXB0Q29yZS9jb25maWcuaCwgdG8g
Zml4IHN5bWJvbCBpbXBvcnQgZm9ybSBKYXZhU2NyaXB0Q29yZS4KClBhdGNoIGJ5IFNpbW9uIEhh
dXNtYW5uIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+IG9uIDIwMDktMDctMjQKUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCgoqIFdlYktpdERMTC5oOiBEZWZpbmUgSlNfRVhQT1JUREFUQS4K
CldlYktpdExpYnJhcmllczogRGlzYWJsZSBNU1ZDIHdhcm5pbmcgNDI1MSBhYm91dCB0aGUgbmVl
ZCB0byB0aGUgdHlwZXMgb2YgbWVtYmVyIHZhcmlhYmxlcwp0aGF0IGFyZW4ndCBleHBvcnRlZCB5
ZXQuIFdlIGRlY2lkZSB0byBpZ25vcmUgdGhpcyB3YXJuaW5nLCBhcyBmaXhpbmcgaXQKcmVxdWly
ZXMgZXhwbGljaXRseSBleHBvcnRpbmcgYWxsIHRlbXBsYXRlIGluc3RhbnRpYXRpb25zIHVzZWQg
aW4gZXhwb3J0ZWQKY2xhc3NlcycgbWVtYmVyIHZhcmlhYmxlcy4gQWxsIG9mIHRoYXQgZG9lc24n
dCBzZWVtIHRvIGJlIG5lY2Vzc2FyeSwgYXMKdGhlIHN1Y2Nlc3NmdWwgdXNlIG9mIC5kZWYgZmls
ZXMgd2l0aCBoYW5kLXBpY2tlZCBzeW1ib2xzIHByb292ZXMuCgpQYXRjaCBieSBTaW1vbiBIYXVz
bWFubiA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPiBvbiAyMDA5LTA3LTMwClJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgoKQXMgYSBzaWRlLW5vdGUgUXQgZm9yIGV4YW1wbGUgaGFzIHRoaXMg
cGFydGljdWxhciB3YXJuaW5nIGdsb2JhbGx5CmRpc2FibGVkICh2aWEgcHJhZ21hIGluIHFnbG9i
YWwuaCkgYW5kIGl0J3Mgd29ya2luZyBqdXN0IGZpbmUgZm9yCmV2ZXJ5b25lLgoKKiB3aW4vdG9v
bHMvdnNwcm9wcy9jb21tb24udnNwcm9wczoKCldlYktpdFRvb2xzOiBGaXggY29tcGlsYXRpb24g
b24gdGhlIE1hYyBhbmQgV2luZG93cy4KClBhdGNoIGJ5IFNpbW9uIEhhdXNtYW5uIDxzaW1vbi5o
YXVzbWFubkBub2tpYS5jb20+IG9uIDIwMDktMDctMjgKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCgoqIER1bXBSZW5kZXJUcmVlL2NvbmZpZy5oOiBNb3ZlIEZhc3RNYWxsb2MuaCBpbmNsdXNp
b24gdW50aWwgYWZ0ZXIgdGhlIGRlZmluaXRpb24gb2YKSlNfRVhQT1JUREFUQS4KKiBEdW1wUmVu
ZGVyVHJlZS9wdGhyZWFkcy9KYXZhU2NyaXB0VGhyZWFkaW5nUHRocmVhZHMuY3BwOiBJbmNsdWRl
IGNvbmZpZy5oIGZvciB0aGUKZXhwb3J0IG1hY3Jvcy4KKiBEdW1wUmVuZGVyVHJlZS93aW4vRFJU
RGVza3RvcE5vdGlmaWNhdGlvblByZXNlbnRlci5jcHA6IERpdHRvLgotLS0KIEphdmFTY3JpcHRD
b3JlL0FQSS9PcGFxdWVKU1N0cmluZy5oICAgICAgICAgICAgICAgIHwgICAgMiArLQogSmF2YVNj
cmlwdENvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDgzICsrKysr
KysrKysrKysrKysrKysrCiAuLi4vSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiAgICAgICB8ICAgIDIgKy0KIEphdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5oICAgIHwgICAgMiArLQogSmF2YVNjcmlwdENvcmUvY29uZmlnLmggICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfCAgIDE3ICsrKy0tCiBKYXZhU2NyaXB0Q29yZS9kZWJ1Z2dl
ci9EZWJ1Z2dlci5oICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIEphdmFTY3JpcHRDb3JlL2Rl
YnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmggICAgICAgIHwgICAgNiArLQogSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaCAgICAgICAgICAgfCAgICAyICstCiBKYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTm9kZXMuaCAgICAgICAgICAgICAgICAgICAgICB8ICAgIDYgKy0KIEph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCAgICAgICAgICAgICAgICAgICAgIHwgICAgMiAr
LQogSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmggICAgICAgICAgICAgICAgfCAg
ICAyICstCiBKYXZhU2NyaXB0Q29yZS9wY3JlL3BjcmUuaCAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgIDYgKy0KIEphdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGUuaCAgICAgICAgICAg
ICAgICAgIHwgICAgMiArLQogSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXIuaCAgICAg
ICAgICAgICAgICAgfCAgICA2ICstCiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuaCAg
ICAgICAgICAgICAgICAgICB8ICAgIDQgKy0KIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVh
bk9iamVjdC5oICAgICAgICAgICAgIHwgICAgMiArLQogSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
YWxsRGF0YS5oICAgICAgICAgICAgICAgICAgfCAgICA0ICstCiBKYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbGxlY3Rvci5oICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIEphdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tcGxldGlvbi5oICAgICAgICAgICAgICAgIHwgICAgNiArLQogSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db25zdHJ1Y3REYXRhLmggICAgICAgICAgICAgfCAgICA0ICstCiBKYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5jZS5oICAgICAgICAgICAgICB8ICAgIDIgKy0K
IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaCAgICAgICAgICAgICAgICAgICAgIHwgICAg
OCArLQogSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmggICAgICAg
fCAgICA4ICstCiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaCAgICAgICAgICAg
ICAgICB8ICAgIDIgKy0KIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGlu
Zy5oICAgICAgIHwgICAgNCArLQogSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0
aW9uLmggICAgICAgICAgfCAgICA0ICstCiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXku
aCAgICAgICAgICAgICAgICAgICB8ICAgMTAgKy0KIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNC
eXRlQXJyYXkuaCAgICAgICAgICAgICAgIHwgICAgMiArLQogSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NlbGwuaCAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCiBKYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb24uaCAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIEphdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmggICAgICAgICAgICAgIHwgICAgMiArLQogSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oICAgICAgICAgICAgfCAgICAyICstCiBK
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW1tZWRpYXRlLmggICAgICAgICAgICAgICB8ICAgIDIg
Ky0KIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmggICAgICAgICAgICAgICAgICAgIHwg
ICAgMiArLQogSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU051bWJlckNlbGwuaCAgICAgICAgICAg
ICAgfCAgIDE0ICsrLS0KIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCAgICAgICAg
ICAgICAgICAgIHwgICAgMiArLQogSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oICAg
ICAgICAgICAgICAgICAgfCAgIDM0ICsrKystLS0tCiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
VmFyaWFibGVPYmplY3QuaCAgICAgICAgICB8ICAgIDQgKy0KIEphdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNXcmFwcGVyT2JqZWN0LmggICAgICAgICAgIHwgICAgNCArLQogSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Mb29rdXAuaCAgICAgICAgICAgICAgICAgICAgfCAgICA0ICstCiBKYXZhU2NyaXB0
Q29yZS9ydW50aW1lL051bWJlck9iamVjdC5oICAgICAgICAgICAgICB8ICAgIDIgKy0KIEphdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmggICAgICAgICAgIHwgICAgMiArLQog
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oICAgICAgICAgfCAgICAy
ICstCiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3RvdHlwZUZ1bmN0aW9uLmggICAgICAgICB8
ICAgIDIgKy0KIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmggICAgICAgICAgICAgICAg
ICAgIHwgICAgMiArLQogSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaCAgICAg
ICAgICAgICAgfCAgICAyICstCiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5o
ICAgICAgICAgICAgICB8ICAgIDIgKy0KIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2Jq
ZWN0LmggICAgICAgICAgICAgIHwgICAgNCArLQogSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuaCAgICAgICAgICAgICAgICAgfCAgICAyICstCiBKYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1RpbWVvdXRDaGVja2VyLmggICAgICAgICAgICB8ICAgIDIgKy0KIEphdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVVN0cmluZy5oICAgICAgICAgICAgICAgICAgIHwgICAxNiArKy0tCiBKYXZhU2NyaXB0
Q29yZS93dGYvQnl0ZUFycmF5LmggICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIEphdmFT
Y3JpcHRDb3JlL3d0Zi9DdXJyZW50VGltZS5oICAgICAgICAgICAgICAgICAgIHwgICAgNSArLQog
SmF2YVNjcmlwdENvcmUvd3RmL0Zhc3RNYWxsb2MuaCAgICAgICAgICAgICAgICAgICAgfCAgIDE4
ICsrLS0KIEphdmFTY3JpcHRDb3JlL3d0Zi9NYWluVGhyZWFkLmggICAgICAgICAgICAgICAgICAg
IHwgICAgNiArLQogSmF2YVNjcmlwdENvcmUvd3RmL1JhbmRvbU51bWJlci5oICAgICAgICAgICAg
ICAgICAgfCAgICA0ICstCiBKYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nLmggICAgICAgICAg
ICAgICAgICAgICB8ICAgMjQgKysrLS0tCiBKYXZhU2NyaXB0Q29yZS93dGYvZHRvYS5oICAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgIDQgKy0KIEphdmFTY3JpcHRDb3JlL3d0Zi91bmljb2Rl
L1VURjguY3BwICAgICAgICAgICAgICAgIHwgICAgMSArCiBKYXZhU2NyaXB0Q29yZS93dGYvdW5p
Y29kZS9VVEY4LmggICAgICAgICAgICAgICAgICB8ICAgMTIgKystLQogSmF2YVNjcmlwdEdsdWUv
Y29uZmlnLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCiBXZWJDb3JlL0No
YW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTMgKysrCiBXZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1FUTW92aWVXaW4udmNwcm9qICAgICAgICAgICB8ICAgIDYgKy0K
IFdlYkNvcmUvY29uZmlnLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAx
NyArKystLQogV2ViS2l0L2NmL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgICA5ICsrCiBXZWJLaXQvY2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50
Q0YuY3BwICB8ICAgIDYgKy0KIFdlYktpdC9tYWMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgICAxMCArKysKIFdlYktpdC9tYWMvV2ViS2l0UHJlZml4LmggICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICAxNSArKystCiBXZWJLaXQvd2luL0NoYW5nZUxvZyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDkgKysKIFdlYktpdC93aW4vV2ViS2l0RExM
LmggICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMCArKysKIFdlYktpdExpYnJhcmll
cy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxNiArKysrCiBXZWJLaXRM
aWJyYXJpZXMvd2luL3Rvb2xzL3ZzcHJvcHMvY29tbW9uLnZzcHJvcHMgICB8ICAgIDIgKy0KIFdl
YktpdFRvb2xzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMiAr
KysKIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2NvbmZpZy5oICAgICAgICAgICAgICAgIHwg
ICAxMiArKy0tCiAuLi4vcHRocmVhZHMvSmF2YVNjcmlwdFRocmVhZGluZ1B0aHJlYWRzLmNwcCAg
ICAgICB8ICAgIDMgKy0KIC4uLi93aW4vRFJURGVza3RvcE5vdGlmaWNhdGlvblByZXNlbnRlci5j
cHAgICAgICAgIHwgICAgMSArCiA3NiBmaWxlcyBjaGFuZ2VkLCAzNTYgaW5zZXJ0aW9ucygrKSwg
MTc3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0FQSS9PcGFxdWVK
U1N0cmluZy5oIGIvSmF2YVNjcmlwdENvcmUvQVBJL09wYXF1ZUpTU3RyaW5nLmgKaW5kZXggNDcz
YzgxNS4uMDQxMTc0OCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvQVBJL09wYXF1ZUpTU3Ry
aW5nLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvQVBJL09wYXF1ZUpTU3RyaW5nLmgKQEAgLTMzLDcg
KzMzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNHbG9iYWxEYXRhOwogfQogCi1z
dHJ1Y3QgT3BhcXVlSlNTdHJpbmcgOiBwdWJsaWMgVGhyZWFkU2FmZVNoYXJlZDxPcGFxdWVKU1N0
cmluZz4geworc3RydWN0IEpTX0VYUE9SVF9QUklWQVRFIE9wYXF1ZUpTU3RyaW5nIDogcHVibGlj
IFRocmVhZFNhZmVTaGFyZWQ8T3BhcXVlSlNTdHJpbmc+IHsKIAogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPE9wYXF1ZUpTU3RyaW5nPiBjcmVhdGUoKSAvLyBudWxsCiAgICAgewpkaWZmIC0tZ2l0IGEv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4
IGE4MzE4MTEuLjEzZjJjZWYgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwor
KysgYi9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4NiBAQAorMjAwOS0wNy0y
NCAgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4gIDxrZW5uZXRoLmNocmlzdGlhbnNlbkBvcGVu
Ym9zc2Eub3JnPiwgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBpdCBw
b3NzaWJsZSB0byBidWlsZCBKYXZhU2NyaXB0Q29yZSBhcyBzaGFyZWQgbGlicmFyeSB3aXRob3V0
CisgICAgICAgIGV4cG9ydGVkIHN5bWJvbCBsaXN0cy4KKworICAgICAgICBSZW5hbWVkIEpTX0VY
UE9SVERBVEEgdG8gSlNfRVhQT1JUX1BSSVZBVEUsIGZvciBjbGFyaXR5LgorCisgICAgICAgIEFk
ZGVkIEpTX0VYUE9SVF9QUklWQVRFIHRvIGFsbCB0aGUgY2xhc3NlcyB0aGF0IGFyZSBhY2Nlc3Nl
ZCBmcm9tIFdlYkNvcmUvV2ViS2l0LAorICAgICAgICB0byBlbnN1cmUgdGhlaXIgdmlzaWJpbGl0
eS4KKworICAgICAgICAqIEFQSS9PcGFxdWVKU1N0cmluZy5oOiBVc2UgSlNfRVhQT1JUX1BSSVZB
VEUuCisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjcHJvajogRGlzYWJsZQorICAgICAgICBNU1ZDIHdhcm5pbmcgYWJvdXQgaW5j
b25zaXN0ZW50IGxpbmthZ2UuCisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmNwcm9qL2pzYy9q
c2MudmNwcm9qOiBEaXR0by4KKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOiBJbmNsdWRlIFByb2ZpbGVHZW5lcmF0b3IuaAorICAgICAgICBpbiB0aGUg
cHJpdmF0ZSBoZWFkZXJzLCBhcyBpdCBpcyBpbmNsdWRlZCBmcm9tIFByb2ZpbGVyLmgsIHdoaWNo
IGlzCisgICAgICAgIGFsc28gaW5jbHVkZWQgZnJvbSBXZWJDb3JlLgorICAgICAgICAqIGJ5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOiBVc2UgSlNfRVhQT1JUX1BSSVZBVEUuCisgICAg
ICAgICogY29uZmlnLmg6IERlZmluZSBKU19FWFBPUlRfUFJJVkFURSBhY2NvcmRpbmdseSB3aXRo
IGdjYzsgRGVmaW5lIGl0IHRvCisgICAgICAgIGRsbGltcG9ydCB3aXRoIE1TVkMuCisgICAgICAg
ICogZGVidWdnZXIvRGVidWdnZXIuaDogVXNlIEpTX0VYUE9SVF9QUklWQVRFLgorICAgICAgICAq
IGRlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmg6IERpdHRvLgorICAgICAgICAqIGludGVycHJl
dGVyL0ludGVycHJldGVyLmg6IERpdHRvLgorICAgICAgICAqIGpzYy5wcm86IExpbmsgYWdhaW5z
dCBKU0MgYXMgc2hhcmVkIGxpYnJhcnkuCisgICAgICAgICogcGFyc2VyL05vZGVzLmg6IFVzZSBK
U19FWFBPUlRfUFJJVkFURS4KKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6IERpdHRvLgorICAg
ICAgICAqIHBhcnNlci9QYXJzZXJBcmVuYS5oOiBEaXR0by4KKyAgICAgICAgKiBwY3JlL3BjcmUu
aDogRGl0dG8uCisgICAgICAgICogcHJvZmlsZXIvUHJvZmlsZS5oOiBVc2UgSlNfRVhQT1JUX1BS
SVZBVEUuCisgICAgICAgICogcHJvZmlsZXIvUHJvZmlsZXIuaDogVXNlIEpTX0VYUE9SVF9QUklW
QVRFIGFuZCByZXBsYWNlIFByb2ZpbGVHZW5lcmF0b3IKKyAgICAgICAgZm9yd2FyZCBkZWNsYXJh
dGlvbiB3aXRoIGluY2x1c2lvbiB0byBmaXggTVNWQyBjb21waWxhdGlvbiwgd2hpY2ggcmVxdWly
ZXMKKyAgICAgICAgaXRzIHZpc2libGl0eSB3aGVuIG1hcmtpbmcgUHJvZmlsZXIgd2l0aCBkbGxl
eHBvcnQuCisgICAgICAgICogcnVudGltZS9BcmdMaXN0Lmg6IFVzZSBKU19FWFBPUlRfUFJJVkFU
RS4KKyAgICAgICAgKiBydW50aW1lL0Jvb2xlYW5PYmplY3QuaDogRGl0dG8uCisgICAgICAgICog
cnVudGltZS9DYWxsRGF0YS5oOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL0NvbGxlY3Rvci5o
OiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL0NvbXBsZXRpb24uaDogRGl0dG8uCisgICAgICAg
ICogcnVudGltZS9Db25zdHJ1Y3REYXRhLmg6IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvRGF0
ZUluc3RhbmNlLmg6IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3IuaDogRGl0dG8uCisg
ICAgICAgICogcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmg6IERpdHRvLgorICAgICAgICAq
IHJ1bnRpbWUvSWRlbnRpZmllci5oOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL0luaXRpYWxp
emVUaHJlYWRpbmcuaDogRGl0dG8uCisgICAgICAgICogcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9u
Lmg6IE1vdmVkIEpTX0VYUE9SVF9QUklWQVRFIGZyb20gSW50ZXJuYWxGdW5jdGlvbjo6aW5mbyB0
bworICAgICAgICBJbnRlcm5hbEZ1bmN0aW9uLCB0byBleHBvcnQgdGhlIGVudGlyZSBjbGFzcy4K
KyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuaDogVXNlIEpTX0VYUE9SVF9QUklWQVRFLgorICAg
ICAgICAqIHJ1bnRpbWUvSlNCeXRlQXJyYXkuaDogRGl0dG8uCisgICAgICAgICogcnVudGltZS9K
U0NlbGwuaDogRGl0dG8uCisgICAgICAgICogcnVudGltZS9KU0dsb2JhbERhdGEuaDogRGl0dG8u
CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOiBEaXR0by4KKyAgICAgICAgKiBy
dW50aW1lL0pTSW1tZWRpYXRlLmg6IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvSlNMb2NrLmg6
IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvSlNOdW1iZXJDZWxsLmg6IERpdHRvLgorICAgICAg
ICAqIHJ1bnRpbWUvSlNPYmplY3QuaDogRGl0dG8uCisgICAgICAgICogcnVudGltZS9KU1N0cmlu
Zy5oOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaDogRGl0dG8u
CisgICAgICAgICogcnVudGltZS9KU1dyYXBwZXJPYmplY3QuaDogRGl0dG8uCisgICAgICAgICog
cnVudGltZS9Mb29rdXAuaDogRGl0dG8uCisgICAgICAgICogcnVudGltZS9OdW1iZXJPYmplY3Qu
aDogRGl0dG8uCisgICAgICAgICogcnVudGltZS9PYmplY3RQcm90b3R5cGUuaDogRGl0dG8uCisg
ICAgICAgICogcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oOiBEaXR0by4KKyAgICAgICAgKiBy
dW50aW1lL1Byb3RvdHlwZUZ1bmN0aW9uLmg6IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvUmVn
RXhwLmg6IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0Lmg6IERpdHRvLgor
ICAgICAgICAqIHJ1bnRpbWUvU21hbGxTdHJpbmdzLmg6IERpdHRvLgorICAgICAgICAqIHJ1bnRp
bWUvU3RyaW5nT2JqZWN0Lmg6IE1vdmVkIEpTX0VYUE9SVF9QUklWQVRFIGZyb20gU3RyaW5nT2Jq
ZWN0OjppbmZvIHRvIFN0cmluZ09iamVjdCwgdG8KKyAgICAgICAgZXhwb3J0IHRoZSBlbnRpcmUg
Y2xhc3MuCisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuaDogVXNlIEpTX0VYUE9SVF9QUklW
QVRFLgorICAgICAgICAqIHJ1bnRpbWUvVGltZW91dENoZWNrZXIuaDogRGl0dG8uCisgICAgICAg
ICogcnVudGltZS9VU3RyaW5nLmg6IFJlcGxhY2VkIHNpbmdsZSBleHBvcnQgb2YgVVN0cmluZzo6
UmVwOjp7bnVsbCxlbXB0eX1CYXNlU3RyaW5nIHdpdGgKKyAgICAgICAgZXhwb3J0IG9mIGVudGly
ZSBjbGFzcy4gQWxzbyBleHBvcnQgYSBmZXcgaGVscGVyIGZ1bmN0aW9ucy4KKyAgICAgICAgKiB3
dGYvQnl0ZUFycmF5Lmg6IFVzZSBKU19FWFBPUlRfUFJJVkFURS4KKyAgICAgICAgKiB3dGYvQ3Vy
cmVudFRpbWUuaDogRGl0dG8uCisgICAgICAgICogd3RmL0Zhc3RNYWxsb2MuaDogRGl0dG8uCisg
ICAgICAgICogd3RmL01haW5UaHJlYWQuaDogRGl0dG8uCisgICAgICAgICogd3RmL1JhbmRvbU51
bWJlci5oOiBEaXR0by4KKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nLmg6IERpdHRvLgorICAgICAg
ICAqIHd0Zi9kdG9hLmg6IERpdHRvLgorICAgICAgICAqIHd0Zi91bmljb2RlL1VURjguaDogRGl0
dG8uCisgICAgICAgICogd3RmL3VuaWNvZGUvVVRGOC5jcHA6IEluY2x1ZGUgY29uZmlnLmggaW4g
b3JkZXIgdG8gY29tcGlsZSB3aXRoIE1TVkMuCisKIDIwMDktMDgtMTQgIEdhYm9yIExva2kgIDxs
b2tpQGluZi51LXN6ZWdlZC5odT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFu
bi4KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDI0MjY0YzIuLmFkYjc1NDcgMTAwNjQ0Ci0tLSBhL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMTc0LDcgKzE3NCw3IEBACiAJCTk1QUI4MzQyMERBNDMyMjUwMEJDODNGMyAvKiBQcm9maWxl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NUFC
ODMyRTBEQTQyQ0FEMDBCQzgzRjMgLyogUHJvZmlsZXIuY3BwICovOyB9OwogCQk5NUFCODM1NjBE
QTQzQzMwMDBCQzgzRjMgLyogUHJvZmlsZU5vZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTVBQjgzNTQwREE0M0I0NDAwQkM4M0YzIC8qIFByb2Zp
bGVOb2RlLmNwcCAqLzsgfTsKIAkJOTVDRDQ1NzYwRTFDNEZERDAwODUzNThFIC8qIFByb2ZpbGVH
ZW5lcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTVDRDQ1NzQwRTFDNEZERDAwODUzNThFIC8qIFByb2ZpbGVHZW5lcmF0b3IuY3BwICovOyB9
OwotCQk5NUNENDU3NzBFMUM0RkREMDA4NTM1OEUgLyogUHJvZmlsZUdlbmVyYXRvci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTVDRDQ1NzUwRTFDNEZE
RDAwODUzNThFIC8qIFByb2ZpbGVHZW5lcmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9ICgpOyB9OyB9OworCQk5NUNENDU3NzBFMUM0RkREMDA4NTM1OEUgLyogUHJvZmlsZUdlbmVy
YXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTVD
RDQ1NzUwRTFDNEZERDAwODUzNThFIC8qIFByb2ZpbGVHZW5lcmF0b3IuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5NUUzQkMwNTBFMUFFNjgyMDBC
MkQxQzEgLyogQ2FsbElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDk1RTNCQzA0MEUxQUU2ODIwMEIyRDFDMSAvKiBDYWxsSWRlbnRpZmll
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk1
RjZFNjk1MEU1QjVGOTcwMDkxRTg2MCAvKiBKU1Byb2ZpbGVyUHJpdmF0ZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NTk4OEJBOTBFNDc3QkVDMDBE
MjhENEQgLyogSlNQcm9maWxlclByaXZhdGUuY3BwICovOyB9OwogCQk5NjAwOTdBNjBFQkFCQjU4
MDA3QTcyOTcgLyogTGFiZWxTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTYwMDk3QTUwRUJBQkI1ODAwN0E3Mjk3IC8qIExhYmVsU2NvcGUuaCAq
LzsgfTsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5oIGIvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmgKaW5kZXggNzIyMzdmOS4uOWNmZDRlZiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTYxLDcgKzYxLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIEZpbmFsbHlDb250ZXh0IGZpbmFsbHlDb250ZXh0OwogICAgIH07CiAKLSAg
ICBjbGFzcyBCeXRlY29kZUdlbmVyYXRvciA6IHB1YmxpYyBGYXN0QWxsb2NCYXNlIHsKKyAgICBj
bGFzcyBKU19FWFBPUlRfUFJJVkFURSBCeXRlY29kZUdlbmVyYXRvciA6IHB1YmxpYyBGYXN0QWxs
b2NCYXNlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgRGVjbGFyYXRpb25TdGFja3M6
OlZhclN0YWNrIFZhclN0YWNrOwogICAgICAgICB0eXBlZGVmIERlY2xhcmF0aW9uU3RhY2tzOjpG
dW5jdGlvblN0YWNrIEZ1bmN0aW9uU3RhY2s7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9j
b25maWcuaCBiL0phdmFTY3JpcHRDb3JlL2NvbmZpZy5oCmluZGV4IDY2ODE3NjEuLmVkZWM2NGQg
MTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2NvbmZpZy5oCisrKyBiL0phdmFTY3JpcHRDb3Jl
L2NvbmZpZy5oCkBAIC0yNSwxNCArMjUsMTcgQEAKIAogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5o
PgogCi0jaWYgUExBVEZPUk0oV0lOX09TKSAmJiAhZGVmaW5lZChCVUlMRElOR19XWF9fKSAmJiAh
Q09NUElMRVIoR0NDKQotI2lmIGRlZmluZWQoQlVJTERJTkdfSmF2YVNjcmlwdENvcmUpIHx8IGRl
ZmluZWQoQlVJTERJTkdfV1RGKQotI2RlZmluZSBKU19FWFBPUlREQVRBIF9fZGVjbHNwZWMoZGxs
ZXhwb3J0KQorI3VuZGVmIEpTX0VYUE9SVF9QUklWQVRFCisjaWYgQ09NUElMRVIoR0NDKQorICAg
ICNkZWZpbmUgSlNfRVhQT1JUX1BSSVZBVEUgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVm
YXVsdCIpKSkKKyNlbGlmIFBMQVRGT1JNKFdJTl9PUykgJiYgIWRlZmluZWQoQlVJTERJTkdfV1hf
XykKKyAgICAjaWYgZGVmaW5lZChCVUlMRElOR19KYXZhU2NyaXB0Q29yZSkgfHwgZGVmaW5lZChC
VUlMRElOR19XVEYpCisgICAgICAgICNkZWZpbmUgSlNfRVhQT1JUX1BSSVZBVEUgX19kZWNsc3Bl
YyhkbGxleHBvcnQpCisgICAgI2Vsc2UKKyAgICAgICAgI2RlZmluZSBKU19FWFBPUlRfUFJJVkFU
RSBfX2RlY2xzcGVjKGRsbGltcG9ydCkKKyAgICAjZW5kaWYKICNlbHNlCi0jZGVmaW5lIEpTX0VY
UE9SVERBVEEgX19kZWNsc3BlYyhkbGxpbXBvcnQpCi0jZW5kaWYKLSNlbHNlCi0jZGVmaW5lIEpT
X0VYUE9SVERBVEEKKyAgICAjZGVmaW5lIEpTX0VYUE9SVF9QUklWQVRFCiAjZW5kaWYKIAogI2lm
IFBMQVRGT1JNKFdJTl9PUykKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0Rl
YnVnZ2VyLmggYi9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCmluZGV4IDNlZTk3
NjcuLmE3ZWNkODIgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2Vy
LmgKKysrIGIvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuaApAQCAtMzQsNyArMzQs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBTb3VyY2VDb2RlOwogICAgIGNsYXNzIFVT
dHJpbmc7CiAKLSAgICBjbGFzcyBEZWJ1Z2dlciB7CisgICAgY2xhc3MgSlNfRVhQT1JUX1BSSVZB
VEUgRGVidWdnZXIgewogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+RGVidWdnZXIoKTsK
IApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUu
aCBiL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmgKaW5kZXggOWQz
NzdlZi4uMThlMTA4ZSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdn
ZXJDYWxsRnJhbWUuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxG
cmFtZS5oCkBAIC0yNSwxNSArMjUsMTUgQEAKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgogICogVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwotIAorCiAjaWZuZGVmIERlYnVnZ2VyQ2FsbEZyYW1lX2gKICNkZWZpbmUgRGVidWdn
ZXJDYWxsRnJhbWVfaAogCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAKIG5hbWVzcGFjZSBKU0Mg
ewotICAgIAotICAgIGNsYXNzIERlYnVnZ2VyQ2FsbEZyYW1lIHsKKworICAgIGNsYXNzIEpTX0VY
UE9SVF9QUklWQVRFIERlYnVnZ2VyQ2FsbEZyYW1lIHsKICAgICBwdWJsaWM6CiAgICAgICAgIGVu
dW0gVHlwZSB7IFByb2dyYW1UeXBlLCBGdW5jdGlvblR5cGUgfTsKIApkaWZmIC0tZ2l0IGEvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaCBiL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmgKaW5kZXggNTE5YzUwOC4uM2ZiOGQ0OSAxMDA2NDQKLS0t
IGEvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAorKysgYi9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCkBAIC02Niw3ICs2Niw3IEBAIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgZW51bSB7IE1heE1haW5UaHJlYWRSZWVudHJ5RGVwdGggPSAyNTYs
IE1heFNlY29uZGFyeVRocmVhZFJlZW50cnlEZXB0aCA9IDMyIH07CiAKLSAgICBjbGFzcyBJbnRl
cnByZXRlciA6IHB1YmxpYyBGYXN0QWxsb2NCYXNlIHsKKyAgICBjbGFzcyBKU19FWFBPUlRfUFJJ
VkFURSBJbnRlcnByZXRlciA6IHB1YmxpYyBGYXN0QWxsb2NCYXNlIHsKICAgICAgICAgZnJpZW5k
IGNsYXNzIEpJVDsKICAgICAgICAgZnJpZW5kIGNsYXNzIENhY2hlZENhbGw7CiAgICAgcHVibGlj
OgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmggYi9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCAzYjdhMmI0Li43Y2MzM2FiIDEwMDY0NAotLS0gYS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
Tm9kZXMuaApAQCAtMTU5LDcgKzE1OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBpbnQg
bV9saW5lOwogICAgIH07CiAKLSAgICBjbGFzcyBFeHByZXNzaW9uTm9kZSA6IHB1YmxpYyBOb2Rl
IHsKKyAgICBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBFeHByZXNzaW9uTm9kZSA6IHB1YmxpYyBO
b2RlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKEpTR2xvYmFsRGF0YSos
IFJlc3VsdFR5cGUgPSBSZXN1bHRUeXBlOjp1bmtub3duVHlwZSgpKTsKIApAQCAtMTg3LDcgKzE4
Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZXN1bHRUeXBlIG1fcmVzdWx0VHlwZTsK
ICAgICB9OwogCi0gICAgY2xhc3MgU3RhdGVtZW50Tm9kZSA6IHB1YmxpYyBOb2RlIHsKKyAgICBj
bGFzcyBKU19FWFBPUlRfUFJJVkFURSBTdGF0ZW1lbnROb2RlIDogcHVibGljIE5vZGUgewogICAg
IHB1YmxpYzoKICAgICAgICAgU3RhdGVtZW50Tm9kZShKU0dsb2JhbERhdGEqKTsKIApAQCAtMTU0
MCw3ICsxNTQwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE93blB0cjxFdmFsQ29kZUJs
b2NrPiBtX2NvZGU7CiAgICAgfTsKIAotICAgIGNsYXNzIEZ1bmN0aW9uQm9keU5vZGUgOiBwdWJs
aWMgU2NvcGVOb2RlIHsKKyAgICBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBGdW5jdGlvbkJvZHlO
b2RlIDogcHVibGljIFNjb3BlTm9kZSB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAg
cHVibGljOgogI2lmIEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmggYi9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggMzczZGMw
MC4uYmY1ODRlNiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisr
KyBiL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtMzksNyArMzksNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgUGFyc2VyQXJl
bmFEYXRhIDogUGFyc2VyQXJlbmFEZWxldGFibGUgeyBUIGRhdGE7IH07CiAKLSAgICBjbGFzcyBQ
YXJzZXIgOiBwdWJsaWMgTm9uY29weWFibGUgeworICAgIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRF
IFBhcnNlciA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiAgICAgcHVibGljOgogICAgICAgICB0ZW1w
bGF0ZSA8Y2xhc3MgUGFyc2VkTm9kZT4gUGFzc1JlZlB0cjxQYXJzZWROb2RlPiBwYXJzZShFeGVj
U3RhdGUqLCBEZWJ1Z2dlciosIGNvbnN0IFNvdXJjZUNvZGUmLCBpbnQqIGVyckxpbmUgPSAwLCBV
U3RyaW5nKiBlcnJNc2cgPSAwKTsKICAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFBhcnNlZE5vZGU+
IFBhc3NSZWZQdHI8UGFyc2VkTm9kZT4gcmVwYXJzZShKU0dsb2JhbERhdGEqLCBQYXJzZWROb2Rl
Kik7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaCBiL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5oCmluZGV4IDY2Yzg1MjkuLjYyNDNkZjQg
MTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5oCisrKyBiL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIGNsYXNzIFBhcnNlckFyZW5hRGVsZXRhYmxlOwogICAgIGNsYXNzIFBh
cnNlckFyZW5hUmVmQ291bnRlZDsKIAotICAgIGNsYXNzIFBhcnNlckFyZW5hIHsKKyAgICBjbGFz
cyBKU19FWFBPUlRfUFJJVkFURSBQYXJzZXJBcmVuYSB7CiAgICAgcHVibGljOgogICAgICAgICB2
b2lkIHN3YXAoUGFyc2VyQXJlbmEmIG90aGVyQXJlbmEpCiAgICAgICAgIHsKZGlmZiAtLWdpdCBh
L0phdmFTY3JpcHRDb3JlL3BjcmUvcGNyZS5oIGIvSmF2YVNjcmlwdENvcmUvcGNyZS9wY3JlLmgK
aW5kZXggNTUwNDRmZC4uMWRhYTIzNCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcGNyZS9w
Y3JlLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcGNyZS9wY3JlLmgKQEAgLTU1LDE0ICs1NSwxNCBA
QCBjb25zdCBpbnQgSlNSZWdFeHBFcnJvckhpdExpbWl0ID0gLTI7CiBjb25zdCBpbnQgSlNSZWdF
eHBFcnJvck5vTWVtb3J5ID0gLTM7CiBjb25zdCBpbnQgSlNSZWdFeHBFcnJvckludGVybmFsID0g
LTQ7CiAKLUpTUmVnRXhwKiBqc1JlZ0V4cENvbXBpbGUoY29uc3QgVUNoYXIqIHBhdHRlcm4sIGlu
dCBwYXR0ZXJuTGVuZ3RoLAorSlNfRVhQT1JUX1BSSVZBVEUgSlNSZWdFeHAqIGpzUmVnRXhwQ29t
cGlsZShjb25zdCBVQ2hhciogcGF0dGVybiwgaW50IHBhdHRlcm5MZW5ndGgsCiAgICAgSlNSZWdF
eHBJZ25vcmVDYXNlT3B0aW9uLCBKU1JlZ0V4cE11bHRpbGluZU9wdGlvbiwKICAgICB1bnNpZ25l
ZCogbnVtU3VicGF0dGVybnMsIGNvbnN0IGNoYXIqKiBlcnJvck1lc3NhZ2UpOwogCi1pbnQganNS
ZWdFeHBFeGVjdXRlKGNvbnN0IEpTUmVnRXhwKiwKK0pTX0VYUE9SVF9QUklWQVRFIGludCBqc1Jl
Z0V4cEV4ZWN1dGUoY29uc3QgSlNSZWdFeHAqLAogICAgIGNvbnN0IFVDaGFyKiBzdWJqZWN0LCBp
bnQgc3ViamVjdExlbmd0aCwgaW50IHN0YXJ0T2Zmc2V0LAogICAgIGludCogb2Zmc2V0c1ZlY3Rv
ciwgaW50IG9mZnNldHNWZWN0b3JMZW5ndGgpOwogCi12b2lkIGpzUmVnRXhwRnJlZShKU1JlZ0V4
cCopOworSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBqc1JlZ0V4cEZyZWUoSlNSZWdFeHAqKTsKIAog
I2VuZGlmCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlLmggYi9K
YXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlLmgKaW5kZXggNmJmMjlmNy4uOGRhYmE4YSAx
MDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZS5oCisrKyBiL0phdmFT
Y3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGUuaApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAotICAgIGNsYXNzIFByb2ZpbGUgOiBwdWJsaWMgUmVmQ291bnRlZDxQcm9maWxl
PiB7CisgICAgY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgUHJvZmlsZSA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFByb2ZpbGU+IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBy
b2ZpbGU+IGNyZWF0ZShjb25zdCBVU3RyaW5nJiB0aXRsZSwgdW5zaWduZWQgdWlkKTsKICAgICAg
ICAgdmlydHVhbCB+UHJvZmlsZSgpOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcHJvZmls
ZXIvUHJvZmlsZXIuaCBiL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyLmgKaW5kZXgg
MjE2MjFiZi4uNWMyYjgwMCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJv
ZmlsZXIuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlci5oCkBAIC0zMCw2
ICszMCw3IEBACiAjZGVmaW5lIFByb2ZpbGVyX2gKIAogI2luY2x1ZGUgIlByb2ZpbGUuaCIKKyNp
bmNsdWRlICJQcm9maWxlR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNDAs
MTggKzQxLDE3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTR2xvYmFsRGF0YTsKICAg
ICBjbGFzcyBKU09iamVjdDsKICAgICBjbGFzcyBKU1ZhbHVlOwotICAgIGNsYXNzIFByb2ZpbGVH
ZW5lcmF0b3I7CiAgICAgY2xhc3MgVVN0cmluZzsKICAgICBzdHJ1Y3QgQ2FsbElkZW50aWZpZXI7
ICAgIAogCi0gICAgY2xhc3MgUHJvZmlsZXIgOiBwdWJsaWMgRmFzdEFsbG9jQmFzZSB7CisgICAg
Y2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgUHJvZmlsZXIgOiBwdWJsaWMgRmFzdEFsbG9jQmFzZSB7
CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgUHJvZmlsZXIqKiBlbmFibGVkUHJvZmlsZXJS
ZWZlcmVuY2UoKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gJnNfc2hhcmVkRW5hYmxl
ZFByb2ZpbGVyUmVmZXJlbmNlOwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIFByb2ZpbGVy
KiBwcm9maWxlcigpOyAKKyAgICAgICAgc3RhdGljIFByb2ZpbGVyKiBwcm9maWxlcigpOwogICAg
ICAgICBzdGF0aWMgQ2FsbElkZW50aWZpZXIgY3JlYXRlQ2FsbElkZW50aWZpZXIoSlNHbG9iYWxE
YXRhKiwgSlNWYWx1ZSwgY29uc3QgVVN0cmluZyYgc291cmNlVVJMLCBpbnQgbGluZU51bWJlcik7
CiAKICAgICAgICAgdm9pZCBzdGFydFByb2ZpbGluZyhFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5n
JiB0aXRsZSk7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuaCBi
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5oCmluZGV4IGFiNTAxYjYuLjg4Y2JkMjYg
MTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5oCisrKyBiL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5oCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFj
ZSBKU0MgewogICAgIAotICAgIGNsYXNzIE1hcmtlZEFyZ3VtZW50QnVmZmVyIDogcHVibGljIE5v
bmNvcHlhYmxlIHsKKyAgICBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBNYXJrZWRBcmd1bWVudEJ1
ZmZlciA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIGlubGluZUNhcGFjaXR5ID0gODsKICAgICAgICAgdHlwZWRlZiBWZWN0
b3I8UmVnaXN0ZXIsIGlubGluZUNhcGFjaXR5PiBWZWN0b3JUeXBlOwpAQCAtMTcwLDcgKzE3MCw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiwg
c2l6ZV90KTsKICAgICB9OwogCi0gICAgY2xhc3MgQXJnTGlzdCB7CisgICAgY2xhc3MgSlNfRVhQ
T1JUX1BSSVZBVEUgQXJnTGlzdCB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAgcHVi
bGljOgogICAgICAgICB0eXBlZGVmIEpTVmFsdWUqIGl0ZXJhdG9yOwpkaWZmIC0tZ2l0IGEvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuT2JqZWN0LmggYi9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Jvb2xlYW5PYmplY3QuaAppbmRleCAxMzYxZTQ2Li4zNDQ5N2EzIDEwMDY0NAotLS0gYS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5PYmplY3QuaAorKysgYi9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Jvb2xlYW5PYmplY3QuaApAQCAtMjUsNyArMjUsNyBAQAogCiBuYW1lc3BhY2Ug
SlNDIHsKIAotICAgIGNsYXNzIEJvb2xlYW5PYmplY3QgOiBwdWJsaWMgSlNXcmFwcGVyT2JqZWN0
IHsKKyAgICBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBCb29sZWFuT2JqZWN0IDogcHVibGljIEpT
V3JhcHBlck9iamVjdCB7CiAgICAgcHVibGljOgogICAgICAgICBleHBsaWNpdCBCb29sZWFuT2Jq
ZWN0KFBhc3NSZWZQdHI8U3RydWN0dXJlPik7CiAKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ2FsbERhdGEuaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FsbERhdGEuaApp
bmRleCBkNWIwMTcyLi4zZGMxY2ZhIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NhbGxEYXRhLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWxsRGF0YS5oCkBAIC00
OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgdHlwZWRlZiBKU1ZhbHVlIChKU0Nf
SE9TVF9DQUxMICpOYXRpdmVGdW5jdGlvbikoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBKU1ZhbHVl
IHRoaXNWYWx1ZSwgY29uc3QgQXJnTGlzdCYpOwogCi0gICAgdW5pb24gQ2FsbERhdGEgeworICAg
IHVuaW9uIEpTX0VYUE9SVF9QUklWQVRFIENhbGxEYXRhIHsKICAgICAgICAgc3RydWN0IHsKICAg
ICAgICAgICAgIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uOwogICAgICAgICB9IG5hdGl2ZTsKQEAg
LTU4LDcgKzU4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0ganM7CiAgICAgfTsKIAot
ICAgIEpTVmFsdWUgY2FsbChFeGVjU3RhdGUqLCBKU1ZhbHVlIGZ1bmN0aW9uT2JqZWN0LCBDYWxs
VHlwZSwgY29uc3QgQ2FsbERhdGEmLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgQXJnTGlzdCYp
OworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgY2FsbChFeGVjU3RhdGUqLCBKU1ZhbHVl
IGZ1bmN0aW9uT2JqZWN0LCBDYWxsVHlwZSwgY29uc3QgQ2FsbERhdGEmLCBKU1ZhbHVlIHRoaXNW
YWx1ZSwgY29uc3QgQXJnTGlzdCYpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0
IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2xsZWN0b3IuaCBiL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29sbGVjdG9yLmgKaW5kZXggODc3Zjg5MC4uZDc2ZmI1MSAxMDA2NDQKLS0tIGEvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db2xsZWN0b3IuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbGxlY3Rvci5oCkBAIC02NCw3ICs2NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBPcGVyYXRpb25JblByb2dyZXNzIG9wZXJhdGlvbkluUHJvZ3Jlc3M7CiAgICAgfTsKIAotICAg
IGNsYXNzIEhlYXAgOiBwdWJsaWMgTm9uY29weWFibGUgeworICAgIGNsYXNzIEpTX0VYUE9SVF9Q
UklWQVRFIEhlYXAgOiBwdWJsaWMgTm9uY29weWFibGUgewogICAgIHB1YmxpYzoKICAgICAgICAg
Y2xhc3MgVGhyZWFkOwogICAgICAgICB0eXBlZGVmIENvbGxlY3RvckhlYXBJdGVyYXRvcjxQcmlt
YXJ5SGVhcD4gaXRlcmF0b3I7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bXBsZXRpb24uaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5oCmluZGV4IDQx
YzlhNjQuLjFlZDA3NzUgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxl
dGlvbi5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5oCkBAIC0zNyw3
ICszNyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAqIENvbXBsZXRpb24gb2JqZWN0cyBhcmUg
dXNlZCB0byBjb252ZXkgdGhlIHJldHVybiBzdGF0dXMgYW5kIHZhbHVlCiAgICAgICogZnJvbSBm
dW5jdGlvbnMuCiAgICAgICovCi0gICAgY2xhc3MgQ29tcGxldGlvbiB7CisgICAgY2xhc3MgSlNf
RVhQT1JUX1BSSVZBVEUgQ29tcGxldGlvbiB7CiAgICAgcHVibGljOgogICAgICAgICBDb21wbGV0
aW9uKENvbXBsVHlwZSB0eXBlID0gTm9ybWFsLCBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZSgpKQog
ICAgICAgICAgICAgOiBtX3R5cGUodHlwZSkKQEAgLTU1LDggKzU1LDggQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIEpTVmFsdWUgbV92YWx1ZTsKICAgICB9OwogCi0gICAgQ29tcGxldGlvbiBj
aGVja1N5bnRheChFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2RlJik7Ci0gICAgQ29tcGxldGlv
biBldmFsdWF0ZShFeGVjU3RhdGUqLCBTY29wZUNoYWluJiwgY29uc3QgU291cmNlQ29kZSYsIEpT
VmFsdWUgdGhpc1ZhbHVlID0gSlNWYWx1ZSgpKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBDb21w
bGV0aW9uIGNoZWNrU3ludGF4KEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmKTsKKyAgICBK
U19FWFBPUlRfUFJJVkFURSBDb21wbGV0aW9uIGV2YWx1YXRlKEV4ZWNTdGF0ZSosIFNjb3BlQ2hh
aW4mLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNWYWx1ZSB0aGlzVmFsdWUgPSBKU1ZhbHVlKCkpOwog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db25zdHJ1Y3REYXRhLmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0cnVjdERhdGEu
aAppbmRleCA5ZDU4MGQ1Li45NWZmMzUxIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbnN0cnVjdERhdGEuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0cnVj
dERhdGEuaApAQCAtNDYsNyArNDYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIHR5cGVkZWYg
SlNPYmplY3QqICgqTmF0aXZlQ29uc3RydWN0b3IpKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgY29u
c3QgQXJnTGlzdCYpOwogCi0gICAgdW5pb24gQ29uc3RydWN0RGF0YSB7CisgICAgdW5pb24gSlNf
RVhQT1JUX1BSSVZBVEUgQ29uc3RydWN0RGF0YSB7CiAgICAgICAgIHN0cnVjdCB7CiAgICAgICAg
ICAgICBOYXRpdmVDb25zdHJ1Y3RvciBmdW5jdGlvbjsKICAgICAgICAgfSBuYXRpdmU7CkBAIC01
Niw3ICs1Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9IGpzOwogICAgIH07CiAKLSAg
ICBKU09iamVjdCogY29uc3RydWN0KEV4ZWNTdGF0ZSosIEpTVmFsdWUgY29uc3RydWN0b3IsIENv
bnN0cnVjdFR5cGUsIGNvbnN0IENvbnN0cnVjdERhdGEmLCBjb25zdCBBcmdMaXN0Jik7CisgICAg
SlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIGNvbnN0cnVjdChFeGVjU3RhdGUqLCBKU1ZhbHVl
IGNvbnN0cnVjdG9yLCBDb25zdHJ1Y3RUeXBlLCBjb25zdCBDb25zdHJ1Y3REYXRhJiwgY29uc3Qg
QXJnTGlzdCYpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2UuaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0
ZUluc3RhbmNlLmgKaW5kZXggM2I3MzUyMS4uOTg1MmE5MCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2UuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0RhdGVJbnN0YW5jZS5oCkBAIC0yOSw3ICsyOSw3IEBAIG5hbWVzcGFjZSBXVEYgewogCiBuYW1l
c3BhY2UgSlNDIHsKIAotICAgIGNsYXNzIERhdGVJbnN0YW5jZSA6IHB1YmxpYyBKU1dyYXBwZXJP
YmplY3QgeworICAgIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIERhdGVJbnN0YW5jZSA6IHB1Ymxp
YyBKU1dyYXBwZXJPYmplY3QgewogICAgIHB1YmxpYzoKICAgICAgICAgZXhwbGljaXQgRGF0ZUlu
c3RhbmNlKFBhc3NSZWZQdHI8U3RydWN0dXJlPik7CiAgICAgICAgIHZpcnR1YWwgfkRhdGVJbnN0
YW5jZSgpOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oIGIvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oCmluZGV4IGFkZjdmZGYuLmJhYWUwOTkgMTAwNjQ0
Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaAorKysgYi9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Vycm9yLmgKQEAgLTU1LDEwICs1NSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgc3RhdGljIEpTT2JqZWN0KiBjcmVhdGUoRXhlY1N0YXRlKiwgRXJyb3JUeXBlLCBjb25z
dCBjaGFyKiBtZXNzYWdlKTsKICAgICB9OwogCi0gICAgSlNPYmplY3QqIHRocm93RXJyb3IoRXhl
Y1N0YXRlKiwgRXJyb3JUeXBlLCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlLCBpbnQgbGluZU51bWJl
ciwgaW50cHRyX3Qgc291cmNlSUQsIGNvbnN0IFVTdHJpbmcmIHNvdXJjZVVSTCk7Ci0gICAgSlNP
YmplY3QqIHRocm93RXJyb3IoRXhlY1N0YXRlKiwgRXJyb3JUeXBlLCBjb25zdCBVU3RyaW5nJiBt
ZXNzYWdlKTsKLSAgICBKU09iamVjdCogdGhyb3dFcnJvcihFeGVjU3RhdGUqLCBFcnJvclR5cGUs
IGNvbnN0IGNoYXIqIG1lc3NhZ2UpOwotICAgIEpTT2JqZWN0KiB0aHJvd0Vycm9yKEV4ZWNTdGF0
ZSosIEVycm9yVHlwZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93RXJy
b3IoRXhlY1N0YXRlKiwgRXJyb3JUeXBlLCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlLCBpbnQgbGlu
ZU51bWJlciwgaW50cHRyX3Qgc291cmNlSUQsIGNvbnN0IFVTdHJpbmcmIHNvdXJjZVVSTCk7Cisg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93RXJyb3IoRXhlY1N0YXRlKiwgRXJy
b3JUeXBlLCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBK
U09iamVjdCogdGhyb3dFcnJvcihFeGVjU3RhdGUqLCBFcnJvclR5cGUsIGNvbnN0IGNoYXIqIG1l
c3NhZ2UpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd0Vycm9yKEV4ZWNT
dGF0ZSosIEVycm9yVHlwZSk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaCBiL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCmluZGV4IDEyNGIzNTQuLjk0NWEwZGUg
MTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5o
CisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCkBAIC0y
OSw3ICsyOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIFByb2dyYW1Ob2RlOwogICAg
IGNsYXNzIEZ1bmN0aW9uQm9keU5vZGU7CiAKLSAgICBjbGFzcyBGdW5jdGlvbkNvbnN0cnVjdG9y
IDogcHVibGljIEludGVybmFsRnVuY3Rpb24geworICAgIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRF
IEZ1bmN0aW9uQ29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CiAgICAgcHVi
bGljOgogICAgICAgICBGdW5jdGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSosIFBhc3NSZWZQdHI8
U3RydWN0dXJlPiwgRnVuY3Rpb25Qcm90b3R5cGUqKTsKIApAQCAtMzgsMTAgKzM4LDEwIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB2aXJ0dWFsIENhbGxUeXBlIGdldENhbGxEYXRhKENhbGxE
YXRhJik7CiAgICAgfTsKIAotICAgIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3Rh
dGUqLCBjb25zdCBBcmdMaXN0JiwgY29uc3QgSWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25z
dCBVU3RyaW5nJiBzb3VyY2VVUkwsIGludCBsaW5lTnVtYmVyKTsKLSAgICBKU09iamVjdCogY29u
c3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiwgY29uc3QgQXJnTGlzdCYpOworICAgIEpTX0VYUE9S
VF9QUklWQVRFIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqLCBjb25zdCBB
cmdMaXN0JiwgY29uc3QgSWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBVU3RyaW5nJiBz
b3VyY2VVUkwsIGludCBsaW5lTnVtYmVyKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVj
dCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiwgY29uc3QgQXJnTGlzdCYpOwogCi0gICAg
RnVuY3Rpb25Cb2R5Tm9kZSogZXh0cmFjdEZ1bmN0aW9uQm9keShQcm9ncmFtTm9kZSopOworICAg
IEpTX0VYUE9SVF9QUklWQVRFIEZ1bmN0aW9uQm9keU5vZGUqIGV4dHJhY3RGdW5jdGlvbkJvZHko
UHJvZ3JhbU5vZGUqKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
ZGVudGlmaWVyLmgKaW5kZXggNjMxY2Y0Mi4uNjEzZjk5NSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JZGVudGlmaWVyLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
ZGVudGlmaWVyLmgKQEAgLTI4LDcgKzI4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFz
cyBFeGVjU3RhdGU7CiAKLSAgICBjbGFzcyBJZGVudGlmaWVyIHsKKyAgICBjbGFzcyBKU19FWFBP
UlRfUFJJVkFURSBJZGVudGlmaWVyIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIFN0cnVjdHVyZTsK
ICAgICBwdWJsaWM6CiAgICAgICAgIElkZW50aWZpZXIoKSB7IH0KZGlmZiAtLWdpdCBhL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5oIGIvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmgKaW5kZXggMWE5M2NjYi4uYjZmMDJhZSAxMDA2
NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmgKKysr
IGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmgKQEAgLTI1LDcg
KzI1LDcgQEAKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwotIAorCiAjaWZu
ZGVmIEluaXRpYWxpemVUaHJlYWRpbmdfaAogI2RlZmluZSBJbml0aWFsaXplVGhyZWFkaW5nX2gK
IApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIC8vIFRoaXMgZnVuY3Rp
b24gbXVzdCBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQuIEl0IGlzIHNhZmUgdG8gY2Fs
bCBpdCByZXBlYXRlZGx5LgogICAgIC8vIERhcndpbiBpcyBhbiBleGNlcHRpb24gdG8gdGhpcyBy
dWxlOiBpdCBpcyBPSyB0byBjYWxsIHRoaXMgZnVuY3Rpb24gZnJvbSBhbnkgdGhyZWFkLCBldmVu
IHJlZW50cmFudGx5LgotICAgIHZvaWQgaW5pdGlhbGl6ZVRocmVhZGluZygpOworICAgIEpTX0VY
UE9SVF9QUklWQVRFIHZvaWQgaW5pdGlhbGl6ZVRocmVhZGluZygpOwogCiB9CiAKZGlmZiAtLWdp
dCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oIGIvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgKaW5kZXggMzcwNzdmNi4uZTQ1YjY0YyAx
MDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgKKysr
IGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgKQEAgLTMxLDEwICsz
MSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEZ1bmN0aW9uUHJvdG90eXBlOwog
Ci0gICAgY2xhc3MgSW50ZXJuYWxGdW5jdGlvbiA6IHB1YmxpYyBKU09iamVjdCB7CisgICAgY2xh
c3MgSlNfRVhQT1JUX1BSSVZBVEUgSW50ZXJuYWxGdW5jdGlvbiA6IHB1YmxpYyBKU09iamVjdCB7
CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZv
KCkgY29uc3Q7IAotICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSBjb25zdCBDbGFzc0luZm8g
aW5mbzsKKyAgICAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBpbmZvOwogCiAgICAgICAgIGNv
bnN0IFVTdHJpbmcmIG5hbWUoSlNHbG9iYWxEYXRhKik7CiAgICAgICAgIGNvbnN0IFVTdHJpbmcg
ZGlzcGxheU5hbWUoSlNHbG9iYWxEYXRhKik7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXkuaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCmluZGV4
IDg4ZDhlZTQuLmVjMWRkNzEgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
cnJheS5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCkBAIC00OSw3ICs0
OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwdXQoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlKTsgLy8gRklYTUU6IE1ha2UgcHJvdGVjdGVkIGFuZCBhZGQgc2V0SXRlbS4K
IAotICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSBjb25zdCBDbGFzc0luZm8gaW5mbzsKKyAg
ICAgICAgc3RhdGljIEpTX0VYUE9SVF9QUklWQVRFIGNvbnN0IENsYXNzSW5mbyBpbmZvOwogCiAg
ICAgICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZS0+bV9sZW5n
dGg7IH0KICAgICAgICAgdm9pZCBzZXRMZW5ndGgodW5zaWduZWQpOyAvLyBPSyB0byB1c2Ugb24g
bmV3IGFycmF5cywgYnV0IG5vdCBpZiBpdCBtaWdodCBiZSBhIFJlZ0V4cE1hdGNoQXJyYXkuCkBA
IC0xMTQsMTAgKzExNCwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIEpTQXJyYXkqIGFzQXJy
YXkoSlNWYWx1ZSk7CiAKLSAgICBKU0FycmF5KiBjb25zdHJ1Y3RFbXB0eUFycmF5KEV4ZWNTdGF0
ZSopOwotICAgIEpTQXJyYXkqIGNvbnN0cnVjdEVtcHR5QXJyYXkoRXhlY1N0YXRlKiwgdW5zaWdu
ZWQgaW5pdGlhbExlbmd0aCk7Ci0gICAgSlNBcnJheSogY29uc3RydWN0QXJyYXkoRXhlY1N0YXRl
KiwgSlNWYWx1ZSBzaW5nbGVJdGVtVmFsdWUpOwotICAgIEpTQXJyYXkqIGNvbnN0cnVjdEFycmF5
KEV4ZWNTdGF0ZSosIGNvbnN0IEFyZ0xpc3QmIHZhbHVlcyk7CisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgSlNBcnJheSogY29uc3RydWN0RW1wdHlBcnJheShFeGVjU3RhdGUqKTsKKyAgICBKU19FWFBP
UlRfUFJJVkFURSBKU0FycmF5KiBjb25zdHJ1Y3RFbXB0eUFycmF5KEV4ZWNTdGF0ZSosIHVuc2ln
bmVkIGluaXRpYWxMZW5ndGgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTQXJyYXkqIGNvbnN0
cnVjdEFycmF5KEV4ZWNTdGF0ZSosIEpTVmFsdWUgc2luZ2xlSXRlbVZhbHVlKTsKKyAgICBKU19F
WFBPUlRfUFJJVkFURSBKU0FycmF5KiBjb25zdHJ1Y3RBcnJheShFeGVjU3RhdGUqLCBjb25zdCBB
cmdMaXN0JiB2YWx1ZXMpOwogCiAgICAgaW5saW5lIEpTQXJyYXkqIGFzQXJyYXkoSlNWYWx1ZSB2
YWx1ZSkKICAgICB7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFy
cmF5LmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5LmgKaW5kZXggYTU2YWNh
Ni4uMjZkNmJiYyAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJh
eS5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuaApAQCAtMzIsNyAr
MzIsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotICAgIGNsYXNzIEpTQnl0ZUFycmF5IDogcHVi
bGljIEpTT2JqZWN0IHsKKyAgICBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBKU0J5dGVBcnJheSA6
IHB1YmxpYyBKU09iamVjdCB7CiAgICAgICAgIGZyaWVuZCBzdHJ1Y3QgVlB0clNldDsKICAgICBw
dWJsaWM6CiAgICAgICAgIGJvb2wgY2FuQWNjZXNzSW5kZXgodW5zaWduZWQgaSkgeyByZXR1cm4g
aSA8IG1fc3RvcmFnZS0+bGVuZ3RoKCk7IH0KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDZWxsLmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCmluZGV4IDc5
ZjIyMmIuLjEwYmQwNzAgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxs
LmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaApAQCAtMzEsNyArMzEsNyBA
QAogCiBuYW1lc3BhY2UgSlNDIHsKIAotICAgIGNsYXNzIEpTQ2VsbCA6IHB1YmxpYyBOb25jb3B5
YWJsZUN1c3RvbUFsbG9jYXRlZCB7CisgICAgY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgSlNDZWxs
IDogcHVibGljIE5vbmNvcHlhYmxlQ3VzdG9tQWxsb2NhdGVkIHsKICAgICAgICAgZnJpZW5kIGNs
YXNzIEdldHRlclNldHRlcjsKICAgICAgICAgZnJpZW5kIGNsYXNzIEhlYXA7CiAgICAgICAgIGZy
aWVuZCBjbGFzcyBKSVQ7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVu
Y3Rpb24uaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCmluZGV4IDkxZDA5
NTEuLjgxODgzMzggMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlv
bi5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCkBAIC01Myw3ICs1
Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIHNldEJvZHkoUGFzc1JlZlB0cjxG
dW5jdGlvbkJvZHlOb2RlPik7CiAgICAgICAgIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHkoKSBjb25z
dCB7IHJldHVybiBtX2JvZHkuZ2V0KCk7IH0KIAotICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFU
QSBjb25zdCBDbGFzc0luZm8gaW5mbzsKKyAgICAgICAgc3RhdGljIEpTX0VYUE9SVF9QUklWQVRF
IGNvbnN0IENsYXNzSW5mbyBpbmZvOwogCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVj
dHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTVmFsdWUgcHJvdG90eXBlKSAKICAgICAgICAgeyAKZGlm
ZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmggYi9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCmluZGV4IDg4Y2I1MTYuLjRiNDg3N2YgMTAw
NjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgKKysrIGIvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaApAQCAtNjIsNyArNjIsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICBzdHJ1Y3QgSW5zdHJ1Y3Rpb247ICAgIAogICAgIHN0cnVjdCBWUHRy
U2V0OwogCi0gICAgY2xhc3MgSlNHbG9iYWxEYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8SlNHbG9i
YWxEYXRhPiB7CisgICAgY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgSlNHbG9iYWxEYXRhIDogcHVi
bGljIFJlZkNvdW50ZWQ8SlNHbG9iYWxEYXRhPiB7CiAgICAgcHVibGljOgogICAgICAgICBzdHJ1
Y3QgQ2xpZW50RGF0YSB7CiAgICAgICAgICAgICB2aXJ0dWFsIH5DbGllbnREYXRhKCkgPSAwOwpk
aWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IGNkYTQ5YmQuLjM0Yjk2
ZDggMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAor
KysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTUxLDcgKzUx
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICB0eXBlZGVmIFZlY3RvcjxFeGVjU3RhdGUqLCAx
Nj4gRXhlY1N0YXRlU3RhY2s7CiAKLSAgICBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBK
U1ZhcmlhYmxlT2JqZWN0IHsKKyAgICBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBKU0dsb2JhbE9i
amVjdCA6IHB1YmxpYyBKU1ZhcmlhYmxlT2JqZWN0IHsKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAg
IHVzaW5nIEpTVmFyaWFibGVPYmplY3Q6OkpTVmFyaWFibGVPYmplY3REYXRhOwogCmRpZmYgLS1n
aXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW1tZWRpYXRlLmggYi9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTSW1tZWRpYXRlLmgKaW5kZXggNGVkMzVmYy4uZGQ5Mjg1ZiAxMDA2NDQKLS0t
IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ltbWVkaWF0ZS5oCisrKyBiL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNJbW1lZGlhdGUuaApAQCAtMTMzLDcgKzEzMyw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAqIHZhbHVlcyBhcmUgZW5jb2RlZCBpbiB0aGUgc2FtZSBtYW5uZXIgYXMgdGhl
IGRlZmF1bHQgZm9ybWF0LgogICAgICAqLwogCi0gICAgY2xhc3MgSlNJbW1lZGlhdGUgeworICAg
IGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEpTSW1tZWRpYXRlIHsKICAgICBwcml2YXRlOgogICAg
ICAgICBmcmllbmQgY2xhc3MgSklUOwogICAgICAgICBmcmllbmQgY2xhc3MgSlNWYWx1ZTsKZGlm
ZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmggYi9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTG9jay5oCmluZGV4IDhiMDE1YzQuLmVmMjZiZDcgMTAwNjQ0Ci0tLSBhL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0xvY2suaApAQCAtNTIsNyArNTIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGVudW0g
SlNMb2NrQmVoYXZpb3IgeyBTaWxlbmNlQXNzZXJ0aW9uc09ubHksIExvY2tGb3JSZWFsIH07CiAK
LSAgICBjbGFzcyBKU0xvY2sgOiBwdWJsaWMgTm9uY29weWFibGUgeworICAgIGNsYXNzIEpTX0VY
UE9SVF9QUklWQVRFIEpTTG9jayA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiAgICAgcHVibGljOgog
ICAgICAgICBKU0xvY2soRXhlY1N0YXRlKik7CiAKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNOdW1iZXJDZWxsLmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTnVtYmVy
Q2VsbC5oCmluZGV4IDZhNDgwODEuLjFhNDg3ODcgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNOdW1iZXJDZWxsLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU051
bWJlckNlbGwuaApAQCAtMzIsMTEgKzMyLDExIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi0gICAg
ZXh0ZXJuIGNvbnN0IGRvdWJsZSBOYU47Ci0gICAgZXh0ZXJuIGNvbnN0IGRvdWJsZSBJbmY7Cisg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgZXh0ZXJuIGNvbnN0IGRvdWJsZSBOYU47CisgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgZXh0ZXJuIGNvbnN0IGRvdWJsZSBJbmY7CiAKICNpZiBVU0UoSlNWQUxVRTMy
KQotICAgIEpTVmFsdWUganNOdW1iZXJDZWxsKEV4ZWNTdGF0ZSosIGRvdWJsZSk7CisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBqc051bWJlckNlbGwoRXhlY1N0YXRlKiwgZG91YmxlKTsK
IAogICAgIGNsYXNzIElkZW50aWZpZXI7CiAgICAgY2xhc3MgSlNDZWxsOwpAQCAtNDcsMTAgKzQ3
LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHN0cnVjdCBDbGFzc0luZm87CiAgICAgc3RydWN0
IEluc3RydWN0aW9uOwogCi0gICAgY2xhc3MgSlNOdW1iZXJDZWxsIDogcHVibGljIEpTQ2VsbCB7
CisgICAgY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgSlNOdW1iZXJDZWxsIDogcHVibGljIEpTQ2Vs
bCB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7Ci0gICAgICAgIGZyaWVuZCBKU1ZhbHVlIGpz
TnVtYmVyQ2VsbChKU0dsb2JhbERhdGEqLCBkb3VibGUpOwotICAgICAgICBmcmllbmQgSlNWYWx1
ZSBqc051bWJlckNlbGwoRXhlY1N0YXRlKiwgZG91YmxlKTsKKyAgICAgICAgZnJpZW5kIEpTX0VY
UE9SVF9QUklWQVRFIEpTVmFsdWUganNOdW1iZXJDZWxsKEpTR2xvYmFsRGF0YSosIGRvdWJsZSk7
CisgICAgICAgIGZyaWVuZCBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIGpzTnVtYmVyQ2VsbChF
eGVjU3RhdGUqLCBkb3VibGUpOwogCiAgICAgcHVibGljOgogICAgICAgICBkb3VibGUgdmFsdWUo
KSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CkBAIC0xMDQsNyArMTA0LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIGRvdWJsZSBtX3ZhbHVlOwogICAgIH07CiAKLSAgICBKU1ZhbHVlIGpz
TnVtYmVyQ2VsbChKU0dsb2JhbERhdGEqLCBkb3VibGUpOworICAgIEpTX0VYUE9SVF9QUklWQVRF
IEpTVmFsdWUganNOdW1iZXJDZWxsKEpTR2xvYmFsRGF0YSosIGRvdWJsZSk7CiAKICAgICBpbmxp
bmUgYm9vbCBpc051bWJlckNlbGwoSlNWYWx1ZSB2KQogICAgIHsKZGlmZiAtLWdpdCBhL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3QuaAppbmRleCAyOTFkYWUwLi5iNzNkODI4IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0LmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dC5oCkBAIC02Nyw3ICs2Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHR5cGVkZWYgRW5jb2Rl
ZEpTVmFsdWUqIFByb3BlcnR5U3RvcmFnZTsKICAgICB0eXBlZGVmIGNvbnN0IEVuY29kZWRKU1Zh
bHVlKiBDb25zdFByb3BlcnR5U3RvcmFnZTsKIAotICAgIGNsYXNzIEpTT2JqZWN0IDogcHVibGlj
IEpTQ2VsbCB7CisgICAgY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QgOiBwdWJsaWMg
SlNDZWxsIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVy
OwogICAgICAgICBmcmllbmQgY2xhc3MgSklUOwogICAgICAgICBmcmllbmQgY2xhc3MgSlNDZWxs
OwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oIGIvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCmluZGV4IGY5YjBhOGYuLjVmZDBiMTcgMTAwNjQ0
Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAorKysgYi9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKQEAgLTMzLDMyICszMywzMiBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgIGNsYXNzIEpTU3RyaW5nOwogCi0gICAgSlNTdHJpbmcqIGpzRW1wdHlTdHJpbmco
SlNHbG9iYWxEYXRhKik7Ci0gICAgSlNTdHJpbmcqIGpzRW1wdHlTdHJpbmcoRXhlY1N0YXRlKik7
Ci0gICAgSlNTdHJpbmcqIGpzU3RyaW5nKEpTR2xvYmFsRGF0YSosIGNvbnN0IFVTdHJpbmcmKTsg
Ly8gcmV0dXJucyBlbXB0eSBzdHJpbmcgaWYgcGFzc2VkIG51bGwgc3RyaW5nCi0gICAgSlNTdHJp
bmcqIGpzU3RyaW5nKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmKTsgLy8gcmV0dXJucyBlbXB0
eSBzdHJpbmcgaWYgcGFzc2VkIG51bGwgc3RyaW5nCi0KLSAgICBKU1N0cmluZyoganNTaW5nbGVD
aGFyYWN0ZXJTdHJpbmcoSlNHbG9iYWxEYXRhKiwgVUNoYXIpOwotICAgIEpTU3RyaW5nKiBqc1Np
bmdsZUNoYXJhY3RlclN0cmluZyhFeGVjU3RhdGUqLCBVQ2hhcik7Ci0gICAgSlNTdHJpbmcqIGpz
U2luZ2xlQ2hhcmFjdGVyU3Vic3RyaW5nKEpTR2xvYmFsRGF0YSosIGNvbnN0IFVTdHJpbmcmLCB1
bnNpZ25lZCBvZmZzZXQpOwotICAgIEpTU3RyaW5nKiBqc1NpbmdsZUNoYXJhY3RlclN1YnN0cmlu
ZyhFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJiwgdW5zaWduZWQgb2Zmc2V0KTsKLSAgICBKU1N0
cmluZyoganNTdWJzdHJpbmcoSlNHbG9iYWxEYXRhKiwgY29uc3QgVVN0cmluZyYsIHVuc2lnbmVk
IG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBKU1N0cmluZyoganNTdWJzdHJpbmcoRXhl
Y1N0YXRlKiwgY29uc3QgVVN0cmluZyYsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3Ro
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU1N0cmluZyoganNFbXB0eVN0cmluZyhKU0dsb2Jh
bERhdGEqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU1N0cmluZyoganNFbXB0eVN0cmluZyhF
eGVjU3RhdGUqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU1N0cmluZyoganNTdHJpbmcoSlNH
bG9iYWxEYXRhKiwgY29uc3QgVVN0cmluZyYpOyAvLyByZXR1cm5zIGVtcHR5IHN0cmluZyBpZiBw
YXNzZWQgbnVsbCBzdHJpbmcKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU1N0cmluZyoganNTdHJp
bmcoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYpOyAvLyByZXR1cm5zIGVtcHR5IHN0cmluZyBp
ZiBwYXNzZWQgbnVsbCBzdHJpbmcKKworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTU3RyaW5nKiBq
c1NpbmdsZUNoYXJhY3RlclN0cmluZyhKU0dsb2JhbERhdGEqLCBVQ2hhcik7CisgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgSlNTdHJpbmcqIGpzU2luZ2xlQ2hhcmFjdGVyU3RyaW5nKEV4ZWNTdGF0ZSos
IFVDaGFyKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU1N0cmluZyoganNTaW5nbGVDaGFyYWN0
ZXJTdWJzdHJpbmcoSlNHbG9iYWxEYXRhKiwgY29uc3QgVVN0cmluZyYsIHVuc2lnbmVkIG9mZnNl
dCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNTdHJpbmcqIGpzU2luZ2xlQ2hhcmFjdGVyU3Vi
c3RyaW5nKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmLCB1bnNpZ25lZCBvZmZzZXQpOworICAg
IEpTX0VYUE9SVF9QUklWQVRFIEpTU3RyaW5nKiBqc1N1YnN0cmluZyhKU0dsb2JhbERhdGEqLCBj
b25zdCBVU3RyaW5nJiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIEpT
X0VYUE9SVF9QUklWQVRFIEpTU3RyaW5nKiBqc1N1YnN0cmluZyhFeGVjU3RhdGUqLCBjb25zdCBV
U3RyaW5nJiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwogCiAgICAgLy8gTm9u
LXRyaXZpYWwgc3RyaW5ncyBhcmUgdHdvIG9yIG1vcmUgY2hhcmFjdGVycyBsb25nLgogICAgIC8v
IFRoZXNlIGZ1bmN0aW9ucyBhcmUgZmFzdGVyIHRoYW4ganVzdCBjYWxsaW5nIGpzU3RyaW5nLgot
ICAgIEpTU3RyaW5nKiBqc05vbnRyaXZpYWxTdHJpbmcoSlNHbG9iYWxEYXRhKiwgY29uc3QgVVN0
cmluZyYpOwotICAgIEpTU3RyaW5nKiBqc05vbnRyaXZpYWxTdHJpbmcoRXhlY1N0YXRlKiwgY29u
c3QgVVN0cmluZyYpOwotICAgIEpTU3RyaW5nKiBqc05vbnRyaXZpYWxTdHJpbmcoSlNHbG9iYWxE
YXRhKiwgY29uc3QgY2hhciopOwotICAgIEpTU3RyaW5nKiBqc05vbnRyaXZpYWxTdHJpbmcoRXhl
Y1N0YXRlKiwgY29uc3QgY2hhciopOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTU3RyaW5nKiBq
c05vbnRyaXZpYWxTdHJpbmcoSlNHbG9iYWxEYXRhKiwgY29uc3QgVVN0cmluZyYpOworICAgIEpT
X0VYUE9SVF9QUklWQVRFIEpTU3RyaW5nKiBqc05vbnRyaXZpYWxTdHJpbmcoRXhlY1N0YXRlKiwg
Y29uc3QgVVN0cmluZyYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTU3RyaW5nKiBqc05vbnRy
aXZpYWxTdHJpbmcoSlNHbG9iYWxEYXRhKiwgY29uc3QgY2hhciopOworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIEpTU3RyaW5nKiBqc05vbnRyaXZpYWxTdHJpbmcoRXhlY1N0YXRlKiwgY29uc3QgY2hh
ciopOwogCiAgICAgLy8gU2hvdWxkIGJlIHVzZWQgZm9yIHN0cmluZ3MgdGhhdCBhcmUgb3duZWQg
YnkgYW4gb2JqZWN0IHRoYXQgd2lsbAogICAgIC8vIGxpa2VseSBvdXRsaXZlIHRoZSBKU1ZhbHVl
IHRoaXMgbWFrZXMsIHN1Y2ggYXMgdGhlIHBhcnNlIHRyZWUgb3IgYQogICAgIC8vIERPTSBvYmpl
Y3QgdGhhdCBjb250YWlucyBhIFVTdHJpbmcKLSAgICBKU1N0cmluZyoganNPd25lZFN0cmluZyhK
U0dsb2JhbERhdGEqLCBjb25zdCBVU3RyaW5nJik7IAotICAgIEpTU3RyaW5nKiBqc093bmVkU3Ry
aW5nKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmKTsgCisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
SlNTdHJpbmcqIGpzT3duZWRTdHJpbmcoSlNHbG9iYWxEYXRhKiwgY29uc3QgVVN0cmluZyYpOwor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTU3RyaW5nKiBqc093bmVkU3RyaW5nKEV4ZWNTdGF0ZSos
IGNvbnN0IFVTdHJpbmcmKTsKIAotICAgIGNsYXNzIEpTU3RyaW5nIDogcHVibGljIEpTQ2VsbCB7
CisgICAgY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgSlNTdHJpbmcgOiBwdWJsaWMgSlNDZWxsIHsK
ICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKICAgICAgICAgZnJpZW5kIHN0cnVjdCBWUHRyU2V0
OwogCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3Qu
aCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oCmluZGV4IGI5Njlk
YTUuLjFhYzViOGMgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJs
ZU9iamVjdC5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5o
CkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUmVnaXN0ZXI7
CiAKLSAgICBjbGFzcyBKU1ZhcmlhYmxlT2JqZWN0IDogcHVibGljIEpTT2JqZWN0IHsKKyAgICBj
bGFzcyBKU19FWFBPUlRfUFJJVkFURSBKU1ZhcmlhYmxlT2JqZWN0IDogcHVibGljIEpTT2JqZWN0
IHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKIAogICAgIHB1YmxpYzoKQEAgLTUwLDcgKzUw
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdmlydHVhbCBib29sIGRlbGV0ZVByb3Bl
cnR5KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImKTsKICAgICAgICAgdmlydHVhbCB2b2lk
IGdldFByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmKTsKLSAgICAg
ICAgCisKICAgICAgICAgdmlydHVhbCBib29sIGlzVmFyaWFibGVPYmplY3QoKSBjb25zdDsKICAg
ICAgICAgdmlydHVhbCBib29sIGlzRHluYW1pY1Njb3BlKCkgY29uc3QgPSAwOwogCmRpZmYgLS1n
aXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9iamVjdC5oIGIvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1dyYXBwZXJPYmplY3QuaAppbmRleCAwYjJjNjgwLi41MzZkNGZiIDEw
MDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9iamVjdC5oCisrKyBi
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmgKQEAgLTI1LDEwICsyNSwx
MCBAQAogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAKIG5hbWVzcGFjZSBKU0MgewotICAgIAorCiAg
ICAgLy8gVGhpcyBjbGFzcyBpcyB1c2VkIGFzIGEgYmFzZSBmb3IgY2xhc3NlcyBzdWNoIGFzIFN0
cmluZywKICAgICAvLyBOdW1iZXIsIEJvb2xlYW4gYW5kIERhdGUgd2hpY2ggYXJlIHdyYXBwZXJz
IGZvciBwcmltaXRpdmUgdHlwZXMuCi0gICAgY2xhc3MgSlNXcmFwcGVyT2JqZWN0IDogcHVibGlj
IEpTT2JqZWN0IHsKKyAgICBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBKU1dyYXBwZXJPYmplY3Qg
OiBwdWJsaWMgSlNPYmplY3QgewogICAgIHByb3RlY3RlZDoKICAgICAgICAgZXhwbGljaXQgSlNX
cmFwcGVyT2JqZWN0KFBhc3NSZWZQdHI8U3RydWN0dXJlPik7CiAKZGlmZiAtLWdpdCBhL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1
cC5oCmluZGV4IDE2N2YyYmMuLjFlMmI3MGQgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTG9va3VwLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaApAQCAt
MTA0LDcgKzEwNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBIYXNoRW50cnkqIG1fbmV4
dDsKICAgICB9OwogCi0gICAgc3RydWN0IEhhc2hUYWJsZSB7CisgICAgc3RydWN0IEpTX0VYUE9S
VF9QUklWQVRFIEhhc2hUYWJsZSB7CiAKICAgICAgICAgaW50IGNvbXBhY3RTaXplOwogICAgICAg
ICBpbnQgY29tcGFjdEhhc2hTaXplTWFzazsKQEAgLTE2Miw3ICsxNjIsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgdm9pZCBjcmVhdGVUYWJsZShKU0dsb2JhbERhdGEqKSBjb25zdDsKICAg
ICB9OwogCi0gICAgdm9pZCBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChFeGVjU3RhdGUqLCBjb25z
dCBIYXNoRW50cnkqLCBKU09iamVjdCogdGhpc09iamVjdCwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNl
dFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSosIGNvbnN0IEhhc2hFbnRyeSosIEpTT2Jq
ZWN0KiB0aGlzT2JqZWN0LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYpOwogCiAgICAgLyoqCiAgICAgICogVGhpcyBtZXRob2QgZG9lcyBpdCBhbGwgKGxvb2tp
bmcgaW4gdGhlIGhhc2h0YWJsZSwgY2hlY2tpbmcgZm9yIGZ1bmN0aW9uCmRpZmYgLS1naXQgYS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlck9iamVjdC5oIGIvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9OdW1iZXJPYmplY3QuaAppbmRleCAwN2EwMTNmLi44NGRmMzU1IDEwMDY0NAotLS0gYS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlck9iamVjdC5oCisrKyBiL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTnVtYmVyT2JqZWN0LmgKQEAgLTI1LDcgKzI1LDcgQEAKIAogbmFtZXNwYWNlIEpT
QyB7CiAKLSAgICBjbGFzcyBOdW1iZXJPYmplY3QgOiBwdWJsaWMgSlNXcmFwcGVyT2JqZWN0IHsK
KyAgICBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBOdW1iZXJPYmplY3QgOiBwdWJsaWMgSlNXcmFw
cGVyT2JqZWN0IHsKICAgICBwdWJsaWM6CiAgICAgICAgIGV4cGxpY2l0IE51bWJlck9iamVjdChQ
YXNzUmVmUHRyPFN0cnVjdHVyZT4pOwogCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09iamVjdFByb3RvdHlwZS5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90
b3R5cGUuaAppbmRleCA3NzkwYWUwLi43NjM4ZDFkIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T2JqZWN0UHJvdG90eXBlLmgKQEAgLTMwLDcgKzMwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIE9iamVjdFByb3RvdHlwZShFeGVjU3RhdGUqLCBQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIFN0
cnVjdHVyZSogcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUpOwogICAgIH07CiAKLSAgICBKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKiwgSlNP
YmplY3QqLCBKU1ZhbHVlLCBjb25zdCBBcmdMaXN0Jik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSos
IEpTT2JqZWN0KiwgSlNWYWx1ZSwgY29uc3QgQXJnTGlzdCYpOwogCiB9IC8vIG5hbWVzcGFjZSBK
U0MKIApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJh
eS5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oCmluZGV4IGI0
MzgyZjQuLmU5ZDU0NzUgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVy
dHlOYW1lQXJyYXkuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFy
cmF5LmgKQEAgLTU4LDcgKzU4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZlB0cjxT
dHJ1Y3R1cmVDaGFpbj4gbV9jYWNoZWRQcm90b3R5cGVDaGFpbjsKICAgICB9OwogCi0gICAgY2xh
c3MgUHJvcGVydHlOYW1lQXJyYXkgeworICAgIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIFByb3Bl
cnR5TmFtZUFycmF5IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgUHJvcGVydHlOYW1l
QXJyYXlEYXRhOjpjb25zdF9pdGVyYXRvciBjb25zdF9pdGVyYXRvcjsKIApkaWZmIC0tZ2l0IGEv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm90b3R5cGVGdW5jdGlvbi5oIGIvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm90b3R5cGVGdW5jdGlvbi5oCmluZGV4IDk5YWIzMjcuLmI1MzdkNmYgMTAw
NjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90eXBlRnVuY3Rpb24uaAorKysg
Yi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3RvdHlwZUZ1bmN0aW9uLmgKQEAgLTI5LDcgKzI5
LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLSAgICBjbGFzcyBQcm90b3R5cGVGdW5jdGlvbiA6
IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKKyAgICBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBQ
cm90b3R5cGVGdW5jdGlvbiA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKICAgICBwdWJsaWM6
CiAgICAgICAgIFByb3RvdHlwZUZ1bmN0aW9uKEV4ZWNTdGF0ZSosIGludCBsZW5ndGgsIGNvbnN0
IElkZW50aWZpZXImLCBOYXRpdmVGdW5jdGlvbik7CiAgICAgICAgIFByb3RvdHlwZUZ1bmN0aW9u
KEV4ZWNTdGF0ZSosIFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgaW50IGxlbmd0aCwgY29uc3QgSWRl
bnRpZmllciYsIE5hdGl2ZUZ1bmN0aW9uKTsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwLmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCmluZGV4IDI0
ZDQxOTkuLjUwOTllMzIgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
LmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaApAQCAtMzYsNyArMzYsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEpTR2xvYmFsRGF0YTsKIAotICAgIGNsYXNz
IFJlZ0V4cCA6IHB1YmxpYyBSZWZDb3VudGVkPFJlZ0V4cD4geworICAgIGNsYXNzIEpTX0VYUE9S
VF9QUklWQVRFIFJlZ0V4cCA6IHB1YmxpYyBSZWZDb3VudGVkPFJlZ0V4cD4gewogICAgIHB1Ymxp
YzoKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8UmVnRXhwPiBjcmVhdGUoSlNHbG9iYWxEYXRh
KiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBwYXR0ZXJuKTsKICAgICAgICAgc3RhdGljIFBh
c3NSZWZQdHI8UmVnRXhwPiBjcmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBV
U3RyaW5nJiBwYXR0ZXJuLCBjb25zdCBVU3RyaW5nJiBmbGFncyk7CmRpZmYgLS1naXQgYS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBPYmplY3QuaAppbmRleCA1Y2EzYjNmLi4wYjllMjFjIDEwMDY0NAotLS0gYS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwT2JqZWN0LmgKQEAgLTI2LDcgKzI2LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7
CiAKLSAgICBjbGFzcyBSZWdFeHBPYmplY3QgOiBwdWJsaWMgSlNPYmplY3QgeworICAgIGNsYXNz
IEpTX0VYUE9SVF9QUklWQVRFIFJlZ0V4cE9iamVjdCA6IHB1YmxpYyBKU09iamVjdCB7CiAgICAg
cHVibGljOgogICAgICAgICBSZWdFeHBPYmplY3QoUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBQYXNz
UmVmUHRyPFJlZ0V4cD4pOwogICAgICAgICB2aXJ0dWFsIH5SZWdFeHBPYmplY3QoKTsKZGlmZiAt
LWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmggYi9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5oCmluZGV4IGYwZGQ4ZGYuLjI1YmVlZGUgMTAwNjQ0
Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmgKKysrIGIvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3MuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgIGNsYXNzIFNtYWxsU3RyaW5nc1N0b3JhZ2U7CiAKLSAgICBjbGFzcyBT
bWFsbFN0cmluZ3MgOiBwdWJsaWMgTm9uY29weWFibGUgeworICAgIGNsYXNzIEpTX0VYUE9SVF9Q
UklWQVRFIFNtYWxsU3RyaW5ncyA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiAgICAgcHVibGljOgog
ICAgICAgICBTbWFsbFN0cmluZ3MoKTsKICAgICAgICAgflNtYWxsU3RyaW5ncygpOwpkaWZmIC0t
Z2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaCBiL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgKaW5kZXggZWEzYTA0NS4uOWI3ZGUyYSAxMDA2NDQK
LS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAorKysgYi9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCkBAIC0yNiw3ICsyNiw3IEBACiAKIG5hbWVz
cGFjZSBKU0MgewogCi0gICAgY2xhc3MgU3RyaW5nT2JqZWN0IDogcHVibGljIEpTV3JhcHBlck9i
amVjdCB7CisgICAgY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgU3RyaW5nT2JqZWN0IDogcHVibGlj
IEpTV3JhcHBlck9iamVjdCB7CiAgICAgcHVibGljOgogICAgICAgICBTdHJpbmdPYmplY3QoRXhl
Y1N0YXRlKiwgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+KTsKICAgICAgICAgU3RyaW5nT2JqZWN0KEV4
ZWNTdGF0ZSosIFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgY29uc3QgVVN0cmluZyYpOwpAQCAtNDEs
NyArNDEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGdldFByb3Bl
cnR5TmFtZXMoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmKTsKIAogICAgICAgICB2aXJ0
dWFsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3QgeyByZXR1cm4gJmluZm87IH0K
LSAgICAgICAgc3RhdGljIGNvbnN0IEpTX0VYUE9SVERBVEEgQ2xhc3NJbmZvIGluZm87CisgICAg
ICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gaW5mbzsKIAogICAgICAgICBKU1N0cmluZyogaW50
ZXJuYWxWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIGFzU3RyaW5nKEpTV3JhcHBlck9iamVjdDo6aW50
ZXJuYWxWYWx1ZSgpKTt9CiAKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlLmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCmluZGV4IGYzYTBj
N2MuLmQ5NDhlY2YgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
LmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaApAQCAtNDksNyArNDks
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheTsKICAgICBj
bGFzcyBQcm9wZXJ0eU5hbWVBcnJheURhdGE7CiAKLSAgICBjbGFzcyBTdHJ1Y3R1cmUgOiBwdWJs
aWMgUmVmQ291bnRlZDxTdHJ1Y3R1cmU+IHsKKyAgICBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBT
dHJ1Y3R1cmUgOiBwdWJsaWMgUmVmQ291bnRlZDxTdHJ1Y3R1cmU+IHsKICAgICBwdWJsaWM6CiAg
ICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVj
dHVyZT4gY3JlYXRlKEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbyYgdHlwZUluZm8p
CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RpbWVvdXRDaGVja2VyLmggYi9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1RpbWVvdXRDaGVja2VyLmgKaW5kZXggN2JmYTZkMC4uYjY2
ODU3MSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UaW1lb3V0Q2hlY2tlci5o
CisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGltZW91dENoZWNrZXIuaApAQCAtMzUsNyAr
MzUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEV4ZWNTdGF0ZTsKIAotICAgIGNs
YXNzIFRpbWVvdXRDaGVja2VyIHsKKyAgICBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBUaW1lb3V0
Q2hlY2tlciB7CiAgICAgcHVibGljOgogICAgICAgICBUaW1lb3V0Q2hlY2tlcigpOwogCmRpZmYg
LS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuaCBiL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVVN0cmluZy5oCmluZGV4IDJkYmNhMWYuLmEwNDc3NzggMTAwNjQ0Ci0tLSBhL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZy5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVVN0cmluZy5oCkBAIC00MSw4ICs0MSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHVzaW5n
IFdURjo6UGxhY2VtZW50TmV3QWRvcHQ7CiAKICAgICBjbGFzcyBJZGVudGlmaWVyVGFibGU7Ci0g
IAotICAgIGNsYXNzIENTdHJpbmcgeworCisgICAgY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgQ1N0
cmluZyB7CiAgICAgcHVibGljOgogICAgICAgICBDU3RyaW5nKCkKICAgICAgICAgICAgIDogbV9s
ZW5ndGgoMCkKQEAgLTczLDEzICs3MywxMyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIHR5cGVk
ZWYgVmVjdG9yPGNoYXIsIDMyPiBDU3RyaW5nQnVmZmVyOwogCi0gICAgY2xhc3MgVVN0cmluZyB7
CisgICAgY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgVVN0cmluZyB7CiAgICAgICAgIGZyaWVuZCBj
bGFzcyBKSVQ7CiAKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgQ3Jvc3NUaHJlYWRSZWZD
b3VudGVkPE93bkZhc3RNYWxsb2NQdHI8VUNoYXI+ID4gU2hhcmVkVUNoYXI7CiAgICAgICAgIHN0
cnVjdCBCYXNlU3RyaW5nOwotICAgICAgICBzdHJ1Y3QgUmVwIDogTm9uY29weWFibGUgeworICAg
ICAgICBzdHJ1Y3QgSlNfRVhQT1JUX1BSSVZBVEUgUmVwIDogTm9uY29weWFibGUgewogICAgICAg
ICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKIAogICAgICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8
UmVwPiBjcmVhdGUoVUNoYXIqIGJ1ZmZlciwgaW50IGxlbmd0aCkKQEAgLTE4Niw4ICsxODYsOCBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICAgICAgZnJpZW5kIGNsYXNzIFNtYWxsU3RyaW5n
c1N0b3JhZ2U7CiAgICAgICAgICAgICBmcmllbmQgdm9pZCBpbml0aWFsaXplVVN0cmluZygpOwot
ICAgICAgICAgICAgSlNfRVhQT1JUREFUQSBzdGF0aWMgQmFzZVN0cmluZyogbnVsbEJhc2VTdHJp
bmc7Ci0gICAgICAgICAgICBKU19FWFBPUlREQVRBIHN0YXRpYyBCYXNlU3RyaW5nKiBlbXB0eUJh
c2VTdHJpbmc7CisgICAgICAgICAgICBzdGF0aWMgQmFzZVN0cmluZyogbnVsbEJhc2VTdHJpbmc7
CisgICAgICAgICAgICBzdGF0aWMgQmFzZVN0cmluZyogZW1wdHlCYXNlU3RyaW5nOwogICAgICAg
ICB9OwogCiAKQEAgLTQzMyw5ICs0MzMsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0
dXJuIFVTdHJpbmcocmVzdWx0ID8gcmVzdWx0LnJlbGVhc2UoKSA6IFVTdHJpbmc6Om51bGxSZXAo
KSk7CiAgICAgfQogCi0gICAgaW50IGNvbXBhcmUoY29uc3QgVVN0cmluZyYsIGNvbnN0IFVTdHJp
bmcmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBpbnQgY29tcGFyZShjb25zdCBVU3RyaW5nJiwg
Y29uc3QgVVN0cmluZyYpOwogCi0gICAgYm9vbCBlcXVhbChjb25zdCBVU3RyaW5nOjpSZXAqLCBj
b25zdCBVU3RyaW5nOjpSZXAqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGVxdWFsKGNv
bnN0IFVTdHJpbmc6OlJlcCosIGNvbnN0IFVTdHJpbmc6OlJlcCopOwogCiAgICAgaW5saW5lIFBh
c3NSZWZQdHI8VVN0cmluZzo6UmVwPiBVU3RyaW5nOjpSZXA6OmNyZWF0ZShQYXNzUmVmUHRyPFVT
dHJpbmc6OlJlcD4gcmVwLCBpbnQgb2Zmc2V0LCBpbnQgbGVuZ3RoKQogICAgIHsKZGlmZiAtLWdp
dCBhL0phdmFTY3JpcHRDb3JlL3d0Zi9CeXRlQXJyYXkuaCBiL0phdmFTY3JpcHRDb3JlL3d0Zi9C
eXRlQXJyYXkuaAppbmRleCA5NmU5Y2MyLi42NGVjZjM5IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0
Q29yZS93dGYvQnl0ZUFycmF5LmgKKysrIGIvSmF2YVNjcmlwdENvcmUvd3RmL0J5dGVBcnJheS5o
CkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNw
YWNlIFdURiB7Ci0gICAgY2xhc3MgQnl0ZUFycmF5IDogcHVibGljIFJlZkNvdW50ZWRCYXNlIHsK
KyAgICBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBCeXRlQXJyYXkgOiBwdWJsaWMgUmVmQ291bnRl
ZEJhc2UgewogICAgIHB1YmxpYzoKICAgICAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyBy
ZXR1cm4gbV9zaXplOyB9CiAKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3d0Zi9DdXJyZW50
VGltZS5oIGIvSmF2YVNjcmlwdENvcmUvd3RmL0N1cnJlbnRUaW1lLmgKaW5kZXggMzFmMWVjOC4u
N2FiZTk0MCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvd3RmL0N1cnJlbnRUaW1lLmgKKysr
IGIvSmF2YVNjcmlwdENvcmUvd3RmL0N1cnJlbnRUaW1lLmgKQEAgLTM1LDEzICszNSwxMiBAQAog
bmFtZXNwYWNlIFdURiB7CiAKICAgICAvLyBSZXR1cm5zIHRoZSBjdXJyZW50IHN5c3RlbSAoVVRD
KSB0aW1lIGluIHNlY29uZHMsIHN0YXJ0aW5nIEphbnVhcnkgMSwgMTk3MC4KLSAgICAvLyBQcmVj
aXNpb24gdmFyaWVzIGRlcGVuZGluZyBvbiBhIHBsYXRmb3JtIGJ1dCB1c3VhbGx5IGlzIGFzIGdv
b2Qgb3IgYmV0dGVyIAorICAgIC8vIFByZWNpc2lvbiB2YXJpZXMgZGVwZW5kaW5nIG9uIGEgcGxh
dGZvcm0gYnV0IHVzdWFsbHkgaXMgYXMgZ29vZCBvciBiZXR0ZXIKICAgICAvLyB0aGFuIGEgbWls
bGlzZWNvbmQuCi0gICAgZG91YmxlIGN1cnJlbnRUaW1lKCk7CisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgZG91YmxlIGN1cnJlbnRUaW1lKCk7CiAKIH0gLy8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBX
VEY6OmN1cnJlbnRUaW1lOwogCiAjZW5kaWYgLy8gQ3VycmVudFRpbWVfaAotCmRpZmYgLS1naXQg
YS9KYXZhU2NyaXB0Q29yZS93dGYvRmFzdE1hbGxvYy5oIGIvSmF2YVNjcmlwdENvcmUvd3RmL0Zh
c3RNYWxsb2MuaAppbmRleCBiMjNlN2IwLi4xNTRkZjk0IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0
Q29yZS93dGYvRmFzdE1hbGxvYy5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3d0Zi9GYXN0TWFsbG9j
LmgKQEAgLTI5LDEwICsyOSwxMCBAQAogbmFtZXNwYWNlIFdURiB7CiAKICAgICAvLyBUaGVzZSBm
dW5jdGlvbnMgY2FsbCBDUkFTSCgpIGlmIGFuIGFsbG9jYXRpb24gZmFpbHMuCi0gICAgdm9pZCog
ZmFzdE1hbGxvYyhzaXplX3QpOwotICAgIHZvaWQqIGZhc3RaZXJvZWRNYWxsb2Moc2l6ZV90KTsK
LSAgICB2b2lkKiBmYXN0Q2FsbG9jKHNpemVfdCBudW1FbGVtZW50cywgc2l6ZV90IGVsZW1lbnRT
aXplKTsKLSAgICB2b2lkKiBmYXN0UmVhbGxvYyh2b2lkKiwgc2l6ZV90KTsKKyAgICBKU19FWFBP
UlRfUFJJVkFURSB2b2lkKiBmYXN0TWFsbG9jKHNpemVfdCk7CisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgdm9pZCogZmFzdFplcm9lZE1hbGxvYyhzaXplX3QpOworICAgIEpTX0VYUE9SVF9QUklWQVRF
IHZvaWQqIGZhc3RDYWxsb2Moc2l6ZV90IG51bUVsZW1lbnRzLCBzaXplX3QgZWxlbWVudFNpemUp
OworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQqIGZhc3RSZWFsbG9jKHZvaWQqLCBzaXplX3Qp
OwogCiAgICAgc3RydWN0IFRyeU1hbGxvY1JldHVyblZhbHVlIHsKICAgICAgICAgVHJ5TWFsbG9j
UmV0dXJuVmFsdWUodm9pZCogZGF0YSkKQEAgLTY2LDEyICs2NiwxMiBAQCBuYW1lc3BhY2UgV1RG
IHsKICAgICAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogICAgIH0KIAotICAgIFRyeU1hbGxvY1Jl
dHVyblZhbHVlIHRyeUZhc3RNYWxsb2Moc2l6ZV90IG4pOwotICAgIFRyeU1hbGxvY1JldHVyblZh
bHVlIHRyeUZhc3RaZXJvZWRNYWxsb2Moc2l6ZV90IG4pOwotICAgIFRyeU1hbGxvY1JldHVyblZh
bHVlIHRyeUZhc3RDYWxsb2Moc2l6ZV90IG5fZWxlbWVudHMsIHNpemVfdCBlbGVtZW50X3NpemUp
OwotICAgIFRyeU1hbGxvY1JldHVyblZhbHVlIHRyeUZhc3RSZWFsbG9jKHZvaWQqIHAsIHNpemVf
dCBuKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBUcnlNYWxsb2NSZXR1cm5WYWx1ZSB0cnlGYXN0
TWFsbG9jKHNpemVfdCBuKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBUcnlNYWxsb2NSZXR1cm5W
YWx1ZSB0cnlGYXN0WmVyb2VkTWFsbG9jKHNpemVfdCBuKTsKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSBUcnlNYWxsb2NSZXR1cm5WYWx1ZSB0cnlGYXN0Q2FsbG9jKHNpemVfdCBuX2VsZW1lbnRzLCBz
aXplX3QgZWxlbWVudF9zaXplKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBUcnlNYWxsb2NSZXR1
cm5WYWx1ZSB0cnlGYXN0UmVhbGxvYyh2b2lkKiBwLCBzaXplX3Qgbik7CiAKLSAgICB2b2lkIGZh
c3RGcmVlKHZvaWQqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGZhc3RGcmVlKHZvaWQq
KTsKIAogI2lmbmRlZiBOREVCVUcgICAgCiAgICAgdm9pZCBmYXN0TWFsbG9jRm9yYmlkKCk7CmRp
ZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS93dGYvTWFpblRocmVhZC5oIGIvSmF2YVNjcmlwdENv
cmUvd3RmL01haW5UaHJlYWQuaAppbmRleCAwMWNlODA0Li4wMzJlZDQ3IDEwMDY0NAotLS0gYS9K
YXZhU2NyaXB0Q29yZS93dGYvTWFpblRocmVhZC5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3d0Zi9N
YWluVGhyZWFkLmgKQEAgLTM2LDEyICszNiwxMiBAQCBjbGFzcyBNdXRleDsKIAogdHlwZWRlZiB2
b2lkIE1haW5UaHJlYWRGdW5jdGlvbih2b2lkKik7CiAKLXZvaWQgY2FsbE9uTWFpblRocmVhZChN
YWluVGhyZWFkRnVuY3Rpb24qLCB2b2lkKiBjb250ZXh0KTsKK0pTX0VYUE9SVF9QUklWQVRFIHZv
aWQgY2FsbE9uTWFpblRocmVhZChNYWluVGhyZWFkRnVuY3Rpb24qLCB2b2lkKiBjb250ZXh0KTsK
IAotdm9pZCBzZXRNYWluVGhyZWFkQ2FsbGJhY2tzUGF1c2VkKGJvb2wgcGF1c2VkKTsKK0pTX0VY
UE9SVF9QUklWQVRFIHZvaWQgc2V0TWFpblRocmVhZENhbGxiYWNrc1BhdXNlZChib29sIHBhdXNl
ZCk7CiAKIC8vIE11c3QgYmUgY2FsbGVkIGZyb20gdGhlIG1haW4gdGhyZWFkIChEYXJ3aW4gaXMg
YW4gZXhjZXB0aW9uIHRvIHRoaXMgcnVsZSkuCi12b2lkIGluaXRpYWxpemVNYWluVGhyZWFkKCk7
CitKU19FWFBPUlRfUFJJVkFURSB2b2lkIGluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAKIC8vIFRo
ZXNlIGZ1bmN0aW9ucyBhcmUgaW50ZXJuYWwgdG8gdGhlIGNhbGxPbk1haW5UaHJlYWQgaW1wbGVt
ZW50YXRpb24uCiB2b2lkIGluaXRpYWxpemVNYWluVGhyZWFkUGxhdGZvcm0oKTsKZGlmZiAtLWdp
dCBhL0phdmFTY3JpcHRDb3JlL3d0Zi9SYW5kb21OdW1iZXIuaCBiL0phdmFTY3JpcHRDb3JlL3d0
Zi9SYW5kb21OdW1iZXIuaAppbmRleCBmZTE2ODdjLi4xNTc2ZmY2IDEwMDY0NAotLS0gYS9KYXZh
U2NyaXB0Q29yZS93dGYvUmFuZG9tTnVtYmVyLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvd3RmL1Jh
bmRvbU51bWJlci5oCkBAIC0zMCwxMiArMzAsMTIgQEAgbmFtZXNwYWNlIFdURiB7CiAKICAgICAv
LyBSZXR1cm5zIGEgcHNldWRvLXJhbmRvbSBudW1iZXIgaW4gdGhlIHJhbmdlIFswLCAxKSwgYXR0
ZW1wdHMgdG8gYmUKICAgICAvLyBjcnlwdG9ncmFwaGljYWxseSBzZWN1cmUgaWYgcG9zc2libGUg
b24gdGhlIHRhcmdldCBwbGF0Zm9ybQotICAgIGRvdWJsZSByYW5kb21OdW1iZXIoKTsKKyAgICBK
U19FWFBPUlRfUFJJVkFURSBkb3VibGUgcmFuZG9tTnVtYmVyKCk7CiAKICAgICAvLyBSZXR1cm5z
IGEgcHNldWRvLXJhbmRvbSBudW1iZXIgaW4gdGhlIHJhbmdlIFswLCAxKSwgYXR0ZW1wdHMgdG8K
ICAgICAvLyBwcm9kdWNlIGEgcmVhc29uYWJsZSAicmFuZG9tIiBudW1iZXIgZmFzdC4KICAgICAv
LyBXZSBvbmx5IG5lZWQgdGhpcyBiZWNhdXNlIHJhbmRfcyBpcyBzbyBzbG93IG9uIHdpbmRvd3Mu
Ci0gICAgZG91YmxlIHdlYWtSYW5kb21OdW1iZXIoKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBk
b3VibGUgd2Vha1JhbmRvbU51bWJlcigpOwogCiB9CiAKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRD
b3JlL3d0Zi9UaHJlYWRpbmcuaCBiL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmcuaAppbmRl
eCA0NjM2MWFmLi40ZDUwMGY0IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFk
aW5nLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZy5oCkBAIC0xMTIsMTkgKzEx
MiwxOSBAQCB0eXBlZGVmIHZvaWQqICgqVGhyZWFkRnVuY3Rpb24pKHZvaWQqIGFyZ3VtZW50KTsK
IAogLy8gUmV0dXJucyAwIGlmIHRocmVhZCBjcmVhdGlvbiBmYWlsZWQuCiAvLyBUaGUgdGhyZWFk
IG5hbWUgbXVzdCBiZSBhIGxpdGVyYWwgc2luY2Ugb24gc29tZSBwbGF0Zm9ybXMgaXQncyBwYXNz
ZWQgaW4gdG8gdGhlIHRocmVhZC4KLVRocmVhZElkZW50aWZpZXIgY3JlYXRlVGhyZWFkKFRocmVh
ZEZ1bmN0aW9uLCB2b2lkKiwgY29uc3QgY2hhciogdGhyZWFkTmFtZSk7CitKU19FWFBPUlRfUFJJ
VkFURSBUaHJlYWRJZGVudGlmaWVyIGNyZWF0ZVRocmVhZChUaHJlYWRGdW5jdGlvbiwgdm9pZCos
IGNvbnN0IGNoYXIqIHRocmVhZE5hbWUpOwogCiAvLyBJbnRlcm5hbCBwbGF0Zm9ybS1zcGVjaWZp
YyBjcmVhdGVUaHJlYWQgaW1wbGVtZW50YXRpb24uCi1UaHJlYWRJZGVudGlmaWVyIGNyZWF0ZVRo
cmVhZEludGVybmFsKFRocmVhZEZ1bmN0aW9uLCB2b2lkKiwgY29uc3QgY2hhciogdGhyZWFkTmFt
ZSk7CitKU19FWFBPUlRfUFJJVkFURSBUaHJlYWRJZGVudGlmaWVyIGNyZWF0ZVRocmVhZEludGVy
bmFsKFRocmVhZEZ1bmN0aW9uLCB2b2lkKiwgY29uc3QgY2hhciogdGhyZWFkTmFtZSk7CiAKIC8v
IENhbGxlZCBpbiB0aGUgdGhyZWFkIGR1cmluZyBpbml0aWFsaXphdGlvbi4KIC8vIEhlbHBmdWwg
Zm9yIHBsYXRmb3JtcyB3aGVyZSB0aGUgdGhyZWFkIG5hbWUgbXVzdCBiZSBzZXQgZnJvbSB3aXRo
aW4gdGhlIHRocmVhZC4KLXZvaWQgc2V0VGhyZWFkTmFtZUludGVybmFsKGNvbnN0IGNoYXIqIHRo
cmVhZE5hbWUpOworSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRUaHJlYWROYW1lSW50ZXJuYWwo
Y29uc3QgY2hhciogdGhyZWFkTmFtZSk7CiAKLVRocmVhZElkZW50aWZpZXIgY3VycmVudFRocmVh
ZCgpOwotYm9vbCBpc01haW5UaHJlYWQoKTsKLWludCB3YWl0Rm9yVGhyZWFkQ29tcGxldGlvbihU
aHJlYWRJZGVudGlmaWVyLCB2b2lkKiopOwotdm9pZCBkZXRhY2hUaHJlYWQoVGhyZWFkSWRlbnRp
Zmllcik7CitKU19FWFBPUlRfUFJJVkFURSBUaHJlYWRJZGVudGlmaWVyIGN1cnJlbnRUaHJlYWQo
KTsKK0pTX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNNYWluVGhyZWFkKCk7CitKU19FWFBPUlRfUFJJ
VkFURSBpbnQgd2FpdEZvclRocmVhZENvbXBsZXRpb24oVGhyZWFkSWRlbnRpZmllciwgdm9pZCoq
KTsKK0pTX0VYUE9SVF9QUklWQVRFIHZvaWQgZGV0YWNoVGhyZWFkKFRocmVhZElkZW50aWZpZXIp
OwogCiAjaWYgVVNFKFBUSFJFQURTKQogdHlwZWRlZiBwdGhyZWFkX211dGV4X3QgUGxhdGZvcm1N
dXRleDsKQEAgLTE2MSw3ICsxNjEsNyBAQCB0eXBlZGVmIHZvaWQqIFBsYXRmb3JtUmVhZFdyaXRl
TG9jazsKIHR5cGVkZWYgdm9pZCogUGxhdGZvcm1Db25kaXRpb247CiAjZW5kaWYKICAgICAKLWNs
YXNzIE11dGV4IDogcHVibGljIE5vbmNvcHlhYmxlIHsKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRF
IE11dGV4IDogcHVibGljIE5vbmNvcHlhYmxlIHsKIHB1YmxpYzoKICAgICBNdXRleCgpOwogICAg
IH5NdXRleCgpOwpAQCAtMTc4LDcgKzE3OCw3IEBAIHByaXZhdGU6CiAKIHR5cGVkZWYgTG9ja2Vy
PE11dGV4PiBNdXRleExvY2tlcjsKIAotY2xhc3MgUmVhZFdyaXRlTG9jayA6IHB1YmxpYyBOb25j
b3B5YWJsZSB7CitjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBSZWFkV3JpdGVMb2NrIDogcHVibGlj
IE5vbmNvcHlhYmxlIHsKIHB1YmxpYzoKICAgICBSZWFkV3JpdGVMb2NrKCk7CiAgICAgflJlYWRX
cml0ZUxvY2soKTsKQEAgLTMxMiwxMCArMzEyLDEwIEBAIHB1YmxpYzoKIAogLy8gVGhpcyBmdW5j
dGlvbiBtdXN0IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4gSXQgaXMgc2FmZSB0byBj
YWxsIGl0IHJlcGVhdGVkbHkuCiAvLyBEYXJ3aW4gaXMgYW4gZXhjZXB0aW9uIHRvIHRoaXMgcnVs
ZTogaXQgaXMgT0sgdG8gY2FsbCBpdCBmcm9tIGFueSB0aHJlYWQsIHRoZSBvbmx5IHJlcXVpcmVt
ZW50IGlzIHRoYXQgdGhlIGNhbGxzIGFyZSBub3QgcmVlbnRyYW50Lgotdm9pZCBpbml0aWFsaXpl
VGhyZWFkaW5nKCk7CitKU19FWFBPUlRfUFJJVkFURSB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmco
KTsKIAotdm9pZCBsb2NrQXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljTXV0ZXgoKTsKLXZvaWQg
dW5sb2NrQXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljTXV0ZXgoKTsKK0pTX0VYUE9SVF9QUklW
QVRFIHZvaWQgbG9ja0F0b21pY2FsbHlJbml0aWFsaXplZFN0YXRpY011dGV4KCk7CitKU19FWFBP
UlRfUFJJVkFURSB2b2lkIHVubG9ja0F0b21pY2FsbHlJbml0aWFsaXplZFN0YXRpY011dGV4KCk7
CiAKIH0gLy8gbmFtZXNwYWNlIFdURgogCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS93dGYv
ZHRvYS5oIGIvSmF2YVNjcmlwdENvcmUvd3RmL2R0b2EuaAppbmRleCBjYmVjN2M3Li41YzgyYTkw
IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS93dGYvZHRvYS5oCisrKyBiL0phdmFTY3JpcHRD
b3JlL3d0Zi9kdG9hLmgKQEAgLTI5LDggKzI5LDggQEAgbmFtZXNwYWNlIFdURiB7CiAKICAgICBl
eHRlcm4gV1RGOjpNdXRleCogc19kdG9hUDVNdXRleDsKIAotICAgIGRvdWJsZSBzdHJ0b2QoY29u
c3QgY2hhciogczAwLCBjaGFyKiogc2UpOwotICAgIHZvaWQgZHRvYShjaGFyKiByZXN1bHQsIGRv
dWJsZSBkLCBpbnQgbmRpZ2l0cywgaW50KiBkZWNwdCwgaW50KiBzaWduLCBjaGFyKiogcnZlKTsK
KyAgICBKU19FWFBPUlRfUFJJVkFURSBkb3VibGUgc3RydG9kKGNvbnN0IGNoYXIqIHMwMCwgY2hh
cioqIHNlKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGR0b2EoY2hhciogcmVzdWx0LCBk
b3VibGUgZCwgaW50IG5kaWdpdHMsIGludCogZGVjcHQsIGludCogc2lnbiwgY2hhcioqIHJ2ZSk7
CiAKIH0gLy8gbmFtZXNwYWNlIFdURgogCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS93dGYv
dW5pY29kZS9VVEY4LmNwcCBiL0phdmFTY3JpcHRDb3JlL3d0Zi91bmljb2RlL1VURjguY3BwCmlu
ZGV4IDllNzEzZmUuLjIxZDU4NTYgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3d0Zi91bmlj
b2RlL1VURjguY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL3d0Zi91bmljb2RlL1VURjguY3BwCkBA
IC0yMyw2ICsyMyw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCisjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiVVRGOC5oIgogCiBuYW1lc3BhY2UgV1RGIHsKZGlmZiAtLWdpdCBhL0ph
dmFTY3JpcHRDb3JlL3d0Zi91bmljb2RlL1VURjguaCBiL0phdmFTY3JpcHRDb3JlL3d0Zi91bmlj
b2RlL1VURjguaAppbmRleCBhNWVkOTNlLi5iMDY3NTRkIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0
Q29yZS93dGYvdW5pY29kZS9VVEY4LmgKKysrIGIvSmF2YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUv
VVRGOC5oCkBAIC0zNCwxMiArMzQsMTIgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgLy8gR2l2ZW4g
YSBmaXJzdCBieXRlLCBnaXZlcyB0aGUgbGVuZ3RoIG9mIHRoZSBVVEYtOCBzZXF1ZW5jZSBpdCBi
ZWdpbnMuCiAgICAgLy8gUmV0dXJucyAwIGZvciBieXRlcyB0aGF0IGFyZSBub3QgbGVnYWwgc3Rh
cnRzIG9mIFVURi04IHNlcXVlbmNlcy4KICAgICAvLyBPbmx5IGFsbG93cyBzZXF1ZW5jZXMgb2Yg
dXAgdG8gNCBieXRlcywgc2luY2UgdGhhdCB3b3JrcyBmb3IgYWxsIFVuaWNvZGUgY2hhcmFjdGVy
cyAoVS0wMDAwMDAwMCB0byBVLTAwMTBGRkZGKS4KLSAgICBpbnQgVVRGOFNlcXVlbmNlTGVuZ3Ro
KGNoYXIpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIGludCBVVEY4U2VxdWVuY2VMZW5ndGgoY2hh
cik7CiAKICAgICAvLyBUYWtlcyBhIG51bGwtdGVybWluYXRlZCBDLXN0eWxlIHN0cmluZyB3aXRo
IGEgVVRGLTggc2VxdWVuY2UgaW4gaXQgYW5kIGNvbnZlcnRzIGl0IHRvIGEgY2hhcmFjdGVyLgog
ICAgIC8vIE9ubHkgYWxsb3dzIFVuaWNvZGUgY2hhcmFjdGVycyAoVS0wMDAwMDAwMCB0byBVLTAw
MTBGRkZGKS4KICAgICAvLyBSZXR1cm5zIC0xIGlmIHRoZSBzZXF1ZW5jZSBpcyBub3QgdmFsaWQg
KGluY2x1ZGluZyBwcmVzZW5jZSBvZiBleHRyYSBieXRlcykuCi0gICAgaW50IGRlY29kZVVURjhT
ZXF1ZW5jZShjb25zdCBjaGFyKik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgaW50IGRlY29kZVVU
RjhTZXF1ZW5jZShjb25zdCBjaGFyKik7CiAKICAgICB0eXBlZGVmIGVudW0gewogICAgICAgICAg
ICAgY29udmVyc2lvbk9LLCAgICAgICAvLyBjb252ZXJzaW9uIHN1Y2Nlc3NmdWwKQEAgLTYyLDEy
ICs2MiwxMiBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAvLyB0byB0aGUgcmVwbGFjZW1lbnQgY2hh
cmFjdGVyOyBvdGhlcndpc2UgKHdoZW4gdGhlIGZsYWcgaXMgc2V0IHRvIHN0cmljdCkKICAgICAv
LyB0aGV5IGNvbnN0aXR1dGUgYW4gZXJyb3IuCiAKLSAgICBDb252ZXJzaW9uUmVzdWx0IGNvbnZl
cnRVVEY4VG9VVEYxNigKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhcioqIHNvdXJjZVN0
YXJ0LCBjb25zdCBjaGFyKiBzb3VyY2VFbmQsIAorICAgIEpTX0VYUE9SVF9QUklWQVRFIENvbnZl
cnNpb25SZXN1bHQgY29udmVydFVURjhUb1VURjE2KAorICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyKiogc291cmNlU3RhcnQsIGNvbnN0IGNoYXIqIHNvdXJjZUVuZCwKICAgICAgICAgICAg
ICAgICAgICAgVUNoYXIqKiB0YXJnZXRTdGFydCwgVUNoYXIqIHRhcmdldEVuZCwgYm9vbCBzdHJp
Y3QgPSB0cnVlKTsKIAotICAgIENvbnZlcnNpb25SZXN1bHQgY29udmVydFVURjE2VG9VVEY4KAot
ICAgICAgICAgICAgICAgICAgICBjb25zdCBVQ2hhcioqIHNvdXJjZVN0YXJ0LCBjb25zdCBVQ2hh
ciogc291cmNlRW5kLCAKKyAgICBKU19FWFBPUlRfUFJJVkFURSBDb252ZXJzaW9uUmVzdWx0IGNv
bnZlcnRVVEYxNlRvVVRGOCgKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgVUNoYXIqKiBzb3Vy
Y2VTdGFydCwgY29uc3QgVUNoYXIqIHNvdXJjZUVuZCwKICAgICAgICAgICAgICAgICAgICAgY2hh
cioqIHRhcmdldFN0YXJ0LCBjaGFyKiB0YXJnZXRFbmQsIGJvb2wgc3RyaWN0ID0gdHJ1ZSk7CiAg
IH0KIH0KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRHbHVlL2NvbmZpZy5oIGIvSmF2YVNjcmlwdEds
dWUvY29uZmlnLmgKaW5kZXggZmRiZDRhZS4uMDM5NzllYyAxMDA2NDQKLS0tIGEvSmF2YVNjcmlw
dEdsdWUvY29uZmlnLmgKKysrIGIvSmF2YVNjcmlwdEdsdWUvY29uZmlnLmgKQEAgLTQsNCArNCw0
IEBACiAKICNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KIAotI2RlZmluZSBKU19FWFBPUlREQVRB
CisjZGVmaW5lIEpTX0VYUE9SVF9QUklWQVRFCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDA3MzA0NjAuLjI5ZTgwMTcgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYg
QEAKKzIwMDktMDctMjQgIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8a2VubmV0aC5jaHJp
c3RpYW5zZW5Ab3BlbmJvc3NhLm9yZz4sIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5A
bm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIERlZmluZSBKU19FWFBPUlRfUFJJVkFURSBmb3IgZ2NjLgorCisgICAgICAgIExpbmsgUVRN
b3ZpZVdpbiBhZ2FpbnN0IEphdmFTY3JpcHRDb3JlIGZvciB0aGUgZXhwb3J0ZWQKKyAgICAgICAg
V1RGIHN5bWJvbHMuCisKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9RVE1vdmllV2luLnZjcHJv
ajogTGluayBRVE1vdmllV2luIGFnYWluc3QgSlNDIGRsbCwKKyAgICAgICAgZm9yIHRoZSBleHBv
cnRlZCBXVEYgc3ltYm9scy4KKyAgICAgICAgKiBjb25maWcuaDogVHdlYWsgZm9yIGdjYy4KKwog
MjAwOS0wOC0xNCAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1FUTW92aWVXaW4udmNwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9RVE1vdmllV2luLnZjcHJvagppbmRleCA1OTM4NTViLi5lNWY4NWIyIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1FUTW92aWVXaW4udmNwcm9qCisrKyBiL1dlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovUVRNb3ZpZVdpbi52Y3Byb2oKQEAgLTU1LDcgKzU1LDcgQEAKIAkJCS8+CiAJ
CQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5j
aWVzPSJRVE1MQ2xpZW50LmxpYiBXVEYkKFdlYktpdENvbmZpZ1N1ZmZpeCkubGliIHdpbm1tLmxp
YiBwdGhyZWFkVkMyJChMaWJyYXJ5Q29uZmlnU3VmZml4KS5saWIgTXNpbWczMi5saWIgdXNlcjMy
LmxpYiBhZHZhcGkzMi5saWIiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iUVRNTENsaWVu
dC5saWIgSmF2YVNjcmlwdENvcmUkKFdlYktpdERMTENvbmZpZ1N1ZmZpeCkubGliIHdpbm1tLmxp
YiBwdGhyZWFkVkMyJChMaWJyYXJ5Q29uZmlnU3VmZml4KS5saWIgTXNpbWczMi5saWIgdXNlcjMy
LmxpYiBhZHZhcGkzMi5saWIiCiAJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5h
bWUpJChXZWJLaXRDb25maWdTdWZmaXgpLmRsbCIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVj
dG9yaWVzPSImcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcUXVpY2tUaW1lIFNES1xMaWJyYXJp
ZXMmcXVvdDs7JnF1b3Q7JChQcm9ncmFtRmlsZXMpXFF1aWNrVGltZSBTREtcTGlicmFyaWVzJnF1
b3Q7IgogCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9IkxJQkNNVCIKQEAgLTEyOCw3ICsx
MjgsNyBAQAogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgotCQkJCUFk
ZGl0aW9uYWxEZXBlbmRlbmNpZXM9IlFUTUxDbGllbnQubGliIFdURiQoV2ViS2l0Q29uZmlnU3Vm
Zml4KS5saWIgd2lubW0ubGliIHB0aHJlYWRWQzIkKExpYnJhcnlDb25maWdTdWZmaXgpLmxpYiBN
c2ltZzMyLmxpYiB1c2VyMzIubGliIGFkdmFwaTMyLmxpYiIKKwkJCQlBZGRpdGlvbmFsRGVwZW5k
ZW5jaWVzPSJRVE1MQ2xpZW50LmxpYiBKYXZhU2NyaXB0Q29yZSQoV2ViS2l0RExMQ29uZmlnU3Vm
Zml4KS5saWIgd2lubW0ubGliIHB0aHJlYWRWQzIkKExpYnJhcnlDb25maWdTdWZmaXgpLmxpYiBN
c2ltZzMyLmxpYiB1c2VyMzIubGliIGFkdmFwaTMyLmxpYiIKIAkJCQlPdXRwdXRGaWxlPSIkKE91
dERpcilcJChQcm9qZWN0TmFtZSkkKFdlYktpdENvbmZpZ1N1ZmZpeCkuZGxsIgogCQkJCUFkZGl0
aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9IiZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxRdWlj
a1RpbWUgU0RLXExpYnJhcmllcyZxdW90OzsmcXVvdDskKFByb2dyYW1GaWxlcylcUXVpY2tUaW1l
IFNES1xMaWJyYXJpZXMmcXVvdDsiCiAJCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0iTElC
Q01UIgpAQCAtMjAwLDcgKzIwMCw3IEBACiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ0xp
bmtlclRvb2wiCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iUVRNTENsaWVudC5saWIgV1RG
JChXZWJLaXRDb25maWdTdWZmaXgpLmxpYiB3aW5tbS5saWIgcHRocmVhZFZDMiQoTGlicmFyeUNv
bmZpZ1N1ZmZpeCkubGliIE1zaW1nMzIubGliIHVzZXIzMi5saWIgYWR2YXBpMzIubGliIgorCQkJ
CUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IlFUTUxDbGllbnQubGliIEphdmFTY3JpcHRDb3JlJChX
ZWJLaXRETExDb25maWdTdWZmaXgpLmxpYiB3aW5tbS5saWIgcHRocmVhZFZDMiQoTGlicmFyeUNv
bmZpZ1N1ZmZpeCkubGliIE1zaW1nMzIubGliIHVzZXIzMi5saWIgYWR2YXBpMzIubGliIgogCQkJ
CU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKSQoV2ViS2l0Q29uZmlnU3VmZml4
KS5kbGwiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iJnF1b3Q7JChXZWJLaXRM
aWJyYXJpZXNEaXIpXFF1aWNrVGltZSBTREtcTGlicmFyaWVzJnF1b3Q7OyZxdW90OyQoUHJvZ3Jh
bUZpbGVzKVxRdWlja1RpbWUgU0RLXExpYnJhcmllcyZxdW90OyIKIAkJCQlJZ25vcmVEZWZhdWx0
TGlicmFyeU5hbWVzPSJMSUJDTVQiCmRpZmYgLS1naXQgYS9XZWJDb3JlL2NvbmZpZy5oIGIvV2Vi
Q29yZS9jb25maWcuaAppbmRleCA0ODNlZjc1Li5jNTIzNmYyIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2NvbmZpZy5oCisrKyBiL1dlYkNvcmUvY29uZmlnLmgKQEAgLTI0LDE0ICsyNCwxNyBAQAogCiAj
aW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CiAKLSNpZiBQTEFURk9STShXSU5fT1MpICYmICFkZWZp
bmVkKEJVSUxESU5HX1dYX18pICYmICFDT01QSUxFUihHQ0MpCi0jaWYgZGVmaW5lZChCVUlMRElO
R19KYXZhU2NyaXB0Q29yZSkgfHwgZGVmaW5lZChCVUlMRElOR19XVEYpCi0jZGVmaW5lIEpTX0VY
UE9SVERBVEEgX19kZWNsc3BlYyhkbGxleHBvcnQpCisjdW5kZWYgSlNfRVhQT1JUX1BSSVZBVEUK
KyNpZiBDT01QSUxFUihHQ0MpCisgICAgI2RlZmluZSBKU19FWFBPUlRfUFJJVkFURSBfX2F0dHJp
YnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKQorI2VsaWYgUExBVEZPUk0oV0lOX09TKSAm
JiAhZGVmaW5lZChCVUlMRElOR19XWF9fKQorICAgICNpZiBkZWZpbmVkKEJVSUxESU5HX0phdmFT
Y3JpcHRDb3JlKSB8fCBkZWZpbmVkKEJVSUxESU5HX1dURikKKyAgICAgICAgI2RlZmluZSBKU19F
WFBPUlRfUFJJVkFURSBfX2RlY2xzcGVjKGRsbGV4cG9ydCkKKyAgICAjZWxzZQorICAgICAgICAj
ZGVmaW5lIEpTX0VYUE9SVF9QUklWQVRFIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQorICAgICNlbmRp
ZgogI2Vsc2UKLSNkZWZpbmUgSlNfRVhQT1JUREFUQSBfX2RlY2xzcGVjKGRsbGltcG9ydCkKLSNl
bmRpZgotI2Vsc2UKLSNkZWZpbmUgSlNfRVhQT1JUREFUQQorICAgICNkZWZpbmUgSlNfRVhQT1JU
X1BSSVZBVEUKICNlbmRpZgogCiAjZGVmaW5lIE1PQklMRSAwCmRpZmYgLS1naXQgYS9XZWJLaXQv
Y2YvQ2hhbmdlTG9nIGIvV2ViS2l0L2NmL0NoYW5nZUxvZwppbmRleCAyN2NhZjFjLi5iMzlkZjBm
IDEwMDY0NAotLS0gYS9XZWJLaXQvY2YvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9jZi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxMiBAQAorMjAwOS0wNy0yNCAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5o
YXVzbWFubkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgRml4IGNvbXBpbGF0aW9uIG9uIHRoZSBNYWMsIGRvbid0IHJlLWRlZmluZSBK
U19FWFBPUlRfUFJJVkFURSBlbXB0eSBidXQKKyAgICAgICAgcmUtdXNlIHRoZSBkZWZpbml0aW9u
IGZyb20gV2ViS2l0UHJlZml4LmguCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnRDRi5jcHA6CisKIDIwMDktMDQtMjAgIFN0ZXZlIEZhbGtlbmJ1cmcgIDxzZmFs
a2VuQGFwcGxlLmNvbT4KIAogICAgICAgICBTZXBhcmF0ZSBKYXZhU2NyaXB0Q29yZS5kbGwgZnJv
bSBXZWJLaXQuZGxsLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dlYklu
c3BlY3RvckNsaWVudENGLmNwcCBiL1dlYktpdC9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnRDRi5jcHAKaW5kZXggNjAwZDU4ZC4uNzM2Zjg4YSAxMDA2NDQKLS0tIGEvV2ViS2l0
L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcAorKysgYi9XZWJLaXQv
Y2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCkBAIC0zOSwxMiArMzks
MTAgQEAKIAogI2lmIGRlZmluZWQoV0lOMzIpIHx8IGRlZmluZWQoX1dJTjMyKQogI2lmIGRlZmlu
ZWQoQlVJTERJTkdfSmF2YVNjcmlwdENvcmUpIHx8IGRlZmluZWQoQlVJTERJTkdfV1RGKQotI2Rl
ZmluZSBKU19FWFBPUlREQVRBIF9fZGVjbHNwZWMoZGxsZXhwb3J0KQorI2RlZmluZSBKU19FWFBP
UlRfUFJJVkFURSBfX2RlY2xzcGVjKGRsbGV4cG9ydCkKICNlbHNlCi0jZGVmaW5lIEpTX0VYUE9S
VERBVEEgX19kZWNsc3BlYyhkbGxpbXBvcnQpCisjZGVmaW5lIEpTX0VYUE9SVF9QUklWQVRFIF9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQogI2VuZGlmCi0jZWxzZQotI2RlZmluZSBKU19FWFBPUlREQVRB
CiAjZW5kaWYKIAogI2luY2x1ZGUgIldlYkluc3BlY3RvckNsaWVudC5oIgpkaWZmIC0tZ2l0IGEv
V2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCAxNjhiMzlh
Li4wMmU4ZDEzIDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9XZWJLaXQv
bWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDA5LTA3LTI0ICBTaW1vbiBIYXVzbWFu
biAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBEdXBsaWNhdGUgdGhlIEpTX0VYUE9SVF9QUklWQVRFIGRl
ZmluaXRpb24gZnJvbQorICAgICAgICBXZWJDb3JlL2NvbmZpZy5oIHRvIGZpeCBjb21waWxhdGlv
biBhZ2FpbnN0IEphdmFTY3JpcHRDb3JlIGFuZAorICAgICAgICBXZWJDb3JlIG9uIHRoZSBNYWMu
CisKKyAgICAgICAgKiBXZWJLaXRQcmVmaXguaDoKKwogMjAwOS0wOC0xNCAgU2ltb24gSGF1c21h
bm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL1dlYktpdFByZWZpeC5oIGIvV2Vi
S2l0L21hYy9XZWJLaXRQcmVmaXguaAppbmRleCA0YmVhZDMyLi40MmE5ZjUxIDEwMDY0NAotLS0g
YS9XZWJLaXQvbWFjL1dlYktpdFByZWZpeC5oCisrKyBiL1dlYktpdC9tYWMvV2ViS2l0UHJlZml4
LmgKQEAgLTgzLDYgKzgzLDE5IEBAIHR5cGVkZWYgZmxvYXQgQ0dGbG9hdDsKICNkZWZpbmUgV1RG
X1VTRV9KU0MgMQogI2RlZmluZSBXVEZfVVNFX1Y4IDAKIAorI3VuZGVmIEpTX0VYUE9SVF9QUklW
QVRFCisjaWYgQ09NUElMRVIoR0NDKQorICAgICNkZWZpbmUgSlNfRVhQT1JUX1BSSVZBVEUgX19h
dHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkKKyNlbGlmIFBMQVRGT1JNKFdJTl9P
UykgJiYgIWRlZmluZWQoQlVJTERJTkdfV1hfXykgJiYgIWRlZmluZWQoQlVJTERJTkdfUVRNb3Zp
ZVdpbikKKyAgICAjaWYgZGVmaW5lZChCVUlMRElOR19KYXZhU2NyaXB0Q29yZSkgfHwgZGVmaW5l
ZChCVUlMRElOR19XVEYpCisgICAgICAgICNkZWZpbmUgSlNfRVhQT1JUX1BSSVZBVEUgX19kZWNs
c3BlYyhkbGxleHBvcnQpCisgICAgI2Vsc2UKKyAgICAgICAgI2RlZmluZSBKU19FWFBPUlRfUFJJ
VkFURSBfX2RlY2xzcGVjKGRsbGltcG9ydCkKKyAgICAjZW5kaWYKKyNlbHNlCisgICAgI2RlZmlu
ZSBKU19FWFBPUlRfUFJJVkFURQorI2VuZGlmCisKICNpZmRlZiBfX2NwbHVzcGx1cwogI2luY2x1
ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjZW5kaWYKQEAgLTkyLDUgKzEwNSwzIEBAIHR5cGVkZWYg
ZmxvYXQgQ0dGbG9hdDsKIC8qIFdvcmsgYXJvdW5kIGJ1ZyB3aXRoIEMrKyBsaWJyYXJ5IHRoYXQg
c2NyZXdzIHVwIE9iamVjdGl2ZS1DKysgd2hlbiBleGNlcHRpb24gc3VwcG9ydCBpcyBkaXNhYmxl
ZC4gKi8KICN1bmRlZiB0cnkKICN1bmRlZiBjYXRjaAotCi0jZGVmaW5lIEpTX0VYUE9SVERBVEEK
ZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvV2ViS2l0L3dpbi9DaGFuZ2VMb2cK
aW5kZXggNzkzYjRiZC4uOGQ5ZGFiNiAxMDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9DaGFuZ2VMb2cK
KysrIGIvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAwOS0wNy0yNCAg
U2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IGNvbXBpbGF0aW9uIGJ5IGRl
ZmluaW5nIEpTX0VYUE9SVF9QUklWQVRFIGxpa2UgaW4KKyAgICAgICAgSmF2YVNjcmlwdENvcmUv
Y29uZmlnLmgsIHRvIGZpeCBzeW1ib2wgaW1wb3J0IGZvcm0gSmF2YVNjcmlwdENvcmUuCisKKyAg
ICAgICAgKiBXZWJLaXRETEwuaDogRGVmaW5lIEpTX0VYUE9SVERBVEEuCisKIDIwMDktMDgtMTIg
IEJyaWFuIFdlaW5zdGVpbiAgPGJ3ZWluc3RlaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IEFkYW0gUm9iZW4uCmRpZmYgLS1naXQgYS9XZWJLaXQvd2luL1dlYktpdERMTC5oIGIv
V2ViS2l0L3dpbi9XZWJLaXRETEwuaAppbmRleCBkOTQ0YjA3Li4yZmM1YzAzIDEwMDY0NAotLS0g
YS9XZWJLaXQvd2luL1dlYktpdERMTC5oCisrKyBiL1dlYktpdC93aW4vV2ViS2l0RExMLmgKQEAg
LTMwLDYgKzMwLDE2IEBACiAjZGVmaW5lIF9IQVNfRVhDRVBUSU9OUyAwCiAjZW5kaWYKIAorI2lm
IGRlZmluZWQoV0lOMzIpIHx8IGRlZmluZWQoX1dJTjMyKQorI2lmIGRlZmluZWQoQlVJTERJTkdf
SmF2YVNjcmlwdENvcmUpIHx8IGRlZmluZWQoQlVJTERJTkdfV1RGKQorI2RlZmluZSBKU19FWFBP
UlRfUFJJVkFURSBfX2RlY2xzcGVjKGRsbGV4cG9ydCkKKyNlbHNlCisjZGVmaW5lIEpTX0VYUE9S
VF9QUklWQVRFIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQorI2VuZGlmCisjZWxzZQorI2RlZmluZSBK
U19FWFBPUlRfUFJJVkFURQorI2VuZGlmCisKICNpbmNsdWRlIDx3aW5zb2NrMi5oPgogI2luY2x1
ZGUgPHdpbmRvd3MuaD4KICNpbmNsdWRlIDx3dGYvSGFzaENvdW50ZWRTZXQuaD4KZGlmZiAtLWdp
dCBhL1dlYktpdExpYnJhcmllcy9DaGFuZ2VMb2cgYi9XZWJLaXRMaWJyYXJpZXMvQ2hhbmdlTG9n
CmluZGV4IGYyMTdiMjYuLjZlN2I1MDkgMTAwNjQ0Ci0tLSBhL1dlYktpdExpYnJhcmllcy9DaGFu
Z2VMb2cKKysrIGIvV2ViS2l0TGlicmFyaWVzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisy
MDA5LTA3LTMwICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEaXNhYmxlIE1T
VkMgd2FybmluZyA0MjUxIGFib3V0IHRoZSBuZWVkIHRvIHRoZSB0eXBlcyBvZiBtZW1iZXIgdmFy
aWFibGVzCisgICAgICAgIHRoYXQgYXJlbid0IGV4cG9ydGVkIHlldC4gV2UgZGVjaWRlIHRvIGln
bm9yZSB0aGlzIHdhcm5pbmcsIGFzIGZpeGluZyBpdAorICAgICAgICByZXF1aXJlcyBleHBsaWNp
dGx5IGV4cG9ydGluZyBhbGwgdGVtcGxhdGUgaW5zdGFudGlhdGlvbnMgdXNlZCBpbiBleHBvcnRl
ZAorICAgICAgICBjbGFzc2VzJyBtZW1iZXIgdmFyaWFibGVzLiBBbGwgb2YgdGhhdCBkb2Vzbid0
IHNlZW0gdG8gYmUgbmVjZXNzYXJ5LCBhcworICAgICAgICB0aGUgc3VjY2Vzc2Z1bCB1c2Ugb2Yg
LmRlZiBmaWxlcyB3aXRoIGhhbmQtcGlja2VkIHN5bWJvbHMgcHJvb3Zlcy4KKworICAgICAgICBB
cyBhIHNpZGUtbm90ZSBRdCBmb3IgZXhhbXBsZSBoYXMgdGhpcyBwYXJ0aWN1bGFyIHdhcm5pbmcg
Z2xvYmFsbHkKKyAgICAgICAgZGlzYWJsZWQgKHZpYSBwcmFnbWEgaW4gcWdsb2JhbC5oKSBhbmQg
aXQncyB3b3JraW5nIGp1c3QgZmluZSBmb3IKKyAgICAgICAgZXZlcnlvbmUuCisKKyAgICAgICAg
KiB3aW4vdG9vbHMvdnNwcm9wcy9jb21tb24udnNwcm9wczoKKwogMjAwOS0wOC0xMiAgUGV0ZXIg
S2FzdGluZyAgPHBrYXN0aW5nQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFy
aW4gQWRsZXIuCmRpZmYgLS1naXQgYS9XZWJLaXRMaWJyYXJpZXMvd2luL3Rvb2xzL3ZzcHJvcHMv
Y29tbW9uLnZzcHJvcHMgYi9XZWJLaXRMaWJyYXJpZXMvd2luL3Rvb2xzL3ZzcHJvcHMvY29tbW9u
LnZzcHJvcHMKaW5kZXggNGM3YzlkZi4uZTlmYWIyYyAxMDA2NDQKLS0tIGEvV2ViS2l0TGlicmFy
aWVzL3dpbi90b29scy92c3Byb3BzL2NvbW1vbi52c3Byb3BzCisrKyBiL1dlYktpdExpYnJhcmll
cy93aW4vdG9vbHMvdnNwcm9wcy9jb21tb24udnNwcm9wcwpAQCAtMTUsNyArMTUsNyBAQAogCQlX
YXJuaW5nTGV2ZWw9IjQiCiAJCVdhcm5Bc0Vycm9yPSJ0cnVlIgogCQlEZWJ1Z0luZm9ybWF0aW9u
Rm9ybWF0PSIzIgotCQlEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncz0iNDAxODs0MDY4OzQwOTk7NDEw
MDs0MTI3OzQxMzg7NDE4OTs0MjQ0OzQyNzU7NDI5MTs0MzA1OzQzNDQ7NDM1NTs0Mzg5OzQ1MDM7
NDUwNTs0NTEwOzQ1MTI7NDYxMDs0NzA2OzQ4MDA7NDk1MTs0OTUyOzQ5OTY7NjAxMTs2MDMxOzYy
MTE7NjI0Njs2MjU1OzYzODciCisJCURpc2FibGVTcGVjaWZpY1dhcm5pbmdzPSI0MDE4OzQwNjg7
NDA5OTs0MTAwOzQxMjc7NDEzODs0MTg5OzQyNDQ7NDI1MTs0Mjc1OzQyOTE7NDMwNTs0MzQ0OzQz
NTU7NDM4OTs0NTAzOzQ1MDU7NDUxMDs0NTEyOzQ2MTA7NDcwNjs0ODAwOzQ5NTE7NDk1Mjs0OTk2
OzYwMTE7NjAzMTs2MjExOzYyNDY7NjI1NTs2Mzg3IgogCS8+CiAJPFRvb2wKIAkJTmFtZT0iVkNM
aWJyYXJpYW5Ub29sIgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nIGIvV2ViS2l0
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IGNjYmJmMjEuLjIyYzkyM2EgMTAwNjQ0Ci0tLSBhL1dlYktp
dFRvb2xzL0NoYW5nZUxvZworKysgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NSBAQAorMjAwOS0wNy0yOCAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4
IGNvbXBpbGF0aW9uIG9uIHRoZSBNYWMgYW5kIFdpbmRvd3MuCisKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9jb25maWcuaDogTW92ZSBGYXN0TWFsbG9jLmggaW5jbHVzaW9uIHVudGlsIGFmdGVy
IHRoZSBkZWZpbml0aW9uIG9mCisgICAgICAgIEpTX0VYUE9SVERBVEEuCisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvcHRocmVhZHMvSmF2YVNjcmlwdFRocmVhZGluZ1B0aHJlYWRzLmNwcDogSW5j
bHVkZSBjb25maWcuaCBmb3IgdGhlCisgICAgICAgIGV4cG9ydCBtYWNyb3MuCisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvd2luL0RSVERlc2t0b3BOb3RpZmljYXRpb25QcmVzZW50ZXIuY3BwOiBE
aXR0by4KKwogMjAwOS0wOC0xNCAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tp
YS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCmRpZmYgLS1naXQg
YS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jb25maWcuaCBiL1dlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL2NvbmZpZy5oCmluZGV4IDMyMGVlNGEuLjExZWVjYzkgMTAwNjQ0Ci0tLSBhL1dl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2NvbmZpZy5oCisrKyBiL1dlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL2NvbmZpZy5oCkBAIC0yNiwxOCArMjYsMTggQEAKIAogI2luY2x1ZGUgPHd0Zi9Q
bGF0Zm9ybS5oPgogCisjaWYgUExBVEZPUk0oV0lOX09TKSAmJiAhQ09NUElMRVIoR0NDKQorI2Rl
ZmluZSBKU19FWFBPUlRfUFJJVkFURSBfX2RlY2xzcGVjKGRsbGltcG9ydCkKKyNlbHNlCisjZGVm
aW5lIEpTX0VYUE9SVF9QUklWQVRFCisjZW5kaWYKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiAjdW5k
ZWYgbmV3CiAjdW5kZWYgZGVsZXRlCiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNlbmRp
ZgogCi0jaWYgUExBVEZPUk0oV0lOX09TKSAmJiAhQ09NUElMRVIoR0NDKQotI2RlZmluZSBKU19F
WFBPUlREQVRBIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQotI2Vsc2UKLSNkZWZpbmUgSlNfRVhQT1JU
REFUQQotI2VuZGlmCi0KICNpZiBQTEFURk9STShXSU4pCiAjZGVmaW5lIFdURl9QTEFURk9STV9D
RiAxIAogI2lmIGRlZmluZWQoV0lOX0NBSVJPKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvcHRocmVhZHMvSmF2YVNjcmlwdFRocmVhZGluZ1B0aHJlYWRzLmNwcCBiL1dl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3B0aHJlYWRzL0phdmFTY3JpcHRUaHJlYWRpbmdQdGhy
ZWFkcy5jcHAKaW5kZXggM2FjMjU3ZC4uMWY1N2I4NCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvcHRocmVhZHMvSmF2YVNjcmlwdFRocmVhZGluZ1B0aHJlYWRzLmNwcAor
KysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9wdGhyZWFkcy9KYXZhU2NyaXB0VGhyZWFk
aW5nUHRocmVhZHMuY3BwCkBAIC0yNyw3ICsyNyw4IEBACiAgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKICAq
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KLSAKKworI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkphdmFT
Y3JpcHRUaHJlYWRpbmcuaCIKIAogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0
aW9uLmg+CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRFJURGVz
a3RvcE5vdGlmaWNhdGlvblByZXNlbnRlci5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS93aW4vRFJURGVza3RvcE5vdGlmaWNhdGlvblByZXNlbnRlci5jcHAKaW5kZXggZTc2OTk1Yi4u
ZmI1NTM1ZiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0RSVERl
c2t0b3BOb3RpZmljYXRpb25QcmVzZW50ZXIuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL3dpbi9EUlREZXNrdG9wTm90aWZpY2F0aW9uUHJlc2VudGVyLmNwcApAQCAtMjgsNiAr
MjgsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCisjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiRFJURGVza3RvcE5vdGlmaWNhdGlvblByZXNlbnRlci5oIgogCiAjaW5jbHVkZSAiRHVt
cFJlbmRlclRyZWUuaCIKLS0gCjEuNi40LjUzLmczZjU1ZQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58961</attachid>
            <date>2010-06-16 21:51:32 -0700</date>
            <delta_ts>2010-06-17 14:42:36 -0700</delta_ts>
            <desc>Use JS_EXPORT_PRIVATE to export individual symbols</desc>
            <filename>jscore_exports2.patch</filename>
            <type>text/plain</type>
            <size>125506</size>
            <attacher name="Kevin Ollivier">kevino</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaCAgKHJldmlzaW9uIDYxMzAxKQorKysg
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaCAgKHdvcmtpbmcgY29weSkKQEAgLTcx
LDIxICs3MSwyMSBAQAogCiAgICAgICAgIHN0YXRpYyB2b2lkIGR1bXBTdGF0aXN0aWNzKCk7CiAK
LSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBhZGRQcm9wZXJ0eVRyYW5zaXRp
b24oU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBh
dHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUsIHNpemVfdCYgb2Zmc2V0KTsKLSAgICAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBhZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4
aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBzaXplX3QmIG9m
ZnNldCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVj
dHVyZT4gYWRkUHJvcGVydHlUcmFuc2l0aW9uKFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVl
LCBzaXplX3QmIG9mZnNldCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQYXNz
UmVmUHRyPFN0cnVjdHVyZT4gYWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVy
ZShTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0
dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBvZmZzZXQpOwogICAgICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbihT
dHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHNpemVfdCYgb2Zmc2V0
KTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjaGFuZ2VQcm90b3R5cGVU
cmFuc2l0aW9uKFN0cnVjdHVyZSosIEpTVmFsdWUgcHJvdG90eXBlKTsKLSAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8U3RydWN0dXJlPiBkZXNwZWNpZnlGdW5jdGlvblRyYW5zaXRpb24oU3RydWN0
dXJlKiwgY29uc3QgSWRlbnRpZmllciYpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNoYW5nZVByb3RvdHlwZVRyYW5zaXRpb24oU3RydWN0
dXJlKiwgSlNWYWx1ZSBwcm90b3R5cGUpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGRlc3BlY2lmeUZ1bmN0aW9uVHJhbnNpdGlvbihTdHJ1
Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJik7CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0
cnVjdHVyZT4gZ2V0dGVyU2V0dGVyVHJhbnNpdGlvbihTdHJ1Y3R1cmUqKTsKICAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiB0b0NhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9u
KFN0cnVjdHVyZSopOwogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHRvVW5j
YWNoZWFibGVEaWN0aW9uYXJ5VHJhbnNpdGlvbihTdHJ1Y3R1cmUqKTsKIAogICAgICAgICBQYXNz
UmVmUHRyPFN0cnVjdHVyZT4gZmxhdHRlbkRpY3Rpb25hcnlTdHJ1Y3R1cmUoSlNPYmplY3QqKTsK
IAotICAgICAgICB+U3RydWN0dXJlKCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIH5TdHJ1
Y3R1cmUoKTsKIAogICAgICAgICAvLyBUaGVzZSBzaG91bGQgYmUgdXNlZCB3aXRoIGNhdXRpb24u
ICAKLSAgICAgICAgc2l6ZV90IGFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNp
ZmljVmFsdWUpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzaXplX3QgYWRkUHJvcGVydHlX
aXRob3V0VHJhbnNpdGlvbihjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVk
IGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSk7CiAgICAgICAgIHNpemVfdCByZW1v
dmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSk7CiAgICAgICAgIHZvaWQgc2V0UHJvdG90eXBlV2l0aG91dFRyYW5zaXRpb24oSlNWYWx1ZSBw
cm90b3R5cGUpIHsgbV9wcm90b3R5cGUgPSBwcm90b3R5cGU7IH0KICAgICAgICAgCkBAIC0xMDYs
NyArMTA2LDcgQEAKICAgICAgICAgYm9vbCBpc1VzaW5nSW5saW5lU3RvcmFnZSgpIGNvbnN0Owog
CiAgICAgICAgIHNpemVfdCBnZXQoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKLSAg
ICAgICAgc2l6ZV90IGdldChjb25zdCBVU3RyaW5nOjpSZXAqIHJlcCwgdW5zaWduZWQmIGF0dHJp
YnV0ZXMsIEpTQ2VsbComIHNwZWNpZmljVmFsdWUpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzaXplX3QgZ2V0KGNvbnN0IFVTdHJpbmc6OlJlcCogcmVwLCB1bnNpZ25lZCYgYXR0cmlidXRl
cywgSlNDZWxsKiYgc3BlY2lmaWNWYWx1ZSk7CiAgICAgICAgIHNpemVfdCBnZXQoY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcywgSlNDZWxsKiYgc3Bl
Y2lmaWNWYWx1ZSkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKCFwcm9wZXJ0eU5hbWUu
aXNOdWxsKCkpOwpAQCAtMTE2LDcgKzExNiw3IEBACiAgICAgICAgIHsKICAgICAgICAgICAgIHJl
dHVybiBtX3NwZWNpZmljVmFsdWVJblByZXZpb3VzID09IHNwZWNpZmljVmFsdWU7CiAgICAgICAg
IH0KLSAgICAgICAgYm9vbCBoYXNUcmFuc2l0aW9uKFVTdHJpbmc6OlJlcCosIHVuc2lnbmVkIGF0
dHJpYnV0ZXMpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGhhc1RyYW5zaXRpb24o
VVN0cmluZzo6UmVwKiwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAgICAgIGJvb2wgaGFzVHJh
bnNpdGlvbihjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0
ZXMpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBoYXNUcmFuc2l0aW9uKHByb3BlcnR5
TmFtZS5fdXN0cmluZy5yZXAoKSwgYXR0cmlidXRlcyk7CkBAIC0xMzIsNyArMTMyLDcgQEAKICAg
ICAgICAgCiAgICAgICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydHlU
YWJsZSA/ICFtX3Byb3BlcnR5VGFibGUtPmtleUNvdW50IDogbV9vZmZzZXQgPT0gbm9PZmZzZXQ7
IH0KIAotICAgICAgICB2b2lkIGRlc3BlY2lmeURpY3Rpb25hcnlGdW5jdGlvbihjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGRl
c3BlY2lmeURpY3Rpb25hcnlGdW5jdGlvbihjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUp
OwogICAgICAgICB2b2lkIGRpc2FibGVTcGVjaWZpY0Z1bmN0aW9uVHJhY2tpbmcoKSB7IG1fc3Bl
Y2lmaWNGdW5jdGlvblRocmFzaENvdW50ID0gbWF4U3BlY2lmaWNGdW5jdGlvblRocmFzaENvdW50
OyB9CiAKICAgICAgICAgdm9pZCBzZXRFbnVtZXJhdGlvbkNhY2hlKEpTUHJvcGVydHlOYW1lSXRl
cmF0b3IqIGVudW1lcmF0aW9uQ2FjaGUpOyAvLyBEZWZpbmVkIGluIEpTUHJvcGVydHlOYW1lSXRl
cmF0b3IuaC4KQEAgLTE0Miw3ICsxNDIsNyBAQAogICAgICAgICAKICAgICBwcml2YXRlOgogCi0g
ICAgICAgIFN0cnVjdHVyZShKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8mLCB1bnNp
Z25lZCBhbm9ueW1vdXNTbG90Q291bnQpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBTdHJ1
Y3R1cmUoSlNWYWx1ZSBwcm90b3R5cGUsIGNvbnN0IFR5cGVJbmZvJiwgdW5zaWduZWQgYW5vbnlt
b3VzU2xvdENvdW50KTsKICAgICAgICAgCiAgICAgICAgIHR5cGVkZWYgZW51bSB7IAogICAgICAg
ICAgICAgTm9uZURpY3Rpb25hcnlLaW5kID0gMCwKQEAgLTE2Niw3ICsxNjYsNyBAQAogICAgICAg
ICB2b2lkIGRlc3BlY2lmeUFsbEZ1bmN0aW9ucygpOwogCiAgICAgICAgIFByb3BlcnR5TWFwSGFz
aFRhYmxlKiBjb3B5UHJvcGVydHlUYWJsZSgpOwotICAgICAgICB2b2lkIG1hdGVyaWFsaXplUHJv
cGVydHlNYXAoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBtYXRlcmlhbGl6ZVBy
b3BlcnR5TWFwKCk7CiAgICAgICAgIHZvaWQgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNz
YXJ5KCkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKG1fcHJvcGVydHlUYWJsZSB8fCAhbV9w
cmV2aW91cykgICAgICAgICAgICAgCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3Ry
aW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oICAg
KHJldmlzaW9uIDYxMzAxKQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oICAg
KHdvcmtpbmcgY29weSkKQEAgLTYyLDcgKzYyLDcgQEAKICAgICB0eXBlZGVmIHZvaWQgKCpKU1N0
cmluZ0ZpbmFsaXplckNhbGxiYWNrKShKU1N0cmluZyosIHZvaWQqIGNvbnRleHQpOwogICAgIEpT
U3RyaW5nKiBqc1N0cmluZ1dpdGhGaW5hbGl6ZXIoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYs
IEpTU3RyaW5nRmluYWxpemVyQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQqIGNvbnRleHQpOwogCi0g
ICAgY2xhc3MgSlNfRVhQT1JUQ0xBU1MgSlNTdHJpbmcgOiBwdWJsaWMgSlNDZWxsIHsKKyAgICBj
bGFzcyBKU1N0cmluZyA6IHB1YmxpYyBKU0NlbGwgewogICAgIHB1YmxpYzoKICAgICAgICAgZnJp
ZW5kIGNsYXNzIEpJVDsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpTR2xvYmFsRGF0YTsKQEAgLTMy
MSw3ICszMjEsNyBAQAogICAgICAgICAgICAgICAgIG1fb3RoZXIubV9maW5hbGl6ZXJDYWxsYmFj
ayh0aGlzLCBtX290aGVyLm1fZmluYWxpemVyQ29udGV4dCk7CiAgICAgICAgIH0KIAotICAgICAg
ICBjb25zdCBVU3RyaW5nJiB2YWx1ZShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CisgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIGNvbnN0IFVTdHJpbmcmIHZhbHVlKEV4ZWNTdGF0ZSogZXhlYykgY29u
c3QKICAgICAgICAgewogICAgICAgICAgICAgaWYgKGlzUm9wZSgpKQogICAgICAgICAgICAgICAg
IHJlc29sdmVSb3BlKGV4ZWMpOwpAQCAtMzU1LDcgKzM1NSw3IEBACiAgICAgICAgIHsKICAgICAg
ICAgfQogCi0gICAgICAgIHZvaWQgcmVzb2x2ZVJvcGUoRXhlY1N0YXRlKikgY29uc3Q7CisgICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVzb2x2ZVJvcGUoRXhlY1N0YXRlKikgY29uc3Q7
CiAKICAgICAgICAgdm9pZCBhcHBlbmRTdHJpbmdJbkNvbnN0cnVjdCh1bnNpZ25lZCYgaW5kZXgs
IGNvbnN0IFVTdHJpbmcmIHN0cmluZykKICAgICAgICAgewpAQCAtMzkzLDE5ICszOTMsMTkgQEAK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgSlNWYWx1ZSB0b1By
aW1pdGl2ZShFeGVjU3RhdGUqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKSBjb25zdDsKLSAgICAg
ICAgdmlydHVhbCBib29sIGdldFByaW1pdGl2ZU51bWJlcihFeGVjU3RhdGUqLCBkb3VibGUmIG51
bWJlciwgSlNWYWx1ZSYgdmFsdWUpOwotICAgICAgICB2aXJ0dWFsIGJvb2wgdG9Cb29sZWFuKEV4
ZWNTdGF0ZSopIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIGRvdWJsZSB0b051bWJlcihFeGVjU3Rh
dGUqKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCBKU09iamVjdCogdG9PYmplY3QoRXhlY1N0YXRl
KikgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgVVN0cmluZyB0b1N0cmluZyhFeGVjU3RhdGUqKSBj
b25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCBKU1ZhbHVlIHRvUHJpbWl0
aXZlKEV4ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpIGNvbnN0OworICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIGJvb2wgZ2V0UHJpbWl0aXZlTnVtYmVyKEV4ZWNTdGF0
ZSosIGRvdWJsZSYgbnVtYmVyLCBKU1ZhbHVlJiB2YWx1ZSk7CisgICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHZpcnR1YWwgYm9vbCB0b0Jvb2xlYW4oRXhlY1N0YXRlKikgY29uc3Q7CisgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgZG91YmxlIHRvTnVtYmVyKEV4ZWNTdGF0ZSopIGNv
bnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIEpTT2JqZWN0KiB0b09iamVj
dChFeGVjU3RhdGUqKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCBV
U3RyaW5nIHRvU3RyaW5nKEV4ZWNTdGF0ZSopIGNvbnN0OwogCi0gICAgICAgIHZpcnR1YWwgSlNP
YmplY3QqIHRvVGhpc09iamVjdChFeGVjU3RhdGUqKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgdmlydHVhbCBKU09iamVjdCogdG9UaGlzT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0
OwogCiAgICAgICAgIC8vIEFjdHVhbGx5IGdldFByb3BlcnR5U2xvdCwgbm90IGdldE93blByb3Bl
cnR5U2xvdCAoc2VlIEpTQ2VsbCkuCi0gICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0
eVNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmKTsKLSAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3Rh
dGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgICAgICB2aXJ0
dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
dmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgICAgICBKU19FWFBPUlRfUFJJ
VkFURSB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIHVuc2lnbmVk
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogCiAgICAgICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBzX21heEludGVybmFsUm9wZUxlbmd0aCA9IDM7CiAKSW5kZXg6IEphdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmggICAocmV2aXNpb24gNjEzMDEpCisrKyBKYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmggICAod29ya2luZyBjb3B5KQpAQCAtNzQsMjYgKzc0LDI2IEBACiAg
ICAgICAgIGZyaWVuZCBjbGFzcyBCYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplcjsKICAgICAgICAg
ZnJpZW5kIGNsYXNzIEpJVDsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpTQ2VsbDsKLSAgICAgICAg
ZnJpZW5kIHZvaWQgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBIYXNoRW50cnkqIGVudHJ5LCBKU09iamVjdCogdGhpc09iaiwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpOworICAgICAgICBmcmllbmQgSlNfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IEhhc2hFbnRyeSogZW50cnksIEpTT2JqZWN0KiB0aGlzT2JqLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCk7CiAKICAgICBwdWJsaWM6CiAg
ICAgICAgIGV4cGxpY2l0IEpTT2JqZWN0KE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4pOwog
Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBtYXJrQ2hpbGRyZW4oTWFya1N0YWNrJik7CisgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgdm9pZCBtYXJrQ2hpbGRyZW4oTWFya1N0YWNrJik7
CiAgICAgICAgIEFMV0FZU19JTkxJTkUgdm9pZCBtYXJrQ2hpbGRyZW5EaXJlY3QoTWFya1N0YWNr
JiBtYXJrU3RhY2spOwogCiAgICAgICAgIC8vIFRoZSBpbmxpbmUgdmlydHVhbCBkZXN0cnVjdG9y
IGNhbm5vdCBiZSB0aGUgZmlyc3QgdmlydHVhbCBmdW5jdGlvbiBkZWNsYXJlZAogICAgICAgICAv
LyBpbiB0aGUgY2xhc3MgYXMgaXQgcmVzdWx0cyBpbiB0aGUgdnRhYmxlIGJlaW5nIGdlbmVyYXRl
ZCBhcyBhIHdlYWsgc3ltYm9sCiAgICAgICAgIHZpcnR1YWwgfkpTT2JqZWN0KCk7CiAKLSAgICAg
ICAgSlNWYWx1ZSBwcm90b3R5cGUoKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
SlNWYWx1ZSBwcm90b3R5cGUoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRQcm90b3R5cGUoSlNW
YWx1ZSBwcm90b3R5cGUpOwogICAgICAgICBib29sIHNldFByb3RvdHlwZVdpdGhDeWNsZUNoZWNr
KEpTVmFsdWUgcHJvdG90eXBlKTsKICAgICAgICAgCiAgICAgICAgIHZvaWQgc2V0U3RydWN0dXJl
KE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4pOwogICAgICAgICBTdHJ1Y3R1cmUqIGluaGVy
aXRvcklEKCk7CiAKLSAgICAgICAgdmlydHVhbCBVU3RyaW5nIGNsYXNzTmFtZSgpIGNvbnN0Owor
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIFVTdHJpbmcgY2xhc3NOYW1lKCkgY29u
c3Q7CiAKICAgICAgICAgSlNWYWx1ZSBnZXQoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lKSBjb25zdDsKICAgICAgICAgSlNWYWx1ZSBnZXQoRXhlY1N0YXRlKiwgdW5z
aWduZWQgcHJvcGVydHlOYW1lKSBjb25zdDsKQEAgLTEwMiw0NSArMTAyLDQ1IEBACiAgICAgICAg
IGJvb2wgZ2V0UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90Jik7CiAgICAgICAgIGJvb2wgZ2V0UHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNT
dGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9y
Jik7CiAKLSAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUq
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgICAg
ICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5
RGVzY3JpcHRvciYpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIGJvb2wgZ2V0
T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgYm9v
bCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCBib29sIGdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJv
cGVydHlEZXNjcmlwdG9yJik7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHB1dChFeGVjU3RhdGUq
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3Bl
cnR5U2xvdCYpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcHV0KEV4ZWNTdGF0ZSosIHVuc2lnbmVk
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IHZpcnR1YWwgdm9pZCBwdXQoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgdmlydHVhbCB2b2lkIHB1dChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUgdmFsdWUpOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBwdXRXaXRoQXR0cmli
dXRlcyhKU0dsb2JhbERhdGEqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIGJvb2wgY2hlY2tSZWFkT25seSwgUHV0UHJv
cGVydHlTbG90JiBzbG90KTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHB1dFdpdGhBdHRyaWJ1dGVz
KEpTR2xvYmFsRGF0YSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwdXRXaXRo
QXR0cmlidXRlcyhKU0dsb2JhbERhdGEqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUg
dmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcHV0V2l0
aEF0dHJpYnV0ZXMoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBib29sIGNoZWNrUmVhZE9ubHksIFB1
dFByb3BlcnR5U2xvdCYgc2xvdCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwdXRXaXRoQXR0cmli
dXRlcyhFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUg
dmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcHV0V2l0
aEF0dHJpYnV0ZXMoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZh
bHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmly
dHVhbCB2b2lkIHB1dFdpdGhBdHRyaWJ1dGVzKEpTR2xvYmFsRGF0YSosIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgYm9v
bCBjaGVja1JlYWRPbmx5LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpOworICAgICAgICBKU19FWFBP
UlRfUFJJVkFURSB2aXJ0dWFsIHZvaWQgcHV0V2l0aEF0dHJpYnV0ZXMoSlNHbG9iYWxEYXRhKiwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBh
dHRyaWJ1dGVzKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCB2b2lkIHB1dFdp
dGhBdHRyaWJ1dGVzKEpTR2xvYmFsRGF0YSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IHZpcnR1YWwgdm9pZCBwdXRXaXRoQXR0cmlidXRlcyhFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIGJv
b2wgY2hlY2tSZWFkT25seSwgUHV0UHJvcGVydHlTbG90JiBzbG90KTsKKyAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgdmlydHVhbCB2b2lkIHB1dFdpdGhBdHRyaWJ1dGVzKEV4ZWNTdGF0ZSosIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0
cmlidXRlcyk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgdm9pZCBwdXRXaXRo
QXR0cmlidXRlcyhFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFs
dWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogCiAgICAgICAgIGJvb2wgcHJvcGVydHlJc0VudW1l
cmFibGUoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKSBjb25zdDsK
IAotICAgICAgICBib29sIGhhc1Byb3BlcnR5KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSkgY29uc3Q7Ci0gICAgICAgIGJvb2wgaGFzUHJvcGVydHkoRXhlY1N0YXRl
KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgYm9vbCBoYXNQcm9wZXJ0eShFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUpIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGhhc1Byb3BlcnR5
KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSkgY29uc3Q7CiAgICAgICAgIGJvb2wg
aGFzT3duUHJvcGVydHkoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
KSBjb25zdDsKIAotICAgICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRl
KiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKLSAgICAgICAgdmlydHVhbCBib29s
IGRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7CisgICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgYm9vbCBkZWxldGVQcm9wZXJ0eShFeGVjU3Rh
dGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOworICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSB2aXJ0dWFsIGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiwgdW5zaWduZWQg
cHJvcGVydHlOYW1lKTsKIAotICAgICAgICB2aXJ0dWFsIEpTVmFsdWUgZGVmYXVsdFZhbHVlKEV4
ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpIGNvbnN0OworICAgICAgICBKU19FWFBP
UlRfUFJJVkFURSB2aXJ0dWFsIEpTVmFsdWUgZGVmYXVsdFZhbHVlKEV4ZWNTdGF0ZSosIFByZWZl
cnJlZFByaW1pdGl2ZVR5cGUpIGNvbnN0OwogCi0gICAgICAgIHZpcnR1YWwgYm9vbCBoYXNJbnN0
YW5jZShFeGVjU3RhdGUqLCBKU1ZhbHVlLCBKU1ZhbHVlIHByb3RvdHlwZVByb3BlcnR5KTsKKyAg
ICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCBib29sIGhhc0luc3RhbmNlKEV4ZWNTdGF0
ZSosIEpTVmFsdWUsIEpTVmFsdWUgcHJvdG90eXBlUHJvcGVydHkpOwogCi0gICAgICAgIHZpcnR1
YWwgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5Jiwg
RW51bWVyYXRpb25Nb2RlIG1vZGUgPSBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKLSAgICAg
ICAgdmlydHVhbCB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSA9IEV4Y2x1ZGVEb250RW51bVByb3BlcnRp
ZXMpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIHZvaWQgZ2V0UHJvcGVydHlO
YW1lcyhFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSBtb2Rl
ID0gRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IHZpcnR1YWwgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlIG1vZGUgPSBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVz
KTsKIAogICAgICAgICB2aXJ0dWFsIEpTVmFsdWUgdG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgUHJl
ZmVycmVkUHJpbWl0aXZlVHlwZSA9IE5vUHJlZmVyZW5jZSkgY29uc3Q7Ci0gICAgICAgIHZpcnR1
YWwgYm9vbCBnZXRQcmltaXRpdmVOdW1iZXIoRXhlY1N0YXRlKiwgZG91YmxlJiBudW1iZXIsIEpT
VmFsdWUmIHZhbHVlKTsKLSAgICAgICAgdmlydHVhbCBib29sIHRvQm9vbGVhbihFeGVjU3RhdGUq
KSBjb25zdDsKLSAgICAgICAgdmlydHVhbCBkb3VibGUgdG9OdW1iZXIoRXhlY1N0YXRlKikgY29u
c3Q7Ci0gICAgICAgIHZpcnR1YWwgVVN0cmluZyB0b1N0cmluZyhFeGVjU3RhdGUqKSBjb25zdDsK
LSAgICAgICAgdmlydHVhbCBKU09iamVjdCogdG9PYmplY3QoRXhlY1N0YXRlKikgY29uc3Q7Cisg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgYm9vbCBnZXRQcmltaXRpdmVOdW1iZXIo
RXhlY1N0YXRlKiwgZG91YmxlJiBudW1iZXIsIEpTVmFsdWUmIHZhbHVlKTsKKyAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgdmlydHVhbCBib29sIHRvQm9vbGVhbihFeGVjU3RhdGUqKSBjb25zdDsK
KyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCBkb3VibGUgdG9OdW1iZXIoRXhlY1N0
YXRlKikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgVVN0cmluZyB0
b1N0cmluZyhFeGVjU3RhdGUqKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmly
dHVhbCBKU09iamVjdCogdG9PYmplY3QoRXhlY1N0YXRlKikgY29uc3Q7CiAKLSAgICAgICAgdmly
dHVhbCBKU09iamVjdCogdG9UaGlzT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0OwotICAgICAgICB2
aXJ0dWFsIEpTT2JqZWN0KiB1bndyYXBwZWRPYmplY3QoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgdmlydHVhbCBKU09iamVjdCogdG9UaGlzT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0Owor
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIEpTT2JqZWN0KiB1bndyYXBwZWRPYmpl
Y3QoKTsKIAogICAgICAgICBib29sIGdldFByb3BlcnR5U3BlY2lmaWNWYWx1ZShFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDZWxsKiYgc3BlY2lmaWNG
dW5jdGlvbikgY29uc3Q7CiAKQEAgLTE3NSwxMyArMTc1LDEzIEBACiAgICAgICAgIGJvb2wgaGFz
Q3VzdG9tUHJvcGVydGllcygpIHsgcmV0dXJuICFtX3N0cnVjdHVyZS0+aXNFbXB0eSgpOyB9CiAg
ICAgICAgIGJvb2wgaGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpIHsgcmV0dXJuIG1fc3RydWN0
dXJlLT5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCk7IH0KIAotICAgICAgICB2b2lkIHB1dERp
cmVjdChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2ln
bmVkIGF0dHIsIGJvb2wgY2hlY2tSZWFkT25seSwgUHV0UHJvcGVydHlTbG90JiBzbG90KTsKLSAg
ICAgICAgdm9pZCBwdXREaXJlY3QoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyID0gMCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IHZvaWQgcHV0RGlyZWN0KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSwgdW5zaWduZWQgYXR0ciwgYm9vbCBjaGVja1JlYWRPbmx5LCBQdXRQcm9wZXJ0eVNsb3Qm
IHNsb3QpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHB1dERpcmVjdChjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHIgPSAw
KTsKIAotICAgICAgICB2b2lkIHB1dERpcmVjdEZ1bmN0aW9uKGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgSlNDZWxsKiB2YWx1ZSwgdW5zaWduZWQgYXR0ciA9IDApOwotICAgICAgICB2
b2lkIHB1dERpcmVjdEZ1bmN0aW9uKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlND
ZWxsKiB2YWx1ZSwgdW5zaWduZWQgYXR0ciwgYm9vbCBjaGVja1JlYWRPbmx5LCBQdXRQcm9wZXJ0
eVNsb3QmIHNsb3QpOwotICAgICAgICB2b2lkIHB1dERpcmVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSog
ZXhlYywgSW50ZXJuYWxGdW5jdGlvbiogZnVuY3Rpb24sIHVuc2lnbmVkIGF0dHIgPSAwKTsKLSAg
ICAgICAgdm9pZCBwdXREaXJlY3RGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTRnVuY3Rpb24q
IGZ1bmN0aW9uLCB1bnNpZ25lZCBhdHRyID0gMCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IHZvaWQgcHV0RGlyZWN0RnVuY3Rpb24oY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBK
U0NlbGwqIHZhbHVlLCB1bnNpZ25lZCBhdHRyID0gMCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQgcHV0RGlyZWN0RnVuY3Rpb24oY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBKU0NlbGwqIHZhbHVlLCB1bnNpZ25lZCBhdHRyLCBib29sIGNoZWNrUmVhZE9ubHksIFB1dFBy
b3BlcnR5U2xvdCYgc2xvdCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcHV0RGly
ZWN0RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBJbnRlcm5hbEZ1bmN0aW9uKiBmdW5jdGlvbiwg
dW5zaWduZWQgYXR0ciA9IDApOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHB1dERp
cmVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNGdW5jdGlvbiogZnVuY3Rpb24sIHVuc2ln
bmVkIGF0dHIgPSAwKTsKIAogICAgICAgICB2b2lkIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQg
YXR0ciA9IDApOwogICAgICAgICB2b2lkIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRp
b24oY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0NlbGwqIHZhbHVlLCB1bnNpZ25l
ZCBhdHRyID0gMCk7CkBAIC0xOTIsMTMgKzE5MiwxMyBAQAogICAgICAgICBKU1ZhbHVlIGdldERp
cmVjdE9mZnNldChzaXplX3Qgb2Zmc2V0KSBjb25zdCB7IHJldHVybiBKU1ZhbHVlOjpkZWNvZGUo
cHJvcGVydHlTdG9yYWdlKClbb2Zmc2V0XSk7IH0KICAgICAgICAgdm9pZCBwdXREaXJlY3RPZmZz
ZXQoc2l6ZV90IG9mZnNldCwgSlNWYWx1ZSB2YWx1ZSkgeyBwcm9wZXJ0eVN0b3JhZ2UoKVtvZmZz
ZXRdID0gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsgfQogCi0gICAgICAgIHZvaWQgZmlsbEdldHRl
clByb3BlcnR5U2xvdChQcm9wZXJ0eVNsb3QmLCBKU1ZhbHVlKiBsb2NhdGlvbik7CisgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZmlsbEdldHRlclByb3BlcnR5U2xvdChQcm9wZXJ0eVNs
b3QmLCBKU1ZhbHVlKiBsb2NhdGlvbik7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGRlZmluZUdl
dHRlcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0
KiBnZXR0ZXJGdW5jdGlvbiwgdW5zaWduZWQgYXR0cmlidXRlcyA9IDApOwotICAgICAgICB2aXJ0
dWFsIHZvaWQgZGVmaW5lU2V0dGVyKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgSlNPYmplY3QqIHNldHRlckZ1bmN0aW9uLCB1bnNpZ25lZCBhdHRyaWJ1dGVzID0g
MCk7Ci0gICAgICAgIHZpcnR1YWwgSlNWYWx1ZSBsb29rdXBHZXR0ZXIoRXhlY1N0YXRlKiwgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKLSAgICAgICAgdmlydHVhbCBKU1ZhbHVlIGxv
b2t1cFNldHRlcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOwot
ICAgICAgICB2aXJ0dWFsIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3Vs
ZFRocm93KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCB2b2lkIGRlZmluZUdl
dHRlcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0
KiBnZXR0ZXJGdW5jdGlvbiwgdW5zaWduZWQgYXR0cmlidXRlcyA9IDApOworICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSB2aXJ0dWFsIHZvaWQgZGVmaW5lU2V0dGVyKEV4ZWNTdGF0ZSosIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNPYmplY3QqIHNldHRlckZ1bmN0aW9uLCB1bnNp
Z25lZCBhdHRyaWJ1dGVzID0gMCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwg
SlNWYWx1ZSBsb29rdXBHZXR0ZXIoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCBKU1ZhbHVlIGxvb2t1
cFNldHRlcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOworICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoRXhl
Y1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0
b3ImLCBib29sIHNob3VsZFRocm93KTsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNHbG9iYWxP
YmplY3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNW
YXJpYWJsZU9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0yMDcsNyArMjA3LDcg
QEAKIAogICAgICAgICB2aXJ0dWFsIENvbXBsVHlwZSBleGNlcHRpb25UeXBlKCkgY29uc3QgeyBy
ZXR1cm4gVGhyb3c7IH0KIAotICAgICAgICB2b2lkIGFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKHNp
emVfdCBvbGRTaXplLCBzaXplX3QgbmV3U2l6ZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IHZvaWQgYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2Uoc2l6ZV90IG9sZFNpemUsIHNpemVfdCBuZXdT
aXplKTsKICAgICAgICAgdm9pZCBhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZUlubGluZShzaXplX3Qg
b2xkU2l6ZSwgc2l6ZV90IG5ld1NpemUpOwogICAgICAgICBib29sIGlzVXNpbmdJbmxpbmVTdG9y
YWdlKCkgY29uc3QgeyByZXR1cm4gbV9zdHJ1Y3R1cmUtPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCk7
IH0KIApAQCAtMjY0LDcgKzI2NCw3IEBACiAgICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxKU1ZhbHVlKj4oJnByb3BlcnR5U3RvcmFnZSgpW29mZnNldF0pOwogICAgICAgICB9CiAK
LSAgICAgICAgdm9pZCBwdXREaXJlY3RJbnRlcm5hbChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHIsIGJvb2wgY2hlY2tSZWFkT25seSwg
UHV0UHJvcGVydHlTbG90JiBzbG90LCBKU0NlbGwqKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgdm9pZCBwdXREaXJlY3RJbnRlcm5hbChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHIsIGJvb2wgY2hlY2tSZWFkT25seSwgUHV0UHJv
cGVydHlTbG90JiBzbG90LCBKU0NlbGwqKTsKICAgICAgICAgdm9pZCBwdXREaXJlY3RJbnRlcm5h
bChKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUg
dmFsdWUsIHVuc2lnbmVkIGF0dHIsIGJvb2wgY2hlY2tSZWFkT25seSwgUHV0UHJvcGVydHlTbG90
JiBzbG90KTsKICAgICAgICAgdm9pZCBwdXREaXJlY3RJbnRlcm5hbChKU0dsb2JhbERhdGEmLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0
dHIgPSAwKTsKIApAQCAtMzExLDcgKzMxMSw3IEBACiAgICAgbV9zdHJ1Y3R1cmUtPmRlcmVmKCk7
CiB9CiAKLWlubGluZSBKU1ZhbHVlIEpTT2JqZWN0Ojpwcm90b3R5cGUoKSBjb25zdAorSlNfRVhQ
T1JUX1BSSVZBVEUgaW5saW5lIEpTVmFsdWUgSlNPYmplY3Q6OnByb3RvdHlwZSgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIG1fc3RydWN0dXJlLT5zdG9yZWRQcm90b3R5cGUoKTsKIH0KQEAgLTM5MSw3
ICszOTEsNyBAQAogLy8gSXQgbWF5IHNlZW0gY3JhenkgdG8gaW5saW5lIGEgZnVuY3Rpb24gdGhp
cyBsYXJnZSwgZXNwZWNpYWxseSBhIHZpcnR1YWwgZnVuY3Rpb24sCiAvLyBidXQgaXQgbWFrZXMg
YSBiaWcgZGlmZmVyZW5jZSB0byBwcm9wZXJ0eSBsb29rdXAgdGhhdCBkZXJpdmVkIGNsYXNzZXMg
Y2FuIGlubGluZSB0aGVpcgogLy8gYmFzZSBjbGFzcyBjYWxsIHRvIHRoaXMuCi1BTFdBWVNfSU5M
SU5FIGJvb2wgSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorSlNfRVhQ
T1JUX1BSSVZBVEUgQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNs
b3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCYgc2xvdCkKIHsKICAgICByZXR1cm4gaW5saW5lR2V0T3duUHJvcGVydHlTbG90KGV4
ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CkBAIC01NzYsNyArNTc2LDcgQEAKICAgICBwdXRE
aXJlY3RJbnRlcm5hbChwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzLCBmYWxzZSwgc2xv
dCwgZ2V0SlNGdW5jdGlvbihnbG9iYWxEYXRhLCB2YWx1ZSkpOwogfQogCi1pbmxpbmUgdm9pZCBK
U09iamVjdDo6cHV0RGlyZWN0KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgYm9vbCBjaGVja1JlYWRPbmx5LCBQdXRQcm9w
ZXJ0eVNsb3QmIHNsb3QpCitKU19FWFBPUlRfUFJJVkFURSBpbmxpbmUgdm9pZCBKU09iamVjdDo6
cHV0RGlyZWN0KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwg
dW5zaWduZWQgYXR0cmlidXRlcywgYm9vbCBjaGVja1JlYWRPbmx5LCBQdXRQcm9wZXJ0eVNsb3Qm
IHNsb3QpCiB7CiAgICAgQVNTRVJUKHZhbHVlKTsKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFs
dWUpIHx8IEhlYXA6OmhlYXAodmFsdWUpID09IEhlYXA6OmhlYXAodGhpcykpOwpAQCAtNTg0LDE4
ICs1ODQsMTggQEAKICAgICBwdXREaXJlY3RJbnRlcm5hbChwcm9wZXJ0eU5hbWUsIHZhbHVlLCBh
dHRyaWJ1dGVzLCBjaGVja1JlYWRPbmx5LCBzbG90LCAwKTsKIH0KIAotaW5saW5lIHZvaWQgSlNP
YmplY3Q6OnB1dERpcmVjdChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUg
dmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCitKU19FWFBPUlRfUFJJVkFURSBpbmxpbmUgdm9p
ZCBKU09iamVjdDo6cHV0RGlyZWN0KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKIHsKICAgICBQdXRQcm9wZXJ0eVNsb3Qg
c2xvdDsKICAgICBwdXREaXJlY3RJbnRlcm5hbChwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1
dGVzLCBmYWxzZSwgc2xvdCwgMCk7CiB9CiAKLWlubGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJl
Y3RGdW5jdGlvbihjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQ2VsbCogdmFsdWUs
IHVuc2lnbmVkIGF0dHJpYnV0ZXMsIGJvb2wgY2hlY2tSZWFkT25seSwgUHV0UHJvcGVydHlTbG90
JiBzbG90KQorSlNfRVhQT1JUX1BSSVZBVEUgaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVj
dEZ1bmN0aW9uKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDZWxsKiB2YWx1ZSwg
dW5zaWduZWQgYXR0cmlidXRlcywgYm9vbCBjaGVja1JlYWRPbmx5LCBQdXRQcm9wZXJ0eVNsb3Qm
IHNsb3QpCiB7CiAgICAgcHV0RGlyZWN0SW50ZXJuYWwocHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0
cmlidXRlcywgY2hlY2tSZWFkT25seSwgc2xvdCwgdmFsdWUpOwogfQogCi1pbmxpbmUgdm9pZCBK
U09iamVjdDo6cHV0RGlyZWN0RnVuY3Rpb24oY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBKU0NlbGwqIHZhbHVlLCB1bnNpZ25lZCBhdHRyKQorSlNfRVhQT1JUX1BSSVZBVEUgaW5saW5l
IHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdEZ1bmN0aW9uKGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgSlNDZWxsKiB2YWx1ZSwgdW5zaWduZWQgYXR0cikKIHsKICAgICBQdXRQcm9wZXJ0
eVNsb3Qgc2xvdDsKICAgICBwdXREaXJlY3RJbnRlcm5hbChwcm9wZXJ0eU5hbWUsIHZhbHVlLCBh
dHRyLCBmYWxzZSwgc2xvdCwgdmFsdWUpOwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
eGNlcHRpb25IZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
eGNlcHRpb25IZWxwZXJzLmggICAocmV2aXNpb24gNjEzMDEpCisrKyBKYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaCAgICh3b3JraW5nIGNvcHkpCkBAIC00Miw5ICs0Miw5
IEBACiAgICAgY2xhc3MgTm9kZTsKICAgICBzdHJ1Y3QgSW5zdHJ1Y3Rpb247CiAgICAgCi0gICAg
SlNWYWx1ZSBjcmVhdGVJbnRlcnJ1cHRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihKU0dsb2JhbERhdGEq
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIGNyZWF0ZUludGVycnVwdGVkRXhlY3V0
aW9uRXhjZXB0aW9uKEpTR2xvYmFsRGF0YSopOwogICAgIEpTVmFsdWUgY3JlYXRlVGVybWluYXRl
ZEV4ZWN1dGlvbkV4Y2VwdGlvbihKU0dsb2JhbERhdGEqKTsKLSAgICBKU09iamVjdCogY3JlYXRl
U3RhY2tPdmVyZmxvd0Vycm9yKEV4ZWNTdGF0ZSopOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpT
T2JqZWN0KiBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoRXhlY1N0YXRlKik7CiAgICAgSlNWYWx1
ZSBjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZp
ZXImLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgQ29kZUJsb2NrKik7CiAgICAgSlNOb3RBbk9i
amVjdEVycm9yU3R1YiogY3JlYXRlTm90QW5PYmplY3RFcnJvclN0dWIoRXhlY1N0YXRlKiwgYm9v
bCBpc051bGwpOwogICAgIEpTT2JqZWN0KiBjcmVhdGVJbnZhbGlkUGFyYW1FcnJvcihFeGVjU3Rh
dGUqLCBjb25zdCBjaGFyKiBvcCwgSlNWYWx1ZSwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIENv
ZGVCbG9jayopOwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmggKHJldmlzaW9u
IDYxMzAxKQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmggKHdvcmtpbmcg
Y29weSkKQEAgLTQ0LDE0ICs0NCwxNCBAQAogICAgICAgICB0eXBlZGVmIEpTT2JqZWN0V2l0aEds
b2JhbE9iamVjdCBCYXNlOwogCiAgICAgcHVibGljOgotICAgICAgICBKU0Z1bmN0aW9uKEV4ZWNT
dGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgaW50
IGxlbmd0aCwgY29uc3QgSWRlbnRpZmllciYsIE5hdGl2ZUZ1bmN0aW9uKTsKKyAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgSlNGdW5jdGlvbihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIE5v
bk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIGludCBsZW5ndGgsIGNvbnN0IElkZW50aWZpZXIm
LCBOYXRpdmVGdW5jdGlvbik7CiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgSlNGdW5jdGlvbihF
eGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4s
IGludCBsZW5ndGgsIGNvbnN0IElkZW50aWZpZXImLCBQYXNzUmVmUHRyPE5hdGl2ZUV4ZWN1dGFi
bGU+KTsKICNlbmRpZgogICAgICAgICBKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSosIE5vbk51bGxQYXNz
UmVmUHRyPEZ1bmN0aW9uRXhlY3V0YWJsZT4sIFNjb3BlQ2hhaW5Ob2RlKik7CiAgICAgICAgIHZp
cnR1YWwgfkpTRnVuY3Rpb24oKTsKIAotICAgICAgICBjb25zdCBVU3RyaW5nJiBuYW1lKEV4ZWNT
dGF0ZSopOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBjb25zdCBVU3RyaW5nJiBuYW1lKEV4
ZWNTdGF0ZSopOwogICAgICAgICBjb25zdCBVU3RyaW5nIGRpc3BsYXlOYW1lKEV4ZWNTdGF0ZSop
OwogICAgICAgICBjb25zdCBVU3RyaW5nIGNhbGN1bGF0ZWREaXNwbGF5TmFtZShFeGVjU3RhdGUq
KTsKIApAQCAtOTAsNyArOTAsNyBAQAogICAgIHByaXZhdGU6CiAgICAgICAgIEpTRnVuY3Rpb24o
Tm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPik7CiAKLSAgICAgICAgYm9vbCBpc0hvc3RGdW5j
dGlvbk5vbklubGluZSgpIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGlz
SG9zdEZ1bmN0aW9uTm9uSW5saW5lKCkgY29uc3Q7CiAKICAgICAgICAgdmlydHVhbCBib29sIGdl
dE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlT
bG90Jik7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhl
Y1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwpJbmRleDog
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5oICAgIChyZXZpc2lvbiA2MTMw
MSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmggICAgKHdvcmtp
bmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAKICAgICAgICAgYm9vbCBtX2hhc05vUHJvcGVydGll
c1dpdGhVSW50MzJOYW1lczsKICAgICB9OwogCi0gICAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBvYmplY3RQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqKTsKKyAgICBKU19FWFBPUlRf
UFJJVkFURSBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY1RvU3Ry
aW5nKEV4ZWNTdGF0ZSopOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApJbmRleDogSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcmdMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcmdMaXN0LmggICAgKHJldmlzaW9uIDYxMzAxKQorKysgSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcmdMaXN0LmggICAgKHdvcmtpbmcgY29weSkKQEAgLTE0NCw3ICsxNDQsNyBAQAogICAg
ICAgICBzdGF0aWMgdm9pZCBtYXJrTGlzdHMoTWFya1N0YWNrJiwgTGlzdFNldCYpOwogCiAgICAg
cHJpdmF0ZToKLSAgICAgICAgdm9pZCBzbG93QXBwZW5kKEpTVmFsdWUpOworICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSB2b2lkIHNsb3dBcHBlbmQoSlNWYWx1ZSk7CiAgICAgICAgIAogICAgICAg
ICBSZWdpc3RlciogbV9idWZmZXI7CiAgICAgICAgIHNpemVfdCBtX3NpemU7CkBAIC0yMzQsNyAr
MjM0LDcgQEAKICAgICAgICAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBt
X2FyZ3M7IH0KICAgICAgICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9h
cmdzICsgbV9hcmdDb3VudDsgfQogCi0gICAgICAgIHZvaWQgZ2V0U2xpY2UoaW50IHN0YXJ0SW5k
ZXgsIEFyZ0xpc3QmIHJlc3VsdCkgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZv
aWQgZ2V0U2xpY2UoaW50IHN0YXJ0SW5kZXgsIEFyZ0xpc3QmIHJlc3VsdCkgY29uc3Q7CiAgICAg
cHJpdmF0ZToKICAgICAgICAgSlNWYWx1ZSogbV9hcmdzOwogICAgICAgICBzaXplX3QgbV9hcmdD
b3VudDsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oICAgIChyZXZpc2lvbiA2MTMwMSkK
KysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oICAgICh3b3JraW5nIGNvcHkpCkBA
IC00MSw5ICs0MSw5IEBACiAgICAgICAgIGZyaWVuZCBjbGFzcyBXYWxrZXI7CiAKICAgICBwdWJs
aWM6Ci0gICAgICAgIGV4cGxpY2l0IEpTQXJyYXkoTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJl
Pik7Ci0gICAgICAgIEpTQXJyYXkoTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgdW5zaWdu
ZWQgaW5pdGlhbExlbmd0aCk7Ci0gICAgICAgIEpTQXJyYXkoTm9uTnVsbFBhc3NSZWZQdHI8U3Ry
dWN0dXJlPiwgY29uc3QgQXJnTGlzdCYgaW5pdGlhbFZhbHVlcyk7CisgICAgICAgIEpTX0VYUE9S
VF9QUklWQVRFIGV4cGxpY2l0IEpTQXJyYXkoTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPik7
CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTQXJyYXkoTm9uTnVsbFBhc3NSZWZQdHI8U3Ry
dWN0dXJlPiwgdW5zaWduZWQgaW5pdGlhbExlbmd0aCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIEpTQXJyYXkoTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgY29uc3QgQXJnTGlzdCYg
aW5pdGlhbFZhbHVlcyk7CiAgICAgICAgIHZpcnR1YWwgfkpTQXJyYXkoKTsKIAogICAgICAgICB2
aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CkBAIC01NCw3ICs1NCw3IEBACiAgICAg
ICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNzSW5mbyBpbmZvOwogCiAgICAgICAg
IHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZS0+bV9sZW5ndGg7IH0K
LSAgICAgICAgdm9pZCBzZXRMZW5ndGgodW5zaWduZWQpOyAvLyBPSyB0byB1c2Ugb24gbmV3IGFy
cmF5cywgYnV0IG5vdCBpZiBpdCBtaWdodCBiZSBhIFJlZ0V4cE1hdGNoQXJyYXkuCisgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0TGVuZ3RoKHVuc2lnbmVkKTsgLy8gT0sgdG8gdXNl
IG9uIG5ldyBhcnJheXMsIGJ1dCBub3QgaWYgaXQgbWlnaHQgYmUgYSBSZWdFeHBNYXRjaEFycmF5
LgogCiAgICAgICAgIHZvaWQgc29ydChFeGVjU3RhdGUqKTsKICAgICAgICAgdm9pZCBzb3J0KEV4
ZWNTdGF0ZSosIEpTVmFsdWUgY29tcGFyZUZ1bmN0aW9uLCBDYWxsVHlwZSwgY29uc3QgQ2FsbERh
dGEmKTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oICAg
KHJldmlzaW9uIDYxMzAxKQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0
aW9uLmggICAod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQAogICAgICAgICAvLyBPbmx5
IHVzZWQgdG8gYWxsb3cgdXMgdG8gZGV0ZXJtaW5lIHRoZSBKU0Z1bmN0aW9uIHZwdHIKICAgICAg
ICAgSW50ZXJuYWxGdW5jdGlvbihOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVy
ZSk7CiAKLSAgICAgICAgSW50ZXJuYWxGdW5jdGlvbihKU0dsb2JhbERhdGEqLCBKU0dsb2JhbE9i
amVjdCosIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIGNvbnN0IElkZW50aWZpZXImKTsK
KyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSW50ZXJuYWxGdW5jdGlvbihKU0dsb2JhbERhdGEq
LCBKU0dsb2JhbE9iamVjdCosIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIGNvbnN0IElk
ZW50aWZpZXImKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgQ2FsbFR5cGUgZ2V0
Q2FsbERhdGEoQ2FsbERhdGEmKSA9IDA7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lk
ZW50aWZpZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZp
ZXIuaCAocmV2aXNpb24gNjEzMDEpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZp
ZXIuaCAod29ya2luZyBjb3B5KQpAQCAtNTQsOSArNTQsOSBAQAogICAgICAgICAKICAgICAgICAg
Y29uc3QgY2hhciogYXNjaWkoKSBjb25zdCB7IHJldHVybiBfdXN0cmluZy5hc2NpaSgpOyB9CiAg
ICAgICAgIAotICAgICAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9tKEV4ZWNTdGF0ZSogZXhlYywg
dW5zaWduZWQgeSk7Ci0gICAgICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb20oRXhlY1N0YXRlKiBl
eGVjLCBpbnQgeSk7Ci0gICAgICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb20oRXhlY1N0YXRlKiBl
eGVjLCBkb3VibGUgeSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBJZGVudGlm
aWVyIGZyb20oRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCB5KTsKKyAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIElkZW50aWZpZXIgZnJvbShFeGVjU3RhdGUqIGV4ZWMsIGludCB5KTsK
KyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIElkZW50aWZpZXIgZnJvbShFeGVjU3Rh
dGUqIGV4ZWMsIGRvdWJsZSB5KTsKICAgICAgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbShKU0ds
b2JhbERhdGEqLCB1bnNpZ25lZCB5KTsKICAgICAgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbShK
U0dsb2JhbERhdGEqLCBpbnQgeSk7CiAgICAgICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb20oSlNH
bG9iYWxEYXRhKiwgZG91YmxlIHkpOwpAQCAtNzYsMTIgKzc2LDEyIEBACiAgICAgICAgIGZyaWVu
ZCBib29sIG9wZXJhdG9yPT0oY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IGNoYXIqKTsKICAgICAg
ICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgY2hhciop
OwogICAgIAotICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBVU3RyaW5nOjpSZXAqLCBj
b25zdCBjaGFyKik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGVxdWFs
KGNvbnN0IFVTdHJpbmc6OlJlcCosIGNvbnN0IGNoYXIqKTsKICAgICAgICAgc3RhdGljIGJvb2wg
ZXF1YWwoY29uc3QgVVN0cmluZzo6UmVwKiwgY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgp
OwogICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBVU3RyaW5nOjpSZXAqIGEsIGNvbnN0
IFVTdHJpbmc6OlJlcCogYikgeyByZXR1cm4gOjplcXVhbChhLCBiKTsgfQogCi0gICAgICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFVTdHJpbmc6OlJlcD4gYWRkKEV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIq
KTsgLy8gT25seSB0byBiZSB1c2VkIHdpdGggc3RyaW5nIGxpdGVyYWxzLgotICAgICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxVU3RyaW5nOjpSZXA+IGFkZChKU0dsb2JhbERhdGEqLCBjb25zdCBjaGFy
Kik7IC8vIE9ubHkgdG8gYmUgdXNlZCB3aXRoIHN0cmluZyBsaXRlcmFscy4KKyAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8VVN0cmluZzo6UmVwPiBhZGQoRXhlY1N0
YXRlKiwgY29uc3QgY2hhciopOyAvLyBPbmx5IHRvIGJlIHVzZWQgd2l0aCBzdHJpbmcgbGl0ZXJh
bHMuCisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPFVTdHJpbmc6
OlJlcD4gYWRkKEpTR2xvYmFsRGF0YSosIGNvbnN0IGNoYXIqKTsgLy8gT25seSB0byBiZSB1c2Vk
IHdpdGggc3RyaW5nIGxpdGVyYWxzLgogCiAgICAgcHJpdmF0ZToKICAgICAgICAgVVN0cmluZyBf
dXN0cmluZzsKQEAgLTExMSwxMCArMTExLDEwIEBACiAgICAgICAgICAgICByZXR1cm4gYWRkU2xv
d0Nhc2UoZ2xvYmFsRGF0YSwgcik7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxVU3RyaW5nOjpSZXA+IGFkZFNsb3dDYXNlKEV4ZWNTdGF0ZSosIFVTdHJpbmc6OlJlcCog
cik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPFVTdHJpbmc6
OlJlcD4gYWRkU2xvd0Nhc2UoRXhlY1N0YXRlKiwgVVN0cmluZzo6UmVwKiByKTsKICAgICAgICAg
c3RhdGljIFBhc3NSZWZQdHI8VVN0cmluZzo6UmVwPiBhZGRTbG93Q2FzZShKU0dsb2JhbERhdGEq
LCBVU3RyaW5nOjpSZXAqIHIpOwogCi0gICAgICAgIHN0YXRpYyB2b2lkIGNoZWNrQ3VycmVudElk
ZW50aWZpZXJUYWJsZShFeGVjU3RhdGUqKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIHZvaWQgY2hlY2tDdXJyZW50SWRlbnRpZmllclRhYmxlKEV4ZWNTdGF0ZSopOwogICAgICAg
ICBzdGF0aWMgdm9pZCBjaGVja0N1cnJlbnRJZGVudGlmaWVyVGFibGUoSlNHbG9iYWxEYXRhKik7
CiAgICAgfTsKICAgICAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaCAg
IChyZXZpc2lvbiA2MTMwMSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0
LmggICAod29ya2luZyBjb3B5KQpAQCAtMjksMTcgKzI5LDE3IEBACiAgICAgY2xhc3MgU3RyaW5n
T2JqZWN0IDogcHVibGljIEpTV3JhcHBlck9iamVjdCB7CiAgICAgcHVibGljOgogICAgICAgICBT
dHJpbmdPYmplY3QoRXhlY1N0YXRlKiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPik7Ci0g
ICAgICAgIFN0cmluZ09iamVjdChFeGVjU3RhdGUqLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1
cmU+LCBjb25zdCBVU3RyaW5nJik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0cmluZ09i
amVjdChFeGVjU3RhdGUqLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBjb25zdCBVU3Ry
aW5nJik7CiAKICAgICAgICAgc3RhdGljIFN0cmluZ09iamVjdCogY3JlYXRlKEV4ZWNTdGF0ZSos
IEpTU3RyaW5nKik7CiAKLSAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYp
OwotICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIHVu
c2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAgIHZpcnR1YWwgYm9v
bCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYs
IFByb3BlcnR5RGVzY3JpcHRvciYpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFs
IGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZp
cnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVh
bCBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlm
aWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHB1dChF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwg
UHV0UHJvcGVydHlTbG90Jik7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBkZWxldGVQcm9wZXJ0eShF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOwotICAgICAgICB2aXJ0
dWFsIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJh
eSYsIEVudW1lcmF0aW9uTW9kZSBtb2RlID0gRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7Cisg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgdm9pZCBwdXQoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIGJvb2wgZGVsZXRlUHJvcGVy
dHkoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKKyAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSA9IEV4Y2x1ZGVE
b250RW51bVByb3BlcnRpZXMpOwogCiAgICAgICAgIHZpcnR1YWwgY29uc3QgQ2xhc3NJbmZvKiBj
bGFzc0luZm8oKSBjb25zdCB7IHJldHVybiAmaW5mbzsgfQogICAgICAgICBzdGF0aWMgY29uc3Qg
SlNfRVhQT1JUREFUQSBDbGFzc0luZm8gaW5mbzsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNCeXRlQXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Qnl0ZUFycmF5LmggICAgKHJldmlzaW9uIDYxMzAxKQorKysgSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0J5dGVBcnJheS5oICAgICh3b3JraW5nIGNvcHkpCkBAIC03Myw4ICs3Myw4IEBACiAgICAg
ICAgICAgICAgICAgc2V0SW5kZXgoaSwgYnl0ZVZhbHVlKTsKICAgICAgICAgfQogCi0gICAgICAg
IEpTQnl0ZUFycmF5KEV4ZWNTdGF0ZSogZXhlYywgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJl
PiwgV1RGOjpCeXRlQXJyYXkqIHN0b3JhZ2UsIGNvbnN0IEpTQzo6Q2xhc3NJbmZvKiA9ICZzX2Rl
ZmF1bHRJbmZvKTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVT
dHJ1Y3R1cmUoSlNWYWx1ZSBwcm90b3R5cGUpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBK
U0J5dGVBcnJheShFeGVjU3RhdGUqIGV4ZWMsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4s
IFdURjo6Qnl0ZUFycmF5KiBzdG9yYWdlLCBjb25zdCBKU0M6OkNsYXNzSW5mbyogPSAmc19kZWZh
dWx0SW5mbyk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPFN0
cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTVmFsdWUgcHJvdG90eXBlKTsKICAgICAgICAgCiAg
ICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpFeGVjU3RhdGUqLCBj
b25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsK
ICAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkV4ZWNTdGF0ZSos
IHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKSW5kZXg6IEphdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oICAgKHJldmlzaW9uIDYxMzAxKQor
KysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmggICAod29ya2luZyBj
b3B5KQpAQCAtNDQsMTQgKzQ0LDE0IEBACiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAKICAg
ICBwdWJsaWM6Ci0gICAgICAgIFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSgpIGNvbnN0IHsgcmV0
dXJuICpkLT5zeW1ib2xUYWJsZTsgfQorICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBTeW1ib2xU
YWJsZSYgc3ltYm9sVGFibGUoKSBjb25zdCB7IHJldHVybiAqZC0+c3ltYm9sVGFibGU7IH0KIAog
ICAgICAgICB2aXJ0dWFsIHZvaWQgcHV0V2l0aEF0dHJpYnV0ZXMoRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpID0gMDsKIAotICAgICAg
ICB2aXJ0dWFsIGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmll
ciYpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSBtb2RlID0gRXhjbHVkZURvbnRF
bnVtUHJvcGVydGllcyk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgYm9vbCBk
ZWxldGVQcm9wZXJ0eShFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJik7CisgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlIG1vZGUgPSBFeGNsdWRlRG9u
dEVudW1Qcm9wZXJ0aWVzKTsKICAgICAgICAgCi0gICAgICAgIHZpcnR1YWwgYm9vbCBpc1Zhcmlh
YmxlT2JqZWN0KCkgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgYm9v
bCBpc1ZhcmlhYmxlT2JqZWN0KCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0R5bmFt
aWNTY29wZShib29sJiByZXF1aXJlc0R5bmFtaWNDaGVja3MpIGNvbnN0ID0gMDsKIAogICAgICAg
ICBSZWdpc3RlciYgcmVnaXN0ZXJBdChpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIGQtPnJlZ2lz
dGVyc1tpbmRleF07IH0KQEAgLTkzLDcgKzkzLDcgQEAKICAgICAgICAgdm9pZCBzZXRSZWdpc3Rl
cnMoUmVnaXN0ZXIqIHIsIFJlZ2lzdGVyKiByZWdpc3RlckFycmF5KTsKIAogICAgICAgICBib29s
IHN5bWJvbFRhYmxlR2V0KGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICAg
ICAgYm9vbCBzeW1ib2xUYWJsZUdldChjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlw
dG9yJik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgc3ltYm9sVGFibGVHZXQoY29u
c3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgICAgICBib29sIHN5bWJv
bFRhYmxlR2V0KGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmLCBib29sJiBzbG90SXNX
cml0ZWFibGUpOwogICAgICAgICBib29sIHN5bWJvbFRhYmxlUHV0KGNvbnN0IElkZW50aWZpZXIm
LCBKU1ZhbHVlKTsKICAgICAgICAgYm9vbCBzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKGNv
bnN0IElkZW50aWZpZXImLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKSW5kZXg6IEph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5oIChyZXZpc2lvbiA2MTMwMSkKKysrIEphdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5oICh3b3JraW5nIGNvcHkpCkBAIC01NSw4ICs1NSw4
IEBACiAgICAgICAgIEpTVmFsdWUgbV92YWx1ZTsKICAgICB9OwogCi0gICAgQ29tcGxldGlvbiBj
aGVja1N5bnRheChFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2RlJik7Ci0gICAgQ29tcGxldGlv
biBldmFsdWF0ZShFeGVjU3RhdGUqLCBTY29wZUNoYWluJiwgY29uc3QgU291cmNlQ29kZSYsIEpT
VmFsdWUgdGhpc1ZhbHVlID0gSlNWYWx1ZSgpKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBDb21w
bGV0aW9uIGNoZWNrU3ludGF4KEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmKTsKKyAgICBK
U19FWFBPUlRfUFJJVkFURSBDb21wbGV0aW9uIGV2YWx1YXRlKEV4ZWNTdGF0ZSosIFNjb3BlQ2hh
aW4mLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNWYWx1ZSB0aGlzVmFsdWUgPSBKU1ZhbHVlKCkpOwog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKIApJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29r
dXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oIChyZXZp
c2lvbiA2MTMwMSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmggKHdvcmtpbmcg
Y29weSkKQEAgLTEzOSw3ICsxMzksNyBAQAogICAgICAgICAgICAgICAgIGNyZWF0ZVRhYmxlKCZl
eGVjLT5nbG9iYWxEYXRhKCkpOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBkZWxldGVUYWJs
ZSgpIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGRlbGV0ZVRhYmxlKCkg
Y29uc3Q7CiAKICAgICAgICAgLy8gRmluZCBhbiBlbnRyeSBpbiB0aGUgdGFibGUsIGFuZCByZXR1
cm4gdGhlIGVudHJ5LgogICAgICAgICBBTFdBWVNfSU5MSU5FIGNvbnN0IEhhc2hFbnRyeSogZW50
cnkoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVy
KSBjb25zdApAQCAtMTc0LDEwICsxNzQsMTAgQEAKICAgICAgICAgfQogCiAgICAgICAgIC8vIENv
bnZlcnQgdGhlIGhhc2ggdGFibGUga2V5cyB0byBpZGVudGlmaWVycy4KLSAgICAgICAgdm9pZCBj
cmVhdGVUYWJsZShKU0dsb2JhbERhdGEqKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgdm9pZCBjcmVhdGVUYWJsZShKU0dsb2JhbERhdGEqKSBjb25zdDsKICAgICB9OwogCi0gICAg
dm9pZCBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChFeGVjU3RhdGUqLCBjb25zdCBIYXNoRW50cnkq
LCBKU09iamVjdCogdGhpc09iamVjdCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eVNsb3QmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldFVwU3RhdGljRnVu
Y3Rpb25TbG90KEV4ZWNTdGF0ZSosIGNvbnN0IEhhc2hFbnRyeSosIEpTT2JqZWN0KiB0aGlzT2Jq
ZWN0LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogCiAg
ICAgLyoqCiAgICAgICogVGhpcyBtZXRob2QgZG9lcyBpdCBhbGwgKGxvb2tpbmcgaW4gdGhlIGhh
c2h0YWJsZSwgY2hlY2tpbmcgZm9yIGZ1bmN0aW9uCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ2VsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxs
LmggKHJldmlzaW9uIDYxMzAxKQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaCAo
d29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIkNhbGxEYXRhLmgiCiAj
aW5jbHVkZSAiQ29uc3RydWN0RGF0YS5oIgogI2luY2x1ZGUgIkNvbGxlY3Rvci5oIgorI2luY2x1
ZGUgIkpTQmFzZS5oIgogI2luY2x1ZGUgIkpTSW1tZWRpYXRlLmgiCiAjaW5jbHVkZSAiSlNWYWx1
ZS5oIgogI2luY2x1ZGUgIk1hcmtTdGFjay5oIgpAQCAtNDgsOCArNDksOCBAQAogICAgICAgICBm
cmllbmQgY2xhc3MgSlNHbG9iYWxEYXRhOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgZXhwbGlj
aXQgSlNDZWxsKFN0cnVjdHVyZSopOwotICAgICAgICB2aXJ0dWFsIH5KU0NlbGwoKTsKKyAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgZXhwbGljaXQgSlNDZWxsKFN0cnVjdHVyZSopOworICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIH5KU0NlbGwoKTsKIAogICAgIHB1YmxpYzoKICAg
ICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVEdW1teVN0cnVjdHVyZSgp
CkBAIC02MSwzOSArNjIsMzkgQEAKICNpZiBVU0UoSlNWQUxVRTMyKQogICAgICAgICBib29sIGlz
TnVtYmVyKCkgY29uc3Q7CiAjZW5kaWYKLSAgICAgICAgYm9vbCBpc1N0cmluZygpIGNvbnN0Owot
ICAgICAgICBib29sIGlzT2JqZWN0KCkgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBpc0dl
dHRlclNldHRlcigpIGNvbnN0OwotICAgICAgICBib29sIGluaGVyaXRzKGNvbnN0IENsYXNzSW5m
byopIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGlzU3RyaW5nKCkgY29u
c3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNPYmplY3QoKSBjb25zdDsKKyAg
ICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCBib29sIGlzR2V0dGVyU2V0dGVyKCkgY29u
c3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaW5oZXJpdHMoY29uc3QgQ2xhc3NJ
bmZvKikgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0FQSVZhbHVlV3JhcHBlcigpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgICAgICBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSgpIGNvbnN0OwogCiAgICAgICAgIC8vIEV4dHJhY3RpbmcgdGhlIHZhbHVlLgot
ICAgICAgICBib29sIGdldFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIFVTdHJpbmcmKSBjb25zdDsK
KyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBnZXRTdHJpbmcoRXhlY1N0YXRlKiBleGVj
LCBVU3RyaW5nJikgY29uc3Q7CiAgICAgICAgIFVTdHJpbmcgZ2V0U3RyaW5nKEV4ZWNTdGF0ZSog
ZXhlYykgY29uc3Q7IC8vIG51bGwgc3RyaW5nIGlmIG5vdCBhIHN0cmluZwotICAgICAgICBKU09i
amVjdCogZ2V0T2JqZWN0KCk7IC8vIE5VTEwgaWYgbm90IGFuIG9iamVjdAotICAgICAgICBjb25z
dCBKU09iamVjdCogZ2V0T2JqZWN0KCkgY29uc3Q7IC8vIE5VTEwgaWYgbm90IGFuIG9iamVjdAor
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogZ2V0T2JqZWN0KCk7IC8vIE5VTEwg
aWYgbm90IGFuIG9iamVjdAorICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBjb25zdCBKU09iamVj
dCogZ2V0T2JqZWN0KCkgY29uc3Q7IC8vIE5VTEwgaWYgbm90IGFuIG9iamVjdAogICAgICAgICAK
LSAgICAgICAgdmlydHVhbCBDYWxsVHlwZSBnZXRDYWxsRGF0YShDYWxsRGF0YSYpOwotICAgICAg
ICB2aXJ0dWFsIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShDb25zdHJ1Y3REYXRhJik7
CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEo
Q2FsbERhdGEmKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCBDb25zdHJ1Y3RU
eXBlIGdldENvbnN0cnVjdERhdGEoQ29uc3RydWN0RGF0YSYpOwogCiAgICAgICAgIC8vIEV4dHJh
Y3RpbmcgaW50ZWdlciB2YWx1ZXMuCiAgICAgICAgIC8vIEZJWE1FOiByZW1vdmUgdGhlc2UgbWV0
aG9kcywgY2FuIGNoZWNrIGlzTnVtYmVyQ2VsbCBpbiBKU1ZhbHVlICYmIHRoZW4gY2FsbCBhc051
bWJlckNlbGw6OiouCi0gICAgICAgIHZpcnR1YWwgYm9vbCBnZXRVSW50MzIodWludDMyX3QmKSBj
b25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCBib29sIGdldFVJbnQzMih1
aW50MzJfdCYpIGNvbnN0OwogCiAgICAgICAgIC8vIEJhc2ljIGNvbnZlcnNpb25zLgotICAgICAg
ICB2aXJ0dWFsIEpTVmFsdWUgdG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0
aXZlVHlwZSkgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBnZXRQcmltaXRpdmVOdW1iZXIo
RXhlY1N0YXRlKiwgZG91YmxlJiBudW1iZXIsIEpTVmFsdWUmKTsKLSAgICAgICAgdmlydHVhbCBi
b29sIHRvQm9vbGVhbihFeGVjU3RhdGUqKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCBkb3VibGUg
dG9OdW1iZXIoRXhlY1N0YXRlKikgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgVVN0cmluZyB0b1N0
cmluZyhFeGVjU3RhdGUqKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCBKU09iamVjdCogdG9PYmpl
Y3QoRXhlY1N0YXRlKikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwg
SlNWYWx1ZSB0b1ByaW1pdGl2ZShFeGVjU3RhdGUqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKSBj
b25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCBib29sIGdldFByaW1pdGl2
ZU51bWJlcihFeGVjU3RhdGUqLCBkb3VibGUmIG51bWJlciwgSlNWYWx1ZSYpOworICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIGJvb2wgdG9Cb29sZWFuKEV4ZWNTdGF0ZSopIGNvbnN0
OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIGRvdWJsZSB0b051bWJlcihFeGVj
U3RhdGUqKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCBVU3RyaW5n
IHRvU3RyaW5nKEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2
aXJ0dWFsIEpTT2JqZWN0KiB0b09iamVjdChFeGVjU3RhdGUqKSBjb25zdDsKIAogICAgICAgICAv
LyBHYXJiYWdlIGNvbGxlY3Rpb24uCi0gICAgICAgIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qs
IEV4ZWNTdGF0ZSopOwotICAgICAgICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBKU0dsb2Jh
bERhdGEqKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCogb3BlcmF0b3IgbmV3KHNp
emVfdCwgRXhlY1N0YXRlKik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQqIG9wZXJh
dG9yIG5ldyhzaXplX3QsIEpTR2xvYmFsRGF0YSopOwogICAgICAgICB2b2lkKiBvcGVyYXRvciBu
ZXcoc2l6ZV90LCB2b2lkKiBwbGFjZW1lbnROZXdEZXN0aW5hdGlvbikgeyByZXR1cm4gcGxhY2Vt
ZW50TmV3RGVzdGluYXRpb247IH0KIAogICAgICAgICB2aXJ0dWFsIHZvaWQgbWFya0NoaWxkcmVu
KE1hcmtTdGFjayYpOwpAQCAtMTAyLDE2ICsxMDMsMTYgQEAKICNlbmRpZgogCiAgICAgICAgIC8v
IE9iamVjdCBvcGVyYXRpb25zLCB3aXRoIHRoZSB0b09iamVjdCBvcGVyYXRpb24gaW5jbHVkZWQu
Ci0gICAgICAgIHZpcnR1YWwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8oKSBjb25zdDsKLSAg
ICAgICAgdmlydHVhbCB2b2lkIHB1dChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwotICAgICAgICB2aXJ0dWFsIHZv
aWQgcHV0KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSk7Ci0gICAg
ICAgIHZpcnR1YWwgYm9vbCBkZWxldGVQcm9wZXJ0eShFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUpOwotICAgICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlUHJvcGVydHko
RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgdmlydHVhbCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0OworICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIHZvaWQgcHV0KEV4ZWNTdGF0ZSosIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgdm9pZCBwdXQoRXhlY1N0YXRlKiwgdW5zaWdu
ZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmly
dHVhbCBib29sIGRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgYm9vbCBkZWxl
dGVQcm9wZXJ0eShFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwogCi0gICAgICAg
IHZpcnR1YWwgSlNPYmplY3QqIHRvVGhpc09iamVjdChFeGVjU3RhdGUqKSBjb25zdDsKLSAgICAg
ICAgdmlydHVhbCBKU1ZhbHVlIGdldEpTTnVtYmVyKCk7Ci0gICAgICAgIHZvaWQqIHZwdHIoKSB7
IHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KHRoaXMpOyB9Ci0gICAgICAgIHZvaWQg
c2V0VlB0cih2b2lkKiB2cHRyKSB7ICpyZWludGVycHJldF9jYXN0PHZvaWQqKj4odGhpcykgPSB2
cHRyOyB9CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgSlNPYmplY3QqIHRvVGhp
c09iamVjdChFeGVjU3RhdGUqKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmly
dHVhbCBKU1ZhbHVlIGdldEpTTnVtYmVyKCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZv
aWQqIHZwdHIoKSB7IHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KHRoaXMpOyB9Cisg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0VlB0cih2b2lkKiB2cHRyKSB7ICpyZWlu
dGVycHJldF9jYXN0PHZvaWQqKj4odGhpcykgPSB2cHRyOyB9CiAKICAgICAgICAgLy8gRklYTUU6
IFJlbmFtZSBnZXRPd25Qcm9wZXJ0eVNsb3QgdG8gdmlydHVhbEdldE93blByb3BlcnR5U2xvdCwg
YW5kCiAgICAgICAgIC8vIGZhc3RHZXRPd25Qcm9wZXJ0eVNsb3QgdG8gZ2V0T3duUHJvcGVydHlT
bG90LiBDYWxsZXJzIHNob3VsZCBhbHdheXMKQEAgLTEyNCw4ICsxMjUsOCBAQAogCiAgICAgcHJp
dmF0ZToKICAgICAgICAgLy8gQmFzZSBpbXBsZW1lbnRhdGlvbjsgZm9yIG5vbi1vYmplY3QgY2xh
c3NlcyBpbXBsZW1lbnRzIGdldFByb3BlcnR5U2xvdC4KLSAgICAgICAgdmlydHVhbCBib29sIGdl
dE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYpOwotICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlT
bG90KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Cisg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3Qo
RXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5
U2xvdChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwog
ICAgICAgICAKICAgICAgICAgU3RydWN0dXJlKiBtX3N0cnVjdHVyZTsKICAgICB9OwpAQCAtMTUx
LDcgKzE1Miw3IEBACiAgICAgICAgIHJldHVybiBtX3N0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBl
KCkgPT0gT2JqZWN0VHlwZTsKICAgICB9CiAKLSAgICBpbmxpbmUgYm9vbCBKU0NlbGw6OmlzU3Ry
aW5nKCkgY29uc3QKKyAgICBKU19FWFBPUlRfUFJJVkFURSBpbmxpbmUgYm9vbCBKU0NlbGw6Omlz
U3RyaW5nKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX3N0cnVjdHVyZS0+dHlwZUlu
Zm8oKS50eXBlKCkgPT0gU3RyaW5nVHlwZTsKICAgICB9CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNM
b2NrLmggKHJldmlzaW9uIDYxMzAxKQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2su
aCAod29ya2luZyBjb3B5KQpAQCAtNzcsOCArNzcsOCBAQAogICAgICAgICAgICAgdW5sb2NrKG1f
bG9ja0JlaGF2aW9yKTsgCiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIHN0YXRpYyB2b2lk
IGxvY2soSlNMb2NrQmVoYXZpb3IpOwotICAgICAgICBzdGF0aWMgdm9pZCB1bmxvY2soSlNMb2Nr
QmVoYXZpb3IpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBsb2NrKEpT
TG9ja0JlaGF2aW9yKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgdW5s
b2NrKEpTTG9ja0JlaGF2aW9yKTsKICAgICAgICAgc3RhdGljIHZvaWQgbG9jayhFeGVjU3RhdGUq
KTsKICAgICAgICAgc3RhdGljIHZvaWQgdW5sb2NrKEV4ZWNTdGF0ZSopOwogCkBAIC04Nyw3ICs4
Nyw3IEBACiAKICAgICAgICAgSlNMb2NrQmVoYXZpb3IgbV9sb2NrQmVoYXZpb3I7CiAKLSAgICAg
ICAgY2xhc3MgRHJvcEFsbExvY2tzIDogcHVibGljIE5vbmNvcHlhYmxlIHsKKyAgICAgICAgY2xh
c3MgSlNfRVhQT1JUX1BSSVZBVEUgRHJvcEFsbExvY2tzIDogcHVibGljIE5vbmNvcHlhYmxlIHsK
ICAgICAgICAgcHVibGljOgogICAgICAgICAgICAgRHJvcEFsbExvY2tzKEV4ZWNTdGF0ZSogZXhl
Yyk7CiAgICAgICAgICAgICBEcm9wQWxsTG9ja3MoSlNMb2NrQmVoYXZpb3IpOwpJbmRleDogSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oICAgKHJldmlzaW9uIDYxMzAxKQorKysgSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaCAgICh3b3JraW5nIGNvcHkpCkBAIC0y
NDMsNyArMjQzLDcgQEAKICAgICAgICAgICAgIHJldHVybiBtX2dldFZhbHVlOwogICAgICAgICB9
CiAgICAgcHJpdmF0ZToKLSAgICAgICAgSlNWYWx1ZSBmdW5jdGlvbkdldHRlcihFeGVjU3RhdGUq
KSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBmdW5jdGlvbkdldHRl
cihFeGVjU3RhdGUqKSBjb25zdDsKIAogICAgICAgICBHZXRWYWx1ZUZ1bmMgbV9nZXRWYWx1ZTsK
ICAgICAgICAgR2V0SW5kZXhWYWx1ZUZ1bmMgbV9nZXRJbmRleFZhbHVlOwpJbmRleDogSmF2YVNj
cmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2
YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmggICAgKHJldmlzaW9uIDYx
MzAxKQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmggICAg
KHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAKICAgICAgICAgdmlydHVhbCBDYWxsVHlw
ZSBnZXRDYWxsRGF0YShDYWxsRGF0YSYpOwogICAgIH07CiAKLSAgICBKU09iamVjdCogY29uc3Ry
dWN0RnVuY3Rpb24oRXhlY1N0YXRlKiwgY29uc3QgQXJnTGlzdCYsIGNvbnN0IElkZW50aWZpZXIm
IGZ1bmN0aW9uTmFtZSwgY29uc3QgVVN0cmluZyYgc291cmNlVVJMLCBpbnQgbGluZU51bWJlcik7
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNT
dGF0ZSosIGNvbnN0IEFyZ0xpc3QmLCBjb25zdCBJZGVudGlmaWVyJiBmdW5jdGlvbk5hbWUsIGNv
bnN0IFVTdHJpbmcmIHNvdXJjZVVSTCwgaW50IGxpbmVOdW1iZXIpOwogICAgIEpTT2JqZWN0KiBj
b25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqLCBjb25zdCBBcmdMaXN0Jik7CiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3MuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5oICAgKHJl
dmlzaW9uIDYxMzAxKQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3MuaCAg
ICh3b3JraW5nIGNvcHkpCkBAIC02NCw4ICs2NCw4IEBACiAgICAgICAgIEpTU3RyaW5nKiogc2lu
Z2xlQ2hhcmFjdGVyU3RyaW5ncygpIHsgcmV0dXJuIG1fc2luZ2xlQ2hhcmFjdGVyU3RyaW5nczsg
fQogI2VuZGlmCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCBjcmVhdGVFbXB0eVN0cmluZyhK
U0dsb2JhbERhdGEqKTsKLSAgICAgICAgdm9pZCBjcmVhdGVTaW5nbGVDaGFyYWN0ZXJTdHJpbmco
SlNHbG9iYWxEYXRhKiwgdW5zaWduZWQgY2hhcik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IHZvaWQgY3JlYXRlRW1wdHlTdHJpbmcoSlNHbG9iYWxEYXRhKik7CisgICAgICAgIEpTX0VYUE9S
VF9QUklWQVRFIHZvaWQgY3JlYXRlU2luZ2xlQ2hhcmFjdGVyU3RyaW5nKEpTR2xvYmFsRGF0YSos
IHVuc2lnbmVkIGNoYXIpOwogCiAgICAgICAgIEpTU3RyaW5nKiBtX2VtcHR5U3RyaW5nOwogICAg
ICAgICBKU1N0cmluZyogbV9zaW5nbGVDaGFyYWN0ZXJTdHJpbmdzWzB4MTAwXTsKSW5kZXg6IEph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmggIChyZXZpc2lvbiA2MTMw
MSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuaCAgKHdvcmtp
bmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAKICAgICAgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhKCkgeyByZXR1cm4gbV9nbG9iYWxEYXRhOyB9CiAKICAgICAgICAgdm9pZCBhZGQoY29uc3Qg
SWRlbnRpZmllciYgaWRlbnRpZmllcikgeyBhZGQoaWRlbnRpZmllci51c3RyaW5nKCkucmVwKCkp
OyB9Ci0gICAgICAgIHZvaWQgYWRkKFVTdHJpbmc6OlJlcCopOworICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSB2b2lkIGFkZChVU3RyaW5nOjpSZXAqKTsKICAgICAgICAgdm9pZCBhZGRLbm93blVu
aXF1ZShVU3RyaW5nOjpSZXAqIGlkZW50aWZpZXIpIHsgbV9kYXRhLT5wcm9wZXJ0eU5hbWVWZWN0
b3IoKS5hcHBlbmQoSWRlbnRpZmllcihtX2dsb2JhbERhdGEsIGlkZW50aWZpZXIpKTsgfQogCiAg
ICAgICAgIElkZW50aWZpZXImIG9wZXJhdG9yW10odW5zaWduZWQgaSkgeyByZXR1cm4gbV9kYXRh
LT5wcm9wZXJ0eU5hbWVWZWN0b3IoKVtpXTsgfQpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FcnJvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaCAg
KHJldmlzaW9uIDYxMzAxKQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oICAod29y
a2luZyBjb3B5KQpAQCAtNDUsMTIgKzQ1LDEyIEBACiAgICAgSlNPYmplY3QqIGNyZWF0ZVR5cGVF
cnJvcihKU0dsb2JhbE9iamVjdCosIGNvbnN0IFVTdHJpbmcmKTsKICAgICBKU09iamVjdCogY3Jl
YXRlVVJJRXJyb3IoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBVU3RyaW5nJik7CiAgICAgLy8gRXhl
Y1N0YXRlIHdyYXBwZXJzLgotICAgIEpTT2JqZWN0KiBjcmVhdGVFcnJvcihFeGVjU3RhdGUqLCBj
b25zdCBVU3RyaW5nJik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIGNyZWF0ZUVy
cm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmKTsKICAgICBKU09iamVjdCogY3JlYXRlRXZh
bEVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmKTsKICAgICBKU09iamVjdCogY3JlYXRl
UmFuZ2VFcnJvcihFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJik7Ci0gICAgSlNPYmplY3QqIGNy
ZWF0ZVJlZmVyZW5jZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmKTsKLSAgICBKU09i
amVjdCogY3JlYXRlU3ludGF4RXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYpOwotICAg
IEpTT2JqZWN0KiBjcmVhdGVUeXBlRXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYpOwor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBjcmVhdGVSZWZlcmVuY2VFcnJvcihFeGVj
U3RhdGUqLCBjb25zdCBVU3RyaW5nJik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3Qq
IGNyZWF0ZVN5bnRheEVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmKTsKKyAgICBKU19F
WFBPUlRfUFJJVkFURSBKU09iamVjdCogY3JlYXRlVHlwZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0
IFVTdHJpbmcmKTsKICAgICBKU09iamVjdCogY3JlYXRlVVJJRXJyb3IoRXhlY1N0YXRlKiwgY29u
c3QgVVN0cmluZyYpOwogCiAgICAgLy8gTWV0aG9kcyB0byBhZGQgCkBAIC02MiwxMiArNjIsMTIg
QEAKICAgICBKU09iamVjdCogYWRkRXJyb3JJbmZvKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiBlcnJv
ciwgaW50IGxpbmUsIGNvbnN0IFNvdXJjZUNvZGUmLCBpbnQgZGl2b3RQb2ludCwgaW50IHN0YXJ0
T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0LCBib29sIHdpdGhDYXJldCA9IHRydWUpOwogCiAgICAgLy8g
TWV0aG9kcyB0byB0aHJvdyBFcnJvcnMuCi0gICAgSlNWYWx1ZSB0aHJvd0Vycm9yKEV4ZWNTdGF0
ZSosIEpTVmFsdWUpOwotICAgIEpTT2JqZWN0KiB0aHJvd0Vycm9yKEV4ZWNTdGF0ZSosIEpTT2Jq
ZWN0Kik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSB0aHJvd0Vycm9yKEV4ZWNTdGF0
ZSosIEpTVmFsdWUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd0Vycm9y
KEV4ZWNTdGF0ZSosIEpTT2JqZWN0Kik7CiAKICAgICAvLyBDb252ZW5pZW5jZSB3cmFwcGVycywg
Y3JlYXRlIGFuIHRocm93IGFuIGV4Y2VwdGlvbiB3aXRoIGEgZGVmYXVsdCBtZXNzYWdlLgotICAg
IEpTT2JqZWN0KiB0aHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqKTsKLSAgICBKU09iamVjdCogdGhy
b3dTeW50YXhFcnJvcihFeGVjU3RhdGUqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVj
dCogdGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRlKik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNP
YmplY3QqIHRocm93U3ludGF4RXJyb3IoRXhlY1N0YXRlKik7CiAKICAgICAvLyBDb252ZW5pZW5j
ZSB3cmFwcGVycywgd3JhcCByZXN1bHQgYXMgYW4gRW5jb2RlZEpTVmFsdWUuCiAgICAgaW5saW5l
IEVuY29kZWRKU1ZhbHVlIHRocm93Vk1FcnJvcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgZXJy
b3IpIHsgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0Vycm9yKGV4ZWMsIGVycm9yKSk7IH0K
SW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZy5oICAgIChyZXZpc2lvbiA2MTMwMSkKKysrIEph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZy5oICAgICh3b3JraW5nIGNvcHkpCkBAIC00OCwx
OSArNDgsMTkgQEAKICAgICAgICAgdHlwZWRlZiBVU3RyaW5nSW1wbCBSZXA7CiAgICAgCiAgICAg
cHVibGljOgotICAgICAgICBVU3RyaW5nKCkge30KLSAgICAgICAgVVN0cmluZyhjb25zdCBjaGFy
Kik7IC8vIENvbnN0cnVjdG9yIGZvciBudWxsLXRlcm1pbmF0ZWQgc3RyaW5nLgotICAgICAgICBV
U3RyaW5nKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgICAgICBVU3RyaW5nKGNv
bnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICAgICAgVVN0cmluZyhjb25zdCBWZWN0
b3I8VUNoYXI+JiBidWZmZXIpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBVU3RyaW5nKCkg
e30KKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgVVN0cmluZyhjb25zdCBjaGFyKik7IC8vIENv
bnN0cnVjdG9yIGZvciBudWxsLXRlcm1pbmF0ZWQgc3RyaW5nLgorICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSBVU3RyaW5nKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOworICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSBVU3RyaW5nKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsK
KyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgVVN0cmluZyhjb25zdCBWZWN0b3I8VUNoYXI+JiBi
dWZmZXIpOwogCi0gICAgICAgIFVTdHJpbmcoY29uc3QgVVN0cmluZyYgcykKKyAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgVVN0cmluZyhjb25zdCBVU3RyaW5nJiBzKQogICAgICAgICAgICAgOiBt
X3JlcChzLm1fcmVwKQogICAgICAgICB7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBTcGVjaWFs
IGNvbnN0cnVjdG9yIGZvciBjYXNlcyB3aGVyZSB3ZSBvdmVyd3JpdGUgYW4gb2JqZWN0IGluIHBs
YWNlLgotICAgICAgICBVU3RyaW5nKFBsYWNlbWVudE5ld0Fkb3B0VHlwZSkKKyAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgVVN0cmluZyhQbGFjZW1lbnROZXdBZG9wdFR5cGUpCiAgICAgICAgICAg
ICA6IG1fcmVwKFBsYWNlbWVudE5ld0Fkb3B0KQogICAgICAgICB7CiAgICAgICAgIH0KQEAgLTcx
LDE1ICs3MSwxNSBAQAogICAgICAgICAgICAgcmV0dXJuIFJlcDo6YWRvcHQodmVjdG9yKTsKICAg
ICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBVU3RyaW5nIGZyb20oaW50KTsKLSAgICAgICAgc3Rh
dGljIFVTdHJpbmcgZnJvbShsb25nIGxvbmcpOwotICAgICAgICBzdGF0aWMgVVN0cmluZyBmcm9t
KHVuc2lnbmVkKTsKLSAgICAgICAgc3RhdGljIFVTdHJpbmcgZnJvbShsb25nKTsKLSAgICAgICAg
c3RhdGljIFVTdHJpbmcgZnJvbShkb3VibGUpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgVVN0cmluZyBmcm9tKGludCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBVU3RyaW5nIGZyb20obG9uZyBsb25nKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIFVTdHJpbmcgZnJvbSh1bnNpZ25lZCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBVU3RyaW5nIGZyb20obG9uZyk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBVU3RyaW5nIGZyb20oZG91YmxlKTsKIAogICAgICAgICAvLyBOT1RFOiBUaGlzIG1ldGhvZCBz
aG91bGQgb25seSBiZSB1c2VkIGZvciAqZGVidWdnaW5nKiBwdXJwb3NlcyBhcyBpdAogICAgICAg
ICAvLyBpcyBuZWl0aGVyIFVuaWNvZGUgc2FmZSBub3IgZnJlZSBmcm9tIHNpZGUgZWZmZWN0cyBu
b3IgdGhyZWFkLXNhZmUuCi0gICAgICAgIGNoYXIqIGFzY2lpKCkgY29uc3Q7CisgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIGNoYXIqIGFzY2lpKCkgY29uc3Q7CiAKICAgICAgICAgLyoqCiAgICAg
ICAgICAqIENvbnZlcnQgdGhlIHN0cmluZyB0byBVVEYtOCwgYXNzdW1pbmcgaXQgaXMgVVRGLTE2
IGVuY29kZWQuCkBAIC04OSw3ICs4OSw3IEBACiAgICAgICAgICAqIGd1YXJhbnRlZWQgdG8gYmUg
b3RoZXJ3aXNlIHZhbGlkLgogICAgICAgICAgKiBJbiBzdHJpY3QgbW9kZSwgZXJyb3IgaXMgcmV0
dXJuZWQgYXMgbnVsbCBDU3RyaW5nLgogICAgICAgICAgKi8KLSAgICAgICAgQ1N0cmluZyBVVEY4
U3RyaW5nKGJvb2wgc3RyaWN0ID0gZmFsc2UpIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJ
VkFURSBDU3RyaW5nIFVURjhTdHJpbmcoYm9vbCBzdHJpY3QgPSBmYWxzZSkgY29uc3Q7CiAKICAg
ICAgICAgY29uc3QgVUNoYXIqIGRhdGEoKSBjb25zdAogICAgICAgICB7CkBAIC0xMDUsNyArMTA1
LDcgQEAKICAgICAgICAgICAgIHJldHVybiBtX3JlcC0+bGVuZ3RoKCk7CiAgICAgICAgIH0KIAot
ICAgICAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuICFtX3JlcDsgfQorICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuICFtX3JlcDsgfQog
ICAgICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9yZXAgfHwgIW1fcmVwLT5s
ZW5ndGgoKTsgfQogCiAgICAgICAgIGJvb2wgaXM4Qml0KCkgY29uc3Q7CkBAIC0xMTYsOCArMTE2
LDggQEAKICAgICAgICAgZG91YmxlIHRvRG91YmxlKGJvb2wgdG9sZXJhdGVUcmFpbGluZ0p1bmsp
IGNvbnN0OwogICAgICAgICBkb3VibGUgdG9Eb3VibGUoKSBjb25zdDsKIAotICAgICAgICB1aW50
MzJfdCB0b1VJbnQzMihib29sKiBvayA9IDApIGNvbnN0OwotICAgICAgICB1aW50MzJfdCB0b1VJ
bnQzMihib29sKiBvaywgYm9vbCB0b2xlcmF0ZUVtcHR5U3RyaW5nKSBjb25zdDsKKyAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgdWludDMyX3QgdG9VSW50MzIoYm9vbCogb2sgPSAwKSBjb25zdDsK
KyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdWludDMyX3QgdG9VSW50MzIoYm9vbCogb2ssIGJv
b2wgdG9sZXJhdGVFbXB0eVN0cmluZykgY29uc3Q7CiAgICAgICAgIHVpbnQzMl90IHRvU3RyaWN0
VUludDMyKGJvb2wqIG9rID0gMCkgY29uc3Q7CiAKICAgICAgICAgdW5zaWduZWQgdG9BcnJheUlu
ZGV4KGJvb2wqIG9rID0gMCkgY29uc3Q7CkBAIC0xMjgsNyArMTI4LDcgQEAKICAgICAgICAgdW5z
aWduZWQgcmZpbmQoY29uc3QgVVN0cmluZyYgZiwgdW5zaWduZWQgcG9zKSBjb25zdDsKICAgICAg
ICAgdW5zaWduZWQgcmZpbmQoVUNoYXIsIHVuc2lnbmVkIHBvcykgY29uc3Q7CiAKLSAgICAgICAg
VVN0cmluZyBzdWJzdHIodW5zaWduZWQgcG9zID0gMCwgdW5zaWduZWQgbGVuID0gMHhGRkZGRkZG
RikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFVTdHJpbmcgc3Vic3RyKHVuc2ln
bmVkIHBvcyA9IDAsIHVuc2lnbmVkIGxlbiA9IDB4RkZGRkZGRkYpIGNvbnN0OwogCiAgICAgICAg
IHN0YXRpYyBjb25zdCBVU3RyaW5nJiBudWxsKCkgeyByZXR1cm4gKnNfbnVsbFVTdHJpbmc7IH0K
IApAQCAtMTQ2LDcgKzE0Niw4IEBACiAgICAgICAgICAgICByZXR1cm4gbV9yZXAtPmNvc3QoKTsK
ICAgICAgICAgfQogCi0gICAgICAgIEFMV0FZU19JTkxJTkUgflVTdHJpbmcoKSB7IH0KKyAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgQUxXQVlTX0lOTElORSB+VVN0cmluZygpIHsgfQorICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIFVTdHJpbmcmIG9wZXJhdG9yPShjb25zdCBVU3RyaW5nJiBzKSB7
IG1fcmVwID0gcy5tX3JlcDsgcmV0dXJuICp0aGlzOyB9CiAgICAgcHJpdmF0ZToKICAgICAgICAg
UmVmUHRyPFJlcD4gbV9yZXA7CiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUlu
c3RhbmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFu
Y2UuaCAgIChyZXZpc2lvbiA2MTMwMSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUlu
c3RhbmNlLmggICAod29ya2luZyBjb3B5KQpAQCAtMzEsOCArMzEsOCBAQAogCiAgICAgY2xhc3Mg
RGF0ZUluc3RhbmNlIDogcHVibGljIEpTV3JhcHBlck9iamVjdCB7CiAgICAgcHVibGljOgotICAg
ICAgICBEYXRlSW5zdGFuY2UoRXhlY1N0YXRlKiwgZG91YmxlKTsKLSAgICAgICAgRGF0ZUluc3Rh
bmNlKEV4ZWNTdGF0ZSosIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIGRvdWJsZSk7Cisg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIERhdGVJbnN0YW5jZShFeGVjU3RhdGUqLCBkb3VibGUp
OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBEYXRlSW5zdGFuY2UoRXhlY1N0YXRlKiwgTm9u
TnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgZG91YmxlKTsKICAgICAgICAgZXhwbGljaXQgRGF0
ZUluc3RhbmNlKEV4ZWNTdGF0ZSosIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4pOwogCiAg
ICAgICAgIGRvdWJsZSBpbnRlcm5hbE51bWJlcigpIGNvbnN0IHsgcmV0dXJuIGludGVybmFsVmFs
dWUoKS51bmNoZWNrZWRHZXROdW1iZXIoKTsgfQpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Sb3BlSW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvUm9wZUlt
cGwuaCAgIChyZXZpc2lvbiA2MTMwMSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvUm9wZUlt
cGwuaCAgICh3b3JraW5nIGNvcHkpCkBAIC04Myw3ICs4Myw3IEBACiAgICAgewogICAgIH0KIAot
ICAgIHZvaWQgZGVzdHJ1Y3ROb25SZWN1cnNpdmUoKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2
b2lkIGRlc3RydWN0Tm9uUmVjdXJzaXZlKCk7CiAgICAgdm9pZCBkZXJlZkZpYmVyc05vblJlY3Vy
c2l2ZShWZWN0b3I8Um9wZUltcGwqLCAzMj4mIHdvcmtRdWV1ZSk7CiAKICAgICBib29sIGhhc09u
ZVJlZigpIHsgcmV0dXJuIChtX3JlZkNvdW50QW5kRmxhZ3MgJiBzX3JlZkNvdW50TWFzaykgPT0g
c19yZWZDb3VudEluY3JlbWVudDsgfQpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
RGF0YS5oICAgKHJldmlzaW9uIDYxMzAxKQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbERhdGEuaCAgICh3b3JraW5nIGNvcHkpCkBAIC0xMDIsNyArMTAyLDcgQEAKICAgICAgICAg
Ly8gdGhlIG9yaWdpbmFsIEFQSS4KICAgICAgICAgZW51bSBHbG9iYWxEYXRhVHlwZSB7IERlZmF1
bHQsIEFQSUNvbnRleHRHcm91cCwgQVBJU2hhcmVkIH07CiAKLSAgICAgICAgc3RydWN0IENsaWVu
dERhdGEgeworICAgICAgICBzdHJ1Y3QgSlNfRVhQT1JUX1BSSVZBVEUgQ2xpZW50RGF0YSB7CiAg
ICAgICAgICAgICB2aXJ0dWFsIH5DbGllbnREYXRhKCkgPSAwOwogICAgICAgICB9OwogCkBAIC0x
MTAsMTAgKzExMCwxMCBAQAogICAgICAgICBzdGF0aWMgYm9vbCBzaGFyZWRJbnN0YW5jZUV4aXN0
cygpOwogICAgICAgICBzdGF0aWMgSlNHbG9iYWxEYXRhJiBzaGFyZWRJbnN0YW5jZSgpOwogCi0g
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTR2xvYmFsRGF0YT4gY3JlYXRlKFRocmVhZFN0YWNr
VHlwZSk7Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTR2xvYmFsRGF0YT4gY3JlYXRlTGVh
a2VkKFRocmVhZFN0YWNrVHlwZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQ
YXNzUmVmUHRyPEpTR2xvYmFsRGF0YT4gY3JlYXRlKFRocmVhZFN0YWNrVHlwZSk7CisgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPEpTR2xvYmFsRGF0YT4gY3JlYXRl
TGVha2VkKFRocmVhZFN0YWNrVHlwZSk7CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTR2xv
YmFsRGF0YT4gY3JlYXRlQ29udGV4dEdyb3VwKFRocmVhZFN0YWNrVHlwZSk7Ci0gICAgICAgIH5K
U0dsb2JhbERhdGEoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgfkpTR2xvYmFsRGF0YSgp
OwogCiAjaWYgRU5BQkxFKEpTQ19NVUxUSVBMRV9USFJFQURTKQogICAgICAgICAvLyBXaWxsIHN0
YXJ0IHRyYWNraW5nIHRocmVhZHMgdGhhdCB1c2UgdGhlIGhlYXAsIHdoaWNoIGlzIHJlc291cmNl
LWhlYXZ5LgpAQCAtMjE3LDExICsyMTcsMTEgQEAKIAogICAgICAgICBDYWNoZWRUcmFuc2NlbmRl
bnRhbEZ1bmN0aW9uPHNpbj4gY2FjaGVkU2luOwogCi0gICAgICAgIHZvaWQgcmVzZXREYXRlQ2Fj
aGUoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCByZXNldERhdGVDYWNoZSgpOwog
Ci0gICAgICAgIHZvaWQgc3RhcnRTYW1wbGluZygpOwotICAgICAgICB2b2lkIHN0b3BTYW1wbGlu
ZygpOwotICAgICAgICB2b2lkIGR1bXBTYW1wbGVEYXRhKEV4ZWNTdGF0ZSogZXhlYyk7CisgICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc3RhcnRTYW1wbGluZygpOworICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSB2b2lkIHN0b3BTYW1wbGluZygpOworICAgICAgICBKU19FWFBPUlRfUFJJ
VkFURSB2b2lkIGR1bXBTYW1wbGVEYXRhKEV4ZWNTdGF0ZSogZXhlYyk7CiAgICAgcHJpdmF0ZToK
ICAgICAgICAgSlNHbG9iYWxEYXRhKEdsb2JhbERhdGFUeXBlLCBUaHJlYWRTdGFja1R5cGUpOwog
ICAgICAgICBzdGF0aWMgSlNHbG9iYWxEYXRhKiYgc2hhcmVkSW5zdGFuY2VJbnRlcm5hbCgpOwpJ
bmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9UaW1lb3V0Q2hlY2tlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGltZW91dENoZWNrZXIuaCAocmV2aXNpb24gNjEz
MDEpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RpbWVvdXRDaGVja2VyLmggKHdvcmtpbmcg
Y29weSkKQEAgLTU2LDkgKzU2LDkgQEAKICAgICAgICAgICAgIC0tbV9zdGFydENvdW50OwogICAg
ICAgICB9CiAKLSAgICAgICAgdm9pZCByZXNldCgpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSB2b2lkIHJlc2V0KCk7CiAKLSAgICAgICAgYm9vbCBkaWRUaW1lT3V0KEV4ZWNTdGF0ZSopOwor
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGRpZFRpbWVPdXQoRXhlY1N0YXRlKik7CiAK
ICAgICBwcml2YXRlOgogICAgICAgICB1bnNpZ25lZCBtX3RpbWVvdXRJbnRlcnZhbDsKSW5kZXg6
IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggKHJldmlzaW9uIDYxMzAxKQor
KysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oICh3b3JraW5nIGNvcHkp
CkBAIC02Nyw3ICs2Nyw3IEBACiAgICAgICAgICAgICAvLyBKU1ZhcmlhYmxlT2JqZWN0RGF0YSog
dG8gSlNHbG9iYWxPYmplY3REYXRhKi4KICAgICAgICAgICAgIHR5cGVkZWYgdm9pZCAoKkRlc3Ry
dWN0b3IpKHZvaWQqKTsKIAotICAgICAgICAgICAgSlNHbG9iYWxPYmplY3REYXRhKERlc3RydWN0
b3IgZGVzdHJ1Y3RvcikKKyAgICAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTR2xvYmFsT2Jq
ZWN0RGF0YShEZXN0cnVjdG9yIGRlc3RydWN0b3IpCiAgICAgICAgICAgICAgICAgOiBKU1Zhcmlh
YmxlT2JqZWN0RGF0YSgmc3ltYm9sVGFibGUsIDApCiAgICAgICAgICAgICAgICAgLCBkZXN0cnVj
dG9yKGRlc3RydWN0b3IpCiAgICAgICAgICAgICAgICAgLCByZWdpc3RlckFycmF5U2l6ZSgwKQpA
QCAtMTU5LDcgKzE1OSw3IEBACiAgICAgICAgIH07CiAKICAgICBwdWJsaWM6Ci0gICAgICAgIHZv
aWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIEpTR2xvYmFsRGF0YSopOworICAgICAgICBKU19FWFBP
UlRfUFJJVkFURSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBKU0dsb2JhbERhdGEqKTsKICAg
ICAgICAgCiAgICAgICAgIGV4cGxpY2l0IEpTR2xvYmFsT2JqZWN0KCkKICAgICAgICAgICAgIDog
SlNWYXJpYWJsZU9iamVjdChKU0dsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKGpzTnVsbCgp
KSwgbmV3IEpTR2xvYmFsT2JqZWN0RGF0YShkZXN0cm95SlNHbG9iYWxPYmplY3REYXRhKSkKQEAg
LTE4NywxOCArMTg3LDE4IEBACiAgICAgICAgIH0KIAogICAgIHB1YmxpYzoKLSAgICAgICAgdmly
dHVhbCB+SlNHbG9iYWxPYmplY3QoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVh
bCB+SlNHbG9iYWxPYmplY3QoKTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgbWFya0NoaWxkcmVu
KE1hcmtTdGFjayYpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIHZvaWQgbWFy
a0NoaWxkcmVuKE1hcmtTdGFjayYpOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOwog
ICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSos
IGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICAgICAgdmlydHVh
bCBib29sIGhhc093blByb3BlcnR5Rm9yV3JpdGUoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmll
ciYpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcHV0KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZp
ZXImLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHB1
dFdpdGhBdHRyaWJ1dGVzKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAgICAgIEpTX0VYUE9S
VF9QUklWQVRFIHZpcnR1YWwgdm9pZCBwdXQoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYs
IEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2
aXJ0dWFsIHZvaWQgcHV0V2l0aEF0dHJpYnV0ZXMoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKIAot
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGVmaW5lR2V0dGVyKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgSlNPYmplY3QqIGdldHRlckZ1bmMsIHVuc2lnbmVkIGF0dHJp
YnV0ZXMpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGVmaW5lU2V0dGVyKEV4ZWNTdGF0ZSosIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNPYmplY3QqIHNldHRlckZ1bmMsIHVuc2ln
bmVkIGF0dHJpYnV0ZXMpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIHZvaWQg
ZGVmaW5lR2V0dGVyKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
SlNPYmplY3QqIGdldHRlckZ1bmMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSB2aXJ0dWFsIHZvaWQgZGVmaW5lU2V0dGVyKEV4ZWNTdGF0ZSosIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNPYmplY3QqIHNldHRlckZ1bmMsIHVuc2lnbmVk
IGF0dHJpYnV0ZXMpOwogCiAgICAgICAgIC8vIExpbmtlZCBsaXN0IG9mIGFsbCBnbG9iYWwgb2Jq
ZWN0cyB0aGF0IHVzZSB0aGUgc2FtZSBKU0dsb2JhbERhdGEuCiAgICAgICAgIEpTR2xvYmFsT2Jq
ZWN0KiYgaGVhZCgpIHsgcmV0dXJuIGQoKS0+Z2xvYmFsRGF0YS0+aGVhZDsgfQpAQCAtMjYyLDEz
ICsyNjIsMTMgQEAKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNHbG9iYWxPYmplY3QoKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICAgICAgdmlydHVhbCBFeGVjU3RhdGUqIGdsb2JhbEV4
ZWMoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCBFeGVjU3RhdGUqIGdsb2Jh
bEV4ZWMoKTsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSW50ZXJydXB0U2NyaXB0KCkg
Y29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBhbGxvd3NBY2Nl
c3NGcm9tKGNvbnN0IEpTR2xvYmFsT2JqZWN0KikgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCi0g
ICAgICAgIHZpcnR1YWwgYm9vbCBpc0R5bmFtaWNTY29wZShib29sJiByZXF1aXJlc0R5bmFtaWND
aGVja3MpIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIGJvb2wgaXNE
eW5hbWljU2NvcGUoYm9vbCYgcmVxdWlyZXNEeW5hbWljQ2hlY2tzKSBjb25zdDsKIAogICAgICAg
ICBIYXNoU2V0PEdsb2JhbENvZGVCbG9jayo+JiBjb2RlQmxvY2tzKCkgeyByZXR1cm4gZCgpLT5j
b2RlQmxvY2tzOyB9CiAKQEAgLTMxNSwxMCArMzE1LDEwIEBACiAgICAgICAgIHZvaWQgYWRkU3Rh
dGljR2xvYmFscyhHbG9iYWxQcm9wZXJ0eUluZm8qLCBpbnQgY291bnQpOwogCiAgICAgcHJpdmF0
ZToKLSAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveUpTR2xvYmFsT2JqZWN0RGF0YSh2b2lkKik7
CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGRlc3Ryb3lKU0dsb2JhbE9i
amVjdERhdGEodm9pZCopOwogCiAgICAgICAgIC8vIEZJWE1FOiBGb2xkIHJlc2V0IGludG8gaW5p
dC4KLSAgICAgICAgdm9pZCBpbml0KEpTT2JqZWN0KiB0aGlzVmFsdWUpOworICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSB2b2lkIGluaXQoSlNPYmplY3QqIHRoaXNWYWx1ZSk7CiAgICAgICAgIHZv
aWQgcmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUpOwogCiAgICAgICAgIHZvaWQgc2V0UmVnaXN0ZXJz
KFJlZ2lzdGVyKiByZWdpc3RlcnMsIFJlZ2lzdGVyKiByZWdpc3RlckFycmF5LCBzaXplX3QgY291
bnQpOwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdFdpdGhHbG9iYWxPYmpl
Y3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0V2l0aEds
b2JhbE9iamVjdC5oICAgKHJldmlzaW9uIDYxMzAxKQorKysgSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdFdpdGhHbG9iYWxPYmplY3QuaCAgICh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMCAr
MzksMTAgQEAKICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHByb3RvLCBUeXBlSW5m
byhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCk7CiAgICAg
fQogCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCgpIGNvbnN0OworICAgIEpTX0VY
UE9SVF9QUklWQVRFIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoKSBjb25zdDsKIAogcHJv
dGVjdGVkOgotICAgIEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdChKU0dsb2JhbE9iamVjdCosIE5v
bk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4pOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2Jq
ZWN0V2l0aEdsb2JhbE9iamVjdChKU0dsb2JhbE9iamVjdCosIE5vbk51bGxQYXNzUmVmUHRyPFN0
cnVjdHVyZT4pOwogCiAgICAgSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0KE5vbk51bGxQYXNzUmVm
UHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlKQogICAgICAgICA6IEpTT2JqZWN0KHN0cnVjdHVyZSkK
SW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oICAgIChyZXZpc2lvbiA2MTMwMSkKKysrIEph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oICAgICh3b3JraW5nIGNvcHkpCkBAIC01NSw5
ICs1NSw5IEBACiAgICAgdHlwZWRlZiB2b2lkKiBFbmNvZGVkSlNWYWx1ZTsKICNlbmRpZgogCi0g
ICAgZG91YmxlIG5vbklubGluZU5hTigpOwotICAgIGludDMyX3QgdG9JbnQzMlNsb3dDYXNlKGRv
dWJsZSwgYm9vbCYgb2spOwotICAgIHVpbnQzMl90IHRvVUludDMyU2xvd0Nhc2UoZG91YmxlLCBi
b29sJiBvayk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgZG91YmxlIG5vbklubGluZU5hTigpOwor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIGludDMyX3QgdG9JbnQzMlNsb3dDYXNlKGRvdWJsZSwgYm9v
bCYgb2spOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHVpbnQzMl90IHRvVUludDMyU2xvd0Nhc2Uo
ZG91YmxlLCBib29sJiBvayk7CiAKICAgICBjbGFzcyBKU1ZhbHVlIHsKICAgICAgICAgZnJpZW5k
IGNsYXNzIEpTSW1tZWRpYXRlOwpAQCAtMTk5LDcgKzE5OSw3IEBACiAKICAgICAgICAgYm9vbCBp
c0NlbGwoKSBjb25zdDsKICAgICAgICAgSlNDZWxsKiBhc0NlbGwoKSBjb25zdDsKLSAgICAgICAg
Ym9vbCBpc1ZhbGlkQ2FsbGVlKCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNW
YWxpZENhbGxlZSgpOwogCiAjaWZuZGVmIE5ERUJVRwogICAgICAgICBjaGFyKiBkZXNjcmlwdGlv
bigpOwpAQCAtMjEwLDggKzIxMCw4IEBACiAgICAgICAgIEpTVmFsdWUoSGFzaFRhYmxlRGVsZXRl
ZFZhbHVlVGFnKTsKIAogICAgICAgICBpbmxpbmUgY29uc3QgSlNWYWx1ZSBhc1ZhbHVlKCkgY29u
c3QgeyByZXR1cm4gKnRoaXM7IH0KLSAgICAgICAgSlNPYmplY3QqIHRvT2JqZWN0U2xvd0Nhc2Uo
RXhlY1N0YXRlKikgY29uc3Q7Ci0gICAgICAgIEpTT2JqZWN0KiB0b1RoaXNPYmplY3RTbG93Q2Fz
ZShFeGVjU3RhdGUqKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3Qq
IHRvT2JqZWN0U2xvd0Nhc2UoRXhlY1N0YXRlKikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIEpTT2JqZWN0KiB0b1RoaXNPYmplY3RTbG93Q2FzZShFeGVjU3RhdGUqKSBjb25zdDsK
IAogICAgICAgICBKU09iamVjdCogc3ludGhlc2l6ZVByb3RvdHlwZShFeGVjU3RhdGUqKSBjb25z
dDsKICAgICAgICAgSlNPYmplY3QqIHN5bnRoZXNpemVPYmplY3QoRXhlY1N0YXRlKikgY29uc3Q7
CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmggKHJl
dmlzaW9uIDYxMzAxKQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0
b3IuaCAod29ya2luZyBjb3B5KQpAQCAtNDYsOCArNDYsOCBAQAogICAgICAgICBKU1ZhbHVlIHZh
bHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQogICAgICAgICBKU1ZhbHVlIGdldHRlcigp
IGNvbnN0OwogICAgICAgICBKU1ZhbHVlIHNldHRlcigpIGNvbnN0OwotICAgICAgICB2b2lkIHNl
dFVuZGVmaW5lZCgpOwotICAgICAgICB2b2lkIHNldERlc2NyaXB0b3IoSlNWYWx1ZSB2YWx1ZSwg
dW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0
VW5kZWZpbmVkKCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0RGVzY3JpcHRv
cihKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKICAgICAgICAgdm9pZCBzZXRB
Y2Nlc3NvckRlc2NyaXB0b3IoSlNWYWx1ZSBnZXR0ZXIsIEpTVmFsdWUgc2V0dGVyLCB1bnNpZ25l
ZCBhdHRyaWJ1dGVzKTsKICAgICAgICAgdm9pZCBzZXRXcml0YWJsZShib29sKTsKICAgICAgICAg
dm9pZCBzZXRFbnVtZXJhYmxlKGJvb2wpOwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b2xsZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbGxlY3Rv
ci5oICAocmV2aXNpb24gNjEzMDEpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbGxlY3Rv
ci5oICAod29ya2luZyBjb3B5KQpAQCAtNzQsMTMgKzc0LDEzIEBACiAgICAgcHVibGljOgogICAg
ICAgICBjbGFzcyBUaHJlYWQ7CiAKLSAgICAgICAgdm9pZCBkZXN0cm95KCk7CisgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIHZvaWQgZGVzdHJveSgpOwogCiAgICAgICAgIHZvaWQqIGFsbG9jYXRl
TnVtYmVyKHNpemVfdCk7Ci0gICAgICAgIHZvaWQqIGFsbG9jYXRlKHNpemVfdCk7CisgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHZvaWQqIGFsbG9jYXRlKHNpemVfdCk7CiAKLSAgICAgICAgYm9v
bCBpc0J1c3koKTsgLy8gdHJ1ZSBpZiBhbiBhbGxvY2F0aW9uIG9yIGNvbGxlY3Rpb24gaXMgaW4g
cHJvZ3Jlc3MKLSAgICAgICAgdm9pZCBjb2xsZWN0QWxsR2FyYmFnZSgpOworICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSBib29sIGlzQnVzeSgpOyAvLyB0cnVlIGlmIGFuIGFsbG9jYXRpb24gb3Ig
Y29sbGVjdGlvbiBpcyBpbiBwcm9ncmVzcworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lk
IGNvbGxlY3RBbGxHYXJiYWdlKCk7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBtaW5F
eHRyYUNvc3QgPSAyNTY7CiAgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbWF4RXh0cmFDb3N0
ID0gMTAyNCAqIDEwMjQ7CkBAIC05MywxMiArOTMsMTIgQEAKICAgICAgICAgICAgIHNpemVfdCBm
cmVlOwogICAgICAgICB9OwogICAgICAgICBTdGF0aXN0aWNzIHN0YXRpc3RpY3MoKSBjb25zdDsK
LSAgICAgICAgc2l6ZV90IHNpemUoKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c2l6ZV90IHNpemUoKSBjb25zdDsKIAotICAgICAgICB2b2lkIHByb3RlY3QoSlNWYWx1ZSk7Cisg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcHJvdGVjdChKU1ZhbHVlKTsKICAgICAgICAg
Ly8gUmV0dXJucyB0cnVlIGlmIHRoZSB2YWx1ZSBpcyBubyBsb25nZXIgcHJvdGVjdGVkIGJ5IGFu
eSBwcm90ZWN0IHBvaW50ZXJzCiAgICAgICAgIC8vICh0aG91Z2ggaXQgbWF5IHN0aWxsIGJlIGFs
aXZlIGR1ZSB0byBoZWFwL3N0YWNrIHJlZmVyZW5jZXMpLgotICAgICAgICBib29sIHVucHJvdGVj
dChKU1ZhbHVlKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCB1bnByb3RlY3QoSlNW
YWx1ZSk7CiAKICAgICAgICAgc3RhdGljIEhlYXAqIGhlYXAoSlNWYWx1ZSk7IC8vIDAgZm9yIGlt
bWVkaWF0ZSB2YWx1ZXMKICAgICAgICAgc3RhdGljIEhlYXAqIGhlYXAoSlNDZWxsKik7CkBAIC0x
NDUsNyArMTQ1LDcgQEAKICAgICAgICAgdm9pZCBjbGVhck1hcmtCaXRzKENvbGxlY3RvckJsb2Nr
Kik7CiAgICAgICAgIHNpemVfdCBtYXJrZWRDZWxscyhzaXplX3Qgc3RhcnRCbG9jayA9IDAsIHNp
emVfdCBzdGFydENlbGwgPSAwKSBjb25zdDsKIAotICAgICAgICB2b2lkIHJlY29yZEV4dHJhQ29z
dChzaXplX3QpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHJlY29yZEV4dHJhQ29z
dChzaXplX3QpOwogCiAgICAgICAgIHZvaWQgYWRkVG9TdGF0aXN0aWNzKFN0YXRpc3RpY3MmKSBj
b25zdDsKIApJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dyYXBwZXJPYmplY3QuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9iamVjdC5oICAg
IChyZXZpc2lvbiA2MTMwMSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXcmFwcGVyT2Jq
ZWN0LmggICAgKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAKICAgICAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIEFub255bW91c1Nsb3RDb3VudCA9IDEgKyBKU09iamVjdDo6QW5vbnlt
b3VzU2xvdENvdW50OwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCB2b2lkIG1hcmtD
aGlsZHJlbihNYXJrU3RhY2smKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCB2
b2lkIG1hcmtDaGlsZHJlbihNYXJrU3RhY2smKTsKICAgICAgICAgCiAgICAgICAgIEpTVmFsdWUg
bV9pbnRlcm5hbFZhbHVlOwogICAgIH07CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nh
bGxEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWxsRGF0YS5o
ICAgKHJldmlzaW9uIDYxMzAxKQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWxsRGF0YS5o
ICAgKHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4LDcgQEAKICAgICAgICAgfSBqczsKICAgICB9
OwogCi0gICAgSlNWYWx1ZSBjYWxsKEV4ZWNTdGF0ZSosIEpTVmFsdWUgZnVuY3Rpb25PYmplY3Qs
IENhbGxUeXBlLCBjb25zdCBDYWxsRGF0YSYsIEpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBBcmdM
aXN0Jik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBjYWxsKEV4ZWNTdGF0ZSosIEpT
VmFsdWUgZnVuY3Rpb25PYmplY3QsIENhbGxUeXBlLCBjb25zdCBDYWxsRGF0YSYsIEpTVmFsdWUg
dGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0Jik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCkluZGV4
OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0cnVjdERhdGEuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0cnVjdERhdGEuaCAgKHJldmlzaW9uIDYxMzAxKQor
KysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zdHJ1Y3REYXRhLmggICh3b3JraW5nIGNvcHkp
CkBAIC01Nyw3ICs1Nyw3IEBACiAgICAgICAgIH0ganM7CiAgICAgfTsKIAotICAgIEpTT2JqZWN0
KiBjb25zdHJ1Y3QoRXhlY1N0YXRlKiwgSlNWYWx1ZSBjb25zdHJ1Y3RvciwgQ29uc3RydWN0VHlw
ZSwgY29uc3QgQ29uc3RydWN0RGF0YSYsIGNvbnN0IEFyZ0xpc3QmKTsKKyAgICBKU19FWFBPUlRf
UFJJVkFURSBKU09iamVjdCogY29uc3RydWN0KEV4ZWNTdGF0ZSosIEpTVmFsdWUgY29uc3RydWN0
b3IsIENvbnN0cnVjdFR5cGUsIGNvbnN0IENvbnN0cnVjdERhdGEmLCBjb25zdCBBcmdMaXN0Jik7
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL01h
cmtTdGFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFya1N0YWNr
LmggIChyZXZpc2lvbiA2MTMwMSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFya1N0YWNr
LmggICh3b3JraW5nIGNvcHkpCkBAIC04NSw4ICs4NSw4IEBACiAgICAgICAgICAgICBNYXJrU2V0
UHJvcGVydGllcyBtX3Byb3BlcnRpZXM7CiAgICAgICAgIH07CiAKLSAgICAgICAgc3RhdGljIHZv
aWQqIGFsbG9jYXRlU3RhY2soc2l6ZV90IHNpemUpOwotICAgICAgICBzdGF0aWMgdm9pZCByZWxl
YXNlU3RhY2sodm9pZCogYWRkciwgc2l6ZV90IHNpemUpOworICAgICAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgdm9pZCogYWxsb2NhdGVTdGFjayhzaXplX3Qgc2l6ZSk7CisgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHJlbGVhc2VTdGFjayh2b2lkKiBhZGRyLCBzaXpl
X3Qgc2l6ZSk7CiAKICAgICAgICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVBhZ2VzaXplKCk7CiAg
ICAgICAgIHN0YXRpYyBzaXplX3QgcGFnZVNpemUoKQpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmggICAgKHJldmlzaW9uIDYxMzAxKQorKysgSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmggICAgKHdvcmtpbmcgY29w
eSkKQEAgLTMzLDcgKzMzLDcgQEAKIAogICAgIC8vIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSBjYWxs
ZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQuIEl0IGlzIHNhZmUgdG8gY2FsbCBpdCByZXBlYXRlZGx5
LgogICAgIC8vIERhcndpbiBpcyBhbiBleGNlcHRpb24gdG8gdGhpcyBydWxlOiBpdCBpcyBPSyB0
byBjYWxsIHRoaXMgZnVuY3Rpb24gZnJvbSBhbnkgdGhyZWFkLCBldmVuIHJlZW50cmFudGx5Lgot
ICAgIHZvaWQgaW5pdGlhbGl6ZVRocmVhZGluZygpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZv
aWQgaW5pdGlhbGl6ZVRocmVhZGluZygpOwogCiB9CiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2Nv
bmZpZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2NvbmZpZy5oIChyZXZpc2lvbiA2
MTMwMSkKKysrIEphdmFTY3JpcHRDb3JlL2NvbmZpZy5oICh3b3JraW5nIGNvcHkpCkBAIC0yOSwx
OCArMjksMjEgQEAKIAogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogCi0jaWYgIVBMQVRGT1JN
KENIUk9NSVVNKSAmJiBPUyhXSU5ET1dTKSAmJiAhZGVmaW5lZChCVUlMRElOR19XWF9fKSAmJiAh
Q09NUElMRVIoR0NDKQorI2lmICFQTEFURk9STShDSFJPTUlVTSkgJiYgT1MoV0lORE9XUykgJiYg
IUNPTVBJTEVSKEdDQykKICNpZiBkZWZpbmVkKEJVSUxESU5HX0phdmFTY3JpcHRDb3JlKSB8fCBk
ZWZpbmVkKEJVSUxESU5HX1dURikKICNkZWZpbmUgSlNfRVhQT1JUREFUQSBfX2RlY2xzcGVjKGRs
bGV4cG9ydCkKICNlbHNlCiAjZGVmaW5lIEpTX0VYUE9SVERBVEEgX19kZWNsc3BlYyhkbGxpbXBv
cnQpCiAjZW5kaWYKLSNkZWZpbmUgSlNfRVhQT1JUQ0xBU1MgSlNfRVhQT1JUREFUQQorI2VsaWYg
ZGVmaW5lZChfX0dOVUNfXykgJiYgIWRlZmluZWQoX19DQ19BUk0pICYmICFkZWZpbmVkKF9fQVJN
Q0NfXykKKyNkZWZpbmUgSlNfRVhQT1JUREFUQSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJk
ZWZhdWx0IikpKQogI2Vsc2UKICNkZWZpbmUgSlNfRVhQT1JUREFUQQotI2RlZmluZSBKU19FWFBP
UlRDTEFTUwogI2VuZGlmCiAKKyNkZWZpbmUgSlNfRVhQT1JUQ0xBU1MgSlNfRVhQT1JUREFUQQor
I2RlZmluZSBKU19FWFBPUlRfUFJJVkFURSBKU19FWFBPUlREQVRBCisKICNpZiBPUyhXSU5ET1dT
KQogCiAvLyBJZiB3ZSBkb24ndCBkZWZpbmUgdGhlc2UsIHRoZXkgZ2V0IGRlZmluZWQgaW4gd2lu
ZGVmLmguIApJbmRleDogSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmggKHJldmlzaW9uIDYxMzAxKQorKysgSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggKHdvcmtpbmcgY29weSkKQEAgLTkwLDcgKzkwLDcgQEAK
ICAgICAgICAgdHlwZWRlZiBEZWNsYXJhdGlvblN0YWNrczo6VmFyU3RhY2sgVmFyU3RhY2s7CiAg
ICAgICAgIHR5cGVkZWYgRGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0aW9uU3RhY2sgRnVuY3Rpb25T
dGFjazsKIAotICAgICAgICBzdGF0aWMgdm9pZCBzZXREdW1wc0dlbmVyYXRlZENvZGUoYm9vbCBk
dW1wc0dlbmVyYXRlZENvZGUpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9p
ZCBzZXREdW1wc0dlbmVyYXRlZENvZGUoYm9vbCBkdW1wc0dlbmVyYXRlZENvZGUpOwogICAgICAg
ICBzdGF0aWMgYm9vbCBkdW1wc0dlbmVyYXRlZENvZGUoKTsKIAogICAgICAgICBCeXRlY29kZUdl
bmVyYXRvcihQcm9ncmFtTm9kZSosIGNvbnN0IERlYnVnZ2VyKiwgY29uc3QgU2NvcGVDaGFpbiYs
IFN5bWJvbFRhYmxlKiwgUHJvZ3JhbUNvZGVCbG9jayopOwpJbmRleDogSmF2YVNjcmlwdENvcmUv
d3RmL1JhbmRvbU51bWJlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9SYW5k
b21OdW1iZXIuaCAgIChyZXZpc2lvbiA2MTMwMSkKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9SYW5k
b21OdW1iZXIuaCAgICh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAKICAgICAvLyBS
ZXR1cm5zIGEgcHNldWRvLXJhbmRvbSBudW1iZXIgaW4gdGhlIHJhbmdlIFswLCAxKSwgYXR0ZW1w
dHMgdG8gYmUKICAgICAvLyBjcnlwdG9ncmFwaGljYWxseSBzZWN1cmUgaWYgcG9zc2libGUgb24g
dGhlIHRhcmdldCBwbGF0Zm9ybQotICAgIGRvdWJsZSByYW5kb21OdW1iZXIoKTsKKyAgICBKU19F
WFBPUlRfUFJJVkFURSBkb3VibGUgcmFuZG9tTnVtYmVyKCk7CiAKIH0KIApJbmRleDogSmF2YVNj
cmlwdENvcmUvd3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL3d0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaCAgKHJldmlzaW9uIDYxMzAxKQor
KysgSmF2YVNjcmlwdENvcmUvd3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oICAod29ya2luZyBj
b3B5KQpAQCAtMjYsNyArMjYsNyBAQAogCiBuYW1lc3BhY2UgV1RGIHsKICAgICAKLSAgICBzdHJ1
Y3QgUmVmQ291bnRlZExlYWtDb3VudGVyIHsKKyAgICBzdHJ1Y3QgSlNfRVhQT1JUX1BSSVZBVEUg
UmVmQ291bnRlZExlYWtDb3VudGVyIHsKICAgICAgICAgc3RhdGljIHZvaWQgc3VwcHJlc3NNZXNz
YWdlcyhjb25zdCBjaGFyKik7CiAgICAgICAgIHN0YXRpYyB2b2lkIGNhbmNlbE1lc3NhZ2VTdXBw
cmVzc2lvbihjb25zdCBjaGFyKik7CiAgICAgICAgIApJbmRleDogSmF2YVNjcmlwdENvcmUvd3Rm
L3RleHQvQ1N0cmluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L0NT
dHJpbmcuaCAgIChyZXZpc2lvbiA2MTMwMSkKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L0NT
dHJpbmcuaCAgICh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIENTdHJp
bmdfaAogI2RlZmluZSBDU3RyaW5nX2gKIAorI2luY2x1ZGUgIkpTQmFzZS5oIgogI2luY2x1ZGUg
IlBhc3NSZWZQdHIuaCIKICNpbmNsdWRlICJSZWZDb3VudGVkLmgiCiAjaW5jbHVkZSAiVmVjdG9y
LmgiCkBAIC01MiwxMiArNTMsMTMgQEAKIGNsYXNzIENTdHJpbmcgewogcHVibGljOgogICAgIENT
dHJpbmcoKSB7IH0KLSAgICBDU3RyaW5nKGNvbnN0IGNoYXIqKTsKLSAgICBDU3RyaW5nKGNvbnN0
IGNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIENTdHJpbmco
Y29uc3QgY2hhciopOworICAgIEpTX0VYUE9SVF9QUklWQVRFIENTdHJpbmcoY29uc3QgY2hhcios
IHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgQ1N0cmluZyhDU3RyaW5nQnVmZmVyKiBidWZmZXIpIDog
bV9idWZmZXIoYnVmZmVyKSB7IH0KLSAgICBzdGF0aWMgQ1N0cmluZyBuZXdVbmluaXRpYWxpemVk
KHNpemVfdCBsZW5ndGgsIGNoYXIqJiBjaGFyYWN0ZXJCdWZmZXIpOworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBDU3RyaW5nIG5ld1VuaW5pdGlhbGl6ZWQoc2l6ZV90IGxlbmd0aCwgY2hh
ciomIGNoYXJhY3RlckJ1ZmZlcik7CiAKLSAgICBjb25zdCBjaGFyKiBkYXRhKCkgY29uc3QKKyAg
IEpTX0VYUE9SVF9QUklWQVRFIH5DU3RyaW5nKCkgeyB9CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
Y29uc3QgY2hhciogZGF0YSgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9idWZmZXIg
PyBtX2J1ZmZlci0+ZGF0YSgpIDogMDsKICAgICB9CkBAIC03Nyw3ICs3OSw3IEBACiAgICAgUmVm
UHRyPENTdHJpbmdCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAotYm9vbCBvcGVyYXRvcj09KGNvbnN0
IENTdHJpbmcmIGEsIGNvbnN0IENTdHJpbmcmIGIpOworSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IENTdHJpbmcmIGEsIGNvbnN0IENTdHJpbmcmIGIpOwogaW5saW5lIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBDU3RyaW5nJiBhLCBjb25zdCBDU3RyaW5nJiBiKSB7IHJldHVy
biAhKGEgPT0gYik7IH0KIAogfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBKYXZhU2NyaXB0Q29y
ZS93dGYvdGV4dC9BdG9taWNTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93
dGYvdGV4dC9BdG9taWNTdHJpbmcuaCAgKHJldmlzaW9uIDYxMzAxKQorKysgSmF2YVNjcmlwdENv
cmUvd3RmL3RleHQvQXRvbWljU3RyaW5nLmggICh3b3JraW5nIGNvcHkpCkBAIC00MCwyNyArNDAs
MzEgQEAKIAogY2xhc3MgQXRvbWljU3RyaW5nIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBp
bml0KCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgaW5pdCgpOwogCi0gICAg
QXRvbWljU3RyaW5nKCkgeyB9Ci0gICAgQXRvbWljU3RyaW5nKGNvbnN0IGNoYXIqIHMpIDogbV9z
dHJpbmcoYWRkKHMpKSB7IH0KKyAgICBKU19FWFBPUlRfUFJJVkFURSBBdG9taWNTdHJpbmcoKSB7
IH0KKyAgIC8vIGNvcHkgY29uc3RydWN0b3IgbmVlZHMgdG8gYmUgZXhwbGljaXRseSBkZWZpbmVk
IHNvIHdlIGNhbiBzcGVjaWZ5IHByb3BlciBkbGwgbGlua2FnZQorICAgSlNfRVhQT1JUX1BSSVZB
VEUgQXRvbWljU3RyaW5nKGNvbnN0IEF0b21pY1N0cmluZyYgcykgOiBtX3N0cmluZyhzLm1fc3Ry
aW5nKSB7IH0KKyAgICBKU19FWFBPUlRfUFJJVkFURSBBdG9taWNTdHJpbmcoY29uc3QgY2hhciog
cykgOiBtX3N0cmluZyhhZGQocykpIHsgfQogICAgIEF0b21pY1N0cmluZyhjb25zdCBVQ2hhciog
cywgdW5zaWduZWQgbGVuZ3RoKSA6IG1fc3RyaW5nKGFkZChzLCBsZW5ndGgpKSB7IH0KICAgICBB
dG9taWNTdHJpbmcoY29uc3QgVUNoYXIqIHMsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgZXhp
c3RpbmdIYXNoKSA6IG1fc3RyaW5nKGFkZChzLCBsZW5ndGgsIGV4aXN0aW5nSGFzaCkpIHsgfQog
ICAgIEF0b21pY1N0cmluZyhjb25zdCBVQ2hhciogcykgOiBtX3N0cmluZyhhZGQocykpIHsgfQog
ICAgIEFUT01JQ1NUUklOR19DT05WRVJTSU9OIEF0b21pY1N0cmluZyhTdHJpbmdJbXBsKiBpbXAp
IDogbV9zdHJpbmcoYWRkKGltcCkpIHsgfQogICAgIEF0b21pY1N0cmluZyhBdG9taWNTdHJpbmdJ
bXBsKiBpbXApIDogbV9zdHJpbmcoaW1wKSB7IH0KLSAgICBBVE9NSUNTVFJJTkdfQ09OVkVSU0lP
TiBBdG9taWNTdHJpbmcoY29uc3QgU3RyaW5nJiBzKSA6IG1fc3RyaW5nKGFkZChzLmltcGwoKSkp
IHsgfQorICAgIEpTX0VYUE9SVF9QUklWQVRFIEFUT01JQ1NUUklOR19DT05WRVJTSU9OIEF0b21p
Y1N0cmluZyhjb25zdCBTdHJpbmcmIHMpIDogbV9zdHJpbmcoYWRkKHMuaW1wbCgpKSkgeyB9CiAK
ICAgICAvLyBIYXNoIHRhYmxlIGRlbGV0ZWQgdmFsdWVzLCB3aGljaCBhcmUgb25seSBjb25zdHJ1
Y3RlZCBhbmQgbmV2ZXIgY29waWVkIG9yIGRlc3Ryb3llZC4KLSAgICBBdG9taWNTdHJpbmcoV1RG
OjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKSA6IG1fc3RyaW5nKFdURjo6SGFzaFRhYmxlRGVs
ZXRlZFZhbHVlKSB7IH0KLSAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3Qg
eyByZXR1cm4gbV9zdHJpbmcuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQorICAgIEpTX0VY
UE9SVF9QUklWQVRFIEF0b21pY1N0cmluZyhXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUp
IDogbV9zdHJpbmcoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpIHsgfQorICAgIEpTX0VYUE9S
VF9QUklWQVRFIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBt
X3N0cmluZy5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9CiAKLSAgICBzdGF0aWMgQXRvbWlj
U3RyaW5nSW1wbCogZmluZChjb25zdCBVQ2hhciogcywgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25l
ZCBleGlzdGluZ0hhc2gpOworICAgSlNfRVhQT1JUX1BSSVZBVEUgfkF0b21pY1N0cmluZygpIHsg
fQogCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEF0b21pY1N0cmluZ0ltcGwqIGZpbmQo
Y29uc3QgVUNoYXIqIHMsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgZXhpc3RpbmdIYXNoKTsK
KwogICAgIG9wZXJhdG9yIGNvbnN0IFN0cmluZyYoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsg
fQogICAgIGNvbnN0IFN0cmluZyYgc3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH07
CiAKLSAgICBBdG9taWNTdHJpbmdJbXBsKiBpbXBsKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8QXRvbWljU3RyaW5nSW1wbCAqPihtX3N0cmluZy5pbXBsKCkpOyB9CisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgQXRvbWljU3RyaW5nSW1wbCogaW1wbCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PEF0b21pY1N0cmluZ0ltcGwgKj4obV9zdHJpbmcuaW1wbCgpKTsgfQogICAgIAogICAgIGNv
bnN0IFVDaGFyKiBjaGFyYWN0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuY2hhcmFjdGVy
cygpOyB9CiAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcubGVu
Z3RoKCk7IH0KQEAgLTg0LDcgKzg4LDcgQEAKICAgICBib29sIGVuZHNXaXRoKGNvbnN0IFN0cmlu
ZyYgcywgYm9vbCBjYXNlU2Vuc2l0aXZlID0gdHJ1ZSkgY29uc3QKICAgICAgICAgeyByZXR1cm4g
bV9zdHJpbmcuZW5kc1dpdGgocywgY2FzZVNlbnNpdGl2ZSk7IH0KICAgICAKLSAgICBBdG9taWNT
dHJpbmcgbG93ZXIoKSBjb25zdDsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBBdG9taWNTdHJpbmcg
bG93ZXIoKSBjb25zdDsKICAgICBBdG9taWNTdHJpbmcgdXBwZXIoKSBjb25zdCB7IHJldHVybiBB
dG9taWNTdHJpbmcoaW1wbCgpLT51cHBlcigpKTsgfQogICAgIAogICAgIGludCB0b0ludChib29s
KiBvayA9IDApIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLnRvSW50KG9rKTsgfQpAQCAtMTEwLDI0
ICsxMTQsMjYgQEAKICAgICBvcGVyYXRvciBRU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdHJp
bmc7IH0KICNlbmRpZgogCisgICBKU19FWFBPUlRfUFJJVkFURSBpbmxpbmUgQXRvbWljU3RyaW5n
JiBvcGVyYXRvcj0oY29uc3QgQXRvbWljU3RyaW5nJiBhKSB7IGlmICh0aGlzICE9ICZhKSBtX3N0
cmluZyA9IGEubV9zdHJpbmc7IHJldHVybiAqdGhpczsgfQorCiBwcml2YXRlOgogICAgIFN0cmlu
ZyBtX3N0cmluZzsKICAgICAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGQo
Y29uc3QgY2hhciopOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChjb25z
dCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5n
SW1wbD4gYWRkKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBleGlzdGlu
Z0hhc2gpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChjb25zdCBVQ2hh
ciopOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+
IGFkZChjb25zdCBjaGFyKik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQ
dHI8U3RyaW5nSW1wbD4gYWRkKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGQoY29uc3Qg
VUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIGV4aXN0aW5nSGFzaCk7CisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRkKGNvbnN0IFVD
aGFyKik7CiAgICAgQUxXQVlTX0lOTElORSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChTdHJp
bmdJbXBsKiByKQogICAgIHsKICAgICAgICAgaWYgKCFyIHx8IHItPmlzQXRvbWljKCkpCiAgICAg
ICAgICAgICByZXR1cm4gcjsKICAgICAgICAgcmV0dXJuIGFkZFNsb3dDYXNlKHIpOwogICAgIH0K
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGRTbG93Q2FzZShTdHJpbmdJbXBs
Kik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4g
YWRkU2xvd0Nhc2UoU3RyaW5nSW1wbCopOwogfTsKIAogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBBdG9taWNTdHJpbmcmIGEsIGNvbnN0IEF0b21pY1N0cmluZyYgYikgeyByZXR1cm4gYS5p
bXBsKCkgPT0gYi5pbXBsKCk7IH0KLWJvb2wgb3BlcmF0b3I9PShjb25zdCBBdG9taWNTdHJpbmcm
IGEsIGNvbnN0IGNoYXIqIGIpOworSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IEF0b21pY1N0cmluZyYgYSwgY29uc3QgY2hhciogYik7CiBpbmxpbmUgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IEF0b21pY1N0cmluZyYgYSwgY29uc3QgU3RyaW5nJiBiKSB7IHJldHVybiBlcXVh
bChhLmltcGwoKSwgYi5pbXBsKCkpOyB9CiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGNo
YXIqIGEsIGNvbnN0IEF0b21pY1N0cmluZyYgYikgeyByZXR1cm4gYiA9PSBhOyB9CiBpbmxpbmUg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFN0cmluZyYgYSwgY29uc3QgQXRvbWljU3RyaW5nJiBiKSB7
IHJldHVybiBlcXVhbChhLmltcGwoKSwgYi5pbXBsKCkpOyB9CkluZGV4OiBKYXZhU2NyaXB0Q29y
ZS93dGYvdGV4dC9XVEZTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYv
dGV4dC9XVEZTdHJpbmcuaCAocmV2aXNpb24gNjEzMDEpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYv
dGV4dC9XVEZTdHJpbmcuaCAod29ya2luZyBjb3B5KQpAQCAtNjUsMTkgKzY1LDE5IEBACiAvLyBE
ZWNsYXJhdGlvbnMgb2Ygc3RyaW5nIG9wZXJhdGlvbnMKIAogYm9vbCBjaGFyYWN0ZXJzQXJlQWxs
QVNDSUkoY29uc3QgVUNoYXIqLCBzaXplX3QpOwotaW50IGNoYXJhY3RlcnNUb0ludFN0cmljdChj
b25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKTsKLXVuc2ln
bmVkIGNoYXJhY3RlcnNUb1VJbnRTdHJpY3QoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9r
ID0gMCwgaW50IGJhc2UgPSAxMCk7CitKU19FWFBPUlRfUFJJVkFURSBpbnQgY2hhcmFjdGVyc1Rv
SW50U3RyaWN0KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDAsIGludCBiYXNlID0g
MTApOworSlNfRVhQT1JUX1BSSVZBVEUgdW5zaWduZWQgY2hhcmFjdGVyc1RvVUludFN0cmljdChj
b25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKTsKIGludDY0
X3QgY2hhcmFjdGVyc1RvSW50NjRTdHJpY3QoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9r
ID0gMCwgaW50IGJhc2UgPSAxMCk7CiB1aW50NjRfdCBjaGFyYWN0ZXJzVG9VSW50NjRTdHJpY3Qo
Y29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCk7CiBpbnRw
dHJfdCBjaGFyYWN0ZXJzVG9JbnRQdHJTdHJpY3QoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wq
IG9rID0gMCwgaW50IGJhc2UgPSAxMCk7CiAKLWludCBjaGFyYWN0ZXJzVG9JbnQoY29uc3QgVUNo
YXIqLCBzaXplX3QsIGJvb2wqIG9rID0gMCk7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQor
SlNfRVhQT1JUX1BSSVZBVEUgaW50IGNoYXJhY3RlcnNUb0ludChjb25zdCBVQ2hhciosIHNpemVf
dCwgYm9vbCogb2sgPSAwKTsgLy8gaWdub3JlcyB0cmFpbGluZyBnYXJiYWdlCiB1bnNpZ25lZCBj
aGFyYWN0ZXJzVG9VSW50KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDApOyAvLyBp
Z25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKIGludDY0X3QgY2hhcmFjdGVyc1RvSW50NjQoY29uc3Qg
VUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gMCk7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFn
ZQogdWludDY0X3QgY2hhcmFjdGVyc1RvVUludDY0KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29s
KiBvayA9IDApOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKIGludHB0cl90IGNoYXJhY3Rl
cnNUb0ludFB0cihjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSAwKTsgLy8gaWdub3Jl
cyB0cmFpbGluZyBnYXJiYWdlCiAKLWRvdWJsZSBjaGFyYWN0ZXJzVG9Eb3VibGUoY29uc3QgVUNo
YXIqLCBzaXplX3QsIGJvb2wqIG9rID0gMCk7CitKU19FWFBPUlRfUFJJVkFURSBkb3VibGUgY2hh
cmFjdGVyc1RvRG91YmxlKGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDApOwogZmxv
YXQgY2hhcmFjdGVyc1RvRmxvYXQoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gMCk7
CiAKIGludCBmaW5kKGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBVQ2hhciwgaW50IHN0YXJ0UG9zaXRp
b24gPSAwKTsKQEAgLTg1LDE0ICs4NSwxNSBAQAogCiBjbGFzcyBTdHJpbmcgewogcHVibGljOgot
ICAgIFN0cmluZygpIHsgfSAvLyBnaXZlcyBudWxsIHN0cmluZywgZGlzdGluZ3Vpc2hhYmxlIGZy
b20gYW4gZW1wdHkgc3RyaW5nCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgU3RyaW5nKCkgeyB9IC8v
IGdpdmVzIG51bGwgc3RyaW5nLCBkaXN0aW5ndWlzaGFibGUgZnJvbSBhbiBlbXB0eSBzdHJpbmcK
KyAgIEpTX0VYUE9SVF9QUklWQVRFIH5TdHJpbmcoKSB7IH0KICAgICBTdHJpbmcoY29uc3QgVUNo
YXIqIHN0ciwgdW5zaWduZWQgbGVuKQogICAgIHsKICAgICAgICAgaWYgKCFzdHIpCiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIG1faW1wbCA9IFN0cmluZ0ltcGw6OmNyZWF0ZShzdHIsIGxl
bik7CiAgICAgfQotICAgIFN0cmluZyhjb25zdCBjaGFyKiBzdHIpCisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIHN0cikKICAgICB7CiAgICAgICAgIGlmICghc3RyKQog
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTA0LDE2ICsxMDUsMTggQEAKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgbV9pbXBsID0gU3RyaW5nSW1wbDo6Y3JlYXRlKHN0ciwgbGVuZ3RoKTsK
ICAgICB9Ci0gICAgU3RyaW5nKGNvbnN0IFVDaGFyKik7IC8vIFNwZWNpZmljYWxseSBmb3IgbnVs
bCB0ZXJtaW5hdGVkIFVURi0xNgotICAgIFN0cmluZyhTdHJpbmdJbXBsKiBpKSA6IG1faW1wbChp
KSB7IH0KLSAgICBTdHJpbmcoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBpKSA6IG1faW1wbChpKSB7
IH0KKyAgICBKU19FWFBPUlRfUFJJVkFURSBTdHJpbmcoY29uc3QgVUNoYXIqKTsgLy8gU3BlY2lm
aWNhbGx5IGZvciBudWxsIHRlcm1pbmF0ZWQgVVRGLTE2CisgICAvLyBjb3B5IGNvbnN0cnVjdG9y
IG5lZWRzIHRvIGJlIGV4cGxpY2l0bHkgZGVmaW5lZCBzbyB3ZSBjYW4gc3BlY2lmeSBwcm9wZXIg
ZGxsIGxpbmthZ2UKKyAgIEpTX0VYUE9SVF9QUklWQVRFIFN0cmluZyhjb25zdCBTdHJpbmcmIHN0
cikgOiBtX2ltcGwoc3RyLm1faW1wbCkgeyB9CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgU3RyaW5n
KFN0cmluZ0ltcGwqIGkpIDogbV9pbXBsKGkpIHsgfQorICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0
cmluZyhQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGkpIDogbV9pbXBsKGkpIHsgfQogICAgIFN0cmlu
ZyhSZWZQdHI8U3RyaW5nSW1wbD4gaSkgOiBtX2ltcGwoaSkgeyB9CiAKICAgICB2b2lkIHN3YXAo
U3RyaW5nJiBvKSB7IG1faW1wbC5zd2FwKG8ubV9pbXBsKTsgfQogCiAgICAgLy8gSGFzaCB0YWJs
ZSBkZWxldGVkIHZhbHVlcywgd2hpY2ggYXJlIG9ubHkgY29uc3RydWN0ZWQgYW5kIG5ldmVyIGNv
cGllZCBvciBkZXN0cm95ZWQuCiAgICAgU3RyaW5nKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVl
VHlwZSkgOiBtX2ltcGwoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpIHsgfQotICAgIGJvb2wg
aXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2ltcGwuaXNIYXNoVGFi
bGVEZWxldGVkVmFsdWUoKTsgfQorICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNIYXNoVGFi
bGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2ltcGwuaXNIYXNoVGFibGVEZWxldGVk
VmFsdWUoKTsgfQogCiAgICAgc3RhdGljIFN0cmluZyBhZG9wdChTdHJpbmdCdWZmZXImIGJ1ZmZl
cikgeyByZXR1cm4gU3RyaW5nSW1wbDo6YWRvcHQoYnVmZmVyKTsgfQogICAgIHN0YXRpYyBTdHJp
bmcgYWRvcHQoVmVjdG9yPFVDaGFyPiYgdmVjdG9yKSB7IHJldHVybiBTdHJpbmdJbXBsOjphZG9w
dCh2ZWN0b3IpOyB9CkBAIC0xMzIsNyArMTM1LDcgQEAKICAgICAgICAgcmV0dXJuIG1faW1wbC0+
Y2hhcmFjdGVycygpOwogICAgIH0KIAotICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzV2l0aE51
bGxUZXJtaW5hdGlvbigpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIGNvbnN0IFVDaGFyKiBjaGFy
YWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpOwogICAgIAogICAgIFVDaGFyIG9wZXJhdG9yW10o
dW5zaWduZWQgaSkgY29uc3QgLy8gaWYgaSA+PSBsZW5ndGgoKSwgcmV0dXJucyAwCiAgICAgewpA
QCAtMTQwLDcgKzE0Myw3IEBACiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgcmV0dXJu
IG1faW1wbC0+Y2hhcmFjdGVycygpW2ldOwogICAgIH0KLSAgICBVQ2hhcjMyIGNoYXJhY3RlclN0
YXJ0aW5nQXQodW5zaWduZWQpIGNvbnN0OyAvLyBEaXR0by4KKyAgICBKU19FWFBPUlRfUFJJVkFU
RSBVQ2hhcjMyIGNoYXJhY3RlclN0YXJ0aW5nQXQodW5zaWduZWQpIGNvbnN0OyAvLyBEaXR0by4K
ICAgICAKICAgICBib29sIGNvbnRhaW5zKFVDaGFyIGMpIGNvbnN0IHsgcmV0dXJuIGZpbmQoYykg
IT0gLTE7IH0KICAgICBib29sIGNvbnRhaW5zKGNvbnN0IGNoYXIqIHN0ciwgYm9vbCBjYXNlU2Vu
c2l0aXZlID0gdHJ1ZSkgY29uc3QgeyByZXR1cm4gZmluZChzdHIsIDAsIGNhc2VTZW5zaXRpdmUp
ICE9IC0xOyB9CkBAIC0xNjUsMTEgKzE2OCwxMSBAQAogICAgIGJvb2wgZW5kc1dpdGgoY29uc3Qg
U3RyaW5nJiBzLCBib29sIGNhc2VTZW5zaXRpdmUgPSB0cnVlKSBjb25zdAogICAgICAgICB7IHJl
dHVybiBtX2ltcGwgPyBtX2ltcGwtPmVuZHNXaXRoKHMuaW1wbCgpLCBjYXNlU2Vuc2l0aXZlKSA6
IHMuaXNFbXB0eSgpOyB9CiAKLSAgICB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmKTsKLSAgICB2
b2lkIGFwcGVuZChjaGFyKTsKLSAgICB2b2lkIGFwcGVuZChVQ2hhcik7Ci0gICAgdm9pZCBhcHBl
bmQoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHZvaWQgaW5zZXJ0KGNvbnN0
IFN0cmluZyYsIHVuc2lnbmVkIHBvcyk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBl
bmQoY29uc3QgU3RyaW5nJik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmQoY2hh
cik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmQoVUNoYXIpOworICAgIEpTX0VY
UE9SVF9QUklWQVRFIHZvaWQgYXBwZW5kKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsK
KyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGluc2VydChjb25zdCBTdHJpbmcmLCB1bnNpZ25l
ZCBwb3MpOwogICAgIHZvaWQgaW5zZXJ0KGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoLCB1
bnNpZ25lZCBwb3MpOwogCiAgICAgU3RyaW5nJiByZXBsYWNlKFVDaGFyIGEsIFVDaGFyIGIpIHsg
aWYgKG1faW1wbCkgbV9pbXBsID0gbV9pbXBsLT5yZXBsYWNlKGEsIGIpOyByZXR1cm4gKnRoaXM7
IH0KQEAgLTE4MSw3NSArMTg0LDc1IEBACiAgICAgdm9pZCBtYWtlVXBwZXIoKSB7IGlmIChtX2lt
cGwpIG1faW1wbCA9IG1faW1wbC0+dXBwZXIoKTsgfQogICAgIHZvaWQgbWFrZVNlY3VyZShVQ2hh
ciBhQ2hhcikgeyBpZiAobV9pbXBsKSBtX2ltcGwgPSBtX2ltcGwtPnNlY3VyZShhQ2hhcik7IH0K
IAotICAgIHZvaWQgdHJ1bmNhdGUodW5zaWduZWQgbGVuKTsKLSAgICB2b2lkIHJlbW92ZSh1bnNp
Z25lZCBwb3MsIGludCBsZW4gPSAxKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHRydW5j
YXRlKHVuc2lnbmVkIGxlbik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCByZW1vdmUodW5z
aWduZWQgcG9zLCBpbnQgbGVuID0gMSk7CiAKLSAgICBTdHJpbmcgc3Vic3RyaW5nKHVuc2lnbmVk
IHBvcywgdW5zaWduZWQgbGVuID0gVUlOVF9NQVgpIGNvbnN0OworICAgIEpTX0VYUE9SVF9QUklW
QVRFIFN0cmluZyBzdWJzdHJpbmcodW5zaWduZWQgcG9zLCB1bnNpZ25lZCBsZW4gPSBVSU5UX01B
WCkgY29uc3Q7CiAgICAgU3RyaW5nIGxlZnQodW5zaWduZWQgbGVuKSBjb25zdCB7IHJldHVybiBz
dWJzdHJpbmcoMCwgbGVuKTsgfQogICAgIFN0cmluZyByaWdodCh1bnNpZ25lZCBsZW4pIGNvbnN0
IHsgcmV0dXJuIHN1YnN0cmluZyhsZW5ndGgoKSAtIGxlbiwgbGVuKTsgfQogCiAgICAgLy8gUmV0
dXJucyBhIGxvd2VyY2FzZS91cHBlcmNhc2UgdmVyc2lvbiBvZiB0aGUgc3RyaW5nCi0gICAgU3Ry
aW5nIGxvd2VyKCkgY29uc3Q7Ci0gICAgU3RyaW5nIHVwcGVyKCkgY29uc3Q7CisgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgU3RyaW5nIGxvd2VyKCkgY29uc3Q7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
U3RyaW5nIHVwcGVyKCkgY29uc3Q7CiAKLSAgICBTdHJpbmcgc3RyaXBXaGl0ZVNwYWNlKCkgY29u
c3Q7Ci0gICAgU3RyaW5nIHNpbXBsaWZ5V2hpdGVTcGFjZSgpIGNvbnN0OworICAgIEpTX0VYUE9S
VF9QUklWQVRFIFN0cmluZyBzdHJpcFdoaXRlU3BhY2UoKSBjb25zdDsKKyAgICBKU19FWFBPUlRf
UFJJVkFURSBTdHJpbmcgc2ltcGxpZnlXaGl0ZVNwYWNlKCkgY29uc3Q7CiAKLSAgICBTdHJpbmcg
cmVtb3ZlQ2hhcmFjdGVycyhDaGFyYWN0ZXJNYXRjaEZ1bmN0aW9uUHRyKSBjb25zdDsKKyAgICBK
U19FWFBPUlRfUFJJVkFURSBTdHJpbmcgcmVtb3ZlQ2hhcmFjdGVycyhDaGFyYWN0ZXJNYXRjaEZ1
bmN0aW9uUHRyKSBjb25zdDsKIAogICAgIC8vIFJldHVybiB0aGUgc3RyaW5nIHdpdGggY2FzZSBm
b2xkZWQgZm9yIGNhc2UgaW5zZW5zaXRpdmUgY29tcGFyaXNvbi4KLSAgICBTdHJpbmcgZm9sZENh
c2UoKSBjb25zdDsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBTdHJpbmcgZm9sZENhc2UoKSBjb25z
dDsKIAogICAgIHN0YXRpYyBTdHJpbmcgbnVtYmVyKHNob3J0KTsKLSAgICBzdGF0aWMgU3RyaW5n
IG51bWJlcih1bnNpZ25lZCBzaG9ydCk7Ci0gICAgc3RhdGljIFN0cmluZyBudW1iZXIoaW50KTsK
LSAgICBzdGF0aWMgU3RyaW5nIG51bWJlcih1bnNpZ25lZCk7Ci0gICAgc3RhdGljIFN0cmluZyBu
dW1iZXIobG9uZyk7Ci0gICAgc3RhdGljIFN0cmluZyBudW1iZXIodW5zaWduZWQgbG9uZyk7Ci0g
ICAgc3RhdGljIFN0cmluZyBudW1iZXIobG9uZyBsb25nKTsKLSAgICBzdGF0aWMgU3RyaW5nIG51
bWJlcih1bnNpZ25lZCBsb25nIGxvbmcpOwotICAgIHN0YXRpYyBTdHJpbmcgbnVtYmVyKGRvdWJs
ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cmluZyBudW1iZXIodW5zaWduZWQg
c2hvcnQpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJpbmcgbnVtYmVyKGludCk7
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cmluZyBudW1iZXIodW5zaWduZWQpOwor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJpbmcgbnVtYmVyKGxvbmcpOworICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJpbmcgbnVtYmVyKHVuc2lnbmVkIGxvbmcpOworICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJpbmcgbnVtYmVyKGxvbmcgbG9uZyk7CisgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RyaW5nIG51bWJlcih1bnNpZ25lZCBsb25nIGxvbmcp
OworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJpbmcgbnVtYmVyKGRvdWJsZSk7CiAg
ICAgCi0gICAgc3RhdGljIFN0cmluZyBmb3JtYXQoY29uc3QgY2hhciAqLCAuLi4pIFdURl9BVFRS
SUJVVEVfUFJJTlRGKDEsIDIpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJpbmcg
Zm9ybWF0KGNvbnN0IGNoYXIgKiwgLi4uKSBXVEZfQVRUUklCVVRFX1BSSU5URigxLCAyKTsKIAog
ICAgIC8vIFJldHVybnMgYW4gdW5pbml0aWFsaXplZCBzdHJpbmcuIFRoZSBjaGFyYWN0ZXJzIG5l
ZWRzIHRvIGJlIHdyaXR0ZW4KICAgICAvLyBpbnRvIHRoZSBidWZmZXIgcmV0dXJuZWQgaW4gZGF0
YSBiZWZvcmUgdGhlIHJldHVybmVkIHN0cmluZyBpcyB1c2VkLgogICAgIC8vIEZhaWx1cmUgdG8g
ZG8gdGhpcyB3aWxsIGhhdmUgdW5wcmVkaWN0YWJsZSByZXN1bHRzLgogICAgIHN0YXRpYyBTdHJp
bmcgY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgsIFVDaGFyKiYgZGF0YSkgeyBy
ZXR1cm4gU3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgsIGRhdGEpOyB9CiAK
LSAgICB2b2lkIHNwbGl0KGNvbnN0IFN0cmluZyYgc2VwYXJhdG9yLCBWZWN0b3I8U3RyaW5nPiYg
cmVzdWx0KSBjb25zdDsKLSAgICB2b2lkIHNwbGl0KGNvbnN0IFN0cmluZyYgc2VwYXJhdG9yLCBi
b29sIGFsbG93RW1wdHlFbnRyaWVzLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KSBjb25zdDsKLSAg
ICB2b2lkIHNwbGl0KFVDaGFyIHNlcGFyYXRvciwgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkgY29u
c3Q7Ci0gICAgdm9pZCBzcGxpdChVQ2hhciBzZXBhcmF0b3IsIGJvb2wgYWxsb3dFbXB0eUVudHJp
ZXMsIFZlY3RvcjxTdHJpbmc+JiByZXN1bHQpIGNvbnN0OworICAgIEpTX0VYUE9SVF9QUklWQVRF
IHZvaWQgc3BsaXQoY29uc3QgU3RyaW5nJiBzZXBhcmF0b3IsIFZlY3RvcjxTdHJpbmc+JiByZXN1
bHQpIGNvbnN0OworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc3BsaXQoY29uc3QgU3RyaW5n
JiBzZXBhcmF0b3IsIGJvb2wgYWxsb3dFbXB0eUVudHJpZXMsIFZlY3RvcjxTdHJpbmc+JiByZXN1
bHQpIGNvbnN0OworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc3BsaXQoVUNoYXIgc2VwYXJh
dG9yLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KSBjb25zdDsKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSB2b2lkIHNwbGl0KFVDaGFyIHNlcGFyYXRvciwgYm9vbCBhbGxvd0VtcHR5RW50cmllcywgVmVj
dG9yPFN0cmluZz4mIHJlc3VsdCkgY29uc3Q7CiAKLSAgICBpbnQgdG9JbnRTdHJpY3QoYm9vbCog
b2sgPSAwLCBpbnQgYmFzZSA9IDEwKSBjb25zdDsKLSAgICB1bnNpZ25lZCB0b1VJbnRTdHJpY3Qo
Ym9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKSBjb25zdDsKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSBpbnQgdG9JbnRTdHJpY3QoYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKSBjb25zdDsKKyAg
ICBKU19FWFBPUlRfUFJJVkFURSB1bnNpZ25lZCB0b1VJbnRTdHJpY3QoYm9vbCogb2sgPSAwLCBp
bnQgYmFzZSA9IDEwKSBjb25zdDsKICAgICBpbnQ2NF90IHRvSW50NjRTdHJpY3QoYm9vbCogb2sg
PSAwLCBpbnQgYmFzZSA9IDEwKSBjb25zdDsKICAgICB1aW50NjRfdCB0b1VJbnQ2NFN0cmljdChi
b29sKiBvayA9IDAsIGludCBiYXNlID0gMTApIGNvbnN0OwogICAgIGludHB0cl90IHRvSW50UHRy
U3RyaWN0KGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCkgY29uc3Q7CiAKLSAgICBpbnQgdG9J
bnQoYm9vbCogb2sgPSAwKSBjb25zdDsKLSAgICB1bnNpZ25lZCB0b1VJbnQoYm9vbCogb2sgPSAw
KSBjb25zdDsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBpbnQgdG9JbnQoYm9vbCogb2sgPSAwKSBj
b25zdDsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB1bnNpZ25lZCB0b1VJbnQoYm9vbCogb2sgPSAw
KSBjb25zdDsKICAgICBpbnQ2NF90IHRvSW50NjQoYm9vbCogb2sgPSAwKSBjb25zdDsKLSAgICB1
aW50NjRfdCB0b1VJbnQ2NChib29sKiBvayA9IDApIGNvbnN0OwotICAgIGludHB0cl90IHRvSW50
UHRyKGJvb2wqIG9rID0gMCkgY29uc3Q7Ci0gICAgZG91YmxlIHRvRG91YmxlKGJvb2wqIG9rID0g
MCkgY29uc3Q7Ci0gICAgZmxvYXQgdG9GbG9hdChib29sKiBvayA9IDApIGNvbnN0OworICAgIEpT
X0VYUE9SVF9QUklWQVRFIHVpbnQ2NF90IHRvVUludDY0KGJvb2wqIG9rID0gMCkgY29uc3Q7Cisg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgaW50cHRyX3QgdG9JbnRQdHIoYm9vbCogb2sgPSAwKSBjb25z
dDsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBkb3VibGUgdG9Eb3VibGUoYm9vbCogb2sgPSAwKSBj
b25zdDsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBmbG9hdCB0b0Zsb2F0KGJvb2wqIG9rID0gMCkg
Y29uc3Q7CiAKICAgICBib29sIHBlcmNlbnRhZ2UoaW50JiBwZXJjZW50YWdlKSBjb25zdDsKIAog
ICAgIC8vIFJldHVybnMgYSBTdHJpbmdJbXBsIHN1aXRhYmxlIGZvciB1c2Ugb24gYW5vdGhlciB0
aHJlYWQuCi0gICAgU3RyaW5nIGNyb3NzVGhyZWFkU3RyaW5nKCkgY29uc3Q7CisgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgU3RyaW5nIGNyb3NzVGhyZWFkU3RyaW5nKCkgY29uc3Q7CiAgICAgLy8gTWFr
ZXMgYSBkZWVwIGNvcHkuIEhlbHBmdWwgb25seSBpZiB5b3UgbmVlZCB0byB1c2UgYSBTdHJpbmcg
b24gYW5vdGhlciB0aHJlYWQKICAgICAvLyAodXNlIGNyb3NzVGhyZWFkU3RyaW5nIGlmIHRoZSBt
ZXRob2QgY2FsbCBkb2Vzbid0IG5lZWQgdG8gYmUgdGhyZWFkc2FmZSkuCiAgICAgLy8gU2luY2Ug
dGhlIHVuZGVybHlpbmcgU3RyaW5nSW1wbCBvYmplY3RzIGFyZSBpbW11dGFibGUsIHRoZXJlJ3Mg
bm8gb3RoZXIgcmVhc29uCiAgICAgLy8gdG8gZXZlciBwcmVmZXIgY29weSgpIG92ZXIgcGxhaW4g
b2xkIGFzc2lnbm1lbnQuCi0gICAgU3RyaW5nIHRocmVhZHNhZmVDb3B5KCkgY29uc3Q7CisgICAg
SlNfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHRocmVhZHNhZmVDb3B5KCkgY29uc3Q7CiAKICAgICBi
b29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuICFtX2ltcGw7IH0KLSAgICBBTFdBWVNfSU5MSU5F
IGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX2ltcGwgfHwgIW1faW1wbC0+bGVuZ3Ro
KCk7IH0KKyAgICBKU19FWFBPUlRfUFJJVkFURSBBTFdBWVNfSU5MSU5FIGJvb2wgaXNFbXB0eSgp
IGNvbnN0IHsgcmV0dXJuICFtX2ltcGwgfHwgIW1faW1wbC0+bGVuZ3RoKCk7IH0KIAotICAgIFN0
cmluZ0ltcGwqIGltcGwoKSBjb25zdCB7IHJldHVybiBtX2ltcGwuZ2V0KCk7IH0KKyAgICBKU19F
WFBPUlRfUFJJVkFURSBTdHJpbmdJbXBsKiBpbXBsKCkgY29uc3QgeyByZXR1cm4gbV9pbXBsLmdl
dCgpOyB9CiAKICNpZiBQTEFURk9STShDRikKICAgICBTdHJpbmcoQ0ZTdHJpbmdSZWYpOwpAQCAt
MjcxLDggKzI3NCw4IEBACiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKFdYKQotICAgIFN0cmluZyhj
b25zdCB3eFN0cmluZyYpOwotICAgIG9wZXJhdG9yIHd4U3RyaW5nKCkgY29uc3Q7CisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IHd4U3RyaW5nJik7CisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgb3BlcmF0b3Igd3hTdHJpbmcoKSBjb25zdDsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0o
SEFJS1UpCkBAIC0yODAsMjIgKzI4MywyNSBAQAogICAgIG9wZXJhdG9yIEJTdHJpbmcoKSBjb25z
dDsKICNlbmRpZgogCi0gICAgVmVjdG9yPGNoYXI+IGFzY2lpKCkgY29uc3Q7CisgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgVmVjdG9yPGNoYXI+IGFzY2lpKCkgY29uc3Q7CiAKLSAgICBDU3RyaW5nIGxh
dGluMSgpIGNvbnN0OwotICAgIENTdHJpbmcgdXRmOCgpIGNvbnN0OworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIENTdHJpbmcgbGF0aW4xKCkgY29uc3Q7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgQ1N0
cmluZyB1dGY4KCkgY29uc3Q7CiAKLSAgICBzdGF0aWMgU3RyaW5nIGZyb21VVEY4KGNvbnN0IGNo
YXIqLCBzaXplX3QpOwotICAgIHN0YXRpYyBTdHJpbmcgZnJvbVVURjgoY29uc3QgY2hhciopOwor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJpbmcgZnJvbVVURjgoY29uc3QgY2hhcios
IHNpemVfdCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cmluZyBmcm9tVVRGOChj
b25zdCBjaGFyKik7CiAKICAgICAvLyBUcmllcyB0byBjb252ZXJ0IHRoZSBwYXNzZWQgaW4gc3Ry
aW5nIHRvIFVURi04LCBidXQgd2lsbCBmYWxsIGJhY2sgdG8gTGF0aW4tMSBpZiB0aGUgc3RyaW5n
IGlzIG5vdCB2YWxpZCBVVEYtOC4KLSAgICBzdGF0aWMgU3RyaW5nIGZyb21VVEY4V2l0aExhdGlu
MUZhbGxiYWNrKGNvbnN0IGNoYXIqLCBzaXplX3QpOworICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIFN0cmluZyBmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjayhjb25zdCBjaGFyKiwgc2l6ZV90
KTsKICAgICAKICAgICAvLyBEZXRlcm1pbmVzIHRoZSB3cml0aW5nIGRpcmVjdGlvbiB1c2luZyB0
aGUgVW5pY29kZSBCaWRpIEFsZ29yaXRobSBydWxlcyBQMiBhbmQgUDMuCiAgICAgV1RGOjpVbmlj
b2RlOjpEaXJlY3Rpb24gZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBt
X2ltcGwgPyBtX2ltcGwtPmRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKCkgOiBXVEY6OlVuaWNvZGU6
OkxlZnRUb1JpZ2h0OyB9CiAKICAgICBib29sIGNvbnRhaW5zT25seUFTQ0lJKCkgY29uc3QgeyBy
ZXR1cm4gY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKGNoYXJhY3RlcnMoKSwgbGVuZ3RoKCkpOyB9CiAK
KyAgIC8vIG9wZXJhdG9yPSBuZWVkcyB0byBiZSBleHBsaWNpdGx5IGRlZmluZWQgdG8gc3BlY2lm
eSBkbGwgbGlua2FnZQorICAgSlNfRVhQT1JUX1BSSVZBVEUgaW5saW5lIFN0cmluZyYgb3BlcmF0
b3I9KGNvbnN0IFN0cmluZyYgYSkgeyBpZiAodGhpcyAhPSAmYSkgbV9pbXBsID0gYS5tX2ltcGw7
IHJldHVybiAqdGhpczsgfQorCiBwcml2YXRlOgogICAgIFJlZlB0cjxTdHJpbmdJbXBsPiBtX2lt
cGw7CiB9OwpAQCAtMzA1LDkgKzMxMSw5IEBACiBRRGF0YVN0cmVhbSYgb3BlcmF0b3I+PihRRGF0
YVN0cmVhbSYgc3RyZWFtLCBTdHJpbmcmIHN0cik7CiAjZW5kaWYKIAotU3RyaW5nIG9wZXJhdG9y
Kyhjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKLVN0cmluZyBvcGVyYXRvcisoY29uc3Qg
U3RyaW5nJiwgY29uc3QgY2hhciopOwotU3RyaW5nIG9wZXJhdG9yKyhjb25zdCBjaGFyKiwgY29u
c3QgU3RyaW5nJik7CitKU19FWFBPUlRfUFJJVkFURSBTdHJpbmcgb3BlcmF0b3IrKGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYpOworSlNfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIG9wZXJhdG9y
Kyhjb25zdCBTdHJpbmcmLCBjb25zdCBjaGFyKik7CitKU19FWFBPUlRfUFJJVkFURSBTdHJpbmcg
b3BlcmF0b3IrKGNvbnN0IGNoYXIqLCBjb25zdCBTdHJpbmcmKTsKIAogaW5saW5lIFN0cmluZyYg
b3BlcmF0b3IrPShTdHJpbmcmIGEsIGNvbnN0IFN0cmluZyYgYikgeyBhLmFwcGVuZChiKTsgcmV0
dXJuIGE7IH0KIApAQCAtMzUxLDcgKzM1Nyw3IEBACiAgICAgcmV0dXJuICEob3JlZCAmIDB4RkY4
MCk7CiB9CiAKLWludCBjb2RlUG9pbnRDb21wYXJlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYpOworSlNfRVhQT1JUX1BSSVZBVEUgaW50IGNvZGVQb2ludENvbXBhcmUoY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJik7CiAKIGlubGluZSBpbnQgZmluZChjb25zdCBVQ2hhciogY2hhcmFj
dGVycywgc2l6ZV90IGxlbmd0aCwgVUNoYXIgY2hhcmFjdGVyLCBpbnQgc3RhcnRQb3NpdGlvbikK
IHsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmggICAgKHJldmlzaW9uIDYx
MzAxKQorKysgSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oICAgICh3b3JraW5n
IGNvcHkpCkBAIC0xNDUsMTEgKzE0NSwxMSBAQAogICAgIH0KIAogcHVibGljOgotICAgIH5TdHJp
bmdJbXBsKCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgflN0cmluZ0ltcGwoKTsKIAotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGNyZWF0ZShjb25zdCBVQ2hhciosIHVuc2lnbmVk
IGxlbmd0aCk7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gY3JlYXRlKGNvbnN0
IGNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0lt
cGw+IGNyZWF0ZShjb25zdCBjaGFyKik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBh
c3NSZWZQdHI8U3RyaW5nSW1wbD4gY3JlYXRlKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3Ro
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBj
cmVhdGUoY29uc3QgY2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gY3JlYXRlKGNvbnN0IGNoYXIqKTsKICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBjcmVhdGUoY29uc3QgVUNoYXIqLCB1bnNp
Z25lZCBsZW5ndGgsIFBhc3NSZWZQdHI8U2hhcmVkVUNoYXI+IHNoYXJlZEJ1ZmZlcik7CiAgICAg
c3RhdGljIEFMV0FZU19JTkxJTkUgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBjcmVhdGUoUGFzc1Jl
ZlB0cjxTdHJpbmdJbXBsPiByZXAsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQog
ICAgIHsKQEAgLTE2Myw3ICsxNjMsNyBAQAogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0
cmluZ0ltcGwocmVwLT5tX2RhdGEgKyBvZmZzZXQsIGxlbmd0aCwgb3duZXJSZXApKTsKICAgICB9
CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBjcmVhdGVVbmluaXRpYWxpemVk
KHVuc2lnbmVkIGxlbmd0aCwgVUNoYXIqJiBkYXRhKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVk
IGxlbmd0aCwgVUNoYXIqJiBkYXRhKTsKICAgICBzdGF0aWMgQUxXQVlTX0lOTElORSBQYXNzUmVm
UHRyPFN0cmluZ0ltcGw+IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoLCBV
Q2hhciomIG91dHB1dCkKICAgICB7CiAgICAgICAgIGlmICghbGVuZ3RoKSB7CkBAIC0xOTcsMTAg
KzE5NywxMCBAQAogICAgICAgICB9CiAgICAgICAgIHJldHVybiBlbXB0eSgpOwogICAgIH0KLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZG9wdChTdHJpbmdCdWZmZXImKTsKKyAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZG9wdChT
dHJpbmdCdWZmZXImKTsKIAogICAgIFNoYXJlZFVDaGFyKiBzaGFyZWRCdWZmZXIoKTsKLSAgICBj
b25zdCBVQ2hhciogY2hhcmFjdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQorICAgIEpT
X0VYUE9SVF9QUklWQVRFIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzKCkgY29uc3QgeyByZXR1cm4g
bV9kYXRhOyB9CiAKICAgICBzaXplX3QgY29zdCgpCiAgICAgewpAQCAtMjQ2LDcgKzI0Niw3IEBA
CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIGRlcmVmKCkgeyBtX3JlZkNvdW50QW5kRmxhZ3MgLT0g
c19yZWZDb3VudEluY3JlbWVudDsgaWYgKCEobV9yZWZDb3VudEFuZEZsYWdzICYgKHNfcmVmQ291
bnRNYXNrIHwgc19yZWZDb3VudEZsYWdTdGF0aWMpKSkgZGVsZXRlIHRoaXM7IH0KICAgICBBTFdB
WVNfSU5MSU5FIGJvb2wgaGFzT25lUmVmKCkgY29uc3QgeyByZXR1cm4gKG1fcmVmQ291bnRBbmRG
bGFncyAmIChzX3JlZkNvdW50TWFzayB8IHNfcmVmQ291bnRGbGFnU3RhdGljKSkgPT0gc19yZWZD
b3VudEluY3JlbWVudDsgfQogCi0gICAgc3RhdGljIFN0cmluZ0ltcGwqIGVtcHR5KCk7CisgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cmluZ0ltcGwqIGVtcHR5KCk7CiAKICAgICBzdGF0
aWMgdm9pZCBjb3B5Q2hhcnMoVUNoYXIqIGRlc3RpbmF0aW9uLCBjb25zdCBVQ2hhciogc291cmNl
LCB1bnNpZ25lZCBudW1DaGFyYWN0ZXJzKQogICAgIHsKQEAgLTI2NCwxMiArMjY0LDEyIEBACiAg
ICAgLy8gU2luY2UgU3RyaW5nSW1wbCBvYmplY3RzIGFyZSBpbW11dGFibGUsIHRoZXJlJ3Mgbm8g
b3RoZXIgcmVhc29uIHRvIG1ha2UgYSBjb3B5LgogICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4g
dGhyZWFkc2FmZUNvcHkoKSBjb25zdDsKIAotICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gc3Vi
c3RyaW5nKHVuc2lnbmVkIHBvcywgdW5zaWduZWQgbGVuID0gVUlOVF9NQVgpOworICAgIEpTX0VY
UE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gc3Vic3RyaW5nKHVuc2lnbmVkIHBv
cywgdW5zaWduZWQgbGVuID0gVUlOVF9NQVgpOwogCiAgICAgVUNoYXIgb3BlcmF0b3JbXSh1bnNp
Z25lZCBpKSB7IEFTU0VSVChpIDwgbV9sZW5ndGgpOyByZXR1cm4gbV9kYXRhW2ldOyB9CiAgICAg
VUNoYXIzMiBjaGFyYWN0ZXJTdGFydGluZ0F0KHVuc2lnbmVkKTsKIAotICAgIGJvb2wgY29udGFp
bnNPbmx5V2hpdGVzcGFjZSgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgY29udGFpbnNP
bmx5V2hpdGVzcGFjZSgpOwogCiAgICAgaW50IHRvSW50U3RyaWN0KGJvb2wqIG9rID0gMCwgaW50
IGJhc2UgPSAxMCk7CiAgICAgdW5zaWduZWQgdG9VSW50U3RyaWN0KGJvb2wqIG9rID0gMCwgaW50
IGJhc2UgPSAxMCk7CkBAIC0yNzcsNyArMjc3LDcgQEAKICAgICB1aW50NjRfdCB0b1VJbnQ2NFN0
cmljdChib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApOwogICAgIGludHB0cl90IHRvSW50UHRy
U3RyaWN0KGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCk7CiAKLSAgICBpbnQgdG9JbnQoYm9v
bCogb2sgPSAwKTsgLy8gaWdub3JlcyB0cmFpbGluZyBnYXJiYWdlCisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgaW50IHRvSW50KGJvb2wqIG9rID0gMCk7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFn
ZQogICAgIHVuc2lnbmVkIHRvVUludChib29sKiBvayA9IDApOyAvLyBpZ25vcmVzIHRyYWlsaW5n
IGdhcmJhZ2UKICAgICBpbnQ2NF90IHRvSW50NjQoYm9vbCogb2sgPSAwKTsgLy8gaWdub3JlcyB0
cmFpbGluZyBnYXJiYWdlCiAgICAgdWludDY0X3QgdG9VSW50NjQoYm9vbCogb2sgPSAwKTsgLy8g
aWdub3JlcyB0cmFpbGluZyBnYXJiYWdlCkBAIC0yODYsMzUgKzI4NiwzNSBAQAogICAgIGRvdWJs
ZSB0b0RvdWJsZShib29sKiBvayA9IDApOwogICAgIGZsb2F0IHRvRmxvYXQoYm9vbCogb2sgPSAw
KTsKIAotICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gbG93ZXIoKTsKLSAgICBQYXNzUmVmUHRy
PFN0cmluZ0ltcGw+IHVwcGVyKCk7Ci0gICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBzZWN1cmUo
VUNoYXIgYUNoYXIpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8U3RyaW5nSW1w
bD4gbG93ZXIoKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+
IHVwcGVyKCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBz
ZWN1cmUoVUNoYXIgYUNoYXIpOwogICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gZm9sZENhc2Uo
KTsKIAogICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gc3RyaXBXaGl0ZVNwYWNlKCk7Ci0gICAg
UGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBzaW1wbGlmeVdoaXRlU3BhY2UoKTsKKyAgICBKU19FWFBP
UlRfUFJJVkFURSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHNpbXBsaWZ5V2hpdGVTcGFjZSgpOwog
CiAgICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZW1vdmVDaGFyYWN0ZXJzKENoYXJhY3Rlck1h
dGNoRnVuY3Rpb25QdHIpOwogCi0gICAgaW50IGZpbmQoY29uc3QgY2hhciosIGludCBpbmRleCA9
IDAsIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IHRydWUpOwotICAgIGludCBmaW5kKFVDaGFyLCBpbnQg
aW5kZXggPSAwKTsKLSAgICBpbnQgZmluZChDaGFyYWN0ZXJNYXRjaEZ1bmN0aW9uUHRyLCBpbnQg
aW5kZXggPSAwKTsKLSAgICBpbnQgZmluZChTdHJpbmdJbXBsKiwgaW50IGluZGV4LCBib29sIGNh
c2VTZW5zaXRpdmUgPSB0cnVlKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBpbnQgZmluZChjb25z
dCBjaGFyKiwgaW50IGluZGV4ID0gMCwgYm9vbCBjYXNlU2Vuc2l0aXZlID0gdHJ1ZSk7CisgICAg
SlNfRVhQT1JUX1BSSVZBVEUgaW50IGZpbmQoVUNoYXIsIGludCBpbmRleCA9IDApOworICAgIEpT
X0VYUE9SVF9QUklWQVRFIGludCBmaW5kKENoYXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIsIGludCBp
bmRleCA9IDApOworICAgIEpTX0VYUE9SVF9QUklWQVRFIGludCBmaW5kKFN0cmluZ0ltcGwqLCBp
bnQgaW5kZXgsIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IHRydWUpOwogCi0gICAgaW50IHJldmVyc2VG
aW5kKFVDaGFyLCBpbnQgaW5kZXgpOwotICAgIGludCByZXZlcnNlRmluZChTdHJpbmdJbXBsKiwg
aW50IGluZGV4LCBib29sIGNhc2VTZW5zaXRpdmUgPSB0cnVlKTsKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSBpbnQgcmV2ZXJzZUZpbmQoVUNoYXIsIGludCBpbmRleCk7CisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgaW50IHJldmVyc2VGaW5kKFN0cmluZ0ltcGwqLCBpbnQgaW5kZXgsIGJvb2wgY2FzZVNl
bnNpdGl2ZSA9IHRydWUpOwogICAgIAogICAgIGJvb2wgc3RhcnRzV2l0aChTdHJpbmdJbXBsKiBz
dHIsIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IHRydWUpIHsgcmV0dXJuIHJldmVyc2VGaW5kKHN0ciwg
MCwgY2FzZVNlbnNpdGl2ZSkgPT0gMDsgfQotICAgIGJvb2wgZW5kc1dpdGgoU3RyaW5nSW1wbCos
IGJvb2wgY2FzZVNlbnNpdGl2ZSA9IHRydWUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wg
ZW5kc1dpdGgoU3RyaW5nSW1wbCosIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IHRydWUpOwogCi0gICAg
UGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXBsYWNlKFVDaGFyLCBVQ2hhcik7Ci0gICAgUGFzc1Jl
ZlB0cjxTdHJpbmdJbXBsPiByZXBsYWNlKFVDaGFyLCBTdHJpbmdJbXBsKik7Ci0gICAgUGFzc1Jl
ZlB0cjxTdHJpbmdJbXBsPiByZXBsYWNlKFN0cmluZ0ltcGwqLCBTdHJpbmdJbXBsKik7Ci0gICAg
UGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXBsYWNlKHVuc2lnbmVkIGluZGV4LCB1bnNpZ25lZCBs
ZW4sIFN0cmluZ0ltcGwqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBQYXNzUmVmUHRyPFN0cmlu
Z0ltcGw+IHJlcGxhY2UoVUNoYXIsIFVDaGFyKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBQYXNz
UmVmUHRyPFN0cmluZ0ltcGw+IHJlcGxhY2UoVUNoYXIsIFN0cmluZ0ltcGwqKTsKKyAgICBKU19F
WFBPUlRfUFJJVkFURSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJlcGxhY2UoU3RyaW5nSW1wbCos
IFN0cmluZ0ltcGwqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBQYXNzUmVmUHRyPFN0cmluZ0lt
cGw+IHJlcGxhY2UodW5zaWduZWQgaW5kZXgsIHVuc2lnbmVkIGxlbiwgU3RyaW5nSW1wbCopOwog
CiAgICAgVmVjdG9yPGNoYXI+IGFzY2lpKCk7CiAKLSAgICBXVEY6OlVuaWNvZGU6OkRpcmVjdGlv
biBkZWZhdWx0V3JpdGluZ0RpcmVjdGlvbigpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIFdURjo6
VW5pY29kZTo6RGlyZWN0aW9uIGRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKCk7CiAKICNpZiBQTEFU
Rk9STShDRikKICAgICBDRlN0cmluZ1JlZiBjcmVhdGVDRlN0cmluZygpOwpAQCAtMzI3LDcgKzMy
Nyw3IEBACiAgICAgLy8gVGhpcyBudW1iZXIgbXVzdCBiZSBhdCBsZWFzdCAyIHRvIGF2b2lkIHNo
YXJpbmcgZW1wdHksIG51bGwgYXMgd2VsbCBhcyAxIGNoYXJhY3RlciBzdHJpbmdzIGZyb20gU21h
bGxTdHJpbmdzLgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2NvcHlDaGFyc0lubGluZUN1
dE9mZiA9IDIwOwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gY3JlYXRlU3Ry
aXBwaW5nTnVsbENoYXJhY3RlcnNTbG93Q2FzZShjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0
aCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4g
Y3JlYXRlU3RyaXBwaW5nTnVsbENoYXJhY3RlcnNTbG93Q2FzZShjb25zdCBVQ2hhciosIHVuc2ln
bmVkIGxlbmd0aCk7CiAgICAgCiAgICAgQnVmZmVyT3duZXJzaGlwIGJ1ZmZlck93bmVyc2hpcCgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEJ1ZmZlck93bmVyc2hpcD4obV9yZWZDb3VudEFu
ZEZsYWdzICYgc19yZWZDb3VudE1hc2tCdWZmZXJPd25lcnNoaXApOyB9CiAgICAgYm9vbCBpc1N0
YXRpYygpIGNvbnN0IHsgcmV0dXJuIG1fcmVmQ291bnRBbmRGbGFncyAmIHNfcmVmQ291bnRGbGFn
U3RhdGljOyB9CkBAIC0zNDAsMTcgKzM0MCwxNyBAQAogICAgIG11dGFibGUgdW5zaWduZWQgbV9o
YXNoOwogfTsKIAotYm9vbCBlcXVhbChjb25zdCBTdHJpbmdJbXBsKiwgY29uc3QgU3RyaW5nSW1w
bCopOwotYm9vbCBlcXVhbChjb25zdCBTdHJpbmdJbXBsKiwgY29uc3QgY2hhciopOworSlNfRVhQ
T1JUX1BSSVZBVEUgYm9vbCBlcXVhbChjb25zdCBTdHJpbmdJbXBsKiwgY29uc3QgU3RyaW5nSW1w
bCopOworSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBlcXVhbChjb25zdCBTdHJpbmdJbXBsKiwgY29u
c3QgY2hhciopOwogaW5saW5lIGJvb2wgZXF1YWwoY29uc3QgY2hhciogYSwgU3RyaW5nSW1wbCog
YikgeyByZXR1cm4gZXF1YWwoYiwgYSk7IH0KIAotYm9vbCBlcXVhbElnbm9yaW5nQ2FzZShTdHJp
bmdJbXBsKiwgU3RyaW5nSW1wbCopOwotYm9vbCBlcXVhbElnbm9yaW5nQ2FzZShTdHJpbmdJbXBs
KiwgY29uc3QgY2hhciopOworSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBlcXVhbElnbm9yaW5nQ2Fz
ZShTdHJpbmdJbXBsKiwgU3RyaW5nSW1wbCopOworSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBlcXVh
bElnbm9yaW5nQ2FzZShTdHJpbmdJbXBsKiwgY29uc3QgY2hhciopOwogaW5saW5lIGJvb2wgZXF1
YWxJZ25vcmluZ0Nhc2UoY29uc3QgY2hhciogYSwgU3RyaW5nSW1wbCogYikgeyByZXR1cm4gZXF1
YWxJZ25vcmluZ0Nhc2UoYiwgYSk7IH0KLWJvb2wgZXF1YWxJZ25vcmluZ0Nhc2UoY29uc3QgVUNo
YXIqIGEsIGNvbnN0IGNoYXIqIGIsIHVuc2lnbmVkIGxlbmd0aCk7CitKU19FWFBPUlRfUFJJVkFU
RSBib29sIGVxdWFsSWdub3JpbmdDYXNlKGNvbnN0IFVDaGFyKiBhLCBjb25zdCBjaGFyKiBiLCB1
bnNpZ25lZCBsZW5ndGgpOwogaW5saW5lIGJvb2wgZXF1YWxJZ25vcmluZ0Nhc2UoY29uc3QgY2hh
ciogYSwgY29uc3QgVUNoYXIqIGIsIHVuc2lnbmVkIGxlbmd0aCkgeyByZXR1cm4gZXF1YWxJZ25v
cmluZ0Nhc2UoYiwgYSwgbGVuZ3RoKTsgfQogCi1ib29sIGVxdWFsSWdub3JpbmdOdWxsaXR5KFN0
cmluZ0ltcGwqLCBTdHJpbmdJbXBsKik7CitKU19FWFBPUlRfUFJJVkFURSBib29sIGVxdWFsSWdu
b3JpbmdOdWxsaXR5KFN0cmluZ0ltcGwqLCBTdHJpbmdJbXBsKik7CiAKIGludCBjb2RlUG9pbnRD
b21wYXJlKGNvbnN0IFN0cmluZ0ltcGwqLCBjb25zdCBTdHJpbmdJbXBsKik7CiAKSW5kZXg6IEph
dmFTY3JpcHRDb3JlL3d0Zi9CeXRlQXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS93dGYvQnl0ZUFycmF5LmggIChyZXZpc2lvbiA2MTMwMSkKKysrIEphdmFTY3JpcHRDb3JlL3d0
Zi9CeXRlQXJyYXkuaCAgKHdvcmtpbmcgY29weSkKQEAgLTc4LDcgKzc4LDcgQEAKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJ5dGVBcnJheT4g
Y3JlYXRlKHNpemVfdCBzaXplKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBh
c3NSZWZQdHI8Qnl0ZUFycmF5PiBjcmVhdGUoc2l6ZV90IHNpemUpOwogCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgQnl0ZUFycmF5KHNpemVfdCBzaXplKQpJbmRleDogSmF2YVNjcmlwdENvcmUvd3Rm
L1RocmVhZGluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmcu
aCAgKHJldmlzaW9uIDYxMzAxKQorKysgSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZy5oICAo
d29ya2luZyBjb3B5KQpAQCAtODQsMjYgKzg0LDI2IEBACiAvLyBUaGlzIGZ1bmN0aW9uIG11c3Qg
YmUgY2FsbGVkIGZyb20gdGhlIG1haW4gdGhyZWFkLiBJdCBpcyBzYWZlIHRvIGNhbGwgaXQgcmVw
ZWF0ZWRseS4KIC8vIERhcndpbiBpcyBhbiBleGNlcHRpb24gdG8gdGhpcyBydWxlOiBpdCBpcyBP
SyB0byBjYWxsIGl0IGZyb20gYW55IHRocmVhZCwgdGhlIG9ubHkgCiAvLyByZXF1aXJlbWVudCBp
cyB0aGF0IHRoZSBjYWxscyBhcmUgbm90IHJlZW50cmFudC4KLXZvaWQgaW5pdGlhbGl6ZVRocmVh
ZGluZygpOworSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nKCk7CiAK
IC8vIFJldHVybnMgMCBpZiB0aHJlYWQgY3JlYXRpb24gZmFpbGVkLgogLy8gVGhlIHRocmVhZCBu
YW1lIG11c3QgYmUgYSBsaXRlcmFsIHNpbmNlIG9uIHNvbWUgcGxhdGZvcm1zIGl0J3MgcGFzc2Vk
IGluIHRvIHRoZSB0aHJlYWQuCi1UaHJlYWRJZGVudGlmaWVyIGNyZWF0ZVRocmVhZChUaHJlYWRG
dW5jdGlvbiwgdm9pZCosIGNvbnN0IGNoYXIqIHRocmVhZE5hbWUpOworSlNfRVhQT1JUX1BSSVZB
VEUgVGhyZWFkSWRlbnRpZmllciBjcmVhdGVUaHJlYWQoVGhyZWFkRnVuY3Rpb24sIHZvaWQqLCBj
b25zdCBjaGFyKiB0aHJlYWROYW1lKTsKIAogLy8gSW50ZXJuYWwgcGxhdGZvcm0tc3BlY2lmaWMg
Y3JlYXRlVGhyZWFkIGltcGxlbWVudGF0aW9uLgotVGhyZWFkSWRlbnRpZmllciBjcmVhdGVUaHJl
YWRJbnRlcm5hbChUaHJlYWRGdW5jdGlvbiwgdm9pZCosIGNvbnN0IGNoYXIqIHRocmVhZE5hbWUp
OworSlNfRVhQT1JUX1BSSVZBVEUgVGhyZWFkSWRlbnRpZmllciBjcmVhdGVUaHJlYWRJbnRlcm5h
bChUaHJlYWRGdW5jdGlvbiwgdm9pZCosIGNvbnN0IGNoYXIqIHRocmVhZE5hbWUpOwogCiAvLyBD
YWxsZWQgaW4gdGhlIHRocmVhZCBkdXJpbmcgaW5pdGlhbGl6YXRpb24uCiAvLyBIZWxwZnVsIGZv
ciBwbGF0Zm9ybXMgd2hlcmUgdGhlIHRocmVhZCBuYW1lIG11c3QgYmUgc2V0IGZyb20gd2l0aGlu
IHRoZSB0aHJlYWQuCiB2b2lkIGluaXRpYWxpemVDdXJyZW50VGhyZWFkSW50ZXJuYWwoY29uc3Qg
Y2hhciogdGhyZWFkTmFtZSk7CiAKLVRocmVhZElkZW50aWZpZXIgY3VycmVudFRocmVhZCgpOwot
aW50IHdhaXRGb3JUaHJlYWRDb21wbGV0aW9uKFRocmVhZElkZW50aWZpZXIsIHZvaWQqKik7Ci12
b2lkIGRldGFjaFRocmVhZChUaHJlYWRJZGVudGlmaWVyKTsKK0pTX0VYUE9SVF9QUklWQVRFIFRo
cmVhZElkZW50aWZpZXIgY3VycmVudFRocmVhZCgpOworSlNfRVhQT1JUX1BSSVZBVEUgaW50IHdh
aXRGb3JUaHJlYWRDb21wbGV0aW9uKFRocmVhZElkZW50aWZpZXIsIHZvaWQqKik7CitKU19FWFBP
UlRfUFJJVkFURSB2b2lkIGRldGFjaFRocmVhZChUaHJlYWRJZGVudGlmaWVyKTsKIAogCi12b2lk
IGxvY2tBdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleCgpOwotdm9pZCB1bmxvY2tBdG9t
aWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleCgpOworSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBs
b2NrQXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljTXV0ZXgoKTsKK0pTX0VYUE9SVF9QUklWQVRF
IHZvaWQgdW5sb2NrQXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljTXV0ZXgoKTsKIAogfSAvLyBu
YW1lc3BhY2UgV1RGCiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9NYWluVGhyZWFkLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL01haW5UaHJlYWQuaCAocmV2aXNpb24gNjEz
MDEpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvTWFpblRocmVhZC5oICh3b3JraW5nIGNvcHkpCkBA
IC0zOCwxNSArMzgsMTUgQEAKIHR5cGVkZWYgdm9pZCBNYWluVGhyZWFkRnVuY3Rpb24odm9pZCop
OwogCiAvLyBNdXN0IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4KLXZvaWQgaW5pdGlh
bGl6ZU1haW5UaHJlYWQoKTsKK0pTX0VYUE9SVF9QUklWQVRFIHZvaWQgaW5pdGlhbGl6ZU1haW5U
aHJlYWQoKTsKIAotdm9pZCBjYWxsT25NYWluVGhyZWFkKE1haW5UaHJlYWRGdW5jdGlvbiosIHZv
aWQqIGNvbnRleHQpOworSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBjYWxsT25NYWluVGhyZWFkKE1h
aW5UaHJlYWRGdW5jdGlvbiosIHZvaWQqIGNvbnRleHQpOwogdm9pZCBjYWxsT25NYWluVGhyZWFk
QW5kV2FpdChNYWluVGhyZWFkRnVuY3Rpb24qLCB2b2lkKiBjb250ZXh0KTsKIHZvaWQgY2FuY2Vs
Q2FsbE9uTWFpblRocmVhZChNYWluVGhyZWFkRnVuY3Rpb24qLCB2b2lkKiBjb250ZXh0KTsKIAot
dm9pZCBzZXRNYWluVGhyZWFkQ2FsbGJhY2tzUGF1c2VkKGJvb2wgcGF1c2VkKTsKK0pTX0VYUE9S
VF9QUklWQVRFIHZvaWQgc2V0TWFpblRocmVhZENhbGxiYWNrc1BhdXNlZChib29sIHBhdXNlZCk7
CiAKLWJvb2wgaXNNYWluVGhyZWFkKCk7CitKU19FWFBPUlRfUFJJVkFURSBib29sIGlzTWFpblRo
cmVhZCgpOwogCiAvLyBOT1RFOiB0aGVzZSBmdW5jdGlvbnMgYXJlIGludGVybmFsIHRvIHRoZSBj
YWxsT25NYWluVGhyZWFkIGltcGxlbWVudGF0aW9uLgogdm9pZCBpbml0aWFsaXplTWFpblRocmVh
ZFBsYXRmb3JtKCk7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvRmFzdE1hbGxvYy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9GYXN0TWFsbG9jLmggKHJldmlzaW9uIDYxMzAx
KQorKysgSmF2YVNjcmlwdENvcmUvd3RmL0Zhc3RNYWxsb2MuaCAod29ya2luZyBjb3B5KQpAQCAt
MjksMTIgKzI5LDEyIEBACiBuYW1lc3BhY2UgV1RGIHsKIAogICAgIC8vIFRoZXNlIGZ1bmN0aW9u
cyBjYWxsIENSQVNIKCkgaWYgYW4gYWxsb2NhdGlvbiBmYWlscy4KLSAgICB2b2lkKiBmYXN0TWFs
bG9jKHNpemVfdCk7Ci0gICAgdm9pZCogZmFzdFplcm9lZE1hbGxvYyhzaXplX3QpOwotICAgIHZv
aWQqIGZhc3RDYWxsb2Moc2l6ZV90IG51bUVsZW1lbnRzLCBzaXplX3QgZWxlbWVudFNpemUpOwot
ICAgIHZvaWQqIGZhc3RSZWFsbG9jKHZvaWQqLCBzaXplX3QpOwotICAgIGNoYXIqIGZhc3RTdHJE
dXAoY29uc3QgY2hhciopOwotICAgIHNpemVfdCBmYXN0TWFsbG9jU2l6ZShjb25zdCB2b2lkKik7
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCogZmFzdE1hbGxvYyhzaXplX3QpOworICAgIEpT
X0VYUE9SVF9QUklWQVRFIHZvaWQqIGZhc3RaZXJvZWRNYWxsb2Moc2l6ZV90KTsKKyAgICBKU19F
WFBPUlRfUFJJVkFURSB2b2lkKiBmYXN0Q2FsbG9jKHNpemVfdCBudW1FbGVtZW50cywgc2l6ZV90
IGVsZW1lbnRTaXplKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkKiBmYXN0UmVhbGxvYyh2
b2lkKiwgc2l6ZV90KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBjaGFyKiBmYXN0U3RyRHVwKGNv
bnN0IGNoYXIqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzaXplX3QgZmFzdE1hbGxvY1NpemUo
Y29uc3Qgdm9pZCopOwogCiAgICAgc3RydWN0IFRyeU1hbGxvY1JldHVyblZhbHVlIHsKICAgICAg
ICAgVHJ5TWFsbG9jUmV0dXJuVmFsdWUodm9pZCogZGF0YSkKQEAgLTY4LDEyICs2OCwxMiBAQAog
ICAgICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiAgICAgfQogCi0gICAgVHJ5TWFsbG9jUmV0dXJu
VmFsdWUgdHJ5RmFzdE1hbGxvYyhzaXplX3Qgbik7Ci0gICAgVHJ5TWFsbG9jUmV0dXJuVmFsdWUg
dHJ5RmFzdFplcm9lZE1hbGxvYyhzaXplX3Qgbik7Ci0gICAgVHJ5TWFsbG9jUmV0dXJuVmFsdWUg
dHJ5RmFzdENhbGxvYyhzaXplX3Qgbl9lbGVtZW50cywgc2l6ZV90IGVsZW1lbnRfc2l6ZSk7Ci0g
ICAgVHJ5TWFsbG9jUmV0dXJuVmFsdWUgdHJ5RmFzdFJlYWxsb2Modm9pZCogcCwgc2l6ZV90IG4p
OworICAgIEpTX0VYUE9SVF9QUklWQVRFIFRyeU1hbGxvY1JldHVyblZhbHVlIHRyeUZhc3RNYWxs
b2Moc2l6ZV90IG4pOworICAgIEpTX0VYUE9SVF9QUklWQVRFIFRyeU1hbGxvY1JldHVyblZhbHVl
IHRyeUZhc3RaZXJvZWRNYWxsb2Moc2l6ZV90IG4pOworICAgIEpTX0VYUE9SVF9QUklWQVRFIFRy
eU1hbGxvY1JldHVyblZhbHVlIHRyeUZhc3RDYWxsb2Moc2l6ZV90IG5fZWxlbWVudHMsIHNpemVf
dCBlbGVtZW50X3NpemUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIFRyeU1hbGxvY1JldHVyblZh
bHVlIHRyeUZhc3RSZWFsbG9jKHZvaWQqIHAsIHNpemVfdCBuKTsKIAotICAgIHZvaWQgZmFzdEZy
ZWUodm9pZCopOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZmFzdEZyZWUodm9pZCopOwog
CiAjaWZuZGVmIE5ERUJVRyAgICAKICAgICB2b2lkIGZhc3RNYWxsb2NGb3JiaWQoKTsKSW5kZXg6
IEphdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRTcGVjaWZpYy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL3d0Zi9UaHJlYWRTcGVjaWZpYy5oIChyZXZpc2lvbiA2MTMwMSkKKysrIEphdmFT
Y3JpcHRDb3JlL3d0Zi9UaHJlYWRTcGVjaWZpYy5oICh3b3JraW5nIGNvcHkpCkBAIC0xOTgsOCAr
MTk4LDggQEAKIC8vIDIpIFdlIGRvIG5vdCBuZWVkIHRvIGhvbGQgbWFueSBpbnN0YW5jZXMgb2Yg
VGhyZWFkU3BlY2lmaWM8PiBkYXRhLiBUaGlzIGZpeGVkIG51bWJlciBzaG91bGQgYmUgZmFyIGVu
b3VnaC4KIGNvbnN0IGludCBrTWF4VGxzS2V5U2l6ZSA9IDI1NjsKIAotbG9uZyYgdGxzS2V5Q291
bnQoKTsKLURXT1JEKiB0bHNLZXlzKCk7CitKU19FWFBPUlRfUFJJVkFURSBsb25nJiB0bHNLZXlD
b3VudCgpOworSlNfRVhQT1JUX1BSSVZBVEUgRFdPUkQqIHRsc0tleXMoKTsKIAogdGVtcGxhdGU8
dHlwZW5hbWUgVD4KIGlubGluZSBUaHJlYWRTcGVjaWZpYzxUPjo6VGhyZWFkU3BlY2lmaWMoKQpJ
bmRleDogSmF2YVNjcmlwdENvcmUvd3RmL1dURlRocmVhZERhdGEuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
YXZhU2NyaXB0Q29yZS93dGYvV1RGVGhyZWFkRGF0YS5oICAocmV2aXNpb24gNjEzMDEpCisrKyBK
YXZhU2NyaXB0Q29yZS93dGYvV1RGVGhyZWFkRGF0YS5oICAod29ya2luZyBjb3B5KQpAQCAtODQs
OCArODQsOCBAQAogCiBjbGFzcyBXVEZUaHJlYWREYXRhIDogcHVibGljIE5vbmNvcHlhYmxlIHsK
IHB1YmxpYzoKLSAgICBXVEZUaHJlYWREYXRhKCk7Ci0gICAgfldURlRocmVhZERhdGEoKTsKKyAg
ICBKU19FWFBPUlRfUFJJVkFURSBXVEZUaHJlYWREYXRhKCk7CisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgfldURlRocmVhZERhdGEoKTsKIAogICAgIFdlYkNvcmU6OkF0b21pY1N0cmluZ1RhYmxlKiBh
dG9taWNTdHJpbmdUYWJsZSgpCiAgICAgewpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL0RhdGVN
YXRoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL0RhdGVNYXRoLmggICAocmV2
aXNpb24gNjEzMDEpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvRGF0ZU1hdGguaCAgICh3b3JraW5n
IGNvcHkpCkBAIC01NCw3ICs1NCw3IEBACiBpbnQgZXF1aXZhbGVudFllYXJGb3JEU1QoaW50IHll
YXIpOwogCiAvLyBOb3QgcmVhbGx5IG1hdGggcmVsYXRlZCwgYnV0IHRoaXMgaXMgY3VycmVudGx5
IHRoZSBvbmx5IHNoYXJlZCBwbGFjZSB0byBwdXQgdGhlc2UuICAKLWRvdWJsZSBwYXJzZURhdGVG
cm9tTnVsbFRlcm1pbmF0ZWRDaGFyYWN0ZXJzKGNvbnN0IGNoYXIqIGRhdGVTdHJpbmcpOworSlNf
RVhQT1JUX1BSSVZBVEUgZG91YmxlIHBhcnNlRGF0ZUZyb21OdWxsVGVybWluYXRlZENoYXJhY3Rl
cnMoY29uc3QgY2hhciogZGF0ZVN0cmluZyk7CiBkb3VibGUgdGltZUNsaXAoZG91YmxlKTsKIAog
aW5saW5lIGRvdWJsZSBqc0N1cnJlbnRUaW1lKCkKQEAgLTc3LDExICs3NywxMSBAQAogY29uc3Qg
ZG91YmxlIG1zUGVyTW9udGggPSAyNTkyMDAwMDAwLjA7CiAKIC8vIFJldHVybnMgdGhlIG51bWJl
ciBvZiBkYXlzIGZyb20gMTk3MC0wMS0wMSB0byB0aGUgc3BlY2lmaWVkIGRhdGUuCi1kb3VibGUg
ZGF0ZVRvRGF5c0Zyb20xOTcwKGludCB5ZWFyLCBpbnQgbW9udGgsIGludCBkYXkpOwotaW50IG1z
VG9ZZWFyKGRvdWJsZSBtcyk7Ci1pbnQgZGF5SW5ZZWFyKGRvdWJsZSBtcywgaW50IHllYXIpOwot
aW50IG1vbnRoRnJvbURheUluWWVhcihpbnQgZGF5SW5ZZWFyLCBib29sIGxlYXBZZWFyKTsKLWlu
dCBkYXlJbk1vbnRoRnJvbURheUluWWVhcihpbnQgZGF5SW5ZZWFyLCBib29sIGxlYXBZZWFyKTsK
K0pTX0VYUE9SVF9QUklWQVRFIGRvdWJsZSBkYXRlVG9EYXlzRnJvbTE5NzAoaW50IHllYXIsIGlu
dCBtb250aCwgaW50IGRheSk7CitKU19FWFBPUlRfUFJJVkFURSBpbnQgbXNUb1llYXIoZG91Ymxl
IG1zKTsKK0pTX0VYUE9SVF9QUklWQVRFIGludCBkYXlJblllYXIoZG91YmxlIG1zLCBpbnQgeWVh
cik7CitKU19FWFBPUlRfUFJJVkFURSBpbnQgbW9udGhGcm9tRGF5SW5ZZWFyKGludCBkYXlJblll
YXIsIGJvb2wgbGVhcFllYXIpOworSlNfRVhQT1JUX1BSSVZBVEUgaW50IGRheUluTW9udGhGcm9t
RGF5SW5ZZWFyKGludCBkYXlJblllYXIsIGJvb2wgbGVhcFllYXIpOwogCiB9IC8vIG5hbWVzcGFj
ZSBXVEYKIApJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUvQ29sbGF0b3IuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvdW5pY29kZS9Db2xsYXRvci5oICAgKHJldmlz
aW9uIDYxMzAxKQorKysgSmF2YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUvQ29sbGF0b3IuaCAgICh3
b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBACiAKIG5hbWVzcGFjZSBXVEYgewogCi0gICAg
Y2xhc3MgQ29sbGF0b3IgOiBwdWJsaWMgTm9uY29weWFibGUgeworICAgIGNsYXNzIEpTX0VYUE9S
VF9QUklWQVRFIENvbGxhdG9yIDogcHVibGljIE5vbmNvcHlhYmxlIHsKICAgICBwdWJsaWM6CiAg
ICAgICAgIGVudW0gUmVzdWx0IHsgRXF1YWwgPSAwLCBHcmVhdGVyID0gMSwgTGVzcyA9IC0xIH07
CiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi91bmljb2RlL1VURjguaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBKYXZhU2NyaXB0Q29yZS93dGYvdW5pY29kZS9VVEY4LmggICAocmV2aXNpb24gNjEzMDEpCisr
KyBKYXZhU2NyaXB0Q29yZS93dGYvdW5pY29kZS9VVEY4LmggICAod29ya2luZyBjb3B5KQpAQCAt
NjYsNyArNjYsNyBAQAogICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiogc291cmNlU3Rh
cnQsIGNvbnN0IGNoYXIqIHNvdXJjZUVuZCwgCiAgICAgICAgICAgICAgICAgICAgIFVDaGFyKiog
dGFyZ2V0U3RhcnQsIFVDaGFyKiB0YXJnZXRFbmQsIGJvb2wgc3RyaWN0ID0gdHJ1ZSk7CiAKLSAg
ICBDb252ZXJzaW9uUmVzdWx0IGNvbnZlcnRVVEYxNlRvVVRGOCgKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSBDb252ZXJzaW9uUmVzdWx0IGNvbnZlcnRVVEYxNlRvVVRGOCgKICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgVUNoYXIqKiBzb3VyY2VTdGFydCwgY29uc3QgVUNoYXIqIHNvdXJjZUVuZCwg
CiAgICAgICAgICAgICAgICAgICAgIGNoYXIqKiB0YXJnZXRTdGFydCwgY2hhciogdGFyZ2V0RW5k
LCBib29sIHN0cmljdCA9IHRydWUpOwogICB9CkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvQ3Vy
cmVudFRpbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvQ3VycmVudFRpbWUu
aCAgICAocmV2aXNpb24gNjEzMDEpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvQ3VycmVudFRpbWUu
aCAgICAod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQAogICAgIC8vIFJldHVybnMgdGhl
IGN1cnJlbnQgVVRDIHRpbWUgaW4gc2Vjb25kcywgY291bnRlZCBmcm9tIEphbnVhcnkgMSwgMTk3
MC4KICAgICAvLyBQcmVjaXNpb24gdmFyaWVzIGRlcGVuZGluZyBvbiBwbGF0Zm9ybSBidXQgaXMg
dXN1YWxseSBhcyBnb29kIG9yIGJldHRlciAKICAgICAvLyB0aGFuIGEgbWlsbGlzZWNvbmQuCi0g
ICAgZG91YmxlIGN1cnJlbnRUaW1lKCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgZG91YmxlIGN1
cnJlbnRUaW1lKCk7CiAKICAgICAvLyBTYW1lIHRoaW5nLCBpbiBtaWxsaXNlY29uZHMuCiAgICAg
aW5saW5lIGRvdWJsZSBjdXJyZW50VGltZU1TKCkKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9k
dG9hLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL2R0b2EuaCAgIChyZXZpc2lv
biA2MTMwMSkKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9kdG9hLmggICAod29ya2luZyBjb3B5KQpA
QCAtMzksNyArMzksNyBAQAogLy8gZHRvYSgpIGZvciBFQ01BLTI2MiAnVG9TdHJpbmcgQXBwbGll
ZCB0byB0aGUgTnVtYmVyIFR5cGUuJwogLy8gVGhlICpyZXN1bHRMZW5ndGggd2lsbCBoYXZlIHRo
ZSBsZW5ndGggb2YgdGhlIHJlc3VsdGFudCBzdHJpbmcgaW4gYnVmZXIuCiAvLyBUaGUgcmVzdWx0
YW50IHN0cmluZyBpc24ndCB0ZXJtaW5hdGVkIGJ5IDAuCi12b2lkIGRvdWJsZVRvU3RyaW5nSW5K
YXZhU2NyaXB0Rm9ybWF0KGRvdWJsZSwgRHRvYUJ1ZmZlciwgdW5zaWduZWQqIHJlc3VsdExlbmd0
aCk7CitKU19FWFBPUlRfUFJJVkFURSB2b2lkIGRvdWJsZVRvU3RyaW5nSW5KYXZhU2NyaXB0Rm9y
bWF0KGRvdWJsZSwgRHRvYUJ1ZmZlciwgdW5zaWduZWQqIHJlc3VsdExlbmd0aCk7CiAKIH0gLy8g
bmFtZXNwYWNlIFdURgogCkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvQXNzZXJ0aW9ucy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9Bc3NlcnRpb25zLmggKHJldmlzaW9uIDYx
MzAxKQorKysgSmF2YVNjcmlwdENvcmUvd3RmL0Fzc2VydGlvbnMuaCAod29ya2luZyBjb3B5KQpA
QCAtMTM3LDEzICsxMzcsMTMgQEAKICAgICBXVEZMb2dDaGFubmVsU3RhdGUgc3RhdGU7CiB9IFdU
RkxvZ0NoYW5uZWw7CiAKLXZvaWQgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZShjb25zdCBjaGFy
KiBmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciogZnVuY3Rpb24sIGNvbnN0IGNoYXIqIGFzc2Vy
dGlvbik7Ci12b2lkIFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmVXaXRoTWVzc2FnZShjb25zdCBj
aGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciogZnVuY3Rpb24sIGNvbnN0IGNoYXIqIGFz
c2VydGlvbiwgY29uc3QgY2hhciogZm9ybWF0LCAuLi4pIFdURl9BVFRSSUJVVEVfUFJJTlRGKDUs
IDYpOwotdm9pZCBXVEZSZXBvcnRBcmd1bWVudEFzc2VydGlvbkZhaWx1cmUoY29uc3QgY2hhciog
ZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uLCBjb25zdCBjaGFyKiBhcmdOYW1l
LCBjb25zdCBjaGFyKiBhc3NlcnRpb24pOwotdm9pZCBXVEZSZXBvcnRGYXRhbEVycm9yKGNvbnN0
IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiBmdW5jdGlvbiwgY29uc3QgY2hhciog
Zm9ybWF0LCAuLi4pIFdURl9BVFRSSUJVVEVfUFJJTlRGKDQsIDUpOwotdm9pZCBXVEZSZXBvcnRF
cnJvcihjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciogZnVuY3Rpb24sIGNv
bnN0IGNoYXIqIGZvcm1hdCwgLi4uKSBXVEZfQVRUUklCVVRFX1BSSU5URig0LCA1KTsKLXZvaWQg
V1RGTG9nKFdURkxvZ0NoYW5uZWwqIGNoYW5uZWwsIGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKSBX
VEZfQVRUUklCVVRFX1BSSU5URigyLCAzKTsKLXZvaWQgV1RGTG9nVmVyYm9zZShjb25zdCBjaGFy
KiBmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciogZnVuY3Rpb24sIFdURkxvZ0NoYW5uZWwqIGNo
YW5uZWwsIGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKSBXVEZfQVRUUklCVVRFX1BSSU5URig1LCA2
KTsKK0pTX0VYUE9SVF9QUklWQVRFIHZvaWQgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZShjb25z
dCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciogZnVuY3Rpb24sIGNvbnN0IGNoYXIq
IGFzc2VydGlvbik7CitKU19FWFBPUlRfUFJJVkFURSB2b2lkIFdURlJlcG9ydEFzc2VydGlvbkZh
aWx1cmVXaXRoTWVzc2FnZShjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciog
ZnVuY3Rpb24sIGNvbnN0IGNoYXIqIGFzc2VydGlvbiwgY29uc3QgY2hhciogZm9ybWF0LCAuLi4p
IFdURl9BVFRSSUJVVEVfUFJJTlRGKDUsIDYpOworSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBXVEZS
ZXBvcnRBcmd1bWVudEFzc2VydGlvbkZhaWx1cmUoY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUs
IGNvbnN0IGNoYXIqIGZ1bmN0aW9uLCBjb25zdCBjaGFyKiBhcmdOYW1lLCBjb25zdCBjaGFyKiBh
c3NlcnRpb24pOworSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBXVEZSZXBvcnRGYXRhbEVycm9yKGNv
bnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiBmdW5jdGlvbiwgY29uc3QgY2hh
ciogZm9ybWF0LCAuLi4pIFdURl9BVFRSSUJVVEVfUFJJTlRGKDQsIDUpOworSlNfRVhQT1JUX1BS
SVZBVEUgdm9pZCBXVEZSZXBvcnRFcnJvcihjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29u
c3QgY2hhciogZnVuY3Rpb24sIGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKSBXVEZfQVRUUklCVVRF
X1BSSU5URig0LCA1KTsKK0pTX0VYUE9SVF9QUklWQVRFIHZvaWQgV1RGTG9nKFdURkxvZ0NoYW5u
ZWwqIGNoYW5uZWwsIGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKSBXVEZfQVRUUklCVVRFX1BSSU5U
RigyLCAzKTsKK0pTX0VYUE9SVF9QUklWQVRFIHZvaWQgV1RGTG9nVmVyYm9zZShjb25zdCBjaGFy
KiBmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciogZnVuY3Rpb24sIFdURkxvZ0NoYW5uZWwqIGNo
YW5uZWwsIGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKSBXVEZfQVRUUklCVVRFX1BSSU5URig1LCA2
KTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvVGhy
ZWFkaW5nUHJpbWl0aXZlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9UaHJl
YWRpbmdQcmltaXRpdmVzLmggICAgKHJldmlzaW9uIDYxMzAxKQorKysgSmF2YVNjcmlwdENvcmUv
d3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaCAgICAod29ya2luZyBjb3B5KQpAQCAtMTAwLDEyICsx
MDAsMTIgQEAKICAgICAKIGNsYXNzIE11dGV4IDogcHVibGljIE5vbmNvcHlhYmxlIHsKIHB1Ymxp
YzoKLSAgICBNdXRleCgpOwotICAgIH5NdXRleCgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIE11
dGV4KCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgfk11dGV4KCk7CiAKLSAgICB2b2lkIGxvY2so
KTsKLSAgICBib29sIHRyeUxvY2soKTsKLSAgICB2b2lkIHVubG9jaygpOworICAgIEpTX0VYUE9S
VF9QUklWQVRFIHZvaWQgbG9jaygpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgdHJ5TG9j
aygpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgdW5sb2NrKCk7CiAKIHB1YmxpYzoKICAg
ICBQbGF0Zm9ybU11dGV4JiBpbXBsKCkgeyByZXR1cm4gbV9tdXRleDsgfQpAQCAtMTM0LDE1ICsx
MzQsMTUgQEAKIAogY2xhc3MgVGhyZWFkQ29uZGl0aW9uIDogcHVibGljIE5vbmNvcHlhYmxlIHsK
IHB1YmxpYzoKLSAgICBUaHJlYWRDb25kaXRpb24oKTsKLSAgICB+VGhyZWFkQ29uZGl0aW9uKCk7
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgVGhyZWFkQ29uZGl0aW9uKCk7CisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgflRocmVhZENvbmRpdGlvbigpOwogICAgIAotICAgIHZvaWQgd2FpdChNdXRleCYg
bXV0ZXgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgd2FpdChNdXRleCYgbXV0ZXgpOwog
ICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgY29uZGl0aW9uIHdhcyBzaWduYWxlZCBiZWZvcmUg
YWJzb2x1dGVUaW1lLCBmYWxzZSBpZiB0aGUgYWJzb2x1dGVUaW1lIHdhcyByZWFjaGVkIG9yIGlz
IGluIHRoZSBwYXN0LgogICAgIC8vIFRoZSBhYnNvbHV0ZVRpbWUgaXMgaW4gc2Vjb25kcywgc3Rh
cnRpbmcgb24gSmFudWFyeSAxLCAxOTcwLiBUaGUgdGltZSBpcyBhc3N1bWVkIHRvIHVzZSB0aGUg
c2FtZSB0aW1lIHpvbmUgYXMgV1RGOjpjdXJyZW50VGltZSgpLgotICAgIGJvb2wgdGltZWRXYWl0
KE11dGV4JiwgZG91YmxlIGFic29sdXRlVGltZSk7Ci0gICAgdm9pZCBzaWduYWwoKTsKLSAgICB2
b2lkIGJyb2FkY2FzdCgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgdGltZWRXYWl0KE11
dGV4JiwgZG91YmxlIGFic29sdXRlVGltZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBz
aWduYWwoKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGJyb2FkY2FzdCgpOwogICAgIAog
cHJpdmF0ZToKICAgICBQbGF0Zm9ybUNvbmRpdGlvbiBtX2NvbmRpdGlvbjsKSW5kZXg6IEphdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaCAgICAocmV2aXNpb24gNjEzMDEpCisr
KyBKYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oICAgICh3b3JraW5nIGNv
cHkpCkBAIC0xMDAsOCArMTAwLDggQEAKICAgICAgICAgSlNWYWx1ZSBleGVjdXRlKEV2YWxFeGVj
dXRhYmxlKiBldmFsTm9kZSwgQ2FsbEZyYW1lKiBleGVjLCBKU09iamVjdCogdGhpc09iaiwgU2Nv
cGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW4sIEpTVmFsdWUqIGV4Y2VwdGlvbik7CiAKICAgICAgICAg
SlNWYWx1ZSByZXRyaWV2ZUFyZ3VtZW50cyhDYWxsRnJhbWUqLCBKU0Z1bmN0aW9uKikgY29uc3Q7
Ci0gICAgICAgIEpTVmFsdWUgcmV0cmlldmVDYWxsZXIoQ2FsbEZyYW1lKiwgSlNGdW5jdGlvbiop
IGNvbnN0OwotICAgICAgICB2b2lkIHJldHJpZXZlTGFzdENhbGxlcihDYWxsRnJhbWUqLCBpbnQm
IGxpbmVOdW1iZXIsIGludHB0cl90JiBzb3VyY2VJRCwgVVN0cmluZyYgc291cmNlVVJMLCBKU1Zh
bHVlJiBmdW5jdGlvbikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUg
cmV0cmlldmVDYWxsZXIoQ2FsbEZyYW1lKiwgSlNGdW5jdGlvbiopIGNvbnN0OworICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSB2b2lkIHJldHJpZXZlTGFzdENhbGxlcihDYWxsRnJhbWUqLCBpbnQm
IGxpbmVOdW1iZXIsIGludHB0cl90JiBzb3VyY2VJRCwgVVN0cmluZyYgc291cmNlVVJMLCBKU1Zh
bHVlJiBmdW5jdGlvbikgY29uc3Q7CiAgICAgICAgIAogICAgICAgICB2b2lkIGdldEFyZ3VtZW50
c0RhdGEoQ2FsbEZyYW1lKiwgSlNGdW5jdGlvbiomLCBwdHJkaWZmX3QmIGZpcnN0UGFyYW1ldGVy
SW5kZXgsIFJlZ2lzdGVyKiYgYXJndiwgaW50JiBhcmdjKTsKICAgICAgICAgCkluZGV4OiBKYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nICAgIChyZXZpc2lvbiA2MTMwNCkKKysrIEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyAgICAo
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNyBAQAorMjAxMC0wNi0xNiAgS2V2aW4gT2xsaXZp
ZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgSlNfRVhQT1JUX1BSSVZBVEUgdG8gZXhwb3J0IEpT
Q29yZSBzeW1ib2xzIG5lZWRlZCBieSBvdGhlciBXZWJLaXQgbGlicmFyaWVzLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc1NTEKKworICAgICAgICAq
IGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAqIGNvbmZpZy5oOgor
ICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyLmg6CisgICAgICAgICogZGVidWdnZXIvRGVidWdn
ZXJDYWxsRnJhbWUuaDoKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAg
ICAgICAqIHBjcmUvcGNyZS5oOgorICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVyLmg6CisgICAg
ICAgICogcnVudGltZS9BcmdMaXN0Lmg6CisgICAgICAgICogcnVudGltZS9DYWxsRGF0YS5oOgor
ICAgICAgICAqIHJ1bnRpbWUvQ29sbGVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9Db21wbGV0
aW9uLmg6CisgICAgICAgICogcnVudGltZS9Db25zdHJ1Y3REYXRhLmg6CisgICAgICAgICogcnVu
dGltZS9EYXRlSW5zdGFuY2UuaDoKKyAgICAgICAgKiBydW50aW1lL0Vycm9yLmg6CisgICAgICAg
ICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmg6CisgICAgICAgICogcnVudGltZS9GdW5jdGlv
bkNvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9JZGVudGlmaWVyLmg6CisgICAgICAg
ICogcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg6CisgICAgICAgICogcnVudGltZS9JbnRl
cm5hbEZ1bmN0aW9uLmg6CisgICAgICAgICogcnVudGltZS9KU0FycmF5Lmg6CisgICAgICAgICog
cnVudGltZS9KU0J5dGVBcnJheS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6CisgICAg
ICAgIChKU0M6OkpTQ2VsbDo6dnB0cik6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6c2V0VlB0cik6
CisgICAgICAgIChKU0M6OkpTQ2VsbDo6aXNTdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvSlNG
dW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmg6CisgICAgICAgIChK
U0M6OkpTR2xvYmFsRGF0YTo6KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6
CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpKU0dsb2JhbE9iamVjdERhdGE6OkpTR2xv
YmFsT2JqZWN0RGF0YSk6CisgICAgICAgICogcnVudGltZS9KU0xvY2suaDoKKyAgICAgICAgKEpT
Qzo6SlNMb2NrOjopOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OnByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRPd25Q
cm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0KToKKyAgICAg
ICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdEZ1bmN0aW9uKToKKyAgICAgICAgKiBydW50aW1l
L0pTT2JqZWN0V2l0aEdsb2JhbE9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmcu
aDoKKyAgICAgICAgKEpTQzo6SlNTdHJpbmc6OnZhbHVlKToKKyAgICAgICAgKiBydW50aW1lL0pT
VmFsdWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaDoKKyAgICAgICAg
KEpTQzo6SlNWYXJpYWJsZU9iamVjdDo6c3ltYm9sVGFibGUpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNXcmFwcGVyT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9Mb29rdXAuaDoKKyAgICAgICAg
KiBydW50aW1lL01hcmtTdGFjay5oOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0UHJvdG90eXBl
Lmg6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuaDoKKyAgICAgICAgKiBy
dW50aW1lL1Byb3BlcnR5TmFtZUFycmF5Lmg6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eVNs
b3QuaDoKKyAgICAgICAgKiBydW50aW1lL1JvcGVJbXBsLmg6CisgICAgICAgICogcnVudGltZS9T
bWFsbFN0cmluZ3MuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ09iamVjdC5oOgorICAgICAg
ICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgICogcnVudGltZS9UaW1lb3V0Q2hlY2tl
ci5oOgorICAgICAgICAqIHJ1bnRpbWUvVVN0cmluZy5oOgorICAgICAgICAoSlNDOjpVU3RyaW5n
OjpVU3RyaW5nKToKKyAgICAgICAgKEpTQzo6VVN0cmluZzo6aXNOdWxsKToKKyAgICAgICAgKEpT
Qzo6VVN0cmluZzo6flVTdHJpbmcpOgorICAgICAgICAoSlNDOjpVU3RyaW5nOjpvcGVyYXRvcj0p
OgorICAgICAgICAqIHdzY3JpcHQ6CisgICAgICAgICogd3RmL0Fzc2VydGlvbnMuaDoKKyAgICAg
ICAgKiB3dGYvQnl0ZUFycmF5Lmg6CisgICAgICAgICogd3RmL0N1cnJlbnRUaW1lLmg6CisgICAg
ICAgICogd3RmL0RhdGVNYXRoLmg6CisgICAgICAgICogd3RmL0Zhc3RNYWxsb2MuaDoKKyAgICAg
ICAgKiB3dGYvTWFpblRocmVhZC5oOgorICAgICAgICAqIHd0Zi9SYW5kb21OdW1iZXIuaDoKKyAg
ICAgICAgKiB3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg6CisgICAgICAgIChXVEY6Oik6Cisg
ICAgICAgICogd3RmL1RocmVhZFNwZWNpZmljLmg6CisgICAgICAgICogd3RmL1RocmVhZGluZy5o
OgorICAgICAgICAqIHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg6CisgICAgICAgICogd3RmL1dU
RlRocmVhZERhdGEuaDoKKyAgICAgICAgKiB3dGYvZHRvYS5oOgorICAgICAgICAqIHd0Zi90ZXh0
L0F0b21pY1N0cmluZy5oOgorICAgICAgICAoV2ViQ29yZTo6QXRvbWljU3RyaW5nOjpBdG9taWNT
dHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6QXRvbWljU3RyaW5nOjppc0hhc2hUYWJsZURlbGV0
ZWRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNTdHJpbmc6On5BdG9taWNTdHJpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6QXRvbWljU3RyaW5nOjppbXBsKToKKyAgICAgICAgKFdlYkNv
cmU6OkF0b21pY1N0cmluZzo6b3BlcmF0b3I9KToKKyAgICAgICAgKiB3dGYvdGV4dC9DU3RyaW5n
Lmg6CisgICAgICAgIChXVEY6OkNTdHJpbmc6On5DU3RyaW5nKToKKyAgICAgICAgKFdURjo6Q1N0
cmluZzo6ZGF0YSk6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5oOgorICAgICAgICAo
V2ViQ29yZTo6U3RyaW5nSW1wbDo6Y2hhcmFjdGVycyk6CisgICAgICAgICogd3RmL3RleHQvV1RG
U3RyaW5nLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHJpbmc6OlN0cmluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHJpbmc6On5TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U3RyaW5nOjppc0hh
c2hUYWJsZURlbGV0ZWRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHJpbmc6OmlzRW1wdHkp
OgorICAgICAgICAoV2ViQ29yZTo6U3RyaW5nOjppbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
cmluZzo6b3BlcmF0b3I9KToKKyAgICAgICAgKiB3dGYvdW5pY29kZS9Db2xsYXRvci5oOgorICAg
ICAgICAoV1RGOjopOgorICAgICAgICAqIHd0Zi91bmljb2RlL1VURjguaDoKKwogMjAxMC0wNi0x
NiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
RGF2aWQgTGV2aW4uCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9wY3JlL3BjcmUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBKYXZhU2NyaXB0Q29yZS9wY3JlL3BjcmUuaCAgKHJldmlzaW9uIDYxMzAxKQorKysgSmF2
YVNjcmlwdENvcmUvcGNyZS9wY3JlLmggICh3b3JraW5nIGNvcHkpCkBAIC01NSwxNCArNTUsMTQg
QEAKIGNvbnN0IGludCBKU1JlZ0V4cEVycm9yTm9NZW1vcnkgPSAtMzsKIGNvbnN0IGludCBKU1Jl
Z0V4cEVycm9ySW50ZXJuYWwgPSAtNDsKIAotSlNSZWdFeHAqIGpzUmVnRXhwQ29tcGlsZShjb25z
dCBVQ2hhciogcGF0dGVybiwgaW50IHBhdHRlcm5MZW5ndGgsCitKU19FWFBPUlRfUFJJVkFURSBK
U1JlZ0V4cCoganNSZWdFeHBDb21waWxlKGNvbnN0IFVDaGFyKiBwYXR0ZXJuLCBpbnQgcGF0dGVy
bkxlbmd0aCwKICAgICBKU1JlZ0V4cElnbm9yZUNhc2VPcHRpb24sIEpTUmVnRXhwTXVsdGlsaW5l
T3B0aW9uLAogICAgIHVuc2lnbmVkKiBudW1TdWJwYXR0ZXJucywgY29uc3QgY2hhcioqIGVycm9y
TWVzc2FnZSk7CiAKLWludCBqc1JlZ0V4cEV4ZWN1dGUoY29uc3QgSlNSZWdFeHAqLAorSlNfRVhQ
T1JUX1BSSVZBVEUgaW50IGpzUmVnRXhwRXhlY3V0ZShjb25zdCBKU1JlZ0V4cCosCiAgICAgY29u
c3QgVUNoYXIqIHN1YmplY3QsIGludCBzdWJqZWN0TGVuZ3RoLCBpbnQgc3RhcnRPZmZzZXQsCiAg
ICAgaW50KiBvZmZzZXRzVmVjdG9yLCBpbnQgb2Zmc2V0c1ZlY3Rvckxlbmd0aCk7CiAKLXZvaWQg
anNSZWdFeHBGcmVlKEpTUmVnRXhwKik7CitKU19FWFBPUlRfUFJJVkFURSB2b2lkIGpzUmVnRXhw
RnJlZShKU1JlZ0V4cCopOwogCiAjZW5kaWYKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3dzY3JpcHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3NjcmlwdCAgKHJldmlzaW9uIDYxMzAxKQor
KysgSmF2YVNjcmlwdENvcmUvd3NjcmlwdCAgKHdvcmtpbmcgY29weSkKQEAgLTc1LDYgKzc1LDcg
QEAKIGRlZiBidWlsZChibGQpOgogICAgIGltcG9ydCBPcHRpb25zCiAKKyAgICBibGQuZW52LkxJ
QkRJUiA9IG91dHB1dF9kaXIKICAgICBmdWxsX2RpcnMgPSBnZXRfZGlyc19mb3JfZmVhdHVyZXMo
anNjb3JlX2RpciwgZmVhdHVyZXM9W2J1aWxkX3BvcnRdLCBkaXJzPWpzY29yZV9kaXJzKQogCiAg
ICAgaW5jbHVkZXMgPSBjb21tb25faW5jbHVkZXMgKyBmdWxsX2RpcnMKQEAgLTgzLDkgKzg0LDEw
IEBACiAKICAgICAjIDEuIEEgc2ltcGxlIHByb2dyYW0KICAgICBqc2NvcmUgPSBibGQubmV3X3Rh
c2tfZ2VuKAotICAgICAgICBmZWF0dXJlcyA9ICdjeHggY3N0YXRpY2xpYicsCisgICAgICAgIGZl
YXR1cmVzID0gJ2N4eCBjc2hsaWIgaW1wbGliJywKICAgICAgICAgaW5jbHVkZXMgPSAnLiAuLiBh
c3NlbWJsZXIgRGVyaXZlZFNvdXJjZXMgRm9yd2FyZGluZ0hlYWRlcnMgJyArICcgJy5qb2luKGlu
Y2x1ZGVzKSwKICAgICAgICAgc291cmNlID0gc291cmNlcywKKyAgICAgICAgZGVmaW5lcyA9IFsn
QlVJTERJTkdfSmF2YVNjcmlwdENvcmUnXSwKICAgICAgICAgdGFyZ2V0ID0gJ2pzY29yZScsCiAg
ICAgICAgIHVzZWxpYiA9ICdXWCBJQ1UgJyArIGdldF9jb25maWcoKSwKICAgICAgICAgdXNlbGli
X2xvY2FsID0gJycsCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyLmggIChyZXZpc2lv
biA2MTMwMSkKKysrIEphdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyLmggICh3b3JraW5n
IGNvcHkpCkBAIC01MSwxMSArNTEsMTEgQEAKICAgICAgICAgICAgIHJldHVybiAmc19zaGFyZWRF
bmFibGVkUHJvZmlsZXJSZWZlcmVuY2U7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgUHJv
ZmlsZXIqIHByb2ZpbGVyKCk7IAorICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUHJv
ZmlsZXIqIHByb2ZpbGVyKCk7IAogICAgICAgICBzdGF0aWMgQ2FsbElkZW50aWZpZXIgY3JlYXRl
Q2FsbElkZW50aWZpZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlLCBjb25zdCBVU3RyaW5nJiBz
b3VyY2VVUkwsIGludCBsaW5lTnVtYmVyKTsKIAotICAgICAgICB2b2lkIHN0YXJ0UHJvZmlsaW5n
KEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmIHRpdGxlKTsKLSAgICAgICAgUGFzc1JlZlB0cjxQ
cm9maWxlPiBzdG9wUHJvZmlsaW5nKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmIHRpdGxlKTsK
KyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzdGFydFByb2ZpbGluZyhFeGVjU3RhdGUq
LCBjb25zdCBVU3RyaW5nJiB0aXRsZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFBhc3NS
ZWZQdHI8UHJvZmlsZT4gc3RvcFByb2ZpbGluZyhFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJiB0
aXRsZSk7CiAKICAgICAgICAgdm9pZCB3aWxsRXhlY3V0ZShFeGVjU3RhdGUqLCBKU1ZhbHVlIGZ1
bmN0aW9uKTsKICAgICAgICAgdm9pZCB3aWxsRXhlY3V0ZShFeGVjU3RhdGUqLCBjb25zdCBVU3Ry
aW5nJiBzb3VyY2VVUkwsIGludCBzdGFydGluZ0xpbmVOdW1iZXIpOwpJbmRleDogSmF2YVNjcmlw
dENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5oIChyZXZpc2lvbiA2MTMwMSkKKysr
IEphdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmggKHdvcmtpbmcgY29w
eSkKQEAgLTUxLDEwICs1MSwxMCBAQAogICAgICAgICBKU0dsb2JhbE9iamVjdCogZHluYW1pY0ds
b2JhbE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbEZyYW1lLT5keW5hbWljR2xvYmFsT2Jq
ZWN0KCk7IH0KICAgICAgICAgY29uc3QgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW4oKSBjb25z
dCB7IHJldHVybiBtX2NhbGxGcmFtZS0+c2NvcGVDaGFpbigpOyB9CiAgICAgICAgIGNvbnN0IFVT
dHJpbmcqIGZ1bmN0aW9uTmFtZSgpIGNvbnN0OwotICAgICAgICBVU3RyaW5nIGNhbGN1bGF0ZWRG
dW5jdGlvbk5hbWUoKSBjb25zdDsKLSAgICAgICAgVHlwZSB0eXBlKCkgY29uc3Q7Ci0gICAgICAg
IEpTT2JqZWN0KiB0aGlzT2JqZWN0KCkgY29uc3Q7Ci0gICAgICAgIEpTVmFsdWUgZXZhbHVhdGUo
Y29uc3QgVVN0cmluZyYsIEpTVmFsdWUmIGV4Y2VwdGlvbikgY29uc3Q7CisgICAgICAgIEpTX0VY
UE9SVF9QUklWQVRFIFVTdHJpbmcgY2FsY3VsYXRlZEZ1bmN0aW9uTmFtZSgpIGNvbnN0OworICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSBUeXBlIHR5cGUoKSBjb25zdDsKKyAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgSlNPYmplY3QqIHRoaXNPYmplY3QoKSBjb25zdDsKKyAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgSlNWYWx1ZSBldmFsdWF0ZShjb25zdCBVU3RyaW5nJiwgSlNWYWx1ZSYgZXhj
ZXB0aW9uKSBjb25zdDsKICAgICAgICAgSlNWYWx1ZSBleGNlcHRpb24oKSBjb25zdCB7IHJldHVy
biBtX2V4Y2VwdGlvbjsgfQogCiAgICAgcHJpdmF0ZToKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2Rl
YnVnZ2VyL0RlYnVnZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvZGVidWdnZXIv
RGVidWdnZXIuaCAgKHJldmlzaW9uIDYxMzAxKQorKysgSmF2YVNjcmlwdENvcmUvZGVidWdnZXIv
RGVidWdnZXIuaCAgKHdvcmtpbmcgY29weSkKQEAgLTM2LDEwICszNiwxMCBAQAogCiAgICAgY2xh
c3MgRGVidWdnZXIgewogICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCB+RGVidWdnZXIoKTsK
KyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCB+RGVidWdnZXIoKTsKIAotICAgICAg
ICB2b2lkIGF0dGFjaChKU0dsb2JhbE9iamVjdCopOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGV0
YWNoKEpTR2xvYmFsT2JqZWN0Kik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgYXR0
YWNoKEpTR2xvYmFsT2JqZWN0Kik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwg
dm9pZCBkZXRhY2goSlNHbG9iYWxPYmplY3QqKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgc291
cmNlUGFyc2VkKEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBpbnQgZXJyb3JMaW5lTnVt
YmVyLCBjb25zdCBVU3RyaW5nJiBlcnJvck1lc3NhZ2UpID0gMDsKICAgICAgICAgdmlydHVhbCB2
b2lkIGV4Y2VwdGlvbihjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlE
LCBpbnQgbGluZU51bWJlciwgYm9vbCBoYXNIYW5kbGVyKSA9IDA7CkBAIC01MSw3ICs1MSw3IEBA
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRFeGVjdXRlUHJvZ3JhbShjb25zdCBEZWJ1Z2dlckNh
bGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlcikgPSAwOwogICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVhY2hCcmVha3BvaW50KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1l
JiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyKSA9IDA7CiAKLSAgICAgICAgdm9p
ZCByZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucyhKU0dsb2JhbERhdGEqKTsKKyAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgdm9pZCByZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucyhKU0dsb2JhbERhdGEqKTsK
IAogICAgIHByaXZhdGU6CiAgICAgICAgIEhhc2hTZXQ8SlNHbG9iYWxPYmplY3QqPiBtX2dsb2Jh
bE9iamVjdHM7CkluZGV4OiBXZWJLaXQvd3gvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC93eC9DaGFuZ2VMb2cgKHJldmlzaW9uIDYxMzA0KQorKysgV2ViS2l0L3d4L0NoYW5nZUxvZyAo
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDEwLTA2LTE2ICBLZXZpbiBPbGxpdmll
ciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFVzZSBKU19FWFBPUlRfUFJJVkFURSB0byBleHBvcnQgSlND
b3JlIHN5bWJvbHMgbmVlZGVkIGJ5IG90aGVyIFdlYktpdCBsaWJyYXJpZXMuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzU1MQorCisgICAgICAgICog
d3NjcmlwdDoKKwogMjAxMC0wNi0xNSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KSW5kZXg6IFdlYktpdC93eC93c2NyaXB0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC93eC93c2NyaXB0ICAgKHJldmlzaW9uIDYxMzAxKQorKysg
V2ViS2l0L3d4L3dzY3JpcHQgICAod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQAogICAg
IAogZGVmIHByZV9idWlsZChibGQpOgogICAgICIiIgotICAgIFRoZSB3eFdlYktpdCBsaWJyYXJ5
IHNob3VsZCBiZSByZWJ1aWx0IGlmIGpzY29yZSBvciB3ZWJjb3JlIGNoYW5nZXMsCisgICAgVGhl
IHd4V2ViS2l0IGxpYnJhcnkgc2hvdWxkIGJlIHJlYnVpbHQgaWYgd2ViY29yZSBjaGFuZ2VzLAog
ICAgIHNvIHdlIG1ha2UgdGhvc2Ugc3RhdGljIGxpYnMgYXMgZGVwZW5kZW5jaWVzLgogICAgICIi
IgogICAgIApAQCAtNzQsMTMgKzc0LDEwIEBACiAgICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dp
dGgoJ3dpbicpOgogICAgICAgICBleHQgPSAnLmxpYicKICAgICAKLSAgICBsaWJqc2NvcmUgPSBv
cy5wYXRoLmpvaW4ob3V0cHV0X2RpciwgJ2xpYmpzY29yZSVzJyAlIGV4dCkKICAgICBsaWJ3ZWJj
b3JlID0gb3MucGF0aC5qb2luKG91dHB1dF9kaXIsICdsaWJ3ZWJjb3JlJXMnICUgZXh0KQogICAg
IAotICAgIGFzc2VydCBvcy5wYXRoLmV4aXN0cyhsaWJqc2NvcmUpCiAgICAgYXNzZXJ0IG9zLnBh
dGguZXhpc3RzKGxpYndlYmNvcmUpCiAgICAgCi0gICAgYmxkLmVudi5DWFhERVBTX0pTQ09SRSA9
IFV0aWxzLmhfZmlsZShsaWJqc2NvcmUpCiAgICAgYmxkLmVudi5DWFhERVBTX1dFQkNPUkUgPSBV
dGlscy5oX2ZpbGUobGlid2ViY29yZSkKICAgICAKIGRlZiBidWlsZChibGQpOgpJbmRleDogV2Vi
Q29yZS9jb25maWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2NvbmZpZy5oICAgIChyZXZpc2lv
biA2MTMwMSkKKysrIFdlYkNvcmUvY29uZmlnLmggICAgKHdvcmtpbmcgY29weSkKQEAgLTI5LDcg
KzI5LDcgQEAKIAogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogCi0jaWYgIVBMQVRGT1JNKENI
Uk9NSVVNKSAmJiBPUyhXSU5ET1dTKSAmJiAhZGVmaW5lZChCVUlMRElOR19XWF9fKSAmJiAhQ09N
UElMRVIoR0NDKQorI2lmICFQTEFURk9STShDSFJPTUlVTSkgJiYgT1MoV0lORE9XUykgJiYgIUNP
TVBJTEVSKEdDQykKICNpZiBkZWZpbmVkKEJVSUxESU5HX0phdmFTY3JpcHRDb3JlKSB8fCBkZWZp
bmVkKEJVSUxESU5HX1dURikKICNkZWZpbmUgSlNfRVhQT1JUREFUQSBfX2RlY2xzcGVjKGRsbGV4
cG9ydCkKICNlbHNlCkBAIC00MCwxMyArNDAsMTQgQEAKICNlbHNlCiAjZGVmaW5lIFdFQktJVF9F
WFBPUlREQVRBIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQogI2VuZGlmCi0jZGVmaW5lIEpTX0VYUE9S
VENMQVNTIEpTX0VYUE9SVERBVEEKICNlbHNlCiAjZGVmaW5lIEpTX0VYUE9SVERBVEEKLSNkZWZp
bmUgSlNfRVhQT1JUQ0xBU1MKICNkZWZpbmUgV0VCS0lUX0VYUE9SVERBVEEKICNlbmRpZgogCisj
ZGVmaW5lIEpTX0VYUE9SVENMQVNTIEpTX0VYUE9SVERBVEEKKyNkZWZpbmUgSlNfRVhQT1JUX1BS
SVZBVEUgSlNfRVhQT1JUREFUQQorCiAjaWZkZWYgX19BUFBMRV9fCiAjZGVmaW5lIEhBVkVfRlVO
Q19VU0xFRVAgMQogI2VuZGlmIC8qIF9fQVBQTEVfXyAqLwpJbmRleDogV2ViQ29yZS9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cgICAocmV2aXNpb24gNjEzMDQpCisr
KyBXZWJDb3JlL0NoYW5nZUxvZyAgICh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIw
MTAtMDYtMTYgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIEpTX0VYUE9S
VF9QUklWQVRFIHRvIGV4cG9ydCBKU0NvcmUgc3ltYm9scyBuZWVkZWQgYnkgb3RoZXIgV2ViS2l0
IGxpYnJhcmllcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTI3NTUxCisKKyAgICAgICAgKiBjb25maWcuaDoKKwogMjAxMC0wNi0xNiAgUWkgWmhhbmcg
IDxxaS4yLnpoYW5nQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBMYXN6bG8gR29t
Ym9zLgpJbmRleDogV2ViS2l0VG9vbHMvd3gvYnVpbGQvc2V0dGluZ3MucHkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0VG9vbHMvd3gvYnVpbGQvc2V0dGluZ3MucHkgICAgKHJldmlzaW9uIDYxMzAxKQor
KysgV2ViS2l0VG9vbHMvd3gvYnVpbGQvc2V0dGluZ3MucHkgICAgKHdvcmtpbmcgY29weSkKQEAg
LTI3MSw3ICsyNzEsNyBAQAogICAgIGlmIGJ1aWxkX3BvcnQgPT0gInd4IjoKICAgICAgICAgdXBk
YXRlX3d4X2RlcHMoY29uZiwgd2tfcm9vdCwgbXN2Y192ZXJzaW9uKQogICAgIAotICAgICAgICBj
b25mLmVudi5hcHBlbmRfdmFsdWUoJ0NYWERFRklORVMnLCBbJ0JVSUxESU5HX1dYX189MScsICdK
U19OT19FWFBPUlQnXSkKKyAgICAgICAgY29uZi5lbnYuYXBwZW5kX3ZhbHVlKCdDWFhERUZJTkVT
JywgWydCVUlMRElOR19XWF9fPTEnXSkKIAogICAgICAgICBjb25mLmVudlsnTElCX1dYV0VCS0lU
J10gPSBbJ3d4d2Via2l0J10KICAgICAgICAgY29uZi5lbnZbJ0NYWERFRklORVNfV1hXRUJLSVQn
XSA9IFsnV1hVU0lOR0RMTF9XRUJLSVQnXQpAQCAtMjg3LDcgKzI4Nyw3IEBACiAgICAgICAgICAg
ICBjb25mLmVudlsnTElCX1dYJ10gPSB3eGxpYnMKICAgICAgICAgICAgIGNvbmYuZW52WydMSUJQ
QVRIX1dYJ10gPSB3eGxpYnBhdGhzCiAKLSAgICBjb25mLmVudlsnTElCX0pTQ09SRSddID0gW2xp
YnByZWZpeCArICdqc2NvcmUnXQorICAgIGNvbmYuZW52WydMSUJfSlNDT1JFJ10gPSBbJ2pzY29y
ZSddCiAgICAgY29uZi5lbnZbJ0xJQl9XRUJDT1JFJ10gPSBbbGlicHJlZml4ICsgJ3dlYmNvcmUn
XQogCiAgICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2RhcndpbicpOgpJbmRleDogV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY29uZmlnLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvY29uZmlnLmggKHJldmlzaW9uIDYxMzAxKQorKysgV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvY29uZmlnLmggKHdvcmtpbmcgY29weSkKQEAgLTI2LDEyICsyNiw2
IEBACiAKICNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KIAotI2lmZGVmIF9fY3BsdXNwbHVzCi0j
dW5kZWYgbmV3Ci0jdW5kZWYgZGVsZXRlCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNl
bmRpZgotCiAjaWYgT1MoV0lORE9XUykgJiYgIUNPTVBJTEVSKEdDQykKICNkZWZpbmUgSlNfRVhQ
T1JUREFUQSBfX2RlY2xzcGVjKGRsbGltcG9ydCkKICNkZWZpbmUgV0VCS0lUX0VYUE9SVERBVEEg
X19kZWNsc3BlYyhkbGxpbXBvcnQpCkBAIC00MCw2ICszNCwxNCBAQAogI2RlZmluZSBXRUJLSVRf
RVhQT1JUREFUQQogI2VuZGlmCiAKKyNkZWZpbmUgSlNfRVhQT1JUX1BSSVZBVEUgSlNfRVhQT1JU
REFUQQorCisjaWZkZWYgX19jcGx1c3BsdXMKKyN1bmRlZiBuZXcKKyN1bmRlZiBkZWxldGUKKyNp
bmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorI2VuZGlmCisKICNpZiBQTEFURk9STShXSU4pCiAj
ZGVmaW5lIFdURl9QTEFURk9STV9DRiAxIAogI2lmIGRlZmluZWQoV0lOX0NBSVJPKQpJbmRleDog
V2ViS2l0VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0NoYW5nZUxv
ZyAgIChyZXZpc2lvbiA2MTMwNCkKKysrIFdlYktpdFRvb2xzL0NoYW5nZUxvZyAgICh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsMTUgQEAKIDIwMTAtMDYtMTYgIEtldmluIE9sbGl2aWVyICA8a2V2
aW5vQHRoZW9sbGl2aWVycy5jb20+CiAKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVXNlIEpTX0VYUE9SVF9QUklWQVRFIHRvIGV4cG9ydCBKU0NvcmUgc3lt
Ym9scyBuZWVkZWQgYnkgb3RoZXIgV2ViS2l0IGxpYnJhcmllcy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NTUxCisKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9jb25maWcuaDoKKyAgICAgICAgKiB3eC9idWlsZC9zZXR0aW5ncy5weToKKworMjAx
MC0wNi0xNiAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KKwogICAg
ICAgICBbd3hdIEJ1aWxkIGZpeCBhZnRlciBuZXcgbWV0aG9kIGFkZGl0aW9uLgogCiAgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHA6Cg==
</data>
<flag name="review"
          id="45521"
          type_id="1"
          status="-"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59038</attachid>
            <date>2010-06-17 14:42:36 -0700</date>
            <delta_ts>2010-06-17 17:26:52 -0700</delta_ts>
            <desc>Switch to JS_EXPORTED_SYMBOL, various style and port fixes</desc>
            <filename>jscore_exports3.patch</filename>
            <type>text/plain</type>
            <size>153404</size>
            <attacher name="Kevin Ollivier">kevino</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkocmV2aXNpb24gNjEzMjcpCisrKyBK
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03MSwy
MSArNzEsMjEgQEAKIAogICAgICAgICBzdGF0aWMgdm9pZCBkdW1wU3RhdGlzdGljcygpOwogCi0g
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gYWRkUHJvcGVydHlUcmFuc2l0aW9u
KFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0
cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBzaXplX3QmIG9mZnNldCk7Ci0gICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gYWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlz
dGluZ1N0cnVjdHVyZShTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBvZmZz
ZXQpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0
dXJlPiBhZGRQcm9wZXJ0eVRyYW5zaXRpb24oU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUs
IHNpemVfdCYgb2Zmc2V0KTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHN0YXRpYyBQYXNz
UmVmUHRyPFN0cnVjdHVyZT4gYWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVy
ZShTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0
dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBvZmZzZXQpOwogICAgICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbihT
dHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHNpemVfdCYgb2Zmc2V0
KTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjaGFuZ2VQcm90b3R5cGVU
cmFuc2l0aW9uKFN0cnVjdHVyZSosIEpTVmFsdWUgcHJvdG90eXBlKTsKLSAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8U3RydWN0dXJlPiBkZXNwZWNpZnlGdW5jdGlvblRyYW5zaXRpb24oU3RydWN0
dXJlKiwgY29uc3QgSWRlbnRpZmllciYpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgc3Rh
dGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjaGFuZ2VQcm90b3R5cGVUcmFuc2l0aW9uKFN0cnVj
dHVyZSosIEpTVmFsdWUgcHJvdG90eXBlKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHN0
YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gZGVzcGVjaWZ5RnVuY3Rpb25UcmFuc2l0aW9uKFN0
cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXImKTsKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8
U3RydWN0dXJlPiBnZXR0ZXJTZXR0ZXJUcmFuc2l0aW9uKFN0cnVjdHVyZSopOwogICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHRvQ2FjaGVhYmxlRGljdGlvbmFyeVRyYW5zaXRp
b24oU3RydWN0dXJlKik7CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gdG9V
bmNhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKFN0cnVjdHVyZSopOwogCiAgICAgICAgIFBh
c3NSZWZQdHI8U3RydWN0dXJlPiBmbGF0dGVuRGljdGlvbmFyeVN0cnVjdHVyZShKU09iamVjdCop
OwogCi0gICAgICAgIH5TdHJ1Y3R1cmUoKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIH5T
dHJ1Y3R1cmUoKTsKIAogICAgICAgICAvLyBUaGVzZSBzaG91bGQgYmUgdXNlZCB3aXRoIGNhdXRp
b24uICAKLSAgICAgICAgc2l6ZV90IGFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNw
ZWNpZmljVmFsdWUpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgc2l6ZV90IGFkZFByb3Bl
cnR5V2l0aG91dFRyYW5zaXRpb24oY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNp
Z25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpOwogICAgICAgICBzaXplX3Qg
cmVtb3ZlUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUpOwogICAgICAgICB2b2lkIHNldFByb3RvdHlwZVdpdGhvdXRUcmFuc2l0aW9uKEpTVmFs
dWUgcHJvdG90eXBlKSB7IG1fcHJvdG90eXBlID0gcHJvdG90eXBlOyB9CiAgICAgICAgIApAQCAt
MTA2LDcgKzEwNiw3IEBACiAgICAgICAgIGJvb2wgaXNVc2luZ0lubGluZVN0b3JhZ2UoKSBjb25z
dDsKIAogICAgICAgICBzaXplX3QgZ2V0KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7
Ci0gICAgICAgIHNpemVfdCBnZXQoY29uc3QgVVN0cmluZzo6UmVwKiByZXAsIHVuc2lnbmVkJiBh
dHRyaWJ1dGVzLCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVlKTsKKyAgICAgICAgSlNfRVhQT1JURURf
U1lNQk9MIHNpemVfdCBnZXQoY29uc3QgVVN0cmluZzo6UmVwKiByZXAsIHVuc2lnbmVkJiBhdHRy
aWJ1dGVzLCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVlKTsKICAgICAgICAgc2l6ZV90IGdldChjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzLCBKU0NlbGwq
JiBzcGVjaWZpY1ZhbHVlKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoIXByb3BlcnR5
TmFtZS5pc051bGwoKSk7CkBAIC0xMTYsNyArMTE2LDcgQEAKICAgICAgICAgewogICAgICAgICAg
ICAgcmV0dXJuIG1fc3BlY2lmaWNWYWx1ZUluUHJldmlvdXMgPT0gc3BlY2lmaWNWYWx1ZTsKICAg
ICAgICAgfQotICAgICAgICBib29sIGhhc1RyYW5zaXRpb24oVVN0cmluZzo6UmVwKiwgdW5zaWdu
ZWQgYXR0cmlidXRlcyk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBib29sIGhhc1RyYW5z
aXRpb24oVVN0cmluZzo6UmVwKiwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAgICAgIGJvb2wg
aGFzVHJhbnNpdGlvbihjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0
dHJpYnV0ZXMpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBoYXNUcmFuc2l0aW9uKHBy
b3BlcnR5TmFtZS5fdXN0cmluZy5yZXAoKSwgYXR0cmlidXRlcyk7CkBAIC0xMzIsNyArMTMyLDcg
QEAKICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJv
cGVydHlUYWJsZSA/ICFtX3Byb3BlcnR5VGFibGUtPmtleUNvdW50IDogbV9vZmZzZXQgPT0gbm9P
ZmZzZXQ7IH0KIAotICAgICAgICB2b2lkIGRlc3BlY2lmeURpY3Rpb25hcnlGdW5jdGlvbihjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wg
dm9pZCBkZXNwZWNpZnlEaWN0aW9uYXJ5RnVuY3Rpb24oY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lKTsKICAgICAgICAgdm9pZCBkaXNhYmxlU3BlY2lmaWNGdW5jdGlvblRyYWNraW5nKCkg
eyBtX3NwZWNpZmljRnVuY3Rpb25UaHJhc2hDb3VudCA9IG1heFNwZWNpZmljRnVuY3Rpb25UaHJh
c2hDb3VudDsgfQogCiAgICAgICAgIHZvaWQgc2V0RW51bWVyYXRpb25DYWNoZShKU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yKiBlbnVtZXJhdGlvbkNhY2hlKTsgLy8gRGVmaW5lZCBpbiBKU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yLmguCkBAIC0xNDIsNyArMTQyLDcgQEAKICAgICAgICAgCiAgICAgcHJpdmF0
ZToKIAotICAgICAgICBTdHJ1Y3R1cmUoSlNWYWx1ZSBwcm90b3R5cGUsIGNvbnN0IFR5cGVJbmZv
JiwgdW5zaWduZWQgYW5vbnltb3VzU2xvdENvdW50KTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lN
Qk9MIFN0cnVjdHVyZShKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8mLCB1bnNpZ25l
ZCBhbm9ueW1vdXNTbG90Q291bnQpOwogICAgICAgICAKICAgICAgICAgdHlwZWRlZiBlbnVtIHsg
CiAgICAgICAgICAgICBOb25lRGljdGlvbmFyeUtpbmQgPSAwLApAQCAtMTY2LDcgKzE2Niw3IEBA
CiAgICAgICAgIHZvaWQgZGVzcGVjaWZ5QWxsRnVuY3Rpb25zKCk7CiAKICAgICAgICAgUHJvcGVy
dHlNYXBIYXNoVGFibGUqIGNvcHlQcm9wZXJ0eVRhYmxlKCk7Ci0gICAgICAgIHZvaWQgbWF0ZXJp
YWxpemVQcm9wZXJ0eU1hcCgpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBtYXRl
cmlhbGl6ZVByb3BlcnR5TWFwKCk7CiAgICAgICAgIHZvaWQgbWF0ZXJpYWxpemVQcm9wZXJ0eU1h
cElmTmVjZXNzYXJ5KCkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKG1fcHJvcGVydHlUYWJs
ZSB8fCAhbV9wcmV2aW91cykgICAgICAgICAgICAgCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0
cmluZy5oCShyZXZpc2lvbiA2MTMyNykKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJp
bmcuaAkod29ya2luZyBjb3B5KQpAQCAtNjIsNyArNjIsNyBAQAogICAgIHR5cGVkZWYgdm9pZCAo
KkpTU3RyaW5nRmluYWxpemVyQ2FsbGJhY2spKEpTU3RyaW5nKiwgdm9pZCogY29udGV4dCk7CiAg
ICAgSlNTdHJpbmcqIGpzU3RyaW5nV2l0aEZpbmFsaXplcihFeGVjU3RhdGUqLCBjb25zdCBVU3Ry
aW5nJiwgSlNTdHJpbmdGaW5hbGl6ZXJDYWxsYmFjayBjYWxsYmFjaywgdm9pZCogY29udGV4dCk7
CiAKLSAgICBjbGFzcyBKU19FWFBPUlRDTEFTUyBKU1N0cmluZyA6IHB1YmxpYyBKU0NlbGwgewor
ICAgIGNsYXNzIEpTU3RyaW5nIDogcHVibGljIEpTQ2VsbCB7CiAgICAgcHVibGljOgogICAgICAg
ICBmcmllbmQgY2xhc3MgSklUOwogICAgICAgICBmcmllbmQgY2xhc3MgSlNHbG9iYWxEYXRhOwpA
QCAtMzIxLDcgKzMyMSw3IEBACiAgICAgICAgICAgICAgICAgbV9vdGhlci5tX2ZpbmFsaXplckNh
bGxiYWNrKHRoaXMsIG1fb3RoZXIubV9maW5hbGl6ZXJDb250ZXh0KTsKICAgICAgICAgfQogCi0g
ICAgICAgIGNvbnN0IFVTdHJpbmcmIHZhbHVlKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKKyAgICAg
ICAgSlNfRVhQT1JURURfU1lNQk9MIGNvbnN0IFVTdHJpbmcmIHZhbHVlKEV4ZWNTdGF0ZSogZXhl
YykgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAgaWYgKGlzUm9wZSgpKQogICAgICAgICAg
ICAgICAgIHJlc29sdmVSb3BlKGV4ZWMpOwpAQCAtMzU1LDcgKzM1NSw3IEBACiAgICAgICAgIHsK
ICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgcmVzb2x2ZVJvcGUoRXhlY1N0YXRlKikgY29uc3Q7
CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIHJlc29sdmVSb3BlKEV4ZWNTdGF0ZSop
IGNvbnN0OwogCiAgICAgICAgIHZvaWQgYXBwZW5kU3RyaW5nSW5Db25zdHJ1Y3QodW5zaWduZWQm
IGluZGV4LCBjb25zdCBVU3RyaW5nJiBzdHJpbmcpCiAgICAgICAgIHsKQEAgLTM5MywxOSArMzkz
LDE5IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIEpTVmFs
dWUgdG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkgY29uc3Q7
Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBnZXRQcmltaXRpdmVOdW1iZXIoRXhlY1N0YXRlKiwgZG91
YmxlJiBudW1iZXIsIEpTVmFsdWUmIHZhbHVlKTsKLSAgICAgICAgdmlydHVhbCBib29sIHRvQm9v
bGVhbihFeGVjU3RhdGUqKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCBkb3VibGUgdG9OdW1iZXIo
RXhlY1N0YXRlKikgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgSlNPYmplY3QqIHRvT2JqZWN0KEV4
ZWNTdGF0ZSopIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIFVTdHJpbmcgdG9TdHJpbmcoRXhlY1N0
YXRlKikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIEpTVmFsdWUg
dG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkgY29uc3Q7Cisg
ICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIGJvb2wgZ2V0UHJpbWl0aXZlTnVtYmVy
KEV4ZWNTdGF0ZSosIGRvdWJsZSYgbnVtYmVyLCBKU1ZhbHVlJiB2YWx1ZSk7CisgICAgICAgIEpT
X0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIGJvb2wgdG9Cb29sZWFuKEV4ZWNTdGF0ZSopIGNvbnN0
OworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCBkb3VibGUgdG9OdW1iZXIoRXhl
Y1N0YXRlKikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIEpTT2Jq
ZWN0KiB0b09iamVjdChFeGVjU3RhdGUqKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JURURfU1lN
Qk9MIHZpcnR1YWwgVVN0cmluZyB0b1N0cmluZyhFeGVjU3RhdGUqKSBjb25zdDsKIAotICAgICAg
ICB2aXJ0dWFsIEpTT2JqZWN0KiB0b1RoaXNPYmplY3QoRXhlY1N0YXRlKikgY29uc3Q7CisgICAg
ICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIEpTT2JqZWN0KiB0b1RoaXNPYmplY3QoRXhl
Y1N0YXRlKikgY29uc3Q7CiAKICAgICAgICAgLy8gQWN0dWFsbHkgZ2V0UHJvcGVydHlTbG90LCBu
b3QgZ2V0T3duUHJvcGVydHlTbG90IChzZWUgSlNDZWxsKS4KLSAgICAgICAgdmlydHVhbCBib29s
IGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7
Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRl
KiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOworICAgICAgICBKU19F
WFBPUlRFRF9TWU1CT0wgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUq
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgICAg
ICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVj
U3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgICAgICBK
U19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKICAg
ICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfbWF4SW50ZXJuYWxSb3BlTGVuZ3RoID0gMzsK
IApJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2aXNpb24gNjEzMjcpCisrKyBK
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTc0LDI2
ICs3NCwyNiBAQAogICAgICAgICBmcmllbmQgY2xhc3MgQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6
ZXI7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKU0Nl
bGw7Ci0gICAgICAgIGZyaWVuZCB2b2lkIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSwgSlNPYmplY3QqIHRoaXNPYmosIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KTsKKyAgICAgICAg
ZnJpZW5kIEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSwgSlNPYmplY3QqIHRoaXNPYmos
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KTsKIAog
ICAgIHB1YmxpYzoKICAgICAgICAgZXhwbGljaXQgSlNPYmplY3QoTm9uTnVsbFBhc3NSZWZQdHI8
U3RydWN0dXJlPik7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIG1hcmtDaGlsZHJlbihNYXJrU3Rh
Y2smKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgdm9pZCBtYXJrQ2hpbGRy
ZW4oTWFya1N0YWNrJik7CiAgICAgICAgIEFMV0FZU19JTkxJTkUgdm9pZCBtYXJrQ2hpbGRyZW5E
aXJlY3QoTWFya1N0YWNrJiBtYXJrU3RhY2spOwogCiAgICAgICAgIC8vIFRoZSBpbmxpbmUgdmly
dHVhbCBkZXN0cnVjdG9yIGNhbm5vdCBiZSB0aGUgZmlyc3QgdmlydHVhbCBmdW5jdGlvbiBkZWNs
YXJlZAogICAgICAgICAvLyBpbiB0aGUgY2xhc3MgYXMgaXQgcmVzdWx0cyBpbiB0aGUgdnRhYmxl
IGJlaW5nIGdlbmVyYXRlZCBhcyBhIHdlYWsgc3ltYm9sCiAgICAgICAgIHZpcnR1YWwgfkpTT2Jq
ZWN0KCk7CiAKLSAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUoKSBjb25zdDsKKyAgICAgICAgSlNf
RVhQT1JURURfU1lNQk9MIEpTVmFsdWUgcHJvdG90eXBlKCkgY29uc3Q7CiAgICAgICAgIHZvaWQg
c2V0UHJvdG90eXBlKEpTVmFsdWUgcHJvdG90eXBlKTsKICAgICAgICAgYm9vbCBzZXRQcm90b3R5
cGVXaXRoQ3ljbGVDaGVjayhKU1ZhbHVlIHByb3RvdHlwZSk7CiAgICAgICAgIAogICAgICAgICB2
b2lkIHNldFN0cnVjdHVyZShOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+KTsKICAgICAgICAg
U3RydWN0dXJlKiBpbmhlcml0b3JJRCgpOwogCi0gICAgICAgIHZpcnR1YWwgVVN0cmluZyBjbGFz
c05hbWUoKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgVVN0cmlu
ZyBjbGFzc05hbWUoKSBjb25zdDsKIAogICAgICAgICBKU1ZhbHVlIGdldChFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpIGNvbnN0OwogICAgICAgICBKU1ZhbHVlIGdl
dChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpIGNvbnN0OwpAQCAtMTAyLDQ1ICsx
MDIsNDUgQEAKICAgICAgICAgYm9vbCBnZXRQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgdW5zaWdu
ZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgYm9vbCBnZXRQcm9wZXJ0
eURlc2NyaXB0b3IoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eURlc2NyaXB0b3ImKTsKIAotICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90Jik7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0
YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgdmly
dHVhbCBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJP
TCB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIEpTX0VYUE9SVEVE
X1NZTUJPTCB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIHVuc2ln
bmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZ
TUJPTCB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSosIGNv
bnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIAotICAgICAgICB2aXJ0dWFs
IHZvaWQgcHV0KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwdXQo
RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlKTsKKyAgICAg
ICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgdm9pZCBwdXQoRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
KTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgdm9pZCBwdXQoRXhlY1N0YXRl
KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlKTsKIAotICAgICAgICB2aXJ0
dWFsIHZvaWQgcHV0V2l0aEF0dHJpYnV0ZXMoSlNHbG9iYWxEYXRhKiwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBib29s
IGNoZWNrUmVhZE9ubHksIFB1dFByb3BlcnR5U2xvdCYgc2xvdCk7Ci0gICAgICAgIHZpcnR1YWwg
dm9pZCBwdXRXaXRoQXR0cmlidXRlcyhKU0dsb2JhbERhdGEqLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwotICAgICAg
ICB2aXJ0dWFsIHZvaWQgcHV0V2l0aEF0dHJpYnV0ZXMoSlNHbG9iYWxEYXRhKiwgdW5zaWduZWQg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKLSAgICAg
ICAgdmlydHVhbCB2b2lkIHB1dFdpdGhBdHRyaWJ1dGVzKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcywg
Ym9vbCBjaGVja1JlYWRPbmx5LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpOwotICAgICAgICB2aXJ0
dWFsIHZvaWQgcHV0V2l0aEF0dHJpYnV0ZXMoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKLSAgICAg
ICAgdmlydHVhbCB2b2lkIHB1dFdpdGhBdHRyaWJ1dGVzKEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAgICAg
IEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIHZvaWQgcHV0V2l0aEF0dHJpYnV0ZXMoSlNHbG9i
YWxEYXRhKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzLCBib29sIGNoZWNrUmVhZE9ubHksIFB1dFByb3BlcnR5U2xvdCYg
c2xvdCk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIHZvaWQgcHV0V2l0aEF0
dHJpYnV0ZXMoSlNHbG9iYWxEYXRhKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgSlNfRVhQT1JURURf
U1lNQk9MIHZpcnR1YWwgdm9pZCBwdXRXaXRoQXR0cmlidXRlcyhKU0dsb2JhbERhdGEqLCB1bnNp
Z25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwor
ICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCB2b2lkIHB1dFdpdGhBdHRyaWJ1dGVz
KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgYm9vbCBjaGVja1JlYWRPbmx5LCBQdXRQcm9wZXJ0eVNs
b3QmIHNsb3QpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCB2b2lkIHB1dFdp
dGhBdHRyaWJ1dGVzKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAgICAgIEpTX0VYUE9SVEVE
X1NZTUJPTCB2aXJ0dWFsIHZvaWQgcHV0V2l0aEF0dHJpYnV0ZXMoRXhlY1N0YXRlKiwgdW5zaWdu
ZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKIAog
ICAgICAgICBib29sIHByb3BlcnR5SXNFbnVtZXJhYmxlKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSkgY29uc3Q7CiAKLSAgICAgICAgYm9vbCBoYXNQcm9wZXJ0eShF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpIGNvbnN0OwotICAgICAg
ICBib29sIGhhc1Byb3BlcnR5KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSkgY29u
c3Q7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBib29sIGhhc1Byb3BlcnR5KEV4ZWNTdGF0
ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkgY29uc3Q7CisgICAgICAgIEpTX0VY
UE9SVEVEX1NZTUJPTCBib29sIGhhc1Byb3BlcnR5KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3Bl
cnR5TmFtZSkgY29uc3Q7CiAgICAgICAgIGJvb2wgaGFzT3duUHJvcGVydHkoRXhlY1N0YXRlKiwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKSBjb25zdDsKIAotICAgICAgICB2aXJ0dWFs
IGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lKTsKLSAgICAgICAgdmlydHVhbCBib29sIGRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSos
IHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0
dWFsIGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgYm9vbCBkZWxl
dGVQcm9wZXJ0eShFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwogCi0gICAgICAg
IHZpcnR1YWwgSlNWYWx1ZSBkZWZhdWx0VmFsdWUoRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0
aXZlVHlwZSkgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIEpTVmFs
dWUgZGVmYXVsdFZhbHVlKEV4ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpIGNvbnN0
OwogCi0gICAgICAgIHZpcnR1YWwgYm9vbCBoYXNJbnN0YW5jZShFeGVjU3RhdGUqLCBKU1ZhbHVl
LCBKU1ZhbHVlIHByb3RvdHlwZVByb3BlcnR5KTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9M
IHZpcnR1YWwgYm9vbCBoYXNJbnN0YW5jZShFeGVjU3RhdGUqLCBKU1ZhbHVlLCBKU1ZhbHVlIHBy
b3RvdHlwZVByb3BlcnR5KTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJvcGVydHlOYW1l
cyhFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSBtb2RlID0g
RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBnZXRPd25Q
cm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25N
b2RlIG1vZGUgPSBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICAgICAgSlNfRVhQT1JU
RURfU1lNQk9MIHZpcnR1YWwgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlIG1vZGUgPSBFeGNsdWRlRG9udEVudW1Qcm9w
ZXJ0aWVzKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgdm9pZCBnZXRPd25Q
cm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25N
b2RlIG1vZGUgPSBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKIAogICAgICAgICB2aXJ0dWFs
IEpTVmFsdWUgdG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSA9
IE5vUHJlZmVyZW5jZSkgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBnZXRQcmltaXRpdmVO
dW1iZXIoRXhlY1N0YXRlKiwgZG91YmxlJiBudW1iZXIsIEpTVmFsdWUmIHZhbHVlKTsKLSAgICAg
ICAgdmlydHVhbCBib29sIHRvQm9vbGVhbihFeGVjU3RhdGUqKSBjb25zdDsKLSAgICAgICAgdmly
dHVhbCBkb3VibGUgdG9OdW1iZXIoRXhlY1N0YXRlKikgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwg
VVN0cmluZyB0b1N0cmluZyhFeGVjU3RhdGUqKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCBKU09i
amVjdCogdG9PYmplY3QoRXhlY1N0YXRlKikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZ
TUJPTCB2aXJ0dWFsIGJvb2wgZ2V0UHJpbWl0aXZlTnVtYmVyKEV4ZWNTdGF0ZSosIGRvdWJsZSYg
bnVtYmVyLCBKU1ZhbHVlJiB2YWx1ZSk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0
dWFsIGJvb2wgdG9Cb29sZWFuKEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICBKU19FWFBPUlRF
RF9TWU1CT0wgdmlydHVhbCBkb3VibGUgdG9OdW1iZXIoRXhlY1N0YXRlKikgY29uc3Q7CisgICAg
ICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIFVTdHJpbmcgdG9TdHJpbmcoRXhlY1N0YXRl
KikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIEpTT2JqZWN0KiB0
b09iamVjdChFeGVjU3RhdGUqKSBjb25zdDsKIAotICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiB0
b1RoaXNPYmplY3QoRXhlY1N0YXRlKikgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgSlNPYmplY3Qq
IHVud3JhcHBlZE9iamVjdCgpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCBK
U09iamVjdCogdG9UaGlzT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICBKU19FWFBP
UlRFRF9TWU1CT0wgdmlydHVhbCBKU09iamVjdCogdW53cmFwcGVkT2JqZWN0KCk7CiAKICAgICAg
ICAgYm9vbCBnZXRQcm9wZXJ0eVNwZWNpZmljVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQ2VsbComIHNwZWNpZmljRnVuY3Rpb24pIGNvbnN0
OwogCkBAIC0xNzUsMTMgKzE3NSwxMyBAQAogICAgICAgICBib29sIGhhc0N1c3RvbVByb3BlcnRp
ZXMoKSB7IHJldHVybiAhbV9zdHJ1Y3R1cmUtPmlzRW1wdHkoKTsgfQogICAgICAgICBib29sIGhh
c0dldHRlclNldHRlclByb3BlcnRpZXMoKSB7IHJldHVybiBtX3N0cnVjdHVyZS0+aGFzR2V0dGVy
U2V0dGVyUHJvcGVydGllcygpOyB9CiAKLSAgICAgICAgdm9pZCBwdXREaXJlY3QoY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyLCBib29s
IGNoZWNrUmVhZE9ubHksIFB1dFByb3BlcnR5U2xvdCYgc2xvdCk7Ci0gICAgICAgIHZvaWQgcHV0
RGlyZWN0KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5z
aWduZWQgYXR0ciA9IDApOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBwdXREaXJl
Y3QoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25l
ZCBhdHRyLCBib29sIGNoZWNrUmVhZE9ubHksIFB1dFByb3BlcnR5U2xvdCYgc2xvdCk7CisgICAg
ICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIHB1dERpcmVjdChjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHIgPSAwKTsKIAotICAgICAg
ICB2b2lkIHB1dERpcmVjdEZ1bmN0aW9uKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
SlNDZWxsKiB2YWx1ZSwgdW5zaWduZWQgYXR0ciA9IDApOwotICAgICAgICB2b2lkIHB1dERpcmVj
dEZ1bmN0aW9uKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDZWxsKiB2YWx1ZSwg
dW5zaWduZWQgYXR0ciwgYm9vbCBjaGVja1JlYWRPbmx5LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3Qp
OwotICAgICAgICB2b2lkIHB1dERpcmVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSW50ZXJu
YWxGdW5jdGlvbiogZnVuY3Rpb24sIHVuc2lnbmVkIGF0dHIgPSAwKTsKLSAgICAgICAgdm9pZCBw
dXREaXJlY3RGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTRnVuY3Rpb24qIGZ1bmN0aW9uLCB1
bnNpZ25lZCBhdHRyID0gMCk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIHB1dERp
cmVjdEZ1bmN0aW9uKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDZWxsKiB2YWx1
ZSwgdW5zaWduZWQgYXR0ciA9IDApOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBw
dXREaXJlY3RGdW5jdGlvbihjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQ2VsbCog
dmFsdWUsIHVuc2lnbmVkIGF0dHIsIGJvb2wgY2hlY2tSZWFkT25seSwgUHV0UHJvcGVydHlTbG90
JiBzbG90KTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZvaWQgcHV0RGlyZWN0RnVuY3Rp
b24oRXhlY1N0YXRlKiBleGVjLCBJbnRlcm5hbEZ1bmN0aW9uKiBmdW5jdGlvbiwgdW5zaWduZWQg
YXR0ciA9IDApOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBwdXREaXJlY3RGdW5j
dGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTRnVuY3Rpb24qIGZ1bmN0aW9uLCB1bnNpZ25lZCBhdHRy
ID0gMCk7CiAKICAgICAgICAgdm9pZCBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHIgPSAw
KTsKICAgICAgICAgdm9pZCBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDZWxsKiB2YWx1ZSwgdW5zaWduZWQgYXR0ciA9
IDApOwpAQCAtMTkyLDEzICsxOTIsMTMgQEAKICAgICAgICAgSlNWYWx1ZSBnZXREaXJlY3RPZmZz
ZXQoc2l6ZV90IG9mZnNldCkgY29uc3QgeyByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHByb3BlcnR5
U3RvcmFnZSgpW29mZnNldF0pOyB9CiAgICAgICAgIHZvaWQgcHV0RGlyZWN0T2Zmc2V0KHNpemVf
dCBvZmZzZXQsIEpTVmFsdWUgdmFsdWUpIHsgcHJvcGVydHlTdG9yYWdlKClbb2Zmc2V0XSA9IEpT
VmFsdWU6OmVuY29kZSh2YWx1ZSk7IH0KIAotICAgICAgICB2b2lkIGZpbGxHZXR0ZXJQcm9wZXJ0
eVNsb3QoUHJvcGVydHlTbG90JiwgSlNWYWx1ZSogbG9jYXRpb24pOworICAgICAgICBKU19FWFBP
UlRFRF9TWU1CT0wgdm9pZCBmaWxsR2V0dGVyUHJvcGVydHlTbG90KFByb3BlcnR5U2xvdCYsIEpT
VmFsdWUqIGxvY2F0aW9uKTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgZGVmaW5lR2V0dGVyKEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNPYmplY3QqIGdldHRl
ckZ1bmN0aW9uLCB1bnNpZ25lZCBhdHRyaWJ1dGVzID0gMCk7Ci0gICAgICAgIHZpcnR1YWwgdm9p
ZCBkZWZpbmVTZXR0ZXIoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBKU09iamVjdCogc2V0dGVyRnVuY3Rpb24sIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSAwKTsKLSAg
ICAgICAgdmlydHVhbCBKU1ZhbHVlIGxvb2t1cEdldHRlcihFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUpOwotICAgICAgICB2aXJ0dWFsIEpTVmFsdWUgbG9va3VwU2V0
dGVyKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7Ci0gICAgICAg
IHZpcnR1YWwgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cp
OworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCB2b2lkIGRlZmluZUdldHRlcihF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBnZXR0
ZXJGdW5jdGlvbiwgdW5zaWduZWQgYXR0cmlidXRlcyA9IDApOworICAgICAgICBKU19FWFBPUlRF
RF9TWU1CT0wgdmlydHVhbCB2b2lkIGRlZmluZVNldHRlcihFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBzZXR0ZXJGdW5jdGlvbiwgdW5zaWduZWQg
YXR0cmlidXRlcyA9IDApOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCBKU1Zh
bHVlIGxvb2t1cEdldHRlcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCBKU1ZhbHVlIGxvb2t1cFNl
dHRlcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOworICAgICAg
ICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCBib29sIGRlZmluZU93blByb3BlcnR5KEV4ZWNT
dGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9y
JiwgYm9vbCBzaG91bGRUaHJvdyk7CiAKICAgICAgICAgdmlydHVhbCBib29sIGlzR2xvYmFsT2Jq
ZWN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzVmFy
aWFibGVPYmplY3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtMjA3LDcgKzIwNyw3IEBA
CiAKICAgICAgICAgdmlydHVhbCBDb21wbFR5cGUgZXhjZXB0aW9uVHlwZSgpIGNvbnN0IHsgcmV0
dXJuIFRocm93OyB9CiAKLSAgICAgICAgdm9pZCBhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShzaXpl
X3Qgb2xkU2l6ZSwgc2l6ZV90IG5ld1NpemUpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wg
dm9pZCBhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShzaXplX3Qgb2xkU2l6ZSwgc2l6ZV90IG5ld1Np
emUpOwogICAgICAgICB2b2lkIGFsbG9jYXRlUHJvcGVydHlTdG9yYWdlSW5saW5lKHNpemVfdCBv
bGRTaXplLCBzaXplX3QgbmV3U2l6ZSk7CiAgICAgICAgIGJvb2wgaXNVc2luZ0lubGluZVN0b3Jh
Z2UoKSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVyZS0+aXNVc2luZ0lubGluZVN0b3JhZ2UoKTsg
fQogCkBAIC0yNjQsNyArMjY0LDcgQEAKICAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PEpTVmFsdWUqPigmcHJvcGVydHlTdG9yYWdlKClbb2Zmc2V0XSk7CiAgICAgICAgIH0KIAot
ICAgICAgICB2b2lkIHB1dERpcmVjdEludGVybmFsKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0ciwgYm9vbCBjaGVja1JlYWRPbmx5LCBQ
dXRQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTQ2VsbCopOworICAgICAgICBKU19FWFBPUlRFRF9TWU1C
T0wgdm9pZCBwdXREaXJlY3RJbnRlcm5hbChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHIsIGJvb2wgY2hlY2tSZWFkT25seSwgUHV0UHJv
cGVydHlTbG90JiBzbG90LCBKU0NlbGwqKTsKICAgICAgICAgdm9pZCBwdXREaXJlY3RJbnRlcm5h
bChKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUg
dmFsdWUsIHVuc2lnbmVkIGF0dHIsIGJvb2wgY2hlY2tSZWFkT25seSwgUHV0UHJvcGVydHlTbG90
JiBzbG90KTsKICAgICAgICAgdm9pZCBwdXREaXJlY3RJbnRlcm5hbChKU0dsb2JhbERhdGEmLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0
dHIgPSAwKTsKIApAQCAtMzExLDcgKzMxMSw3IEBACiAgICAgbV9zdHJ1Y3R1cmUtPmRlcmVmKCk7
CiB9CiAKLWlubGluZSBKU1ZhbHVlIEpTT2JqZWN0Ojpwcm90b3R5cGUoKSBjb25zdAorSlNfRVhQ
T1JURURfU1lNQk9MIGlubGluZSBKU1ZhbHVlIEpTT2JqZWN0Ojpwcm90b3R5cGUoKSBjb25zdAog
ewogICAgIHJldHVybiBtX3N0cnVjdHVyZS0+c3RvcmVkUHJvdG90eXBlKCk7CiB9CkBAIC0zOTEs
NyArMzkxLDcgQEAKIC8vIEl0IG1heSBzZWVtIGNyYXp5IHRvIGlubGluZSBhIGZ1bmN0aW9uIHRo
aXMgbGFyZ2UsIGVzcGVjaWFsbHkgYSB2aXJ0dWFsIGZ1bmN0aW9uLAogLy8gYnV0IGl0IG1ha2Vz
IGEgYmlnIGRpZmZlcmVuY2UgdG8gcHJvcGVydHkgbG9va3VwIHRoYXQgZGVyaXZlZCBjbGFzc2Vz
IGNhbiBpbmxpbmUgdGhlaXIKIC8vIGJhc2UgY2xhc3MgY2FsbCB0byB0aGlzLgotQUxXQVlTX0lO
TElORSBib29sIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK0pTX0VY
UE9SVEVEX1NZTUJPTCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OmdldE93blByb3BlcnR5
U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90JiBzbG90KQogewogICAgIHJldHVybiBpbmxpbmVHZXRPd25Qcm9wZXJ0eVNsb3Qo
ZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KQEAgLTU3Niw3ICs1NzYsNyBAQAogICAgIHB1
dERpcmVjdEludGVybmFsKHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIGZhbHNlLCBz
bG90LCBnZXRKU0Z1bmN0aW9uKGdsb2JhbERhdGEsIHZhbHVlKSk7CiB9CiAKLWlubGluZSB2b2lk
IEpTT2JqZWN0OjpwdXREaXJlY3QoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBib29sIGNoZWNrUmVhZE9ubHksIFB1dFBy
b3BlcnR5U2xvdCYgc2xvdCkKK0pTX0VYUE9SVEVEX1NZTUJPTCBpbmxpbmUgdm9pZCBKU09iamVj
dDo6cHV0RGlyZWN0KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgYm9vbCBjaGVja1JlYWRPbmx5LCBQdXRQcm9wZXJ0eVNs
b3QmIHNsb3QpCiB7CiAgICAgQVNTRVJUKHZhbHVlKTsKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAo
dmFsdWUpIHx8IEhlYXA6OmhlYXAodmFsdWUpID09IEhlYXA6OmhlYXAodGhpcykpOwpAQCAtNTg0
LDE4ICs1ODQsMTggQEAKICAgICBwdXREaXJlY3RJbnRlcm5hbChwcm9wZXJ0eU5hbWUsIHZhbHVl
LCBhdHRyaWJ1dGVzLCBjaGVja1JlYWRPbmx5LCBzbG90LCAwKTsKIH0KIAotaW5saW5lIHZvaWQg
SlNPYmplY3Q6OnB1dERpcmVjdChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCitKU19FWFBPUlRFRF9TWU1CT0wgaW5saW5l
IHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAgICAgUHV0UHJvcGVydHlT
bG90IHNsb3Q7CiAgICAgcHV0RGlyZWN0SW50ZXJuYWwocHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0
cmlidXRlcywgZmFsc2UsIHNsb3QsIDApOwogfQogCi1pbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0
RGlyZWN0RnVuY3Rpb24oY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0NlbGwqIHZh
bHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBib29sIGNoZWNrUmVhZE9ubHksIFB1dFByb3BlcnR5
U2xvdCYgc2xvdCkKK0pTX0VYUE9SVEVEX1NZTUJPTCBpbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0
RGlyZWN0RnVuY3Rpb24oY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0NlbGwqIHZh
bHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBib29sIGNoZWNrUmVhZE9ubHksIFB1dFByb3BlcnR5
U2xvdCYgc2xvdCkKIHsKICAgICBwdXREaXJlY3RJbnRlcm5hbChwcm9wZXJ0eU5hbWUsIHZhbHVl
LCBhdHRyaWJ1dGVzLCBjaGVja1JlYWRPbmx5LCBzbG90LCB2YWx1ZSk7CiB9CiAKLWlubGluZSB2
b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RGdW5jdGlvbihjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIEpTQ2VsbCogdmFsdWUsIHVuc2lnbmVkIGF0dHIpCitKU19FWFBPUlRFRF9TWU1CT0wg
aW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdEZ1bmN0aW9uKGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgSlNDZWxsKiB2YWx1ZSwgdW5zaWduZWQgYXR0cikKIHsKICAgICBQdXRQ
cm9wZXJ0eVNsb3Qgc2xvdDsKICAgICBwdXREaXJlY3RJbnRlcm5hbChwcm9wZXJ0eU5hbWUsIHZh
bHVlLCBhdHRyLCBmYWxzZSwgc2xvdCwgdmFsdWUpOwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGNlcHRpb25IZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGNlcHRpb25IZWxwZXJzLmgJKHJldmlzaW9uIDYxMzI3KQorKysgSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDkgKzQy
LDkgQEAKICAgICBjbGFzcyBOb2RlOwogICAgIHN0cnVjdCBJbnN0cnVjdGlvbjsKICAgICAKLSAg
ICBKU1ZhbHVlIGNyZWF0ZUludGVycnVwdGVkRXhlY3V0aW9uRXhjZXB0aW9uKEpTR2xvYmFsRGF0
YSopOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBKU1ZhbHVlIGNyZWF0ZUludGVycnVwdGVkRXhl
Y3V0aW9uRXhjZXB0aW9uKEpTR2xvYmFsRGF0YSopOwogICAgIEpTVmFsdWUgY3JlYXRlVGVybWlu
YXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihKU0dsb2JhbERhdGEqKTsKLSAgICBKU09iamVjdCogY3Jl
YXRlU3RhY2tPdmVyZmxvd0Vycm9yKEV4ZWNTdGF0ZSopOworICAgIEpTX0VYUE9SVEVEX1NZTUJP
TCBKU09iamVjdCogY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKEV4ZWNTdGF0ZSopOwogICAgIEpT
VmFsdWUgY3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyJiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIENvZGVCbG9jayopOwogICAgIEpTTm90
QW5PYmplY3RFcnJvclN0dWIqIGNyZWF0ZU5vdEFuT2JqZWN0RXJyb3JTdHViKEV4ZWNTdGF0ZSos
IGJvb2wgaXNOdWxsKTsKICAgICBKU09iamVjdCogY3JlYXRlSW52YWxpZFBhcmFtRXJyb3IoRXhl
Y1N0YXRlKiwgY29uc3QgY2hhciogb3AsIEpTVmFsdWUsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0
LCBDb2RlQmxvY2sqKTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCShyZXZp
c2lvbiA2MTMyNykKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NCwxNCArNDQsMTQgQEAKICAgICAgICAgdHlwZWRlZiBKU09iamVjdFdp
dGhHbG9iYWxPYmplY3QgQmFzZTsKIAogICAgIHB1YmxpYzoKLSAgICAgICAgSlNGdW5jdGlvbihF
eGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4s
IGludCBsZW5ndGgsIGNvbnN0IElkZW50aWZpZXImLCBOYXRpdmVGdW5jdGlvbik7CisgICAgICAg
IEpTX0VYUE9SVEVEX1NZTUJPTCBKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0
KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgaW50IGxlbmd0aCwgY29uc3QgSWRlbnRp
ZmllciYsIE5hdGl2ZUZ1bmN0aW9uKTsKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBKU0Z1bmN0
aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0
dXJlPiwgaW50IGxlbmd0aCwgY29uc3QgSWRlbnRpZmllciYsIFBhc3NSZWZQdHI8TmF0aXZlRXhl
Y3V0YWJsZT4pOwogI2VuZGlmCiAgICAgICAgIEpTRnVuY3Rpb24oRXhlY1N0YXRlKiwgTm9uTnVs
bFBhc3NSZWZQdHI8RnVuY3Rpb25FeGVjdXRhYmxlPiwgU2NvcGVDaGFpbk5vZGUqKTsKICAgICAg
ICAgdmlydHVhbCB+SlNGdW5jdGlvbigpOwogCi0gICAgICAgIGNvbnN0IFVTdHJpbmcmIG5hbWUo
RXhlY1N0YXRlKik7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBjb25zdCBVU3RyaW5nJiBu
YW1lKEV4ZWNTdGF0ZSopOwogICAgICAgICBjb25zdCBVU3RyaW5nIGRpc3BsYXlOYW1lKEV4ZWNT
dGF0ZSopOwogICAgICAgICBjb25zdCBVU3RyaW5nIGNhbGN1bGF0ZWREaXNwbGF5TmFtZShFeGVj
U3RhdGUqKTsKIApAQCAtNzIsNyArNzIsNyBAQAogICAgICAgICBpbmxpbmUgYm9vbCBpc0hvc3RG
dW5jdGlvbigpIGNvbnN0OwogICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGpzRXhlY3V0YWJs
ZSgpIGNvbnN0OwogCi0gICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNzSW5m
byBpbmZvOworICAgICAgICBzdGF0aWMgSlNfRVhQT1JURURfU1lNQk9MIGNvbnN0IENsYXNzSW5m
byBpbmZvOwogCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlU3Ry
dWN0dXJlKEpTVmFsdWUgcHJvdG90eXBlKSAKICAgICAgICAgeyAKQEAgLTkwLDcgKzkwLDcgQEAK
ICAgICBwcml2YXRlOgogICAgICAgICBKU0Z1bmN0aW9uKE5vbk51bGxQYXNzUmVmUHRyPFN0cnVj
dHVyZT4pOwogCi0gICAgICAgIGJvb2wgaXNIb3N0RnVuY3Rpb25Ob25JbmxpbmUoKSBjb25zdDsK
KyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIGJvb2wgaXNIb3N0RnVuY3Rpb25Ob25JbmxpbmUo
KSBjb25zdDsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNT
dGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgdmlydHVh
bCBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlm
aWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09iamVjdFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T2JqZWN0UHJvdG90eXBlLmgJKHJldmlzaW9uIDYxMzI3KQorKysgSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PYmplY3RQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQAog
ICAgICAgICBib29sIG1faGFzTm9Qcm9wZXJ0aWVzV2l0aFVJbnQzMk5hbWVzOwogICAgIH07CiAK
LSAgICBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY1RvU3RyaW5n
KEV4ZWNTdGF0ZSopOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSopOwogCiB9IC8vIG5h
bWVzcGFjZSBKU0MKIApJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmgJKHJldmlzaW9uIDYx
MzI3KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTE0NCw3ICsxNDQsNyBAQAogICAgICAgICBzdGF0aWMgdm9pZCBtYXJrTGlzdHMoTWFya1N0
YWNrJiwgTGlzdFNldCYpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCBzbG93QXBwZW5k
KEpTVmFsdWUpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBzbG93QXBwZW5kKEpT
VmFsdWUpOwogICAgICAgICAKICAgICAgICAgUmVnaXN0ZXIqIG1fYnVmZmVyOwogICAgICAgICBz
aXplX3QgbV9zaXplOwpAQCAtMjM0LDcgKzIzNCw3IEBACiAgICAgICAgIGNvbnN0X2l0ZXJhdG9y
IGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9hcmdzOyB9CiAgICAgICAgIGNvbnN0X2l0ZXJhdG9y
IGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fYXJncyArIG1fYXJnQ291bnQ7IH0KIAotICAgICAgICB2
b2lkIGdldFNsaWNlKGludCBzdGFydEluZGV4LCBBcmdMaXN0JiByZXN1bHQpIGNvbnN0OworICAg
ICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBnZXRTbGljZShpbnQgc3RhcnRJbmRleCwgQXJn
TGlzdCYgcmVzdWx0KSBjb25zdDsKICAgICBwcml2YXRlOgogICAgICAgICBKU1ZhbHVlKiBtX2Fy
Z3M7CiAgICAgICAgIHNpemVfdCBtX2FyZ0NvdW50OwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5LmgJKHJldmlzaW9uIDYxMzI3KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDkgKzQxLDkgQEAKICAgICAgICAgZnJpZW5kIGNsYXNz
IFdhbGtlcjsKIAogICAgIHB1YmxpYzoKLSAgICAgICAgZXhwbGljaXQgSlNBcnJheShOb25OdWxs
UGFzc1JlZlB0cjxTdHJ1Y3R1cmU+KTsKLSAgICAgICAgSlNBcnJheShOb25OdWxsUGFzc1JlZlB0
cjxTdHJ1Y3R1cmU+LCB1bnNpZ25lZCBpbml0aWFsTGVuZ3RoKTsKLSAgICAgICAgSlNBcnJheShO
b25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBjb25zdCBBcmdMaXN0JiBpbml0aWFsVmFsdWVz
KTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIGV4cGxpY2l0IEpTQXJyYXkoTm9uTnVsbFBh
c3NSZWZQdHI8U3RydWN0dXJlPik7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBKU0FycmF5
KE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIHVuc2lnbmVkIGluaXRpYWxMZW5ndGgpOwor
ICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgSlNBcnJheShOb25OdWxsUGFzc1JlZlB0cjxTdHJ1
Y3R1cmU+LCBjb25zdCBBcmdMaXN0JiBpbml0aWFsVmFsdWVzKTsKICAgICAgICAgdmlydHVhbCB+
SlNBcnJheSgpOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhl
Y1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsK
QEAgLTUxLDEwICs1MSwxMCBAQAogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0
b3ImKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHB1dChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUpOyAvLyBGSVhNRTogTWFrZSBwcm90ZWN0ZWQgYW5kIGFkZCBzZXRJ
dGVtLgogCi0gICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNzSW5mbyBpbmZv
OworICAgICAgICBzdGF0aWMgSlNfRVhQT1JURURfU1lNQk9MIGNvbnN0IENsYXNzSW5mbyBpbmZv
OwogCiAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZS0+
bV9sZW5ndGg7IH0KLSAgICAgICAgdm9pZCBzZXRMZW5ndGgodW5zaWduZWQpOyAvLyBPSyB0byB1
c2Ugb24gbmV3IGFycmF5cywgYnV0IG5vdCBpZiBpdCBtaWdodCBiZSBhIFJlZ0V4cE1hdGNoQXJy
YXkuCisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIHNldExlbmd0aCh1bnNpZ25lZCk7
IC8vIE9LIHRvIHVzZSBvbiBuZXcgYXJyYXlzLCBidXQgbm90IGlmIGl0IG1pZ2h0IGJlIGEgUmVn
RXhwTWF0Y2hBcnJheS4KIAogICAgICAgICB2b2lkIHNvcnQoRXhlY1N0YXRlKik7CiAgICAgICAg
IHZvaWQgc29ydChFeGVjU3RhdGUqLCBKU1ZhbHVlIGNvbXBhcmVGdW5jdGlvbiwgQ2FsbFR5cGUs
IGNvbnN0IENhbGxEYXRhJik7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFs
RnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFs
RnVuY3Rpb24uaAkocmV2aXNpb24gNjEzMjcpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGVybmFsRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogICAgIGNs
YXNzIEludGVybmFsRnVuY3Rpb24gOiBwdWJsaWMgSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0IHsK
ICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8o
KSBjb25zdDsgCi0gICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNzSW5mbyBp
bmZvOworICAgICAgICBzdGF0aWMgSlNfRVhQT1JURURfU1lNQk9MIGNvbnN0IENsYXNzSW5mbyBp
bmZvOwogCiAgICAgICAgIGNvbnN0IFVTdHJpbmcmIG5hbWUoRXhlY1N0YXRlKik7CiAgICAgICAg
IGNvbnN0IFVTdHJpbmcgZGlzcGxheU5hbWUoRXhlY1N0YXRlKik7CkBAIC01MSw3ICs1MSw3IEBA
CiAgICAgICAgIC8vIE9ubHkgdXNlZCB0byBhbGxvdyB1cyB0byBkZXRlcm1pbmUgdGhlIEpTRnVu
Y3Rpb24gdnB0cgogICAgICAgICBJbnRlcm5hbEZ1bmN0aW9uKE5vbk51bGxQYXNzUmVmUHRyPFN0
cnVjdHVyZT4gc3RydWN0dXJlKTsKIAotICAgICAgICBJbnRlcm5hbEZ1bmN0aW9uKEpTR2xvYmFs
RGF0YSosIEpTR2xvYmFsT2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgY29u
c3QgSWRlbnRpZmllciYpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgSW50ZXJuYWxGdW5j
dGlvbihKU0dsb2JhbERhdGEqLCBKU0dsb2JhbE9iamVjdCosIE5vbk51bGxQYXNzUmVmUHRyPFN0
cnVjdHVyZT4sIGNvbnN0IElkZW50aWZpZXImKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZp
cnR1YWwgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoQ2FsbERhdGEmKSA9IDA7CkluZGV4OiBKYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0lkZW50aWZpZXIuaAkocmV2aXNpb24gNjEzMjcpCisrKyBKYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0lkZW50aWZpZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsOSArNTQsOSBAQAog
ICAgICAgICAKICAgICAgICAgY29uc3QgY2hhciogYXNjaWkoKSBjb25zdCB7IHJldHVybiBfdXN0
cmluZy5hc2NpaSgpOyB9CiAgICAgICAgIAotICAgICAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9t
KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgeSk7Ci0gICAgICAgIHN0YXRpYyBJZGVudGlmaWVy
IGZyb20oRXhlY1N0YXRlKiBleGVjLCBpbnQgeSk7Ci0gICAgICAgIHN0YXRpYyBJZGVudGlmaWVy
IGZyb20oRXhlY1N0YXRlKiBleGVjLCBkb3VibGUgeSk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZ
TUJPTCBzdGF0aWMgSWRlbnRpZmllciBmcm9tKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgeSk7
CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0aWMgSWRlbnRpZmllciBmcm9tKEV4ZWNT
dGF0ZSogZXhlYywgaW50IHkpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgc3RhdGljIElk
ZW50aWZpZXIgZnJvbShFeGVjU3RhdGUqIGV4ZWMsIGRvdWJsZSB5KTsKICAgICAgICAgc3RhdGlj
IElkZW50aWZpZXIgZnJvbShKU0dsb2JhbERhdGEqLCB1bnNpZ25lZCB5KTsKICAgICAgICAgc3Rh
dGljIElkZW50aWZpZXIgZnJvbShKU0dsb2JhbERhdGEqLCBpbnQgeSk7CiAgICAgICAgIHN0YXRp
YyBJZGVudGlmaWVyIGZyb20oSlNHbG9iYWxEYXRhKiwgZG91YmxlIHkpOwpAQCAtNzYsMTIgKzc2
LDEyIEBACiAgICAgICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgSWRlbnRpZmllciYs
IGNvbnN0IGNoYXIqKTsKICAgICAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJZGVu
dGlmaWVyJiwgY29uc3QgY2hhciopOwogICAgIAotICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChj
b25zdCBVU3RyaW5nOjpSZXAqLCBjb25zdCBjaGFyKik7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZ
TUJPTCBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBVU3RyaW5nOjpSZXAqLCBjb25zdCBjaGFyKik7
CiAgICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFVTdHJpbmc6OlJlcCosIGNvbnN0IFVD
aGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3Qg
VVN0cmluZzo6UmVwKiBhLCBjb25zdCBVU3RyaW5nOjpSZXAqIGIpIHsgcmV0dXJuIDo6ZXF1YWwo
YSwgYik7IH0KIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxVU3RyaW5nOjpSZXA+IGFkZChF
eGVjU3RhdGUqLCBjb25zdCBjaGFyKik7IC8vIE9ubHkgdG8gYmUgdXNlZCB3aXRoIHN0cmluZyBs
aXRlcmFscy4KLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8VVN0cmluZzo6UmVwPiBhZGQoSlNH
bG9iYWxEYXRhKiwgY29uc3QgY2hhciopOyAvLyBPbmx5IHRvIGJlIHVzZWQgd2l0aCBzdHJpbmcg
bGl0ZXJhbHMuCisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0aWMgUGFzc1JlZlB0cjxV
U3RyaW5nOjpSZXA+IGFkZChFeGVjU3RhdGUqLCBjb25zdCBjaGFyKik7IC8vIE9ubHkgdG8gYmUg
dXNlZCB3aXRoIHN0cmluZyBsaXRlcmFscy4KKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHN0
YXRpYyBQYXNzUmVmUHRyPFVTdHJpbmc6OlJlcD4gYWRkKEpTR2xvYmFsRGF0YSosIGNvbnN0IGNo
YXIqKTsgLy8gT25seSB0byBiZSB1c2VkIHdpdGggc3RyaW5nIGxpdGVyYWxzLgogCiAgICAgcHJp
dmF0ZToKICAgICAgICAgVVN0cmluZyBfdXN0cmluZzsKQEAgLTExMSwxMCArMTExLDEwIEBACiAg
ICAgICAgICAgICByZXR1cm4gYWRkU2xvd0Nhc2UoZ2xvYmFsRGF0YSwgcik7CiAgICAgICAgIH0K
IAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxVU3RyaW5nOjpSZXA+IGFkZFNsb3dDYXNlKEV4
ZWNTdGF0ZSosIFVTdHJpbmc6OlJlcCogcik7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBz
dGF0aWMgUGFzc1JlZlB0cjxVU3RyaW5nOjpSZXA+IGFkZFNsb3dDYXNlKEV4ZWNTdGF0ZSosIFVT
dHJpbmc6OlJlcCogcik7CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFVTdHJpbmc6OlJlcD4g
YWRkU2xvd0Nhc2UoSlNHbG9iYWxEYXRhKiwgVVN0cmluZzo6UmVwKiByKTsKIAotICAgICAgICBz
dGF0aWMgdm9pZCBjaGVja0N1cnJlbnRJZGVudGlmaWVyVGFibGUoRXhlY1N0YXRlKik7CisgICAg
ICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0aWMgdm9pZCBjaGVja0N1cnJlbnRJZGVudGlmaWVy
VGFibGUoRXhlY1N0YXRlKik7CiAgICAgICAgIHN0YXRpYyB2b2lkIGNoZWNrQ3VycmVudElkZW50
aWZpZXJUYWJsZShKU0dsb2JhbERhdGEqKTsKICAgICB9OwogICAgIApJbmRleDogSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCShyZXZpc2lvbiA2MTMyNykKKysrIEphdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDIwICsyOSwy
MCBAQAogICAgIGNsYXNzIFN0cmluZ09iamVjdCA6IHB1YmxpYyBKU1dyYXBwZXJPYmplY3Qgewog
ICAgIHB1YmxpYzoKICAgICAgICAgU3RyaW5nT2JqZWN0KEV4ZWNTdGF0ZSosIE5vbk51bGxQYXNz
UmVmUHRyPFN0cnVjdHVyZT4pOwotICAgICAgICBTdHJpbmdPYmplY3QoRXhlY1N0YXRlKiwgTm9u
TnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgY29uc3QgVVN0cmluZyYpOworICAgICAgICBKU19F
WFBPUlRFRF9TWU1CT0wgU3RyaW5nT2JqZWN0KEV4ZWNTdGF0ZSosIE5vbk51bGxQYXNzUmVmUHRy
PFN0cnVjdHVyZT4sIGNvbnN0IFVTdHJpbmcmKTsKIAogICAgICAgICBzdGF0aWMgU3RyaW5nT2Jq
ZWN0KiBjcmVhdGUoRXhlY1N0YXRlKiwgSlNTdHJpbmcqKTsKIAotICAgICAgICB2aXJ0dWFsIGJv
b2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3QoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
KTsKLSAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3Rh
dGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgICAgIEpT
X0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0
ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAg
ICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4
ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAg
IEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIAot
ICAgICAgICB2aXJ0dWFsIHZvaWQgcHV0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgdmly
dHVhbCBib29sIGRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlIG1vZGUgPSBFeGNs
dWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1
YWwgdm9pZCBwdXQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1C
T0wgdmlydHVhbCBib29sIGRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIHZv
aWQgZ2V0T3duUHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVu
dW1lcmF0aW9uTW9kZSBtb2RlID0gRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CiAKICAgICAg
ICAgdmlydHVhbCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZp
bmZvOyB9Ci0gICAgICAgIHN0YXRpYyBjb25zdCBKU19FWFBPUlREQVRBIENsYXNzSW5mbyBpbmZv
OworICAgICAgICBzdGF0aWMgY29uc3QgSlNfRVhQT1JURURfU1lNQk9MIENsYXNzSW5mbyBpbmZv
OwogCiAgICAgICAgIEpTU3RyaW5nKiBpbnRlcm5hbFZhbHVlKCkgY29uc3QgeyByZXR1cm4gYXNT
dHJpbmcoSlNXcmFwcGVyT2JqZWN0OjppbnRlcm5hbFZhbHVlKCkpO30KIApJbmRleDogSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuaAkocmV2aXNpb24gNjEzMjcpCisrKyBKYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDggKzczLDgg
QEAKICAgICAgICAgICAgICAgICBzZXRJbmRleChpLCBieXRlVmFsdWUpOwogICAgICAgICB9CiAK
LSAgICAgICAgSlNCeXRlQXJyYXkoRXhlY1N0YXRlKiBleGVjLCBOb25OdWxsUGFzc1JlZlB0cjxT
dHJ1Y3R1cmU+LCBXVEY6OkJ5dGVBcnJheSogc3RvcmFnZSwgY29uc3QgSlNDOjpDbGFzc0luZm8q
ID0gJnNfZGVmYXVsdEluZm8pOwotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+
IGNyZWF0ZVN0cnVjdHVyZShKU1ZhbHVlIHByb3RvdHlwZSk7CisgICAgICAgIEpTX0VYUE9SVEVE
X1NZTUJPTCBKU0J5dGVBcnJheShFeGVjU3RhdGUqIGV4ZWMsIE5vbk51bGxQYXNzUmVmUHRyPFN0
cnVjdHVyZT4sIFdURjo6Qnl0ZUFycmF5KiBzdG9yYWdlLCBjb25zdCBKU0M6OkNsYXNzSW5mbyog
PSAmc19kZWZhdWx0SW5mbyk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0aWMgUGFz
c1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU1ZhbHVlIHByb3RvdHlwZSk7CiAg
ICAgICAgIAogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6RXhl
Y1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVy
dHlTbG90Jik7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpF
eGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7Cklu
ZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAkocmV2aXNpb24g
NjEzMjcpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAkod29y
a2luZyBjb3B5KQpAQCAtNDQsMTQgKzQ0LDE0IEBACiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7
CiAKICAgICBwdWJsaWM6Ci0gICAgICAgIFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSgpIGNvbnN0
IHsgcmV0dXJuICpkLT5zeW1ib2xUYWJsZTsgfQorICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wg
U3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlKCkgY29uc3QgeyByZXR1cm4gKmQtPnN5bWJvbFRhYmxl
OyB9CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHB1dFdpdGhBdHRyaWJ1dGVzKEV4ZWNTdGF0ZSos
IGNvbnN0IElkZW50aWZpZXImLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKSA9IDA7CiAK
LSAgICAgICAgdmlydHVhbCBib29sIGRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIGNvbnN0IElk
ZW50aWZpZXImKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSA9IEV4Y2x1
ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVh
bCBib29sIGRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImKTsKKyAg
ICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVz
KEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlIG1vZGUgPSBF
eGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKICAgICAgICAgCi0gICAgICAgIHZpcnR1YWwgYm9v
bCBpc1ZhcmlhYmxlT2JqZWN0KCkgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2
aXJ0dWFsIGJvb2wgaXNWYXJpYWJsZU9iamVjdCgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJv
b2wgaXNEeW5hbWljU2NvcGUoYm9vbCYgcmVxdWlyZXNEeW5hbWljQ2hlY2tzKSBjb25zdCA9IDA7
CiAKICAgICAgICAgUmVnaXN0ZXImIHJlZ2lzdGVyQXQoaW50IGluZGV4KSBjb25zdCB7IHJldHVy
biBkLT5yZWdpc3RlcnNbaW5kZXhdOyB9CkBAIC05Myw3ICs5Myw3IEBACiAgICAgICAgIHZvaWQg
c2V0UmVnaXN0ZXJzKFJlZ2lzdGVyKiByLCBSZWdpc3RlciogcmVnaXN0ZXJBcnJheSk7CiAKICAg
ICAgICAgYm9vbCBzeW1ib2xUYWJsZUdldChjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90
Jik7Ci0gICAgICAgIGJvb2wgc3ltYm9sVGFibGVHZXQoY29uc3QgSWRlbnRpZmllciYsIFByb3Bl
cnR5RGVzY3JpcHRvciYpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgYm9vbCBzeW1ib2xU
YWJsZUdldChjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgICAg
IGJvb2wgc3ltYm9sVGFibGVHZXQoY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYsIGJv
b2wmIHNsb3RJc1dyaXRlYWJsZSk7CiAgICAgICAgIGJvb2wgc3ltYm9sVGFibGVQdXQoY29uc3Qg
SWRlbnRpZmllciYsIEpTVmFsdWUpOwogICAgICAgICBib29sIHN5bWJvbFRhYmxlUHV0V2l0aEF0
dHJpYnV0ZXMoY29uc3QgSWRlbnRpZmllciYsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMp
OwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmgJKHJldmlzaW9uIDYxMzI3KQor
KysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAg
LTU1LDggKzU1LDggQEAKICAgICAgICAgSlNWYWx1ZSBtX3ZhbHVlOwogICAgIH07CiAKLSAgICBD
b21wbGV0aW9uIGNoZWNrU3ludGF4KEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmKTsKLSAg
ICBDb21wbGV0aW9uIGV2YWx1YXRlKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW4mLCBjb25zdCBTb3Vy
Y2VDb2RlJiwgSlNWYWx1ZSB0aGlzVmFsdWUgPSBKU1ZhbHVlKCkpOworICAgIEpTX0VYUE9SVEVE
X1NZTUJPTCBDb21wbGV0aW9uIGNoZWNrU3ludGF4KEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNv
ZGUmKTsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgQ29tcGxldGlvbiBldmFsdWF0ZShFeGVjU3Rh
dGUqLCBTY29wZUNoYWluJiwgY29uc3QgU291cmNlQ29kZSYsIEpTVmFsdWUgdGhpc1ZhbHVlID0g
SlNWYWx1ZSgpKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5kZXg6IEphdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTG9va3VwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9M
b29rdXAuaAkocmV2aXNpb24gNjEzMjcpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1
cC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzksNyArMTM5LDcgQEAKICAgICAgICAgICAgICAgICBj
cmVhdGVUYWJsZSgmZXhlYy0+Z2xvYmFsRGF0YSgpKTsKICAgICAgICAgfQogCi0gICAgICAgIHZv
aWQgZGVsZXRlVGFibGUoKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZvaWQg
ZGVsZXRlVGFibGUoKSBjb25zdDsKIAogICAgICAgICAvLyBGaW5kIGFuIGVudHJ5IGluIHRoZSB0
YWJsZSwgYW5kIHJldHVybiB0aGUgZW50cnkuCiAgICAgICAgIEFMV0FZU19JTkxJTkUgY29uc3Qg
SGFzaEVudHJ5KiBlbnRyeShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZp
ZXImIGlkZW50aWZpZXIpIGNvbnN0CkBAIC0xNzQsMTAgKzE3NCwxMCBAQAogICAgICAgICB9CiAK
ICAgICAgICAgLy8gQ29udmVydCB0aGUgaGFzaCB0YWJsZSBrZXlzIHRvIGlkZW50aWZpZXJzLgot
ICAgICAgICB2b2lkIGNyZWF0ZVRhYmxlKEpTR2xvYmFsRGF0YSopIGNvbnN0OworICAgICAgICBK
U19FWFBPUlRFRF9TWU1CT0wgdm9pZCBjcmVhdGVUYWJsZShKU0dsb2JhbERhdGEqKSBjb25zdDsK
ICAgICB9OwogCi0gICAgdm9pZCBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChFeGVjU3RhdGUqLCBj
b25zdCBIYXNoRW50cnkqLCBKU09iamVjdCogdGhpc09iamVjdCwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9p
ZCBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChFeGVjU3RhdGUqLCBjb25zdCBIYXNoRW50cnkqLCBK
U09iamVjdCogdGhpc09iamVjdCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmKTsKIAogICAgIC8qKgogICAgICAqIFRoaXMgbWV0aG9kIGRvZXMgaXQgYWxsIChs
b29raW5nIGluIHRoZSBoYXNodGFibGUsIGNoZWNraW5nIGZvciBmdW5jdGlvbgpJbmRleDogSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ2VsbC5oCShyZXZpc2lvbiA2MTMyNykKKysrIEphdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDggKzQ4LDggQEAKICAgICAgICAg
ZnJpZW5kIGNsYXNzIEpTR2xvYmFsRGF0YTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIGV4cGxp
Y2l0IEpTQ2VsbChTdHJ1Y3R1cmUqKTsKLSAgICAgICAgdmlydHVhbCB+SlNDZWxsKCk7CisgICAg
ICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBleHBsaWNpdCBKU0NlbGwoU3RydWN0dXJlKik7CisgICAg
ICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIH5KU0NlbGwoKTsKIAogICAgIHB1YmxpYzoK
ICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVEdW1teVN0cnVjdHVy
ZSgpCkBAIC02MSwzOSArNjEsMzkgQEAKICNpZiBVU0UoSlNWQUxVRTMyKQogICAgICAgICBib29s
IGlzTnVtYmVyKCkgY29uc3Q7CiAjZW5kaWYKLSAgICAgICAgYm9vbCBpc1N0cmluZygpIGNvbnN0
OwotICAgICAgICBib29sIGlzT2JqZWN0KCkgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBp
c0dldHRlclNldHRlcigpIGNvbnN0OwotICAgICAgICBib29sIGluaGVyaXRzKGNvbnN0IENsYXNz
SW5mbyopIGNvbnN0OworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgYm9vbCBpc1N0cmluZygp
IGNvbnN0OworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgYm9vbCBpc09iamVjdCgpIGNvbnN0
OworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCBib29sIGlzR2V0dGVyU2V0dGVy
KCkgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBib29sIGluaGVyaXRzKGNvbnN0
IENsYXNzSW5mbyopIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNBUElWYWx1ZVdyYXBw
ZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNQcm9w
ZXJ0eU5hbWVJdGVyYXRvcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICAgICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUoKSBjb25zdDsKIAogICAgICAgICAvLyBFeHRyYWN0aW5nIHRoZSB2
YWx1ZS4KLSAgICAgICAgYm9vbCBnZXRTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBVU3RyaW5nJikg
Y29uc3Q7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBib29sIGdldFN0cmluZyhFeGVjU3Rh
dGUqIGV4ZWMsIFVTdHJpbmcmKSBjb25zdDsKICAgICAgICAgVVN0cmluZyBnZXRTdHJpbmcoRXhl
Y1N0YXRlKiBleGVjKSBjb25zdDsgLy8gbnVsbCBzdHJpbmcgaWYgbm90IGEgc3RyaW5nCi0gICAg
ICAgIEpTT2JqZWN0KiBnZXRPYmplY3QoKTsgLy8gTlVMTCBpZiBub3QgYW4gb2JqZWN0Ci0gICAg
ICAgIGNvbnN0IEpTT2JqZWN0KiBnZXRPYmplY3QoKSBjb25zdDsgLy8gTlVMTCBpZiBub3QgYW4g
b2JqZWN0CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBKU09iamVjdCogZ2V0T2JqZWN0KCk7
IC8vIE5VTEwgaWYgbm90IGFuIG9iamVjdAorICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgY29u
c3QgSlNPYmplY3QqIGdldE9iamVjdCgpIGNvbnN0OyAvLyBOVUxMIGlmIG5vdCBhbiBvYmplY3QK
ICAgICAgICAgCi0gICAgICAgIHZpcnR1YWwgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoQ2FsbERhdGEm
KTsKLSAgICAgICAgdmlydHVhbCBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoQ29uc3Ry
dWN0RGF0YSYpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCBDYWxsVHlwZSBn
ZXRDYWxsRGF0YShDYWxsRGF0YSYpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVh
bCBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoQ29uc3RydWN0RGF0YSYpOwogCiAgICAg
ICAgIC8vIEV4dHJhY3RpbmcgaW50ZWdlciB2YWx1ZXMuCiAgICAgICAgIC8vIEZJWE1FOiByZW1v
dmUgdGhlc2UgbWV0aG9kcywgY2FuIGNoZWNrIGlzTnVtYmVyQ2VsbCBpbiBKU1ZhbHVlICYmIHRo
ZW4gY2FsbCBhc051bWJlckNlbGw6OiouCi0gICAgICAgIHZpcnR1YWwgYm9vbCBnZXRVSW50MzIo
dWludDMyX3QmKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgYm9v
bCBnZXRVSW50MzIodWludDMyX3QmKSBjb25zdDsKIAogICAgICAgICAvLyBCYXNpYyBjb252ZXJz
aW9ucy4KLSAgICAgICAgdmlydHVhbCBKU1ZhbHVlIHRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSosIFBy
ZWZlcnJlZFByaW1pdGl2ZVR5cGUpIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0UHJp
bWl0aXZlTnVtYmVyKEV4ZWNTdGF0ZSosIGRvdWJsZSYgbnVtYmVyLCBKU1ZhbHVlJik7Ci0gICAg
ICAgIHZpcnR1YWwgYm9vbCB0b0Jvb2xlYW4oRXhlY1N0YXRlKikgY29uc3Q7Ci0gICAgICAgIHZp
cnR1YWwgZG91YmxlIHRvTnVtYmVyKEV4ZWNTdGF0ZSopIGNvbnN0OwotICAgICAgICB2aXJ0dWFs
IFVTdHJpbmcgdG9TdHJpbmcoRXhlY1N0YXRlKikgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgSlNP
YmplY3QqIHRvT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICBKU19FWFBPUlRFRF9T
WU1CT0wgdmlydHVhbCBKU1ZhbHVlIHRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSosIFByZWZlcnJlZFBy
aW1pdGl2ZVR5cGUpIGNvbnN0OworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCBi
b29sIGdldFByaW1pdGl2ZU51bWJlcihFeGVjU3RhdGUqLCBkb3VibGUmIG51bWJlciwgSlNWYWx1
ZSYpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCBib29sIHRvQm9vbGVhbihF
eGVjU3RhdGUqKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgZG91
YmxlIHRvTnVtYmVyKEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICBKU19FWFBPUlRFRF9TWU1C
T0wgdmlydHVhbCBVU3RyaW5nIHRvU3RyaW5nKEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICBK
U19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCBKU09iamVjdCogdG9PYmplY3QoRXhlY1N0YXRlKikg
Y29uc3Q7CiAKICAgICAgICAgLy8gR2FyYmFnZSBjb2xsZWN0aW9uLgotICAgICAgICB2b2lkKiBv
cGVyYXRvciBuZXcoc2l6ZV90LCBFeGVjU3RhdGUqKTsKLSAgICAgICAgdm9pZCogb3BlcmF0b3Ig
bmV3KHNpemVfdCwgSlNHbG9iYWxEYXRhKik7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2
b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBFeGVjU3RhdGUqKTsKKyAgICAgICAgSlNfRVhQT1JU
RURfU1lNQk9MIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIEpTR2xvYmFsRGF0YSopOwogICAg
ICAgICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKiBwbGFjZW1lbnROZXdEZXN0aW5h
dGlvbikgeyByZXR1cm4gcGxhY2VtZW50TmV3RGVzdGluYXRpb247IH0KIAogICAgICAgICB2aXJ0
dWFsIHZvaWQgbWFya0NoaWxkcmVuKE1hcmtTdGFjayYpOwpAQCAtMTAyLDE2ICsxMDIsMTYgQEAK
ICNlbmRpZgogCiAgICAgICAgIC8vIE9iamVjdCBvcGVyYXRpb25zLCB3aXRoIHRoZSB0b09iamVj
dCBvcGVyYXRpb24gaW5jbHVkZWQuCi0gICAgICAgIHZpcnR1YWwgY29uc3QgQ2xhc3NJbmZvKiBj
bGFzc0luZm8oKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCB2b2lkIHB1dChFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYp
OwotICAgICAgICB2aXJ0dWFsIHZvaWQgcHV0KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSk7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBkZWxldGVQcm9wZXJ0eShFeGVj
U3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOwotICAgICAgICB2aXJ0dWFs
IGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsK
KyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgY29uc3QgQ2xhc3NJbmZvKiBjbGFz
c0luZm8oKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgdm9pZCBw
dXQoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgdm9p
ZCBwdXQoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlKTsKKyAgICAg
ICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgYm9vbCBkZWxldGVQcm9wZXJ0eShFeGVjU3Rh
dGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOworICAgICAgICBKU19FWFBPUlRF
RF9TWU1CT0wgdmlydHVhbCBib29sIGRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIHVuc2lnbmVk
IHByb3BlcnR5TmFtZSk7CiAKLSAgICAgICAgdmlydHVhbCBKU09iamVjdCogdG9UaGlzT2JqZWN0
KEV4ZWNTdGF0ZSopIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIEpTVmFsdWUgZ2V0SlNOdW1iZXIo
KTsKLSAgICAgICAgdm9pZCogdnB0cigpIHsgcmV0dXJuICpyZWludGVycHJldF9jYXN0PHZvaWQq
Kj4odGhpcyk7IH0KLSAgICAgICAgdm9pZCBzZXRWUHRyKHZvaWQqIHZwdHIpIHsgKnJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCoqPih0aGlzKSA9IHZwdHI7IH0KKyAgICAgICAgSlNfRVhQT1JURURfU1lN
Qk9MIHZpcnR1YWwgSlNPYmplY3QqIHRvVGhpc09iamVjdChFeGVjU3RhdGUqKSBjb25zdDsKKyAg
ICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgSlNWYWx1ZSBnZXRKU051bWJlcigpOwor
ICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCogdnB0cigpIHsgcmV0dXJuICpyZWludGVy
cHJldF9jYXN0PHZvaWQqKj4odGhpcyk7IH0KKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZv
aWQgc2V0VlB0cih2b2lkKiB2cHRyKSB7ICpyZWludGVycHJldF9jYXN0PHZvaWQqKj4odGhpcykg
PSB2cHRyOyB9CiAKICAgICAgICAgLy8gRklYTUU6IFJlbmFtZSBnZXRPd25Qcm9wZXJ0eVNsb3Qg
dG8gdmlydHVhbEdldE93blByb3BlcnR5U2xvdCwgYW5kCiAgICAgICAgIC8vIGZhc3RHZXRPd25Q
cm9wZXJ0eVNsb3QgdG8gZ2V0T3duUHJvcGVydHlTbG90LiBDYWxsZXJzIHNob3VsZCBhbHdheXMK
QEAgLTEyNCw4ICsxMjQsOCBAQAogCiAgICAgcHJpdmF0ZToKICAgICAgICAgLy8gQmFzZSBpbXBs
ZW1lbnRhdGlvbjsgZm9yIG5vbi1vYmplY3QgY2xhc3NlcyBpbXBsZW1lbnRzIGdldFByb3BlcnR5
U2xvdC4KLSAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUq
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgICAg
ICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2
aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZ
TUJPTCB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIHVuc2lnbmVk
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIAogICAgICAgICBTdHJ1Y3R1
cmUqIG1fc3RydWN0dXJlOwogICAgIH07CkBAIC0xNTEsNyArMTUxLDcgQEAKICAgICAgICAgcmV0
dXJuIG1fc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBPYmplY3RUeXBlOwogICAgIH0K
IAotICAgIGlubGluZSBib29sIEpTQ2VsbDo6aXNTdHJpbmcoKSBjb25zdAorICAgIEpTX0VYUE9S
VEVEX1NZTUJPTCBpbmxpbmUgYm9vbCBKU0NlbGw6OmlzU3RyaW5nKCkgY29uc3QKICAgICB7CiAg
ICAgICAgIHJldHVybiBtX3N0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gU3RyaW5nVHlw
ZTsKICAgICB9CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmgJKHJldmlzaW9uIDYxMzI3KQor
KysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNzcs
OCArNzcsOCBAQAogICAgICAgICAgICAgdW5sb2NrKG1fbG9ja0JlaGF2aW9yKTsgCiAgICAgICAg
IH0KICAgICAgICAgCi0gICAgICAgIHN0YXRpYyB2b2lkIGxvY2soSlNMb2NrQmVoYXZpb3IpOwot
ICAgICAgICBzdGF0aWMgdm9pZCB1bmxvY2soSlNMb2NrQmVoYXZpb3IpOworICAgICAgICBKU19F
WFBPUlRFRF9TWU1CT0wgc3RhdGljIHZvaWQgbG9jayhKU0xvY2tCZWhhdmlvcik7CisgICAgICAg
IEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0aWMgdm9pZCB1bmxvY2soSlNMb2NrQmVoYXZpb3IpOwog
ICAgICAgICBzdGF0aWMgdm9pZCBsb2NrKEV4ZWNTdGF0ZSopOwogICAgICAgICBzdGF0aWMgdm9p
ZCB1bmxvY2soRXhlY1N0YXRlKik7CiAKQEAgLTg3LDcgKzg3LDcgQEAKIAogICAgICAgICBKU0xv
Y2tCZWhhdmlvciBtX2xvY2tCZWhhdmlvcjsKIAotICAgICAgICBjbGFzcyBEcm9wQWxsTG9ja3Mg
OiBwdWJsaWMgTm9uY29weWFibGUgeworICAgICAgICBjbGFzcyBKU19FWFBPUlRFRF9TWU1CT0wg
RHJvcEFsbExvY2tzIDogcHVibGljIE5vbmNvcHlhYmxlIHsKICAgICAgICAgcHVibGljOgogICAg
ICAgICAgICAgRHJvcEFsbExvY2tzKEV4ZWNTdGF0ZSogZXhlYyk7CiAgICAgICAgICAgICBEcm9w
QWxsTG9ja3MoSlNMb2NrQmVoYXZpb3IpOwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm9wZXJ0eVNsb3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3Bl
cnR5U2xvdC5oCShyZXZpc2lvbiA2MTMyNykKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
cGVydHlTbG90LmgJKHdvcmtpbmcgY29weSkKQEAgLTI0Myw3ICsyNDMsNyBAQAogICAgICAgICAg
ICAgcmV0dXJuIG1fZ2V0VmFsdWU7CiAgICAgICAgIH0KICAgICBwcml2YXRlOgotICAgICAgICBK
U1ZhbHVlIGZ1bmN0aW9uR2V0dGVyKEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICBKU19FWFBP
UlRFRF9TWU1CT0wgSlNWYWx1ZSBmdW5jdGlvbkdldHRlcihFeGVjU3RhdGUqKSBjb25zdDsKIAog
ICAgICAgICBHZXRWYWx1ZUZ1bmMgbV9nZXRWYWx1ZTsKICAgICAgICAgR2V0SW5kZXhWYWx1ZUZ1
bmMgbV9nZXRJbmRleFZhbHVlOwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlv
bkNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5j
dGlvbkNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDYxMzI3KQorKysgSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcg
QEAKICAgICAgICAgdmlydHVhbCBDYWxsVHlwZSBnZXRDYWxsRGF0YShDYWxsRGF0YSYpOwogICAg
IH07CiAKLSAgICBKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiwgY29uc3Qg
QXJnTGlzdCYsIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwgY29uc3QgVVN0cmluZyYg
c291cmNlVVJMLCBpbnQgbGluZU51bWJlcik7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIEpTT2Jq
ZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqLCBjb25zdCBBcmdMaXN0JiwgY29uc3Qg
SWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBVU3RyaW5nJiBzb3VyY2VVUkwsIGludCBs
aW5lTnVtYmVyKTsKICAgICBKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiwg
Y29uc3QgQXJnTGlzdCYpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IEphdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TbWFsbFN0cmluZ3MuaAkocmV2aXNpb24gNjEzMjcpCisrKyBKYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC02NCw4ICs2NCw4IEBA
CiAgICAgICAgIEpTU3RyaW5nKiogc2luZ2xlQ2hhcmFjdGVyU3RyaW5ncygpIHsgcmV0dXJuIG1f
c2luZ2xlQ2hhcmFjdGVyU3RyaW5nczsgfQogI2VuZGlmCiAgICAgcHJpdmF0ZToKLSAgICAgICAg
dm9pZCBjcmVhdGVFbXB0eVN0cmluZyhKU0dsb2JhbERhdGEqKTsKLSAgICAgICAgdm9pZCBjcmVh
dGVTaW5nbGVDaGFyYWN0ZXJTdHJpbmcoSlNHbG9iYWxEYXRhKiwgdW5zaWduZWQgY2hhcik7Cisg
ICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIGNyZWF0ZUVtcHR5U3RyaW5nKEpTR2xvYmFs
RGF0YSopOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBjcmVhdGVTaW5nbGVDaGFy
YWN0ZXJTdHJpbmcoSlNHbG9iYWxEYXRhKiwgdW5zaWduZWQgY2hhcik7CiAKICAgICAgICAgSlNT
dHJpbmcqIG1fZW1wdHlTdHJpbmc7CiAgICAgICAgIEpTU3RyaW5nKiBtX3NpbmdsZUNoYXJhY3Rl
clN0cmluZ3NbMHgxMDBdOwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5h
bWVBcnJheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlO
YW1lQXJyYXkuaAkocmV2aXNpb24gNjEzMjcpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3BlcnR5TmFtZUFycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAKICAgICAg
ICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKCkgeyByZXR1cm4gbV9nbG9iYWxEYXRhOyB9CiAK
ICAgICAgICAgdm9pZCBhZGQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikgeyBhZGQoaWRl
bnRpZmllci51c3RyaW5nKCkucmVwKCkpOyB9Ci0gICAgICAgIHZvaWQgYWRkKFVTdHJpbmc6OlJl
cCopOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBhZGQoVVN0cmluZzo6UmVwKik7
CiAgICAgICAgIHZvaWQgYWRkS25vd25VbmlxdWUoVVN0cmluZzo6UmVwKiBpZGVudGlmaWVyKSB7
IG1fZGF0YS0+cHJvcGVydHlOYW1lVmVjdG9yKCkuYXBwZW5kKElkZW50aWZpZXIobV9nbG9iYWxE
YXRhLCBpZGVudGlmaWVyKSk7IH0KIAogICAgICAgICBJZGVudGlmaWVyJiBvcGVyYXRvcltdKHVu
c2lnbmVkIGkpIHsgcmV0dXJuIG1fZGF0YS0+cHJvcGVydHlOYW1lVmVjdG9yKClbaV07IH0KSW5k
ZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Vycm9yLmgJKHJldmlzaW9uIDYxMzI3KQorKysgSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FcnJvci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSwxMiArNDUsMTIgQEAKICAg
ICBKU09iamVjdCogY3JlYXRlVHlwZUVycm9yKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgVVN0cmlu
ZyYpOwogICAgIEpTT2JqZWN0KiBjcmVhdGVVUklFcnJvcihKU0dsb2JhbE9iamVjdCosIGNvbnN0
IFVTdHJpbmcmKTsKICAgICAvLyBFeGVjU3RhdGUgd3JhcHBlcnMuCi0gICAgSlNPYmplY3QqIGNy
ZWF0ZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmKTsKKyAgICBKU19FWFBPUlRFRF9T
WU1CT0wgSlNPYmplY3QqIGNyZWF0ZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmKTsK
ICAgICBKU09iamVjdCogY3JlYXRlRXZhbEVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcm
KTsKICAgICBKU09iamVjdCogY3JlYXRlUmFuZ2VFcnJvcihFeGVjU3RhdGUqLCBjb25zdCBVU3Ry
aW5nJik7Ci0gICAgSlNPYmplY3QqIGNyZWF0ZVJlZmVyZW5jZUVycm9yKEV4ZWNTdGF0ZSosIGNv
bnN0IFVTdHJpbmcmKTsKLSAgICBKU09iamVjdCogY3JlYXRlU3ludGF4RXJyb3IoRXhlY1N0YXRl
KiwgY29uc3QgVVN0cmluZyYpOwotICAgIEpTT2JqZWN0KiBjcmVhdGVUeXBlRXJyb3IoRXhlY1N0
YXRlKiwgY29uc3QgVVN0cmluZyYpOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBKU09iamVjdCog
Y3JlYXRlUmVmZXJlbmNlRXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYpOworICAgIEpT
X0VYUE9SVEVEX1NZTUJPTCBKU09iamVjdCogY3JlYXRlU3ludGF4RXJyb3IoRXhlY1N0YXRlKiwg
Y29uc3QgVVN0cmluZyYpOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBKU09iamVjdCogY3JlYXRl
VHlwZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmKTsKICAgICBKU09iamVjdCogY3Jl
YXRlVVJJRXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYpOwogCiAgICAgLy8gTWV0aG9k
cyB0byBhZGQgCkBAIC02MiwxMiArNjIsMTIgQEAKICAgICBKU09iamVjdCogYWRkRXJyb3JJbmZv
KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiBlcnJvciwgaW50IGxpbmUsIGNvbnN0IFNvdXJjZUNvZGUm
LCBpbnQgZGl2b3RQb2ludCwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0LCBib29sIHdp
dGhDYXJldCA9IHRydWUpOwogCiAgICAgLy8gTWV0aG9kcyB0byB0aHJvdyBFcnJvcnMuCi0gICAg
SlNWYWx1ZSB0aHJvd0Vycm9yKEV4ZWNTdGF0ZSosIEpTVmFsdWUpOwotICAgIEpTT2JqZWN0KiB0
aHJvd0Vycm9yKEV4ZWNTdGF0ZSosIEpTT2JqZWN0Kik7CisgICAgSlNfRVhQT1JURURfU1lNQk9M
IEpTVmFsdWUgdGhyb3dFcnJvcihFeGVjU3RhdGUqLCBKU1ZhbHVlKTsKKyAgICBKU19FWFBPUlRF
RF9TWU1CT0wgSlNPYmplY3QqIHRocm93RXJyb3IoRXhlY1N0YXRlKiwgSlNPYmplY3QqKTsKIAog
ICAgIC8vIENvbnZlbmllbmNlIHdyYXBwZXJzLCBjcmVhdGUgYW4gdGhyb3cgYW4gZXhjZXB0aW9u
IHdpdGggYSBkZWZhdWx0IG1lc3NhZ2UuCi0gICAgSlNPYmplY3QqIHRocm93VHlwZUVycm9yKEV4
ZWNTdGF0ZSopOwotICAgIEpTT2JqZWN0KiB0aHJvd1N5bnRheEVycm9yKEV4ZWNTdGF0ZSopOwor
ICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBKU09iamVjdCogdGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRl
Kik7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIEpTT2JqZWN0KiB0aHJvd1N5bnRheEVycm9yKEV4
ZWNTdGF0ZSopOwogCiAgICAgLy8gQ29udmVuaWVuY2Ugd3JhcHBlcnMsIHdyYXAgcmVzdWx0IGFz
IGFuIEVuY29kZWRKU1ZhbHVlLgogICAgIGlubGluZSBFbmNvZGVkSlNWYWx1ZSB0aHJvd1ZNRXJy
b3IoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGVycm9yKSB7IHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhyb3dFcnJvcihleGVjLCBlcnJvcikpOyB9CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1VTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJp
bmcuaAkocmV2aXNpb24gNjEzMjcpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcu
aAkod29ya2luZyBjb3B5KQpAQCAtNDgsMTkgKzQ4LDE5IEBACiAgICAgICAgIHR5cGVkZWYgVVN0
cmluZ0ltcGwgUmVwOwogICAgIAogICAgIHB1YmxpYzoKLSAgICAgICAgVVN0cmluZygpIHt9Ci0g
ICAgICAgIFVTdHJpbmcoY29uc3QgY2hhciopOyAvLyBDb25zdHJ1Y3RvciBmb3IgbnVsbC10ZXJt
aW5hdGVkIHN0cmluZy4KLSAgICAgICAgVVN0cmluZyhjb25zdCBjaGFyKiwgdW5zaWduZWQgbGVu
Z3RoKTsKLSAgICAgICAgVVN0cmluZyhjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7Ci0g
ICAgICAgIFVTdHJpbmcoY29uc3QgVmVjdG9yPFVDaGFyPiYgYnVmZmVyKTsKKyAgICAgICAgSlNf
RVhQT1JURURfU1lNQk9MIFVTdHJpbmcoKSB7fQorICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wg
VVN0cmluZyhjb25zdCBjaGFyKik7IC8vIENvbnN0cnVjdG9yIGZvciBudWxsLXRlcm1pbmF0ZWQg
c3RyaW5nLgorICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgVVN0cmluZyhjb25zdCBjaGFyKiwg
dW5zaWduZWQgbGVuZ3RoKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIFVTdHJpbmcoY29u
c3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wg
VVN0cmluZyhjb25zdCBWZWN0b3I8VUNoYXI+JiBidWZmZXIpOwogCi0gICAgICAgIFVTdHJpbmco
Y29uc3QgVVN0cmluZyYgcykKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIFVTdHJpbmcoY29u
c3QgVVN0cmluZyYgcykKICAgICAgICAgICAgIDogbV9yZXAocy5tX3JlcCkKICAgICAgICAgewog
ICAgICAgICB9CiAKICAgICAgICAgLy8gU3BlY2lhbCBjb25zdHJ1Y3RvciBmb3IgY2FzZXMgd2hl
cmUgd2Ugb3ZlcndyaXRlIGFuIG9iamVjdCBpbiBwbGFjZS4KLSAgICAgICAgVVN0cmluZyhQbGFj
ZW1lbnROZXdBZG9wdFR5cGUpCisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBVU3RyaW5nKFBs
YWNlbWVudE5ld0Fkb3B0VHlwZSkKICAgICAgICAgICAgIDogbV9yZXAoUGxhY2VtZW50TmV3QWRv
cHQpCiAgICAgICAgIHsKICAgICAgICAgfQpAQCAtNzEsMTUgKzcxLDE1IEBACiAgICAgICAgICAg
ICByZXR1cm4gUmVwOjphZG9wdCh2ZWN0b3IpOwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGlj
IFVTdHJpbmcgZnJvbShpbnQpOwotICAgICAgICBzdGF0aWMgVVN0cmluZyBmcm9tKGxvbmcgbG9u
Zyk7Ci0gICAgICAgIHN0YXRpYyBVU3RyaW5nIGZyb20odW5zaWduZWQpOwotICAgICAgICBzdGF0
aWMgVVN0cmluZyBmcm9tKGxvbmcpOwotICAgICAgICBzdGF0aWMgVVN0cmluZyBmcm9tKGRvdWJs
ZSk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0aWMgVVN0cmluZyBmcm9tKGludCk7
CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0aWMgVVN0cmluZyBmcm9tKGxvbmcgbG9u
Zyk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0aWMgVVN0cmluZyBmcm9tKHVuc2ln
bmVkKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHN0YXRpYyBVU3RyaW5nIGZyb20obG9u
Zyk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0aWMgVVN0cmluZyBmcm9tKGRvdWJs
ZSk7CiAKICAgICAgICAgLy8gTk9URTogVGhpcyBtZXRob2Qgc2hvdWxkIG9ubHkgYmUgdXNlZCBm
b3IgKmRlYnVnZ2luZyogcHVycG9zZXMgYXMgaXQKICAgICAgICAgLy8gaXMgbmVpdGhlciBVbmlj
b2RlIHNhZmUgbm9yIGZyZWUgZnJvbSBzaWRlIGVmZmVjdHMgbm9yIHRocmVhZC1zYWZlLgotICAg
ICAgICBjaGFyKiBhc2NpaSgpIGNvbnN0OworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgY2hh
ciogYXNjaWkoKSBjb25zdDsKIAogICAgICAgICAvKioKICAgICAgICAgICogQ29udmVydCB0aGUg
c3RyaW5nIHRvIFVURi04LCBhc3N1bWluZyBpdCBpcyBVVEYtMTYgZW5jb2RlZC4KQEAgLTg5LDcg
Kzg5LDcgQEAKICAgICAgICAgICogZ3VhcmFudGVlZCB0byBiZSBvdGhlcndpc2UgdmFsaWQuCiAg
ICAgICAgICAqIEluIHN0cmljdCBtb2RlLCBlcnJvciBpcyByZXR1cm5lZCBhcyBudWxsIENTdHJp
bmcuCiAgICAgICAgICAqLwotICAgICAgICBDU3RyaW5nIFVURjhTdHJpbmcoYm9vbCBzdHJpY3Qg
PSBmYWxzZSkgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBDU3RyaW5nIFVURjhT
dHJpbmcoYm9vbCBzdHJpY3QgPSBmYWxzZSkgY29uc3Q7CiAKICAgICAgICAgY29uc3QgVUNoYXIq
IGRhdGEoKSBjb25zdAogICAgICAgICB7CkBAIC0xMDUsNyArMTA1LDcgQEAKICAgICAgICAgICAg
IHJldHVybiBtX3JlcC0+bGVuZ3RoKCk7CiAgICAgICAgIH0KIAotICAgICAgICBib29sIGlzTnVs
bCgpIGNvbnN0IHsgcmV0dXJuICFtX3JlcDsgfQorICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wg
Ym9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhbV9yZXA7IH0KICAgICAgICAgYm9vbCBpc0Vt
cHR5KCkgY29uc3QgeyByZXR1cm4gIW1fcmVwIHx8ICFtX3JlcC0+bGVuZ3RoKCk7IH0KIAogICAg
ICAgICBib29sIGlzOEJpdCgpIGNvbnN0OwpAQCAtMTE2LDggKzExNiw4IEBACiAgICAgICAgIGRv
dWJsZSB0b0RvdWJsZShib29sIHRvbGVyYXRlVHJhaWxpbmdKdW5rKSBjb25zdDsKICAgICAgICAg
ZG91YmxlIHRvRG91YmxlKCkgY29uc3Q7CiAKLSAgICAgICAgdWludDMyX3QgdG9VSW50MzIoYm9v
bCogb2sgPSAwKSBjb25zdDsKLSAgICAgICAgdWludDMyX3QgdG9VSW50MzIoYm9vbCogb2ssIGJv
b2wgdG9sZXJhdGVFbXB0eVN0cmluZykgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJP
TCB1aW50MzJfdCB0b1VJbnQzMihib29sKiBvayA9IDApIGNvbnN0OworICAgICAgICBKU19FWFBP
UlRFRF9TWU1CT0wgdWludDMyX3QgdG9VSW50MzIoYm9vbCogb2ssIGJvb2wgdG9sZXJhdGVFbXB0
eVN0cmluZykgY29uc3Q7CiAgICAgICAgIHVpbnQzMl90IHRvU3RyaWN0VUludDMyKGJvb2wqIG9r
ID0gMCkgY29uc3Q7CiAKICAgICAgICAgdW5zaWduZWQgdG9BcnJheUluZGV4KGJvb2wqIG9rID0g
MCkgY29uc3Q7CkBAIC0xMjgsNyArMTI4LDcgQEAKICAgICAgICAgdW5zaWduZWQgcmZpbmQoY29u
c3QgVVN0cmluZyYgZiwgdW5zaWduZWQgcG9zKSBjb25zdDsKICAgICAgICAgdW5zaWduZWQgcmZp
bmQoVUNoYXIsIHVuc2lnbmVkIHBvcykgY29uc3Q7CiAKLSAgICAgICAgVVN0cmluZyBzdWJzdHIo
dW5zaWduZWQgcG9zID0gMCwgdW5zaWduZWQgbGVuID0gMHhGRkZGRkZGRikgY29uc3Q7CisgICAg
ICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBVU3RyaW5nIHN1YnN0cih1bnNpZ25lZCBwb3MgPSAwLCB1
bnNpZ25lZCBsZW4gPSAweEZGRkZGRkZGKSBjb25zdDsKIAogICAgICAgICBzdGF0aWMgY29uc3Qg
VVN0cmluZyYgbnVsbCgpIHsgcmV0dXJuICpzX251bGxVU3RyaW5nOyB9CiAKQEAgLTE0Niw3ICsx
NDYsMTIgQEAKICAgICAgICAgICAgIHJldHVybiBtX3JlcC0+Y29zdCgpOwogICAgICAgICB9CiAK
LSAgICAgICAgQUxXQVlTX0lOTElORSB+VVN0cmluZygpIHsgfQorICAgICAgICBKU19FWFBPUlRF
RF9TWU1CT0wgQUxXQVlTX0lOTElORSB+VVN0cmluZygpIHsgfQorICAgICAgICBKU19FWFBPUlRF
RF9TWU1CT0wgVVN0cmluZyYgb3BlcmF0b3I9KGNvbnN0IFVTdHJpbmcmIHMpCisgICAgICAgIHsK
KyAgICAgICAgICAgIG1fcmVwID0gcy5tX3JlcDsKKyAgICAgICAgICAgIHJldHVybiAqdGhpczsK
KyAgICAgICAgfQogICAgIHByaXZhdGU6CiAgICAgICAgIFJlZlB0cjxSZXA+IG1fcmVwOwogCklu
ZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5jZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmgJKHJldmlzaW9uIDYxMzI3KQor
KysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2UuaAkod29ya2luZyBjb3B5KQpA
QCAtMzEsMTMgKzMxLDEzIEBACiAKICAgICBjbGFzcyBEYXRlSW5zdGFuY2UgOiBwdWJsaWMgSlNX
cmFwcGVyT2JqZWN0IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIERhdGVJbnN0YW5jZShFeGVjU3Rh
dGUqLCBkb3VibGUpOwotICAgICAgICBEYXRlSW5zdGFuY2UoRXhlY1N0YXRlKiwgTm9uTnVsbFBh
c3NSZWZQdHI8U3RydWN0dXJlPiwgZG91YmxlKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9M
IERhdGVJbnN0YW5jZShFeGVjU3RhdGUqLCBkb3VibGUpOworICAgICAgICBKU19FWFBPUlRFRF9T
WU1CT0wgRGF0ZUluc3RhbmNlKEV4ZWNTdGF0ZSosIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVy
ZT4sIGRvdWJsZSk7CiAgICAgICAgIGV4cGxpY2l0IERhdGVJbnN0YW5jZShFeGVjU3RhdGUqLCBO
b25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+KTsKIAogICAgICAgICBkb3VibGUgaW50ZXJuYWxO
dW1iZXIoKSBjb25zdCB7IHJldHVybiBpbnRlcm5hbFZhbHVlKCkudW5jaGVja2VkR2V0TnVtYmVy
KCk7IH0KIAotICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSBjb25zdCBDbGFzc0luZm8gaW5m
bzsKKyAgICAgICAgc3RhdGljIEpTX0VYUE9SVEVEX1NZTUJPTCBjb25zdCBDbGFzc0luZm8gaW5m
bzsKIAogICAgICAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29yaWFuRGF0ZVRpbWUo
RXhlY1N0YXRlKiBleGVjKSBjb25zdAogICAgICAgICB7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JvcGVJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
b3BlSW1wbC5oCShyZXZpc2lvbiA2MTMyNykKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvUm9w
ZUltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtODMsNyArODMsNyBAQAogICAgIHsKICAgICB9CiAK
LSAgICB2b2lkIGRlc3RydWN0Tm9uUmVjdXJzaXZlKCk7CisgICAgSlNfRVhQT1JURURfU1lNQk9M
IHZvaWQgZGVzdHJ1Y3ROb25SZWN1cnNpdmUoKTsKICAgICB2b2lkIGRlcmVmRmliZXJzTm9uUmVj
dXJzaXZlKFZlY3RvcjxSb3BlSW1wbCosIDMyPiYgd29ya1F1ZXVlKTsKIAogICAgIGJvb2wgaGFz
T25lUmVmKCkgeyByZXR1cm4gKG1fcmVmQ291bnRBbmRGbGFncyAmIHNfcmVmQ291bnRNYXNrKSA9
PSBzX3JlZkNvdW50SW5jcmVtZW50OyB9CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxEYXRhLmgJKHJldmlzaW9uIDYxMzI3KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbERhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDcgKzEwMiw3IEBACiAgICAgICAgIC8v
IHRoZSBvcmlnaW5hbCBBUEkuCiAgICAgICAgIGVudW0gR2xvYmFsRGF0YVR5cGUgeyBEZWZhdWx0
LCBBUElDb250ZXh0R3JvdXAsIEFQSVNoYXJlZCB9OwogCi0gICAgICAgIHN0cnVjdCBDbGllbnRE
YXRhIHsKKyAgICAgICAgc3RydWN0IEpTX0VYUE9SVEVEX1NZTUJPTCBDbGllbnREYXRhIHsKICAg
ICAgICAgICAgIHZpcnR1YWwgfkNsaWVudERhdGEoKSA9IDA7CiAgICAgICAgIH07CiAKQEAgLTEx
MCwxMCArMTEwLDEwIEBACiAgICAgICAgIHN0YXRpYyBib29sIHNoYXJlZEluc3RhbmNlRXhpc3Rz
KCk7CiAgICAgICAgIHN0YXRpYyBKU0dsb2JhbERhdGEmIHNoYXJlZEluc3RhbmNlKCk7CiAKLSAg
ICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SlNHbG9iYWxEYXRhPiBjcmVhdGUoVGhyZWFkU3RhY2tU
eXBlKTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SlNHbG9iYWxEYXRhPiBjcmVhdGVMZWFr
ZWQoVGhyZWFkU3RhY2tUeXBlKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHN0YXRpYyBQ
YXNzUmVmUHRyPEpTR2xvYmFsRGF0YT4gY3JlYXRlKFRocmVhZFN0YWNrVHlwZSk7CisgICAgICAg
IEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0aWMgUGFzc1JlZlB0cjxKU0dsb2JhbERhdGE+IGNyZWF0
ZUxlYWtlZChUaHJlYWRTdGFja1R5cGUpOwogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxKU0ds
b2JhbERhdGE+IGNyZWF0ZUNvbnRleHRHcm91cChUaHJlYWRTdGFja1R5cGUpOwotICAgICAgICB+
SlNHbG9iYWxEYXRhKCk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB+SlNHbG9iYWxEYXRh
KCk7CiAKICNpZiBFTkFCTEUoSlNDX01VTFRJUExFX1RIUkVBRFMpCiAgICAgICAgIC8vIFdpbGwg
c3RhcnQgdHJhY2tpbmcgdGhyZWFkcyB0aGF0IHVzZSB0aGUgaGVhcCwgd2hpY2ggaXMgcmVzb3Vy
Y2UtaGVhdnkuCkBAIC0xNDksMTAgKzE0OSwxMCBAQAogI2VuZGlmCiAKICAgICAgICAgc3RhdGlj
IHZvaWQgc3RvcmVWUHRycygpOwotICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSB2b2lkKiBq
c0FycmF5VlB0cjsKLSAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgdm9pZCoganNCeXRlQXJy
YXlWUHRyOwotICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSB2b2lkKiBqc1N0cmluZ1ZQdHI7
Ci0gICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIHZvaWQqIGpzRnVuY3Rpb25WUHRyOworICAg
ICAgICBzdGF0aWMgSlNfRVhQT1JURURfU1lNQk9MIHZvaWQqIGpzQXJyYXlWUHRyOworICAgICAg
ICBzdGF0aWMgSlNfRVhQT1JURURfU1lNQk9MIHZvaWQqIGpzQnl0ZUFycmF5VlB0cjsKKyAgICAg
ICAgc3RhdGljIEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkKiBqc1N0cmluZ1ZQdHI7CisgICAgICAg
IHN0YXRpYyBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCoganNGdW5jdGlvblZQdHI7CiAKICAgICAg
ICAgSWRlbnRpZmllclRhYmxlKiBpZGVudGlmaWVyVGFibGU7CiAgICAgICAgIENvbW1vbklkZW50
aWZpZXJzKiBwcm9wZXJ0eU5hbWVzOwpAQCAtMjE3LDExICsyMTcsMTEgQEAKIAogICAgICAgICBD
YWNoZWRUcmFuc2NlbmRlbnRhbEZ1bmN0aW9uPHNpbj4gY2FjaGVkU2luOwogCi0gICAgICAgIHZv
aWQgcmVzZXREYXRlQ2FjaGUoKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZvaWQgcmVz
ZXREYXRlQ2FjaGUoKTsKIAotICAgICAgICB2b2lkIHN0YXJ0U2FtcGxpbmcoKTsKLSAgICAgICAg
dm9pZCBzdG9wU2FtcGxpbmcoKTsKLSAgICAgICAgdm9pZCBkdW1wU2FtcGxlRGF0YShFeGVjU3Rh
dGUqIGV4ZWMpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBzdGFydFNhbXBsaW5n
KCk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIHN0b3BTYW1wbGluZygpOworICAg
ICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBkdW1wU2FtcGxlRGF0YShFeGVjU3RhdGUqIGV4
ZWMpOwogICAgIHByaXZhdGU6CiAgICAgICAgIEpTR2xvYmFsRGF0YShHbG9iYWxEYXRhVHlwZSwg
VGhyZWFkU3RhY2tUeXBlKTsKICAgICAgICAgc3RhdGljIEpTR2xvYmFsRGF0YSomIHNoYXJlZElu
c3RhbmNlSW50ZXJuYWwoKTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGltZW91dENo
ZWNrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RpbWVvdXRDaGVj
a2VyLmgJKHJldmlzaW9uIDYxMzI3KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9UaW1lb3V0
Q2hlY2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw5ICs1Niw5IEBACiAgICAgICAgICAgICAt
LW1fc3RhcnRDb3VudDsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgcmVzZXQoKTsKKyAgICAg
ICAgSlNfRVhQT1JURURfU1lNQk9MIHZvaWQgcmVzZXQoKTsKIAotICAgICAgICBib29sIGRpZFRp
bWVPdXQoRXhlY1N0YXRlKik7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBib29sIGRpZFRp
bWVPdXQoRXhlY1N0YXRlKik7CiAKICAgICBwcml2YXRlOgogICAgICAgICB1bnNpZ25lZCBtX3Rp
bWVvdXRJbnRlcnZhbDsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29sbGVjdG9yLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbGxlY3Rvci5jcHAJKHJl
dmlzaW9uIDYxMzI3KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2xsZWN0b3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00NTAsNyArNDUwLDcgQEAKIH0KIAogI2lmIE9TKFdJTkNFKQotSlNf
RVhQT1JUREFUQSB2b2lkKiBnX3N0YWNrQmFzZSA9IDA7CitKU19FWFBPUlRFRF9TWU1CT0wgdm9p
ZCogZ19zdGFja0Jhc2UgPSAwOwogCiBpbmxpbmUgYm9vbCBpc1BhZ2VXcml0YWJsZSh2b2lkKiBw
YWdlKQogewpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkocmV2
aXNpb24gNjEzMjcpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTY3LDcgKzY3LDcgQEAKICAgICAgICAgICAgIC8vIEpTVmFyaWFi
bGVPYmplY3REYXRhKiB0byBKU0dsb2JhbE9iamVjdERhdGEqLgogICAgICAgICAgICAgdHlwZWRl
ZiB2b2lkICgqRGVzdHJ1Y3Rvcikodm9pZCopOwogCi0gICAgICAgICAgICBKU0dsb2JhbE9iamVj
dERhdGEoRGVzdHJ1Y3RvciBkZXN0cnVjdG9yKQorICAgICAgICAgICAgSlNfRVhQT1JURURfU1lN
Qk9MIEpTR2xvYmFsT2JqZWN0RGF0YShEZXN0cnVjdG9yIGRlc3RydWN0b3IpCiAgICAgICAgICAg
ICAgICAgOiBKU1ZhcmlhYmxlT2JqZWN0RGF0YSgmc3ltYm9sVGFibGUsIDApCiAgICAgICAgICAg
ICAgICAgLCBkZXN0cnVjdG9yKGRlc3RydWN0b3IpCiAgICAgICAgICAgICAgICAgLCByZWdpc3Rl
ckFycmF5U2l6ZSgwKQpAQCAtMTU5LDcgKzE1OSw3IEBACiAgICAgICAgIH07CiAKICAgICBwdWJs
aWM6Ci0gICAgICAgIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIEpTR2xvYmFsRGF0YSopOwor
ICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgSlNH
bG9iYWxEYXRhKik7CiAgICAgICAgIAogICAgICAgICBleHBsaWNpdCBKU0dsb2JhbE9iamVjdCgp
CiAgICAgICAgICAgICA6IEpTVmFyaWFibGVPYmplY3QoSlNHbG9iYWxPYmplY3Q6OmNyZWF0ZVN0
cnVjdHVyZShqc051bGwoKSksIG5ldyBKU0dsb2JhbE9iamVjdERhdGEoZGVzdHJveUpTR2xvYmFs
T2JqZWN0RGF0YSkpCkBAIC0xODcsMTggKzE4NywxOCBAQAogICAgICAgICB9CiAKICAgICBwdWJs
aWM6Ci0gICAgICAgIHZpcnR1YWwgfkpTR2xvYmFsT2JqZWN0KCk7CisgICAgICAgIEpTX0VYUE9S
VEVEX1NZTUJPTCB2aXJ0dWFsIH5KU0dsb2JhbE9iamVjdCgpOwogCi0gICAgICAgIHZpcnR1YWwg
dm9pZCBtYXJrQ2hpbGRyZW4oTWFya1N0YWNrJik7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJP
TCB2aXJ0dWFsIHZvaWQgbWFya0NoaWxkcmVuKE1hcmtTdGFjayYpOwogCiAgICAgICAgIHZpcnR1
YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYs
IFByb3BlcnR5U2xvdCYpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3Im
KTsKICAgICAgICAgdmlydHVhbCBib29sIGhhc093blByb3BlcnR5Rm9yV3JpdGUoRXhlY1N0YXRl
KiwgY29uc3QgSWRlbnRpZmllciYpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcHV0KEV4ZWNTdGF0
ZSosIGNvbnN0IElkZW50aWZpZXImLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICAg
ICAgdmlydHVhbCB2b2lkIHB1dFdpdGhBdHRyaWJ1dGVzKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7
CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIHZvaWQgcHV0KEV4ZWNTdGF0ZSos
IGNvbnN0IElkZW50aWZpZXImLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAg
SlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgdm9pZCBwdXRXaXRoQXR0cmlidXRlcyhFeGVjU3Rh
dGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2ln
bmVkIGF0dHJpYnV0ZXMpOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBkZWZpbmVHZXR0ZXIoRXhl
Y1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU09iamVjdCogZ2V0dGVy
RnVuYywgdW5zaWduZWQgYXR0cmlidXRlcyk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkZWZpbmVT
ZXR0ZXIoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU09iamVj
dCogc2V0dGVyRnVuYywgdW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAgICAgIEpTX0VYUE9SVEVE
X1NZTUJPTCB2aXJ0dWFsIHZvaWQgZGVmaW5lR2V0dGVyKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgSlNPYmplY3QqIGdldHRlckZ1bmMsIHVuc2lnbmVkIGF0dHJp
YnV0ZXMpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCB2b2lkIGRlZmluZVNl
dHRlcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0
KiBzZXR0ZXJGdW5jLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKIAogICAgICAgICAvLyBMaW5rZWQg
bGlzdCBvZiBhbGwgZ2xvYmFsIG9iamVjdHMgdGhhdCB1c2UgdGhlIHNhbWUgSlNHbG9iYWxEYXRh
LgogICAgICAgICBKU0dsb2JhbE9iamVjdComIGhlYWQoKSB7IHJldHVybiBkKCktPmdsb2JhbERh
dGEtPmhlYWQ7IH0KQEAgLTI2MiwxMyArMjYyLDEzIEBACiAKICAgICAgICAgdmlydHVhbCBib29s
IGlzR2xvYmFsT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgICAgIHZpcnR1
YWwgRXhlY1N0YXRlKiBnbG9iYWxFeGVjKCk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2
aXJ0dWFsIEV4ZWNTdGF0ZSogZ2xvYmFsRXhlYygpOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBz
aG91bGRJbnRlcnJ1cHRTY3JpcHQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKICAgICAgICAg
dmlydHVhbCBib29sIGFsbG93c0FjY2Vzc0Zyb20oY29uc3QgSlNHbG9iYWxPYmplY3QqKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICAgICAgdmlydHVhbCBib29sIGlzRHluYW1pY1Njb3Bl
KGJvb2wmIHJlcXVpcmVzRHluYW1pY0NoZWNrcykgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVEVE
X1NZTUJPTCB2aXJ0dWFsIGJvb2wgaXNEeW5hbWljU2NvcGUoYm9vbCYgcmVxdWlyZXNEeW5hbWlj
Q2hlY2tzKSBjb25zdDsKIAogICAgICAgICBIYXNoU2V0PEdsb2JhbENvZGVCbG9jayo+JiBjb2Rl
QmxvY2tzKCkgeyByZXR1cm4gZCgpLT5jb2RlQmxvY2tzOyB9CiAKQEAgLTMxNSwxMCArMzE1LDEw
IEBACiAgICAgICAgIHZvaWQgYWRkU3RhdGljR2xvYmFscyhHbG9iYWxQcm9wZXJ0eUluZm8qLCBp
bnQgY291bnQpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveUpT
R2xvYmFsT2JqZWN0RGF0YSh2b2lkKik7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0
aWMgdm9pZCBkZXN0cm95SlNHbG9iYWxPYmplY3REYXRhKHZvaWQqKTsKIAogICAgICAgICAvLyBG
SVhNRTogRm9sZCByZXNldCBpbnRvIGluaXQuCi0gICAgICAgIHZvaWQgaW5pdChKU09iamVjdCog
dGhpc1ZhbHVlKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZvaWQgaW5pdChKU09iamVj
dCogdGhpc1ZhbHVlKTsKICAgICAgICAgdm9pZCByZXNldChKU1ZhbHVlIHByb3RvdHlwZSk7CiAK
ICAgICAgICAgdm9pZCBzZXRSZWdpc3RlcnMoUmVnaXN0ZXIqIHJlZ2lzdGVycywgUmVnaXN0ZXIq
IHJlZ2lzdGVyQXJyYXksIHNpemVfdCBjb3VudCk7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbGxlY3RvckhlYXBJdGVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29sbGVjdG9ySGVhcEl0ZXJhdG9yLmgJKHJldmlzaW9uIDYxMzI3KQorKysgSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db2xsZWN0b3JIZWFwSXRlcmF0b3IuaAkod29ya2luZyBjb3B5
KQpAQCAtMjMsNyArMjMsNiBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIkNvbGxlY3Rvci5oIgogCiAjaWZuZGVmIENvbGxlY3RvckhlYXBJ
dGVyYXRvcl9oCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0V2l0aEdsb2Jh
bE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RX
aXRoR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDYxMzI3KQorKysgSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdFdpdGhHbG9iYWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzksMTAg
KzM5LDEwIEBACiAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShwcm90bywgVHlwZUlu
Zm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQpOwogICAg
IH0KIAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoKSBjb25zdDsKKyAgICBKU19F
WFBPUlRFRF9TWU1CT0wgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCgpIGNvbnN0OwogCiBw
cm90ZWN0ZWQ6Ci0gICAgSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0KEpTR2xvYmFsT2JqZWN0Kiwg
Tm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPik7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIEpT
T2JqZWN0V2l0aEdsb2JhbE9iamVjdChKU0dsb2JhbE9iamVjdCosIE5vbk51bGxQYXNzUmVmUHRy
PFN0cnVjdHVyZT4pOwogCiAgICAgSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0KE5vbk51bGxQYXNz
UmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlKQogICAgICAgICA6IEpTT2JqZWN0KHN0cnVjdHVy
ZSkKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCShyZXZpc2lvbiA2MTMyNykKKysrIEph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw5ICs1
NSw5IEBACiAgICAgdHlwZWRlZiB2b2lkKiBFbmNvZGVkSlNWYWx1ZTsKICNlbmRpZgogCi0gICAg
ZG91YmxlIG5vbklubGluZU5hTigpOwotICAgIGludDMyX3QgdG9JbnQzMlNsb3dDYXNlKGRvdWJs
ZSwgYm9vbCYgb2spOwotICAgIHVpbnQzMl90IHRvVUludDMyU2xvd0Nhc2UoZG91YmxlLCBib29s
JiBvayk7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIGRvdWJsZSBub25JbmxpbmVOYU4oKTsKKyAg
ICBKU19FWFBPUlRFRF9TWU1CT0wgaW50MzJfdCB0b0ludDMyU2xvd0Nhc2UoZG91YmxlLCBib29s
JiBvayk7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIHVpbnQzMl90IHRvVUludDMyU2xvd0Nhc2Uo
ZG91YmxlLCBib29sJiBvayk7CiAKICAgICBjbGFzcyBKU1ZhbHVlIHsKICAgICAgICAgZnJpZW5k
IGNsYXNzIEpTSW1tZWRpYXRlOwpAQCAtMTk5LDcgKzE5OSw3IEBACiAKICAgICAgICAgYm9vbCBp
c0NlbGwoKSBjb25zdDsKICAgICAgICAgSlNDZWxsKiBhc0NlbGwoKSBjb25zdDsKLSAgICAgICAg
Ym9vbCBpc1ZhbGlkQ2FsbGVlKCk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBib29sIGlz
VmFsaWRDYWxsZWUoKTsKIAogI2lmbmRlZiBOREVCVUcKICAgICAgICAgY2hhciogZGVzY3JpcHRp
b24oKTsKQEAgLTIxMCw4ICsyMTAsOCBAQAogICAgICAgICBKU1ZhbHVlKEhhc2hUYWJsZURlbGV0
ZWRWYWx1ZVRhZyk7CiAKICAgICAgICAgaW5saW5lIGNvbnN0IEpTVmFsdWUgYXNWYWx1ZSgpIGNv
bnN0IHsgcmV0dXJuICp0aGlzOyB9Ci0gICAgICAgIEpTT2JqZWN0KiB0b09iamVjdFNsb3dDYXNl
KEV4ZWNTdGF0ZSopIGNvbnN0OwotICAgICAgICBKU09iamVjdCogdG9UaGlzT2JqZWN0U2xvd0Nh
c2UoRXhlY1N0YXRlKikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBKU09iamVj
dCogdG9PYmplY3RTbG93Q2FzZShFeGVjU3RhdGUqKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JU
RURfU1lNQk9MIEpTT2JqZWN0KiB0b1RoaXNPYmplY3RTbG93Q2FzZShFeGVjU3RhdGUqKSBjb25z
dDsKIAogICAgICAgICBKU09iamVjdCogc3ludGhlc2l6ZVByb3RvdHlwZShFeGVjU3RhdGUqKSBj
b25zdDsKICAgICAgICAgSlNPYmplY3QqIHN5bnRoZXNpemVPYmplY3QoRXhlY1N0YXRlKikgY29u
c3Q7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmgJ
KHJldmlzaW9uIDYxMzI3KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eURlc2Ny
aXB0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsOCArNDYsOCBAQAogICAgICAgICBKU1ZhbHVl
IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQogICAgICAgICBKU1ZhbHVlIGdldHRl
cigpIGNvbnN0OwogICAgICAgICBKU1ZhbHVlIHNldHRlcigpIGNvbnN0OwotICAgICAgICB2b2lk
IHNldFVuZGVmaW5lZCgpOwotICAgICAgICB2b2lkIHNldERlc2NyaXB0b3IoSlNWYWx1ZSB2YWx1
ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lk
IHNldFVuZGVmaW5lZCgpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBzZXREZXNj
cmlwdG9yKEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgICAgICB2b2lk
IHNldEFjY2Vzc29yRGVzY3JpcHRvcihKU1ZhbHVlIGdldHRlciwgSlNWYWx1ZSBzZXR0ZXIsIHVu
c2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgICAgICB2b2lkIHNldFdyaXRhYmxlKGJvb2wpOwogICAg
ICAgICB2b2lkIHNldEVudW1lcmFibGUoYm9vbCk7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbGxlY3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29s
bGVjdG9yLmgJKHJldmlzaW9uIDYxMzI3KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2xs
ZWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNzQsMTMgKzc0LDEzIEBACiAgICAgcHVibGljOgog
ICAgICAgICBjbGFzcyBUaHJlYWQ7CiAKLSAgICAgICAgdm9pZCBkZXN0cm95KCk7CisgICAgICAg
IEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIGRlc3Ryb3koKTsKIAogICAgICAgICB2b2lkKiBhbGxv
Y2F0ZU51bWJlcihzaXplX3QpOwotICAgICAgICB2b2lkKiBhbGxvY2F0ZShzaXplX3QpOworICAg
ICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCogYWxsb2NhdGUoc2l6ZV90KTsKIAotICAgICAg
ICBib29sIGlzQnVzeSgpOyAvLyB0cnVlIGlmIGFuIGFsbG9jYXRpb24gb3IgY29sbGVjdGlvbiBp
cyBpbiBwcm9ncmVzcwotICAgICAgICB2b2lkIGNvbGxlY3RBbGxHYXJiYWdlKCk7CisgICAgICAg
IEpTX0VYUE9SVEVEX1NZTUJPTCBib29sIGlzQnVzeSgpOyAvLyB0cnVlIGlmIGFuIGFsbG9jYXRp
b24gb3IgY29sbGVjdGlvbiBpcyBpbiBwcm9ncmVzcworICAgICAgICBKU19FWFBPUlRFRF9TWU1C
T0wgdm9pZCBjb2xsZWN0QWxsR2FyYmFnZSgpOwogCiAgICAgICAgIHN0YXRpYyBjb25zdCBzaXpl
X3QgbWluRXh0cmFDb3N0ID0gMjU2OwogICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heEV4
dHJhQ29zdCA9IDEwMjQgKiAxMDI0OwpAQCAtOTMsMTIgKzkzLDEyIEBACiAgICAgICAgICAgICBz
aXplX3QgZnJlZTsKICAgICAgICAgfTsKICAgICAgICAgU3RhdGlzdGljcyBzdGF0aXN0aWNzKCkg
Y29uc3Q7Ci0gICAgICAgIHNpemVfdCBzaXplKCkgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVEVE
X1NZTUJPTCBzaXplX3Qgc2l6ZSgpIGNvbnN0OwogCi0gICAgICAgIHZvaWQgcHJvdGVjdChKU1Zh
bHVlKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZvaWQgcHJvdGVjdChKU1ZhbHVlKTsK
ICAgICAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSB2YWx1ZSBpcyBubyBsb25nZXIgcHJvdGVj
dGVkIGJ5IGFueSBwcm90ZWN0IHBvaW50ZXJzCiAgICAgICAgIC8vICh0aG91Z2ggaXQgbWF5IHN0
aWxsIGJlIGFsaXZlIGR1ZSB0byBoZWFwL3N0YWNrIHJlZmVyZW5jZXMpLgotICAgICAgICBib29s
IHVucHJvdGVjdChKU1ZhbHVlKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIGJvb2wgdW5w
cm90ZWN0KEpTVmFsdWUpOwogCiAgICAgICAgIHN0YXRpYyBIZWFwKiBoZWFwKEpTVmFsdWUpOyAv
LyAwIGZvciBpbW1lZGlhdGUgdmFsdWVzCiAgICAgICAgIHN0YXRpYyBIZWFwKiBoZWFwKEpTQ2Vs
bCopOwpAQCAtMTQ1LDcgKzE0NSw3IEBACiAgICAgICAgIHZvaWQgY2xlYXJNYXJrQml0cyhDb2xs
ZWN0b3JCbG9jayopOwogICAgICAgICBzaXplX3QgbWFya2VkQ2VsbHMoc2l6ZV90IHN0YXJ0Qmxv
Y2sgPSAwLCBzaXplX3Qgc3RhcnRDZWxsID0gMCkgY29uc3Q7CiAKLSAgICAgICAgdm9pZCByZWNv
cmRFeHRyYUNvc3Qoc2l6ZV90KTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZvaWQgcmVj
b3JkRXh0cmFDb3N0KHNpemVfdCk7CiAKICAgICAgICAgdm9pZCBhZGRUb1N0YXRpc3RpY3MoU3Rh
dGlzdGljcyYpIGNvbnN0OwogCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBl
ck9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXcmFwcGVy
T2JqZWN0LmgJKHJldmlzaW9uIDYxMzI3KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dy
YXBwZXJPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQAogICAgICAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgQW5vbnltb3VzU2xvdENvdW50ID0gMSArIEpTT2JqZWN0OjpB
bm9ueW1vdXNTbG90Q291bnQ7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIHZvaWQg
bWFya0NoaWxkcmVuKE1hcmtTdGFjayYpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmly
dHVhbCB2b2lkIG1hcmtDaGlsZHJlbihNYXJrU3RhY2smKTsKICAgICAgICAgCiAgICAgICAgIEpT
VmFsdWUgbV9pbnRlcm5hbFZhbHVlOwogICAgIH07CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NhbGxEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWxs
RGF0YS5oCShyZXZpc2lvbiA2MTMyNykKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FsbERh
dGEuaAkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBAQAogICAgICAgICB9IGpzOwogICAg
IH07CiAKLSAgICBKU1ZhbHVlIGNhbGwoRXhlY1N0YXRlKiwgSlNWYWx1ZSBmdW5jdGlvbk9iamVj
dCwgQ2FsbFR5cGUsIGNvbnN0IENhbGxEYXRhJiwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEFy
Z0xpc3QmKTsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgSlNWYWx1ZSBjYWxsKEV4ZWNTdGF0ZSos
IEpTVmFsdWUgZnVuY3Rpb25PYmplY3QsIENhbGxUeXBlLCBjb25zdCBDYWxsRGF0YSYsIEpTVmFs
dWUgdGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0Jik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCklu
ZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0cnVjdERhdGEuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0cnVjdERhdGEuaAkocmV2aXNpb24gNjEzMjcp
CisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0cnVjdERhdGEuaAkod29ya2luZyBjb3B5
KQpAQCAtNTcsNyArNTcsNyBAQAogICAgICAgICB9IGpzOwogICAgIH07CiAKLSAgICBKU09iamVj
dCogY29uc3RydWN0KEV4ZWNTdGF0ZSosIEpTVmFsdWUgY29uc3RydWN0b3IsIENvbnN0cnVjdFR5
cGUsIGNvbnN0IENvbnN0cnVjdERhdGEmLCBjb25zdCBBcmdMaXN0Jik7CisgICAgSlNfRVhQT1JU
RURfU1lNQk9MIEpTT2JqZWN0KiBjb25zdHJ1Y3QoRXhlY1N0YXRlKiwgSlNWYWx1ZSBjb25zdHJ1
Y3RvciwgQ29uc3RydWN0VHlwZSwgY29uc3QgQ29uc3RydWN0RGF0YSYsIGNvbnN0IEFyZ0xpc3Qm
KTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TWFya1N0YWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXJrU3Rh
Y2suaAkocmV2aXNpb24gNjEzMjcpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcmtTdGFj
ay5oCSh3b3JraW5nIGNvcHkpCkBAIC04NSw4ICs4NSw4IEBACiAgICAgICAgICAgICBNYXJrU2V0
UHJvcGVydGllcyBtX3Byb3BlcnRpZXM7CiAgICAgICAgIH07CiAKLSAgICAgICAgc3RhdGljIHZv
aWQqIGFsbG9jYXRlU3RhY2soc2l6ZV90IHNpemUpOwotICAgICAgICBzdGF0aWMgdm9pZCByZWxl
YXNlU3RhY2sodm9pZCogYWRkciwgc2l6ZV90IHNpemUpOworICAgICAgICBKU19FWFBPUlRFRF9T
WU1CT0wgc3RhdGljIHZvaWQqIGFsbG9jYXRlU3RhY2soc2l6ZV90IHNpemUpOworICAgICAgICBK
U19FWFBPUlRFRF9TWU1CT0wgc3RhdGljIHZvaWQgcmVsZWFzZVN0YWNrKHZvaWQqIGFkZHIsIHNp
emVfdCBzaXplKTsKIAogICAgICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplUGFnZXNpemUoKTsK
ICAgICAgICAgc3RhdGljIHNpemVfdCBwYWdlU2l6ZSgpCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuaAkocmV2aXNpb24gNjEzMjcpCisrKyBKYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuaAkod29ya2luZyBjb3B5KQpA
QCAtMzEsOSArMzEsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotICAgIC8vIFRoaXMgZnVuY3Rp
b24gbXVzdCBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQuIEl0IGlzIHNhZmUgdG8gY2Fs
bCBpdCByZXBlYXRlZGx5LgotICAgIC8vIERhcndpbiBpcyBhbiBleGNlcHRpb24gdG8gdGhpcyBy
dWxlOiBpdCBpcyBPSyB0byBjYWxsIHRoaXMgZnVuY3Rpb24gZnJvbSBhbnkgdGhyZWFkLCBldmVu
IHJlZW50cmFudGx5LgotICAgIHZvaWQgaW5pdGlhbGl6ZVRocmVhZGluZygpOworLy8gVGhpcyBm
dW5jdGlvbiBtdXN0IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4gSXQgaXMgc2FmZSB0
byBjYWxsIGl0IHJlcGVhdGVkbHkuCisvLyBEYXJ3aW4gaXMgYW4gZXhjZXB0aW9uIHRvIHRoaXMg
cnVsZTogaXQgaXMgT0sgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIGZyb20gYW55IHRocmVhZCwgZXZl
biByZWVudHJhbnRseS4KK0pTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIGluaXRpYWxpemVUaHJlYWRp
bmcoKTsKIAogfQogCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9jb25maWcuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBKYXZhU2NyaXB0Q29yZS9jb25maWcuaAkocmV2aXNpb24gNjEzMjcpCisrKyBKYXZhU2NyaXB0
Q29yZS9jb25maWcuaAkod29ya2luZyBjb3B5KQpAQCAtMjksMTYgKzI5LDE2IEBACiAKICNpbmNs
dWRlIDx3dGYvUGxhdGZvcm0uaD4KIAotI2lmICFQTEFURk9STShDSFJPTUlVTSkgJiYgT1MoV0lO
RE9XUykgJiYgIWRlZmluZWQoQlVJTERJTkdfV1hfXykgJiYgIUNPTVBJTEVSKEdDQykKKyNpZiAh
UExBVEZPUk0oQ0hST01JVU0pICYmIE9TKFdJTkRPV1MpICYmICFDT01QSUxFUihHQ0MpCiAjaWYg
ZGVmaW5lZChCVUlMRElOR19KYXZhU2NyaXB0Q29yZSkgfHwgZGVmaW5lZChCVUlMRElOR19XVEYp
Ci0jZGVmaW5lIEpTX0VYUE9SVERBVEEgX19kZWNsc3BlYyhkbGxleHBvcnQpCisjZGVmaW5lIEpT
X0VYUE9SVEVEX1NZTUJPTCBfX2RlY2xzcGVjKGRsbGV4cG9ydCkKICNlbHNlCi0jZGVmaW5lIEpT
X0VYUE9SVERBVEEgX19kZWNsc3BlYyhkbGxpbXBvcnQpCisjZGVmaW5lIEpTX0VYUE9SVEVEX1NZ
TUJPTCBfX2RlY2xzcGVjKGRsbGltcG9ydCkKICNlbmRpZgotI2RlZmluZSBKU19FWFBPUlRDTEFT
UyBKU19FWFBPUlREQVRBCisjZWxpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAhZGVmaW5lZChfX0ND
X0FSTSkgJiYgIWRlZmluZWQoX19BUk1DQ19fKQorI2RlZmluZSBKU19FWFBPUlRFRF9TWU1CT0wg
X19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkKICNlbHNlCi0jZGVmaW5lIEpT
X0VYUE9SVERBVEEKLSNkZWZpbmUgSlNfRVhQT1JUQ0xBU1MKKyNkZWZpbmUgSlNfRVhQT1JURURf
U1lNQk9MCiAjZW5kaWYKIAogI2lmIE9TKFdJTkRPV1MpCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAkocmV2aXNpb24gNjEzMjcpCisr
KyBKYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAkod29ya2lu
ZyBjb3B5KQpAQCAtOTAsNyArOTAsNyBAQAogICAgICAgICB0eXBlZGVmIERlY2xhcmF0aW9uU3Rh
Y2tzOjpWYXJTdGFjayBWYXJTdGFjazsKICAgICAgICAgdHlwZWRlZiBEZWNsYXJhdGlvblN0YWNr
czo6RnVuY3Rpb25TdGFjayBGdW5jdGlvblN0YWNrOwogCi0gICAgICAgIHN0YXRpYyB2b2lkIHNl
dER1bXBzR2VuZXJhdGVkQ29kZShib29sIGR1bXBzR2VuZXJhdGVkQ29kZSk7CisgICAgICAgIEpT
X0VYUE9SVEVEX1NZTUJPTCBzdGF0aWMgdm9pZCBzZXREdW1wc0dlbmVyYXRlZENvZGUoYm9vbCBk
dW1wc0dlbmVyYXRlZENvZGUpOwogICAgICAgICBzdGF0aWMgYm9vbCBkdW1wc0dlbmVyYXRlZENv
ZGUoKTsKIAogICAgICAgICBCeXRlY29kZUdlbmVyYXRvcihQcm9ncmFtTm9kZSosIGNvbnN0IERl
YnVnZ2VyKiwgY29uc3QgU2NvcGVDaGFpbiYsIFN5bWJvbFRhYmxlKiwgUHJvZ3JhbUNvZGVCbG9j
ayopOwpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL1JhbmRvbU51bWJlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9SYW5kb21OdW1iZXIuaAkocmV2aXNpb24gNjEzMjcpCisr
KyBKYXZhU2NyaXB0Q29yZS93dGYvUmFuZG9tTnVtYmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4
LDkgKzI4LDkgQEAKIAogbmFtZXNwYWNlIFdURiB7CiAKLSAgICAvLyBSZXR1cm5zIGEgcHNldWRv
LXJhbmRvbSBudW1iZXIgaW4gdGhlIHJhbmdlIFswLCAxKSwgYXR0ZW1wdHMgdG8gYmUKLSAgICAv
LyBjcnlwdG9ncmFwaGljYWxseSBzZWN1cmUgaWYgcG9zc2libGUgb24gdGhlIHRhcmdldCBwbGF0
Zm9ybQotICAgIGRvdWJsZSByYW5kb21OdW1iZXIoKTsKKy8vIFJldHVybnMgYSBwc2V1ZG8tcmFu
ZG9tIG51bWJlciBpbiB0aGUgcmFuZ2UgWzAsIDEpLCBhdHRlbXB0cyB0byBiZQorLy8gY3J5cHRv
Z3JhcGhpY2FsbHkgc2VjdXJlIGlmIHBvc3NpYmxlIG9uIHRoZSB0YXJnZXQgcGxhdGZvcm0KK0pT
X0VYUE9SVEVEX1NZTUJPTCBkb3VibGUgcmFuZG9tTnVtYmVyKCk7CiAKIH0KIApJbmRleDogSmF2
YVNjcmlwdENvcmUvd3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEph
dmFTY3JpcHRDb3JlL3d0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaAkocmV2aXNpb24gNjEzMjcp
CisrKyBKYXZhU2NyaXB0Q29yZS93dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDIyICsyNiwyMiBAQAogCiBuYW1lc3BhY2UgV1RGIHsKICAgICAKLSAgICBz
dHJ1Y3QgUmVmQ291bnRlZExlYWtDb3VudGVyIHsKLSAgICAgICAgc3RhdGljIHZvaWQgc3VwcHJl
c3NNZXNzYWdlcyhjb25zdCBjaGFyKik7Ci0gICAgICAgIHN0YXRpYyB2b2lkIGNhbmNlbE1lc3Nh
Z2VTdXBwcmVzc2lvbihjb25zdCBjaGFyKik7CitzdHJ1Y3QgSlNfRVhQT1JURURfU1lNQk9MIFJl
ZkNvdW50ZWRMZWFrQ291bnRlciB7CisgICAgc3RhdGljIHZvaWQgc3VwcHJlc3NNZXNzYWdlcyhj
b25zdCBjaGFyKik7CisgICAgc3RhdGljIHZvaWQgY2FuY2VsTWVzc2FnZVN1cHByZXNzaW9uKGNv
bnN0IGNoYXIqKTsKICAgICAgICAgCi0gICAgICAgIGV4cGxpY2l0IFJlZkNvdW50ZWRMZWFrQ291
bnRlcihjb25zdCBjaGFyKiBkZXNjcmlwdGlvbik7Ci0gICAgICAgIH5SZWZDb3VudGVkTGVha0Nv
dW50ZXIoKTsKKyAgICBleHBsaWNpdCBSZWZDb3VudGVkTGVha0NvdW50ZXIoY29uc3QgY2hhciog
ZGVzY3JpcHRpb24pOworICAgIH5SZWZDb3VudGVkTGVha0NvdW50ZXIoKTsKIAotICAgICAgICB2
b2lkIGluY3JlbWVudCgpOwotICAgICAgICB2b2lkIGRlY3JlbWVudCgpOworICAgIHZvaWQgaW5j
cmVtZW50KCk7CisgICAgdm9pZCBkZWNyZW1lbnQoKTsKIAogI2lmbmRlZiBOREVCVUcKLSAgICBw
cml2YXRlOgotICAgICAgICB2b2xhdGlsZSBpbnQgbV9jb3VudDsKLSAgICAgICAgY29uc3QgY2hh
ciogbV9kZXNjcmlwdGlvbjsKK3ByaXZhdGU6CisgICAgdm9sYXRpbGUgaW50IG1fY291bnQ7Cisg
ICAgY29uc3QgY2hhciogbV9kZXNjcmlwdGlvbjsKICNlbmRpZgotICAgIH07Cit9OwogCiB9ICAv
LyBuYW1lc3BhY2UgV1RGCiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L0NTdHJpbmcu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9DU3RyaW5nLmgJKHJldmlz
aW9uIDYxMzI3KQorKysgSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvQ1N0cmluZy5oCSh3b3JraW5n
IGNvcHkpCkBAIC01MiwxMiArNTIsMTMgQEAKIGNsYXNzIENTdHJpbmcgewogcHVibGljOgogICAg
IENTdHJpbmcoKSB7IH0KLSAgICBDU3RyaW5nKGNvbnN0IGNoYXIqKTsKLSAgICBDU3RyaW5nKGNv
bnN0IGNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBDU3Ry
aW5nKGNvbnN0IGNoYXIqKTsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgQ1N0cmluZyhjb25zdCBj
aGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBDU3RyaW5nKENTdHJpbmdCdWZmZXIqIGJ1ZmZl
cikgOiBtX2J1ZmZlcihidWZmZXIpIHsgfQotICAgIHN0YXRpYyBDU3RyaW5nIG5ld1VuaW5pdGlh
bGl6ZWQoc2l6ZV90IGxlbmd0aCwgY2hhciomIGNoYXJhY3RlckJ1ZmZlcik7CisgICAgSlNfRVhQ
T1JURURfU1lNQk9MIHN0YXRpYyBDU3RyaW5nIG5ld1VuaW5pdGlhbGl6ZWQoc2l6ZV90IGxlbmd0
aCwgY2hhciomIGNoYXJhY3RlckJ1ZmZlcik7CiAKLSAgICBjb25zdCBjaGFyKiBkYXRhKCkgY29u
c3QKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgfkNTdHJpbmcoKSB7IH0KKyAgICBKU19FWFBPUlRF
RF9TWU1CT0wgY29uc3QgY2hhciogZGF0YSgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4g
bV9idWZmZXIgPyBtX2J1ZmZlci0+ZGF0YSgpIDogMDsKICAgICB9CkBAIC03Nyw3ICs3OCw3IEBA
CiAgICAgUmVmUHRyPENTdHJpbmdCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAotYm9vbCBvcGVyYXRv
cj09KGNvbnN0IENTdHJpbmcmIGEsIGNvbnN0IENTdHJpbmcmIGIpOworSlNfRVhQT1JURURfU1lN
Qk9MIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDU3RyaW5nJiBhLCBjb25zdCBDU3RyaW5nJiBiKTsK
IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgQ1N0cmluZyYgYSwgY29uc3QgQ1N0cmluZyYg
YikgeyByZXR1cm4gIShhID09IGIpOyB9CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpJbmRleDogSmF2
YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nU3RhdGljcy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2
YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nU3RhdGljcy5jcHAJKHJldmlzaW9uIDYxMzI3KQor
KysgSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nU3RhdGljcy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ5LDEzICs0OSwxMyBAQAogICAgIHJldHVybiAmZW1wdHlTdHJpbmc7CiB9CiAKLUpT
X0VYUE9SVERBVEEgREVGSU5FX0dMT0JBTChBdG9taWNTdHJpbmcsIG51bGxBdG9tKQotSlNfRVhQ
T1JUREFUQSBERUZJTkVfR0xPQkFMKEF0b21pY1N0cmluZywgZW1wdHlBdG9tLCAiIikKLUpTX0VY
UE9SVERBVEEgREVGSU5FX0dMT0JBTChBdG9taWNTdHJpbmcsIHRleHRBdG9tLCAiI3RleHQiKQot
SlNfRVhQT1JUREFUQSBERUZJTkVfR0xPQkFMKEF0b21pY1N0cmluZywgY29tbWVudEF0b20sICIj
Y29tbWVudCIpCi1KU19FWFBPUlREQVRBIERFRklORV9HTE9CQUwoQXRvbWljU3RyaW5nLCBzdGFy
QXRvbSwgIioiKQotSlNfRVhQT1JUREFUQSBERUZJTkVfR0xPQkFMKEF0b21pY1N0cmluZywgeG1s
QXRvbSwgInhtbCIpCi1KU19FWFBPUlREQVRBIERFRklORV9HTE9CQUwoQXRvbWljU3RyaW5nLCB4
bWxuc0F0b20sICJ4bWxucyIpCitKU19FWFBPUlRFRF9TWU1CT0wgREVGSU5FX0dMT0JBTChBdG9t
aWNTdHJpbmcsIG51bGxBdG9tKQorSlNfRVhQT1JURURfU1lNQk9MIERFRklORV9HTE9CQUwoQXRv
bWljU3RyaW5nLCBlbXB0eUF0b20sICIiKQorSlNfRVhQT1JURURfU1lNQk9MIERFRklORV9HTE9C
QUwoQXRvbWljU3RyaW5nLCB0ZXh0QXRvbSwgIiN0ZXh0IikKK0pTX0VYUE9SVEVEX1NZTUJPTCBE
RUZJTkVfR0xPQkFMKEF0b21pY1N0cmluZywgY29tbWVudEF0b20sICIjY29tbWVudCIpCitKU19F
WFBPUlRFRF9TWU1CT0wgREVGSU5FX0dMT0JBTChBdG9taWNTdHJpbmcsIHN0YXJBdG9tLCAiKiIp
CitKU19FWFBPUlRFRF9TWU1CT0wgREVGSU5FX0dMT0JBTChBdG9taWNTdHJpbmcsIHhtbEF0b20s
ICJ4bWwiKQorSlNfRVhQT1JURURfU1lNQk9MIERFRklORV9HTE9CQUwoQXRvbWljU3RyaW5nLCB4
bWxuc0F0b20sICJ4bWxucyIpCiAKIHZvaWQgQXRvbWljU3RyaW5nOjppbml0KCkKIHsKSW5kZXg6
IEphdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEph
dmFTY3JpcHRDb3JlL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5oCShyZXZpc2lvbiA2MTMyNykKKysr
IEphdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBA
IC00MCwyNyArNDAsMzEgQEAKIAogY2xhc3MgQXRvbWljU3RyaW5nIHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgdm9pZCBpbml0KCk7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIHN0YXRpYyB2b2lkIGlu
aXQoKTsKIAotICAgIEF0b21pY1N0cmluZygpIHsgfQotICAgIEF0b21pY1N0cmluZyhjb25zdCBj
aGFyKiBzKSA6IG1fc3RyaW5nKGFkZChzKSkgeyB9CisgICAgSlNfRVhQT1JURURfU1lNQk9MIEF0
b21pY1N0cmluZygpIHsgfQorICAgIC8vIGNvcHkgY29uc3RydWN0b3IgbmVlZHMgdG8gYmUgZXhw
bGljaXRseSBkZWZpbmVkIHNvIHdlIGNhbiBzcGVjaWZ5IHByb3BlciBkbGwgbGlua2FnZQorICAg
IEpTX0VYUE9SVEVEX1NZTUJPTCBBdG9taWNTdHJpbmcoY29uc3QgQXRvbWljU3RyaW5nJiBzKSA6
IG1fc3RyaW5nKHMubV9zdHJpbmcpIHsgfQorICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBBdG9taWNT
dHJpbmcoY29uc3QgY2hhciogcykgOiBtX3N0cmluZyhhZGQocykpIHsgfQogICAgIEF0b21pY1N0
cmluZyhjb25zdCBVQ2hhciogcywgdW5zaWduZWQgbGVuZ3RoKSA6IG1fc3RyaW5nKGFkZChzLCBs
ZW5ndGgpKSB7IH0KICAgICBBdG9taWNTdHJpbmcoY29uc3QgVUNoYXIqIHMsIHVuc2lnbmVkIGxl
bmd0aCwgdW5zaWduZWQgZXhpc3RpbmdIYXNoKSA6IG1fc3RyaW5nKGFkZChzLCBsZW5ndGgsIGV4
aXN0aW5nSGFzaCkpIHsgfQogICAgIEF0b21pY1N0cmluZyhjb25zdCBVQ2hhciogcykgOiBtX3N0
cmluZyhhZGQocykpIHsgfQogICAgIEFUT01JQ1NUUklOR19DT05WRVJTSU9OIEF0b21pY1N0cmlu
ZyhTdHJpbmdJbXBsKiBpbXApIDogbV9zdHJpbmcoYWRkKGltcCkpIHsgfQogICAgIEF0b21pY1N0
cmluZyhBdG9taWNTdHJpbmdJbXBsKiBpbXApIDogbV9zdHJpbmcoaW1wKSB7IH0KLSAgICBBVE9N
SUNTVFJJTkdfQ09OVkVSU0lPTiBBdG9taWNTdHJpbmcoY29uc3QgU3RyaW5nJiBzKSA6IG1fc3Ry
aW5nKGFkZChzLmltcGwoKSkpIHsgfQorICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBBVE9NSUNTVFJJ
TkdfQ09OVkVSU0lPTiBBdG9taWNTdHJpbmcoY29uc3QgU3RyaW5nJiBzKSA6IG1fc3RyaW5nKGFk
ZChzLmltcGwoKSkpIHsgfQogCiAgICAgLy8gSGFzaCB0YWJsZSBkZWxldGVkIHZhbHVlcywgd2hp
Y2ggYXJlIG9ubHkgY29uc3RydWN0ZWQgYW5kIG5ldmVyIGNvcGllZCBvciBkZXN0cm95ZWQuCi0g
ICAgQXRvbWljU3RyaW5nKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkgOiBtX3N0cmlu
ZyhXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkgeyB9Ci0gICAgYm9vbCBpc0hhc2hUYWJsZURl
bGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmlzSGFzaFRhYmxlRGVsZXRlZFZh
bHVlKCk7IH0KKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgQXRvbWljU3RyaW5nKFdURjo6SGFzaFRh
YmxlRGVsZXRlZFZhbHVlVHlwZSkgOiBtX3N0cmluZyhXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1
ZSkgeyB9CisgICAgSlNfRVhQT1JURURfU1lNQk9MIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFs
dWUoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9
CiAKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nSW1wbCogZmluZChjb25zdCBVQ2hhciogcywgdW5z
aWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBleGlzdGluZ0hhc2gpOworICAgIEpTX0VYUE9SVEVEX1NZ
TUJPTCB+QXRvbWljU3RyaW5nKCkgeyB9CiAKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgc3RhdGlj
IEF0b21pY1N0cmluZ0ltcGwqIGZpbmQoY29uc3QgVUNoYXIqIHMsIHVuc2lnbmVkIGxlbmd0aCwg
dW5zaWduZWQgZXhpc3RpbmdIYXNoKTsKKwogICAgIG9wZXJhdG9yIGNvbnN0IFN0cmluZyYoKSBj
b25zdCB7IHJldHVybiBtX3N0cmluZzsgfQogICAgIGNvbnN0IFN0cmluZyYgc3RyaW5nKCkgY29u
c3QgeyByZXR1cm4gbV9zdHJpbmc7IH07CiAKLSAgICBBdG9taWNTdHJpbmdJbXBsKiBpbXBsKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXRvbWljU3RyaW5nSW1wbCAqPihtX3N0cmluZy5p
bXBsKCkpOyB9CisgICAgSlNfRVhQT1JURURfU1lNQk9MIEF0b21pY1N0cmluZ0ltcGwqIGltcGwo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxBdG9taWNTdHJpbmdJbXBsICo+KG1fc3RyaW5n
LmltcGwoKSk7IH0KICAgICAKICAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycygpIGNvbnN0IHsg
cmV0dXJuIG1fc3RyaW5nLmNoYXJhY3RlcnMoKTsgfQogICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RyaW5nLmxlbmd0aCgpOyB9CkBAIC04NCw3ICs4OCw3IEBACiAgICAg
Ym9vbCBlbmRzV2l0aChjb25zdCBTdHJpbmcmIHMsIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IHRydWUp
IGNvbnN0CiAgICAgICAgIHsgcmV0dXJuIG1fc3RyaW5nLmVuZHNXaXRoKHMsIGNhc2VTZW5zaXRp
dmUpOyB9CiAgICAgCi0gICAgQXRvbWljU3RyaW5nIGxvd2VyKCkgY29uc3Q7CisgICAgSlNfRVhQ
T1JURURfU1lNQk9MIEF0b21pY1N0cmluZyBsb3dlcigpIGNvbnN0OwogICAgIEF0b21pY1N0cmlu
ZyB1cHBlcigpIGNvbnN0IHsgcmV0dXJuIEF0b21pY1N0cmluZyhpbXBsKCktPnVwcGVyKCkpOyB9
CiAgICAgCiAgICAgaW50IHRvSW50KGJvb2wqIG9rID0gMCkgY29uc3QgeyByZXR1cm4gbV9zdHJp
bmcudG9JbnQob2spOyB9CkBAIC0xMTAsMjQgKzExNCwzMiBAQAogICAgIG9wZXJhdG9yIFFTdHJp
bmcoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfQogI2VuZGlmCiAKKyAgICBKU19FWFBPUlRF
RF9TWU1CT0wgaW5saW5lIEF0b21pY1N0cmluZyYgb3BlcmF0b3I9KGNvbnN0IEF0b21pY1N0cmlu
ZyYgYSkgCisgICAgeyAKKyAgICAgICAgaWYgKHRoaXMgIT0gJmEpCisgICAgICAgICAgICBtX3N0
cmluZyA9IGEubV9zdHJpbmc7IAorICAgICAgICAKKyAgICAgICAgcmV0dXJuICp0aGlzOyAKKyAg
ICB9CisKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fc3RyaW5nOwogICAgIAotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChjb25zdCBjaGFyKik7Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8U3RyaW5nSW1wbD4gYWRkKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGQoY29uc3QgVUNoYXIqLCB1bnNpZ25l
ZCBsZW5ndGgsIHVuc2lnbmVkIGV4aXN0aW5nSGFzaCk7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
U3RyaW5nSW1wbD4gYWRkKGNvbnN0IFVDaGFyKik7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIHN0
YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChjb25zdCBjaGFyKik7CisgICAgSlNfRVhQ
T1JURURfU1lNQk9MIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChjb25zdCBVQ2hh
ciosIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIHN0YXRpYyBQYXNz
UmVmUHRyPFN0cmluZ0ltcGw+IGFkZChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCwgdW5z
aWduZWQgZXhpc3RpbmdIYXNoKTsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgc3RhdGljIFBhc3NS
ZWZQdHI8U3RyaW5nSW1wbD4gYWRkKGNvbnN0IFVDaGFyKik7CiAgICAgQUxXQVlTX0lOTElORSBQ
YXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChTdHJpbmdJbXBsKiByKQogICAgIHsKICAgICAgICAg
aWYgKCFyIHx8IHItPmlzQXRvbWljKCkpCiAgICAgICAgICAgICByZXR1cm4gcjsKICAgICAgICAg
cmV0dXJuIGFkZFNsb3dDYXNlKHIpOwogICAgIH0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJp
bmdJbXBsPiBhZGRTbG93Q2FzZShTdHJpbmdJbXBsKik7CisgICAgSlNfRVhQT1JURURfU1lNQk9M
IHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZFNsb3dDYXNlKFN0cmluZ0ltcGwqKTsK
IH07CiAKIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgQXRvbWljU3RyaW5nJiBhLCBjb25z
dCBBdG9taWNTdHJpbmcmIGIpIHsgcmV0dXJuIGEuaW1wbCgpID09IGIuaW1wbCgpOyB9Ci1ib29s
IG9wZXJhdG9yPT0oY29uc3QgQXRvbWljU3RyaW5nJiBhLCBjb25zdCBjaGFyKiBiKTsKK0pTX0VY
UE9SVEVEX1NZTUJPTCBib29sIG9wZXJhdG9yPT0oY29uc3QgQXRvbWljU3RyaW5nJiBhLCBjb25z
dCBjaGFyKiBiKTsKIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgQXRvbWljU3RyaW5nJiBh
LCBjb25zdCBTdHJpbmcmIGIpIHsgcmV0dXJuIGVxdWFsKGEuaW1wbCgpLCBiLmltcGwoKSk7IH0K
IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgY2hhciogYSwgY29uc3QgQXRvbWljU3RyaW5n
JiBiKSB7IHJldHVybiBiID09IGE7IH0KIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgU3Ry
aW5nJiBhLCBjb25zdCBBdG9taWNTdHJpbmcmIGIpIHsgcmV0dXJuIGVxdWFsKGEuaW1wbCgpLCBi
LmltcGwoKSk7IH0KQEAgLTE0NywxMyArMTU5LDEzIEBACiAvLyBEZWZpbmUgZXh0ZXJuYWwgZ2xv
YmFsIHZhcmlhYmxlcyBmb3IgdGhlIGNvbW1vbmx5IHVzZWQgYXRvbWljIHN0cmluZ3MuCiAvLyBU
aGVzZSBhcmUgb25seSB1c2FibGUgZnJvbSB0aGUgbWFpbiB0aHJlYWQuCiAjaWZuZGVmIEFUT01J
Q1NUUklOR19ISURFX0dMT0JBTFMKLSAgICBleHRlcm4gY29uc3QgSlNfRVhQT1JUREFUQSBBdG9t
aWNTdHJpbmcgbnVsbEF0b207Ci0gICAgZXh0ZXJuIGNvbnN0IEpTX0VYUE9SVERBVEEgQXRvbWlj
U3RyaW5nIGVtcHR5QXRvbTsKLSAgICBleHRlcm4gY29uc3QgSlNfRVhQT1JUREFUQSBBdG9taWNT
dHJpbmcgdGV4dEF0b207Ci0gICAgZXh0ZXJuIGNvbnN0IEpTX0VYUE9SVERBVEEgQXRvbWljU3Ry
aW5nIGNvbW1lbnRBdG9tOwotICAgIGV4dGVybiBjb25zdCBKU19FWFBPUlREQVRBIEF0b21pY1N0
cmluZyBzdGFyQXRvbTsKLSAgICBleHRlcm4gY29uc3QgSlNfRVhQT1JUREFUQSBBdG9taWNTdHJp
bmcgeG1sQXRvbTsKLSAgICBleHRlcm4gY29uc3QgSlNfRVhQT1JUREFUQSBBdG9taWNTdHJpbmcg
eG1sbnNBdG9tOworZXh0ZXJuIGNvbnN0IEpTX0VYUE9SVEVEX1NZTUJPTCBBdG9taWNTdHJpbmcg
bnVsbEF0b207CitleHRlcm4gY29uc3QgSlNfRVhQT1JURURfU1lNQk9MIEF0b21pY1N0cmluZyBl
bXB0eUF0b207CitleHRlcm4gY29uc3QgSlNfRVhQT1JURURfU1lNQk9MIEF0b21pY1N0cmluZyB0
ZXh0QXRvbTsKK2V4dGVybiBjb25zdCBKU19FWFBPUlRFRF9TWU1CT0wgQXRvbWljU3RyaW5nIGNv
bW1lbnRBdG9tOworZXh0ZXJuIGNvbnN0IEpTX0VYUE9SVEVEX1NZTUJPTCBBdG9taWNTdHJpbmcg
c3RhckF0b207CitleHRlcm4gY29uc3QgSlNfRVhQT1JURURfU1lNQk9MIEF0b21pY1N0cmluZyB4
bWxBdG9tOworZXh0ZXJuIGNvbnN0IEpTX0VYUE9SVEVEX1NZTUJPTCBBdG9taWNTdHJpbmcgeG1s
bnNBdG9tOwogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IEphdmFTY3Jp
cHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3Jl
L3d0Zi90ZXh0L1dURlN0cmluZy5oCShyZXZpc2lvbiA2MTMyNykKKysrIEphdmFTY3JpcHRDb3Jl
L3d0Zi90ZXh0L1dURlN0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC02NSwxOSArNjUsMTkgQEAK
IC8vIERlY2xhcmF0aW9ucyBvZiBzdHJpbmcgb3BlcmF0aW9ucwogCiBib29sIGNoYXJhY3RlcnNB
cmVBbGxBU0NJSShjb25zdCBVQ2hhciosIHNpemVfdCk7Ci1pbnQgY2hhcmFjdGVyc1RvSW50U3Ry
aWN0KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApOwot
dW5zaWduZWQgY2hhcmFjdGVyc1RvVUludFN0cmljdChjb25zdCBVQ2hhciosIHNpemVfdCwgYm9v
bCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKTsKK0pTX0VYUE9SVEVEX1NZTUJPTCBpbnQgY2hhcmFj
dGVyc1RvSW50U3RyaWN0KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDAsIGludCBi
YXNlID0gMTApOworSlNfRVhQT1JURURfU1lNQk9MIHVuc2lnbmVkIGNoYXJhY3RlcnNUb1VJbnRT
dHJpY3QoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCk7
CiBpbnQ2NF90IGNoYXJhY3RlcnNUb0ludDY0U3RyaWN0KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBi
b29sKiBvayA9IDAsIGludCBiYXNlID0gMTApOwogdWludDY0X3QgY2hhcmFjdGVyc1RvVUludDY0
U3RyaWN0KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDAsIGludCBiYXNlID0gMTAp
OwogaW50cHRyX3QgY2hhcmFjdGVyc1RvSW50UHRyU3RyaWN0KGNvbnN0IFVDaGFyKiwgc2l6ZV90
LCBib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApOwogCi1pbnQgY2hhcmFjdGVyc1RvSW50KGNv
bnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDApOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdh
cmJhZ2UKK0pTX0VYUE9SVEVEX1NZTUJPTCBpbnQgY2hhcmFjdGVyc1RvSW50KGNvbnN0IFVDaGFy
Kiwgc2l6ZV90LCBib29sKiBvayA9IDApOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKIHVu
c2lnbmVkIGNoYXJhY3RlcnNUb1VJbnQoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0g
MCk7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQogaW50NjRfdCBjaGFyYWN0ZXJzVG9JbnQ2
NChjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSAwKTsgLy8gaWdub3JlcyB0cmFpbGlu
ZyBnYXJiYWdlCiB1aW50NjRfdCBjaGFyYWN0ZXJzVG9VSW50NjQoY29uc3QgVUNoYXIqLCBzaXpl
X3QsIGJvb2wqIG9rID0gMCk7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQogaW50cHRyX3Qg
Y2hhcmFjdGVyc1RvSW50UHRyKGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDApOyAv
LyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKIAotZG91YmxlIGNoYXJhY3RlcnNUb0RvdWJsZShj
b25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSAwKTsKK0pTX0VYUE9SVEVEX1NZTUJPTCBk
b3VibGUgY2hhcmFjdGVyc1RvRG91YmxlKGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9
IDApOwogZmxvYXQgY2hhcmFjdGVyc1RvRmxvYXQoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wq
IG9rID0gMCk7CiAKIGludCBmaW5kKGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBVQ2hhciwgaW50IHN0
YXJ0UG9zaXRpb24gPSAwKTsKQEAgLTg1LDE0ICs4NSwxNSBAQAogCiBjbGFzcyBTdHJpbmcgewog
cHVibGljOgotICAgIFN0cmluZygpIHsgfSAvLyBnaXZlcyBudWxsIHN0cmluZywgZGlzdGluZ3Vp
c2hhYmxlIGZyb20gYW4gZW1wdHkgc3RyaW5nCisgICAgSlNfRVhQT1JURURfU1lNQk9MIFN0cmlu
ZygpIHsgfSAvLyBnaXZlcyBudWxsIHN0cmluZywgZGlzdGluZ3Vpc2hhYmxlIGZyb20gYW4gZW1w
dHkgc3RyaW5nCisgICAgSlNfRVhQT1JURURfU1lNQk9MIH5TdHJpbmcoKSB7IH0KICAgICBTdHJp
bmcoY29uc3QgVUNoYXIqIHN0ciwgdW5zaWduZWQgbGVuKQogICAgIHsKICAgICAgICAgaWYgKCFz
dHIpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIG1faW1wbCA9IFN0cmluZ0ltcGw6OmNy
ZWF0ZShzdHIsIGxlbik7CiAgICAgfQotICAgIFN0cmluZyhjb25zdCBjaGFyKiBzdHIpCisgICAg
SlNfRVhQT1JURURfU1lNQk9MIFN0cmluZyhjb25zdCBjaGFyKiBzdHIpCiAgICAgewogICAgICAg
ICBpZiAoIXN0cikKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEwNCwxNiArMTA1LDE4IEBACiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIG1faW1wbCA9IFN0cmluZ0ltcGw6OmNyZWF0ZShz
dHIsIGxlbmd0aCk7CiAgICAgfQotICAgIFN0cmluZyhjb25zdCBVQ2hhciopOyAvLyBTcGVjaWZp
Y2FsbHkgZm9yIG51bGwgdGVybWluYXRlZCBVVEYtMTYKLSAgICBTdHJpbmcoU3RyaW5nSW1wbCog
aSkgOiBtX2ltcGwoaSkgeyB9Ci0gICAgU3RyaW5nKFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gaSkg
OiBtX2ltcGwoaSkgeyB9CisgICAgSlNfRVhQT1JURURfU1lNQk9MIFN0cmluZyhjb25zdCBVQ2hh
ciopOyAvLyBTcGVjaWZpY2FsbHkgZm9yIG51bGwgdGVybWluYXRlZCBVVEYtMTYKKyAgICAvLyBj
b3B5IGNvbnN0cnVjdG9yIG5lZWRzIHRvIGJlIGV4cGxpY2l0bHkgZGVmaW5lZCBzbyB3ZSBjYW4g
c3BlY2lmeSBwcm9wZXIgZGxsIGxpbmthZ2UKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgU3RyaW5n
KGNvbnN0IFN0cmluZyYgc3RyKSA6IG1faW1wbChzdHIubV9pbXBsKSB7IH0KKyAgICBKU19FWFBP
UlRFRF9TWU1CT0wgU3RyaW5nKFN0cmluZ0ltcGwqIGkpIDogbV9pbXBsKGkpIHsgfQorICAgIEpT
X0VYUE9SVEVEX1NZTUJPTCBTdHJpbmcoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBpKSA6IG1faW1w
bChpKSB7IH0KICAgICBTdHJpbmcoUmVmUHRyPFN0cmluZ0ltcGw+IGkpIDogbV9pbXBsKGkpIHsg
fQogCiAgICAgdm9pZCBzd2FwKFN0cmluZyYgbykgeyBtX2ltcGwuc3dhcChvLm1faW1wbCk7IH0K
IAogICAgIC8vIEhhc2ggdGFibGUgZGVsZXRlZCB2YWx1ZXMsIHdoaWNoIGFyZSBvbmx5IGNvbnN0
cnVjdGVkIGFuZCBuZXZlciBjb3BpZWQgb3IgZGVzdHJveWVkLgogICAgIFN0cmluZyhXVEY6Okhh
c2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpIDogbV9pbXBsKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZh
bHVlKSB7IH0KLSAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1
cm4gbV9pbXBsLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KKyAgICBKU19FWFBPUlRFRF9T
WU1CT0wgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1w
bC5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9CiAKICAgICBzdGF0aWMgU3RyaW5nIGFkb3B0
KFN0cmluZ0J1ZmZlciYgYnVmZmVyKSB7IHJldHVybiBTdHJpbmdJbXBsOjphZG9wdChidWZmZXIp
OyB9CiAgICAgc3RhdGljIFN0cmluZyBhZG9wdChWZWN0b3I8VUNoYXI+JiB2ZWN0b3IpIHsgcmV0
dXJuIFN0cmluZ0ltcGw6OmFkb3B0KHZlY3Rvcik7IH0KQEAgLTEzMiw3ICsxMzUsNyBAQAogICAg
ICAgICByZXR1cm4gbV9pbXBsLT5jaGFyYWN0ZXJzKCk7CiAgICAgfQogCi0gICAgY29uc3QgVUNo
YXIqIGNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCk7CisgICAgSlNfRVhQT1JURURfU1lN
Qk9MIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpOwogICAgIAog
ICAgIFVDaGFyIG9wZXJhdG9yW10odW5zaWduZWQgaSkgY29uc3QgLy8gaWYgaSA+PSBsZW5ndGgo
KSwgcmV0dXJucyAwCiAgICAgewpAQCAtMTQwLDcgKzE0Myw3IEBACiAgICAgICAgICAgICByZXR1
cm4gMDsKICAgICAgICAgcmV0dXJuIG1faW1wbC0+Y2hhcmFjdGVycygpW2ldOwogICAgIH0KLSAg
ICBVQ2hhcjMyIGNoYXJhY3RlclN0YXJ0aW5nQXQodW5zaWduZWQpIGNvbnN0OyAvLyBEaXR0by4K
KyAgICBKU19FWFBPUlRFRF9TWU1CT0wgVUNoYXIzMiBjaGFyYWN0ZXJTdGFydGluZ0F0KHVuc2ln
bmVkKSBjb25zdDsgLy8gRGl0dG8uCiAgICAgCiAgICAgYm9vbCBjb250YWlucyhVQ2hhciBjKSBj
b25zdCB7IHJldHVybiBmaW5kKGMpICE9IC0xOyB9CiAgICAgYm9vbCBjb250YWlucyhjb25zdCBj
aGFyKiBzdHIsIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IHRydWUpIGNvbnN0IHsgcmV0dXJuIGZpbmQo
c3RyLCAwLCBjYXNlU2Vuc2l0aXZlKSAhPSAtMTsgfQpAQCAtMTY1LDExICsxNjgsMTEgQEAKICAg
ICBib29sIGVuZHNXaXRoKGNvbnN0IFN0cmluZyYgcywgYm9vbCBjYXNlU2Vuc2l0aXZlID0gdHJ1
ZSkgY29uc3QKICAgICAgICAgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5lbmRzV2l0aChzLmlt
cGwoKSwgY2FzZVNlbnNpdGl2ZSkgOiBzLmlzRW1wdHkoKTsgfQogCi0gICAgdm9pZCBhcHBlbmQo
Y29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBhcHBlbmQoY2hhcik7Ci0gICAgdm9pZCBhcHBlbmQo
VUNoYXIpOwotICAgIHZvaWQgYXBwZW5kKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsK
LSAgICB2b2lkIGluc2VydChjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBwb3MpOworICAgIEpTX0VY
UE9SVEVEX1NZTUJPTCB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmKTsKKyAgICBKU19FWFBPUlRF
RF9TWU1CT0wgdm9pZCBhcHBlbmQoY2hhcik7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIHZvaWQg
YXBwZW5kKFVDaGFyKTsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBhcHBlbmQoY29uc3Qg
VUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIGlu
c2VydChjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBwb3MpOwogICAgIHZvaWQgaW5zZXJ0KGNvbnN0
IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBwb3MpOwogCiAgICAgU3RyaW5nJiBy
ZXBsYWNlKFVDaGFyIGEsIFVDaGFyIGIpIHsgaWYgKG1faW1wbCkgbV9pbXBsID0gbV9pbXBsLT5y
ZXBsYWNlKGEsIGIpOyByZXR1cm4gKnRoaXM7IH0KQEAgLTE4MSw3NSArMTg0LDc1IEBACiAgICAg
dm9pZCBtYWtlVXBwZXIoKSB7IGlmIChtX2ltcGwpIG1faW1wbCA9IG1faW1wbC0+dXBwZXIoKTsg
fQogICAgIHZvaWQgbWFrZVNlY3VyZShVQ2hhciBhQ2hhcikgeyBpZiAobV9pbXBsKSBtX2ltcGwg
PSBtX2ltcGwtPnNlY3VyZShhQ2hhcik7IH0KIAotICAgIHZvaWQgdHJ1bmNhdGUodW5zaWduZWQg
bGVuKTsKLSAgICB2b2lkIHJlbW92ZSh1bnNpZ25lZCBwb3MsIGludCBsZW4gPSAxKTsKKyAgICBK
U19FWFBPUlRFRF9TWU1CT0wgdm9pZCB0cnVuY2F0ZSh1bnNpZ25lZCBsZW4pOworICAgIEpTX0VY
UE9SVEVEX1NZTUJPTCB2b2lkIHJlbW92ZSh1bnNpZ25lZCBwb3MsIGludCBsZW4gPSAxKTsKIAot
ICAgIFN0cmluZyBzdWJzdHJpbmcodW5zaWduZWQgcG9zLCB1bnNpZ25lZCBsZW4gPSBVSU5UX01B
WCkgY29uc3Q7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIFN0cmluZyBzdWJzdHJpbmcodW5zaWdu
ZWQgcG9zLCB1bnNpZ25lZCBsZW4gPSBVSU5UX01BWCkgY29uc3Q7CiAgICAgU3RyaW5nIGxlZnQo
dW5zaWduZWQgbGVuKSBjb25zdCB7IHJldHVybiBzdWJzdHJpbmcoMCwgbGVuKTsgfQogICAgIFN0
cmluZyByaWdodCh1bnNpZ25lZCBsZW4pIGNvbnN0IHsgcmV0dXJuIHN1YnN0cmluZyhsZW5ndGgo
KSAtIGxlbiwgbGVuKTsgfQogCiAgICAgLy8gUmV0dXJucyBhIGxvd2VyY2FzZS91cHBlcmNhc2Ug
dmVyc2lvbiBvZiB0aGUgc3RyaW5nCi0gICAgU3RyaW5nIGxvd2VyKCkgY29uc3Q7Ci0gICAgU3Ry
aW5nIHVwcGVyKCkgY29uc3Q7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIFN0cmluZyBsb3dlcigp
IGNvbnN0OworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBTdHJpbmcgdXBwZXIoKSBjb25zdDsKIAot
ICAgIFN0cmluZyBzdHJpcFdoaXRlU3BhY2UoKSBjb25zdDsKLSAgICBTdHJpbmcgc2ltcGxpZnlX
aGl0ZVNwYWNlKCkgY29uc3Q7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIFN0cmluZyBzdHJpcFdo
aXRlU3BhY2UoKSBjb25zdDsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgU3RyaW5nIHNpbXBsaWZ5
V2hpdGVTcGFjZSgpIGNvbnN0OwogCi0gICAgU3RyaW5nIHJlbW92ZUNoYXJhY3RlcnMoQ2hhcmFj
dGVyTWF0Y2hGdW5jdGlvblB0cikgY29uc3Q7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIFN0cmlu
ZyByZW1vdmVDaGFyYWN0ZXJzKENoYXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIpIGNvbnN0OwogCiAg
ICAgLy8gUmV0dXJuIHRoZSBzdHJpbmcgd2l0aCBjYXNlIGZvbGRlZCBmb3IgY2FzZSBpbnNlbnNp
dGl2ZSBjb21wYXJpc29uLgotICAgIFN0cmluZyBmb2xkQ2FzZSgpIGNvbnN0OworICAgIEpTX0VY
UE9SVEVEX1NZTUJPTCBTdHJpbmcgZm9sZENhc2UoKSBjb25zdDsKIAogICAgIHN0YXRpYyBTdHJp
bmcgbnVtYmVyKHNob3J0KTsKLSAgICBzdGF0aWMgU3RyaW5nIG51bWJlcih1bnNpZ25lZCBzaG9y
dCk7Ci0gICAgc3RhdGljIFN0cmluZyBudW1iZXIoaW50KTsKLSAgICBzdGF0aWMgU3RyaW5nIG51
bWJlcih1bnNpZ25lZCk7Ci0gICAgc3RhdGljIFN0cmluZyBudW1iZXIobG9uZyk7Ci0gICAgc3Rh
dGljIFN0cmluZyBudW1iZXIodW5zaWduZWQgbG9uZyk7Ci0gICAgc3RhdGljIFN0cmluZyBudW1i
ZXIobG9uZyBsb25nKTsKLSAgICBzdGF0aWMgU3RyaW5nIG51bWJlcih1bnNpZ25lZCBsb25nIGxv
bmcpOwotICAgIHN0YXRpYyBTdHJpbmcgbnVtYmVyKGRvdWJsZSk7CisgICAgSlNfRVhQT1JURURf
U1lNQk9MIHN0YXRpYyBTdHJpbmcgbnVtYmVyKHVuc2lnbmVkIHNob3J0KTsKKyAgICBKU19FWFBP
UlRFRF9TWU1CT0wgc3RhdGljIFN0cmluZyBudW1iZXIoaW50KTsKKyAgICBKU19FWFBPUlRFRF9T
WU1CT0wgc3RhdGljIFN0cmluZyBudW1iZXIodW5zaWduZWQpOworICAgIEpTX0VYUE9SVEVEX1NZ
TUJPTCBzdGF0aWMgU3RyaW5nIG51bWJlcihsb25nKTsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wg
c3RhdGljIFN0cmluZyBudW1iZXIodW5zaWduZWQgbG9uZyk7CisgICAgSlNfRVhQT1JURURfU1lN
Qk9MIHN0YXRpYyBTdHJpbmcgbnVtYmVyKGxvbmcgbG9uZyk7CisgICAgSlNfRVhQT1JURURfU1lN
Qk9MIHN0YXRpYyBTdHJpbmcgbnVtYmVyKHVuc2lnbmVkIGxvbmcgbG9uZyk7CisgICAgSlNfRVhQ
T1JURURfU1lNQk9MIHN0YXRpYyBTdHJpbmcgbnVtYmVyKGRvdWJsZSk7CiAgICAgCi0gICAgc3Rh
dGljIFN0cmluZyBmb3JtYXQoY29uc3QgY2hhciAqLCAuLi4pIFdURl9BVFRSSUJVVEVfUFJJTlRG
KDEsIDIpOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0aWMgU3RyaW5nIGZvcm1hdChjb25z
dCBjaGFyICosIC4uLikgV1RGX0FUVFJJQlVURV9QUklOVEYoMSwgMik7CiAKICAgICAvLyBSZXR1
cm5zIGFuIHVuaW5pdGlhbGl6ZWQgc3RyaW5nLiBUaGUgY2hhcmFjdGVycyBuZWVkcyB0byBiZSB3
cml0dGVuCiAgICAgLy8gaW50byB0aGUgYnVmZmVyIHJldHVybmVkIGluIGRhdGEgYmVmb3JlIHRo
ZSByZXR1cm5lZCBzdHJpbmcgaXMgdXNlZC4KICAgICAvLyBGYWlsdXJlIHRvIGRvIHRoaXMgd2ls
bCBoYXZlIHVucHJlZGljdGFibGUgcmVzdWx0cy4KICAgICBzdGF0aWMgU3RyaW5nIGNyZWF0ZVVu
aW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoLCBVQ2hhciomIGRhdGEpIHsgcmV0dXJuIFN0cmlu
Z0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBkYXRhKTsgfQogCi0gICAgdm9pZCBz
cGxpdChjb25zdCBTdHJpbmcmIHNlcGFyYXRvciwgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkgY29u
c3Q7Ci0gICAgdm9pZCBzcGxpdChjb25zdCBTdHJpbmcmIHNlcGFyYXRvciwgYm9vbCBhbGxvd0Vt
cHR5RW50cmllcywgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkgY29uc3Q7Ci0gICAgdm9pZCBzcGxp
dChVQ2hhciBzZXBhcmF0b3IsIFZlY3RvcjxTdHJpbmc+JiByZXN1bHQpIGNvbnN0OwotICAgIHZv
aWQgc3BsaXQoVUNoYXIgc2VwYXJhdG9yLCBib29sIGFsbG93RW1wdHlFbnRyaWVzLCBWZWN0b3I8
U3RyaW5nPiYgcmVzdWx0KSBjb25zdDsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBzcGxp
dChjb25zdCBTdHJpbmcmIHNlcGFyYXRvciwgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkgY29uc3Q7
CisgICAgSlNfRVhQT1JURURfU1lNQk9MIHZvaWQgc3BsaXQoY29uc3QgU3RyaW5nJiBzZXBhcmF0
b3IsIGJvb2wgYWxsb3dFbXB0eUVudHJpZXMsIFZlY3RvcjxTdHJpbmc+JiByZXN1bHQpIGNvbnN0
OworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIHNwbGl0KFVDaGFyIHNlcGFyYXRvciwgVmVj
dG9yPFN0cmluZz4mIHJlc3VsdCkgY29uc3Q7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIHZvaWQg
c3BsaXQoVUNoYXIgc2VwYXJhdG9yLCBib29sIGFsbG93RW1wdHlFbnRyaWVzLCBWZWN0b3I8U3Ry
aW5nPiYgcmVzdWx0KSBjb25zdDsKIAotICAgIGludCB0b0ludFN0cmljdChib29sKiBvayA9IDAs
IGludCBiYXNlID0gMTApIGNvbnN0OwotICAgIHVuc2lnbmVkIHRvVUludFN0cmljdChib29sKiBv
ayA9IDAsIGludCBiYXNlID0gMTApIGNvbnN0OworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBpbnQg
dG9JbnRTdHJpY3QoYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKSBjb25zdDsKKyAgICBKU19F
WFBPUlRFRF9TWU1CT0wgdW5zaWduZWQgdG9VSW50U3RyaWN0KGJvb2wqIG9rID0gMCwgaW50IGJh
c2UgPSAxMCkgY29uc3Q7CiAgICAgaW50NjRfdCB0b0ludDY0U3RyaWN0KGJvb2wqIG9rID0gMCwg
aW50IGJhc2UgPSAxMCkgY29uc3Q7CiAgICAgdWludDY0X3QgdG9VSW50NjRTdHJpY3QoYm9vbCog
b2sgPSAwLCBpbnQgYmFzZSA9IDEwKSBjb25zdDsKICAgICBpbnRwdHJfdCB0b0ludFB0clN0cmlj
dChib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApIGNvbnN0OwogCi0gICAgaW50IHRvSW50KGJv
b2wqIG9rID0gMCkgY29uc3Q7Ci0gICAgdW5zaWduZWQgdG9VSW50KGJvb2wqIG9rID0gMCkgY29u
c3Q7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIGludCB0b0ludChib29sKiBvayA9IDApIGNvbnN0
OworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB1bnNpZ25lZCB0b1VJbnQoYm9vbCogb2sgPSAwKSBj
b25zdDsKICAgICBpbnQ2NF90IHRvSW50NjQoYm9vbCogb2sgPSAwKSBjb25zdDsKLSAgICB1aW50
NjRfdCB0b1VJbnQ2NChib29sKiBvayA9IDApIGNvbnN0OwotICAgIGludHB0cl90IHRvSW50UHRy
KGJvb2wqIG9rID0gMCkgY29uc3Q7Ci0gICAgZG91YmxlIHRvRG91YmxlKGJvb2wqIG9rID0gMCkg
Y29uc3Q7Ci0gICAgZmxvYXQgdG9GbG9hdChib29sKiBvayA9IDApIGNvbnN0OworICAgIEpTX0VY
UE9SVEVEX1NZTUJPTCB1aW50NjRfdCB0b1VJbnQ2NChib29sKiBvayA9IDApIGNvbnN0OworICAg
IEpTX0VYUE9SVEVEX1NZTUJPTCBpbnRwdHJfdCB0b0ludFB0cihib29sKiBvayA9IDApIGNvbnN0
OworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBkb3VibGUgdG9Eb3VibGUoYm9vbCogb2sgPSAwKSBj
b25zdDsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgZmxvYXQgdG9GbG9hdChib29sKiBvayA9IDAp
IGNvbnN0OwogCiAgICAgYm9vbCBwZXJjZW50YWdlKGludCYgcGVyY2VudGFnZSkgY29uc3Q7CiAK
ICAgICAvLyBSZXR1cm5zIGEgU3RyaW5nSW1wbCBzdWl0YWJsZSBmb3IgdXNlIG9uIGFub3RoZXIg
dGhyZWFkLgotICAgIFN0cmluZyBjcm9zc1RocmVhZFN0cmluZygpIGNvbnN0OworICAgIEpTX0VY
UE9SVEVEX1NZTUJPTCBTdHJpbmcgY3Jvc3NUaHJlYWRTdHJpbmcoKSBjb25zdDsKICAgICAvLyBN
YWtlcyBhIGRlZXAgY29weS4gSGVscGZ1bCBvbmx5IGlmIHlvdSBuZWVkIHRvIHVzZSBhIFN0cmlu
ZyBvbiBhbm90aGVyIHRocmVhZAogICAgIC8vICh1c2UgY3Jvc3NUaHJlYWRTdHJpbmcgaWYgdGhl
IG1ldGhvZCBjYWxsIGRvZXNuJ3QgbmVlZCB0byBiZSB0aHJlYWRzYWZlKS4KICAgICAvLyBTaW5j
ZSB0aGUgdW5kZXJseWluZyBTdHJpbmdJbXBsIG9iamVjdHMgYXJlIGltbXV0YWJsZSwgdGhlcmUn
cyBubyBvdGhlciByZWFzb24KICAgICAvLyB0byBldmVyIHByZWZlciBjb3B5KCkgb3ZlciBwbGFp
biBvbGQgYXNzaWdubWVudC4KLSAgICBTdHJpbmcgdGhyZWFkc2FmZUNvcHkoKSBjb25zdDsKKyAg
ICBKU19FWFBPUlRFRF9TWU1CT0wgU3RyaW5nIHRocmVhZHNhZmVDb3B5KCkgY29uc3Q7CiAKICAg
ICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuICFtX2ltcGw7IH0KLSAgICBBTFdBWVNfSU5M
SU5FIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX2ltcGwgfHwgIW1faW1wbC0+bGVu
Z3RoKCk7IH0KKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgQUxXQVlTX0lOTElORSBib29sIGlzRW1w
dHkoKSBjb25zdCB7IHJldHVybiAhbV9pbXBsIHx8ICFtX2ltcGwtPmxlbmd0aCgpOyB9CiAKLSAg
ICBTdHJpbmdJbXBsKiBpbXBsKCkgY29uc3QgeyByZXR1cm4gbV9pbXBsLmdldCgpOyB9CisgICAg
SlNfRVhQT1JURURfU1lNQk9MIFN0cmluZ0ltcGwqIGltcGwoKSBjb25zdCB7IHJldHVybiBtX2lt
cGwuZ2V0KCk7IH0KIAogI2lmIFBMQVRGT1JNKENGKQogICAgIFN0cmluZyhDRlN0cmluZ1JlZik7
CkBAIC0yNzEsOCArMjc0LDggQEAKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oV1gpCi0gICAgU3Ry
aW5nKGNvbnN0IHd4U3RyaW5nJik7Ci0gICAgb3BlcmF0b3Igd3hTdHJpbmcoKSBjb25zdDsKKyAg
ICBKU19FWFBPUlRFRF9TWU1CT0wgU3RyaW5nKGNvbnN0IHd4U3RyaW5nJik7CisgICAgSlNfRVhQ
T1JURURfU1lNQk9MIG9wZXJhdG9yIHd4U3RyaW5nKCkgY29uc3Q7CiAjZW5kaWYKIAogI2lmIFBM
QVRGT1JNKEhBSUtVKQpAQCAtMjgwLDIyICsyODMsMzAgQEAKICAgICBvcGVyYXRvciBCU3RyaW5n
KCkgY29uc3Q7CiAjZW5kaWYKIAotICAgIFZlY3RvcjxjaGFyPiBhc2NpaSgpIGNvbnN0OworICAg
IEpTX0VYUE9SVEVEX1NZTUJPTCBWZWN0b3I8Y2hhcj4gYXNjaWkoKSBjb25zdDsKIAotICAgIENT
dHJpbmcgbGF0aW4xKCkgY29uc3Q7Ci0gICAgQ1N0cmluZyB1dGY4KCkgY29uc3Q7CisgICAgSlNf
RVhQT1JURURfU1lNQk9MIENTdHJpbmcgbGF0aW4xKCkgY29uc3Q7CisgICAgSlNfRVhQT1JURURf
U1lNQk9MIENTdHJpbmcgdXRmOCgpIGNvbnN0OwogCi0gICAgc3RhdGljIFN0cmluZyBmcm9tVVRG
OChjb25zdCBjaGFyKiwgc2l6ZV90KTsKLSAgICBzdGF0aWMgU3RyaW5nIGZyb21VVEY4KGNvbnN0
IGNoYXIqKTsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgc3RhdGljIFN0cmluZyBmcm9tVVRGOChj
b25zdCBjaGFyKiwgc2l6ZV90KTsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgc3RhdGljIFN0cmlu
ZyBmcm9tVVRGOChjb25zdCBjaGFyKik7CiAKICAgICAvLyBUcmllcyB0byBjb252ZXJ0IHRoZSBw
YXNzZWQgaW4gc3RyaW5nIHRvIFVURi04LCBidXQgd2lsbCBmYWxsIGJhY2sgdG8gTGF0aW4tMSBp
ZiB0aGUgc3RyaW5nIGlzIG5vdCB2YWxpZCBVVEYtOC4KLSAgICBzdGF0aWMgU3RyaW5nIGZyb21V
VEY4V2l0aExhdGluMUZhbGxiYWNrKGNvbnN0IGNoYXIqLCBzaXplX3QpOworICAgIEpTX0VYUE9S
VEVEX1NZTUJPTCBzdGF0aWMgU3RyaW5nIGZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNrKGNvbnN0
IGNoYXIqLCBzaXplX3QpOwogICAgIAogICAgIC8vIERldGVybWluZXMgdGhlIHdyaXRpbmcgZGly
ZWN0aW9uIHVzaW5nIHRoZSBVbmljb2RlIEJpZGkgQWxnb3JpdGhtIHJ1bGVzIFAyIGFuZCBQMy4K
ICAgICBXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbiBkZWZhdWx0V3JpdGluZ0RpcmVjdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oKSA6
IFdURjo6VW5pY29kZTo6TGVmdFRvUmlnaHQ7IH0KIAogICAgIGJvb2wgY29udGFpbnNPbmx5QVND
SUkoKSBjb25zdCB7IHJldHVybiBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoY2hhcmFjdGVycygpLCBs
ZW5ndGgoKSk7IH0KIAorICAgIC8vIG9wZXJhdG9yPSBuZWVkcyB0byBiZSBleHBsaWNpdGx5IGRl
ZmluZWQgdG8gc3BlY2lmeSBkbGwgbGlua2FnZQorICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBpbmxp
bmUgU3RyaW5nJiBvcGVyYXRvcj0oY29uc3QgU3RyaW5nJiBhKSAKKyAgICB7CisgICAgICAgIGlm
ICh0aGlzICE9ICZhKQorICAgICAgICAgICAgbV9pbXBsID0gYS5tX2ltcGw7CisgICAgICAgIHJl
dHVybiAqdGhpczsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgUmVmUHRyPFN0cmluZ0ltcGw+IG1f
aW1wbDsKIH07CkBAIC0zMDUsOSArMzE2LDkgQEAKIFFEYXRhU3RyZWFtJiBvcGVyYXRvcj4+KFFE
YXRhU3RyZWFtJiBzdHJlYW0sIFN0cmluZyYgc3RyKTsKICNlbmRpZgogCi1TdHJpbmcgb3BlcmF0
b3IrKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOwotU3RyaW5nIG9wZXJhdG9yKyhjb25z
dCBTdHJpbmcmLCBjb25zdCBjaGFyKik7Ci1TdHJpbmcgb3BlcmF0b3IrKGNvbnN0IGNoYXIqLCBj
b25zdCBTdHJpbmcmKTsKK0pTX0VYUE9SVEVEX1NZTUJPTCBTdHJpbmcgb3BlcmF0b3IrKGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOworSlNfRVhQT1JURURfU1lNQk9MIFN0cmluZyBvcGVy
YXRvcisoY29uc3QgU3RyaW5nJiwgY29uc3QgY2hhciopOworSlNfRVhQT1JURURfU1lNQk9MIFN0
cmluZyBvcGVyYXRvcisoY29uc3QgY2hhciosIGNvbnN0IFN0cmluZyYpOwogCiBpbmxpbmUgU3Ry
aW5nJiBvcGVyYXRvcis9KFN0cmluZyYgYSwgY29uc3QgU3RyaW5nJiBiKSB7IGEuYXBwZW5kKGIp
OyByZXR1cm4gYTsgfQogCkBAIC0zNTEsNyArMzYyLDcgQEAKICAgICByZXR1cm4gIShvcmVkICYg
MHhGRjgwKTsKIH0KIAotaW50IGNvZGVQb2ludENvbXBhcmUoY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJik7CitKU19FWFBPUlRFRF9TWU1CT0wgaW50IGNvZGVQb2ludENvbXBhcmUoY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJik7CiAKIGlubGluZSBpbnQgZmluZChjb25zdCBVQ2hhciog
Y2hhcmFjdGVycywgc2l6ZV90IGxlbmd0aCwgVUNoYXIgY2hhcmFjdGVyLCBpbnQgc3RhcnRQb3Np
dGlvbikKIHsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgJKHJldmlzaW9u
IDYxMzI3KQorKysgSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDUsMTEgKzE0NSwxMSBAQAogICAgIH0KIAogcHVibGljOgotICAgIH5TdHJp
bmdJbXBsKCk7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIH5TdHJpbmdJbXBsKCk7CiAKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBjcmVhdGUoY29uc3QgVUNoYXIqLCB1bnNpZ25l
ZCBsZW5ndGgpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGNyZWF0ZShjb25z
dCBjaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJ
bXBsPiBjcmVhdGUoY29uc3QgY2hhciopOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0aWMg
UGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBjcmVhdGUoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5n
dGgpOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBs
PiBjcmVhdGUoY29uc3QgY2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgSlNfRVhQT1JURURf
U1lNQk9MIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGNyZWF0ZShjb25zdCBjaGFyKik7
CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gY3JlYXRlKGNvbnN0IFVDaGFyKiwg
dW5zaWduZWQgbGVuZ3RoLCBQYXNzUmVmUHRyPFNoYXJlZFVDaGFyPiBzaGFyZWRCdWZmZXIpOwog
ICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gY3JlYXRlKFBh
c3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0
aCkKICAgICB7CkBAIC0xNjMsNyArMTYzLDcgQEAKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBTdHJpbmdJbXBsKHJlcC0+bV9kYXRhICsgb2Zmc2V0LCBsZW5ndGgsIG93bmVyUmVwKSk7CiAg
ICAgfQogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gY3JlYXRlVW5pbml0aWFs
aXplZCh1bnNpZ25lZCBsZW5ndGgsIFVDaGFyKiYgZGF0YSk7CisgICAgSlNfRVhQT1JURURfU1lN
Qk9MIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5z
aWduZWQgbGVuZ3RoLCBVQ2hhciomIGRhdGEpOwogICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIFBh
c3NSZWZQdHI8U3RyaW5nSW1wbD4gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5n
dGgsIFVDaGFyKiYgb3V0cHV0KQogICAgIHsKICAgICAgICAgaWYgKCFsZW5ndGgpIHsKQEAgLTE5
NywxMCArMTk3LDEwIEBACiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGVtcHR5KCk7CiAgICAg
fQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkb3B0KFN0cmluZ0J1ZmZlciYp
OworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBh
ZG9wdChTdHJpbmdCdWZmZXImKTsKIAogICAgIFNoYXJlZFVDaGFyKiBzaGFyZWRCdWZmZXIoKTsK
LSAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQor
ICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBjb25zdCBVQ2hhciogY2hhcmFjdGVycygpIGNvbnN0IHsg
cmV0dXJuIG1fZGF0YTsgfQogCiAgICAgc2l6ZV90IGNvc3QoKQogICAgIHsKQEAgLTI0Niw3ICsy
NDYsNyBAQAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBkZXJlZigpIHsgbV9yZWZDb3VudEFuZEZs
YWdzIC09IHNfcmVmQ291bnRJbmNyZW1lbnQ7IGlmICghKG1fcmVmQ291bnRBbmRGbGFncyAmIChz
X3JlZkNvdW50TWFzayB8IHNfcmVmQ291bnRGbGFnU3RhdGljKSkpIGRlbGV0ZSB0aGlzOyB9CiAg
ICAgQUxXQVlTX0lOTElORSBib29sIGhhc09uZVJlZigpIGNvbnN0IHsgcmV0dXJuIChtX3JlZkNv
dW50QW5kRmxhZ3MgJiAoc19yZWZDb3VudE1hc2sgfCBzX3JlZkNvdW50RmxhZ1N0YXRpYykpID09
IHNfcmVmQ291bnRJbmNyZW1lbnQ7IH0KIAotICAgIHN0YXRpYyBTdHJpbmdJbXBsKiBlbXB0eSgp
OworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0aWMgU3RyaW5nSW1wbCogZW1wdHkoKTsKIAog
ICAgIHN0YXRpYyB2b2lkIGNvcHlDaGFycyhVQ2hhciogZGVzdGluYXRpb24sIGNvbnN0IFVDaGFy
KiBzb3VyY2UsIHVuc2lnbmVkIG51bUNoYXJhY3RlcnMpCiAgICAgewpAQCAtMjY0LDEyICsyNjQs
MTIgQEAKICAgICAvLyBTaW5jZSBTdHJpbmdJbXBsIG9iamVjdHMgYXJlIGltbXV0YWJsZSwgdGhl
cmUncyBubyBvdGhlciByZWFzb24gdG8gbWFrZSBhIGNvcHkuCiAgICAgUGFzc1JlZlB0cjxTdHJp
bmdJbXBsPiB0aHJlYWRzYWZlQ29weSgpIGNvbnN0OwogCi0gICAgUGFzc1JlZlB0cjxTdHJpbmdJ
bXBsPiBzdWJzdHJpbmcodW5zaWduZWQgcG9zLCB1bnNpZ25lZCBsZW4gPSBVSU5UX01BWCk7Cisg
ICAgSlNfRVhQT1JURURfU1lNQk9MIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gc3Vic3RyaW5nKHVu
c2lnbmVkIHBvcywgdW5zaWduZWQgbGVuID0gVUlOVF9NQVgpOwogCiAgICAgVUNoYXIgb3BlcmF0
b3JbXSh1bnNpZ25lZCBpKSB7IEFTU0VSVChpIDwgbV9sZW5ndGgpOyByZXR1cm4gbV9kYXRhW2ld
OyB9CiAgICAgVUNoYXIzMiBjaGFyYWN0ZXJTdGFydGluZ0F0KHVuc2lnbmVkKTsKIAotICAgIGJv
b2wgY29udGFpbnNPbmx5V2hpdGVzcGFjZSgpOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBib29s
IGNvbnRhaW5zT25seVdoaXRlc3BhY2UoKTsKIAogICAgIGludCB0b0ludFN0cmljdChib29sKiBv
ayA9IDAsIGludCBiYXNlID0gMTApOwogICAgIHVuc2lnbmVkIHRvVUludFN0cmljdChib29sKiBv
ayA9IDAsIGludCBiYXNlID0gMTApOwpAQCAtMjc3LDcgKzI3Nyw3IEBACiAgICAgdWludDY0X3Qg
dG9VSW50NjRTdHJpY3QoYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKTsKICAgICBpbnRwdHJf
dCB0b0ludFB0clN0cmljdChib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApOwogCi0gICAgaW50
IHRvSW50KGJvb2wqIG9rID0gMCk7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQorICAgIEpT
X0VYUE9SVEVEX1NZTUJPTCBpbnQgdG9JbnQoYm9vbCogb2sgPSAwKTsgLy8gaWdub3JlcyB0cmFp
bGluZyBnYXJiYWdlCiAgICAgdW5zaWduZWQgdG9VSW50KGJvb2wqIG9rID0gMCk7IC8vIGlnbm9y
ZXMgdHJhaWxpbmcgZ2FyYmFnZQogICAgIGludDY0X3QgdG9JbnQ2NChib29sKiBvayA9IDApOyAv
LyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKICAgICB1aW50NjRfdCB0b1VJbnQ2NChib29sKiBv
ayA9IDApOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKQEAgLTI4NiwzNSArMjg2LDM1IEBA
CiAgICAgZG91YmxlIHRvRG91YmxlKGJvb2wqIG9rID0gMCk7CiAgICAgZmxvYXQgdG9GbG9hdChi
b29sKiBvayA9IDApOwogCi0gICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBsb3dlcigpOwotICAg
IFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gdXBwZXIoKTsKLSAgICBQYXNzUmVmUHRyPFN0cmluZ0lt
cGw+IHNlY3VyZShVQ2hhciBhQ2hhcik7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIFBhc3NSZWZQ
dHI8U3RyaW5nSW1wbD4gbG93ZXIoKTsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgUGFzc1JlZlB0
cjxTdHJpbmdJbXBsPiB1cHBlcigpOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBQYXNzUmVmUHRy
PFN0cmluZ0ltcGw+IHNlY3VyZShVQ2hhciBhQ2hhcik7CiAgICAgUGFzc1JlZlB0cjxTdHJpbmdJ
bXBsPiBmb2xkQ2FzZSgpOwogCiAgICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBzdHJpcFdoaXRl
U3BhY2UoKTsKLSAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHNpbXBsaWZ5V2hpdGVTcGFjZSgp
OworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHNpbXBsaWZ5
V2hpdGVTcGFjZSgpOwogCiAgICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZW1vdmVDaGFyYWN0
ZXJzKENoYXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIpOwogCi0gICAgaW50IGZpbmQoY29uc3QgY2hh
ciosIGludCBpbmRleCA9IDAsIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IHRydWUpOwotICAgIGludCBm
aW5kKFVDaGFyLCBpbnQgaW5kZXggPSAwKTsKLSAgICBpbnQgZmluZChDaGFyYWN0ZXJNYXRjaEZ1
bmN0aW9uUHRyLCBpbnQgaW5kZXggPSAwKTsKLSAgICBpbnQgZmluZChTdHJpbmdJbXBsKiwgaW50
IGluZGV4LCBib29sIGNhc2VTZW5zaXRpdmUgPSB0cnVlKTsKKyAgICBKU19FWFBPUlRFRF9TWU1C
T0wgaW50IGZpbmQoY29uc3QgY2hhciosIGludCBpbmRleCA9IDAsIGJvb2wgY2FzZVNlbnNpdGl2
ZSA9IHRydWUpOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBpbnQgZmluZChVQ2hhciwgaW50IGlu
ZGV4ID0gMCk7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIGludCBmaW5kKENoYXJhY3Rlck1hdGNo
RnVuY3Rpb25QdHIsIGludCBpbmRleCA9IDApOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBpbnQg
ZmluZChTdHJpbmdJbXBsKiwgaW50IGluZGV4LCBib29sIGNhc2VTZW5zaXRpdmUgPSB0cnVlKTsK
IAotICAgIGludCByZXZlcnNlRmluZChVQ2hhciwgaW50IGluZGV4KTsKLSAgICBpbnQgcmV2ZXJz
ZUZpbmQoU3RyaW5nSW1wbCosIGludCBpbmRleCwgYm9vbCBjYXNlU2Vuc2l0aXZlID0gdHJ1ZSk7
CisgICAgSlNfRVhQT1JURURfU1lNQk9MIGludCByZXZlcnNlRmluZChVQ2hhciwgaW50IGluZGV4
KTsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgaW50IHJldmVyc2VGaW5kKFN0cmluZ0ltcGwqLCBp
bnQgaW5kZXgsIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IHRydWUpOwogICAgIAogICAgIGJvb2wgc3Rh
cnRzV2l0aChTdHJpbmdJbXBsKiBzdHIsIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IHRydWUpIHsgcmV0
dXJuIHJldmVyc2VGaW5kKHN0ciwgMCwgY2FzZVNlbnNpdGl2ZSkgPT0gMDsgfQotICAgIGJvb2wg
ZW5kc1dpdGgoU3RyaW5nSW1wbCosIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IHRydWUpOworICAgIEpT
X0VYUE9SVEVEX1NZTUJPTCBib29sIGVuZHNXaXRoKFN0cmluZ0ltcGwqLCBib29sIGNhc2VTZW5z
aXRpdmUgPSB0cnVlKTsKIAotICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwbGFjZShVQ2hh
ciwgVUNoYXIpOwotICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwbGFjZShVQ2hhciwgU3Ry
aW5nSW1wbCopOwotICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwbGFjZShTdHJpbmdJbXBs
KiwgU3RyaW5nSW1wbCopOwotICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwbGFjZSh1bnNp
Z25lZCBpbmRleCwgdW5zaWduZWQgbGVuLCBTdHJpbmdJbXBsKik7CisgICAgSlNfRVhQT1JURURf
U1lNQk9MIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwbGFjZShVQ2hhciwgVUNoYXIpOworICAg
IEpTX0VYUE9SVEVEX1NZTUJPTCBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJlcGxhY2UoVUNoYXIs
IFN0cmluZ0ltcGwqKTsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgUGFzc1JlZlB0cjxTdHJpbmdJ
bXBsPiByZXBsYWNlKFN0cmluZ0ltcGwqLCBTdHJpbmdJbXBsKik7CisgICAgSlNfRVhQT1JURURf
U1lNQk9MIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwbGFjZSh1bnNpZ25lZCBpbmRleCwgdW5z
aWduZWQgbGVuLCBTdHJpbmdJbXBsKik7CiAKICAgICBWZWN0b3I8Y2hhcj4gYXNjaWkoKTsKIAot
ICAgIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIGRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKCk7Cisg
ICAgSlNfRVhQT1JURURfU1lNQk9MIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIGRlZmF1bHRXcml0
aW5nRGlyZWN0aW9uKCk7CiAKICNpZiBQTEFURk9STShDRikKICAgICBDRlN0cmluZ1JlZiBjcmVh
dGVDRlN0cmluZygpOwpAQCAtMzI3LDcgKzMyNyw3IEBACiAgICAgLy8gVGhpcyBudW1iZXIgbXVz
dCBiZSBhdCBsZWFzdCAyIHRvIGF2b2lkIHNoYXJpbmcgZW1wdHksIG51bGwgYXMgd2VsbCBhcyAx
IGNoYXJhY3RlciBzdHJpbmdzIGZyb20gU21hbGxTdHJpbmdzLgogICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBzX2NvcHlDaGFyc0lubGluZUN1dE9mZiA9IDIwOwogCi0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8U3RyaW5nSW1wbD4gY3JlYXRlU3RyaXBwaW5nTnVsbENoYXJhY3RlcnNTbG93Q2FzZShj
b25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIHN0
YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGNyZWF0ZVN0cmlwcGluZ051bGxDaGFyYWN0ZXJz
U2xvd0Nhc2UoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIAogICAgIEJ1ZmZl
ck93bmVyc2hpcCBidWZmZXJPd25lcnNoaXAoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxC
dWZmZXJPd25lcnNoaXA+KG1fcmVmQ291bnRBbmRGbGFncyAmIHNfcmVmQ291bnRNYXNrQnVmZmVy
T3duZXJzaGlwKTsgfQogICAgIGJvb2wgaXNTdGF0aWMoKSBjb25zdCB7IHJldHVybiBtX3JlZkNv
dW50QW5kRmxhZ3MgJiBzX3JlZkNvdW50RmxhZ1N0YXRpYzsgfQpAQCAtMzQwLDE3ICszNDAsMTcg
QEAKICAgICBtdXRhYmxlIHVuc2lnbmVkIG1faGFzaDsKIH07CiAKLWJvb2wgZXF1YWwoY29uc3Qg
U3RyaW5nSW1wbCosIGNvbnN0IFN0cmluZ0ltcGwqKTsKLWJvb2wgZXF1YWwoY29uc3QgU3RyaW5n
SW1wbCosIGNvbnN0IGNoYXIqKTsKK0pTX0VYUE9SVEVEX1NZTUJPTCBib29sIGVxdWFsKGNvbnN0
IFN0cmluZ0ltcGwqLCBjb25zdCBTdHJpbmdJbXBsKik7CitKU19FWFBPUlRFRF9TWU1CT0wgYm9v
bCBlcXVhbChjb25zdCBTdHJpbmdJbXBsKiwgY29uc3QgY2hhciopOwogaW5saW5lIGJvb2wgZXF1
YWwoY29uc3QgY2hhciogYSwgU3RyaW5nSW1wbCogYikgeyByZXR1cm4gZXF1YWwoYiwgYSk7IH0K
IAotYm9vbCBlcXVhbElnbm9yaW5nQ2FzZShTdHJpbmdJbXBsKiwgU3RyaW5nSW1wbCopOwotYm9v
bCBlcXVhbElnbm9yaW5nQ2FzZShTdHJpbmdJbXBsKiwgY29uc3QgY2hhciopOworSlNfRVhQT1JU
RURfU1lNQk9MIGJvb2wgZXF1YWxJZ25vcmluZ0Nhc2UoU3RyaW5nSW1wbCosIFN0cmluZ0ltcGwq
KTsKK0pTX0VYUE9SVEVEX1NZTUJPTCBib29sIGVxdWFsSWdub3JpbmdDYXNlKFN0cmluZ0ltcGwq
LCBjb25zdCBjaGFyKik7CiBpbmxpbmUgYm9vbCBlcXVhbElnbm9yaW5nQ2FzZShjb25zdCBjaGFy
KiBhLCBTdHJpbmdJbXBsKiBiKSB7IHJldHVybiBlcXVhbElnbm9yaW5nQ2FzZShiLCBhKTsgfQot
Ym9vbCBlcXVhbElnbm9yaW5nQ2FzZShjb25zdCBVQ2hhciogYSwgY29uc3QgY2hhciogYiwgdW5z
aWduZWQgbGVuZ3RoKTsKK0pTX0VYUE9SVEVEX1NZTUJPTCBib29sIGVxdWFsSWdub3JpbmdDYXNl
KGNvbnN0IFVDaGFyKiBhLCBjb25zdCBjaGFyKiBiLCB1bnNpZ25lZCBsZW5ndGgpOwogaW5saW5l
IGJvb2wgZXF1YWxJZ25vcmluZ0Nhc2UoY29uc3QgY2hhciogYSwgY29uc3QgVUNoYXIqIGIsIHVu
c2lnbmVkIGxlbmd0aCkgeyByZXR1cm4gZXF1YWxJZ25vcmluZ0Nhc2UoYiwgYSwgbGVuZ3RoKTsg
fQogCi1ib29sIGVxdWFsSWdub3JpbmdOdWxsaXR5KFN0cmluZ0ltcGwqLCBTdHJpbmdJbXBsKik7
CitKU19FWFBPUlRFRF9TWU1CT0wgYm9vbCBlcXVhbElnbm9yaW5nTnVsbGl0eShTdHJpbmdJbXBs
KiwgU3RyaW5nSW1wbCopOwogCiBpbnQgY29kZVBvaW50Q29tcGFyZShjb25zdCBTdHJpbmdJbXBs
KiwgY29uc3QgU3RyaW5nSW1wbCopOwogCkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvQnl0ZUFy
cmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL0J5dGVBcnJheS5oCShyZXZp
c2lvbiA2MTMyNykKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9CeXRlQXJyYXkuaAkod29ya2luZyBj
b3B5KQpAQCAtNzgsNyArNzgsNyBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBjcmVhdGUoc2l6ZV90IHNpemUpOworICAg
ICAgICBKU19FWFBPUlRFRF9TWU1CT0wgc3RhdGljIFBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBjcmVh
dGUoc2l6ZV90IHNpemUpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgQnl0ZUFycmF5KHNpemVf
dCBzaXplKQpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmcuaAkocmV2aXNpb24gNjEzMjcpCisrKyBK
YXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTg0LDI2ICs4
NCwyNiBAQAogLy8gVGhpcyBmdW5jdGlvbiBtdXN0IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRo
cmVhZC4gSXQgaXMgc2FmZSB0byBjYWxsIGl0IHJlcGVhdGVkbHkuCiAvLyBEYXJ3aW4gaXMgYW4g
ZXhjZXB0aW9uIHRvIHRoaXMgcnVsZTogaXQgaXMgT0sgdG8gY2FsbCBpdCBmcm9tIGFueSB0aHJl
YWQsIHRoZSBvbmx5IAogLy8gcmVxdWlyZW1lbnQgaXMgdGhhdCB0aGUgY2FsbHMgYXJlIG5vdCBy
ZWVudHJhbnQuCi12b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKTsKK0pTX0VYUE9SVEVEX1NZTUJP
TCB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKTsKIAogLy8gUmV0dXJucyAwIGlmIHRocmVhZCBj
cmVhdGlvbiBmYWlsZWQuCiAvLyBUaGUgdGhyZWFkIG5hbWUgbXVzdCBiZSBhIGxpdGVyYWwgc2lu
Y2Ugb24gc29tZSBwbGF0Zm9ybXMgaXQncyBwYXNzZWQgaW4gdG8gdGhlIHRocmVhZC4KLVRocmVh
ZElkZW50aWZpZXIgY3JlYXRlVGhyZWFkKFRocmVhZEZ1bmN0aW9uLCB2b2lkKiwgY29uc3QgY2hh
ciogdGhyZWFkTmFtZSk7CitKU19FWFBPUlRFRF9TWU1CT0wgVGhyZWFkSWRlbnRpZmllciBjcmVh
dGVUaHJlYWQoVGhyZWFkRnVuY3Rpb24sIHZvaWQqLCBjb25zdCBjaGFyKiB0aHJlYWROYW1lKTsK
IAogLy8gSW50ZXJuYWwgcGxhdGZvcm0tc3BlY2lmaWMgY3JlYXRlVGhyZWFkIGltcGxlbWVudGF0
aW9uLgotVGhyZWFkSWRlbnRpZmllciBjcmVhdGVUaHJlYWRJbnRlcm5hbChUaHJlYWRGdW5jdGlv
biwgdm9pZCosIGNvbnN0IGNoYXIqIHRocmVhZE5hbWUpOworSlNfRVhQT1JURURfU1lNQk9MIFRo
cmVhZElkZW50aWZpZXIgY3JlYXRlVGhyZWFkSW50ZXJuYWwoVGhyZWFkRnVuY3Rpb24sIHZvaWQq
LCBjb25zdCBjaGFyKiB0aHJlYWROYW1lKTsKIAogLy8gQ2FsbGVkIGluIHRoZSB0aHJlYWQgZHVy
aW5nIGluaXRpYWxpemF0aW9uLgogLy8gSGVscGZ1bCBmb3IgcGxhdGZvcm1zIHdoZXJlIHRoZSB0
aHJlYWQgbmFtZSBtdXN0IGJlIHNldCBmcm9tIHdpdGhpbiB0aGUgdGhyZWFkLgogdm9pZCBpbml0
aWFsaXplQ3VycmVudFRocmVhZEludGVybmFsKGNvbnN0IGNoYXIqIHRocmVhZE5hbWUpOwogCi1U
aHJlYWRJZGVudGlmaWVyIGN1cnJlbnRUaHJlYWQoKTsKLWludCB3YWl0Rm9yVGhyZWFkQ29tcGxl
dGlvbihUaHJlYWRJZGVudGlmaWVyLCB2b2lkKiopOwotdm9pZCBkZXRhY2hUaHJlYWQoVGhyZWFk
SWRlbnRpZmllcik7CitKU19FWFBPUlRFRF9TWU1CT0wgVGhyZWFkSWRlbnRpZmllciBjdXJyZW50
VGhyZWFkKCk7CitKU19FWFBPUlRFRF9TWU1CT0wgaW50IHdhaXRGb3JUaHJlYWRDb21wbGV0aW9u
KFRocmVhZElkZW50aWZpZXIsIHZvaWQqKik7CitKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBkZXRh
Y2hUaHJlYWQoVGhyZWFkSWRlbnRpZmllcik7CiAKIAotdm9pZCBsb2NrQXRvbWljYWxseUluaXRp
YWxpemVkU3RhdGljTXV0ZXgoKTsKLXZvaWQgdW5sb2NrQXRvbWljYWxseUluaXRpYWxpemVkU3Rh
dGljTXV0ZXgoKTsKK0pTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIGxvY2tBdG9taWNhbGx5SW5pdGlh
bGl6ZWRTdGF0aWNNdXRleCgpOworSlNfRVhQT1JURURfU1lNQk9MIHZvaWQgdW5sb2NrQXRvbWlj
YWxseUluaXRpYWxpemVkU3RhdGljTXV0ZXgoKTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKSW5k
ZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9NYWluVGhyZWFkLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNj
cmlwdENvcmUvd3RmL01haW5UaHJlYWQuaAkocmV2aXNpb24gNjEzMjcpCisrKyBKYXZhU2NyaXB0
Q29yZS93dGYvTWFpblRocmVhZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxNSArMzgsMTUgQEAK
IHR5cGVkZWYgdm9pZCBNYWluVGhyZWFkRnVuY3Rpb24odm9pZCopOwogCiAvLyBNdXN0IGJlIGNh
bGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4KLXZvaWQgaW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsK
K0pTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIGluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAKLXZvaWQg
Y2FsbE9uTWFpblRocmVhZChNYWluVGhyZWFkRnVuY3Rpb24qLCB2b2lkKiBjb250ZXh0KTsKK0pT
X0VYUE9SVEVEX1NZTUJPTCB2b2lkIGNhbGxPbk1haW5UaHJlYWQoTWFpblRocmVhZEZ1bmN0aW9u
Kiwgdm9pZCogY29udGV4dCk7CiB2b2lkIGNhbGxPbk1haW5UaHJlYWRBbmRXYWl0KE1haW5UaHJl
YWRGdW5jdGlvbiosIHZvaWQqIGNvbnRleHQpOwogdm9pZCBjYW5jZWxDYWxsT25NYWluVGhyZWFk
KE1haW5UaHJlYWRGdW5jdGlvbiosIHZvaWQqIGNvbnRleHQpOwogCi12b2lkIHNldE1haW5UaHJl
YWRDYWxsYmFja3NQYXVzZWQoYm9vbCBwYXVzZWQpOworSlNfRVhQT1JURURfU1lNQk9MIHZvaWQg
c2V0TWFpblRocmVhZENhbGxiYWNrc1BhdXNlZChib29sIHBhdXNlZCk7CiAKLWJvb2wgaXNNYWlu
VGhyZWFkKCk7CitKU19FWFBPUlRFRF9TWU1CT0wgYm9vbCBpc01haW5UaHJlYWQoKTsKIAogLy8g
Tk9URTogdGhlc2UgZnVuY3Rpb25zIGFyZSBpbnRlcm5hbCB0byB0aGUgY2FsbE9uTWFpblRocmVh
ZCBpbXBsZW1lbnRhdGlvbi4KIHZvaWQgaW5pdGlhbGl6ZU1haW5UaHJlYWRQbGF0Zm9ybSgpOwpJ
bmRleDogSmF2YVNjcmlwdENvcmUvd3RmL0Zhc3RNYWxsb2MuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZh
U2NyaXB0Q29yZS93dGYvRmFzdE1hbGxvYy5oCShyZXZpc2lvbiA2MTMyNykKKysrIEphdmFTY3Jp
cHRDb3JlL3d0Zi9GYXN0TWFsbG9jLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDE1MyArMjgsMTUz
IEBACiAKIG5hbWVzcGFjZSBXVEYgewogCi0gICAgLy8gVGhlc2UgZnVuY3Rpb25zIGNhbGwgQ1JB
U0goKSBpZiBhbiBhbGxvY2F0aW9uIGZhaWxzLgotICAgIHZvaWQqIGZhc3RNYWxsb2Moc2l6ZV90
KTsKLSAgICB2b2lkKiBmYXN0WmVyb2VkTWFsbG9jKHNpemVfdCk7Ci0gICAgdm9pZCogZmFzdENh
bGxvYyhzaXplX3QgbnVtRWxlbWVudHMsIHNpemVfdCBlbGVtZW50U2l6ZSk7Ci0gICAgdm9pZCog
ZmFzdFJlYWxsb2Modm9pZCosIHNpemVfdCk7Ci0gICAgY2hhciogZmFzdFN0ckR1cChjb25zdCBj
aGFyKik7Ci0gICAgc2l6ZV90IGZhc3RNYWxsb2NTaXplKGNvbnN0IHZvaWQqKTsKKy8vIFRoZXNl
IGZ1bmN0aW9ucyBjYWxsIENSQVNIKCkgaWYgYW4gYWxsb2NhdGlvbiBmYWlscy4KK0pTX0VYUE9S
VEVEX1NZTUJPTCB2b2lkKiBmYXN0TWFsbG9jKHNpemVfdCk7CitKU19FWFBPUlRFRF9TWU1CT0wg
dm9pZCogZmFzdFplcm9lZE1hbGxvYyhzaXplX3QpOworSlNfRVhQT1JURURfU1lNQk9MIHZvaWQq
IGZhc3RDYWxsb2Moc2l6ZV90IG51bUVsZW1lbnRzLCBzaXplX3QgZWxlbWVudFNpemUpOworSlNf
RVhQT1JURURfU1lNQk9MIHZvaWQqIGZhc3RSZWFsbG9jKHZvaWQqLCBzaXplX3QpOworSlNfRVhQ
T1JURURfU1lNQk9MIGNoYXIqIGZhc3RTdHJEdXAoY29uc3QgY2hhciopOworSlNfRVhQT1JURURf
U1lNQk9MIHNpemVfdCBmYXN0TWFsbG9jU2l6ZShjb25zdCB2b2lkKik7CiAKLSAgICBzdHJ1Y3Qg
VHJ5TWFsbG9jUmV0dXJuVmFsdWUgewotICAgICAgICBUcnlNYWxsb2NSZXR1cm5WYWx1ZSh2b2lk
KiBkYXRhKQotICAgICAgICAgICAgOiBtX2RhdGEoZGF0YSkKLSAgICAgICAgewotICAgICAgICB9
Ci0gICAgICAgIFRyeU1hbGxvY1JldHVyblZhbHVlKGNvbnN0IFRyeU1hbGxvY1JldHVyblZhbHVl
JiBzb3VyY2UpCi0gICAgICAgICAgICA6IG1fZGF0YShzb3VyY2UubV9kYXRhKQotICAgICAgICB7
Ci0gICAgICAgICAgICBzb3VyY2UubV9kYXRhID0gMDsKLSAgICAgICAgfQotICAgICAgICB+VHJ5
TWFsbG9jUmV0dXJuVmFsdWUoKSB7IEFTU0VSVCghbV9kYXRhKTsgfQotICAgICAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4gYm9vbCBnZXRWYWx1ZShUJiBkYXRhKSBXQVJOX1VOVVNFRF9SRVRVUk47
Ci0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBvcGVyYXRvciBQb3NzaWJseU51bGw8VD4o
KQotICAgICAgICB7IAotICAgICAgICAgICAgVCB2YWx1ZTsgCi0gICAgICAgICAgICBnZXRWYWx1
ZSh2YWx1ZSk7IAotICAgICAgICAgICAgcmV0dXJuIFBvc3NpYmx5TnVsbDxUPih2YWx1ZSk7Ci0g
ICAgICAgIH0gCi0gICAgcHJpdmF0ZToKLSAgICAgICAgbXV0YWJsZSB2b2lkKiBtX2RhdGE7Ci0g
ICAgfTsKLSAgICAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gYm9vbCBUcnlNYWxsb2NSZXR1
cm5WYWx1ZTo6Z2V0VmFsdWUoVCYgZGF0YSkKK3N0cnVjdCBUcnlNYWxsb2NSZXR1cm5WYWx1ZSB7
CisgICAgVHJ5TWFsbG9jUmV0dXJuVmFsdWUodm9pZCogZGF0YSkKKyAgICAgICAgOiBtX2RhdGEo
ZGF0YSkKICAgICB7Ci0gICAgICAgIHVuaW9uIHUgeyB2b2lkKiBkYXRhOyBUIHRhcmdldDsgfSBy
ZXM7Ci0gICAgICAgIHJlcy5kYXRhID0gbV9kYXRhOwotICAgICAgICBkYXRhID0gcmVzLnRhcmdl
dDsKLSAgICAgICAgYm9vbCByZXR1cm5WYWx1ZSA9ICEhbV9kYXRhOwotICAgICAgICBtX2RhdGEg
PSAwOwotICAgICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiAgICAgfQorICAgIFRyeU1hbGxvY1Jl
dHVyblZhbHVlKGNvbnN0IFRyeU1hbGxvY1JldHVyblZhbHVlJiBzb3VyY2UpCisgICAgICAgIDog
bV9kYXRhKHNvdXJjZS5tX2RhdGEpCisgICAgeworICAgICAgICBzb3VyY2UubV9kYXRhID0gMDsK
KyAgICB9CisgICAgflRyeU1hbGxvY1JldHVyblZhbHVlKCkgeyBBU1NFUlQoIW1fZGF0YSk7IH0K
KyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gYm9vbCBnZXRWYWx1ZShUJiBkYXRhKSBXQVJOX1VO
VVNFRF9SRVRVUk47CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IG9wZXJhdG9yIFBvc3NpYmx5
TnVsbDxUPigpCisgICAgeyAKKyAgICAgICAgVCB2YWx1ZTsgCisgICAgICAgIGdldFZhbHVlKHZh
bHVlKTsgCisgICAgICAgIHJldHVybiBQb3NzaWJseU51bGw8VD4odmFsdWUpOworICAgIH0gCitw
cml2YXRlOgorICAgIG11dGFibGUgdm9pZCogbV9kYXRhOworfTsKIAotICAgIFRyeU1hbGxvY1Jl
dHVyblZhbHVlIHRyeUZhc3RNYWxsb2Moc2l6ZV90IG4pOwotICAgIFRyeU1hbGxvY1JldHVyblZh
bHVlIHRyeUZhc3RaZXJvZWRNYWxsb2Moc2l6ZV90IG4pOwotICAgIFRyeU1hbGxvY1JldHVyblZh
bHVlIHRyeUZhc3RDYWxsb2Moc2l6ZV90IG5fZWxlbWVudHMsIHNpemVfdCBlbGVtZW50X3NpemUp
OwotICAgIFRyeU1hbGxvY1JldHVyblZhbHVlIHRyeUZhc3RSZWFsbG9jKHZvaWQqIHAsIHNpemVf
dCBuKTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBib29sIFRyeU1hbGxvY1JldHVyblZhbHVlOjpn
ZXRWYWx1ZShUJiBkYXRhKQoreworICAgIHVuaW9uIHUgeyB2b2lkKiBkYXRhOyBUIHRhcmdldDsg
fSByZXM7CisgICAgcmVzLmRhdGEgPSBtX2RhdGE7CisgICAgZGF0YSA9IHJlcy50YXJnZXQ7Cisg
ICAgYm9vbCByZXR1cm5WYWx1ZSA9ICEhbV9kYXRhOworICAgIG1fZGF0YSA9IDA7CisgICAgcmV0
dXJuIHJldHVyblZhbHVlOworfQogCi0gICAgdm9pZCBmYXN0RnJlZSh2b2lkKik7CitKU19FWFBP
UlRFRF9TWU1CT0wgVHJ5TWFsbG9jUmV0dXJuVmFsdWUgdHJ5RmFzdE1hbGxvYyhzaXplX3Qgbik7
CitKU19FWFBPUlRFRF9TWU1CT0wgVHJ5TWFsbG9jUmV0dXJuVmFsdWUgdHJ5RmFzdFplcm9lZE1h
bGxvYyhzaXplX3Qgbik7CitKU19FWFBPUlRFRF9TWU1CT0wgVHJ5TWFsbG9jUmV0dXJuVmFsdWUg
dHJ5RmFzdENhbGxvYyhzaXplX3Qgbl9lbGVtZW50cywgc2l6ZV90IGVsZW1lbnRfc2l6ZSk7CitK
U19FWFBPUlRFRF9TWU1CT0wgVHJ5TWFsbG9jUmV0dXJuVmFsdWUgdHJ5RmFzdFJlYWxsb2Modm9p
ZCogcCwgc2l6ZV90IG4pOwogCitKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBmYXN0RnJlZSh2b2lk
Kik7CisKICNpZm5kZWYgTkRFQlVHICAgIAotICAgIHZvaWQgZmFzdE1hbGxvY0ZvcmJpZCgpOwot
ICAgIHZvaWQgZmFzdE1hbGxvY0FsbG93KCk7Cit2b2lkIGZhc3RNYWxsb2NGb3JiaWQoKTsKK3Zv
aWQgZmFzdE1hbGxvY0FsbG93KCk7CiAjZW5kaWYKIAotICAgIHZvaWQgcmVsZWFzZUZhc3RNYWxs
b2NGcmVlTWVtb3J5KCk7Ci0gICAgCi0gICAgc3RydWN0IEZhc3RNYWxsb2NTdGF0aXN0aWNzIHsK
LSAgICAgICAgc2l6ZV90IHJlc2VydmVkVk1CeXRlczsKLSAgICAgICAgc2l6ZV90IGNvbW1pdHRl
ZFZNQnl0ZXM7Ci0gICAgICAgIHNpemVfdCBmcmVlTGlzdEJ5dGVzOwotICAgIH07Ci0gICAgRmFz
dE1hbGxvY1N0YXRpc3RpY3MgZmFzdE1hbGxvY1N0YXRpc3RpY3MoKTsKK3ZvaWQgcmVsZWFzZUZh
c3RNYWxsb2NGcmVlTWVtb3J5KCk7CiAKLSAgICAvLyBUaGlzIGRlZmluZXMgYSB0eXBlIHdoaWNo
IGhvbGRzIGFuIHVuc2lnbmVkIGludGVnZXIgYW5kIGlzIHRoZSBzYW1lCi0gICAgLy8gc2l6ZSBh
cyB0aGUgbWluaW1hbGx5IGFsaWduZWQgbWVtb3J5IGFsbG9jYXRpb24uCi0gICAgdHlwZWRlZiB1
bnNpZ25lZCBsb25nIGxvbmcgQWxsb2NBbGlnbm1lbnRJbnRlZ2VyOworc3RydWN0IEZhc3RNYWxs
b2NTdGF0aXN0aWNzIHsKKyAgICBzaXplX3QgcmVzZXJ2ZWRWTUJ5dGVzOworICAgIHNpemVfdCBj
b21taXR0ZWRWTUJ5dGVzOworICAgIHNpemVfdCBmcmVlTGlzdEJ5dGVzOworfTsKK0Zhc3RNYWxs
b2NTdGF0aXN0aWNzIGZhc3RNYWxsb2NTdGF0aXN0aWNzKCk7CiAKLSAgICBuYW1lc3BhY2UgSW50
ZXJuYWwgewotICAgICAgICBlbnVtIEFsbG9jVHlwZSB7ICAgICAgICAgICAgICAgICAgICAvLyBT
dGFydCB3aXRoIGFuIHVudXN1YWwgbnVtYmVyIGluc3RlYWQgb2YgemVybywgYmVjYXVzZSB6ZXJv
IGlzIGNvbW1vbi4KLSAgICAgICAgICAgIEFsbG9jVHlwZU1hbGxvYyA9IDB4Mzc1ZDY3NTAsICAg
Ly8gRW5jb21wYXNzZXMgZmFzdE1hbGxvYywgZmFzdFplcm9lZE1hbGxvYywgZmFzdENhbGxvYywg
ZmFzdFJlYWxsb2MuCi0gICAgICAgICAgICBBbGxvY1R5cGVDbGFzc05ldywgICAgICAgICAgICAg
IC8vIEVuY29tcGFzc2VzIGNsYXNzIG9wZXJhdG9yIG5ldyBmcm9tIEZhc3RBbGxvY0Jhc2UuCi0g
ICAgICAgICAgICBBbGxvY1R5cGVDbGFzc05ld0FycmF5LCAgICAgICAgIC8vIEVuY29tcGFzc2Vz
IGNsYXNzIG9wZXJhdG9yIG5ld1tdIGZyb20gRmFzdEFsbG9jQmFzZS4KLSAgICAgICAgICAgIEFs
bG9jVHlwZUZhc3ROZXcsICAgICAgICAgICAgICAgLy8gRW5jb21wYXNzZXMgZmFzdE5ldy4KLSAg
ICAgICAgICAgIEFsbG9jVHlwZUZhc3ROZXdBcnJheSwgICAgICAgICAgLy8gRW5jb21wYXNzZXMg
ZmFzdE5ld0FycmF5LgotICAgICAgICAgICAgQWxsb2NUeXBlTmV3LCAgICAgICAgICAgICAgICAg
ICAvLyBFbmNvbXBhc3NlcyBnbG9iYWwgb3BlcmF0b3IgbmV3LgotICAgICAgICAgICAgQWxsb2NU
eXBlTmV3QXJyYXkgICAgICAgICAgICAgICAvLyBFbmNvbXBhc3NlcyBnbG9iYWwgb3BlcmF0b3Ig
bmV3W10uCi0gICAgICAgIH07Ci0gICAgfQorLy8gVGhpcyBkZWZpbmVzIGEgdHlwZSB3aGljaCBo
b2xkcyBhbiB1bnNpZ25lZCBpbnRlZ2VyIGFuZCBpcyB0aGUgc2FtZQorLy8gc2l6ZSBhcyB0aGUg
bWluaW1hbGx5IGFsaWduZWQgbWVtb3J5IGFsbG9jYXRpb24uCit0eXBlZGVmIHVuc2lnbmVkIGxv
bmcgbG9uZyBBbGxvY0FsaWdubWVudEludGVnZXI7CiAKK25hbWVzcGFjZSBJbnRlcm5hbCB7Citl
bnVtIEFsbG9jVHlwZSB7ICAgICAgICAgICAgICAgICAgICAvLyBTdGFydCB3aXRoIGFuIHVudXN1
YWwgbnVtYmVyIGluc3RlYWQgb2YgemVybywgYmVjYXVzZSB6ZXJvIGlzIGNvbW1vbi4KKyAgICBB
bGxvY1R5cGVNYWxsb2MgPSAweDM3NWQ2NzUwLCAgIC8vIEVuY29tcGFzc2VzIGZhc3RNYWxsb2Ms
IGZhc3RaZXJvZWRNYWxsb2MsIGZhc3RDYWxsb2MsIGZhc3RSZWFsbG9jLgorICAgIEFsbG9jVHlw
ZUNsYXNzTmV3LCAgICAgICAgICAgICAgLy8gRW5jb21wYXNzZXMgY2xhc3Mgb3BlcmF0b3IgbmV3
IGZyb20gRmFzdEFsbG9jQmFzZS4KKyAgICBBbGxvY1R5cGVDbGFzc05ld0FycmF5LCAgICAgICAg
IC8vIEVuY29tcGFzc2VzIGNsYXNzIG9wZXJhdG9yIG5ld1tdIGZyb20gRmFzdEFsbG9jQmFzZS4K
KyAgICBBbGxvY1R5cGVGYXN0TmV3LCAgICAgICAgICAgICAgIC8vIEVuY29tcGFzc2VzIGZhc3RO
ZXcuCisgICAgQWxsb2NUeXBlRmFzdE5ld0FycmF5LCAgICAgICAgICAvLyBFbmNvbXBhc3NlcyBm
YXN0TmV3QXJyYXkuCisgICAgQWxsb2NUeXBlTmV3LCAgICAgICAgICAgICAgICAgICAvLyBFbmNv
bXBhc3NlcyBnbG9iYWwgb3BlcmF0b3IgbmV3LgorICAgIEFsbG9jVHlwZU5ld0FycmF5ICAgICAg
ICAgICAgICAgLy8gRW5jb21wYXNzZXMgZ2xvYmFsIG9wZXJhdG9yIG5ld1tdLgorfTsKK30KKwog
I2lmIEVOQUJMRShGQVNUX01BTExPQ19NQVRDSF9WQUxJREFUSU9OKQogCi0gICAgLy8gTWFsbG9j
IHZhbGlkYXRpb24gaXMgYSBzY2hlbWUgd2hlcmVieSBhIHRhZyBpcyBhdHRhY2hlZCB0byBhbgot
ICAgIC8vIGFsbG9jYXRpb24gd2hpY2ggaWRlbnRpZmllcyBob3cgaXQgd2FzIG9yaWdpbmFsbHkg
YWxsb2NhdGVkLgotICAgIC8vIFRoaXMgYWxsb3dzIHVzIHRvIHZlcmlmeSB0aGF0IHRoZSBmcmVl
aW5nIG9wZXJhdGlvbiBtYXRjaGVzIHRoZQotICAgIC8vIGFsbG9jYXRpb24gb3BlcmF0aW9uLiBJ
ZiBtZW1vcnkgaXMgYWxsb2NhdGVkIHdpdGggb3BlcmF0b3IgbmV3W10KLSAgICAvLyBidXQgZnJl
ZWQgd2l0aCBmcmVlIG9yIGRlbGV0ZSwgdGhpcyBzeXN0ZW0gd291bGQgZGV0ZWN0IHRoYXQuCi0g
ICAgLy8gSW4gdGhlIGltcGxlbWVudGF0aW9uIGhlcmUsIHRoZSB0YWcgaXMgYW4gaW50ZWdlciBw
cmVwZW5kZWQgdG8KLSAgICAvLyB0aGUgYWxsb2NhdGlvbiBtZW1vcnkgd2hpY2ggaXMgYXNzaWdu
ZWQgb25lIG9mIHRoZSBBbGxvY1R5cGUKLSAgICAvLyBlbnVtZXJhdGlvbiB2YWx1ZXMuIEFuIGFs
dGVybmF0aXZlIGltcGxlbWVudGF0aW9uIG9mIHRoaXMKLSAgICAvLyBzY2hlbWUgY291bGQgc3Rv
cmUgdGhlIHRhZyBzb21ld2hlcmUgZWxzZSBvciBpZ25vcmUgaXQuCi0gICAgLy8gVXNlcnMgb2Yg
RmFzdE1hbGxvYyBkb24ndCBuZWVkIHRvIGtub3cgb3IgY2FyZSBob3cgdGhpcyB0YWdnaW5nCi0g
ICAgLy8gaXMgaW1wbGVtZW50ZWQuCisvLyBNYWxsb2MgdmFsaWRhdGlvbiBpcyBhIHNjaGVtZSB3
aGVyZWJ5IGEgdGFnIGlzIGF0dGFjaGVkIHRvIGFuCisvLyBhbGxvY2F0aW9uIHdoaWNoIGlkZW50
aWZpZXMgaG93IGl0IHdhcyBvcmlnaW5hbGx5IGFsbG9jYXRlZC4KKy8vIFRoaXMgYWxsb3dzIHVz
IHRvIHZlcmlmeSB0aGF0IHRoZSBmcmVlaW5nIG9wZXJhdGlvbiBtYXRjaGVzIHRoZQorLy8gYWxs
b2NhdGlvbiBvcGVyYXRpb24uIElmIG1lbW9yeSBpcyBhbGxvY2F0ZWQgd2l0aCBvcGVyYXRvciBu
ZXdbXQorLy8gYnV0IGZyZWVkIHdpdGggZnJlZSBvciBkZWxldGUsIHRoaXMgc3lzdGVtIHdvdWxk
IGRldGVjdCB0aGF0LgorLy8gSW4gdGhlIGltcGxlbWVudGF0aW9uIGhlcmUsIHRoZSB0YWcgaXMg
YW4gaW50ZWdlciBwcmVwZW5kZWQgdG8KKy8vIHRoZSBhbGxvY2F0aW9uIG1lbW9yeSB3aGljaCBp
cyBhc3NpZ25lZCBvbmUgb2YgdGhlIEFsbG9jVHlwZQorLy8gZW51bWVyYXRpb24gdmFsdWVzLiBB
biBhbHRlcm5hdGl2ZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzCisvLyBzY2hlbWUgY291bGQgc3Rv
cmUgdGhlIHRhZyBzb21ld2hlcmUgZWxzZSBvciBpZ25vcmUgaXQuCisvLyBVc2VycyBvZiBGYXN0
TWFsbG9jIGRvbid0IG5lZWQgdG8ga25vdyBvciBjYXJlIGhvdyB0aGlzIHRhZ2dpbmcKKy8vIGlz
IGltcGxlbWVudGVkLgogCi0gICAgbmFtZXNwYWNlIEludGVybmFsIHsKK25hbWVzcGFjZSBJbnRl
cm5hbCB7CiAKLSAgICAgICAgLy8gUmV0dXJuIHRoZSBBbGxvY1R5cGUgdGFnIGFzc29jaWF0ZWQg
d2l0aCB0aGUgYWxsb2NhdGVkIGJsb2NrIHAuCi0gICAgICAgIGlubGluZSBBbGxvY1R5cGUgZmFz
dE1hbGxvY01hdGNoVmFsaWRhdGlvblR5cGUoY29uc3Qgdm9pZCogcCkKLSAgICAgICAgewotICAg
ICAgICAgICAgY29uc3QgQWxsb2NBbGlnbm1lbnRJbnRlZ2VyKiB0eXBlID0gc3RhdGljX2Nhc3Q8
Y29uc3QgQWxsb2NBbGlnbm1lbnRJbnRlZ2VyKj4ocCkgLSAxOwotICAgICAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PEFsbG9jVHlwZT4oKnR5cGUpOwotICAgICAgICB9CisgICAgLy8gUmV0dXJu
IHRoZSBBbGxvY1R5cGUgdGFnIGFzc29jaWF0ZWQgd2l0aCB0aGUgYWxsb2NhdGVkIGJsb2NrIHAu
CisgICAgaW5saW5lIEFsbG9jVHlwZSBmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0aW9uVHlwZShjb25z
dCB2b2lkKiBwKQorICAgIHsKKyAgICAgICAgY29uc3QgQWxsb2NBbGlnbm1lbnRJbnRlZ2VyKiB0
eXBlID0gc3RhdGljX2Nhc3Q8Y29uc3QgQWxsb2NBbGlnbm1lbnRJbnRlZ2VyKj4ocCkgLSAxOwor
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QWxsb2NUeXBlPigqdHlwZSk7CisgICAgfQogCi0g
ICAgICAgIC8vIFJldHVybiB0aGUgYWRkcmVzcyBvZiB0aGUgQWxsb2NUeXBlIHRhZyBhc3NvY2lh
dGVkIHdpdGggdGhlIGFsbG9jYXRlZCBibG9jayBwLgotICAgICAgICBpbmxpbmUgQWxsb2NBbGln
bm1lbnRJbnRlZ2VyKiBmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0aW9uVmFsdWUodm9pZCogcCkKLSAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8QWxsb2NBbGlnbm1l
bnRJbnRlZ2VyKj4oc3RhdGljX2Nhc3Q8Y2hhcio+KHApIC0gc2l6ZW9mKEFsbG9jQWxpZ25tZW50
SW50ZWdlcikpOwotICAgICAgICB9CisgICAgLy8gUmV0dXJuIHRoZSBhZGRyZXNzIG9mIHRoZSBB
bGxvY1R5cGUgdGFnIGFzc29jaWF0ZWQgd2l0aCB0aGUgYWxsb2NhdGVkIGJsb2NrIHAuCisgICAg
aW5saW5lIEFsbG9jQWxpZ25tZW50SW50ZWdlciogZmFzdE1hbGxvY01hdGNoVmFsaWRhdGlvblZh
bHVlKHZvaWQqIHApCisgICAgeworICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxBbGxv
Y0FsaWdubWVudEludGVnZXIqPihzdGF0aWNfY2FzdDxjaGFyKj4ocCkgLSBzaXplb2YoQWxsb2NB
bGlnbm1lbnRJbnRlZ2VyKSk7CisgICAgfQogCi0gICAgICAgIC8vIFNldCB0aGUgQWxsb2NUeXBl
IHRhZyB0byBiZSBhc3NvY2lhZ2VkIHdpdGggdGhlIGFsbG9jYXRlZCBibG9jayBwLgotICAgICAg
ICBpbmxpbmUgdm9pZCBzZXRGYXN0TWFsbG9jTWF0Y2hWYWxpZGF0aW9uVHlwZSh2b2lkKiBwLCBB
bGxvY1R5cGUgYWxsb2NUeXBlKQotICAgICAgICB7Ci0gICAgICAgICAgICBBbGxvY0FsaWdubWVu
dEludGVnZXIqIHR5cGUgPSBzdGF0aWNfY2FzdDxBbGxvY0FsaWdubWVudEludGVnZXIqPihwKSAt
IDE7Ci0gICAgICAgICAgICAqdHlwZSA9IHN0YXRpY19jYXN0PEFsbG9jQWxpZ25tZW50SW50ZWdl
cj4oYWxsb2NUeXBlKTsKLSAgICAgICAgfQorICAgIC8vIFNldCB0aGUgQWxsb2NUeXBlIHRhZyB0
byBiZSBhc3NvY2lhZ2VkIHdpdGggdGhlIGFsbG9jYXRlZCBibG9jayBwLgorICAgIGlubGluZSB2
b2lkIHNldEZhc3RNYWxsb2NNYXRjaFZhbGlkYXRpb25UeXBlKHZvaWQqIHAsIEFsbG9jVHlwZSBh
bGxvY1R5cGUpCisgICAgeworICAgICAgICBBbGxvY0FsaWdubWVudEludGVnZXIqIHR5cGUgPSBz
dGF0aWNfY2FzdDxBbGxvY0FsaWdubWVudEludGVnZXIqPihwKSAtIDE7CisgICAgICAgICp0eXBl
ID0gc3RhdGljX2Nhc3Q8QWxsb2NBbGlnbm1lbnRJbnRlZ2VyPihhbGxvY1R5cGUpOworICAgIH0K
IAotICAgICAgICAvLyBIYW5kbGUgYSBkZXRlY3RlZCBhbGxvYy9mcmVlIG1pc21hdGNoLiBCeSBk
ZWZhdWx0IHRoaXMgY2FsbHMgQ1JBU0goKS4KLSAgICAgICAgdm9pZCBmYXN0TWFsbG9jTWF0Y2hG
YWlsZWQodm9pZCogcCk7CisgICAgLy8gSGFuZGxlIGEgZGV0ZWN0ZWQgYWxsb2MvZnJlZSBtaXNt
YXRjaC4gQnkgZGVmYXVsdCB0aGlzIGNhbGxzIENSQVNIKCkuCisgICAgdm9pZCBmYXN0TWFsbG9j
TWF0Y2hGYWlsZWQodm9pZCogcCk7CiAKLSAgICB9IC8vIG5hbWVzcGFjZSBJbnRlcm5hbAorfSAv
LyBuYW1lc3BhY2UgSW50ZXJuYWwKIAotICAgIC8vIFRoaXMgaXMgYSBoaWdoZXIgbGV2ZWwgZnVu
Y3Rpb24gd2hpY2ggaXMgdXNlZCBieSBGYXN0TWFsbG9jLXVzaW5nIGNvZGUuCi0gICAgaW5saW5l
IHZvaWQgZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVNYWxsb2Modm9pZCogcCwgSW50ZXJuYWw6OkFs
bG9jVHlwZSBhbGxvY1R5cGUpCi0gICAgewotICAgICAgICBpZiAoIXApCi0gICAgICAgICAgICBy
ZXR1cm47CisvLyBUaGlzIGlzIGEgaGlnaGVyIGxldmVsIGZ1bmN0aW9uIHdoaWNoIGlzIHVzZWQg
YnkgRmFzdE1hbGxvYy11c2luZyBjb2RlLgoraW5saW5lIHZvaWQgZmFzdE1hbGxvY01hdGNoVmFs
aWRhdGVNYWxsb2Modm9pZCogcCwgSW50ZXJuYWw6OkFsbG9jVHlwZSBhbGxvY1R5cGUpCit7Cisg
ICAgaWYgKCFwKQorICAgICAgICByZXR1cm47CiAKLSAgICAgICAgSW50ZXJuYWw6OnNldEZhc3RN
YWxsb2NNYXRjaFZhbGlkYXRpb25UeXBlKHAsIGFsbG9jVHlwZSk7Ci0gICAgfQorICAgIEludGVy
bmFsOjpzZXRGYXN0TWFsbG9jTWF0Y2hWYWxpZGF0aW9uVHlwZShwLCBhbGxvY1R5cGUpOworfQog
Ci0gICAgLy8gVGhpcyBpcyBhIGhpZ2hlciBsZXZlbCBmdW5jdGlvbiB3aGljaCBpcyB1c2VkIGJ5
IEZhc3RNYWxsb2MtdXNpbmcgY29kZS4KLSAgICBpbmxpbmUgdm9pZCBmYXN0TWFsbG9jTWF0Y2hW
YWxpZGF0ZUZyZWUodm9pZCogcCwgSW50ZXJuYWw6OkFsbG9jVHlwZSBhbGxvY1R5cGUpCi0gICAg
ewotICAgICAgICBpZiAoIXApCi0gICAgICAgICAgICByZXR1cm47CisvLyBUaGlzIGlzIGEgaGln
aGVyIGxldmVsIGZ1bmN0aW9uIHdoaWNoIGlzIHVzZWQgYnkgRmFzdE1hbGxvYy11c2luZyBjb2Rl
LgoraW5saW5lIHZvaWQgZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVGcmVlKHZvaWQqIHAsIEludGVy
bmFsOjpBbGxvY1R5cGUgYWxsb2NUeXBlKQoreworICAgIGlmICghcCkKKyAgICAgICAgcmV0dXJu
OwogCi0gICAgICAgIGlmIChJbnRlcm5hbDo6ZmFzdE1hbGxvY01hdGNoVmFsaWRhdGlvblR5cGUo
cCkgIT0gYWxsb2NUeXBlKQotICAgICAgICAgICAgSW50ZXJuYWw6OmZhc3RNYWxsb2NNYXRjaEZh
aWxlZChwKTsKLSAgICAgICAgSW50ZXJuYWw6OnNldEZhc3RNYWxsb2NNYXRjaFZhbGlkYXRpb25U
eXBlKHAsIEludGVybmFsOjpBbGxvY1R5cGVNYWxsb2MpOyAgLy8gU2V0IGl0IHRvIHRoaXMgc28g
dGhhdCBmYXN0RnJlZSB0aGlua3MgaXQncyBPSy4KLSAgICB9CisgICAgaWYgKEludGVybmFsOjpm
YXN0TWFsbG9jTWF0Y2hWYWxpZGF0aW9uVHlwZShwKSAhPSBhbGxvY1R5cGUpCisgICAgICAgIElu
dGVybmFsOjpmYXN0TWFsbG9jTWF0Y2hGYWlsZWQocCk7CisgICAgSW50ZXJuYWw6OnNldEZhc3RN
YWxsb2NNYXRjaFZhbGlkYXRpb25UeXBlKHAsIEludGVybmFsOjpBbGxvY1R5cGVNYWxsb2MpOyAg
Ly8gU2V0IGl0IHRvIHRoaXMgc28gdGhhdCBmYXN0RnJlZSB0aGlua3MgaXQncyBPSy4KK30KIAog
I2Vsc2UKIAotICAgIGlubGluZSB2b2lkIGZhc3RNYWxsb2NNYXRjaFZhbGlkYXRlTWFsbG9jKHZv
aWQqLCBJbnRlcm5hbDo6QWxsb2NUeXBlKQotICAgIHsKLSAgICB9CitpbmxpbmUgdm9pZCBmYXN0
TWFsbG9jTWF0Y2hWYWxpZGF0ZU1hbGxvYyh2b2lkKiwgSW50ZXJuYWw6OkFsbG9jVHlwZSkKK3sK
K30KIAotICAgIGlubGluZSB2b2lkIGZhc3RNYWxsb2NNYXRjaFZhbGlkYXRlRnJlZSh2b2lkKiwg
SW50ZXJuYWw6OkFsbG9jVHlwZSkKLSAgICB7Ci0gICAgfQoraW5saW5lIHZvaWQgZmFzdE1hbGxv
Y01hdGNoVmFsaWRhdGVGcmVlKHZvaWQqLCBJbnRlcm5hbDo6QWxsb2NUeXBlKQoreworfQogCiAj
ZW5kaWYKIApJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZFNwZWNpZmljLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZFNwZWNpZmljLmgJKHJldmlzaW9uIDYx
MzI3KQorKysgSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZFNwZWNpZmljLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE5OCw4ICsxOTgsOCBAQAogLy8gMikgV2UgZG8gbm90IG5lZWQgdG8gaG9sZCBtYW55
IGluc3RhbmNlcyBvZiBUaHJlYWRTcGVjaWZpYzw+IGRhdGEuIFRoaXMgZml4ZWQgbnVtYmVyIHNo
b3VsZCBiZSBmYXIgZW5vdWdoLgogY29uc3QgaW50IGtNYXhUbHNLZXlTaXplID0gMjU2OwogCi1s
b25nJiB0bHNLZXlDb3VudCgpOwotRFdPUkQqIHRsc0tleXMoKTsKK0pTX0VYUE9SVEVEX1NZTUJP
TCBsb25nJiB0bHNLZXlDb3VudCgpOworSlNfRVhQT1JURURfU1lNQk9MIERXT1JEKiB0bHNLZXlz
KCk7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBpbmxpbmUgVGhyZWFkU3BlY2lmaWM8VD46OlRo
cmVhZFNwZWNpZmljKCkKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9XVEZUaHJlYWREYXRhLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL1dURlRocmVhZERhdGEuaAkocmV2aXNp
b24gNjEzMjcpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvV1RGVGhyZWFkRGF0YS5oCSh3b3JraW5n
IGNvcHkpCkBAIC04NCw4ICs4NCw4IEBACiAKIGNsYXNzIFdURlRocmVhZERhdGEgOiBwdWJsaWMg
Tm9uY29weWFibGUgewogcHVibGljOgotICAgIFdURlRocmVhZERhdGEoKTsKLSAgICB+V1RGVGhy
ZWFkRGF0YSgpOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBXVEZUaHJlYWREYXRhKCk7CisgICAg
SlNfRVhQT1JURURfU1lNQk9MIH5XVEZUaHJlYWREYXRhKCk7CiAKICAgICBXZWJDb3JlOjpBdG9t
aWNTdHJpbmdUYWJsZSogYXRvbWljU3RyaW5nVGFibGUoKQogICAgIHsKQEAgLTEyNyw5ICsxMjcs
OSBAQAogI2VuZGlmCiAKICNpZiBXVEZUSFJFQUREQVRBX01VTFRJVEhSRUFERUQKLSAgICBzdGF0
aWMgSlNfRVhQT1JUREFUQSBUaHJlYWRTcGVjaWZpYzxXVEZUaHJlYWREYXRhPiogc3RhdGljRGF0
YTsKKyAgICBzdGF0aWMgSlNfRVhQT1JURURfU1lNQk9MIFRocmVhZFNwZWNpZmljPFdURlRocmVh
ZERhdGE+KiBzdGF0aWNEYXRhOwogI2Vsc2UKLSAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSBXVEZU
aHJlYWREYXRhKiBzdGF0aWNEYXRhOworICAgIHN0YXRpYyBKU19FWFBPUlRFRF9TWU1CT0wgV1RG
VGhyZWFkRGF0YSogc3RhdGljRGF0YTsKICNlbmRpZgogICAgIGZyaWVuZCBXVEZUaHJlYWREYXRh
JiB3dGZUaHJlYWREYXRhKCk7CiAgICAgZnJpZW5kIGNsYXNzIFdlYkNvcmU6OkF0b21pY1N0cmlu
Z1RhYmxlOwpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL0RhdGVNYXRoLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSmF2YVNjcmlwdENvcmUvd3RmL0RhdGVNYXRoLmgJKHJldmlzaW9uIDYxMzI3KQorKysgSmF2
YVNjcmlwdENvcmUvd3RmL0RhdGVNYXRoLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcg
QEAKIGludCBlcXVpdmFsZW50WWVhckZvckRTVChpbnQgeWVhcik7CiAKIC8vIE5vdCByZWFsbHkg
bWF0aCByZWxhdGVkLCBidXQgdGhpcyBpcyBjdXJyZW50bHkgdGhlIG9ubHkgc2hhcmVkIHBsYWNl
IHRvIHB1dCB0aGVzZS4gIAotZG91YmxlIHBhcnNlRGF0ZUZyb21OdWxsVGVybWluYXRlZENoYXJh
Y3RlcnMoY29uc3QgY2hhciogZGF0ZVN0cmluZyk7CitKU19FWFBPUlRFRF9TWU1CT0wgZG91Ymxl
IHBhcnNlRGF0ZUZyb21OdWxsVGVybWluYXRlZENoYXJhY3RlcnMoY29uc3QgY2hhciogZGF0ZVN0
cmluZyk7CiBkb3VibGUgdGltZUNsaXAoZG91YmxlKTsKIAogaW5saW5lIGRvdWJsZSBqc0N1cnJl
bnRUaW1lKCkKQEAgLTc3LDExICs3NywxMSBAQAogY29uc3QgZG91YmxlIG1zUGVyTW9udGggPSAy
NTkyMDAwMDAwLjA7CiAKIC8vIFJldHVybnMgdGhlIG51bWJlciBvZiBkYXlzIGZyb20gMTk3MC0w
MS0wMSB0byB0aGUgc3BlY2lmaWVkIGRhdGUuCi1kb3VibGUgZGF0ZVRvRGF5c0Zyb20xOTcwKGlu
dCB5ZWFyLCBpbnQgbW9udGgsIGludCBkYXkpOwotaW50IG1zVG9ZZWFyKGRvdWJsZSBtcyk7Ci1p
bnQgZGF5SW5ZZWFyKGRvdWJsZSBtcywgaW50IHllYXIpOwotaW50IG1vbnRoRnJvbURheUluWWVh
cihpbnQgZGF5SW5ZZWFyLCBib29sIGxlYXBZZWFyKTsKLWludCBkYXlJbk1vbnRoRnJvbURheUlu
WWVhcihpbnQgZGF5SW5ZZWFyLCBib29sIGxlYXBZZWFyKTsKK0pTX0VYUE9SVEVEX1NZTUJPTCBk
b3VibGUgZGF0ZVRvRGF5c0Zyb20xOTcwKGludCB5ZWFyLCBpbnQgbW9udGgsIGludCBkYXkpOwor
SlNfRVhQT1JURURfU1lNQk9MIGludCBtc1RvWWVhcihkb3VibGUgbXMpOworSlNfRVhQT1JURURf
U1lNQk9MIGludCBkYXlJblllYXIoZG91YmxlIG1zLCBpbnQgeWVhcik7CitKU19FWFBPUlRFRF9T
WU1CT0wgaW50IG1vbnRoRnJvbURheUluWWVhcihpbnQgZGF5SW5ZZWFyLCBib29sIGxlYXBZZWFy
KTsKK0pTX0VYUE9SVEVEX1NZTUJPTCBpbnQgZGF5SW5Nb250aEZyb21EYXlJblllYXIoaW50IGRh
eUluWWVhciwgYm9vbCBsZWFwWWVhcik7CiAKIH0gLy8gbmFtZXNwYWNlIFdURgogCkluZGV4OiBK
YXZhU2NyaXB0Q29yZS93dGYvdW5pY29kZS9Db2xsYXRvci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL3d0Zi91bmljb2RlL0NvbGxhdG9yLmgJKHJldmlzaW9uIDYxMzI3KQorKysgSmF2
YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUvQ29sbGF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzks
MjcgKzM5LDI3IEBACiAKIG5hbWVzcGFjZSBXVEYgewogCi0gICAgY2xhc3MgQ29sbGF0b3IgOiBw
dWJsaWMgTm9uY29weWFibGUgewotICAgIHB1YmxpYzoKLSAgICAgICAgZW51bSBSZXN1bHQgeyBF
cXVhbCA9IDAsIEdyZWF0ZXIgPSAxLCBMZXNzID0gLTEgfTsKK2NsYXNzIEpTX0VYUE9SVEVEX1NZ
TUJPTCBDb2xsYXRvciA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CitwdWJsaWM6CisgICAgZW51bSBS
ZXN1bHQgeyBFcXVhbCA9IDAsIEdyZWF0ZXIgPSAxLCBMZXNzID0gLTEgfTsKIAotICAgICAgICBD
b2xsYXRvcihjb25zdCBjaGFyKiBsb2NhbGUpOyAvLyBQYXJzaW5nIGlzIGxlbmllbnQ7IGUuZy4g
bGFuZ3VhZ2UgaWRlbnRpZmllcnMgKHN1Y2ggYXMgImVuLVVTIikgYXJlIGFjY2VwdGVkLCB0b28u
Ci0gICAgICAgIH5Db2xsYXRvcigpOwotICAgICAgICB2b2lkIHNldE9yZGVyTG93ZXJGaXJzdChi
b29sKTsKKyAgICBDb2xsYXRvcihjb25zdCBjaGFyKiBsb2NhbGUpOyAvLyBQYXJzaW5nIGlzIGxl
bmllbnQ7IGUuZy4gbGFuZ3VhZ2UgaWRlbnRpZmllcnMgKHN1Y2ggYXMgImVuLVVTIikgYXJlIGFj
Y2VwdGVkLCB0b28uCisgICAgfkNvbGxhdG9yKCk7CisgICAgdm9pZCBzZXRPcmRlckxvd2VyRmly
c3QoYm9vbCk7CiAKLSAgICAgICAgc3RhdGljIFBhc3NPd25QdHI8Q29sbGF0b3I+IHVzZXJEZWZh
dWx0KCk7CisgICAgc3RhdGljIFBhc3NPd25QdHI8Q29sbGF0b3I+IHVzZXJEZWZhdWx0KCk7CiAK
LSAgICAgICAgUmVzdWx0IGNvbGxhdGUoY29uc3QgOjpVQ2hhciosIHNpemVfdCwgY29uc3QgOjpV
Q2hhciosIHNpemVfdCkgY29uc3Q7CisgICAgUmVzdWx0IGNvbGxhdGUoY29uc3QgOjpVQ2hhcios
IHNpemVfdCwgY29uc3QgOjpVQ2hhciosIHNpemVfdCkgY29uc3Q7CiAKLSAgICBwcml2YXRlOgor
cHJpdmF0ZToKICNpZiBVU0UoSUNVX1VOSUNPREUpICYmICFVQ09ORklHX05PX0NPTExBVElPTgot
ICAgICAgICB2b2lkIGNyZWF0ZUNvbGxhdG9yKCkgY29uc3Q7Ci0gICAgICAgIHZvaWQgcmVsZWFz
ZUNvbGxhdG9yKCk7Ci0gICAgICAgIG11dGFibGUgVUNvbGxhdG9yKiBtX2NvbGxhdG9yOworICAg
IHZvaWQgY3JlYXRlQ29sbGF0b3IoKSBjb25zdDsKKyAgICB2b2lkIHJlbGVhc2VDb2xsYXRvcigp
OworICAgIG11dGFibGUgVUNvbGxhdG9yKiBtX2NvbGxhdG9yOwogI2VuZGlmCi0gICAgICAgIGNo
YXIqIG1fbG9jYWxlOwotICAgICAgICBib29sIG1fbG93ZXJGaXJzdDsKLSAgICB9OworICAgIGNo
YXIqIG1fbG9jYWxlOworICAgIGJvb2wgbV9sb3dlckZpcnN0OworfTsKIH0KIAogdXNpbmcgV1RG
OjpDb2xsYXRvcjsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi91bmljb2RlL1VURjguaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvdW5pY29kZS9VVEY4LmgJKHJldmlzaW9uIDYx
MzI3KQorKysgSmF2YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUvVVRGOC5oCSh3b3JraW5nIGNvcHkp
CkBAIC02Niw3ICs2Niw3IEBACiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqKiBzb3Vy
Y2VTdGFydCwgY29uc3QgY2hhciogc291cmNlRW5kLCAKICAgICAgICAgICAgICAgICAgICAgVUNo
YXIqKiB0YXJnZXRTdGFydCwgVUNoYXIqIHRhcmdldEVuZCwgYm9vbCBzdHJpY3QgPSB0cnVlKTsK
IAotICAgIENvbnZlcnNpb25SZXN1bHQgY29udmVydFVURjE2VG9VVEY4KAorICAgIEpTX0VYUE9S
VEVEX1NZTUJPTCBDb252ZXJzaW9uUmVzdWx0IGNvbnZlcnRVVEYxNlRvVVRGOCgKICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgVUNoYXIqKiBzb3VyY2VTdGFydCwgY29uc3QgVUNoYXIqIHNvdXJj
ZUVuZCwgCiAgICAgICAgICAgICAgICAgICAgIGNoYXIqKiB0YXJnZXRTdGFydCwgY2hhciogdGFy
Z2V0RW5kLCBib29sIHN0cmljdCA9IHRydWUpOwogICB9CkluZGV4OiBKYXZhU2NyaXB0Q29yZS93
dGYvQ3VycmVudFRpbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvQ3VycmVu
dFRpbWUuaAkocmV2aXNpb24gNjEzMjcpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvQ3VycmVudFRp
bWUuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsMjcgKzM2LDI3IEBACiAKIG5hbWVzcGFjZSBXVEYg
ewogCi0gICAgLy8gUmV0dXJucyB0aGUgY3VycmVudCBVVEMgdGltZSBpbiBzZWNvbmRzLCBjb3Vu
dGVkIGZyb20gSmFudWFyeSAxLCAxOTcwLgotICAgIC8vIFByZWNpc2lvbiB2YXJpZXMgZGVwZW5k
aW5nIG9uIHBsYXRmb3JtIGJ1dCBpcyB1c3VhbGx5IGFzIGdvb2Qgb3IgYmV0dGVyIAotICAgIC8v
IHRoYW4gYSBtaWxsaXNlY29uZC4KLSAgICBkb3VibGUgY3VycmVudFRpbWUoKTsKKy8vIFJldHVy
bnMgdGhlIGN1cnJlbnQgVVRDIHRpbWUgaW4gc2Vjb25kcywgY291bnRlZCBmcm9tIEphbnVhcnkg
MSwgMTk3MC4KKy8vIFByZWNpc2lvbiB2YXJpZXMgZGVwZW5kaW5nIG9uIHBsYXRmb3JtIGJ1dCBp
cyB1c3VhbGx5IGFzIGdvb2Qgb3IgYmV0dGVyIAorLy8gdGhhbiBhIG1pbGxpc2Vjb25kLgorSlNf
RVhQT1JURURfU1lNQk9MIGRvdWJsZSBjdXJyZW50VGltZSgpOwogCi0gICAgLy8gU2FtZSB0aGlu
ZywgaW4gbWlsbGlzZWNvbmRzLgotICAgIGlubGluZSBkb3VibGUgY3VycmVudFRpbWVNUygpCi0g
ICAgewotICAgICAgICByZXR1cm4gY3VycmVudFRpbWUoKSAqIDEwMDAuMDsgCi0gICAgfQorLy8g
U2FtZSB0aGluZywgaW4gbWlsbGlzZWNvbmRzLgoraW5saW5lIGRvdWJsZSBjdXJyZW50VGltZU1T
KCkKK3sKKyAgICByZXR1cm4gY3VycmVudFRpbWUoKSAqIDEwMDAuMDsgCit9CiAKLSAgICBpbmxp
bmUgdm9pZCBnZXRMb2NhbFRpbWUoY29uc3QgdGltZV90KiBsb2NhbFRpbWUsIHN0cnVjdCB0bSog
bG9jYWxUTSkKLSAgICB7Ci0gICAgI2lmIENPTVBJTEVSKE1TVkM3X09SX0xPV0VSKSB8fCBDT01Q
SUxFUihNSU5HVykgfHwgT1MoV0lOQ0UpCi0gICAgICAgICpsb2NhbFRNID0gKmxvY2FsdGltZShs
b2NhbFRpbWUpOwotICAgICNlbGlmIENPTVBJTEVSKE1TVkMpCi0gICAgICAgIGxvY2FsdGltZV9z
KGxvY2FsVE0sIGxvY2FsVGltZSk7Ci0gICAgI2Vsc2UKLSAgICAgICAgbG9jYWx0aW1lX3IobG9j
YWxUaW1lLCBsb2NhbFRNKTsKLSAgICAjZW5kaWYKLSAgICB9CitpbmxpbmUgdm9pZCBnZXRMb2Nh
bFRpbWUoY29uc3QgdGltZV90KiBsb2NhbFRpbWUsIHN0cnVjdCB0bSogbG9jYWxUTSkKK3sKKyNp
ZiBDT01QSUxFUihNU1ZDN19PUl9MT1dFUikgfHwgQ09NUElMRVIoTUlOR1cpIHx8IE9TKFdJTkNF
KQorICAgICpsb2NhbFRNID0gKmxvY2FsdGltZShsb2NhbFRpbWUpOworI2VsaWYgQ09NUElMRVIo
TVNWQykKKyAgICBsb2NhbHRpbWVfcyhsb2NhbFRNLCBsb2NhbFRpbWUpOworI2Vsc2UKKyAgICBs
b2NhbHRpbWVfcihsb2NhbFRpbWUsIGxvY2FsVE0pOworI2VuZGlmCit9CiAKIH0gLy8gbmFtZXNw
YWNlIFdURgogCkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvZHRvYS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEphdmFTY3JpcHRDb3JlL3d0Zi9kdG9hLmgJKHJldmlzaW9uIDYxMzI3KQorKysgSmF2YVNjcmlw
dENvcmUvd3RmL2R0b2EuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQAogLy8gZHRv
YSgpIGZvciBFQ01BLTI2MiAnVG9TdHJpbmcgQXBwbGllZCB0byB0aGUgTnVtYmVyIFR5cGUuJwog
Ly8gVGhlICpyZXN1bHRMZW5ndGggd2lsbCBoYXZlIHRoZSBsZW5ndGggb2YgdGhlIHJlc3VsdGFu
dCBzdHJpbmcgaW4gYnVmZXIuCiAvLyBUaGUgcmVzdWx0YW50IHN0cmluZyBpc24ndCB0ZXJtaW5h
dGVkIGJ5IDAuCi12b2lkIGRvdWJsZVRvU3RyaW5nSW5KYXZhU2NyaXB0Rm9ybWF0KGRvdWJsZSwg
RHRvYUJ1ZmZlciwgdW5zaWduZWQqIHJlc3VsdExlbmd0aCk7CitKU19FWFBPUlRFRF9TWU1CT0wg
dm9pZCBkb3VibGVUb1N0cmluZ0luSmF2YVNjcmlwdEZvcm1hdChkb3VibGUsIER0b2FCdWZmZXIs
IHVuc2lnbmVkKiByZXN1bHRMZW5ndGgpOwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIApJbmRleDog
SmF2YVNjcmlwdENvcmUvd3RmL0Fzc2VydGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS93dGYvQXNzZXJ0aW9ucy5oCShyZXZpc2lvbiA2MTMyNykKKysrIEphdmFTY3JpcHRDb3Jl
L3d0Zi9Bc3NlcnRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNywxMyArMTM3LDEzIEBACiAg
ICAgV1RGTG9nQ2hhbm5lbFN0YXRlIHN0YXRlOwogfSBXVEZMb2dDaGFubmVsOwogCi12b2lkIFdU
RlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNvbnN0
IGNoYXIqIGZ1bmN0aW9uLCBjb25zdCBjaGFyKiBhc3NlcnRpb24pOwotdm9pZCBXVEZSZXBvcnRB
c3NlcnRpb25GYWlsdXJlV2l0aE1lc3NhZ2UoY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNv
bnN0IGNoYXIqIGZ1bmN0aW9uLCBjb25zdCBjaGFyKiBhc3NlcnRpb24sIGNvbnN0IGNoYXIqIGZv
cm1hdCwgLi4uKSBXVEZfQVRUUklCVVRFX1BSSU5URig1LCA2KTsKLXZvaWQgV1RGUmVwb3J0QXJn
dW1lbnRBc3NlcnRpb25GYWlsdXJlKGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCBj
aGFyKiBmdW5jdGlvbiwgY29uc3QgY2hhciogYXJnTmFtZSwgY29uc3QgY2hhciogYXNzZXJ0aW9u
KTsKLXZvaWQgV1RGUmVwb3J0RmF0YWxFcnJvcihjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwg
Y29uc3QgY2hhciogZnVuY3Rpb24sIGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKSBXVEZfQVRUUklC
VVRFX1BSSU5URig0LCA1KTsKLXZvaWQgV1RGUmVwb3J0RXJyb3IoY29uc3QgY2hhciogZmlsZSwg
aW50IGxpbmUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uLCBjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikg
V1RGX0FUVFJJQlVURV9QUklOVEYoNCwgNSk7Ci12b2lkIFdURkxvZyhXVEZMb2dDaGFubmVsKiBj
aGFubmVsLCBjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikgV1RGX0FUVFJJQlVURV9QUklOVEYoMiwg
Myk7Ci12b2lkIFdURkxvZ1ZlcmJvc2UoY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNvbnN0
IGNoYXIqIGZ1bmN0aW9uLCBXVEZMb2dDaGFubmVsKiBjaGFubmVsLCBjb25zdCBjaGFyKiBmb3Jt
YXQsIC4uLikgV1RGX0FUVFJJQlVURV9QUklOVEYoNSwgNik7CitKU19FWFBPUlRFRF9TWU1CT0wg
dm9pZCBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5l
LCBjb25zdCBjaGFyKiBmdW5jdGlvbiwgY29uc3QgY2hhciogYXNzZXJ0aW9uKTsKK0pTX0VYUE9S
VEVEX1NZTUJPTCB2b2lkIFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmVXaXRoTWVzc2FnZShjb25z
dCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciogZnVuY3Rpb24sIGNvbnN0IGNoYXIq
IGFzc2VydGlvbiwgY29uc3QgY2hhciogZm9ybWF0LCAuLi4pIFdURl9BVFRSSUJVVEVfUFJJTlRG
KDUsIDYpOworSlNfRVhQT1JURURfU1lNQk9MIHZvaWQgV1RGUmVwb3J0QXJndW1lbnRBc3NlcnRp
b25GYWlsdXJlKGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiBmdW5jdGlv
biwgY29uc3QgY2hhciogYXJnTmFtZSwgY29uc3QgY2hhciogYXNzZXJ0aW9uKTsKK0pTX0VYUE9S
VEVEX1NZTUJPTCB2b2lkIFdURlJlcG9ydEZhdGFsRXJyb3IoY29uc3QgY2hhciogZmlsZSwgaW50
IGxpbmUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uLCBjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikgV1RG
X0FUVFJJQlVURV9QUklOVEYoNCwgNSk7CitKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBXVEZSZXBv
cnRFcnJvcihjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciogZnVuY3Rpb24s
IGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKSBXVEZfQVRUUklCVVRFX1BSSU5URig0LCA1KTsKK0pT
X0VYUE9SVEVEX1NZTUJPTCB2b2lkIFdURkxvZyhXVEZMb2dDaGFubmVsKiBjaGFubmVsLCBjb25z
dCBjaGFyKiBmb3JtYXQsIC4uLikgV1RGX0FUVFJJQlVURV9QUklOVEYoMiwgMyk7CitKU19FWFBP
UlRFRF9TWU1CT0wgdm9pZCBXVEZMb2dWZXJib3NlKGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5l
LCBjb25zdCBjaGFyKiBmdW5jdGlvbiwgV1RGTG9nQ2hhbm5lbCogY2hhbm5lbCwgY29uc3QgY2hh
ciogZm9ybWF0LCAuLi4pIFdURl9BVFRSSUJVVEVfUFJJTlRGKDUsIDYpOwogCiAjaWZkZWYgX19j
cGx1c3BsdXMKIH0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMu
aAkocmV2aXNpb24gNjEzMjcpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nUHJpbWl0
aXZlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsMTIgKzEwMCwxMiBAQAogICAgIAogY2xhc3Mg
TXV0ZXggOiBwdWJsaWMgTm9uY29weWFibGUgewogcHVibGljOgotICAgIE11dGV4KCk7Ci0gICAg
fk11dGV4KCk7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIE11dGV4KCk7CisgICAgSlNfRVhQT1JU
RURfU1lNQk9MIH5NdXRleCgpOwogCi0gICAgdm9pZCBsb2NrKCk7Ci0gICAgYm9vbCB0cnlMb2Nr
KCk7Ci0gICAgdm9pZCB1bmxvY2soKTsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBsb2Nr
KCk7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIGJvb2wgdHJ5TG9jaygpOworICAgIEpTX0VYUE9S
VEVEX1NZTUJPTCB2b2lkIHVubG9jaygpOwogCiBwdWJsaWM6CiAgICAgUGxhdGZvcm1NdXRleCYg
aW1wbCgpIHsgcmV0dXJuIG1fbXV0ZXg7IH0KQEAgLTEzNCwxNSArMTM0LDE1IEBACiAKIGNsYXNz
IFRocmVhZENvbmRpdGlvbiA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiBwdWJsaWM6Ci0gICAgVGhy
ZWFkQ29uZGl0aW9uKCk7Ci0gICAgflRocmVhZENvbmRpdGlvbigpOworICAgIEpTX0VYUE9SVEVE
X1NZTUJPTCBUaHJlYWRDb25kaXRpb24oKTsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgflRocmVh
ZENvbmRpdGlvbigpOwogICAgIAotICAgIHZvaWQgd2FpdChNdXRleCYgbXV0ZXgpOworICAgIEpT
X0VYUE9SVEVEX1NZTUJPTCB2b2lkIHdhaXQoTXV0ZXgmIG11dGV4KTsKICAgICAvLyBSZXR1cm5z
IHRydWUgaWYgdGhlIGNvbmRpdGlvbiB3YXMgc2lnbmFsZWQgYmVmb3JlIGFic29sdXRlVGltZSwg
ZmFsc2UgaWYgdGhlIGFic29sdXRlVGltZSB3YXMgcmVhY2hlZCBvciBpcyBpbiB0aGUgcGFzdC4K
ICAgICAvLyBUaGUgYWJzb2x1dGVUaW1lIGlzIGluIHNlY29uZHMsIHN0YXJ0aW5nIG9uIEphbnVh
cnkgMSwgMTk3MC4gVGhlIHRpbWUgaXMgYXNzdW1lZCB0byB1c2UgdGhlIHNhbWUgdGltZSB6b25l
IGFzIFdURjo6Y3VycmVudFRpbWUoKS4KLSAgICBib29sIHRpbWVkV2FpdChNdXRleCYsIGRvdWJs
ZSBhYnNvbHV0ZVRpbWUpOwotICAgIHZvaWQgc2lnbmFsKCk7Ci0gICAgdm9pZCBicm9hZGNhc3Qo
KTsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgYm9vbCB0aW1lZFdhaXQoTXV0ZXgmLCBkb3VibGUg
YWJzb2x1dGVUaW1lKTsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBzaWduYWwoKTsKKyAg
ICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBicm9hZGNhc3QoKTsKICAgICAKIHByaXZhdGU6CiAg
ICAgUGxhdGZvcm1Db25kaXRpb24gbV9jb25kaXRpb247CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9JbnRlcnByZXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmgJKHJldmlzaW9uIDYxMzI3KQorKysgSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDggKzEw
MCw4IEBACiAgICAgICAgIEpTVmFsdWUgZXhlY3V0ZShFdmFsRXhlY3V0YWJsZSogZXZhbE5vZGUs
IENhbGxGcmFtZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmosIFNjb3BlQ2hhaW5Ob2RlKiBzY29w
ZUNoYWluLCBKU1ZhbHVlKiBleGNlcHRpb24pOwogCiAgICAgICAgIEpTVmFsdWUgcmV0cmlldmVB
cmd1bWVudHMoQ2FsbEZyYW1lKiwgSlNGdW5jdGlvbiopIGNvbnN0OwotICAgICAgICBKU1ZhbHVl
IHJldHJpZXZlQ2FsbGVyKENhbGxGcmFtZSosIEpTRnVuY3Rpb24qKSBjb25zdDsKLSAgICAgICAg
dm9pZCByZXRyaWV2ZUxhc3RDYWxsZXIoQ2FsbEZyYW1lKiwgaW50JiBsaW5lTnVtYmVyLCBpbnRw
dHJfdCYgc291cmNlSUQsIFVTdHJpbmcmIHNvdXJjZVVSTCwgSlNWYWx1ZSYgZnVuY3Rpb24pIGNv
bnN0OworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgSlNWYWx1ZSByZXRyaWV2ZUNhbGxlcihD
YWxsRnJhbWUqLCBKU0Z1bmN0aW9uKikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJP
TCB2b2lkIHJldHJpZXZlTGFzdENhbGxlcihDYWxsRnJhbWUqLCBpbnQmIGxpbmVOdW1iZXIsIGlu
dHB0cl90JiBzb3VyY2VJRCwgVVN0cmluZyYgc291cmNlVVJMLCBKU1ZhbHVlJiBmdW5jdGlvbikg
Y29uc3Q7CiAgICAgICAgIAogICAgICAgICB2b2lkIGdldEFyZ3VtZW50c0RhdGEoQ2FsbEZyYW1l
KiwgSlNGdW5jdGlvbiomLCBwdHJkaWZmX3QmIGZpcnN0UGFyYW1ldGVySW5kZXgsIFJlZ2lzdGVy
KiYgYXJndiwgaW50JiBhcmdjKTsKICAgICAgICAgCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9BUEkv
dGVzdHMvSlNOb2RlTGlzdC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0FQSS90ZXN0
cy9KU05vZGVMaXN0LmMJKHJldmlzaW9uIDYxMzI3KQorKysgSmF2YVNjcmlwdENvcmUvQVBJL3Rl
c3RzL0pTTm9kZUxpc3QuYwkod29ya2luZyBjb3B5KQpAQCAtMjMsNiArMjMsOCBAQAogICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCiAgKi8KIAorI2luY2x1ZGUgImNvbmZpZy5oIgorCiAjaW5jbHVkZSAiSlNOb2Rl
LmgiCiAjaW5jbHVkZSAiSlNOb2RlTGlzdC5oIgogI2luY2x1ZGUgIkpTT2JqZWN0UmVmLmgiCklu
ZGV4OiBKYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvSlNOb2RlLmMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2
YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0pTTm9kZS5jCShyZXZpc2lvbiA2MTMyNykKKysrIEphdmFT
Y3JpcHRDb3JlL0FQSS90ZXN0cy9KU05vZGUuYwkod29ya2luZyBjb3B5KQpAQCAtMjMsNiArMjMs
OCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAorI2luY2x1ZGUgImNvbmZpZy5oIgorCiAjaW5j
bHVkZSAiSlNOb2RlLmgiCiAjaW5jbHVkZSAiSlNOb2RlTGlzdC5oIgogI2luY2x1ZGUgIkpTT2Jq
ZWN0UmVmLmgiCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5jCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMJKHJldmlzaW9uIDYx
MzI3KQorKysgSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkuYwkod29ya2luZyBjb3B5
KQpAQCAtMjMsNiArMjMsOCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAorI2luY2x1ZGUgImNv
bmZpZy5oIgorCiAjaW5jbHVkZSAiSmF2YVNjcmlwdENvcmUuaCIKICNpbmNsdWRlICJKU0Jhc2VQ
cml2YXRlLmgiCiAjaW5jbHVkZSAiSlNDb250ZXh0UmVmUHJpdmF0ZS5oIgpJbmRleDogSmF2YVNj
cmlwdENvcmUvQVBJL3Rlc3RzL21pbmlkb20uYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS9BUEkvdGVzdHMvbWluaWRvbS5jCShyZXZpc2lvbiA2MTMyNykKKysrIEphdmFTY3JpcHRDb3Jl
L0FQSS90ZXN0cy9taW5pZG9tLmMJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDggQEAKICAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAogICovCiAKKyNpbmNsdWRlICJjb25maWcuaCIKKwogI2luY2x1ZGUgIkpT
Q29udGV4dFJlZi5oIgogI2luY2x1ZGUgIkpTTm9kZS5oIgogI2luY2x1ZGUgIkpTT2JqZWN0UmVm
LmgiCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNj
cmlwdENvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA2MTM0OSkKKysrIEphdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyNiBAQAorMjAxMC0wNi0xNyAgS2V2
aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgSlNfRVhQT1JURURfU1lNQk9MIHRv
IGV4cG9ydCBKU0NvcmUgc3ltYm9scyBuZWVkZWQgYnkgb3RoZXIgV2ViS2l0IGxpYnJhcmllcy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NTUxCisK
KyAgICAgICAgKiBBUEkvdGVzdHMvSlNOb2RlLmM6CisgICAgICAgICogQVBJL3Rlc3RzL0pTTm9k
ZUxpc3QuYzoKKyAgICAgICAgKiBBUEkvdGVzdHMvbWluaWRvbS5jOgorICAgICAgICAqIEFQSS90
ZXN0cy90ZXN0YXBpLmM6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
Lmg6CisgICAgICAgICogY29uZmlnLmg6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXIuaDoK
KyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5oOgorICAgICAgICAqIGludGVy
cHJldGVyL0ludGVycHJldGVyLmg6CisgICAgICAgICogcGNyZS9wY3JlLmg6CisgICAgICAgICog
cHJvZmlsZXIvUHJvZmlsZXIuaDoKKyAgICAgICAgKiBydW50aW1lL0FyZ0xpc3QuaDoKKyAgICAg
ICAgKiBydW50aW1lL0NhbGxEYXRhLmg6CisgICAgICAgICogcnVudGltZS9Db2xsZWN0b3IuY3Bw
OgorICAgICAgICAqIHJ1bnRpbWUvQ29sbGVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9Db2xs
ZWN0b3JIZWFwSXRlcmF0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL0NvbXBsZXRpb24uaDoKKyAg
ICAgICAgKiBydW50aW1lL0NvbnN0cnVjdERhdGEuaDoKKyAgICAgICAgKiBydW50aW1lL0RhdGVJ
bnN0YW5jZS5oOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3IuaDoKKyAgICAgICAgKiBydW50aW1l
L0V4Y2VwdGlvbkhlbHBlcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0
b3IuaDoKKyAgICAgICAgKiBydW50aW1lL0lkZW50aWZpZXIuaDoKKyAgICAgICAgKiBydW50aW1l
L0luaXRpYWxpemVUaHJlYWRpbmcuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGVybmFsRnVuY3Rp
b24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuaDoKKyAgICAgICAgKiBydW50aW1lL0pT
Qnl0ZUFycmF5Lmg6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKEpTQzo6
SlNDZWxsOjp2cHRyKToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpzZXRWUHRyKToKKyAgICAgICAg
KEpTQzo6SlNDZWxsOjppc1N0cmluZyk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6
CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbERhdGEuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9i
YWxEYXRhOjopOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAg
KEpTQzo6SlNHbG9iYWxPYmplY3Q6OkpTR2xvYmFsT2JqZWN0RGF0YTo6SlNHbG9iYWxPYmplY3RE
YXRhKToKKyAgICAgICAgKiBydW50aW1lL0pTTG9jay5oOgorICAgICAgICAoSlNDOjpKU0xvY2s6
Oik6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6cHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xv
dCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3QpOgorICAgICAgICAoSlNDOjpK
U09iamVjdDo6cHV0RGlyZWN0RnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3RX
aXRoR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAg
ICAoSlNDOjpKU1N0cmluZzo6dmFsdWUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNWYWx1ZS5oOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU1Zh
cmlhYmxlT2JqZWN0OjpzeW1ib2xUYWJsZSk6CisgICAgICAgICogcnVudGltZS9KU1dyYXBwZXJP
YmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5oOgorICAgICAgICAqIHJ1bnRpbWUv
TWFya1N0YWNrLmg6CisgICAgICAgICogcnVudGltZS9PYmplY3RQcm90b3R5cGUuaDoKKyAgICAg
ICAgKiBydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5oOgorICAgICAgICAqIHJ1bnRpbWUvUHJv
cGVydHlOYW1lQXJyYXkuaDoKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5U2xvdC5oOgorICAg
ICAgICAqIHJ1bnRpbWUvUm9wZUltcGwuaDoKKyAgICAgICAgKiBydW50aW1lL1NtYWxsU3RyaW5n
cy5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0Lmg6CisgICAgICAgICogcnVudGlt
ZS9TdHJ1Y3R1cmUuaDoKKyAgICAgICAgKiBydW50aW1lL1RpbWVvdXRDaGVja2VyLmg6CisgICAg
ICAgICogcnVudGltZS9VU3RyaW5nLmg6CisgICAgICAgIChKU0M6OlVTdHJpbmc6OlVTdHJpbmcp
OgorICAgICAgICAoSlNDOjpVU3RyaW5nOjppc051bGwpOgorICAgICAgICAoSlNDOjpVU3RyaW5n
Ojp+VVN0cmluZyk6CisgICAgICAgIChKU0M6OlVTdHJpbmc6Om9wZXJhdG9yPSk6CisgICAgICAg
ICogd3NjcmlwdDoKKyAgICAgICAgKiB3dGYvQXNzZXJ0aW9ucy5oOgorICAgICAgICAqIHd0Zi9C
eXRlQXJyYXkuaDoKKyAgICAgICAgKiB3dGYvQ3VycmVudFRpbWUuaDoKKyAgICAgICAgKFdURjo6
Y3VycmVudFRpbWVNUyk6CisgICAgICAgIChXVEY6OmdldExvY2FsVGltZSk6CisgICAgICAgICog
d3RmL0RhdGVNYXRoLmg6CisgICAgICAgICogd3RmL0Zhc3RNYWxsb2MuaDoKKyAgICAgICAgKFdU
Rjo6VHJ5TWFsbG9jUmV0dXJuVmFsdWU6OlRyeU1hbGxvY1JldHVyblZhbHVlKToKKyAgICAgICAg
KFdURjo6VHJ5TWFsbG9jUmV0dXJuVmFsdWU6On5UcnlNYWxsb2NSZXR1cm5WYWx1ZSk6CisgICAg
ICAgIChXVEY6OlRyeU1hbGxvY1JldHVyblZhbHVlOjpvcGVyYXRvciBQb3NzaWJseU51bGw8VD4p
OgorICAgICAgICAoV1RGOjpUcnlNYWxsb2NSZXR1cm5WYWx1ZTo6Z2V0VmFsdWUpOgorICAgICAg
ICAoV1RGOjpJbnRlcm5hbDo6KToKKyAgICAgICAgKFdURjo6SW50ZXJuYWw6OmZhc3RNYWxsb2NN
YXRjaFZhbGlkYXRpb25UeXBlKToKKyAgICAgICAgKFdURjo6SW50ZXJuYWw6OmZhc3RNYWxsb2NN
YXRjaFZhbGlkYXRpb25WYWx1ZSk6CisgICAgICAgIChXVEY6OkludGVybmFsOjpzZXRGYXN0TWFs
bG9jTWF0Y2hWYWxpZGF0aW9uVHlwZSk6CisgICAgICAgIChXVEY6OmZhc3RNYWxsb2NNYXRjaFZh
bGlkYXRlTWFsbG9jKToKKyAgICAgICAgKFdURjo6ZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVGcmVl
KToKKyAgICAgICAgKiB3dGYvTWFpblRocmVhZC5oOgorICAgICAgICAqIHd0Zi9SYW5kb21OdW1i
ZXIuaDoKKyAgICAgICAgKiB3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg6CisgICAgICAgIChX
VEY6Oik6CisgICAgICAgICogd3RmL1RocmVhZFNwZWNpZmljLmg6CisgICAgICAgICogd3RmL1Ro
cmVhZGluZy5oOgorICAgICAgICAqIHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg6CisgICAgICAg
ICogd3RmL1dURlRocmVhZERhdGEuaDoKKyAgICAgICAgKiB3dGYvZHRvYS5oOgorICAgICAgICAq
IHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oOgorICAgICAgICAoV2ViQ29yZTo6QXRvbWljU3RyaW5n
OjpBdG9taWNTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6QXRvbWljU3RyaW5nOjppc0hhc2hU
YWJsZURlbGV0ZWRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNTdHJpbmc6On5BdG9t
aWNTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6QXRvbWljU3RyaW5nOjppbXBsKToKKyAgICAg
ICAgKFdlYkNvcmU6OkF0b21pY1N0cmluZzo6b3BlcmF0b3I9KToKKyAgICAgICAgKiB3dGYvdGV4
dC9DU3RyaW5nLmg6CisgICAgICAgIChXVEY6OkNTdHJpbmc6On5DU3RyaW5nKToKKyAgICAgICAg
KFdURjo6Q1N0cmluZzo6ZGF0YSk6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5oOgor
ICAgICAgICAoV2ViQ29yZTo6U3RyaW5nSW1wbDo6Y2hhcmFjdGVycyk6CisgICAgICAgICogd3Rm
L3RleHQvU3RyaW5nU3RhdGljcy5jcHA6CisgICAgICAgICogd3RmL3RleHQvV1RGU3RyaW5nLmg6
CisgICAgICAgIChXZWJDb3JlOjpTdHJpbmc6OlN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpT
dHJpbmc6On5TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U3RyaW5nOjppc0hhc2hUYWJsZURl
bGV0ZWRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHJpbmc6OmlzRW1wdHkpOgorICAgICAg
ICAoV2ViQ29yZTo6U3RyaW5nOjppbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OlN0cmluZzo6b3Bl
cmF0b3I9KToKKyAgICAgICAgKiB3dGYvdW5pY29kZS9Db2xsYXRvci5oOgorICAgICAgICAoV1RG
OjopOgorICAgICAgICAqIHd0Zi91bmljb2RlL1VURjguaDoKKwogMjAxMC0wNi0xNyAgU2h1IENo
YW5nICA8Y2hhbmcuc2h1QG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRo
IFJvaGRlIENocmlzdGlhbnNlbi4KSW5kZXg6IEphdmFTY3JpcHRDb3JlL3BjcmUvcGNyZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3BjcmUvcGNyZS5oCShyZXZpc2lvbiA2MTMyNykK
KysrIEphdmFTY3JpcHRDb3JlL3BjcmUvcGNyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSwxNCAr
NTUsMTQgQEAKIGNvbnN0IGludCBKU1JlZ0V4cEVycm9yTm9NZW1vcnkgPSAtMzsKIGNvbnN0IGlu
dCBKU1JlZ0V4cEVycm9ySW50ZXJuYWwgPSAtNDsKIAotSlNSZWdFeHAqIGpzUmVnRXhwQ29tcGls
ZShjb25zdCBVQ2hhciogcGF0dGVybiwgaW50IHBhdHRlcm5MZW5ndGgsCitKU19FWFBPUlRFRF9T
WU1CT0wgSlNSZWdFeHAqIGpzUmVnRXhwQ29tcGlsZShjb25zdCBVQ2hhciogcGF0dGVybiwgaW50
IHBhdHRlcm5MZW5ndGgsCiAgICAgSlNSZWdFeHBJZ25vcmVDYXNlT3B0aW9uLCBKU1JlZ0V4cE11
bHRpbGluZU9wdGlvbiwKICAgICB1bnNpZ25lZCogbnVtU3VicGF0dGVybnMsIGNvbnN0IGNoYXIq
KiBlcnJvck1lc3NhZ2UpOwogCi1pbnQganNSZWdFeHBFeGVjdXRlKGNvbnN0IEpTUmVnRXhwKiwK
K0pTX0VYUE9SVEVEX1NZTUJPTCBpbnQganNSZWdFeHBFeGVjdXRlKGNvbnN0IEpTUmVnRXhwKiwK
ICAgICBjb25zdCBVQ2hhciogc3ViamVjdCwgaW50IHN1YmplY3RMZW5ndGgsIGludCBzdGFydE9m
ZnNldCwKICAgICBpbnQqIG9mZnNldHNWZWN0b3IsIGludCBvZmZzZXRzVmVjdG9yTGVuZ3RoKTsK
IAotdm9pZCBqc1JlZ0V4cEZyZWUoSlNSZWdFeHAqKTsKK0pTX0VYUE9SVEVEX1NZTUJPTCB2b2lk
IGpzUmVnRXhwRnJlZShKU1JlZ0V4cCopOwogCiAjZW5kaWYKSW5kZXg6IEphdmFTY3JpcHRDb3Jl
L3dzY3JpcHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3NjcmlwdAkocmV2aXNpb24g
NjEzMjcpCisrKyBKYXZhU2NyaXB0Q29yZS93c2NyaXB0CSh3b3JraW5nIGNvcHkpCkBAIC03NSw2
ICs3NSw3IEBACiBkZWYgYnVpbGQoYmxkKToKICAgICBpbXBvcnQgT3B0aW9ucwogCisgICAgYmxk
LmVudi5MSUJESVIgPSBvdXRwdXRfZGlyCiAgICAgZnVsbF9kaXJzID0gZ2V0X2RpcnNfZm9yX2Zl
YXR1cmVzKGpzY29yZV9kaXIsIGZlYXR1cmVzPVtidWlsZF9wb3J0XSwgZGlycz1qc2NvcmVfZGly
cykKIAogICAgIGluY2x1ZGVzID0gY29tbW9uX2luY2x1ZGVzICsgZnVsbF9kaXJzCkBAIC04Myw5
ICs4NCwxMCBAQAogCiAgICAgIyAxLiBBIHNpbXBsZSBwcm9ncmFtCiAgICAganNjb3JlID0gYmxk
Lm5ld190YXNrX2dlbigKLSAgICAgICAgZmVhdHVyZXMgPSAnY3h4IGNzdGF0aWNsaWInLAorICAg
ICAgICBmZWF0dXJlcyA9ICdjeHggY3NobGliIGltcGxpYicsCiAgICAgICAgIGluY2x1ZGVzID0g
Jy4gLi4gYXNzZW1ibGVyIERlcml2ZWRTb3VyY2VzIEZvcndhcmRpbmdIZWFkZXJzICcgKyAnICcu
am9pbihpbmNsdWRlcyksCiAgICAgICAgIHNvdXJjZSA9IHNvdXJjZXMsCisgICAgICAgIGRlZmlu
ZXMgPSBbJ0JVSUxESU5HX0phdmFTY3JpcHRDb3JlJ10sCiAgICAgICAgIHRhcmdldCA9ICdqc2Nv
cmUnLAogICAgICAgICB1c2VsaWIgPSAnV1ggSUNVICcgKyBnZXRfY29uZmlnKCksCiAgICAgICAg
IHVzZWxpYl9sb2NhbCA9ICcnLApJbmRleDogSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmls
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlci5oCShy
ZXZpc2lvbiA2MTMyNykKKysrIEphdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTUxLDExICs1MSwxMSBAQAogICAgICAgICAgICAgcmV0dXJuICZzX3No
YXJlZEVuYWJsZWRQcm9maWxlclJlZmVyZW5jZTsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRp
YyBQcm9maWxlciogcHJvZmlsZXIoKTsgCisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0
aWMgUHJvZmlsZXIqIHByb2ZpbGVyKCk7IAogICAgICAgICBzdGF0aWMgQ2FsbElkZW50aWZpZXIg
Y3JlYXRlQ2FsbElkZW50aWZpZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlLCBjb25zdCBVU3Ry
aW5nJiBzb3VyY2VVUkwsIGludCBsaW5lTnVtYmVyKTsKIAotICAgICAgICB2b2lkIHN0YXJ0UHJv
ZmlsaW5nKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmIHRpdGxlKTsKLSAgICAgICAgUGFzc1Jl
ZlB0cjxQcm9maWxlPiBzdG9wUHJvZmlsaW5nKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmIHRp
dGxlKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZvaWQgc3RhcnRQcm9maWxpbmcoRXhl
Y1N0YXRlKiwgY29uc3QgVVN0cmluZyYgdGl0bGUpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1C
T0wgUGFzc1JlZlB0cjxQcm9maWxlPiBzdG9wUHJvZmlsaW5nKEV4ZWNTdGF0ZSosIGNvbnN0IFVT
dHJpbmcmIHRpdGxlKTsKIAogICAgICAgICB2b2lkIHdpbGxFeGVjdXRlKEV4ZWNTdGF0ZSosIEpT
VmFsdWUgZnVuY3Rpb24pOwogICAgICAgICB2b2lkIHdpbGxFeGVjdXRlKEV4ZWNTdGF0ZSosIGNv
bnN0IFVTdHJpbmcmIHNvdXJjZVVSTCwgaW50IHN0YXJ0aW5nTGluZU51bWJlcik7CkluZGV4OiBK
YXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEphdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmgJKHJldmlzaW9uIDYx
MzI3KQorKysgSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuaAkod29y
a2luZyBjb3B5KQpAQCAtNTEsMTAgKzUxLDEwIEBACiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBk
eW5hbWljR2xvYmFsT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9jYWxsRnJhbWUtPmR5bmFtaWNH
bG9iYWxPYmplY3QoKTsgfQogICAgICAgICBjb25zdCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFp
bigpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbEZyYW1lLT5zY29wZUNoYWluKCk7IH0KICAgICAgICAg
Y29uc3QgVVN0cmluZyogZnVuY3Rpb25OYW1lKCkgY29uc3Q7Ci0gICAgICAgIFVTdHJpbmcgY2Fs
Y3VsYXRlZEZ1bmN0aW9uTmFtZSgpIGNvbnN0OwotICAgICAgICBUeXBlIHR5cGUoKSBjb25zdDsK
LSAgICAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QoKSBjb25zdDsKLSAgICAgICAgSlNWYWx1ZSBl
dmFsdWF0ZShjb25zdCBVU3RyaW5nJiwgSlNWYWx1ZSYgZXhjZXB0aW9uKSBjb25zdDsKKyAgICAg
ICAgSlNfRVhQT1JURURfU1lNQk9MIFVTdHJpbmcgY2FsY3VsYXRlZEZ1bmN0aW9uTmFtZSgpIGNv
bnN0OworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgVHlwZSB0eXBlKCkgY29uc3Q7CisgICAg
ICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBKU09iamVjdCogdGhpc09iamVjdCgpIGNvbnN0OworICAg
ICAgICBKU19FWFBPUlRFRF9TWU1CT0wgSlNWYWx1ZSBldmFsdWF0ZShjb25zdCBVU3RyaW5nJiwg
SlNWYWx1ZSYgZXhjZXB0aW9uKSBjb25zdDsKICAgICAgICAgSlNWYWx1ZSBleGNlcHRpb24oKSBj
b25zdCB7IHJldHVybiBtX2V4Y2VwdGlvbjsgfQogCiAgICAgcHJpdmF0ZToKSW5kZXg6IEphdmFT
Y3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENv
cmUvZGVidWdnZXIvRGVidWdnZXIuaAkocmV2aXNpb24gNjEzMjcpCisrKyBKYXZhU2NyaXB0Q29y
ZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxMCArMzYsMTAgQEAK
IAogICAgIGNsYXNzIERlYnVnZ2VyIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwgfkRl
YnVnZ2VyKCk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIH5EZWJ1Z2dlcigp
OwogCi0gICAgICAgIHZvaWQgYXR0YWNoKEpTR2xvYmFsT2JqZWN0Kik7Ci0gICAgICAgIHZpcnR1
YWwgdm9pZCBkZXRhY2goSlNHbG9iYWxPYmplY3QqKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lN
Qk9MIHZvaWQgYXR0YWNoKEpTR2xvYmFsT2JqZWN0Kik7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZ
TUJPTCB2aXJ0dWFsIHZvaWQgZGV0YWNoKEpTR2xvYmFsT2JqZWN0Kik7CiAKICAgICAgICAgdmly
dHVhbCB2b2lkIHNvdXJjZVBhcnNlZChFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgaW50
IGVycm9yTGluZU51bWJlciwgY29uc3QgVVN0cmluZyYgZXJyb3JNZXNzYWdlKSA9IDA7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBleGNlcHRpb24oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmLCBpbnRw
dHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGJvb2wgaGFzSGFuZGxlcikgPSAwOwpAQCAt
NTEsNyArNTEsNyBAQAogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRXhlY3V0ZVByb2dyYW0oY29u
c3QgRGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIp
ID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlYWNoQnJlYWtwb2ludChjb25zdCBEZWJ1
Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlcikgPSAwOwog
Ci0gICAgICAgIHZvaWQgcmVjb21waWxlQWxsSlNGdW5jdGlvbnMoSlNHbG9iYWxEYXRhKik7Cisg
ICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIHJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKEpT
R2xvYmFsRGF0YSopOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgSGFzaFNldDxKU0dsb2JhbE9i
amVjdCo+IG1fZ2xvYmFsT2JqZWN0czsKSW5kZXg6IEphdmFTY3JpcHRHbHVlL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0R2x1ZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDYxMzQ5KQor
KysgSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIg
QEAKKzIwMTAtMDYtMTcgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIEpT
X0VYUE9SVEVEX1NZTUJPTCB0byBleHBvcnQgSlNDb3JlIHN5bWJvbHMgbmVlZGVkIGJ5IG90aGVy
IFdlYktpdCBsaWJyYXJpZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yNzU1MQorCisgICAgICAgICogY29uZmlnLmg6CisKIDIwMTAtMDYtMDIgIEdh
dmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IE9saXZlciBIdW50LgpJbmRleDogSmF2YVNjcmlwdEdsdWUvY29uZmlnLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gSmF2YVNjcmlwdEdsdWUvY29uZmlnLmgJKHJldmlzaW9uIDYxMzI3KQorKysgSmF2
YVNjcmlwdEdsdWUvY29uZmlnLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3LDUgKzE3LDQgQEAKIC8q
IFVzaW5nIFY4IGltcGxpZXMgbm90IHVzaW5nIEpTQyBhbmQgdmljZSB2ZXJzYSAqLwogI2RlZmlu
ZSBXVEZfVVNFX0pTQyAhV1RGX1VTRV9WOAogCi0jZGVmaW5lIEpTX0VYUE9SVERBVEEKLSNkZWZp
bmUgSlNfRVhQT1JUQ0xBU1MKKyNkZWZpbmUgSlNfRVhQT1JURURfU1lNQk9MCkluZGV4OiBXZWJL
aXQvY2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAJKHJl
dmlzaW9uIDYxMzI3KQorKysgV2ViS2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudENGLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksMTQgKzM5LDEyIEBACiAKICNpZiBkZWZp
bmVkKFdJTjMyKSB8fCBkZWZpbmVkKF9XSU4zMikKICNpZiBkZWZpbmVkKEJVSUxESU5HX0phdmFT
Y3JpcHRDb3JlKSB8fCBkZWZpbmVkKEJVSUxESU5HX1dURikKLSNkZWZpbmUgSlNfRVhQT1JUREFU
QSBfX2RlY2xzcGVjKGRsbGV4cG9ydCkKKyNkZWZpbmUgSlNfRVhQT1JURURfU1lNQk9MIF9fZGVj
bHNwZWMoZGxsZXhwb3J0KQogI2Vsc2UKLSNkZWZpbmUgSlNfRVhQT1JUREFUQSBfX2RlY2xzcGVj
KGRsbGltcG9ydCkKKyNkZWZpbmUgSlNfRVhQT1JURURfU1lNQk9MIF9fZGVjbHNwZWMoZGxsaW1w
b3J0KQogI2VuZGlmCi0jZGVmaW5lIEpTX0VYUE9SVENMQVNTIEpTX0VYUE9SVERBVEEKICNlbHNl
Ci0jZGVmaW5lIEpTX0VYUE9SVERBVEEKLSNkZWZpbmUgSlNfRVhQT1JUQ0xBU1MKKyNkZWZpbmUg
SlNfRVhQT1JURURfU1lNQk9MCiAjZW5kaWYKIAogI2luY2x1ZGUgIldlYkluc3BlY3RvckNsaWVu
dC5oIgpJbmRleDogV2ViS2l0L2NmL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2Yv
Q2hhbmdlTG9nCShyZXZpc2lvbiA2MTM0OSkKKysrIFdlYktpdC9jZi9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxMiBAQAorMjAxMC0wNi0xNyAgS2V2aW4gT2xsaXZpZXIgIDxr
ZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBVc2UgSlNfRVhQT1JURURfU1lNQk9MIHRvIGV4cG9ydCBKU0NvcmUg
c3ltYm9scyBuZWVkZWQgYnkgb3RoZXIgV2ViS2l0IGxpYnJhcmllcy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NTUxCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHA6CisKIDIwMTAtMDYtMTQgIElseWEg
VGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IFBhdmVsIEZlbGRtYW4uCkluZGV4OiBXZWJLaXQvd3gvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC93eC9DaGFuZ2VMb2cJKHJldmlzaW9uIDYxMzQ5KQorKysgV2ViS2l0L3d4L0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDEwLTA2LTE3ICBLZXZpbiBP
bGxpdmllciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBKU19FWFBPUlRFRF9TWU1CT0wgdG8gZXhw
b3J0IEpTQ29yZSBzeW1ib2xzIG5lZWRlZCBieSBvdGhlciBXZWJLaXQgbGlicmFyaWVzLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc1NTEKKworICAg
ICAgICAqIHdzY3JpcHQ6CisKIDIwMTAtMDYtMTUgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCkluZGV4OiBXZWJLaXQvd3gv
d3NjcmlwdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd3gvd3NjcmlwdAkocmV2aXNpb24gNjEzMjcp
CisrKyBXZWJLaXQvd3gvd3NjcmlwdAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQAog
ICAgIAogZGVmIHByZV9idWlsZChibGQpOgogICAgICIiIgotICAgIFRoZSB3eFdlYktpdCBsaWJy
YXJ5IHNob3VsZCBiZSByZWJ1aWx0IGlmIGpzY29yZSBvciB3ZWJjb3JlIGNoYW5nZXMsCisgICAg
VGhlIHd4V2ViS2l0IGxpYnJhcnkgc2hvdWxkIGJlIHJlYnVpbHQgaWYgd2ViY29yZSBjaGFuZ2Vz
LAogICAgIHNvIHdlIG1ha2UgdGhvc2Ugc3RhdGljIGxpYnMgYXMgZGVwZW5kZW5jaWVzLgogICAg
ICIiIgogICAgIApAQCAtNzQsMTMgKzc0LDEwIEBACiAgICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0
c3dpdGgoJ3dpbicpOgogICAgICAgICBleHQgPSAnLmxpYicKICAgICAKLSAgICBsaWJqc2NvcmUg
PSBvcy5wYXRoLmpvaW4ob3V0cHV0X2RpciwgJ2xpYmpzY29yZSVzJyAlIGV4dCkKICAgICBsaWJ3
ZWJjb3JlID0gb3MucGF0aC5qb2luKG91dHB1dF9kaXIsICdsaWJ3ZWJjb3JlJXMnICUgZXh0KQog
ICAgIAotICAgIGFzc2VydCBvcy5wYXRoLmV4aXN0cyhsaWJqc2NvcmUpCiAgICAgYXNzZXJ0IG9z
LnBhdGguZXhpc3RzKGxpYndlYmNvcmUpCiAgICAgCi0gICAgYmxkLmVudi5DWFhERVBTX0pTQ09S
RSA9IFV0aWxzLmhfZmlsZShsaWJqc2NvcmUpCiAgICAgYmxkLmVudi5DWFhERVBTX1dFQkNPUkUg
PSBVdGlscy5oX2ZpbGUobGlid2ViY29yZSkKICAgICAKIGRlZiBidWlsZChibGQpOgpJbmRleDog
V2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDYxMzQ5KQorKysgV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxMiBAQAorMjAxMC0wNi0xNyAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhl
b2xsaXZpZXJzLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBVc2UgSlNfRVhQT1JURURfU1lNQk9MIHRvIGV4cG9ydCBKU0NvcmUgc3ltYm9scyBu
ZWVkZWQgYnkgb3RoZXIgV2ViS2l0IGxpYnJhcmllcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NTUxCisKKyAgICAgICAgKiBXZWJLaXRQcmVmaXgu
aDoKKwogMjAxMC0wNi0xNyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KSW5kZXg6IFdlYktpdC9tYWMvV2ViS2l0UHJlZml4
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJLaXRQcmVmaXguaAkocmV2aXNpb24gNjEz
MjcpCisrKyBXZWJLaXQvbWFjL1dlYktpdFByZWZpeC5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCw2
ICs3MCw4IEBACiAjaW1wb3J0IDxDb2NvYS9Db2NvYS5oPgogI2VuZGlmCiAKKyNkZWZpbmUgSlNf
RVhQT1JURURfU1lNQk9MCisKICNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KIAogI2luY2x1ZGUg
PFdlYkNvcmUvRW1wdHlQcm90b2NvbERlZmluaXRpb25zLmg+CkBAIC04OSw2ICs5MSw0IEBACiAj
dW5kZWYgdHJ5CiAjdW5kZWYgY2F0Y2gKIAotI2RlZmluZSBKU19FWFBPUlREQVRBCi0jZGVmaW5l
IEpTX0VYUE9SVENMQVNTCiAjZGVmaW5lIFdFQktJVF9FWFBPUlREQVRBCkluZGV4OiBXZWJDb3Jl
L2NvbmZpZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY29uZmlnLmgJKHJldmlzaW9uIDYxMzI3
KQorKysgV2ViQ29yZS9jb25maWcuaAkod29ya2luZyBjb3B5KQpAQCAtMjksMjEgKzI5LDE5IEBA
CiAKICNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KIAotI2lmICFQTEFURk9STShDSFJPTUlVTSkg
JiYgT1MoV0lORE9XUykgJiYgIWRlZmluZWQoQlVJTERJTkdfV1hfXykgJiYgIUNPTVBJTEVSKEdD
QykKKyNpZiAhUExBVEZPUk0oQ0hST01JVU0pICYmIE9TKFdJTkRPV1MpICYmICFDT01QSUxFUihH
Q0MpCiAjaWYgZGVmaW5lZChCVUlMRElOR19KYXZhU2NyaXB0Q29yZSkgfHwgZGVmaW5lZChCVUlM
RElOR19XVEYpCi0jZGVmaW5lIEpTX0VYUE9SVERBVEEgX19kZWNsc3BlYyhkbGxleHBvcnQpCisj
ZGVmaW5lIEpTX0VYUE9SVEVEX1NZTUJPTCBfX2RlY2xzcGVjKGRsbGV4cG9ydCkKICNlbHNlCi0j
ZGVmaW5lIEpTX0VYUE9SVERBVEEgX19kZWNsc3BlYyhkbGxpbXBvcnQpCisjZGVmaW5lIEpTX0VY
UE9SVEVEX1NZTUJPTCBfX2RlY2xzcGVjKGRsbGltcG9ydCkKICNlbmRpZgogI2lmIGRlZmluZWQo
QlVJTERJTkdfV2ViQ29yZSkgfHwgZGVmaW5lZChCVUlMRElOR19XZWJLaXQpCiAjZGVmaW5lIFdF
QktJVF9FWFBPUlREQVRBIF9fZGVjbHNwZWMoZGxsZXhwb3J0KQogI2Vsc2UKICNkZWZpbmUgV0VC
S0lUX0VYUE9SVERBVEEgX19kZWNsc3BlYyhkbGxpbXBvcnQpCiAjZW5kaWYKLSNkZWZpbmUgSlNf
RVhQT1JUQ0xBU1MgSlNfRVhQT1JUREFUQQogI2Vsc2UKLSNkZWZpbmUgSlNfRVhQT1JUREFUQQot
I2RlZmluZSBKU19FWFBPUlRDTEFTUworI2RlZmluZSBKU19FWFBPUlRFRF9TWU1CT0wKICNkZWZp
bmUgV0VCS0lUX0VYUE9SVERBVEEKICNlbmRpZgogCkluZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gNjEzNDkpCisrKyBXZWJD
b3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDEwLTA2LTE3
ICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBKU19FWFBPUlRFRF9TWU1C
T0wgdG8gZXhwb3J0IEpTQ29yZSBzeW1ib2xzIG5lZWRlZCBieSBvdGhlciBXZWJLaXQgbGlicmFy
aWVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc1
NTEKKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQXJyYXlCdWZmZXJWaWV3Q3VzdG9tLmNwcDoK
KyAgICAgICAgKiBjb25maWcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvZ3RrMmRyYXdpbmcu
YzoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvTG9nZ2luZ01hYy5tbToKKyAgICAgICAgKiBwbGF0
Zm9ybS93aW5jZS9TaGFyZWRUaW1lcldpbmNlLmNwcDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmg6CisKIDIwMTAtMDYtMTcgIEtpbnVrbyBZYXN1ZGEg
IDxraW51a29AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEppYW4gTGkuCklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2d0ay9ndGsyZHJhd2luZy5jCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGxhdGZvcm0vZ3RrL2d0azJkcmF3aW5nLmMJKHJldmlzaW9uIDYxMzI3KQorKysgV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvZ3RrMmRyYXdpbmcuYwkod29ya2luZyBjb3B5KQpAQCAtNDcsNiAr
NDcsNyBAQAogI2luY2x1ZGUgPGdkay9nZGtwcml2YXRlLmg+CiAjaW5jbHVkZSAiZ3RrZHJhd2lu
Zy5oIgogCisjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQXNzZXJ0aW9ucy5oIgogCiAj
aW5jbHVkZSA8bWF0aC5oPgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9nZ2luZ01hYy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2dnaW5nTWFjLm1tCShyZXZp
c2lvbiA2MTMyNykKKysrIFdlYkNvcmUvcGxhdGZvcm0vbWFjL0xvZ2dpbmdNYWMubW0JKHdvcmtp
bmcgY29weSkKQEAgLTIzLDYgKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKKyNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vd2luY2UvU2hhcmVkVGltZXJXaW5jZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS93aW5jZS9TaGFyZWRUaW1lcldpbmNlLmNwcAko
cmV2aXNpb24gNjEzMjcpCisrKyBXZWJDb3JlL3BsYXRmb3JtL3dpbmNlL1NoYXJlZFRpbWVyV2lu
Y2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSA8d2luZG93
cy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKLUpTX0VYUE9SVERBVEEgZXh0ZXJuIHZvaWQqIGdfc3Rh
Y2tCYXNlOworSlNfRVhQT1JURURfU1lNQk9MIGV4dGVybiB2b2lkKiBnX3N0YWNrQmFzZTsKIH0K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0FycmF5
QnVmZmVyVmlld0N1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0FycmF5QnVmZmVyVmlld0N1c3RvbS5jcHAJKHJldmlzaW9uIDYxMzI3KQorKysgV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0FycmF5QnVmZmVyVmlld0N1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDcgKzI3LDYgQEAKIAogI2lmIEVOQUJMRSgzRF9DQU5WQVMpCiAKLSNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJKU0FycmF5QnVmZmVyVmlldy5oIgogI2luY2x1ZGUgIkpTSW50OEFy
cmF5LmgiCiAjaW5jbHVkZSAiSlNVaW50OEFycmF5LmgiCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFw
aGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaAkocmV2aXNpb24gNjEzMjcpCisr
KyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjAsOCArMjAsNiBAQAogI2lmbmRlZiBTVkdGaWx0ZXJCdWlsZGVyX2gKICNk
ZWZpbmUgU1ZHRmlsdGVyQnVpbGRlcl9oCiAKLSNpbmNsdWRlICJjb25maWcuaCIKLQogI2lmIEVO
QUJMRShTVkcpICYmIEVOQUJMRShGSUxURVJTKQogI2luY2x1ZGUgIkF0b21pY1N0cmluZ0hhc2gu
aCIKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKSW5kZXg6IFdlYktpdFRvb2xzL3d4L2J1aWxk
L3NldHRpbmdzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL3d4L2J1aWxkL3NldHRpbmdz
LnB5CShyZXZpc2lvbiA2MTMyNykKKysrIFdlYktpdFRvb2xzL3d4L2J1aWxkL3NldHRpbmdzLnB5
CSh3b3JraW5nIGNvcHkpCkBAIC0yNzEsNyArMjcxLDcgQEAKICAgICBpZiBidWlsZF9wb3J0ID09
ICJ3eCI6CiAgICAgICAgIHVwZGF0ZV93eF9kZXBzKGNvbmYsIHdrX3Jvb3QsIG1zdmNfdmVyc2lv
bikKICAgICAKLSAgICAgICAgY29uZi5lbnYuYXBwZW5kX3ZhbHVlKCdDWFhERUZJTkVTJywgWydC
VUlMRElOR19XWF9fPTEnLCAnSlNfTk9fRVhQT1JUJ10pCisgICAgICAgIGNvbmYuZW52LmFwcGVu
ZF92YWx1ZSgnQ1hYREVGSU5FUycsIFsnQlVJTERJTkdfV1hfXz0xJ10pCiAKICAgICAgICAgY29u
Zi5lbnZbJ0xJQl9XWFdFQktJVCddID0gWyd3eHdlYmtpdCddCiAgICAgICAgIGNvbmYuZW52WydD
WFhERUZJTkVTX1dYV0VCS0lUJ10gPSBbJ1dYVVNJTkdETExfV0VCS0lUJ10KQEAgLTI4Nyw3ICsy
ODcsNyBAQAogICAgICAgICAgICAgY29uZi5lbnZbJ0xJQl9XWCddID0gd3hsaWJzCiAgICAgICAg
ICAgICBjb25mLmVudlsnTElCUEFUSF9XWCddID0gd3hsaWJwYXRocwogCi0gICAgY29uZi5lbnZb
J0xJQl9KU0NPUkUnXSA9IFtsaWJwcmVmaXggKyAnanNjb3JlJ10KKyAgICBjb25mLmVudlsnTElC
X0pTQ09SRSddID0gWydqc2NvcmUnXQogICAgIGNvbmYuZW52WydMSUJfV0VCQ09SRSddID0gW2xp
YnByZWZpeCArICd3ZWJjb3JlJ10KIAogICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdk
YXJ3aW4nKToKSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL2NvbmZp
Zy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL2Nv
bmZpZy5oCShyZXZpc2lvbiA2MTMyNykKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL2NvbmZpZy5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCwxMSArNDQsMTEgQEAKIAogI2lu
Y2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogCi0vLyBKU19FWFBPUlREQVRBIGlzIG5lZWRlZCB0byBp
bmx1Y2RlIHd0Zi9XVEZTdHJpbmcuaC4KKy8vIEpTX0VYUE9SVEVEX1NZTUJPTCBpcyBuZWVkZWQg
dG8gaW5sdWNkZSB3dGYvV1RGU3RyaW5nLmguCiAjaWYgT1MoV0lORE9XUykgJiYgIUNPTVBJTEVS
KEdDQykKLSNkZWZpbmUgSlNfRVhQT1JUREFUQSBfX2RlY2xzcGVjKGRsbGltcG9ydCkKKyNkZWZp
bmUgSlNfRVhQT1JURURfU1lNQk9MIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQogI2Vsc2UKLSNkZWZp
bmUgSlNfRVhQT1JUREFUQQorI2RlZmluZSBKU19FWFBPUlRFRF9TWU1CT0wKICNlbmRpZgogCiAj
ZW5kaWYgLy8gY29uZmlnX2gKSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2NvbmZp
Zy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2NvbmZpZy5oCShy
ZXZpc2lvbiA2MTMyNykKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2NvbmZpZy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiwyMCArMjYsMjAgQEAKIAogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9y
bS5oPgogCisjaWYgT1MoV0lORE9XUykgJiYgIUNPTVBJTEVSKEdDQykKKyNkZWZpbmUgSlNfRVhQ
T1JURURfU1lNQk9MIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQorI2RlZmluZSBXRUJLSVRfRVhQT1JU
REFUQSBfX2RlY2xzcGVjKGRsbGltcG9ydCkKKyNlbHNlCisjZGVmaW5lIEpTX0VYUE9SVEVEX1NZ
TUJPTAorI2RlZmluZSBXRUJLSVRfRVhQT1JUREFUQQorI2VuZGlmCisKICNpZmRlZiBfX2NwbHVz
cGx1cwogI3VuZGVmIG5ldwogI3VuZGVmIGRlbGV0ZQogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9j
Lmg+CiAjZW5kaWYKIAotI2lmIE9TKFdJTkRPV1MpICYmICFDT01QSUxFUihHQ0MpCi0jZGVmaW5l
IEpTX0VYUE9SVERBVEEgX19kZWNsc3BlYyhkbGxpbXBvcnQpCi0jZGVmaW5lIFdFQktJVF9FWFBP
UlREQVRBIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQotI2Vsc2UKLSNkZWZpbmUgSlNfRVhQT1JUREFU
QQotI2RlZmluZSBXRUJLSVRfRVhQT1JUREFUQQotI2VuZGlmCi0KICNpZiBQTEFURk9STShXSU4p
CiAjZGVmaW5lIFdURl9QTEFURk9STV9DRiAxIAogI2lmIGRlZmluZWQoV0lOX0NBSVJPKQpJbmRl
eDogV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0NoYW5n
ZUxvZwkocmV2aXNpb24gNjEzNDkpCisrKyBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMC0wNi0xNyAgS2V2aW4gT2xsaXZpZXIgIDxrZXZp
bm9AdGhlb2xsaXZpZXJzLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBVc2UgSlNfRVhQT1JURURfU1lNQk9MIHRvIGV4cG9ydCBKU0NvcmUgc3lt
Ym9scyBuZWVkZWQgYnkgb3RoZXIgV2ViS2l0IGxpYnJhcmllcy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NTUxCisKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9jb25maWcuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jb25m
aWcuaDoKKyAgICAgICAgKiB3eC9idWlsZC9zZXR0aW5ncy5weToKKwogMjAxMC0wNi0xNyAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgT25lIG1vcmUgdHJ5IGF0IGZp
eCBmb3IgQ2hyb21pdW0gYnVpbGQuCkluZGV4OiBXZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gNjEzNDkpCisrKyBXZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDEwLTA2LTE3ICBLZXZpbiBP
bGxpdmllciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBKU19FWFBPUlRFRF9TWU1CT0wgdG8gZXhw
b3J0IEpTQ29yZSBzeW1ib2xzIG5lZWRlZCBieSBvdGhlciBXZWJLaXQgbGlicmFyaWVzLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc1NTEKKworICAg
ICAgICAqIFdlYktpdDJQcmVmaXguaDoKKwogMjAxMC0wNi0xNiAgU2FtIFdlaW5pZyAgPHNhbUB3
ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgpJbmRleDog
V2ViS2l0Mi9XZWJLaXQyUHJlZml4LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJLaXQyUHJl
Zml4LmgJKHJldmlzaW9uIDYxMzI3KQorKysgV2ViS2l0Mi9XZWJLaXQyUHJlZml4LmgJKHdvcmtp
bmcgY29weSkKQEAgLTI1LDYgKzI1LDkgQEAKIAogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgog
I2luY2x1ZGUgPHd0Zi9EaXNhbGxvd0NUeXBlLmg+CisKKyNkZWZpbmUgSlNfRVhQT1JURURfU1lN
Qk9MCisKICNpZmRlZiBfX2NwbHVzcGx1cwogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAj
ZW5kaWYKQEAgLTQyLDggKzQ1LDYgQEAKICNkZWZpbmUgV1RGX1VTRV9KU0MgMQogI2RlZmluZSBX
VEZfVVNFX1Y4IDAKIAotI2RlZmluZSBKU19FWFBPUlREQVRBCi0jZGVmaW5lIEpTX0VYUE9SVENM
QVNTCiAjZGVmaW5lIFdFQktJVF9FWFBPUlREQVRBCiAKICNlbGlmIGRlZmluZWQoV0lOMzIpIHx8
IGRlZmluZWQoX1dJTjMyKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59052</attachid>
            <date>2010-06-17 17:26:52 -0700</date>
            <delta_ts>2010-06-21 15:11:42 -0700</delta_ts>
            <desc>Same as last patch with proposed GTK build fix</desc>
            <filename>jscore_exports4.patch</filename>
            <type>text/plain</type>
            <size>154360</size>
            <attacher name="Kevin Ollivier">kevino</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkocmV2aXNpb24gNjEzMjcpCisrKyBK
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03MSwy
MSArNzEsMjEgQEAKIAogICAgICAgICBzdGF0aWMgdm9pZCBkdW1wU3RhdGlzdGljcygpOwogCi0g
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gYWRkUHJvcGVydHlUcmFuc2l0aW9u
KFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0
cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBzaXplX3QmIG9mZnNldCk7Ci0gICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gYWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlz
dGluZ1N0cnVjdHVyZShTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBvZmZz
ZXQpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0
dXJlPiBhZGRQcm9wZXJ0eVRyYW5zaXRpb24oU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUs
IHNpemVfdCYgb2Zmc2V0KTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHN0YXRpYyBQYXNz
UmVmUHRyPFN0cnVjdHVyZT4gYWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVy
ZShTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0
dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBvZmZzZXQpOwogICAgICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbihT
dHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHNpemVfdCYgb2Zmc2V0
KTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjaGFuZ2VQcm90b3R5cGVU
cmFuc2l0aW9uKFN0cnVjdHVyZSosIEpTVmFsdWUgcHJvdG90eXBlKTsKLSAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8U3RydWN0dXJlPiBkZXNwZWNpZnlGdW5jdGlvblRyYW5zaXRpb24oU3RydWN0
dXJlKiwgY29uc3QgSWRlbnRpZmllciYpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgc3Rh
dGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjaGFuZ2VQcm90b3R5cGVUcmFuc2l0aW9uKFN0cnVj
dHVyZSosIEpTVmFsdWUgcHJvdG90eXBlKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHN0
YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gZGVzcGVjaWZ5RnVuY3Rpb25UcmFuc2l0aW9uKFN0
cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXImKTsKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8
U3RydWN0dXJlPiBnZXR0ZXJTZXR0ZXJUcmFuc2l0aW9uKFN0cnVjdHVyZSopOwogICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHRvQ2FjaGVhYmxlRGljdGlvbmFyeVRyYW5zaXRp
b24oU3RydWN0dXJlKik7CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gdG9V
bmNhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKFN0cnVjdHVyZSopOwogCiAgICAgICAgIFBh
c3NSZWZQdHI8U3RydWN0dXJlPiBmbGF0dGVuRGljdGlvbmFyeVN0cnVjdHVyZShKU09iamVjdCop
OwogCi0gICAgICAgIH5TdHJ1Y3R1cmUoKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIH5T
dHJ1Y3R1cmUoKTsKIAogICAgICAgICAvLyBUaGVzZSBzaG91bGQgYmUgdXNlZCB3aXRoIGNhdXRp
b24uICAKLSAgICAgICAgc2l6ZV90IGFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNw
ZWNpZmljVmFsdWUpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgc2l6ZV90IGFkZFByb3Bl
cnR5V2l0aG91dFRyYW5zaXRpb24oY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNp
Z25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpOwogICAgICAgICBzaXplX3Qg
cmVtb3ZlUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUpOwogICAgICAgICB2b2lkIHNldFByb3RvdHlwZVdpdGhvdXRUcmFuc2l0aW9uKEpTVmFs
dWUgcHJvdG90eXBlKSB7IG1fcHJvdG90eXBlID0gcHJvdG90eXBlOyB9CiAgICAgICAgIApAQCAt
MTA2LDcgKzEwNiw3IEBACiAgICAgICAgIGJvb2wgaXNVc2luZ0lubGluZVN0b3JhZ2UoKSBjb25z
dDsKIAogICAgICAgICBzaXplX3QgZ2V0KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7
Ci0gICAgICAgIHNpemVfdCBnZXQoY29uc3QgVVN0cmluZzo6UmVwKiByZXAsIHVuc2lnbmVkJiBh
dHRyaWJ1dGVzLCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVlKTsKKyAgICAgICAgSlNfRVhQT1JURURf
U1lNQk9MIHNpemVfdCBnZXQoY29uc3QgVVN0cmluZzo6UmVwKiByZXAsIHVuc2lnbmVkJiBhdHRy
aWJ1dGVzLCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVlKTsKICAgICAgICAgc2l6ZV90IGdldChjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzLCBKU0NlbGwq
JiBzcGVjaWZpY1ZhbHVlKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoIXByb3BlcnR5
TmFtZS5pc051bGwoKSk7CkBAIC0xMTYsNyArMTE2LDcgQEAKICAgICAgICAgewogICAgICAgICAg
ICAgcmV0dXJuIG1fc3BlY2lmaWNWYWx1ZUluUHJldmlvdXMgPT0gc3BlY2lmaWNWYWx1ZTsKICAg
ICAgICAgfQotICAgICAgICBib29sIGhhc1RyYW5zaXRpb24oVVN0cmluZzo6UmVwKiwgdW5zaWdu
ZWQgYXR0cmlidXRlcyk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBib29sIGhhc1RyYW5z
aXRpb24oVVN0cmluZzo6UmVwKiwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAgICAgIGJvb2wg
aGFzVHJhbnNpdGlvbihjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0
dHJpYnV0ZXMpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBoYXNUcmFuc2l0aW9uKHBy
b3BlcnR5TmFtZS5fdXN0cmluZy5yZXAoKSwgYXR0cmlidXRlcyk7CkBAIC0xMzIsNyArMTMyLDcg
QEAKICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJv
cGVydHlUYWJsZSA/ICFtX3Byb3BlcnR5VGFibGUtPmtleUNvdW50IDogbV9vZmZzZXQgPT0gbm9P
ZmZzZXQ7IH0KIAotICAgICAgICB2b2lkIGRlc3BlY2lmeURpY3Rpb25hcnlGdW5jdGlvbihjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wg
dm9pZCBkZXNwZWNpZnlEaWN0aW9uYXJ5RnVuY3Rpb24oY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lKTsKICAgICAgICAgdm9pZCBkaXNhYmxlU3BlY2lmaWNGdW5jdGlvblRyYWNraW5nKCkg
eyBtX3NwZWNpZmljRnVuY3Rpb25UaHJhc2hDb3VudCA9IG1heFNwZWNpZmljRnVuY3Rpb25UaHJh
c2hDb3VudDsgfQogCiAgICAgICAgIHZvaWQgc2V0RW51bWVyYXRpb25DYWNoZShKU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yKiBlbnVtZXJhdGlvbkNhY2hlKTsgLy8gRGVmaW5lZCBpbiBKU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yLmguCkBAIC0xNDIsNyArMTQyLDcgQEAKICAgICAgICAgCiAgICAgcHJpdmF0
ZToKIAotICAgICAgICBTdHJ1Y3R1cmUoSlNWYWx1ZSBwcm90b3R5cGUsIGNvbnN0IFR5cGVJbmZv
JiwgdW5zaWduZWQgYW5vbnltb3VzU2xvdENvdW50KTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lN
Qk9MIFN0cnVjdHVyZShKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8mLCB1bnNpZ25l
ZCBhbm9ueW1vdXNTbG90Q291bnQpOwogICAgICAgICAKICAgICAgICAgdHlwZWRlZiBlbnVtIHsg
CiAgICAgICAgICAgICBOb25lRGljdGlvbmFyeUtpbmQgPSAwLApAQCAtMTY2LDcgKzE2Niw3IEBA
CiAgICAgICAgIHZvaWQgZGVzcGVjaWZ5QWxsRnVuY3Rpb25zKCk7CiAKICAgICAgICAgUHJvcGVy
dHlNYXBIYXNoVGFibGUqIGNvcHlQcm9wZXJ0eVRhYmxlKCk7Ci0gICAgICAgIHZvaWQgbWF0ZXJp
YWxpemVQcm9wZXJ0eU1hcCgpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBtYXRl
cmlhbGl6ZVByb3BlcnR5TWFwKCk7CiAgICAgICAgIHZvaWQgbWF0ZXJpYWxpemVQcm9wZXJ0eU1h
cElmTmVjZXNzYXJ5KCkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKG1fcHJvcGVydHlUYWJs
ZSB8fCAhbV9wcmV2aW91cykgICAgICAgICAgICAgCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0
cmluZy5oCShyZXZpc2lvbiA2MTMyNykKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJp
bmcuaAkod29ya2luZyBjb3B5KQpAQCAtNjIsNyArNjIsNyBAQAogICAgIHR5cGVkZWYgdm9pZCAo
KkpTU3RyaW5nRmluYWxpemVyQ2FsbGJhY2spKEpTU3RyaW5nKiwgdm9pZCogY29udGV4dCk7CiAg
ICAgSlNTdHJpbmcqIGpzU3RyaW5nV2l0aEZpbmFsaXplcihFeGVjU3RhdGUqLCBjb25zdCBVU3Ry
aW5nJiwgSlNTdHJpbmdGaW5hbGl6ZXJDYWxsYmFjayBjYWxsYmFjaywgdm9pZCogY29udGV4dCk7
CiAKLSAgICBjbGFzcyBKU19FWFBPUlRDTEFTUyBKU1N0cmluZyA6IHB1YmxpYyBKU0NlbGwgewor
ICAgIGNsYXNzIEpTU3RyaW5nIDogcHVibGljIEpTQ2VsbCB7CiAgICAgcHVibGljOgogICAgICAg
ICBmcmllbmQgY2xhc3MgSklUOwogICAgICAgICBmcmllbmQgY2xhc3MgSlNHbG9iYWxEYXRhOwpA
QCAtMzIxLDcgKzMyMSw3IEBACiAgICAgICAgICAgICAgICAgbV9vdGhlci5tX2ZpbmFsaXplckNh
bGxiYWNrKHRoaXMsIG1fb3RoZXIubV9maW5hbGl6ZXJDb250ZXh0KTsKICAgICAgICAgfQogCi0g
ICAgICAgIGNvbnN0IFVTdHJpbmcmIHZhbHVlKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKKyAgICAg
ICAgSlNfRVhQT1JURURfU1lNQk9MIGNvbnN0IFVTdHJpbmcmIHZhbHVlKEV4ZWNTdGF0ZSogZXhl
YykgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAgaWYgKGlzUm9wZSgpKQogICAgICAgICAg
ICAgICAgIHJlc29sdmVSb3BlKGV4ZWMpOwpAQCAtMzU1LDcgKzM1NSw3IEBACiAgICAgICAgIHsK
ICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgcmVzb2x2ZVJvcGUoRXhlY1N0YXRlKikgY29uc3Q7
CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIHJlc29sdmVSb3BlKEV4ZWNTdGF0ZSop
IGNvbnN0OwogCiAgICAgICAgIHZvaWQgYXBwZW5kU3RyaW5nSW5Db25zdHJ1Y3QodW5zaWduZWQm
IGluZGV4LCBjb25zdCBVU3RyaW5nJiBzdHJpbmcpCiAgICAgICAgIHsKQEAgLTM5MywxOSArMzkz
LDE5IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIEpTVmFs
dWUgdG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkgY29uc3Q7
Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBnZXRQcmltaXRpdmVOdW1iZXIoRXhlY1N0YXRlKiwgZG91
YmxlJiBudW1iZXIsIEpTVmFsdWUmIHZhbHVlKTsKLSAgICAgICAgdmlydHVhbCBib29sIHRvQm9v
bGVhbihFeGVjU3RhdGUqKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCBkb3VibGUgdG9OdW1iZXIo
RXhlY1N0YXRlKikgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgSlNPYmplY3QqIHRvT2JqZWN0KEV4
ZWNTdGF0ZSopIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIFVTdHJpbmcgdG9TdHJpbmcoRXhlY1N0
YXRlKikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIEpTVmFsdWUg
dG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkgY29uc3Q7Cisg
ICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIGJvb2wgZ2V0UHJpbWl0aXZlTnVtYmVy
KEV4ZWNTdGF0ZSosIGRvdWJsZSYgbnVtYmVyLCBKU1ZhbHVlJiB2YWx1ZSk7CisgICAgICAgIEpT
X0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIGJvb2wgdG9Cb29sZWFuKEV4ZWNTdGF0ZSopIGNvbnN0
OworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCBkb3VibGUgdG9OdW1iZXIoRXhl
Y1N0YXRlKikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIEpTT2Jq
ZWN0KiB0b09iamVjdChFeGVjU3RhdGUqKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JURURfU1lN
Qk9MIHZpcnR1YWwgVVN0cmluZyB0b1N0cmluZyhFeGVjU3RhdGUqKSBjb25zdDsKIAotICAgICAg
ICB2aXJ0dWFsIEpTT2JqZWN0KiB0b1RoaXNPYmplY3QoRXhlY1N0YXRlKikgY29uc3Q7CisgICAg
ICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIEpTT2JqZWN0KiB0b1RoaXNPYmplY3QoRXhl
Y1N0YXRlKikgY29uc3Q7CiAKICAgICAgICAgLy8gQWN0dWFsbHkgZ2V0UHJvcGVydHlTbG90LCBu
b3QgZ2V0T3duUHJvcGVydHlTbG90IChzZWUgSlNDZWxsKS4KLSAgICAgICAgdmlydHVhbCBib29s
IGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7
Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRl
KiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOworICAgICAgICBKU19F
WFBPUlRFRF9TWU1CT0wgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUq
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgICAg
ICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVj
U3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgICAgICBK
U19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKICAg
ICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfbWF4SW50ZXJuYWxSb3BlTGVuZ3RoID0gMzsK
IApJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2aXNpb24gNjEzMjcpCisrKyBK
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTc0LDI2
ICs3NCwyNiBAQAogICAgICAgICBmcmllbmQgY2xhc3MgQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6
ZXI7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKU0Nl
bGw7Ci0gICAgICAgIGZyaWVuZCB2b2lkIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSwgSlNPYmplY3QqIHRoaXNPYmosIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KTsKKyAgICAgICAg
ZnJpZW5kIEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSwgSlNPYmplY3QqIHRoaXNPYmos
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KTsKIAog
ICAgIHB1YmxpYzoKICAgICAgICAgZXhwbGljaXQgSlNPYmplY3QoTm9uTnVsbFBhc3NSZWZQdHI8
U3RydWN0dXJlPik7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIG1hcmtDaGlsZHJlbihNYXJrU3Rh
Y2smKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgdm9pZCBtYXJrQ2hpbGRy
ZW4oTWFya1N0YWNrJik7CiAgICAgICAgIEFMV0FZU19JTkxJTkUgdm9pZCBtYXJrQ2hpbGRyZW5E
aXJlY3QoTWFya1N0YWNrJiBtYXJrU3RhY2spOwogCiAgICAgICAgIC8vIFRoZSBpbmxpbmUgdmly
dHVhbCBkZXN0cnVjdG9yIGNhbm5vdCBiZSB0aGUgZmlyc3QgdmlydHVhbCBmdW5jdGlvbiBkZWNs
YXJlZAogICAgICAgICAvLyBpbiB0aGUgY2xhc3MgYXMgaXQgcmVzdWx0cyBpbiB0aGUgdnRhYmxl
IGJlaW5nIGdlbmVyYXRlZCBhcyBhIHdlYWsgc3ltYm9sCiAgICAgICAgIHZpcnR1YWwgfkpTT2Jq
ZWN0KCk7CiAKLSAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUoKSBjb25zdDsKKyAgICAgICAgSlNf
RVhQT1JURURfU1lNQk9MIEpTVmFsdWUgcHJvdG90eXBlKCkgY29uc3Q7CiAgICAgICAgIHZvaWQg
c2V0UHJvdG90eXBlKEpTVmFsdWUgcHJvdG90eXBlKTsKICAgICAgICAgYm9vbCBzZXRQcm90b3R5
cGVXaXRoQ3ljbGVDaGVjayhKU1ZhbHVlIHByb3RvdHlwZSk7CiAgICAgICAgIAogICAgICAgICB2
b2lkIHNldFN0cnVjdHVyZShOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+KTsKICAgICAgICAg
U3RydWN0dXJlKiBpbmhlcml0b3JJRCgpOwogCi0gICAgICAgIHZpcnR1YWwgVVN0cmluZyBjbGFz
c05hbWUoKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgVVN0cmlu
ZyBjbGFzc05hbWUoKSBjb25zdDsKIAogICAgICAgICBKU1ZhbHVlIGdldChFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpIGNvbnN0OwogICAgICAgICBKU1ZhbHVlIGdl
dChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpIGNvbnN0OwpAQCAtMTAyLDQ1ICsx
MDIsNDUgQEAKICAgICAgICAgYm9vbCBnZXRQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgdW5zaWdu
ZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgYm9vbCBnZXRQcm9wZXJ0
eURlc2NyaXB0b3IoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eURlc2NyaXB0b3ImKTsKIAotICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90Jik7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0
YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgdmly
dHVhbCBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJP
TCB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIEpTX0VYUE9SVEVE
X1NZTUJPTCB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIHVuc2ln
bmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZ
TUJPTCB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSosIGNv
bnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIAotICAgICAgICB2aXJ0dWFs
IHZvaWQgcHV0KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwdXQo
RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlKTsKKyAgICAg
ICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgdm9pZCBwdXQoRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
KTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgdm9pZCBwdXQoRXhlY1N0YXRl
KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlKTsKIAotICAgICAgICB2aXJ0
dWFsIHZvaWQgcHV0V2l0aEF0dHJpYnV0ZXMoSlNHbG9iYWxEYXRhKiwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBib29s
IGNoZWNrUmVhZE9ubHksIFB1dFByb3BlcnR5U2xvdCYgc2xvdCk7Ci0gICAgICAgIHZpcnR1YWwg
dm9pZCBwdXRXaXRoQXR0cmlidXRlcyhKU0dsb2JhbERhdGEqLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwotICAgICAg
ICB2aXJ0dWFsIHZvaWQgcHV0V2l0aEF0dHJpYnV0ZXMoSlNHbG9iYWxEYXRhKiwgdW5zaWduZWQg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKLSAgICAg
ICAgdmlydHVhbCB2b2lkIHB1dFdpdGhBdHRyaWJ1dGVzKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcywg
Ym9vbCBjaGVja1JlYWRPbmx5LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpOwotICAgICAgICB2aXJ0
dWFsIHZvaWQgcHV0V2l0aEF0dHJpYnV0ZXMoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKLSAgICAg
ICAgdmlydHVhbCB2b2lkIHB1dFdpdGhBdHRyaWJ1dGVzKEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAgICAg
IEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIHZvaWQgcHV0V2l0aEF0dHJpYnV0ZXMoSlNHbG9i
YWxEYXRhKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzLCBib29sIGNoZWNrUmVhZE9ubHksIFB1dFByb3BlcnR5U2xvdCYg
c2xvdCk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIHZvaWQgcHV0V2l0aEF0
dHJpYnV0ZXMoSlNHbG9iYWxEYXRhKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgSlNfRVhQT1JURURf
U1lNQk9MIHZpcnR1YWwgdm9pZCBwdXRXaXRoQXR0cmlidXRlcyhKU0dsb2JhbERhdGEqLCB1bnNp
Z25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwor
ICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCB2b2lkIHB1dFdpdGhBdHRyaWJ1dGVz
KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgYm9vbCBjaGVja1JlYWRPbmx5LCBQdXRQcm9wZXJ0eVNs
b3QmIHNsb3QpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCB2b2lkIHB1dFdp
dGhBdHRyaWJ1dGVzKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAgICAgIEpTX0VYUE9SVEVE
X1NZTUJPTCB2aXJ0dWFsIHZvaWQgcHV0V2l0aEF0dHJpYnV0ZXMoRXhlY1N0YXRlKiwgdW5zaWdu
ZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKIAog
ICAgICAgICBib29sIHByb3BlcnR5SXNFbnVtZXJhYmxlKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSkgY29uc3Q7CiAKLSAgICAgICAgYm9vbCBoYXNQcm9wZXJ0eShF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpIGNvbnN0OwotICAgICAg
ICBib29sIGhhc1Byb3BlcnR5KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSkgY29u
c3Q7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBib29sIGhhc1Byb3BlcnR5KEV4ZWNTdGF0
ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkgY29uc3Q7CisgICAgICAgIEpTX0VY
UE9SVEVEX1NZTUJPTCBib29sIGhhc1Byb3BlcnR5KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3Bl
cnR5TmFtZSkgY29uc3Q7CiAgICAgICAgIGJvb2wgaGFzT3duUHJvcGVydHkoRXhlY1N0YXRlKiwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKSBjb25zdDsKIAotICAgICAgICB2aXJ0dWFs
IGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lKTsKLSAgICAgICAgdmlydHVhbCBib29sIGRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSos
IHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0
dWFsIGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgYm9vbCBkZWxl
dGVQcm9wZXJ0eShFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwogCi0gICAgICAg
IHZpcnR1YWwgSlNWYWx1ZSBkZWZhdWx0VmFsdWUoRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0
aXZlVHlwZSkgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIEpTVmFs
dWUgZGVmYXVsdFZhbHVlKEV4ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpIGNvbnN0
OwogCi0gICAgICAgIHZpcnR1YWwgYm9vbCBoYXNJbnN0YW5jZShFeGVjU3RhdGUqLCBKU1ZhbHVl
LCBKU1ZhbHVlIHByb3RvdHlwZVByb3BlcnR5KTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9M
IHZpcnR1YWwgYm9vbCBoYXNJbnN0YW5jZShFeGVjU3RhdGUqLCBKU1ZhbHVlLCBKU1ZhbHVlIHBy
b3RvdHlwZVByb3BlcnR5KTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJvcGVydHlOYW1l
cyhFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSBtb2RlID0g
RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBnZXRPd25Q
cm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25N
b2RlIG1vZGUgPSBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICAgICAgSlNfRVhQT1JU
RURfU1lNQk9MIHZpcnR1YWwgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlIG1vZGUgPSBFeGNsdWRlRG9udEVudW1Qcm9w
ZXJ0aWVzKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgdm9pZCBnZXRPd25Q
cm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25N
b2RlIG1vZGUgPSBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKIAogICAgICAgICB2aXJ0dWFs
IEpTVmFsdWUgdG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSA9
IE5vUHJlZmVyZW5jZSkgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBnZXRQcmltaXRpdmVO
dW1iZXIoRXhlY1N0YXRlKiwgZG91YmxlJiBudW1iZXIsIEpTVmFsdWUmIHZhbHVlKTsKLSAgICAg
ICAgdmlydHVhbCBib29sIHRvQm9vbGVhbihFeGVjU3RhdGUqKSBjb25zdDsKLSAgICAgICAgdmly
dHVhbCBkb3VibGUgdG9OdW1iZXIoRXhlY1N0YXRlKikgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwg
VVN0cmluZyB0b1N0cmluZyhFeGVjU3RhdGUqKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCBKU09i
amVjdCogdG9PYmplY3QoRXhlY1N0YXRlKikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZ
TUJPTCB2aXJ0dWFsIGJvb2wgZ2V0UHJpbWl0aXZlTnVtYmVyKEV4ZWNTdGF0ZSosIGRvdWJsZSYg
bnVtYmVyLCBKU1ZhbHVlJiB2YWx1ZSk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0
dWFsIGJvb2wgdG9Cb29sZWFuKEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICBKU19FWFBPUlRF
RF9TWU1CT0wgdmlydHVhbCBkb3VibGUgdG9OdW1iZXIoRXhlY1N0YXRlKikgY29uc3Q7CisgICAg
ICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIFVTdHJpbmcgdG9TdHJpbmcoRXhlY1N0YXRl
KikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIEpTT2JqZWN0KiB0
b09iamVjdChFeGVjU3RhdGUqKSBjb25zdDsKIAotICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiB0
b1RoaXNPYmplY3QoRXhlY1N0YXRlKikgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgSlNPYmplY3Qq
IHVud3JhcHBlZE9iamVjdCgpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCBK
U09iamVjdCogdG9UaGlzT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICBKU19FWFBP
UlRFRF9TWU1CT0wgdmlydHVhbCBKU09iamVjdCogdW53cmFwcGVkT2JqZWN0KCk7CiAKICAgICAg
ICAgYm9vbCBnZXRQcm9wZXJ0eVNwZWNpZmljVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQ2VsbComIHNwZWNpZmljRnVuY3Rpb24pIGNvbnN0
OwogCkBAIC0xNzUsMTMgKzE3NSwxMyBAQAogICAgICAgICBib29sIGhhc0N1c3RvbVByb3BlcnRp
ZXMoKSB7IHJldHVybiAhbV9zdHJ1Y3R1cmUtPmlzRW1wdHkoKTsgfQogICAgICAgICBib29sIGhh
c0dldHRlclNldHRlclByb3BlcnRpZXMoKSB7IHJldHVybiBtX3N0cnVjdHVyZS0+aGFzR2V0dGVy
U2V0dGVyUHJvcGVydGllcygpOyB9CiAKLSAgICAgICAgdm9pZCBwdXREaXJlY3QoY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyLCBib29s
IGNoZWNrUmVhZE9ubHksIFB1dFByb3BlcnR5U2xvdCYgc2xvdCk7Ci0gICAgICAgIHZvaWQgcHV0
RGlyZWN0KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5z
aWduZWQgYXR0ciA9IDApOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBwdXREaXJl
Y3QoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25l
ZCBhdHRyLCBib29sIGNoZWNrUmVhZE9ubHksIFB1dFByb3BlcnR5U2xvdCYgc2xvdCk7CisgICAg
ICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIHB1dERpcmVjdChjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHIgPSAwKTsKIAotICAgICAg
ICB2b2lkIHB1dERpcmVjdEZ1bmN0aW9uKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
SlNDZWxsKiB2YWx1ZSwgdW5zaWduZWQgYXR0ciA9IDApOwotICAgICAgICB2b2lkIHB1dERpcmVj
dEZ1bmN0aW9uKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDZWxsKiB2YWx1ZSwg
dW5zaWduZWQgYXR0ciwgYm9vbCBjaGVja1JlYWRPbmx5LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3Qp
OwotICAgICAgICB2b2lkIHB1dERpcmVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSW50ZXJu
YWxGdW5jdGlvbiogZnVuY3Rpb24sIHVuc2lnbmVkIGF0dHIgPSAwKTsKLSAgICAgICAgdm9pZCBw
dXREaXJlY3RGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTRnVuY3Rpb24qIGZ1bmN0aW9uLCB1
bnNpZ25lZCBhdHRyID0gMCk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIHB1dERp
cmVjdEZ1bmN0aW9uKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDZWxsKiB2YWx1
ZSwgdW5zaWduZWQgYXR0ciA9IDApOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBw
dXREaXJlY3RGdW5jdGlvbihjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQ2VsbCog
dmFsdWUsIHVuc2lnbmVkIGF0dHIsIGJvb2wgY2hlY2tSZWFkT25seSwgUHV0UHJvcGVydHlTbG90
JiBzbG90KTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZvaWQgcHV0RGlyZWN0RnVuY3Rp
b24oRXhlY1N0YXRlKiBleGVjLCBJbnRlcm5hbEZ1bmN0aW9uKiBmdW5jdGlvbiwgdW5zaWduZWQg
YXR0ciA9IDApOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBwdXREaXJlY3RGdW5j
dGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTRnVuY3Rpb24qIGZ1bmN0aW9uLCB1bnNpZ25lZCBhdHRy
ID0gMCk7CiAKICAgICAgICAgdm9pZCBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHIgPSAw
KTsKICAgICAgICAgdm9pZCBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDZWxsKiB2YWx1ZSwgdW5zaWduZWQgYXR0ciA9
IDApOwpAQCAtMTkyLDEzICsxOTIsMTMgQEAKICAgICAgICAgSlNWYWx1ZSBnZXREaXJlY3RPZmZz
ZXQoc2l6ZV90IG9mZnNldCkgY29uc3QgeyByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHByb3BlcnR5
U3RvcmFnZSgpW29mZnNldF0pOyB9CiAgICAgICAgIHZvaWQgcHV0RGlyZWN0T2Zmc2V0KHNpemVf
dCBvZmZzZXQsIEpTVmFsdWUgdmFsdWUpIHsgcHJvcGVydHlTdG9yYWdlKClbb2Zmc2V0XSA9IEpT
VmFsdWU6OmVuY29kZSh2YWx1ZSk7IH0KIAotICAgICAgICB2b2lkIGZpbGxHZXR0ZXJQcm9wZXJ0
eVNsb3QoUHJvcGVydHlTbG90JiwgSlNWYWx1ZSogbG9jYXRpb24pOworICAgICAgICBKU19FWFBP
UlRFRF9TWU1CT0wgdm9pZCBmaWxsR2V0dGVyUHJvcGVydHlTbG90KFByb3BlcnR5U2xvdCYsIEpT
VmFsdWUqIGxvY2F0aW9uKTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgZGVmaW5lR2V0dGVyKEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNPYmplY3QqIGdldHRl
ckZ1bmN0aW9uLCB1bnNpZ25lZCBhdHRyaWJ1dGVzID0gMCk7Ci0gICAgICAgIHZpcnR1YWwgdm9p
ZCBkZWZpbmVTZXR0ZXIoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBKU09iamVjdCogc2V0dGVyRnVuY3Rpb24sIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSAwKTsKLSAg
ICAgICAgdmlydHVhbCBKU1ZhbHVlIGxvb2t1cEdldHRlcihFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUpOwotICAgICAgICB2aXJ0dWFsIEpTVmFsdWUgbG9va3VwU2V0
dGVyKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7Ci0gICAgICAg
IHZpcnR1YWwgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cp
OworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCB2b2lkIGRlZmluZUdldHRlcihF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBnZXR0
ZXJGdW5jdGlvbiwgdW5zaWduZWQgYXR0cmlidXRlcyA9IDApOworICAgICAgICBKU19FWFBPUlRF
RF9TWU1CT0wgdmlydHVhbCB2b2lkIGRlZmluZVNldHRlcihFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBzZXR0ZXJGdW5jdGlvbiwgdW5zaWduZWQg
YXR0cmlidXRlcyA9IDApOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCBKU1Zh
bHVlIGxvb2t1cEdldHRlcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCBKU1ZhbHVlIGxvb2t1cFNl
dHRlcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOworICAgICAg
ICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCBib29sIGRlZmluZU93blByb3BlcnR5KEV4ZWNT
dGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9y
JiwgYm9vbCBzaG91bGRUaHJvdyk7CiAKICAgICAgICAgdmlydHVhbCBib29sIGlzR2xvYmFsT2Jq
ZWN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzVmFy
aWFibGVPYmplY3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtMjA3LDcgKzIwNyw3IEBA
CiAKICAgICAgICAgdmlydHVhbCBDb21wbFR5cGUgZXhjZXB0aW9uVHlwZSgpIGNvbnN0IHsgcmV0
dXJuIFRocm93OyB9CiAKLSAgICAgICAgdm9pZCBhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShzaXpl
X3Qgb2xkU2l6ZSwgc2l6ZV90IG5ld1NpemUpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wg
dm9pZCBhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShzaXplX3Qgb2xkU2l6ZSwgc2l6ZV90IG5ld1Np
emUpOwogICAgICAgICB2b2lkIGFsbG9jYXRlUHJvcGVydHlTdG9yYWdlSW5saW5lKHNpemVfdCBv
bGRTaXplLCBzaXplX3QgbmV3U2l6ZSk7CiAgICAgICAgIGJvb2wgaXNVc2luZ0lubGluZVN0b3Jh
Z2UoKSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVyZS0+aXNVc2luZ0lubGluZVN0b3JhZ2UoKTsg
fQogCkBAIC0yNjQsNyArMjY0LDcgQEAKICAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PEpTVmFsdWUqPigmcHJvcGVydHlTdG9yYWdlKClbb2Zmc2V0XSk7CiAgICAgICAgIH0KIAot
ICAgICAgICB2b2lkIHB1dERpcmVjdEludGVybmFsKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0ciwgYm9vbCBjaGVja1JlYWRPbmx5LCBQ
dXRQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTQ2VsbCopOworICAgICAgICBKU19FWFBPUlRFRF9TWU1C
T0wgdm9pZCBwdXREaXJlY3RJbnRlcm5hbChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHIsIGJvb2wgY2hlY2tSZWFkT25seSwgUHV0UHJv
cGVydHlTbG90JiBzbG90LCBKU0NlbGwqKTsKICAgICAgICAgdm9pZCBwdXREaXJlY3RJbnRlcm5h
bChKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUg
dmFsdWUsIHVuc2lnbmVkIGF0dHIsIGJvb2wgY2hlY2tSZWFkT25seSwgUHV0UHJvcGVydHlTbG90
JiBzbG90KTsKICAgICAgICAgdm9pZCBwdXREaXJlY3RJbnRlcm5hbChKU0dsb2JhbERhdGEmLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0
dHIgPSAwKTsKIApAQCAtMzExLDcgKzMxMSw3IEBACiAgICAgbV9zdHJ1Y3R1cmUtPmRlcmVmKCk7
CiB9CiAKLWlubGluZSBKU1ZhbHVlIEpTT2JqZWN0Ojpwcm90b3R5cGUoKSBjb25zdAorSlNfRVhQ
T1JURURfU1lNQk9MIGlubGluZSBKU1ZhbHVlIEpTT2JqZWN0Ojpwcm90b3R5cGUoKSBjb25zdAog
ewogICAgIHJldHVybiBtX3N0cnVjdHVyZS0+c3RvcmVkUHJvdG90eXBlKCk7CiB9CkBAIC0zOTEs
NyArMzkxLDcgQEAKIC8vIEl0IG1heSBzZWVtIGNyYXp5IHRvIGlubGluZSBhIGZ1bmN0aW9uIHRo
aXMgbGFyZ2UsIGVzcGVjaWFsbHkgYSB2aXJ0dWFsIGZ1bmN0aW9uLAogLy8gYnV0IGl0IG1ha2Vz
IGEgYmlnIGRpZmZlcmVuY2UgdG8gcHJvcGVydHkgbG9va3VwIHRoYXQgZGVyaXZlZCBjbGFzc2Vz
IGNhbiBpbmxpbmUgdGhlaXIKIC8vIGJhc2UgY2xhc3MgY2FsbCB0byB0aGlzLgotQUxXQVlTX0lO
TElORSBib29sIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK0pTX0VY
UE9SVEVEX1NZTUJPTCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OmdldE93blByb3BlcnR5
U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90JiBzbG90KQogewogICAgIHJldHVybiBpbmxpbmVHZXRPd25Qcm9wZXJ0eVNsb3Qo
ZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KQEAgLTU3Niw3ICs1NzYsNyBAQAogICAgIHB1
dERpcmVjdEludGVybmFsKHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIGZhbHNlLCBz
bG90LCBnZXRKU0Z1bmN0aW9uKGdsb2JhbERhdGEsIHZhbHVlKSk7CiB9CiAKLWlubGluZSB2b2lk
IEpTT2JqZWN0OjpwdXREaXJlY3QoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBib29sIGNoZWNrUmVhZE9ubHksIFB1dFBy
b3BlcnR5U2xvdCYgc2xvdCkKK0pTX0VYUE9SVEVEX1NZTUJPTCBpbmxpbmUgdm9pZCBKU09iamVj
dDo6cHV0RGlyZWN0KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgYm9vbCBjaGVja1JlYWRPbmx5LCBQdXRQcm9wZXJ0eVNs
b3QmIHNsb3QpCiB7CiAgICAgQVNTRVJUKHZhbHVlKTsKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAo
dmFsdWUpIHx8IEhlYXA6OmhlYXAodmFsdWUpID09IEhlYXA6OmhlYXAodGhpcykpOwpAQCAtNTg0
LDE4ICs1ODQsMTggQEAKICAgICBwdXREaXJlY3RJbnRlcm5hbChwcm9wZXJ0eU5hbWUsIHZhbHVl
LCBhdHRyaWJ1dGVzLCBjaGVja1JlYWRPbmx5LCBzbG90LCAwKTsKIH0KIAotaW5saW5lIHZvaWQg
SlNPYmplY3Q6OnB1dERpcmVjdChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCitKU19FWFBPUlRFRF9TWU1CT0wgaW5saW5l
IHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAgICAgUHV0UHJvcGVydHlT
bG90IHNsb3Q7CiAgICAgcHV0RGlyZWN0SW50ZXJuYWwocHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0
cmlidXRlcywgZmFsc2UsIHNsb3QsIDApOwogfQogCi1pbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0
RGlyZWN0RnVuY3Rpb24oY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0NlbGwqIHZh
bHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBib29sIGNoZWNrUmVhZE9ubHksIFB1dFByb3BlcnR5
U2xvdCYgc2xvdCkKK0pTX0VYUE9SVEVEX1NZTUJPTCBpbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0
RGlyZWN0RnVuY3Rpb24oY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0NlbGwqIHZh
bHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBib29sIGNoZWNrUmVhZE9ubHksIFB1dFByb3BlcnR5
U2xvdCYgc2xvdCkKIHsKICAgICBwdXREaXJlY3RJbnRlcm5hbChwcm9wZXJ0eU5hbWUsIHZhbHVl
LCBhdHRyaWJ1dGVzLCBjaGVja1JlYWRPbmx5LCBzbG90LCB2YWx1ZSk7CiB9CiAKLWlubGluZSB2
b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RGdW5jdGlvbihjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIEpTQ2VsbCogdmFsdWUsIHVuc2lnbmVkIGF0dHIpCitKU19FWFBPUlRFRF9TWU1CT0wg
aW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdEZ1bmN0aW9uKGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgSlNDZWxsKiB2YWx1ZSwgdW5zaWduZWQgYXR0cikKIHsKICAgICBQdXRQ
cm9wZXJ0eVNsb3Qgc2xvdDsKICAgICBwdXREaXJlY3RJbnRlcm5hbChwcm9wZXJ0eU5hbWUsIHZh
bHVlLCBhdHRyLCBmYWxzZSwgc2xvdCwgdmFsdWUpOwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGNlcHRpb25IZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGNlcHRpb25IZWxwZXJzLmgJKHJldmlzaW9uIDYxMzI3KQorKysgSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDkgKzQy
LDkgQEAKICAgICBjbGFzcyBOb2RlOwogICAgIHN0cnVjdCBJbnN0cnVjdGlvbjsKICAgICAKLSAg
ICBKU1ZhbHVlIGNyZWF0ZUludGVycnVwdGVkRXhlY3V0aW9uRXhjZXB0aW9uKEpTR2xvYmFsRGF0
YSopOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBKU1ZhbHVlIGNyZWF0ZUludGVycnVwdGVkRXhl
Y3V0aW9uRXhjZXB0aW9uKEpTR2xvYmFsRGF0YSopOwogICAgIEpTVmFsdWUgY3JlYXRlVGVybWlu
YXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihKU0dsb2JhbERhdGEqKTsKLSAgICBKU09iamVjdCogY3Jl
YXRlU3RhY2tPdmVyZmxvd0Vycm9yKEV4ZWNTdGF0ZSopOworICAgIEpTX0VYUE9SVEVEX1NZTUJP
TCBKU09iamVjdCogY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKEV4ZWNTdGF0ZSopOwogICAgIEpT
VmFsdWUgY3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyJiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIENvZGVCbG9jayopOwogICAgIEpTTm90
QW5PYmplY3RFcnJvclN0dWIqIGNyZWF0ZU5vdEFuT2JqZWN0RXJyb3JTdHViKEV4ZWNTdGF0ZSos
IGJvb2wgaXNOdWxsKTsKICAgICBKU09iamVjdCogY3JlYXRlSW52YWxpZFBhcmFtRXJyb3IoRXhl
Y1N0YXRlKiwgY29uc3QgY2hhciogb3AsIEpTVmFsdWUsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0
LCBDb2RlQmxvY2sqKTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCShyZXZp
c2lvbiA2MTMyNykKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NCwxNCArNDQsMTQgQEAKICAgICAgICAgdHlwZWRlZiBKU09iamVjdFdp
dGhHbG9iYWxPYmplY3QgQmFzZTsKIAogICAgIHB1YmxpYzoKLSAgICAgICAgSlNGdW5jdGlvbihF
eGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4s
IGludCBsZW5ndGgsIGNvbnN0IElkZW50aWZpZXImLCBOYXRpdmVGdW5jdGlvbik7CisgICAgICAg
IEpTX0VYUE9SVEVEX1NZTUJPTCBKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0
KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgaW50IGxlbmd0aCwgY29uc3QgSWRlbnRp
ZmllciYsIE5hdGl2ZUZ1bmN0aW9uKTsKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBKU0Z1bmN0
aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0
dXJlPiwgaW50IGxlbmd0aCwgY29uc3QgSWRlbnRpZmllciYsIFBhc3NSZWZQdHI8TmF0aXZlRXhl
Y3V0YWJsZT4pOwogI2VuZGlmCiAgICAgICAgIEpTRnVuY3Rpb24oRXhlY1N0YXRlKiwgTm9uTnVs
bFBhc3NSZWZQdHI8RnVuY3Rpb25FeGVjdXRhYmxlPiwgU2NvcGVDaGFpbk5vZGUqKTsKICAgICAg
ICAgdmlydHVhbCB+SlNGdW5jdGlvbigpOwogCi0gICAgICAgIGNvbnN0IFVTdHJpbmcmIG5hbWUo
RXhlY1N0YXRlKik7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBjb25zdCBVU3RyaW5nJiBu
YW1lKEV4ZWNTdGF0ZSopOwogICAgICAgICBjb25zdCBVU3RyaW5nIGRpc3BsYXlOYW1lKEV4ZWNT
dGF0ZSopOwogICAgICAgICBjb25zdCBVU3RyaW5nIGNhbGN1bGF0ZWREaXNwbGF5TmFtZShFeGVj
U3RhdGUqKTsKIApAQCAtNzIsNyArNzIsNyBAQAogICAgICAgICBpbmxpbmUgYm9vbCBpc0hvc3RG
dW5jdGlvbigpIGNvbnN0OwogICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGpzRXhlY3V0YWJs
ZSgpIGNvbnN0OwogCi0gICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNzSW5m
byBpbmZvOworICAgICAgICBzdGF0aWMgSlNfRVhQT1JURURfU1lNQk9MIGNvbnN0IENsYXNzSW5m
byBpbmZvOwogCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlU3Ry
dWN0dXJlKEpTVmFsdWUgcHJvdG90eXBlKSAKICAgICAgICAgeyAKQEAgLTkwLDcgKzkwLDcgQEAK
ICAgICBwcml2YXRlOgogICAgICAgICBKU0Z1bmN0aW9uKE5vbk51bGxQYXNzUmVmUHRyPFN0cnVj
dHVyZT4pOwogCi0gICAgICAgIGJvb2wgaXNIb3N0RnVuY3Rpb25Ob25JbmxpbmUoKSBjb25zdDsK
KyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIGJvb2wgaXNIb3N0RnVuY3Rpb25Ob25JbmxpbmUo
KSBjb25zdDsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNT
dGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgdmlydHVh
bCBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlm
aWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09iamVjdFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T2JqZWN0UHJvdG90eXBlLmgJKHJldmlzaW9uIDYxMzI3KQorKysgSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PYmplY3RQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQAog
ICAgICAgICBib29sIG1faGFzTm9Qcm9wZXJ0aWVzV2l0aFVJbnQzMk5hbWVzOwogICAgIH07CiAK
LSAgICBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY1RvU3RyaW5n
KEV4ZWNTdGF0ZSopOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSopOwogCiB9IC8vIG5h
bWVzcGFjZSBKU0MKIApJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmgJKHJldmlzaW9uIDYx
MzI3KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTE0NCw3ICsxNDQsNyBAQAogICAgICAgICBzdGF0aWMgdm9pZCBtYXJrTGlzdHMoTWFya1N0
YWNrJiwgTGlzdFNldCYpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCBzbG93QXBwZW5k
KEpTVmFsdWUpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBzbG93QXBwZW5kKEpT
VmFsdWUpOwogICAgICAgICAKICAgICAgICAgUmVnaXN0ZXIqIG1fYnVmZmVyOwogICAgICAgICBz
aXplX3QgbV9zaXplOwpAQCAtMjM0LDcgKzIzNCw3IEBACiAgICAgICAgIGNvbnN0X2l0ZXJhdG9y
IGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9hcmdzOyB9CiAgICAgICAgIGNvbnN0X2l0ZXJhdG9y
IGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fYXJncyArIG1fYXJnQ291bnQ7IH0KIAotICAgICAgICB2
b2lkIGdldFNsaWNlKGludCBzdGFydEluZGV4LCBBcmdMaXN0JiByZXN1bHQpIGNvbnN0OworICAg
ICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBnZXRTbGljZShpbnQgc3RhcnRJbmRleCwgQXJn
TGlzdCYgcmVzdWx0KSBjb25zdDsKICAgICBwcml2YXRlOgogICAgICAgICBKU1ZhbHVlKiBtX2Fy
Z3M7CiAgICAgICAgIHNpemVfdCBtX2FyZ0NvdW50OwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5LmgJKHJldmlzaW9uIDYxMzI3KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDkgKzQxLDkgQEAKICAgICAgICAgZnJpZW5kIGNsYXNz
IFdhbGtlcjsKIAogICAgIHB1YmxpYzoKLSAgICAgICAgZXhwbGljaXQgSlNBcnJheShOb25OdWxs
UGFzc1JlZlB0cjxTdHJ1Y3R1cmU+KTsKLSAgICAgICAgSlNBcnJheShOb25OdWxsUGFzc1JlZlB0
cjxTdHJ1Y3R1cmU+LCB1bnNpZ25lZCBpbml0aWFsTGVuZ3RoKTsKLSAgICAgICAgSlNBcnJheShO
b25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBjb25zdCBBcmdMaXN0JiBpbml0aWFsVmFsdWVz
KTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIGV4cGxpY2l0IEpTQXJyYXkoTm9uTnVsbFBh
c3NSZWZQdHI8U3RydWN0dXJlPik7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBKU0FycmF5
KE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIHVuc2lnbmVkIGluaXRpYWxMZW5ndGgpOwor
ICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgSlNBcnJheShOb25OdWxsUGFzc1JlZlB0cjxTdHJ1
Y3R1cmU+LCBjb25zdCBBcmdMaXN0JiBpbml0aWFsVmFsdWVzKTsKICAgICAgICAgdmlydHVhbCB+
SlNBcnJheSgpOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhl
Y1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsK
QEAgLTUxLDEwICs1MSwxMCBAQAogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0
b3ImKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHB1dChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUpOyAvLyBGSVhNRTogTWFrZSBwcm90ZWN0ZWQgYW5kIGFkZCBzZXRJ
dGVtLgogCi0gICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNzSW5mbyBpbmZv
OworICAgICAgICBzdGF0aWMgSlNfRVhQT1JURURfU1lNQk9MIGNvbnN0IENsYXNzSW5mbyBpbmZv
OwogCiAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZS0+
bV9sZW5ndGg7IH0KLSAgICAgICAgdm9pZCBzZXRMZW5ndGgodW5zaWduZWQpOyAvLyBPSyB0byB1
c2Ugb24gbmV3IGFycmF5cywgYnV0IG5vdCBpZiBpdCBtaWdodCBiZSBhIFJlZ0V4cE1hdGNoQXJy
YXkuCisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIHNldExlbmd0aCh1bnNpZ25lZCk7
IC8vIE9LIHRvIHVzZSBvbiBuZXcgYXJyYXlzLCBidXQgbm90IGlmIGl0IG1pZ2h0IGJlIGEgUmVn
RXhwTWF0Y2hBcnJheS4KIAogICAgICAgICB2b2lkIHNvcnQoRXhlY1N0YXRlKik7CiAgICAgICAg
IHZvaWQgc29ydChFeGVjU3RhdGUqLCBKU1ZhbHVlIGNvbXBhcmVGdW5jdGlvbiwgQ2FsbFR5cGUs
IGNvbnN0IENhbGxEYXRhJik7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFs
RnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFs
RnVuY3Rpb24uaAkocmV2aXNpb24gNjEzMjcpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGVybmFsRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogICAgIGNs
YXNzIEludGVybmFsRnVuY3Rpb24gOiBwdWJsaWMgSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0IHsK
ICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8o
KSBjb25zdDsgCi0gICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNzSW5mbyBp
bmZvOworICAgICAgICBzdGF0aWMgSlNfRVhQT1JURURfU1lNQk9MIGNvbnN0IENsYXNzSW5mbyBp
bmZvOwogCiAgICAgICAgIGNvbnN0IFVTdHJpbmcmIG5hbWUoRXhlY1N0YXRlKik7CiAgICAgICAg
IGNvbnN0IFVTdHJpbmcgZGlzcGxheU5hbWUoRXhlY1N0YXRlKik7CkBAIC01MSw3ICs1MSw3IEBA
CiAgICAgICAgIC8vIE9ubHkgdXNlZCB0byBhbGxvdyB1cyB0byBkZXRlcm1pbmUgdGhlIEpTRnVu
Y3Rpb24gdnB0cgogICAgICAgICBJbnRlcm5hbEZ1bmN0aW9uKE5vbk51bGxQYXNzUmVmUHRyPFN0
cnVjdHVyZT4gc3RydWN0dXJlKTsKIAotICAgICAgICBJbnRlcm5hbEZ1bmN0aW9uKEpTR2xvYmFs
RGF0YSosIEpTR2xvYmFsT2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgY29u
c3QgSWRlbnRpZmllciYpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgSW50ZXJuYWxGdW5j
dGlvbihKU0dsb2JhbERhdGEqLCBKU0dsb2JhbE9iamVjdCosIE5vbk51bGxQYXNzUmVmUHRyPFN0
cnVjdHVyZT4sIGNvbnN0IElkZW50aWZpZXImKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZp
cnR1YWwgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoQ2FsbERhdGEmKSA9IDA7CkluZGV4OiBKYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0lkZW50aWZpZXIuaAkocmV2aXNpb24gNjEzMjcpCisrKyBKYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0lkZW50aWZpZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsOSArNTQsOSBAQAog
ICAgICAgICAKICAgICAgICAgY29uc3QgY2hhciogYXNjaWkoKSBjb25zdCB7IHJldHVybiBfdXN0
cmluZy5hc2NpaSgpOyB9CiAgICAgICAgIAotICAgICAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9t
KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgeSk7Ci0gICAgICAgIHN0YXRpYyBJZGVudGlmaWVy
IGZyb20oRXhlY1N0YXRlKiBleGVjLCBpbnQgeSk7Ci0gICAgICAgIHN0YXRpYyBJZGVudGlmaWVy
IGZyb20oRXhlY1N0YXRlKiBleGVjLCBkb3VibGUgeSk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZ
TUJPTCBzdGF0aWMgSWRlbnRpZmllciBmcm9tKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgeSk7
CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0aWMgSWRlbnRpZmllciBmcm9tKEV4ZWNT
dGF0ZSogZXhlYywgaW50IHkpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgc3RhdGljIElk
ZW50aWZpZXIgZnJvbShFeGVjU3RhdGUqIGV4ZWMsIGRvdWJsZSB5KTsKICAgICAgICAgc3RhdGlj
IElkZW50aWZpZXIgZnJvbShKU0dsb2JhbERhdGEqLCB1bnNpZ25lZCB5KTsKICAgICAgICAgc3Rh
dGljIElkZW50aWZpZXIgZnJvbShKU0dsb2JhbERhdGEqLCBpbnQgeSk7CiAgICAgICAgIHN0YXRp
YyBJZGVudGlmaWVyIGZyb20oSlNHbG9iYWxEYXRhKiwgZG91YmxlIHkpOwpAQCAtNzYsMTIgKzc2
LDEyIEBACiAgICAgICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgSWRlbnRpZmllciYs
IGNvbnN0IGNoYXIqKTsKICAgICAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJZGVu
dGlmaWVyJiwgY29uc3QgY2hhciopOwogICAgIAotICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChj
b25zdCBVU3RyaW5nOjpSZXAqLCBjb25zdCBjaGFyKik7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZ
TUJPTCBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBVU3RyaW5nOjpSZXAqLCBjb25zdCBjaGFyKik7
CiAgICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFVTdHJpbmc6OlJlcCosIGNvbnN0IFVD
aGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3Qg
VVN0cmluZzo6UmVwKiBhLCBjb25zdCBVU3RyaW5nOjpSZXAqIGIpIHsgcmV0dXJuIDo6ZXF1YWwo
YSwgYik7IH0KIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxVU3RyaW5nOjpSZXA+IGFkZChF
eGVjU3RhdGUqLCBjb25zdCBjaGFyKik7IC8vIE9ubHkgdG8gYmUgdXNlZCB3aXRoIHN0cmluZyBs
aXRlcmFscy4KLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8VVN0cmluZzo6UmVwPiBhZGQoSlNH
bG9iYWxEYXRhKiwgY29uc3QgY2hhciopOyAvLyBPbmx5IHRvIGJlIHVzZWQgd2l0aCBzdHJpbmcg
bGl0ZXJhbHMuCisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0aWMgUGFzc1JlZlB0cjxV
U3RyaW5nOjpSZXA+IGFkZChFeGVjU3RhdGUqLCBjb25zdCBjaGFyKik7IC8vIE9ubHkgdG8gYmUg
dXNlZCB3aXRoIHN0cmluZyBsaXRlcmFscy4KKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHN0
YXRpYyBQYXNzUmVmUHRyPFVTdHJpbmc6OlJlcD4gYWRkKEpTR2xvYmFsRGF0YSosIGNvbnN0IGNo
YXIqKTsgLy8gT25seSB0byBiZSB1c2VkIHdpdGggc3RyaW5nIGxpdGVyYWxzLgogCiAgICAgcHJp
dmF0ZToKICAgICAgICAgVVN0cmluZyBfdXN0cmluZzsKQEAgLTExMSwxMCArMTExLDEwIEBACiAg
ICAgICAgICAgICByZXR1cm4gYWRkU2xvd0Nhc2UoZ2xvYmFsRGF0YSwgcik7CiAgICAgICAgIH0K
IAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxVU3RyaW5nOjpSZXA+IGFkZFNsb3dDYXNlKEV4
ZWNTdGF0ZSosIFVTdHJpbmc6OlJlcCogcik7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBz
dGF0aWMgUGFzc1JlZlB0cjxVU3RyaW5nOjpSZXA+IGFkZFNsb3dDYXNlKEV4ZWNTdGF0ZSosIFVT
dHJpbmc6OlJlcCogcik7CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFVTdHJpbmc6OlJlcD4g
YWRkU2xvd0Nhc2UoSlNHbG9iYWxEYXRhKiwgVVN0cmluZzo6UmVwKiByKTsKIAotICAgICAgICBz
dGF0aWMgdm9pZCBjaGVja0N1cnJlbnRJZGVudGlmaWVyVGFibGUoRXhlY1N0YXRlKik7CisgICAg
ICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0aWMgdm9pZCBjaGVja0N1cnJlbnRJZGVudGlmaWVy
VGFibGUoRXhlY1N0YXRlKik7CiAgICAgICAgIHN0YXRpYyB2b2lkIGNoZWNrQ3VycmVudElkZW50
aWZpZXJUYWJsZShKU0dsb2JhbERhdGEqKTsKICAgICB9OwogICAgIApJbmRleDogSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCShyZXZpc2lvbiA2MTMyNykKKysrIEphdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDIwICsyOSwy
MCBAQAogICAgIGNsYXNzIFN0cmluZ09iamVjdCA6IHB1YmxpYyBKU1dyYXBwZXJPYmplY3Qgewog
ICAgIHB1YmxpYzoKICAgICAgICAgU3RyaW5nT2JqZWN0KEV4ZWNTdGF0ZSosIE5vbk51bGxQYXNz
UmVmUHRyPFN0cnVjdHVyZT4pOwotICAgICAgICBTdHJpbmdPYmplY3QoRXhlY1N0YXRlKiwgTm9u
TnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgY29uc3QgVVN0cmluZyYpOworICAgICAgICBKU19F
WFBPUlRFRF9TWU1CT0wgU3RyaW5nT2JqZWN0KEV4ZWNTdGF0ZSosIE5vbk51bGxQYXNzUmVmUHRy
PFN0cnVjdHVyZT4sIGNvbnN0IFVTdHJpbmcmKTsKIAogICAgICAgICBzdGF0aWMgU3RyaW5nT2Jq
ZWN0KiBjcmVhdGUoRXhlY1N0YXRlKiwgSlNTdHJpbmcqKTsKIAotICAgICAgICB2aXJ0dWFsIGJv
b2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3QoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
KTsKLSAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3Rh
dGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgICAgIEpT
X0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0
ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAg
ICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4
ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAg
IEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIAot
ICAgICAgICB2aXJ0dWFsIHZvaWQgcHV0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgdmly
dHVhbCBib29sIGRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlIG1vZGUgPSBFeGNs
dWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1
YWwgdm9pZCBwdXQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1C
T0wgdmlydHVhbCBib29sIGRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIHZv
aWQgZ2V0T3duUHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVu
dW1lcmF0aW9uTW9kZSBtb2RlID0gRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CiAKICAgICAg
ICAgdmlydHVhbCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZp
bmZvOyB9Ci0gICAgICAgIHN0YXRpYyBjb25zdCBKU19FWFBPUlREQVRBIENsYXNzSW5mbyBpbmZv
OworICAgICAgICBzdGF0aWMgY29uc3QgSlNfRVhQT1JURURfU1lNQk9MIENsYXNzSW5mbyBpbmZv
OwogCiAgICAgICAgIEpTU3RyaW5nKiBpbnRlcm5hbFZhbHVlKCkgY29uc3QgeyByZXR1cm4gYXNT
dHJpbmcoSlNXcmFwcGVyT2JqZWN0OjppbnRlcm5hbFZhbHVlKCkpO30KIApJbmRleDogSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuaAkocmV2aXNpb24gNjEzMjcpCisrKyBKYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDggKzczLDgg
QEAKICAgICAgICAgICAgICAgICBzZXRJbmRleChpLCBieXRlVmFsdWUpOwogICAgICAgICB9CiAK
LSAgICAgICAgSlNCeXRlQXJyYXkoRXhlY1N0YXRlKiBleGVjLCBOb25OdWxsUGFzc1JlZlB0cjxT
dHJ1Y3R1cmU+LCBXVEY6OkJ5dGVBcnJheSogc3RvcmFnZSwgY29uc3QgSlNDOjpDbGFzc0luZm8q
ID0gJnNfZGVmYXVsdEluZm8pOwotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+
IGNyZWF0ZVN0cnVjdHVyZShKU1ZhbHVlIHByb3RvdHlwZSk7CisgICAgICAgIEpTX0VYUE9SVEVE
X1NZTUJPTCBKU0J5dGVBcnJheShFeGVjU3RhdGUqIGV4ZWMsIE5vbk51bGxQYXNzUmVmUHRyPFN0
cnVjdHVyZT4sIFdURjo6Qnl0ZUFycmF5KiBzdG9yYWdlLCBjb25zdCBKU0M6OkNsYXNzSW5mbyog
PSAmc19kZWZhdWx0SW5mbyk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0aWMgUGFz
c1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU1ZhbHVlIHByb3RvdHlwZSk7CiAg
ICAgICAgIAogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6RXhl
Y1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVy
dHlTbG90Jik7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpF
eGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7Cklu
ZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgJKHJldmlzaW9uIDYxMzI3KQorKysgSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Mb29rdXAuaAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDcgKzEzOSw3IEBA
CiAgICAgICAgICAgICAgICAgY3JlYXRlVGFibGUoJmV4ZWMtPmdsb2JhbERhdGEoKSk7CiAgICAg
ICAgIH0KIAotICAgICAgICB2b2lkIGRlbGV0ZVRhYmxlKCkgY29uc3Q7CisgICAgICAgIEpTX0VY
UE9SVEVEX1NZTUJPTCB2b2lkIGRlbGV0ZVRhYmxlKCkgY29uc3Q7CiAKICAgICAgICAgLy8gRmlu
ZCBhbiBlbnRyeSBpbiB0aGUgdGFibGUsIGFuZCByZXR1cm4gdGhlIGVudHJ5LgogICAgICAgICBB
TFdBWVNfSU5MSU5FIGNvbnN0IEhhc2hFbnRyeSogZW50cnkoSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSBjb25zdApAQCAtMTc0LDEwICsxNzQs
MTAgQEAKICAgICAgICAgfQogCiAgICAgICAgIC8vIENvbnZlcnQgdGhlIGhhc2ggdGFibGUga2V5
cyB0byBpZGVudGlmaWVycy4KLSAgICAgICAgdm9pZCBjcmVhdGVUYWJsZShKU0dsb2JhbERhdGEq
KSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZvaWQgY3JlYXRlVGFibGUoSlNH
bG9iYWxEYXRhKikgY29uc3Q7CiAgICAgfTsKIAotICAgIHZvaWQgc2V0VXBTdGF0aWNGdW5jdGlv
blNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSGFzaEVudHJ5KiwgSlNPYmplY3QqIHRoaXNPYmplY3Qs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgSlNf
RVhQT1JURURfU1lNQk9MIHZvaWQgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRlKiwg
Y29uc3QgSGFzaEVudHJ5KiwgSlNPYmplY3QqIHRoaXNPYmplY3QsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAKICAgICAvKioKICAgICAgKiBUaGlzIG1l
dGhvZCBkb2VzIGl0IGFsbCAobG9va2luZyBpbiB0aGUgaGFzaHRhYmxlLCBjaGVja2luZyBmb3Ig
ZnVuY3Rpb24KSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5oCShyZXZpc2lvbiA2
MTMyNykKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC01NSw4ICs1NSw4IEBACiAgICAgICAgIEpTVmFsdWUgbV92YWx1ZTsKICAgICB9Owog
Ci0gICAgQ29tcGxldGlvbiBjaGVja1N5bnRheChFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2Rl
Jik7Ci0gICAgQ29tcGxldGlvbiBldmFsdWF0ZShFeGVjU3RhdGUqLCBTY29wZUNoYWluJiwgY29u
c3QgU291cmNlQ29kZSYsIEpTVmFsdWUgdGhpc1ZhbHVlID0gSlNWYWx1ZSgpKTsKKyAgICBKU19F
WFBPUlRFRF9TWU1CT0wgQ29tcGxldGlvbiBjaGVja1N5bnRheChFeGVjU3RhdGUqLCBjb25zdCBT
b3VyY2VDb2RlJik7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIENvbXBsZXRpb24gZXZhbHVhdGUo
RXhlY1N0YXRlKiwgU2NvcGVDaGFpbiYsIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IEpTVmFsdWUoKSk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCkluZGV4OiBKYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAkocmV2aXNpb24gNjEzMjcpCisrKyBK
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAkod29ya2luZyBjb3B5KQpA
QCAtNDQsMTQgKzQ0LDE0IEBACiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAKICAgICBwdWJs
aWM6Ci0gICAgICAgIFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSgpIGNvbnN0IHsgcmV0dXJuICpk
LT5zeW1ib2xUYWJsZTsgfQorICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgU3ltYm9sVGFibGUm
IHN5bWJvbFRhYmxlKCkgY29uc3QgeyByZXR1cm4gKmQtPnN5bWJvbFRhYmxlOyB9CiAKICAgICAg
ICAgdmlydHVhbCB2b2lkIHB1dFdpdGhBdHRyaWJ1dGVzKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKSA9IDA7CiAKLSAgICAgICAgdmly
dHVhbCBib29sIGRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImKTsK
LSAgICAgICAgdmlydHVhbCB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSA9IEV4Y2x1ZGVEb250RW51bVBy
b3BlcnRpZXMpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCBib29sIGRlbGV0
ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImKTsKKyAgICAgICAgSlNfRVhQ
T1JURURfU1lNQk9MIHZpcnR1YWwgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlIG1vZGUgPSBFeGNsdWRlRG9udEVu
dW1Qcm9wZXJ0aWVzKTsKICAgICAgICAgCi0gICAgICAgIHZpcnR1YWwgYm9vbCBpc1ZhcmlhYmxl
T2JqZWN0KCkgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIGJvb2wg
aXNWYXJpYWJsZU9iamVjdCgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNEeW5hbWlj
U2NvcGUoYm9vbCYgcmVxdWlyZXNEeW5hbWljQ2hlY2tzKSBjb25zdCA9IDA7CiAKICAgICAgICAg
UmVnaXN0ZXImIHJlZ2lzdGVyQXQoaW50IGluZGV4KSBjb25zdCB7IHJldHVybiBkLT5yZWdpc3Rl
cnNbaW5kZXhdOyB9CkBAIC05Myw3ICs5Myw3IEBACiAgICAgICAgIHZvaWQgc2V0UmVnaXN0ZXJz
KFJlZ2lzdGVyKiByLCBSZWdpc3RlciogcmVnaXN0ZXJBcnJheSk7CiAKICAgICAgICAgYm9vbCBz
eW1ib2xUYWJsZUdldChjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAg
IGJvb2wgc3ltYm9sVGFibGVHZXQoY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRv
ciYpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgYm9vbCBzeW1ib2xUYWJsZUdldChjb25z
dCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgICAgIGJvb2wgc3ltYm9s
VGFibGVHZXQoY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYsIGJvb2wmIHNsb3RJc1dy
aXRlYWJsZSk7CiAgICAgICAgIGJvb2wgc3ltYm9sVGFibGVQdXQoY29uc3QgSWRlbnRpZmllciYs
IEpTVmFsdWUpOwogICAgICAgICBib29sIHN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMoY29u
c3QgSWRlbnRpZmllciYsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwpJbmRleDogSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ2VsbC5oCShyZXZpc2lvbiA2MTMyNykKKysrIEphdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDggKzQ4LDggQEAKICAgICAgICAg
ZnJpZW5kIGNsYXNzIEpTR2xvYmFsRGF0YTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIGV4cGxp
Y2l0IEpTQ2VsbChTdHJ1Y3R1cmUqKTsKLSAgICAgICAgdmlydHVhbCB+SlNDZWxsKCk7CisgICAg
ICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBleHBsaWNpdCBKU0NlbGwoU3RydWN0dXJlKik7CisgICAg
ICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIH5KU0NlbGwoKTsKIAogICAgIHB1YmxpYzoK
ICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVEdW1teVN0cnVjdHVy
ZSgpCkBAIC02MSwzOSArNjEsMzkgQEAKICNpZiBVU0UoSlNWQUxVRTMyKQogICAgICAgICBib29s
IGlzTnVtYmVyKCkgY29uc3Q7CiAjZW5kaWYKLSAgICAgICAgYm9vbCBpc1N0cmluZygpIGNvbnN0
OwotICAgICAgICBib29sIGlzT2JqZWN0KCkgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBp
c0dldHRlclNldHRlcigpIGNvbnN0OwotICAgICAgICBib29sIGluaGVyaXRzKGNvbnN0IENsYXNz
SW5mbyopIGNvbnN0OworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgYm9vbCBpc1N0cmluZygp
IGNvbnN0OworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgYm9vbCBpc09iamVjdCgpIGNvbnN0
OworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCBib29sIGlzR2V0dGVyU2V0dGVy
KCkgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBib29sIGluaGVyaXRzKGNvbnN0
IENsYXNzSW5mbyopIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNBUElWYWx1ZVdyYXBw
ZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNQcm9w
ZXJ0eU5hbWVJdGVyYXRvcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICAgICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUoKSBjb25zdDsKIAogICAgICAgICAvLyBFeHRyYWN0aW5nIHRoZSB2
YWx1ZS4KLSAgICAgICAgYm9vbCBnZXRTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBVU3RyaW5nJikg
Y29uc3Q7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBib29sIGdldFN0cmluZyhFeGVjU3Rh
dGUqIGV4ZWMsIFVTdHJpbmcmKSBjb25zdDsKICAgICAgICAgVVN0cmluZyBnZXRTdHJpbmcoRXhl
Y1N0YXRlKiBleGVjKSBjb25zdDsgLy8gbnVsbCBzdHJpbmcgaWYgbm90IGEgc3RyaW5nCi0gICAg
ICAgIEpTT2JqZWN0KiBnZXRPYmplY3QoKTsgLy8gTlVMTCBpZiBub3QgYW4gb2JqZWN0Ci0gICAg
ICAgIGNvbnN0IEpTT2JqZWN0KiBnZXRPYmplY3QoKSBjb25zdDsgLy8gTlVMTCBpZiBub3QgYW4g
b2JqZWN0CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBKU09iamVjdCogZ2V0T2JqZWN0KCk7
IC8vIE5VTEwgaWYgbm90IGFuIG9iamVjdAorICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgY29u
c3QgSlNPYmplY3QqIGdldE9iamVjdCgpIGNvbnN0OyAvLyBOVUxMIGlmIG5vdCBhbiBvYmplY3QK
ICAgICAgICAgCi0gICAgICAgIHZpcnR1YWwgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoQ2FsbERhdGEm
KTsKLSAgICAgICAgdmlydHVhbCBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoQ29uc3Ry
dWN0RGF0YSYpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCBDYWxsVHlwZSBn
ZXRDYWxsRGF0YShDYWxsRGF0YSYpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVh
bCBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoQ29uc3RydWN0RGF0YSYpOwogCiAgICAg
ICAgIC8vIEV4dHJhY3RpbmcgaW50ZWdlciB2YWx1ZXMuCiAgICAgICAgIC8vIEZJWE1FOiByZW1v
dmUgdGhlc2UgbWV0aG9kcywgY2FuIGNoZWNrIGlzTnVtYmVyQ2VsbCBpbiBKU1ZhbHVlICYmIHRo
ZW4gY2FsbCBhc051bWJlckNlbGw6OiouCi0gICAgICAgIHZpcnR1YWwgYm9vbCBnZXRVSW50MzIo
dWludDMyX3QmKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgYm9v
bCBnZXRVSW50MzIodWludDMyX3QmKSBjb25zdDsKIAogICAgICAgICAvLyBCYXNpYyBjb252ZXJz
aW9ucy4KLSAgICAgICAgdmlydHVhbCBKU1ZhbHVlIHRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSosIFBy
ZWZlcnJlZFByaW1pdGl2ZVR5cGUpIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0UHJp
bWl0aXZlTnVtYmVyKEV4ZWNTdGF0ZSosIGRvdWJsZSYgbnVtYmVyLCBKU1ZhbHVlJik7Ci0gICAg
ICAgIHZpcnR1YWwgYm9vbCB0b0Jvb2xlYW4oRXhlY1N0YXRlKikgY29uc3Q7Ci0gICAgICAgIHZp
cnR1YWwgZG91YmxlIHRvTnVtYmVyKEV4ZWNTdGF0ZSopIGNvbnN0OwotICAgICAgICB2aXJ0dWFs
IFVTdHJpbmcgdG9TdHJpbmcoRXhlY1N0YXRlKikgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgSlNP
YmplY3QqIHRvT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICBKU19FWFBPUlRFRF9T
WU1CT0wgdmlydHVhbCBKU1ZhbHVlIHRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSosIFByZWZlcnJlZFBy
aW1pdGl2ZVR5cGUpIGNvbnN0OworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCBi
b29sIGdldFByaW1pdGl2ZU51bWJlcihFeGVjU3RhdGUqLCBkb3VibGUmIG51bWJlciwgSlNWYWx1
ZSYpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCBib29sIHRvQm9vbGVhbihF
eGVjU3RhdGUqKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgZG91
YmxlIHRvTnVtYmVyKEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICBKU19FWFBPUlRFRF9TWU1C
T0wgdmlydHVhbCBVU3RyaW5nIHRvU3RyaW5nKEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICBK
U19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCBKU09iamVjdCogdG9PYmplY3QoRXhlY1N0YXRlKikg
Y29uc3Q7CiAKICAgICAgICAgLy8gR2FyYmFnZSBjb2xsZWN0aW9uLgotICAgICAgICB2b2lkKiBv
cGVyYXRvciBuZXcoc2l6ZV90LCBFeGVjU3RhdGUqKTsKLSAgICAgICAgdm9pZCogb3BlcmF0b3Ig
bmV3KHNpemVfdCwgSlNHbG9iYWxEYXRhKik7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2
b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBFeGVjU3RhdGUqKTsKKyAgICAgICAgSlNfRVhQT1JU
RURfU1lNQk9MIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIEpTR2xvYmFsRGF0YSopOwogICAg
ICAgICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKiBwbGFjZW1lbnROZXdEZXN0aW5h
dGlvbikgeyByZXR1cm4gcGxhY2VtZW50TmV3RGVzdGluYXRpb247IH0KIAogICAgICAgICB2aXJ0
dWFsIHZvaWQgbWFya0NoaWxkcmVuKE1hcmtTdGFjayYpOwpAQCAtMTAyLDE2ICsxMDIsMTYgQEAK
ICNlbmRpZgogCiAgICAgICAgIC8vIE9iamVjdCBvcGVyYXRpb25zLCB3aXRoIHRoZSB0b09iamVj
dCBvcGVyYXRpb24gaW5jbHVkZWQuCi0gICAgICAgIHZpcnR1YWwgY29uc3QgQ2xhc3NJbmZvKiBj
bGFzc0luZm8oKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCB2b2lkIHB1dChFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYp
OwotICAgICAgICB2aXJ0dWFsIHZvaWQgcHV0KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSk7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBkZWxldGVQcm9wZXJ0eShFeGVj
U3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOwotICAgICAgICB2aXJ0dWFs
IGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsK
KyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgY29uc3QgQ2xhc3NJbmZvKiBjbGFz
c0luZm8oKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgdm9pZCBw
dXQoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgdm9p
ZCBwdXQoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlKTsKKyAgICAg
ICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgYm9vbCBkZWxldGVQcm9wZXJ0eShFeGVjU3Rh
dGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOworICAgICAgICBKU19FWFBPUlRF
RF9TWU1CT0wgdmlydHVhbCBib29sIGRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIHVuc2lnbmVk
IHByb3BlcnR5TmFtZSk7CiAKLSAgICAgICAgdmlydHVhbCBKU09iamVjdCogdG9UaGlzT2JqZWN0
KEV4ZWNTdGF0ZSopIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIEpTVmFsdWUgZ2V0SlNOdW1iZXIo
KTsKLSAgICAgICAgdm9pZCogdnB0cigpIHsgcmV0dXJuICpyZWludGVycHJldF9jYXN0PHZvaWQq
Kj4odGhpcyk7IH0KLSAgICAgICAgdm9pZCBzZXRWUHRyKHZvaWQqIHZwdHIpIHsgKnJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCoqPih0aGlzKSA9IHZwdHI7IH0KKyAgICAgICAgSlNfRVhQT1JURURfU1lN
Qk9MIHZpcnR1YWwgSlNPYmplY3QqIHRvVGhpc09iamVjdChFeGVjU3RhdGUqKSBjb25zdDsKKyAg
ICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgSlNWYWx1ZSBnZXRKU051bWJlcigpOwor
ICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCogdnB0cigpIHsgcmV0dXJuICpyZWludGVy
cHJldF9jYXN0PHZvaWQqKj4odGhpcyk7IH0KKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZv
aWQgc2V0VlB0cih2b2lkKiB2cHRyKSB7ICpyZWludGVycHJldF9jYXN0PHZvaWQqKj4odGhpcykg
PSB2cHRyOyB9CiAKICAgICAgICAgLy8gRklYTUU6IFJlbmFtZSBnZXRPd25Qcm9wZXJ0eVNsb3Qg
dG8gdmlydHVhbEdldE93blByb3BlcnR5U2xvdCwgYW5kCiAgICAgICAgIC8vIGZhc3RHZXRPd25Q
cm9wZXJ0eVNsb3QgdG8gZ2V0T3duUHJvcGVydHlTbG90LiBDYWxsZXJzIHNob3VsZCBhbHdheXMK
QEAgLTEyNCw4ICsxMjQsOCBAQAogCiAgICAgcHJpdmF0ZToKICAgICAgICAgLy8gQmFzZSBpbXBs
ZW1lbnRhdGlvbjsgZm9yIG5vbi1vYmplY3QgY2xhc3NlcyBpbXBsZW1lbnRzIGdldFByb3BlcnR5
U2xvdC4KLSAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUq
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgICAg
ICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2
aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZ
TUJPTCB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIHVuc2lnbmVk
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIAogICAgICAgICBTdHJ1Y3R1
cmUqIG1fc3RydWN0dXJlOwogICAgIH07CkBAIC0xNTEsNyArMTUxLDcgQEAKICAgICAgICAgcmV0
dXJuIG1fc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBPYmplY3RUeXBlOwogICAgIH0K
IAotICAgIGlubGluZSBib29sIEpTQ2VsbDo6aXNTdHJpbmcoKSBjb25zdAorICAgIEpTX0VYUE9S
VEVEX1NZTUJPTCBpbmxpbmUgYm9vbCBKU0NlbGw6OmlzU3RyaW5nKCkgY29uc3QKICAgICB7CiAg
ICAgICAgIHJldHVybiBtX3N0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gU3RyaW5nVHlw
ZTsKICAgICB9CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmgJKHJldmlzaW9uIDYxMzI3KQor
KysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNzcs
OCArNzcsOCBAQAogICAgICAgICAgICAgdW5sb2NrKG1fbG9ja0JlaGF2aW9yKTsgCiAgICAgICAg
IH0KICAgICAgICAgCi0gICAgICAgIHN0YXRpYyB2b2lkIGxvY2soSlNMb2NrQmVoYXZpb3IpOwot
ICAgICAgICBzdGF0aWMgdm9pZCB1bmxvY2soSlNMb2NrQmVoYXZpb3IpOworICAgICAgICBKU19F
WFBPUlRFRF9TWU1CT0wgc3RhdGljIHZvaWQgbG9jayhKU0xvY2tCZWhhdmlvcik7CisgICAgICAg
IEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0aWMgdm9pZCB1bmxvY2soSlNMb2NrQmVoYXZpb3IpOwog
ICAgICAgICBzdGF0aWMgdm9pZCBsb2NrKEV4ZWNTdGF0ZSopOwogICAgICAgICBzdGF0aWMgdm9p
ZCB1bmxvY2soRXhlY1N0YXRlKik7CiAKQEAgLTg3LDcgKzg3LDcgQEAKIAogICAgICAgICBKU0xv
Y2tCZWhhdmlvciBtX2xvY2tCZWhhdmlvcjsKIAotICAgICAgICBjbGFzcyBEcm9wQWxsTG9ja3Mg
OiBwdWJsaWMgTm9uY29weWFibGUgeworICAgICAgICBjbGFzcyBKU19FWFBPUlRFRF9TWU1CT0wg
RHJvcEFsbExvY2tzIDogcHVibGljIE5vbmNvcHlhYmxlIHsKICAgICAgICAgcHVibGljOgogICAg
ICAgICAgICAgRHJvcEFsbExvY2tzKEV4ZWNTdGF0ZSogZXhlYyk7CiAgICAgICAgICAgICBEcm9w
QWxsTG9ja3MoSlNMb2NrQmVoYXZpb3IpOwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm9wZXJ0eVNsb3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3Bl
cnR5U2xvdC5oCShyZXZpc2lvbiA2MTMyNykKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
cGVydHlTbG90LmgJKHdvcmtpbmcgY29weSkKQEAgLTI0Myw3ICsyNDMsNyBAQAogICAgICAgICAg
ICAgcmV0dXJuIG1fZ2V0VmFsdWU7CiAgICAgICAgIH0KICAgICBwcml2YXRlOgotICAgICAgICBK
U1ZhbHVlIGZ1bmN0aW9uR2V0dGVyKEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICBKU19FWFBP
UlRFRF9TWU1CT0wgSlNWYWx1ZSBmdW5jdGlvbkdldHRlcihFeGVjU3RhdGUqKSBjb25zdDsKIAog
ICAgICAgICBHZXRWYWx1ZUZ1bmMgbV9nZXRWYWx1ZTsKICAgICAgICAgR2V0SW5kZXhWYWx1ZUZ1
bmMgbV9nZXRJbmRleFZhbHVlOwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlv
bkNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5j
dGlvbkNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDYxMzI3KQorKysgSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcg
QEAKICAgICAgICAgdmlydHVhbCBDYWxsVHlwZSBnZXRDYWxsRGF0YShDYWxsRGF0YSYpOwogICAg
IH07CiAKLSAgICBKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiwgY29uc3Qg
QXJnTGlzdCYsIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwgY29uc3QgVVN0cmluZyYg
c291cmNlVVJMLCBpbnQgbGluZU51bWJlcik7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIEpTT2Jq
ZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqLCBjb25zdCBBcmdMaXN0JiwgY29uc3Qg
SWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBVU3RyaW5nJiBzb3VyY2VVUkwsIGludCBs
aW5lTnVtYmVyKTsKICAgICBKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiwg
Y29uc3QgQXJnTGlzdCYpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IEphdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TbWFsbFN0cmluZ3MuaAkocmV2aXNpb24gNjEzMjcpCisrKyBKYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC02NCw4ICs2NCw4IEBA
CiAgICAgICAgIEpTU3RyaW5nKiogc2luZ2xlQ2hhcmFjdGVyU3RyaW5ncygpIHsgcmV0dXJuIG1f
c2luZ2xlQ2hhcmFjdGVyU3RyaW5nczsgfQogI2VuZGlmCiAgICAgcHJpdmF0ZToKLSAgICAgICAg
dm9pZCBjcmVhdGVFbXB0eVN0cmluZyhKU0dsb2JhbERhdGEqKTsKLSAgICAgICAgdm9pZCBjcmVh
dGVTaW5nbGVDaGFyYWN0ZXJTdHJpbmcoSlNHbG9iYWxEYXRhKiwgdW5zaWduZWQgY2hhcik7Cisg
ICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIGNyZWF0ZUVtcHR5U3RyaW5nKEpTR2xvYmFs
RGF0YSopOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBjcmVhdGVTaW5nbGVDaGFy
YWN0ZXJTdHJpbmcoSlNHbG9iYWxEYXRhKiwgdW5zaWduZWQgY2hhcik7CiAKICAgICAgICAgSlNT
dHJpbmcqIG1fZW1wdHlTdHJpbmc7CiAgICAgICAgIEpTU3RyaW5nKiBtX3NpbmdsZUNoYXJhY3Rl
clN0cmluZ3NbMHgxMDBdOwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5h
bWVBcnJheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlO
YW1lQXJyYXkuaAkocmV2aXNpb24gNjEzMjcpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3BlcnR5TmFtZUFycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAKICAgICAg
ICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKCkgeyByZXR1cm4gbV9nbG9iYWxEYXRhOyB9CiAK
ICAgICAgICAgdm9pZCBhZGQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikgeyBhZGQoaWRl
bnRpZmllci51c3RyaW5nKCkucmVwKCkpOyB9Ci0gICAgICAgIHZvaWQgYWRkKFVTdHJpbmc6OlJl
cCopOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBhZGQoVVN0cmluZzo6UmVwKik7
CiAgICAgICAgIHZvaWQgYWRkS25vd25VbmlxdWUoVVN0cmluZzo6UmVwKiBpZGVudGlmaWVyKSB7
IG1fZGF0YS0+cHJvcGVydHlOYW1lVmVjdG9yKCkuYXBwZW5kKElkZW50aWZpZXIobV9nbG9iYWxE
YXRhLCBpZGVudGlmaWVyKSk7IH0KIAogICAgICAgICBJZGVudGlmaWVyJiBvcGVyYXRvcltdKHVu
c2lnbmVkIGkpIHsgcmV0dXJuIG1fZGF0YS0+cHJvcGVydHlOYW1lVmVjdG9yKClbaV07IH0KSW5k
ZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Vycm9yLmgJKHJldmlzaW9uIDYxMzI3KQorKysgSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FcnJvci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSwxMiArNDUsMTIgQEAKICAg
ICBKU09iamVjdCogY3JlYXRlVHlwZUVycm9yKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgVVN0cmlu
ZyYpOwogICAgIEpTT2JqZWN0KiBjcmVhdGVVUklFcnJvcihKU0dsb2JhbE9iamVjdCosIGNvbnN0
IFVTdHJpbmcmKTsKICAgICAvLyBFeGVjU3RhdGUgd3JhcHBlcnMuCi0gICAgSlNPYmplY3QqIGNy
ZWF0ZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmKTsKKyAgICBKU19FWFBPUlRFRF9T
WU1CT0wgSlNPYmplY3QqIGNyZWF0ZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmKTsK
ICAgICBKU09iamVjdCogY3JlYXRlRXZhbEVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcm
KTsKICAgICBKU09iamVjdCogY3JlYXRlUmFuZ2VFcnJvcihFeGVjU3RhdGUqLCBjb25zdCBVU3Ry
aW5nJik7Ci0gICAgSlNPYmplY3QqIGNyZWF0ZVJlZmVyZW5jZUVycm9yKEV4ZWNTdGF0ZSosIGNv
bnN0IFVTdHJpbmcmKTsKLSAgICBKU09iamVjdCogY3JlYXRlU3ludGF4RXJyb3IoRXhlY1N0YXRl
KiwgY29uc3QgVVN0cmluZyYpOwotICAgIEpTT2JqZWN0KiBjcmVhdGVUeXBlRXJyb3IoRXhlY1N0
YXRlKiwgY29uc3QgVVN0cmluZyYpOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBKU09iamVjdCog
Y3JlYXRlUmVmZXJlbmNlRXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYpOworICAgIEpT
X0VYUE9SVEVEX1NZTUJPTCBKU09iamVjdCogY3JlYXRlU3ludGF4RXJyb3IoRXhlY1N0YXRlKiwg
Y29uc3QgVVN0cmluZyYpOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBKU09iamVjdCogY3JlYXRl
VHlwZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmKTsKICAgICBKU09iamVjdCogY3Jl
YXRlVVJJRXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYpOwogCiAgICAgLy8gTWV0aG9k
cyB0byBhZGQgCkBAIC02MiwxMiArNjIsMTIgQEAKICAgICBKU09iamVjdCogYWRkRXJyb3JJbmZv
KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiBlcnJvciwgaW50IGxpbmUsIGNvbnN0IFNvdXJjZUNvZGUm
LCBpbnQgZGl2b3RQb2ludCwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0LCBib29sIHdp
dGhDYXJldCA9IHRydWUpOwogCiAgICAgLy8gTWV0aG9kcyB0byB0aHJvdyBFcnJvcnMuCi0gICAg
SlNWYWx1ZSB0aHJvd0Vycm9yKEV4ZWNTdGF0ZSosIEpTVmFsdWUpOwotICAgIEpTT2JqZWN0KiB0
aHJvd0Vycm9yKEV4ZWNTdGF0ZSosIEpTT2JqZWN0Kik7CisgICAgSlNfRVhQT1JURURfU1lNQk9M
IEpTVmFsdWUgdGhyb3dFcnJvcihFeGVjU3RhdGUqLCBKU1ZhbHVlKTsKKyAgICBKU19FWFBPUlRF
RF9TWU1CT0wgSlNPYmplY3QqIHRocm93RXJyb3IoRXhlY1N0YXRlKiwgSlNPYmplY3QqKTsKIAog
ICAgIC8vIENvbnZlbmllbmNlIHdyYXBwZXJzLCBjcmVhdGUgYW4gdGhyb3cgYW4gZXhjZXB0aW9u
IHdpdGggYSBkZWZhdWx0IG1lc3NhZ2UuCi0gICAgSlNPYmplY3QqIHRocm93VHlwZUVycm9yKEV4
ZWNTdGF0ZSopOwotICAgIEpTT2JqZWN0KiB0aHJvd1N5bnRheEVycm9yKEV4ZWNTdGF0ZSopOwor
ICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBKU09iamVjdCogdGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRl
Kik7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIEpTT2JqZWN0KiB0aHJvd1N5bnRheEVycm9yKEV4
ZWNTdGF0ZSopOwogCiAgICAgLy8gQ29udmVuaWVuY2Ugd3JhcHBlcnMsIHdyYXAgcmVzdWx0IGFz
IGFuIEVuY29kZWRKU1ZhbHVlLgogICAgIGlubGluZSBFbmNvZGVkSlNWYWx1ZSB0aHJvd1ZNRXJy
b3IoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGVycm9yKSB7IHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhyb3dFcnJvcihleGVjLCBlcnJvcikpOyB9CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1VTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJp
bmcuaAkocmV2aXNpb24gNjEzMjcpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcu
aAkod29ya2luZyBjb3B5KQpAQCAtNDgsMTkgKzQ4LDE5IEBACiAgICAgICAgIHR5cGVkZWYgVVN0
cmluZ0ltcGwgUmVwOwogICAgIAogICAgIHB1YmxpYzoKLSAgICAgICAgVVN0cmluZygpIHt9Ci0g
ICAgICAgIFVTdHJpbmcoY29uc3QgY2hhciopOyAvLyBDb25zdHJ1Y3RvciBmb3IgbnVsbC10ZXJt
aW5hdGVkIHN0cmluZy4KLSAgICAgICAgVVN0cmluZyhjb25zdCBjaGFyKiwgdW5zaWduZWQgbGVu
Z3RoKTsKLSAgICAgICAgVVN0cmluZyhjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7Ci0g
ICAgICAgIFVTdHJpbmcoY29uc3QgVmVjdG9yPFVDaGFyPiYgYnVmZmVyKTsKKyAgICAgICAgSlNf
RVhQT1JURURfU1lNQk9MIFVTdHJpbmcoKSB7fQorICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wg
VVN0cmluZyhjb25zdCBjaGFyKik7IC8vIENvbnN0cnVjdG9yIGZvciBudWxsLXRlcm1pbmF0ZWQg
c3RyaW5nLgorICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgVVN0cmluZyhjb25zdCBjaGFyKiwg
dW5zaWduZWQgbGVuZ3RoKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIFVTdHJpbmcoY29u
c3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wg
VVN0cmluZyhjb25zdCBWZWN0b3I8VUNoYXI+JiBidWZmZXIpOwogCi0gICAgICAgIFVTdHJpbmco
Y29uc3QgVVN0cmluZyYgcykKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIFVTdHJpbmcoY29u
c3QgVVN0cmluZyYgcykKICAgICAgICAgICAgIDogbV9yZXAocy5tX3JlcCkKICAgICAgICAgewog
ICAgICAgICB9CiAKICAgICAgICAgLy8gU3BlY2lhbCBjb25zdHJ1Y3RvciBmb3IgY2FzZXMgd2hl
cmUgd2Ugb3ZlcndyaXRlIGFuIG9iamVjdCBpbiBwbGFjZS4KLSAgICAgICAgVVN0cmluZyhQbGFj
ZW1lbnROZXdBZG9wdFR5cGUpCisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBVU3RyaW5nKFBs
YWNlbWVudE5ld0Fkb3B0VHlwZSkKICAgICAgICAgICAgIDogbV9yZXAoUGxhY2VtZW50TmV3QWRv
cHQpCiAgICAgICAgIHsKICAgICAgICAgfQpAQCAtNzEsMTUgKzcxLDE1IEBACiAgICAgICAgICAg
ICByZXR1cm4gUmVwOjphZG9wdCh2ZWN0b3IpOwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGlj
IFVTdHJpbmcgZnJvbShpbnQpOwotICAgICAgICBzdGF0aWMgVVN0cmluZyBmcm9tKGxvbmcgbG9u
Zyk7Ci0gICAgICAgIHN0YXRpYyBVU3RyaW5nIGZyb20odW5zaWduZWQpOwotICAgICAgICBzdGF0
aWMgVVN0cmluZyBmcm9tKGxvbmcpOwotICAgICAgICBzdGF0aWMgVVN0cmluZyBmcm9tKGRvdWJs
ZSk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0aWMgVVN0cmluZyBmcm9tKGludCk7
CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0aWMgVVN0cmluZyBmcm9tKGxvbmcgbG9u
Zyk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0aWMgVVN0cmluZyBmcm9tKHVuc2ln
bmVkKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHN0YXRpYyBVU3RyaW5nIGZyb20obG9u
Zyk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0aWMgVVN0cmluZyBmcm9tKGRvdWJs
ZSk7CiAKICAgICAgICAgLy8gTk9URTogVGhpcyBtZXRob2Qgc2hvdWxkIG9ubHkgYmUgdXNlZCBm
b3IgKmRlYnVnZ2luZyogcHVycG9zZXMgYXMgaXQKICAgICAgICAgLy8gaXMgbmVpdGhlciBVbmlj
b2RlIHNhZmUgbm9yIGZyZWUgZnJvbSBzaWRlIGVmZmVjdHMgbm9yIHRocmVhZC1zYWZlLgotICAg
ICAgICBjaGFyKiBhc2NpaSgpIGNvbnN0OworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgY2hh
ciogYXNjaWkoKSBjb25zdDsKIAogICAgICAgICAvKioKICAgICAgICAgICogQ29udmVydCB0aGUg
c3RyaW5nIHRvIFVURi04LCBhc3N1bWluZyBpdCBpcyBVVEYtMTYgZW5jb2RlZC4KQEAgLTg5LDcg
Kzg5LDcgQEAKICAgICAgICAgICogZ3VhcmFudGVlZCB0byBiZSBvdGhlcndpc2UgdmFsaWQuCiAg
ICAgICAgICAqIEluIHN0cmljdCBtb2RlLCBlcnJvciBpcyByZXR1cm5lZCBhcyBudWxsIENTdHJp
bmcuCiAgICAgICAgICAqLwotICAgICAgICBDU3RyaW5nIFVURjhTdHJpbmcoYm9vbCBzdHJpY3Qg
PSBmYWxzZSkgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBDU3RyaW5nIFVURjhT
dHJpbmcoYm9vbCBzdHJpY3QgPSBmYWxzZSkgY29uc3Q7CiAKICAgICAgICAgY29uc3QgVUNoYXIq
IGRhdGEoKSBjb25zdAogICAgICAgICB7CkBAIC0xMDUsNyArMTA1LDcgQEAKICAgICAgICAgICAg
IHJldHVybiBtX3JlcC0+bGVuZ3RoKCk7CiAgICAgICAgIH0KIAotICAgICAgICBib29sIGlzTnVs
bCgpIGNvbnN0IHsgcmV0dXJuICFtX3JlcDsgfQorICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wg
Ym9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhbV9yZXA7IH0KICAgICAgICAgYm9vbCBpc0Vt
cHR5KCkgY29uc3QgeyByZXR1cm4gIW1fcmVwIHx8ICFtX3JlcC0+bGVuZ3RoKCk7IH0KIAogICAg
ICAgICBib29sIGlzOEJpdCgpIGNvbnN0OwpAQCAtMTE2LDggKzExNiw4IEBACiAgICAgICAgIGRv
dWJsZSB0b0RvdWJsZShib29sIHRvbGVyYXRlVHJhaWxpbmdKdW5rKSBjb25zdDsKICAgICAgICAg
ZG91YmxlIHRvRG91YmxlKCkgY29uc3Q7CiAKLSAgICAgICAgdWludDMyX3QgdG9VSW50MzIoYm9v
bCogb2sgPSAwKSBjb25zdDsKLSAgICAgICAgdWludDMyX3QgdG9VSW50MzIoYm9vbCogb2ssIGJv
b2wgdG9sZXJhdGVFbXB0eVN0cmluZykgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJP
TCB1aW50MzJfdCB0b1VJbnQzMihib29sKiBvayA9IDApIGNvbnN0OworICAgICAgICBKU19FWFBP
UlRFRF9TWU1CT0wgdWludDMyX3QgdG9VSW50MzIoYm9vbCogb2ssIGJvb2wgdG9sZXJhdGVFbXB0
eVN0cmluZykgY29uc3Q7CiAgICAgICAgIHVpbnQzMl90IHRvU3RyaWN0VUludDMyKGJvb2wqIG9r
ID0gMCkgY29uc3Q7CiAKICAgICAgICAgdW5zaWduZWQgdG9BcnJheUluZGV4KGJvb2wqIG9rID0g
MCkgY29uc3Q7CkBAIC0xMjgsNyArMTI4LDcgQEAKICAgICAgICAgdW5zaWduZWQgcmZpbmQoY29u
c3QgVVN0cmluZyYgZiwgdW5zaWduZWQgcG9zKSBjb25zdDsKICAgICAgICAgdW5zaWduZWQgcmZp
bmQoVUNoYXIsIHVuc2lnbmVkIHBvcykgY29uc3Q7CiAKLSAgICAgICAgVVN0cmluZyBzdWJzdHIo
dW5zaWduZWQgcG9zID0gMCwgdW5zaWduZWQgbGVuID0gMHhGRkZGRkZGRikgY29uc3Q7CisgICAg
ICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBVU3RyaW5nIHN1YnN0cih1bnNpZ25lZCBwb3MgPSAwLCB1
bnNpZ25lZCBsZW4gPSAweEZGRkZGRkZGKSBjb25zdDsKIAogICAgICAgICBzdGF0aWMgY29uc3Qg
VVN0cmluZyYgbnVsbCgpIHsgcmV0dXJuICpzX251bGxVU3RyaW5nOyB9CiAKQEAgLTE0Niw3ICsx
NDYsMTIgQEAKICAgICAgICAgICAgIHJldHVybiBtX3JlcC0+Y29zdCgpOwogICAgICAgICB9CiAK
LSAgICAgICAgQUxXQVlTX0lOTElORSB+VVN0cmluZygpIHsgfQorICAgICAgICBKU19FWFBPUlRF
RF9TWU1CT0wgQUxXQVlTX0lOTElORSB+VVN0cmluZygpIHsgfQorICAgICAgICBKU19FWFBPUlRF
RF9TWU1CT0wgVVN0cmluZyYgb3BlcmF0b3I9KGNvbnN0IFVTdHJpbmcmIHMpCisgICAgICAgIHsK
KyAgICAgICAgICAgIG1fcmVwID0gcy5tX3JlcDsKKyAgICAgICAgICAgIHJldHVybiAqdGhpczsK
KyAgICAgICAgfQogICAgIHByaXZhdGU6CiAgICAgICAgIFJlZlB0cjxSZXA+IG1fcmVwOwogCklu
ZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5jZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmgJKHJldmlzaW9uIDYxMzI3KQor
KysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2UuaAkod29ya2luZyBjb3B5KQpA
QCAtMzEsMTMgKzMxLDEzIEBACiAKICAgICBjbGFzcyBEYXRlSW5zdGFuY2UgOiBwdWJsaWMgSlNX
cmFwcGVyT2JqZWN0IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIERhdGVJbnN0YW5jZShFeGVjU3Rh
dGUqLCBkb3VibGUpOwotICAgICAgICBEYXRlSW5zdGFuY2UoRXhlY1N0YXRlKiwgTm9uTnVsbFBh
c3NSZWZQdHI8U3RydWN0dXJlPiwgZG91YmxlKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9M
IERhdGVJbnN0YW5jZShFeGVjU3RhdGUqLCBkb3VibGUpOworICAgICAgICBKU19FWFBPUlRFRF9T
WU1CT0wgRGF0ZUluc3RhbmNlKEV4ZWNTdGF0ZSosIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVy
ZT4sIGRvdWJsZSk7CiAgICAgICAgIGV4cGxpY2l0IERhdGVJbnN0YW5jZShFeGVjU3RhdGUqLCBO
b25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+KTsKIAogICAgICAgICBkb3VibGUgaW50ZXJuYWxO
dW1iZXIoKSBjb25zdCB7IHJldHVybiBpbnRlcm5hbFZhbHVlKCkudW5jaGVja2VkR2V0TnVtYmVy
KCk7IH0KIAotICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSBjb25zdCBDbGFzc0luZm8gaW5m
bzsKKyAgICAgICAgc3RhdGljIEpTX0VYUE9SVEVEX1NZTUJPTCBjb25zdCBDbGFzc0luZm8gaW5m
bzsKIAogICAgICAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29yaWFuRGF0ZVRpbWUo
RXhlY1N0YXRlKiBleGVjKSBjb25zdAogICAgICAgICB7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxEYXRhLmgJKHJldmlzaW9uIDYxMzI3KQorKysgSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbERhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDcgKzEwMiw3IEBACiAg
ICAgICAgIC8vIHRoZSBvcmlnaW5hbCBBUEkuCiAgICAgICAgIGVudW0gR2xvYmFsRGF0YVR5cGUg
eyBEZWZhdWx0LCBBUElDb250ZXh0R3JvdXAsIEFQSVNoYXJlZCB9OwogCi0gICAgICAgIHN0cnVj
dCBDbGllbnREYXRhIHsKKyAgICAgICAgc3RydWN0IEpTX0VYUE9SVEVEX1NZTUJPTCBDbGllbnRE
YXRhIHsKICAgICAgICAgICAgIHZpcnR1YWwgfkNsaWVudERhdGEoKSA9IDA7CiAgICAgICAgIH07
CiAKQEAgLTExMCwxMCArMTEwLDEwIEBACiAgICAgICAgIHN0YXRpYyBib29sIHNoYXJlZEluc3Rh
bmNlRXhpc3RzKCk7CiAgICAgICAgIHN0YXRpYyBKU0dsb2JhbERhdGEmIHNoYXJlZEluc3RhbmNl
KCk7CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SlNHbG9iYWxEYXRhPiBjcmVhdGUoVGhy
ZWFkU3RhY2tUeXBlKTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SlNHbG9iYWxEYXRhPiBj
cmVhdGVMZWFrZWQoVGhyZWFkU3RhY2tUeXBlKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9M
IHN0YXRpYyBQYXNzUmVmUHRyPEpTR2xvYmFsRGF0YT4gY3JlYXRlKFRocmVhZFN0YWNrVHlwZSk7
CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0aWMgUGFzc1JlZlB0cjxKU0dsb2JhbERh
dGE+IGNyZWF0ZUxlYWtlZChUaHJlYWRTdGFja1R5cGUpOwogICAgICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxKU0dsb2JhbERhdGE+IGNyZWF0ZUNvbnRleHRHcm91cChUaHJlYWRTdGFja1R5cGUpOwot
ICAgICAgICB+SlNHbG9iYWxEYXRhKCk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB+SlNH
bG9iYWxEYXRhKCk7CiAKICNpZiBFTkFCTEUoSlNDX01VTFRJUExFX1RIUkVBRFMpCiAgICAgICAg
IC8vIFdpbGwgc3RhcnQgdHJhY2tpbmcgdGhyZWFkcyB0aGF0IHVzZSB0aGUgaGVhcCwgd2hpY2gg
aXMgcmVzb3VyY2UtaGVhdnkuCkBAIC0xNDksMTAgKzE0OSwxMCBAQAogI2VuZGlmCiAKICAgICAg
ICAgc3RhdGljIHZvaWQgc3RvcmVWUHRycygpOwotICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFU
QSB2b2lkKiBqc0FycmF5VlB0cjsKLSAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgdm9pZCog
anNCeXRlQXJyYXlWUHRyOwotICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSB2b2lkKiBqc1N0
cmluZ1ZQdHI7Ci0gICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIHZvaWQqIGpzRnVuY3Rpb25W
UHRyOworICAgICAgICBzdGF0aWMgSlNfRVhQT1JURURfU1lNQk9MIHZvaWQqIGpzQXJyYXlWUHRy
OworICAgICAgICBzdGF0aWMgSlNfRVhQT1JURURfU1lNQk9MIHZvaWQqIGpzQnl0ZUFycmF5VlB0
cjsKKyAgICAgICAgc3RhdGljIEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkKiBqc1N0cmluZ1ZQdHI7
CisgICAgICAgIHN0YXRpYyBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCoganNGdW5jdGlvblZQdHI7
CiAKICAgICAgICAgSWRlbnRpZmllclRhYmxlKiBpZGVudGlmaWVyVGFibGU7CiAgICAgICAgIENv
bW1vbklkZW50aWZpZXJzKiBwcm9wZXJ0eU5hbWVzOwpAQCAtMjE3LDExICsyMTcsMTEgQEAKIAog
ICAgICAgICBDYWNoZWRUcmFuc2NlbmRlbnRhbEZ1bmN0aW9uPHNpbj4gY2FjaGVkU2luOwogCi0g
ICAgICAgIHZvaWQgcmVzZXREYXRlQ2FjaGUoKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9M
IHZvaWQgcmVzZXREYXRlQ2FjaGUoKTsKIAotICAgICAgICB2b2lkIHN0YXJ0U2FtcGxpbmcoKTsK
LSAgICAgICAgdm9pZCBzdG9wU2FtcGxpbmcoKTsKLSAgICAgICAgdm9pZCBkdW1wU2FtcGxlRGF0
YShFeGVjU3RhdGUqIGV4ZWMpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBzdGFy
dFNhbXBsaW5nKCk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIHN0b3BTYW1wbGlu
ZygpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBkdW1wU2FtcGxlRGF0YShFeGVj
U3RhdGUqIGV4ZWMpOwogICAgIHByaXZhdGU6CiAgICAgICAgIEpTR2xvYmFsRGF0YShHbG9iYWxE
YXRhVHlwZSwgVGhyZWFkU3RhY2tUeXBlKTsKICAgICAgICAgc3RhdGljIEpTR2xvYmFsRGF0YSom
IHNoYXJlZEluc3RhbmNlSW50ZXJuYWwoKTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Um9wZUltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JvcGVJbXBs
LmgJKHJldmlzaW9uIDYxMzI3KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9Sb3BlSW1wbC5o
CSh3b3JraW5nIGNvcHkpCkBAIC04Myw3ICs4Myw3IEBACiAgICAgewogICAgIH0KIAotICAgIHZv
aWQgZGVzdHJ1Y3ROb25SZWN1cnNpdmUoKTsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBk
ZXN0cnVjdE5vblJlY3Vyc2l2ZSgpOwogICAgIHZvaWQgZGVyZWZGaWJlcnNOb25SZWN1cnNpdmUo
VmVjdG9yPFJvcGVJbXBsKiwgMzI+JiB3b3JrUXVldWUpOwogCiAgICAgYm9vbCBoYXNPbmVSZWYo
KSB7IHJldHVybiAobV9yZWZDb3VudEFuZEZsYWdzICYgc19yZWZDb3VudE1hc2spID09IHNfcmVm
Q291bnRJbmNyZW1lbnQ7IH0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGltZW91dENo
ZWNrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RpbWVvdXRDaGVj
a2VyLmgJKHJldmlzaW9uIDYxMzI3KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9UaW1lb3V0
Q2hlY2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw5ICs1Niw5IEBACiAgICAgICAgICAgICAt
LW1fc3RhcnRDb3VudDsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgcmVzZXQoKTsKKyAgICAg
ICAgSlNfRVhQT1JURURfU1lNQk9MIHZvaWQgcmVzZXQoKTsKIAotICAgICAgICBib29sIGRpZFRp
bWVPdXQoRXhlY1N0YXRlKik7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBib29sIGRpZFRp
bWVPdXQoRXhlY1N0YXRlKik7CiAKICAgICBwcml2YXRlOgogICAgICAgICB1bnNpZ25lZCBtX3Rp
bWVvdXRJbnRlcnZhbDsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29sbGVjdG9yLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbGxlY3Rvci5jcHAJKHJl
dmlzaW9uIDYxMzI3KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2xsZWN0b3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00NTAsNyArNDUwLDcgQEAKIH0KIAogI2lmIE9TKFdJTkNFKQotSlNf
RVhQT1JUREFUQSB2b2lkKiBnX3N0YWNrQmFzZSA9IDA7CitKU19FWFBPUlRFRF9TWU1CT0wgdm9p
ZCogZ19zdGFja0Jhc2UgPSAwOwogCiBpbmxpbmUgYm9vbCBpc1BhZ2VXcml0YWJsZSh2b2lkKiBw
YWdlKQogewpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkocmV2
aXNpb24gNjEzMjcpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTY3LDcgKzY3LDcgQEAKICAgICAgICAgICAgIC8vIEpTVmFyaWFi
bGVPYmplY3REYXRhKiB0byBKU0dsb2JhbE9iamVjdERhdGEqLgogICAgICAgICAgICAgdHlwZWRl
ZiB2b2lkICgqRGVzdHJ1Y3Rvcikodm9pZCopOwogCi0gICAgICAgICAgICBKU0dsb2JhbE9iamVj
dERhdGEoRGVzdHJ1Y3RvciBkZXN0cnVjdG9yKQorICAgICAgICAgICAgSlNfRVhQT1JURURfU1lN
Qk9MIEpTR2xvYmFsT2JqZWN0RGF0YShEZXN0cnVjdG9yIGRlc3RydWN0b3IpCiAgICAgICAgICAg
ICAgICAgOiBKU1ZhcmlhYmxlT2JqZWN0RGF0YSgmc3ltYm9sVGFibGUsIDApCiAgICAgICAgICAg
ICAgICAgLCBkZXN0cnVjdG9yKGRlc3RydWN0b3IpCiAgICAgICAgICAgICAgICAgLCByZWdpc3Rl
ckFycmF5U2l6ZSgwKQpAQCAtMTU5LDcgKzE1OSw3IEBACiAgICAgICAgIH07CiAKICAgICBwdWJs
aWM6Ci0gICAgICAgIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIEpTR2xvYmFsRGF0YSopOwor
ICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgSlNH
bG9iYWxEYXRhKik7CiAgICAgICAgIAogICAgICAgICBleHBsaWNpdCBKU0dsb2JhbE9iamVjdCgp
CiAgICAgICAgICAgICA6IEpTVmFyaWFibGVPYmplY3QoSlNHbG9iYWxPYmplY3Q6OmNyZWF0ZVN0
cnVjdHVyZShqc051bGwoKSksIG5ldyBKU0dsb2JhbE9iamVjdERhdGEoZGVzdHJveUpTR2xvYmFs
T2JqZWN0RGF0YSkpCkBAIC0xODcsMTggKzE4NywxOCBAQAogICAgICAgICB9CiAKICAgICBwdWJs
aWM6Ci0gICAgICAgIHZpcnR1YWwgfkpTR2xvYmFsT2JqZWN0KCk7CisgICAgICAgIEpTX0VYUE9S
VEVEX1NZTUJPTCB2aXJ0dWFsIH5KU0dsb2JhbE9iamVjdCgpOwogCi0gICAgICAgIHZpcnR1YWwg
dm9pZCBtYXJrQ2hpbGRyZW4oTWFya1N0YWNrJik7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJP
TCB2aXJ0dWFsIHZvaWQgbWFya0NoaWxkcmVuKE1hcmtTdGFjayYpOwogCiAgICAgICAgIHZpcnR1
YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYs
IFByb3BlcnR5U2xvdCYpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3Im
KTsKICAgICAgICAgdmlydHVhbCBib29sIGhhc093blByb3BlcnR5Rm9yV3JpdGUoRXhlY1N0YXRl
KiwgY29uc3QgSWRlbnRpZmllciYpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcHV0KEV4ZWNTdGF0
ZSosIGNvbnN0IElkZW50aWZpZXImLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICAg
ICAgdmlydHVhbCB2b2lkIHB1dFdpdGhBdHRyaWJ1dGVzKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7
CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIHZvaWQgcHV0KEV4ZWNTdGF0ZSos
IGNvbnN0IElkZW50aWZpZXImLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAg
SlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgdm9pZCBwdXRXaXRoQXR0cmlidXRlcyhFeGVjU3Rh
dGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2ln
bmVkIGF0dHJpYnV0ZXMpOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBkZWZpbmVHZXR0ZXIoRXhl
Y1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU09iamVjdCogZ2V0dGVy
RnVuYywgdW5zaWduZWQgYXR0cmlidXRlcyk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkZWZpbmVT
ZXR0ZXIoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU09iamVj
dCogc2V0dGVyRnVuYywgdW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAgICAgIEpTX0VYUE9SVEVE
X1NZTUJPTCB2aXJ0dWFsIHZvaWQgZGVmaW5lR2V0dGVyKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgSlNPYmplY3QqIGdldHRlckZ1bmMsIHVuc2lnbmVkIGF0dHJp
YnV0ZXMpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCB2b2lkIGRlZmluZVNl
dHRlcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0
KiBzZXR0ZXJGdW5jLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKIAogICAgICAgICAvLyBMaW5rZWQg
bGlzdCBvZiBhbGwgZ2xvYmFsIG9iamVjdHMgdGhhdCB1c2UgdGhlIHNhbWUgSlNHbG9iYWxEYXRh
LgogICAgICAgICBKU0dsb2JhbE9iamVjdComIGhlYWQoKSB7IHJldHVybiBkKCktPmdsb2JhbERh
dGEtPmhlYWQ7IH0KQEAgLTI2MiwxMyArMjYyLDEzIEBACiAKICAgICAgICAgdmlydHVhbCBib29s
IGlzR2xvYmFsT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgICAgIHZpcnR1
YWwgRXhlY1N0YXRlKiBnbG9iYWxFeGVjKCk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2
aXJ0dWFsIEV4ZWNTdGF0ZSogZ2xvYmFsRXhlYygpOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBz
aG91bGRJbnRlcnJ1cHRTY3JpcHQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKICAgICAgICAg
dmlydHVhbCBib29sIGFsbG93c0FjY2Vzc0Zyb20oY29uc3QgSlNHbG9iYWxPYmplY3QqKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICAgICAgdmlydHVhbCBib29sIGlzRHluYW1pY1Njb3Bl
KGJvb2wmIHJlcXVpcmVzRHluYW1pY0NoZWNrcykgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVEVE
X1NZTUJPTCB2aXJ0dWFsIGJvb2wgaXNEeW5hbWljU2NvcGUoYm9vbCYgcmVxdWlyZXNEeW5hbWlj
Q2hlY2tzKSBjb25zdDsKIAogICAgICAgICBIYXNoU2V0PEdsb2JhbENvZGVCbG9jayo+JiBjb2Rl
QmxvY2tzKCkgeyByZXR1cm4gZCgpLT5jb2RlQmxvY2tzOyB9CiAKQEAgLTMxNSwxMCArMzE1LDEw
IEBACiAgICAgICAgIHZvaWQgYWRkU3RhdGljR2xvYmFscyhHbG9iYWxQcm9wZXJ0eUluZm8qLCBp
bnQgY291bnQpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveUpT
R2xvYmFsT2JqZWN0RGF0YSh2b2lkKik7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0
aWMgdm9pZCBkZXN0cm95SlNHbG9iYWxPYmplY3REYXRhKHZvaWQqKTsKIAogICAgICAgICAvLyBG
SVhNRTogRm9sZCByZXNldCBpbnRvIGluaXQuCi0gICAgICAgIHZvaWQgaW5pdChKU09iamVjdCog
dGhpc1ZhbHVlKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZvaWQgaW5pdChKU09iamVj
dCogdGhpc1ZhbHVlKTsKICAgICAgICAgdm9pZCByZXNldChKU1ZhbHVlIHByb3RvdHlwZSk7CiAK
ICAgICAgICAgdm9pZCBzZXRSZWdpc3RlcnMoUmVnaXN0ZXIqIHJlZ2lzdGVycywgUmVnaXN0ZXIq
IHJlZ2lzdGVyQXJyYXksIHNpemVfdCBjb3VudCk7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbGxlY3RvckhlYXBJdGVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29sbGVjdG9ySGVhcEl0ZXJhdG9yLmgJKHJldmlzaW9uIDYxMzI3KQorKysgSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db2xsZWN0b3JIZWFwSXRlcmF0b3IuaAkod29ya2luZyBjb3B5
KQpAQCAtMjMsNyArMjMsNiBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIkNvbGxlY3Rvci5oIgogCiAjaWZuZGVmIENvbGxlY3RvckhlYXBJ
dGVyYXRvcl9oCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0V2l0aEdsb2Jh
bE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RX
aXRoR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDYxMzI3KQorKysgSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdFdpdGhHbG9iYWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzksMTAg
KzM5LDEwIEBACiAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShwcm90bywgVHlwZUlu
Zm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQpOwogICAg
IH0KIAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoKSBjb25zdDsKKyAgICBKU19F
WFBPUlRFRF9TWU1CT0wgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCgpIGNvbnN0OwogCiBw
cm90ZWN0ZWQ6Ci0gICAgSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0KEpTR2xvYmFsT2JqZWN0Kiwg
Tm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPik7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIEpT
T2JqZWN0V2l0aEdsb2JhbE9iamVjdChKU0dsb2JhbE9iamVjdCosIE5vbk51bGxQYXNzUmVmUHRy
PFN0cnVjdHVyZT4pOwogCiAgICAgSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0KE5vbk51bGxQYXNz
UmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlKQogICAgICAgICA6IEpTT2JqZWN0KHN0cnVjdHVy
ZSkKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCShyZXZpc2lvbiA2MTMyNykKKysrIEph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw5ICs1
NSw5IEBACiAgICAgdHlwZWRlZiB2b2lkKiBFbmNvZGVkSlNWYWx1ZTsKICNlbmRpZgogCi0gICAg
ZG91YmxlIG5vbklubGluZU5hTigpOwotICAgIGludDMyX3QgdG9JbnQzMlNsb3dDYXNlKGRvdWJs
ZSwgYm9vbCYgb2spOwotICAgIHVpbnQzMl90IHRvVUludDMyU2xvd0Nhc2UoZG91YmxlLCBib29s
JiBvayk7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIGRvdWJsZSBub25JbmxpbmVOYU4oKTsKKyAg
ICBKU19FWFBPUlRFRF9TWU1CT0wgaW50MzJfdCB0b0ludDMyU2xvd0Nhc2UoZG91YmxlLCBib29s
JiBvayk7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIHVpbnQzMl90IHRvVUludDMyU2xvd0Nhc2Uo
ZG91YmxlLCBib29sJiBvayk7CiAKICAgICBjbGFzcyBKU1ZhbHVlIHsKICAgICAgICAgZnJpZW5k
IGNsYXNzIEpTSW1tZWRpYXRlOwpAQCAtMTk5LDcgKzE5OSw3IEBACiAKICAgICAgICAgYm9vbCBp
c0NlbGwoKSBjb25zdDsKICAgICAgICAgSlNDZWxsKiBhc0NlbGwoKSBjb25zdDsKLSAgICAgICAg
Ym9vbCBpc1ZhbGlkQ2FsbGVlKCk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBib29sIGlz
VmFsaWRDYWxsZWUoKTsKIAogI2lmbmRlZiBOREVCVUcKICAgICAgICAgY2hhciogZGVzY3JpcHRp
b24oKTsKQEAgLTIxMCw4ICsyMTAsOCBAQAogICAgICAgICBKU1ZhbHVlKEhhc2hUYWJsZURlbGV0
ZWRWYWx1ZVRhZyk7CiAKICAgICAgICAgaW5saW5lIGNvbnN0IEpTVmFsdWUgYXNWYWx1ZSgpIGNv
bnN0IHsgcmV0dXJuICp0aGlzOyB9Ci0gICAgICAgIEpTT2JqZWN0KiB0b09iamVjdFNsb3dDYXNl
KEV4ZWNTdGF0ZSopIGNvbnN0OwotICAgICAgICBKU09iamVjdCogdG9UaGlzT2JqZWN0U2xvd0Nh
c2UoRXhlY1N0YXRlKikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBKU09iamVj
dCogdG9PYmplY3RTbG93Q2FzZShFeGVjU3RhdGUqKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JU
RURfU1lNQk9MIEpTT2JqZWN0KiB0b1RoaXNPYmplY3RTbG93Q2FzZShFeGVjU3RhdGUqKSBjb25z
dDsKIAogICAgICAgICBKU09iamVjdCogc3ludGhlc2l6ZVByb3RvdHlwZShFeGVjU3RhdGUqKSBj
b25zdDsKICAgICAgICAgSlNPYmplY3QqIHN5bnRoZXNpemVPYmplY3QoRXhlY1N0YXRlKikgY29u
c3Q7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmgJ
KHJldmlzaW9uIDYxMzI3KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eURlc2Ny
aXB0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsOCArNDYsOCBAQAogICAgICAgICBKU1ZhbHVl
IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQogICAgICAgICBKU1ZhbHVlIGdldHRl
cigpIGNvbnN0OwogICAgICAgICBKU1ZhbHVlIHNldHRlcigpIGNvbnN0OwotICAgICAgICB2b2lk
IHNldFVuZGVmaW5lZCgpOwotICAgICAgICB2b2lkIHNldERlc2NyaXB0b3IoSlNWYWx1ZSB2YWx1
ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lk
IHNldFVuZGVmaW5lZCgpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBzZXREZXNj
cmlwdG9yKEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgICAgICB2b2lk
IHNldEFjY2Vzc29yRGVzY3JpcHRvcihKU1ZhbHVlIGdldHRlciwgSlNWYWx1ZSBzZXR0ZXIsIHVu
c2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgICAgICB2b2lkIHNldFdyaXRhYmxlKGJvb2wpOwogICAg
ICAgICB2b2lkIHNldEVudW1lcmFibGUoYm9vbCk7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbGxlY3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29s
bGVjdG9yLmgJKHJldmlzaW9uIDYxMzI3KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2xs
ZWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNzQsMTMgKzc0LDEzIEBACiAgICAgcHVibGljOgog
ICAgICAgICBjbGFzcyBUaHJlYWQ7CiAKLSAgICAgICAgdm9pZCBkZXN0cm95KCk7CisgICAgICAg
IEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIGRlc3Ryb3koKTsKIAogICAgICAgICB2b2lkKiBhbGxv
Y2F0ZU51bWJlcihzaXplX3QpOwotICAgICAgICB2b2lkKiBhbGxvY2F0ZShzaXplX3QpOworICAg
ICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCogYWxsb2NhdGUoc2l6ZV90KTsKIAotICAgICAg
ICBib29sIGlzQnVzeSgpOyAvLyB0cnVlIGlmIGFuIGFsbG9jYXRpb24gb3IgY29sbGVjdGlvbiBp
cyBpbiBwcm9ncmVzcwotICAgICAgICB2b2lkIGNvbGxlY3RBbGxHYXJiYWdlKCk7CisgICAgICAg
IEpTX0VYUE9SVEVEX1NZTUJPTCBib29sIGlzQnVzeSgpOyAvLyB0cnVlIGlmIGFuIGFsbG9jYXRp
b24gb3IgY29sbGVjdGlvbiBpcyBpbiBwcm9ncmVzcworICAgICAgICBKU19FWFBPUlRFRF9TWU1C
T0wgdm9pZCBjb2xsZWN0QWxsR2FyYmFnZSgpOwogCiAgICAgICAgIHN0YXRpYyBjb25zdCBzaXpl
X3QgbWluRXh0cmFDb3N0ID0gMjU2OwogICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heEV4
dHJhQ29zdCA9IDEwMjQgKiAxMDI0OwpAQCAtOTMsMTIgKzkzLDEyIEBACiAgICAgICAgICAgICBz
aXplX3QgZnJlZTsKICAgICAgICAgfTsKICAgICAgICAgU3RhdGlzdGljcyBzdGF0aXN0aWNzKCkg
Y29uc3Q7Ci0gICAgICAgIHNpemVfdCBzaXplKCkgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVEVE
X1NZTUJPTCBzaXplX3Qgc2l6ZSgpIGNvbnN0OwogCi0gICAgICAgIHZvaWQgcHJvdGVjdChKU1Zh
bHVlKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZvaWQgcHJvdGVjdChKU1ZhbHVlKTsK
ICAgICAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSB2YWx1ZSBpcyBubyBsb25nZXIgcHJvdGVj
dGVkIGJ5IGFueSBwcm90ZWN0IHBvaW50ZXJzCiAgICAgICAgIC8vICh0aG91Z2ggaXQgbWF5IHN0
aWxsIGJlIGFsaXZlIGR1ZSB0byBoZWFwL3N0YWNrIHJlZmVyZW5jZXMpLgotICAgICAgICBib29s
IHVucHJvdGVjdChKU1ZhbHVlKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIGJvb2wgdW5w
cm90ZWN0KEpTVmFsdWUpOwogCiAgICAgICAgIHN0YXRpYyBIZWFwKiBoZWFwKEpTVmFsdWUpOyAv
LyAwIGZvciBpbW1lZGlhdGUgdmFsdWVzCiAgICAgICAgIHN0YXRpYyBIZWFwKiBoZWFwKEpTQ2Vs
bCopOwpAQCAtMTQ1LDcgKzE0NSw3IEBACiAgICAgICAgIHZvaWQgY2xlYXJNYXJrQml0cyhDb2xs
ZWN0b3JCbG9jayopOwogICAgICAgICBzaXplX3QgbWFya2VkQ2VsbHMoc2l6ZV90IHN0YXJ0Qmxv
Y2sgPSAwLCBzaXplX3Qgc3RhcnRDZWxsID0gMCkgY29uc3Q7CiAKLSAgICAgICAgdm9pZCByZWNv
cmRFeHRyYUNvc3Qoc2l6ZV90KTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZvaWQgcmVj
b3JkRXh0cmFDb3N0KHNpemVfdCk7CiAKICAgICAgICAgdm9pZCBhZGRUb1N0YXRpc3RpY3MoU3Rh
dGlzdGljcyYpIGNvbnN0OwogCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBl
ck9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXcmFwcGVy
T2JqZWN0LmgJKHJldmlzaW9uIDYxMzI3KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dy
YXBwZXJPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQAogICAgICAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgQW5vbnltb3VzU2xvdENvdW50ID0gMSArIEpTT2JqZWN0OjpB
bm9ueW1vdXNTbG90Q291bnQ7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIHZvaWQg
bWFya0NoaWxkcmVuKE1hcmtTdGFjayYpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmly
dHVhbCB2b2lkIG1hcmtDaGlsZHJlbihNYXJrU3RhY2smKTsKICAgICAgICAgCiAgICAgICAgIEpT
VmFsdWUgbV9pbnRlcm5hbFZhbHVlOwogICAgIH07CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NhbGxEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWxs
RGF0YS5oCShyZXZpc2lvbiA2MTMyNykKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FsbERh
dGEuaAkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBAQAogICAgICAgICB9IGpzOwogICAg
IH07CiAKLSAgICBKU1ZhbHVlIGNhbGwoRXhlY1N0YXRlKiwgSlNWYWx1ZSBmdW5jdGlvbk9iamVj
dCwgQ2FsbFR5cGUsIGNvbnN0IENhbGxEYXRhJiwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEFy
Z0xpc3QmKTsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgSlNWYWx1ZSBjYWxsKEV4ZWNTdGF0ZSos
IEpTVmFsdWUgZnVuY3Rpb25PYmplY3QsIENhbGxUeXBlLCBjb25zdCBDYWxsRGF0YSYsIEpTVmFs
dWUgdGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0Jik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCklu
ZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0cnVjdERhdGEuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0cnVjdERhdGEuaAkocmV2aXNpb24gNjEzMjcp
CisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0cnVjdERhdGEuaAkod29ya2luZyBjb3B5
KQpAQCAtNTcsNyArNTcsNyBAQAogICAgICAgICB9IGpzOwogICAgIH07CiAKLSAgICBKU09iamVj
dCogY29uc3RydWN0KEV4ZWNTdGF0ZSosIEpTVmFsdWUgY29uc3RydWN0b3IsIENvbnN0cnVjdFR5
cGUsIGNvbnN0IENvbnN0cnVjdERhdGEmLCBjb25zdCBBcmdMaXN0Jik7CisgICAgSlNfRVhQT1JU
RURfU1lNQk9MIEpTT2JqZWN0KiBjb25zdHJ1Y3QoRXhlY1N0YXRlKiwgSlNWYWx1ZSBjb25zdHJ1
Y3RvciwgQ29uc3RydWN0VHlwZSwgY29uc3QgQ29uc3RydWN0RGF0YSYsIGNvbnN0IEFyZ0xpc3Qm
KTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TWFya1N0YWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXJrU3Rh
Y2suaAkocmV2aXNpb24gNjEzMjcpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcmtTdGFj
ay5oCSh3b3JraW5nIGNvcHkpCkBAIC04NSw4ICs4NSw4IEBACiAgICAgICAgICAgICBNYXJrU2V0
UHJvcGVydGllcyBtX3Byb3BlcnRpZXM7CiAgICAgICAgIH07CiAKLSAgICAgICAgc3RhdGljIHZv
aWQqIGFsbG9jYXRlU3RhY2soc2l6ZV90IHNpemUpOwotICAgICAgICBzdGF0aWMgdm9pZCByZWxl
YXNlU3RhY2sodm9pZCogYWRkciwgc2l6ZV90IHNpemUpOworICAgICAgICBKU19FWFBPUlRFRF9T
WU1CT0wgc3RhdGljIHZvaWQqIGFsbG9jYXRlU3RhY2soc2l6ZV90IHNpemUpOworICAgICAgICBK
U19FWFBPUlRFRF9TWU1CT0wgc3RhdGljIHZvaWQgcmVsZWFzZVN0YWNrKHZvaWQqIGFkZHIsIHNp
emVfdCBzaXplKTsKIAogICAgICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplUGFnZXNpemUoKTsK
ICAgICAgICAgc3RhdGljIHNpemVfdCBwYWdlU2l6ZSgpCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuaAkocmV2aXNpb24gNjEzMjcpCisrKyBKYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuaAkod29ya2luZyBjb3B5KQpA
QCAtMzEsOSArMzEsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotICAgIC8vIFRoaXMgZnVuY3Rp
b24gbXVzdCBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQuIEl0IGlzIHNhZmUgdG8gY2Fs
bCBpdCByZXBlYXRlZGx5LgotICAgIC8vIERhcndpbiBpcyBhbiBleGNlcHRpb24gdG8gdGhpcyBy
dWxlOiBpdCBpcyBPSyB0byBjYWxsIHRoaXMgZnVuY3Rpb24gZnJvbSBhbnkgdGhyZWFkLCBldmVu
IHJlZW50cmFudGx5LgotICAgIHZvaWQgaW5pdGlhbGl6ZVRocmVhZGluZygpOworLy8gVGhpcyBm
dW5jdGlvbiBtdXN0IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4gSXQgaXMgc2FmZSB0
byBjYWxsIGl0IHJlcGVhdGVkbHkuCisvLyBEYXJ3aW4gaXMgYW4gZXhjZXB0aW9uIHRvIHRoaXMg
cnVsZTogaXQgaXMgT0sgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIGZyb20gYW55IHRocmVhZCwgZXZl
biByZWVudHJhbnRseS4KK0pTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIGluaXRpYWxpemVUaHJlYWRp
bmcoKTsKIAogfQogCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9jb25maWcuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBKYXZhU2NyaXB0Q29yZS9jb25maWcuaAkocmV2aXNpb24gNjEzMjcpCisrKyBKYXZhU2NyaXB0
Q29yZS9jb25maWcuaAkod29ya2luZyBjb3B5KQpAQCAtMjksMjcgKzI5LDI4IEBACiAKICNpbmNs
dWRlIDx3dGYvUGxhdGZvcm0uaD4KIAotI2lmICFQTEFURk9STShDSFJPTUlVTSkgJiYgT1MoV0lO
RE9XUykgJiYgIWRlZmluZWQoQlVJTERJTkdfV1hfXykgJiYgIUNPTVBJTEVSKEdDQykKKyNpZiAh
UExBVEZPUk0oQ0hST01JVU0pICYmIE9TKFdJTkRPV1MpICYmICFDT01QSUxFUihHQ0MpCiAjaWYg
ZGVmaW5lZChCVUlMRElOR19KYXZhU2NyaXB0Q29yZSkgfHwgZGVmaW5lZChCVUlMRElOR19XVEYp
Ci0jZGVmaW5lIEpTX0VYUE9SVERBVEEgX19kZWNsc3BlYyhkbGxleHBvcnQpCisjZGVmaW5lIEpT
X0VYUE9SVEVEX1NZTUJPTCBfX2RlY2xzcGVjKGRsbGV4cG9ydCkKICNlbHNlCi0jZGVmaW5lIEpT
X0VYUE9SVERBVEEgX19kZWNsc3BlYyhkbGxpbXBvcnQpCisjZGVmaW5lIEpTX0VYUE9SVEVEX1NZ
TUJPTCBfX2RlY2xzcGVjKGRsbGltcG9ydCkKICNlbmRpZgotI2RlZmluZSBKU19FWFBPUlRDTEFT
UyBKU19FWFBPUlREQVRBCisjZWxpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAhZGVmaW5lZChfX0ND
X0FSTSkgJiYgIWRlZmluZWQoX19BUk1DQ19fKQorI2RlZmluZSBKU19FWFBPUlRFRF9TWU1CT0wg
X19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkKICNlbHNlCi0jZGVmaW5lIEpT
X0VYUE9SVERBVEEKLSNkZWZpbmUgSlNfRVhQT1JUQ0xBU1MKKyNkZWZpbmUgSlNfRVhQT1JURURf
U1lNQk9MCiAjZW5kaWYKIAogI2lmIE9TKFdJTkRPV1MpCiAKLS8vIElmIHdlIGRvbid0IGRlZmlu
ZSB0aGVzZSwgdGhleSBnZXQgZGVmaW5lZCBpbiB3aW5kZWYuaC4gCi0vLyBXZSB3YW50IHRvIHVz
ZSBzdGQ6Om1pbiBhbmQgc3RkOjptYXgKKy8qIElmIHdlIGRvbid0IGRlZmluZSB0aGVzZSwgdGhl
eSBnZXQgZGVmaW5lZCBpbiB3aW5kZWYuaC4gCisgKiBXZSB3YW50IHRvIHVzZSBzdGQ6Om1pbiBh
bmQgc3RkOjptYXgKKyAqLwogI2RlZmluZSBtYXggbWF4CiAjZGVmaW5lIG1pbiBtaW4KIAogI2lm
ICFDT01QSUxFUihNU1ZDN19PUl9MT1dFUikgJiYgIU9TKFdJTkNFKQotLy8gV2UgbmVlZCB0byBk
ZWZpbmUgdGhpcyBiZWZvcmUgdGhlIGZpcnN0ICNpbmNsdWRlIG9mIHN0ZGxpYi5oIG9yIGl0IHdv
bid0IGNvbnRhaW4gcmFuZF9zLgorLyogV2UgbmVlZCB0byBkZWZpbmUgdGhpcyBiZWZvcmUgdGhl
IGZpcnN0ICNpbmNsdWRlIG9mIHN0ZGxpYi5oIG9yIGl0IHdvbid0IGNvbnRhaW4gcmFuZF9zLiAq
LwogI2lmbmRlZiBfQ1JUX1JBTkRfUwogI2RlZmluZSBfQ1JUX1JBTkRfUwogI2VuZGlmCkBAIC03
Miw5ICs3MywxMCBAQAogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjZW5kaWYKIAotLy8g
dGhpcyBicmVha3MgY29tcGlsYXRpb24gb2YgPFFGb250RGF0YWJhc2U+LCBhdCBsZWFzdCwgc28g
dHVybiBpdCBvZmYgZm9yIG5vdwotLy8gQWxzbyBnZW5lcmF0ZXMgZXJyb3JzIG9uIHd4IG9uIFdp
bmRvd3MsIGJlY2F1c2UgdGhlc2UgZnVuY3Rpb25zCi0vLyBhcmUgdXNlZCBmcm9tIHd4IGhlYWRl
cnMuIAorLyogdGhpcyBicmVha3MgY29tcGlsYXRpb24gb2YgPFFGb250RGF0YWJhc2U+LCBhdCBs
ZWFzdCwgc28gdHVybiBpdCBvZmYgZm9yIG5vdworICogIEFsc28gZ2VuZXJhdGVzIGVycm9ycyBv
biB3eCBvbiBXaW5kb3dzLCBiZWNhdXNlIHRoZXNlIGZ1bmN0aW9ucworICogIGFyZSB1c2VkIGZy
b20gd3ggaGVhZGVycy4KKyAqLyAKICNpZiAhUExBVEZPUk0oUVQpICYmICFQTEFURk9STShXWCkK
ICNpbmNsdWRlIDx3dGYvRGlzYWxsb3dDVHlwZS5oPgogI2VuZGlmCkluZGV4OiBKYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAkocmV2aXNpb24gNjEz
MjcpCisrKyBKYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAko
d29ya2luZyBjb3B5KQpAQCAtOTAsNyArOTAsNyBAQAogICAgICAgICB0eXBlZGVmIERlY2xhcmF0
aW9uU3RhY2tzOjpWYXJTdGFjayBWYXJTdGFjazsKICAgICAgICAgdHlwZWRlZiBEZWNsYXJhdGlv
blN0YWNrczo6RnVuY3Rpb25TdGFjayBGdW5jdGlvblN0YWNrOwogCi0gICAgICAgIHN0YXRpYyB2
b2lkIHNldER1bXBzR2VuZXJhdGVkQ29kZShib29sIGR1bXBzR2VuZXJhdGVkQ29kZSk7CisgICAg
ICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0aWMgdm9pZCBzZXREdW1wc0dlbmVyYXRlZENvZGUo
Ym9vbCBkdW1wc0dlbmVyYXRlZENvZGUpOwogICAgICAgICBzdGF0aWMgYm9vbCBkdW1wc0dlbmVy
YXRlZENvZGUoKTsKIAogICAgICAgICBCeXRlY29kZUdlbmVyYXRvcihQcm9ncmFtTm9kZSosIGNv
bnN0IERlYnVnZ2VyKiwgY29uc3QgU2NvcGVDaGFpbiYsIFN5bWJvbFRhYmxlKiwgUHJvZ3JhbUNv
ZGVCbG9jayopOwpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL1JhbmRvbU51bWJlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9SYW5kb21OdW1iZXIuaAkocmV2aXNpb24gNjEz
MjcpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvUmFuZG9tTnVtYmVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI4LDkgKzI4LDkgQEAKIAogbmFtZXNwYWNlIFdURiB7CiAKLSAgICAvLyBSZXR1cm5zIGEg
cHNldWRvLXJhbmRvbSBudW1iZXIgaW4gdGhlIHJhbmdlIFswLCAxKSwgYXR0ZW1wdHMgdG8gYmUK
LSAgICAvLyBjcnlwdG9ncmFwaGljYWxseSBzZWN1cmUgaWYgcG9zc2libGUgb24gdGhlIHRhcmdl
dCBwbGF0Zm9ybQotICAgIGRvdWJsZSByYW5kb21OdW1iZXIoKTsKKy8vIFJldHVybnMgYSBwc2V1
ZG8tcmFuZG9tIG51bWJlciBpbiB0aGUgcmFuZ2UgWzAsIDEpLCBhdHRlbXB0cyB0byBiZQorLy8g
Y3J5cHRvZ3JhcGhpY2FsbHkgc2VjdXJlIGlmIHBvc3NpYmxlIG9uIHRoZSB0YXJnZXQgcGxhdGZv
cm0KK0pTX0VYUE9SVEVEX1NZTUJPTCBkb3VibGUgcmFuZG9tTnVtYmVyKCk7CiAKIH0KIApJbmRl
eDogSmF2YVNjcmlwdENvcmUvd3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaAkocmV2aXNpb24g
NjEzMjcpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI2LDIyICsyNiwyMiBAQAogCiBuYW1lc3BhY2UgV1RGIHsKICAgICAK
LSAgICBzdHJ1Y3QgUmVmQ291bnRlZExlYWtDb3VudGVyIHsKLSAgICAgICAgc3RhdGljIHZvaWQg
c3VwcHJlc3NNZXNzYWdlcyhjb25zdCBjaGFyKik7Ci0gICAgICAgIHN0YXRpYyB2b2lkIGNhbmNl
bE1lc3NhZ2VTdXBwcmVzc2lvbihjb25zdCBjaGFyKik7CitzdHJ1Y3QgSlNfRVhQT1JURURfU1lN
Qk9MIFJlZkNvdW50ZWRMZWFrQ291bnRlciB7CisgICAgc3RhdGljIHZvaWQgc3VwcHJlc3NNZXNz
YWdlcyhjb25zdCBjaGFyKik7CisgICAgc3RhdGljIHZvaWQgY2FuY2VsTWVzc2FnZVN1cHByZXNz
aW9uKGNvbnN0IGNoYXIqKTsKICAgICAgICAgCi0gICAgICAgIGV4cGxpY2l0IFJlZkNvdW50ZWRM
ZWFrQ291bnRlcihjb25zdCBjaGFyKiBkZXNjcmlwdGlvbik7Ci0gICAgICAgIH5SZWZDb3VudGVk
TGVha0NvdW50ZXIoKTsKKyAgICBleHBsaWNpdCBSZWZDb3VudGVkTGVha0NvdW50ZXIoY29uc3Qg
Y2hhciogZGVzY3JpcHRpb24pOworICAgIH5SZWZDb3VudGVkTGVha0NvdW50ZXIoKTsKIAotICAg
ICAgICB2b2lkIGluY3JlbWVudCgpOwotICAgICAgICB2b2lkIGRlY3JlbWVudCgpOworICAgIHZv
aWQgaW5jcmVtZW50KCk7CisgICAgdm9pZCBkZWNyZW1lbnQoKTsKIAogI2lmbmRlZiBOREVCVUcK
LSAgICBwcml2YXRlOgotICAgICAgICB2b2xhdGlsZSBpbnQgbV9jb3VudDsKLSAgICAgICAgY29u
c3QgY2hhciogbV9kZXNjcmlwdGlvbjsKK3ByaXZhdGU6CisgICAgdm9sYXRpbGUgaW50IG1fY291
bnQ7CisgICAgY29uc3QgY2hhciogbV9kZXNjcmlwdGlvbjsKICNlbmRpZgotICAgIH07Cit9Owog
CiB9ICAvLyBuYW1lc3BhY2UgV1RGCiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L0NT
dHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9DU3RyaW5nLmgJ
KHJldmlzaW9uIDYxMzI3KQorKysgSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvQ1N0cmluZy5oCSh3
b3JraW5nIGNvcHkpCkBAIC01MiwxMiArNTIsMTMgQEAKIGNsYXNzIENTdHJpbmcgewogcHVibGlj
OgogICAgIENTdHJpbmcoKSB7IH0KLSAgICBDU3RyaW5nKGNvbnN0IGNoYXIqKTsKLSAgICBDU3Ry
aW5nKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIEpTX0VYUE9SVEVEX1NZTUJP
TCBDU3RyaW5nKGNvbnN0IGNoYXIqKTsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgQ1N0cmluZyhj
b25zdCBjaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBDU3RyaW5nKENTdHJpbmdCdWZmZXIq
IGJ1ZmZlcikgOiBtX2J1ZmZlcihidWZmZXIpIHsgfQotICAgIHN0YXRpYyBDU3RyaW5nIG5ld1Vu
aW5pdGlhbGl6ZWQoc2l6ZV90IGxlbmd0aCwgY2hhciomIGNoYXJhY3RlckJ1ZmZlcik7CisgICAg
SlNfRVhQT1JURURfU1lNQk9MIHN0YXRpYyBDU3RyaW5nIG5ld1VuaW5pdGlhbGl6ZWQoc2l6ZV90
IGxlbmd0aCwgY2hhciomIGNoYXJhY3RlckJ1ZmZlcik7CiAKLSAgICBjb25zdCBjaGFyKiBkYXRh
KCkgY29uc3QKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgfkNTdHJpbmcoKSB7IH0KKyAgICBKU19F
WFBPUlRFRF9TWU1CT0wgY29uc3QgY2hhciogZGF0YSgpIGNvbnN0CiAgICAgewogICAgICAgICBy
ZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+ZGF0YSgpIDogMDsKICAgICB9CkBAIC03Nyw3ICs3
OCw3IEBACiAgICAgUmVmUHRyPENTdHJpbmdCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAotYm9vbCBv
cGVyYXRvcj09KGNvbnN0IENTdHJpbmcmIGEsIGNvbnN0IENTdHJpbmcmIGIpOworSlNfRVhQT1JU
RURfU1lNQk9MIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDU3RyaW5nJiBhLCBjb25zdCBDU3RyaW5n
JiBiKTsKIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgQ1N0cmluZyYgYSwgY29uc3QgQ1N0
cmluZyYgYikgeyByZXR1cm4gIShhID09IGIpOyB9CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpJbmRl
eDogSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nU3RhdGljcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nU3RhdGljcy5jcHAJKHJldmlzaW9uIDYx
MzI3KQorKysgSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nU3RhdGljcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ5LDEzICs0OSwxMyBAQAogICAgIHJldHVybiAmZW1wdHlTdHJpbmc7CiB9
CiAKLUpTX0VYUE9SVERBVEEgREVGSU5FX0dMT0JBTChBdG9taWNTdHJpbmcsIG51bGxBdG9tKQot
SlNfRVhQT1JUREFUQSBERUZJTkVfR0xPQkFMKEF0b21pY1N0cmluZywgZW1wdHlBdG9tLCAiIikK
LUpTX0VYUE9SVERBVEEgREVGSU5FX0dMT0JBTChBdG9taWNTdHJpbmcsIHRleHRBdG9tLCAiI3Rl
eHQiKQotSlNfRVhQT1JUREFUQSBERUZJTkVfR0xPQkFMKEF0b21pY1N0cmluZywgY29tbWVudEF0
b20sICIjY29tbWVudCIpCi1KU19FWFBPUlREQVRBIERFRklORV9HTE9CQUwoQXRvbWljU3RyaW5n
LCBzdGFyQXRvbSwgIioiKQotSlNfRVhQT1JUREFUQSBERUZJTkVfR0xPQkFMKEF0b21pY1N0cmlu
ZywgeG1sQXRvbSwgInhtbCIpCi1KU19FWFBPUlREQVRBIERFRklORV9HTE9CQUwoQXRvbWljU3Ry
aW5nLCB4bWxuc0F0b20sICJ4bWxucyIpCitKU19FWFBPUlRFRF9TWU1CT0wgREVGSU5FX0dMT0JB
TChBdG9taWNTdHJpbmcsIG51bGxBdG9tKQorSlNfRVhQT1JURURfU1lNQk9MIERFRklORV9HTE9C
QUwoQXRvbWljU3RyaW5nLCBlbXB0eUF0b20sICIiKQorSlNfRVhQT1JURURfU1lNQk9MIERFRklO
RV9HTE9CQUwoQXRvbWljU3RyaW5nLCB0ZXh0QXRvbSwgIiN0ZXh0IikKK0pTX0VYUE9SVEVEX1NZ
TUJPTCBERUZJTkVfR0xPQkFMKEF0b21pY1N0cmluZywgY29tbWVudEF0b20sICIjY29tbWVudCIp
CitKU19FWFBPUlRFRF9TWU1CT0wgREVGSU5FX0dMT0JBTChBdG9taWNTdHJpbmcsIHN0YXJBdG9t
LCAiKiIpCitKU19FWFBPUlRFRF9TWU1CT0wgREVGSU5FX0dMT0JBTChBdG9taWNTdHJpbmcsIHht
bEF0b20sICJ4bWwiKQorSlNfRVhQT1JURURfU1lNQk9MIERFRklORV9HTE9CQUwoQXRvbWljU3Ry
aW5nLCB4bWxuc0F0b20sICJ4bWxucyIpCiAKIHZvaWQgQXRvbWljU3RyaW5nOjppbml0KCkKIHsK
SW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIEphdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5oCShyZXZpc2lvbiA2MTMy
NykKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5oCSh3b3JraW5nIGNv
cHkpCkBAIC00MCwyNyArNDAsMzEgQEAKIAogY2xhc3MgQXRvbWljU3RyaW5nIHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgdm9pZCBpbml0KCk7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIHN0YXRpYyB2
b2lkIGluaXQoKTsKIAotICAgIEF0b21pY1N0cmluZygpIHsgfQotICAgIEF0b21pY1N0cmluZyhj
b25zdCBjaGFyKiBzKSA6IG1fc3RyaW5nKGFkZChzKSkgeyB9CisgICAgSlNfRVhQT1JURURfU1lN
Qk9MIEF0b21pY1N0cmluZygpIHsgfQorICAgIC8vIGNvcHkgY29uc3RydWN0b3IgbmVlZHMgdG8g
YmUgZXhwbGljaXRseSBkZWZpbmVkIHNvIHdlIGNhbiBzcGVjaWZ5IHByb3BlciBkbGwgbGlua2Fn
ZQorICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBBdG9taWNTdHJpbmcoY29uc3QgQXRvbWljU3RyaW5n
JiBzKSA6IG1fc3RyaW5nKHMubV9zdHJpbmcpIHsgfQorICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBB
dG9taWNTdHJpbmcoY29uc3QgY2hhciogcykgOiBtX3N0cmluZyhhZGQocykpIHsgfQogICAgIEF0
b21pY1N0cmluZyhjb25zdCBVQ2hhciogcywgdW5zaWduZWQgbGVuZ3RoKSA6IG1fc3RyaW5nKGFk
ZChzLCBsZW5ndGgpKSB7IH0KICAgICBBdG9taWNTdHJpbmcoY29uc3QgVUNoYXIqIHMsIHVuc2ln
bmVkIGxlbmd0aCwgdW5zaWduZWQgZXhpc3RpbmdIYXNoKSA6IG1fc3RyaW5nKGFkZChzLCBsZW5n
dGgsIGV4aXN0aW5nSGFzaCkpIHsgfQogICAgIEF0b21pY1N0cmluZyhjb25zdCBVQ2hhciogcykg
OiBtX3N0cmluZyhhZGQocykpIHsgfQogICAgIEFUT01JQ1NUUklOR19DT05WRVJTSU9OIEF0b21p
Y1N0cmluZyhTdHJpbmdJbXBsKiBpbXApIDogbV9zdHJpbmcoYWRkKGltcCkpIHsgfQogICAgIEF0
b21pY1N0cmluZyhBdG9taWNTdHJpbmdJbXBsKiBpbXApIDogbV9zdHJpbmcoaW1wKSB7IH0KLSAg
ICBBVE9NSUNTVFJJTkdfQ09OVkVSU0lPTiBBdG9taWNTdHJpbmcoY29uc3QgU3RyaW5nJiBzKSA6
IG1fc3RyaW5nKGFkZChzLmltcGwoKSkpIHsgfQorICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBBVE9N
SUNTVFJJTkdfQ09OVkVSU0lPTiBBdG9taWNTdHJpbmcoY29uc3QgU3RyaW5nJiBzKSA6IG1fc3Ry
aW5nKGFkZChzLmltcGwoKSkpIHsgfQogCiAgICAgLy8gSGFzaCB0YWJsZSBkZWxldGVkIHZhbHVl
cywgd2hpY2ggYXJlIG9ubHkgY29uc3RydWN0ZWQgYW5kIG5ldmVyIGNvcGllZCBvciBkZXN0cm95
ZWQuCi0gICAgQXRvbWljU3RyaW5nKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkgOiBt
X3N0cmluZyhXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkgeyB9Ci0gICAgYm9vbCBpc0hhc2hU
YWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmlzSGFzaFRhYmxlRGVs
ZXRlZFZhbHVlKCk7IH0KKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgQXRvbWljU3RyaW5nKFdURjo6
SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkgOiBtX3N0cmluZyhXVEY6Okhhc2hUYWJsZURlbGV0
ZWRWYWx1ZSkgeyB9CisgICAgSlNfRVhQT1JURURfU1lNQk9MIGJvb2wgaXNIYXNoVGFibGVEZWxl
dGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1
ZSgpOyB9CiAKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nSW1wbCogZmluZChjb25zdCBVQ2hhciog
cywgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBleGlzdGluZ0hhc2gpOworICAgIEpTX0VYUE9S
VEVEX1NZTUJPTCB+QXRvbWljU3RyaW5nKCkgeyB9CiAKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wg
c3RhdGljIEF0b21pY1N0cmluZ0ltcGwqIGZpbmQoY29uc3QgVUNoYXIqIHMsIHVuc2lnbmVkIGxl
bmd0aCwgdW5zaWduZWQgZXhpc3RpbmdIYXNoKTsKKwogICAgIG9wZXJhdG9yIGNvbnN0IFN0cmlu
ZyYoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfQogICAgIGNvbnN0IFN0cmluZyYgc3RyaW5n
KCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH07CiAKLSAgICBBdG9taWNTdHJpbmdJbXBsKiBp
bXBsKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXRvbWljU3RyaW5nSW1wbCAqPihtX3N0
cmluZy5pbXBsKCkpOyB9CisgICAgSlNfRVhQT1JURURfU1lNQk9MIEF0b21pY1N0cmluZ0ltcGwq
IGltcGwoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxBdG9taWNTdHJpbmdJbXBsICo+KG1f
c3RyaW5nLmltcGwoKSk7IH0KICAgICAKICAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycygpIGNv
bnN0IHsgcmV0dXJuIG1fc3RyaW5nLmNoYXJhY3RlcnMoKTsgfQogICAgIHVuc2lnbmVkIGxlbmd0
aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmxlbmd0aCgpOyB9CkBAIC04NCw3ICs4OCw3IEBA
CiAgICAgYm9vbCBlbmRzV2l0aChjb25zdCBTdHJpbmcmIHMsIGJvb2wgY2FzZVNlbnNpdGl2ZSA9
IHRydWUpIGNvbnN0CiAgICAgICAgIHsgcmV0dXJuIG1fc3RyaW5nLmVuZHNXaXRoKHMsIGNhc2VT
ZW5zaXRpdmUpOyB9CiAgICAgCi0gICAgQXRvbWljU3RyaW5nIGxvd2VyKCkgY29uc3Q7CisgICAg
SlNfRVhQT1JURURfU1lNQk9MIEF0b21pY1N0cmluZyBsb3dlcigpIGNvbnN0OwogICAgIEF0b21p
Y1N0cmluZyB1cHBlcigpIGNvbnN0IHsgcmV0dXJuIEF0b21pY1N0cmluZyhpbXBsKCktPnVwcGVy
KCkpOyB9CiAgICAgCiAgICAgaW50IHRvSW50KGJvb2wqIG9rID0gMCkgY29uc3QgeyByZXR1cm4g
bV9zdHJpbmcudG9JbnQob2spOyB9CkBAIC0xMTAsMjQgKzExNCwzMiBAQAogICAgIG9wZXJhdG9y
IFFTdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfQogI2VuZGlmCiAKKyAgICBKU19F
WFBPUlRFRF9TWU1CT0wgaW5saW5lIEF0b21pY1N0cmluZyYgb3BlcmF0b3I9KGNvbnN0IEF0b21p
Y1N0cmluZyYgYSkgCisgICAgeyAKKyAgICAgICAgaWYgKHRoaXMgIT0gJmEpCisgICAgICAgICAg
ICBtX3N0cmluZyA9IGEubV9zdHJpbmc7IAorICAgICAgICAKKyAgICAgICAgcmV0dXJuICp0aGlz
OyAKKyAgICB9CisKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fc3RyaW5nOwogICAgIAotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChjb25zdCBjaGFyKik7Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRkKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3Ro
KTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGQoY29uc3QgVUNoYXIqLCB1
bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIGV4aXN0aW5nSGFzaCk7Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8U3RyaW5nSW1wbD4gYWRkKGNvbnN0IFVDaGFyKik7CisgICAgSlNfRVhQT1JURURfU1lN
Qk9MIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChjb25zdCBjaGFyKik7CisgICAg
SlNfRVhQT1JURURfU1lNQk9MIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChjb25z
dCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIHN0YXRp
YyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0
aCwgdW5zaWduZWQgZXhpc3RpbmdIYXNoKTsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgc3RhdGlj
IFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRkKGNvbnN0IFVDaGFyKik7CiAgICAgQUxXQVlTX0lO
TElORSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChTdHJpbmdJbXBsKiByKQogICAgIHsKICAg
ICAgICAgaWYgKCFyIHx8IHItPmlzQXRvbWljKCkpCiAgICAgICAgICAgICByZXR1cm4gcjsKICAg
ICAgICAgcmV0dXJuIGFkZFNsb3dDYXNlKHIpOwogICAgIH0KLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxTdHJpbmdJbXBsPiBhZGRTbG93Q2FzZShTdHJpbmdJbXBsKik7CisgICAgSlNfRVhQT1JURURf
U1lNQk9MIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZFNsb3dDYXNlKFN0cmluZ0lt
cGwqKTsKIH07CiAKIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgQXRvbWljU3RyaW5nJiBh
LCBjb25zdCBBdG9taWNTdHJpbmcmIGIpIHsgcmV0dXJuIGEuaW1wbCgpID09IGIuaW1wbCgpOyB9
Ci1ib29sIG9wZXJhdG9yPT0oY29uc3QgQXRvbWljU3RyaW5nJiBhLCBjb25zdCBjaGFyKiBiKTsK
K0pTX0VYUE9SVEVEX1NZTUJPTCBib29sIG9wZXJhdG9yPT0oY29uc3QgQXRvbWljU3RyaW5nJiBh
LCBjb25zdCBjaGFyKiBiKTsKIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgQXRvbWljU3Ry
aW5nJiBhLCBjb25zdCBTdHJpbmcmIGIpIHsgcmV0dXJuIGVxdWFsKGEuaW1wbCgpLCBiLmltcGwo
KSk7IH0KIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgY2hhciogYSwgY29uc3QgQXRvbWlj
U3RyaW5nJiBiKSB7IHJldHVybiBiID09IGE7IH0KIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29u
c3QgU3RyaW5nJiBhLCBjb25zdCBBdG9taWNTdHJpbmcmIGIpIHsgcmV0dXJuIGVxdWFsKGEuaW1w
bCgpLCBiLmltcGwoKSk7IH0KQEAgLTE0NywxMyArMTU5LDEzIEBACiAvLyBEZWZpbmUgZXh0ZXJu
YWwgZ2xvYmFsIHZhcmlhYmxlcyBmb3IgdGhlIGNvbW1vbmx5IHVzZWQgYXRvbWljIHN0cmluZ3Mu
CiAvLyBUaGVzZSBhcmUgb25seSB1c2FibGUgZnJvbSB0aGUgbWFpbiB0aHJlYWQuCiAjaWZuZGVm
IEFUT01JQ1NUUklOR19ISURFX0dMT0JBTFMKLSAgICBleHRlcm4gY29uc3QgSlNfRVhQT1JUREFU
QSBBdG9taWNTdHJpbmcgbnVsbEF0b207Ci0gICAgZXh0ZXJuIGNvbnN0IEpTX0VYUE9SVERBVEEg
QXRvbWljU3RyaW5nIGVtcHR5QXRvbTsKLSAgICBleHRlcm4gY29uc3QgSlNfRVhQT1JUREFUQSBB
dG9taWNTdHJpbmcgdGV4dEF0b207Ci0gICAgZXh0ZXJuIGNvbnN0IEpTX0VYUE9SVERBVEEgQXRv
bWljU3RyaW5nIGNvbW1lbnRBdG9tOwotICAgIGV4dGVybiBjb25zdCBKU19FWFBPUlREQVRBIEF0
b21pY1N0cmluZyBzdGFyQXRvbTsKLSAgICBleHRlcm4gY29uc3QgSlNfRVhQT1JUREFUQSBBdG9t
aWNTdHJpbmcgeG1sQXRvbTsKLSAgICBleHRlcm4gY29uc3QgSlNfRVhQT1JUREFUQSBBdG9taWNT
dHJpbmcgeG1sbnNBdG9tOworZXh0ZXJuIGNvbnN0IEpTX0VYUE9SVEVEX1NZTUJPTCBBdG9taWNT
dHJpbmcgbnVsbEF0b207CitleHRlcm4gY29uc3QgSlNfRVhQT1JURURfU1lNQk9MIEF0b21pY1N0
cmluZyBlbXB0eUF0b207CitleHRlcm4gY29uc3QgSlNfRVhQT1JURURfU1lNQk9MIEF0b21pY1N0
cmluZyB0ZXh0QXRvbTsKK2V4dGVybiBjb25zdCBKU19FWFBPUlRFRF9TWU1CT0wgQXRvbWljU3Ry
aW5nIGNvbW1lbnRBdG9tOworZXh0ZXJuIGNvbnN0IEpTX0VYUE9SVEVEX1NZTUJPTCBBdG9taWNT
dHJpbmcgc3RhckF0b207CitleHRlcm4gY29uc3QgSlNfRVhQT1JURURfU1lNQk9MIEF0b21pY1N0
cmluZyB4bWxBdG9tOworZXh0ZXJuIGNvbnN0IEpTX0VYUE9SVEVEX1NZTUJPTCBBdG9taWNTdHJp
bmcgeG1sbnNBdG9tOwogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IEph
dmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3Jp
cHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5oCShyZXZpc2lvbiA2MTMyNykKKysrIEphdmFTY3Jp
cHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC02NSwxOSArNjUs
MTkgQEAKIC8vIERlY2xhcmF0aW9ucyBvZiBzdHJpbmcgb3BlcmF0aW9ucwogCiBib29sIGNoYXJh
Y3RlcnNBcmVBbGxBU0NJSShjb25zdCBVQ2hhciosIHNpemVfdCk7Ci1pbnQgY2hhcmFjdGVyc1Rv
SW50U3RyaWN0KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDAsIGludCBiYXNlID0g
MTApOwotdW5zaWduZWQgY2hhcmFjdGVyc1RvVUludFN0cmljdChjb25zdCBVQ2hhciosIHNpemVf
dCwgYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKTsKK0pTX0VYUE9SVEVEX1NZTUJPTCBpbnQg
Y2hhcmFjdGVyc1RvSW50U3RyaWN0KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDAs
IGludCBiYXNlID0gMTApOworSlNfRVhQT1JURURfU1lNQk9MIHVuc2lnbmVkIGNoYXJhY3RlcnNU
b1VJbnRTdHJpY3QoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gMCwgaW50IGJhc2Ug
PSAxMCk7CiBpbnQ2NF90IGNoYXJhY3RlcnNUb0ludDY0U3RyaWN0KGNvbnN0IFVDaGFyKiwgc2l6
ZV90LCBib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApOwogdWludDY0X3QgY2hhcmFjdGVyc1Rv
VUludDY0U3RyaWN0KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDAsIGludCBiYXNl
ID0gMTApOwogaW50cHRyX3QgY2hhcmFjdGVyc1RvSW50UHRyU3RyaWN0KGNvbnN0IFVDaGFyKiwg
c2l6ZV90LCBib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApOwogCi1pbnQgY2hhcmFjdGVyc1Rv
SW50KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDApOyAvLyBpZ25vcmVzIHRyYWls
aW5nIGdhcmJhZ2UKK0pTX0VYUE9SVEVEX1NZTUJPTCBpbnQgY2hhcmFjdGVyc1RvSW50KGNvbnN0
IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDApOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJh
Z2UKIHVuc2lnbmVkIGNoYXJhY3RlcnNUb1VJbnQoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wq
IG9rID0gMCk7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQogaW50NjRfdCBjaGFyYWN0ZXJz
VG9JbnQ2NChjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSAwKTsgLy8gaWdub3JlcyB0
cmFpbGluZyBnYXJiYWdlCiB1aW50NjRfdCBjaGFyYWN0ZXJzVG9VSW50NjQoY29uc3QgVUNoYXIq
LCBzaXplX3QsIGJvb2wqIG9rID0gMCk7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQogaW50
cHRyX3QgY2hhcmFjdGVyc1RvSW50UHRyKGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9
IDApOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKIAotZG91YmxlIGNoYXJhY3RlcnNUb0Rv
dWJsZShjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSAwKTsKK0pTX0VYUE9SVEVEX1NZ
TUJPTCBkb3VibGUgY2hhcmFjdGVyc1RvRG91YmxlKGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29s
KiBvayA9IDApOwogZmxvYXQgY2hhcmFjdGVyc1RvRmxvYXQoY29uc3QgVUNoYXIqLCBzaXplX3Qs
IGJvb2wqIG9rID0gMCk7CiAKIGludCBmaW5kKGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBVQ2hhciwg
aW50IHN0YXJ0UG9zaXRpb24gPSAwKTsKQEAgLTg1LDE0ICs4NSwxNSBAQAogCiBjbGFzcyBTdHJp
bmcgewogcHVibGljOgotICAgIFN0cmluZygpIHsgfSAvLyBnaXZlcyBudWxsIHN0cmluZywgZGlz
dGluZ3Vpc2hhYmxlIGZyb20gYW4gZW1wdHkgc3RyaW5nCisgICAgSlNfRVhQT1JURURfU1lNQk9M
IFN0cmluZygpIHsgfSAvLyBnaXZlcyBudWxsIHN0cmluZywgZGlzdGluZ3Vpc2hhYmxlIGZyb20g
YW4gZW1wdHkgc3RyaW5nCisgICAgSlNfRVhQT1JURURfU1lNQk9MIH5TdHJpbmcoKSB7IH0KICAg
ICBTdHJpbmcoY29uc3QgVUNoYXIqIHN0ciwgdW5zaWduZWQgbGVuKQogICAgIHsKICAgICAgICAg
aWYgKCFzdHIpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIG1faW1wbCA9IFN0cmluZ0lt
cGw6OmNyZWF0ZShzdHIsIGxlbik7CiAgICAgfQotICAgIFN0cmluZyhjb25zdCBjaGFyKiBzdHIp
CisgICAgSlNfRVhQT1JURURfU1lNQk9MIFN0cmluZyhjb25zdCBjaGFyKiBzdHIpCiAgICAgewog
ICAgICAgICBpZiAoIXN0cikKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEwNCwxNiArMTA1LDE4
IEBACiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIG1faW1wbCA9IFN0cmluZ0ltcGw6OmNy
ZWF0ZShzdHIsIGxlbmd0aCk7CiAgICAgfQotICAgIFN0cmluZyhjb25zdCBVQ2hhciopOyAvLyBT
cGVjaWZpY2FsbHkgZm9yIG51bGwgdGVybWluYXRlZCBVVEYtMTYKLSAgICBTdHJpbmcoU3RyaW5n
SW1wbCogaSkgOiBtX2ltcGwoaSkgeyB9Ci0gICAgU3RyaW5nKFBhc3NSZWZQdHI8U3RyaW5nSW1w
bD4gaSkgOiBtX2ltcGwoaSkgeyB9CisgICAgSlNfRVhQT1JURURfU1lNQk9MIFN0cmluZyhjb25z
dCBVQ2hhciopOyAvLyBTcGVjaWZpY2FsbHkgZm9yIG51bGwgdGVybWluYXRlZCBVVEYtMTYKKyAg
ICAvLyBjb3B5IGNvbnN0cnVjdG9yIG5lZWRzIHRvIGJlIGV4cGxpY2l0bHkgZGVmaW5lZCBzbyB3
ZSBjYW4gc3BlY2lmeSBwcm9wZXIgZGxsIGxpbmthZ2UKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wg
U3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyKSA6IG1faW1wbChzdHIubV9pbXBsKSB7IH0KKyAgICBK
U19FWFBPUlRFRF9TWU1CT0wgU3RyaW5nKFN0cmluZ0ltcGwqIGkpIDogbV9pbXBsKGkpIHsgfQor
ICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBTdHJpbmcoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBpKSA6
IG1faW1wbChpKSB7IH0KICAgICBTdHJpbmcoUmVmUHRyPFN0cmluZ0ltcGw+IGkpIDogbV9pbXBs
KGkpIHsgfQogCiAgICAgdm9pZCBzd2FwKFN0cmluZyYgbykgeyBtX2ltcGwuc3dhcChvLm1faW1w
bCk7IH0KIAogICAgIC8vIEhhc2ggdGFibGUgZGVsZXRlZCB2YWx1ZXMsIHdoaWNoIGFyZSBvbmx5
IGNvbnN0cnVjdGVkIGFuZCBuZXZlciBjb3BpZWQgb3IgZGVzdHJveWVkLgogICAgIFN0cmluZyhX
VEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpIDogbV9pbXBsKFdURjo6SGFzaFRhYmxlRGVs
ZXRlZFZhbHVlKSB7IH0KLSAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3Qg
eyByZXR1cm4gbV9pbXBsLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KKyAgICBKU19FWFBP
UlRFRF9TWU1CT0wgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJu
IG1faW1wbC5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9CiAKICAgICBzdGF0aWMgU3RyaW5n
IGFkb3B0KFN0cmluZ0J1ZmZlciYgYnVmZmVyKSB7IHJldHVybiBTdHJpbmdJbXBsOjphZG9wdChi
dWZmZXIpOyB9CiAgICAgc3RhdGljIFN0cmluZyBhZG9wdChWZWN0b3I8VUNoYXI+JiB2ZWN0b3Ip
IHsgcmV0dXJuIFN0cmluZ0ltcGw6OmFkb3B0KHZlY3Rvcik7IH0KQEAgLTEzMiw3ICsxMzUsNyBA
QAogICAgICAgICByZXR1cm4gbV9pbXBsLT5jaGFyYWN0ZXJzKCk7CiAgICAgfQogCi0gICAgY29u
c3QgVUNoYXIqIGNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCk7CisgICAgSlNfRVhQT1JU
RURfU1lNQk9MIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpOwog
ICAgIAogICAgIFVDaGFyIG9wZXJhdG9yW10odW5zaWduZWQgaSkgY29uc3QgLy8gaWYgaSA+PSBs
ZW5ndGgoKSwgcmV0dXJucyAwCiAgICAgewpAQCAtMTQwLDcgKzE0Myw3IEBACiAgICAgICAgICAg
ICByZXR1cm4gMDsKICAgICAgICAgcmV0dXJuIG1faW1wbC0+Y2hhcmFjdGVycygpW2ldOwogICAg
IH0KLSAgICBVQ2hhcjMyIGNoYXJhY3RlclN0YXJ0aW5nQXQodW5zaWduZWQpIGNvbnN0OyAvLyBE
aXR0by4KKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgVUNoYXIzMiBjaGFyYWN0ZXJTdGFydGluZ0F0
KHVuc2lnbmVkKSBjb25zdDsgLy8gRGl0dG8uCiAgICAgCiAgICAgYm9vbCBjb250YWlucyhVQ2hh
ciBjKSBjb25zdCB7IHJldHVybiBmaW5kKGMpICE9IC0xOyB9CiAgICAgYm9vbCBjb250YWlucyhj
b25zdCBjaGFyKiBzdHIsIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IHRydWUpIGNvbnN0IHsgcmV0dXJu
IGZpbmQoc3RyLCAwLCBjYXNlU2Vuc2l0aXZlKSAhPSAtMTsgfQpAQCAtMTY1LDExICsxNjgsMTEg
QEAKICAgICBib29sIGVuZHNXaXRoKGNvbnN0IFN0cmluZyYgcywgYm9vbCBjYXNlU2Vuc2l0aXZl
ID0gdHJ1ZSkgY29uc3QKICAgICAgICAgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5lbmRzV2l0
aChzLmltcGwoKSwgY2FzZVNlbnNpdGl2ZSkgOiBzLmlzRW1wdHkoKTsgfQogCi0gICAgdm9pZCBh
cHBlbmQoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBhcHBlbmQoY2hhcik7Ci0gICAgdm9pZCBh
cHBlbmQoVUNoYXIpOwotICAgIHZvaWQgYXBwZW5kKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVu
Z3RoKTsKLSAgICB2b2lkIGluc2VydChjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBwb3MpOworICAg
IEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmKTsKKyAgICBKU19F
WFBPUlRFRF9TWU1CT0wgdm9pZCBhcHBlbmQoY2hhcik7CisgICAgSlNfRVhQT1JURURfU1lNQk9M
IHZvaWQgYXBwZW5kKFVDaGFyKTsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBhcHBlbmQo
Y29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2
b2lkIGluc2VydChjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBwb3MpOwogICAgIHZvaWQgaW5zZXJ0
KGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBwb3MpOwogCiAgICAgU3Ry
aW5nJiByZXBsYWNlKFVDaGFyIGEsIFVDaGFyIGIpIHsgaWYgKG1faW1wbCkgbV9pbXBsID0gbV9p
bXBsLT5yZXBsYWNlKGEsIGIpOyByZXR1cm4gKnRoaXM7IH0KQEAgLTE4MSw3NSArMTg0LDc1IEBA
CiAgICAgdm9pZCBtYWtlVXBwZXIoKSB7IGlmIChtX2ltcGwpIG1faW1wbCA9IG1faW1wbC0+dXBw
ZXIoKTsgfQogICAgIHZvaWQgbWFrZVNlY3VyZShVQ2hhciBhQ2hhcikgeyBpZiAobV9pbXBsKSBt
X2ltcGwgPSBtX2ltcGwtPnNlY3VyZShhQ2hhcik7IH0KIAotICAgIHZvaWQgdHJ1bmNhdGUodW5z
aWduZWQgbGVuKTsKLSAgICB2b2lkIHJlbW92ZSh1bnNpZ25lZCBwb3MsIGludCBsZW4gPSAxKTsK
KyAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCB0cnVuY2F0ZSh1bnNpZ25lZCBsZW4pOworICAg
IEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIHJlbW92ZSh1bnNpZ25lZCBwb3MsIGludCBsZW4gPSAx
KTsKIAotICAgIFN0cmluZyBzdWJzdHJpbmcodW5zaWduZWQgcG9zLCB1bnNpZ25lZCBsZW4gPSBV
SU5UX01BWCkgY29uc3Q7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIFN0cmluZyBzdWJzdHJpbmco
dW5zaWduZWQgcG9zLCB1bnNpZ25lZCBsZW4gPSBVSU5UX01BWCkgY29uc3Q7CiAgICAgU3RyaW5n
IGxlZnQodW5zaWduZWQgbGVuKSBjb25zdCB7IHJldHVybiBzdWJzdHJpbmcoMCwgbGVuKTsgfQog
ICAgIFN0cmluZyByaWdodCh1bnNpZ25lZCBsZW4pIGNvbnN0IHsgcmV0dXJuIHN1YnN0cmluZyhs
ZW5ndGgoKSAtIGxlbiwgbGVuKTsgfQogCiAgICAgLy8gUmV0dXJucyBhIGxvd2VyY2FzZS91cHBl
cmNhc2UgdmVyc2lvbiBvZiB0aGUgc3RyaW5nCi0gICAgU3RyaW5nIGxvd2VyKCkgY29uc3Q7Ci0g
ICAgU3RyaW5nIHVwcGVyKCkgY29uc3Q7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIFN0cmluZyBs
b3dlcigpIGNvbnN0OworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBTdHJpbmcgdXBwZXIoKSBjb25z
dDsKIAotICAgIFN0cmluZyBzdHJpcFdoaXRlU3BhY2UoKSBjb25zdDsKLSAgICBTdHJpbmcgc2lt
cGxpZnlXaGl0ZVNwYWNlKCkgY29uc3Q7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIFN0cmluZyBz
dHJpcFdoaXRlU3BhY2UoKSBjb25zdDsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgU3RyaW5nIHNp
bXBsaWZ5V2hpdGVTcGFjZSgpIGNvbnN0OwogCi0gICAgU3RyaW5nIHJlbW92ZUNoYXJhY3RlcnMo
Q2hhcmFjdGVyTWF0Y2hGdW5jdGlvblB0cikgY29uc3Q7CisgICAgSlNfRVhQT1JURURfU1lNQk9M
IFN0cmluZyByZW1vdmVDaGFyYWN0ZXJzKENoYXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIpIGNvbnN0
OwogCiAgICAgLy8gUmV0dXJuIHRoZSBzdHJpbmcgd2l0aCBjYXNlIGZvbGRlZCBmb3IgY2FzZSBp
bnNlbnNpdGl2ZSBjb21wYXJpc29uLgotICAgIFN0cmluZyBmb2xkQ2FzZSgpIGNvbnN0OworICAg
IEpTX0VYUE9SVEVEX1NZTUJPTCBTdHJpbmcgZm9sZENhc2UoKSBjb25zdDsKIAogICAgIHN0YXRp
YyBTdHJpbmcgbnVtYmVyKHNob3J0KTsKLSAgICBzdGF0aWMgU3RyaW5nIG51bWJlcih1bnNpZ25l
ZCBzaG9ydCk7Ci0gICAgc3RhdGljIFN0cmluZyBudW1iZXIoaW50KTsKLSAgICBzdGF0aWMgU3Ry
aW5nIG51bWJlcih1bnNpZ25lZCk7Ci0gICAgc3RhdGljIFN0cmluZyBudW1iZXIobG9uZyk7Ci0g
ICAgc3RhdGljIFN0cmluZyBudW1iZXIodW5zaWduZWQgbG9uZyk7Ci0gICAgc3RhdGljIFN0cmlu
ZyBudW1iZXIobG9uZyBsb25nKTsKLSAgICBzdGF0aWMgU3RyaW5nIG51bWJlcih1bnNpZ25lZCBs
b25nIGxvbmcpOwotICAgIHN0YXRpYyBTdHJpbmcgbnVtYmVyKGRvdWJsZSk7CisgICAgSlNfRVhQ
T1JURURfU1lNQk9MIHN0YXRpYyBTdHJpbmcgbnVtYmVyKHVuc2lnbmVkIHNob3J0KTsKKyAgICBK
U19FWFBPUlRFRF9TWU1CT0wgc3RhdGljIFN0cmluZyBudW1iZXIoaW50KTsKKyAgICBKU19FWFBP
UlRFRF9TWU1CT0wgc3RhdGljIFN0cmluZyBudW1iZXIodW5zaWduZWQpOworICAgIEpTX0VYUE9S
VEVEX1NZTUJPTCBzdGF0aWMgU3RyaW5nIG51bWJlcihsb25nKTsKKyAgICBKU19FWFBPUlRFRF9T
WU1CT0wgc3RhdGljIFN0cmluZyBudW1iZXIodW5zaWduZWQgbG9uZyk7CisgICAgSlNfRVhQT1JU
RURfU1lNQk9MIHN0YXRpYyBTdHJpbmcgbnVtYmVyKGxvbmcgbG9uZyk7CisgICAgSlNfRVhQT1JU
RURfU1lNQk9MIHN0YXRpYyBTdHJpbmcgbnVtYmVyKHVuc2lnbmVkIGxvbmcgbG9uZyk7CisgICAg
SlNfRVhQT1JURURfU1lNQk9MIHN0YXRpYyBTdHJpbmcgbnVtYmVyKGRvdWJsZSk7CiAgICAgCi0g
ICAgc3RhdGljIFN0cmluZyBmb3JtYXQoY29uc3QgY2hhciAqLCAuLi4pIFdURl9BVFRSSUJVVEVf
UFJJTlRGKDEsIDIpOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0aWMgU3RyaW5nIGZvcm1h
dChjb25zdCBjaGFyICosIC4uLikgV1RGX0FUVFJJQlVURV9QUklOVEYoMSwgMik7CiAKICAgICAv
LyBSZXR1cm5zIGFuIHVuaW5pdGlhbGl6ZWQgc3RyaW5nLiBUaGUgY2hhcmFjdGVycyBuZWVkcyB0
byBiZSB3cml0dGVuCiAgICAgLy8gaW50byB0aGUgYnVmZmVyIHJldHVybmVkIGluIGRhdGEgYmVm
b3JlIHRoZSByZXR1cm5lZCBzdHJpbmcgaXMgdXNlZC4KICAgICAvLyBGYWlsdXJlIHRvIGRvIHRo
aXMgd2lsbCBoYXZlIHVucHJlZGljdGFibGUgcmVzdWx0cy4KICAgICBzdGF0aWMgU3RyaW5nIGNy
ZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoLCBVQ2hhciomIGRhdGEpIHsgcmV0dXJu
IFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBkYXRhKTsgfQogCi0gICAg
dm9pZCBzcGxpdChjb25zdCBTdHJpbmcmIHNlcGFyYXRvciwgVmVjdG9yPFN0cmluZz4mIHJlc3Vs
dCkgY29uc3Q7Ci0gICAgdm9pZCBzcGxpdChjb25zdCBTdHJpbmcmIHNlcGFyYXRvciwgYm9vbCBh
bGxvd0VtcHR5RW50cmllcywgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkgY29uc3Q7Ci0gICAgdm9p
ZCBzcGxpdChVQ2hhciBzZXBhcmF0b3IsIFZlY3RvcjxTdHJpbmc+JiByZXN1bHQpIGNvbnN0Owot
ICAgIHZvaWQgc3BsaXQoVUNoYXIgc2VwYXJhdG9yLCBib29sIGFsbG93RW1wdHlFbnRyaWVzLCBW
ZWN0b3I8U3RyaW5nPiYgcmVzdWx0KSBjb25zdDsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9p
ZCBzcGxpdChjb25zdCBTdHJpbmcmIHNlcGFyYXRvciwgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkg
Y29uc3Q7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIHZvaWQgc3BsaXQoY29uc3QgU3RyaW5nJiBz
ZXBhcmF0b3IsIGJvb2wgYWxsb3dFbXB0eUVudHJpZXMsIFZlY3RvcjxTdHJpbmc+JiByZXN1bHQp
IGNvbnN0OworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIHNwbGl0KFVDaGFyIHNlcGFyYXRv
ciwgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkgY29uc3Q7CisgICAgSlNfRVhQT1JURURfU1lNQk9M
IHZvaWQgc3BsaXQoVUNoYXIgc2VwYXJhdG9yLCBib29sIGFsbG93RW1wdHlFbnRyaWVzLCBWZWN0
b3I8U3RyaW5nPiYgcmVzdWx0KSBjb25zdDsKIAotICAgIGludCB0b0ludFN0cmljdChib29sKiBv
ayA9IDAsIGludCBiYXNlID0gMTApIGNvbnN0OwotICAgIHVuc2lnbmVkIHRvVUludFN0cmljdChi
b29sKiBvayA9IDAsIGludCBiYXNlID0gMTApIGNvbnN0OworICAgIEpTX0VYUE9SVEVEX1NZTUJP
TCBpbnQgdG9JbnRTdHJpY3QoYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKSBjb25zdDsKKyAg
ICBKU19FWFBPUlRFRF9TWU1CT0wgdW5zaWduZWQgdG9VSW50U3RyaWN0KGJvb2wqIG9rID0gMCwg
aW50IGJhc2UgPSAxMCkgY29uc3Q7CiAgICAgaW50NjRfdCB0b0ludDY0U3RyaWN0KGJvb2wqIG9r
ID0gMCwgaW50IGJhc2UgPSAxMCkgY29uc3Q7CiAgICAgdWludDY0X3QgdG9VSW50NjRTdHJpY3Qo
Ym9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKSBjb25zdDsKICAgICBpbnRwdHJfdCB0b0ludFB0
clN0cmljdChib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApIGNvbnN0OwogCi0gICAgaW50IHRv
SW50KGJvb2wqIG9rID0gMCkgY29uc3Q7Ci0gICAgdW5zaWduZWQgdG9VSW50KGJvb2wqIG9rID0g
MCkgY29uc3Q7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIGludCB0b0ludChib29sKiBvayA9IDAp
IGNvbnN0OworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB1bnNpZ25lZCB0b1VJbnQoYm9vbCogb2sg
PSAwKSBjb25zdDsKICAgICBpbnQ2NF90IHRvSW50NjQoYm9vbCogb2sgPSAwKSBjb25zdDsKLSAg
ICB1aW50NjRfdCB0b1VJbnQ2NChib29sKiBvayA9IDApIGNvbnN0OwotICAgIGludHB0cl90IHRv
SW50UHRyKGJvb2wqIG9rID0gMCkgY29uc3Q7Ci0gICAgZG91YmxlIHRvRG91YmxlKGJvb2wqIG9r
ID0gMCkgY29uc3Q7Ci0gICAgZmxvYXQgdG9GbG9hdChib29sKiBvayA9IDApIGNvbnN0OworICAg
IEpTX0VYUE9SVEVEX1NZTUJPTCB1aW50NjRfdCB0b1VJbnQ2NChib29sKiBvayA9IDApIGNvbnN0
OworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBpbnRwdHJfdCB0b0ludFB0cihib29sKiBvayA9IDAp
IGNvbnN0OworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBkb3VibGUgdG9Eb3VibGUoYm9vbCogb2sg
PSAwKSBjb25zdDsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgZmxvYXQgdG9GbG9hdChib29sKiBv
ayA9IDApIGNvbnN0OwogCiAgICAgYm9vbCBwZXJjZW50YWdlKGludCYgcGVyY2VudGFnZSkgY29u
c3Q7CiAKICAgICAvLyBSZXR1cm5zIGEgU3RyaW5nSW1wbCBzdWl0YWJsZSBmb3IgdXNlIG9uIGFu
b3RoZXIgdGhyZWFkLgotICAgIFN0cmluZyBjcm9zc1RocmVhZFN0cmluZygpIGNvbnN0OworICAg
IEpTX0VYUE9SVEVEX1NZTUJPTCBTdHJpbmcgY3Jvc3NUaHJlYWRTdHJpbmcoKSBjb25zdDsKICAg
ICAvLyBNYWtlcyBhIGRlZXAgY29weS4gSGVscGZ1bCBvbmx5IGlmIHlvdSBuZWVkIHRvIHVzZSBh
IFN0cmluZyBvbiBhbm90aGVyIHRocmVhZAogICAgIC8vICh1c2UgY3Jvc3NUaHJlYWRTdHJpbmcg
aWYgdGhlIG1ldGhvZCBjYWxsIGRvZXNuJ3QgbmVlZCB0byBiZSB0aHJlYWRzYWZlKS4KICAgICAv
LyBTaW5jZSB0aGUgdW5kZXJseWluZyBTdHJpbmdJbXBsIG9iamVjdHMgYXJlIGltbXV0YWJsZSwg
dGhlcmUncyBubyBvdGhlciByZWFzb24KICAgICAvLyB0byBldmVyIHByZWZlciBjb3B5KCkgb3Zl
ciBwbGFpbiBvbGQgYXNzaWdubWVudC4KLSAgICBTdHJpbmcgdGhyZWFkc2FmZUNvcHkoKSBjb25z
dDsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgU3RyaW5nIHRocmVhZHNhZmVDb3B5KCkgY29uc3Q7
CiAKICAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuICFtX2ltcGw7IH0KLSAgICBBTFdB
WVNfSU5MSU5FIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX2ltcGwgfHwgIW1faW1w
bC0+bGVuZ3RoKCk7IH0KKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgQUxXQVlTX0lOTElORSBib29s
IGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9pbXBsIHx8ICFtX2ltcGwtPmxlbmd0aCgpOyB9
CiAKLSAgICBTdHJpbmdJbXBsKiBpbXBsKCkgY29uc3QgeyByZXR1cm4gbV9pbXBsLmdldCgpOyB9
CisgICAgSlNfRVhQT1JURURfU1lNQk9MIFN0cmluZ0ltcGwqIGltcGwoKSBjb25zdCB7IHJldHVy
biBtX2ltcGwuZ2V0KCk7IH0KIAogI2lmIFBMQVRGT1JNKENGKQogICAgIFN0cmluZyhDRlN0cmlu
Z1JlZik7CkBAIC0yNzEsOCArMjc0LDggQEAKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oV1gpCi0g
ICAgU3RyaW5nKGNvbnN0IHd4U3RyaW5nJik7Ci0gICAgb3BlcmF0b3Igd3hTdHJpbmcoKSBjb25z
dDsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgU3RyaW5nKGNvbnN0IHd4U3RyaW5nJik7CisgICAg
SlNfRVhQT1JURURfU1lNQk9MIG9wZXJhdG9yIHd4U3RyaW5nKCkgY29uc3Q7CiAjZW5kaWYKIAog
I2lmIFBMQVRGT1JNKEhBSUtVKQpAQCAtMjgwLDIyICsyODMsMzAgQEAKICAgICBvcGVyYXRvciBC
U3RyaW5nKCkgY29uc3Q7CiAjZW5kaWYKIAotICAgIFZlY3RvcjxjaGFyPiBhc2NpaSgpIGNvbnN0
OworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBWZWN0b3I8Y2hhcj4gYXNjaWkoKSBjb25zdDsKIAot
ICAgIENTdHJpbmcgbGF0aW4xKCkgY29uc3Q7Ci0gICAgQ1N0cmluZyB1dGY4KCkgY29uc3Q7Cisg
ICAgSlNfRVhQT1JURURfU1lNQk9MIENTdHJpbmcgbGF0aW4xKCkgY29uc3Q7CisgICAgSlNfRVhQ
T1JURURfU1lNQk9MIENTdHJpbmcgdXRmOCgpIGNvbnN0OwogCi0gICAgc3RhdGljIFN0cmluZyBm
cm9tVVRGOChjb25zdCBjaGFyKiwgc2l6ZV90KTsKLSAgICBzdGF0aWMgU3RyaW5nIGZyb21VVEY4
KGNvbnN0IGNoYXIqKTsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgc3RhdGljIFN0cmluZyBmcm9t
VVRGOChjb25zdCBjaGFyKiwgc2l6ZV90KTsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgc3RhdGlj
IFN0cmluZyBmcm9tVVRGOChjb25zdCBjaGFyKik7CiAKICAgICAvLyBUcmllcyB0byBjb252ZXJ0
IHRoZSBwYXNzZWQgaW4gc3RyaW5nIHRvIFVURi04LCBidXQgd2lsbCBmYWxsIGJhY2sgdG8gTGF0
aW4tMSBpZiB0aGUgc3RyaW5nIGlzIG5vdCB2YWxpZCBVVEYtOC4KLSAgICBzdGF0aWMgU3RyaW5n
IGZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNrKGNvbnN0IGNoYXIqLCBzaXplX3QpOworICAgIEpT
X0VYUE9SVEVEX1NZTUJPTCBzdGF0aWMgU3RyaW5nIGZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNr
KGNvbnN0IGNoYXIqLCBzaXplX3QpOwogICAgIAogICAgIC8vIERldGVybWluZXMgdGhlIHdyaXRp
bmcgZGlyZWN0aW9uIHVzaW5nIHRoZSBVbmljb2RlIEJpZGkgQWxnb3JpdGhtIHJ1bGVzIFAyIGFu
ZCBQMy4KICAgICBXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbiBkZWZhdWx0V3JpdGluZ0RpcmVjdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZGVmYXVsdFdyaXRpbmdEaXJlY3Rp
b24oKSA6IFdURjo6VW5pY29kZTo6TGVmdFRvUmlnaHQ7IH0KIAogICAgIGJvb2wgY29udGFpbnNP
bmx5QVNDSUkoKSBjb25zdCB7IHJldHVybiBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoY2hhcmFjdGVy
cygpLCBsZW5ndGgoKSk7IH0KIAorICAgIC8vIG9wZXJhdG9yPSBuZWVkcyB0byBiZSBleHBsaWNp
dGx5IGRlZmluZWQgdG8gc3BlY2lmeSBkbGwgbGlua2FnZQorICAgIEpTX0VYUE9SVEVEX1NZTUJP
TCBpbmxpbmUgU3RyaW5nJiBvcGVyYXRvcj0oY29uc3QgU3RyaW5nJiBhKSAKKyAgICB7CisgICAg
ICAgIGlmICh0aGlzICE9ICZhKQorICAgICAgICAgICAgbV9pbXBsID0gYS5tX2ltcGw7CisgICAg
ICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgUmVmUHRyPFN0cmluZ0lt
cGw+IG1faW1wbDsKIH07CkBAIC0zMDUsOSArMzE2LDkgQEAKIFFEYXRhU3RyZWFtJiBvcGVyYXRv
cj4+KFFEYXRhU3RyZWFtJiBzdHJlYW0sIFN0cmluZyYgc3RyKTsKICNlbmRpZgogCi1TdHJpbmcg
b3BlcmF0b3IrKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOwotU3RyaW5nIG9wZXJhdG9y
Kyhjb25zdCBTdHJpbmcmLCBjb25zdCBjaGFyKik7Ci1TdHJpbmcgb3BlcmF0b3IrKGNvbnN0IGNo
YXIqLCBjb25zdCBTdHJpbmcmKTsKK0pTX0VYUE9SVEVEX1NZTUJPTCBTdHJpbmcgb3BlcmF0b3Ir
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOworSlNfRVhQT1JURURfU1lNQk9MIFN0cmlu
ZyBvcGVyYXRvcisoY29uc3QgU3RyaW5nJiwgY29uc3QgY2hhciopOworSlNfRVhQT1JURURfU1lN
Qk9MIFN0cmluZyBvcGVyYXRvcisoY29uc3QgY2hhciosIGNvbnN0IFN0cmluZyYpOwogCiBpbmxp
bmUgU3RyaW5nJiBvcGVyYXRvcis9KFN0cmluZyYgYSwgY29uc3QgU3RyaW5nJiBiKSB7IGEuYXBw
ZW5kKGIpOyByZXR1cm4gYTsgfQogCkBAIC0zNTEsNyArMzYyLDcgQEAKICAgICByZXR1cm4gIShv
cmVkICYgMHhGRjgwKTsKIH0KIAotaW50IGNvZGVQb2ludENvbXBhcmUoY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJik7CitKU19FWFBPUlRFRF9TWU1CT0wgaW50IGNvZGVQb2ludENvbXBhcmUo
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7CiAKIGlubGluZSBpbnQgZmluZChjb25zdCBV
Q2hhciogY2hhcmFjdGVycywgc2l6ZV90IGxlbmd0aCwgVUNoYXIgY2hhcmFjdGVyLCBpbnQgc3Rh
cnRQb3NpdGlvbikKIHsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgJKHJl
dmlzaW9uIDYxMzI3KQorKysgSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xNDUsMTEgKzE0NSwxMSBAQAogICAgIH0KIAogcHVibGljOgotICAg
IH5TdHJpbmdJbXBsKCk7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIH5TdHJpbmdJbXBsKCk7CiAK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBjcmVhdGUoY29uc3QgVUNoYXIqLCB1
bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGNyZWF0
ZShjb25zdCBjaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxT
dHJpbmdJbXBsPiBjcmVhdGUoY29uc3QgY2hhciopOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBz
dGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBjcmVhdGUoY29uc3QgVUNoYXIqLCB1bnNpZ25l
ZCBsZW5ndGgpOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0aWMgUGFzc1JlZlB0cjxTdHJp
bmdJbXBsPiBjcmVhdGUoY29uc3QgY2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgSlNfRVhQ
T1JURURfU1lNQk9MIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGNyZWF0ZShjb25zdCBj
aGFyKik7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gY3JlYXRlKGNvbnN0IFVD
aGFyKiwgdW5zaWduZWQgbGVuZ3RoLCBQYXNzUmVmUHRyPFNoYXJlZFVDaGFyPiBzaGFyZWRCdWZm
ZXIpOwogICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gY3Jl
YXRlKFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVk
IGxlbmd0aCkKICAgICB7CkBAIC0xNjMsNyArMTYzLDcgQEAKICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBTdHJpbmdJbXBsKHJlcC0+bV9kYXRhICsgb2Zmc2V0LCBsZW5ndGgsIG93bmVyUmVw
KSk7CiAgICAgfQogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gY3JlYXRlVW5p
bml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgsIFVDaGFyKiYgZGF0YSk7CisgICAgSlNfRVhQT1JU
RURfU1lNQk9MIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGNyZWF0ZVVuaW5pdGlhbGl6
ZWQodW5zaWduZWQgbGVuZ3RoLCBVQ2hhciomIGRhdGEpOwogICAgIHN0YXRpYyBBTFdBWVNfSU5M
SU5FIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25l
ZCBsZW5ndGgsIFVDaGFyKiYgb3V0cHV0KQogICAgIHsKICAgICAgICAgaWYgKCFsZW5ndGgpIHsK
QEAgLTE5NywxMCArMTk3LDEwIEBACiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGVtcHR5KCk7
CiAgICAgfQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkb3B0KFN0cmluZ0J1
ZmZlciYpOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJ
bXBsPiBhZG9wdChTdHJpbmdCdWZmZXImKTsKIAogICAgIFNoYXJlZFVDaGFyKiBzaGFyZWRCdWZm
ZXIoKTsKLSAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fZGF0
YTsgfQorICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBjb25zdCBVQ2hhciogY2hhcmFjdGVycygpIGNv
bnN0IHsgcmV0dXJuIG1fZGF0YTsgfQogCiAgICAgc2l6ZV90IGNvc3QoKQogICAgIHsKQEAgLTI0
Niw3ICsyNDYsNyBAQAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBkZXJlZigpIHsgbV9yZWZDb3Vu
dEFuZEZsYWdzIC09IHNfcmVmQ291bnRJbmNyZW1lbnQ7IGlmICghKG1fcmVmQ291bnRBbmRGbGFn
cyAmIChzX3JlZkNvdW50TWFzayB8IHNfcmVmQ291bnRGbGFnU3RhdGljKSkpIGRlbGV0ZSB0aGlz
OyB9CiAgICAgQUxXQVlTX0lOTElORSBib29sIGhhc09uZVJlZigpIGNvbnN0IHsgcmV0dXJuICht
X3JlZkNvdW50QW5kRmxhZ3MgJiAoc19yZWZDb3VudE1hc2sgfCBzX3JlZkNvdW50RmxhZ1N0YXRp
YykpID09IHNfcmVmQ291bnRJbmNyZW1lbnQ7IH0KIAotICAgIHN0YXRpYyBTdHJpbmdJbXBsKiBl
bXB0eSgpOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0aWMgU3RyaW5nSW1wbCogZW1wdHko
KTsKIAogICAgIHN0YXRpYyB2b2lkIGNvcHlDaGFycyhVQ2hhciogZGVzdGluYXRpb24sIGNvbnN0
IFVDaGFyKiBzb3VyY2UsIHVuc2lnbmVkIG51bUNoYXJhY3RlcnMpCiAgICAgewpAQCAtMjY0LDEy
ICsyNjQsMTIgQEAKICAgICAvLyBTaW5jZSBTdHJpbmdJbXBsIG9iamVjdHMgYXJlIGltbXV0YWJs
ZSwgdGhlcmUncyBubyBvdGhlciByZWFzb24gdG8gbWFrZSBhIGNvcHkuCiAgICAgUGFzc1JlZlB0
cjxTdHJpbmdJbXBsPiB0aHJlYWRzYWZlQ29weSgpIGNvbnN0OwogCi0gICAgUGFzc1JlZlB0cjxT
dHJpbmdJbXBsPiBzdWJzdHJpbmcodW5zaWduZWQgcG9zLCB1bnNpZ25lZCBsZW4gPSBVSU5UX01B
WCk7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gc3Vic3Ry
aW5nKHVuc2lnbmVkIHBvcywgdW5zaWduZWQgbGVuID0gVUlOVF9NQVgpOwogCiAgICAgVUNoYXIg
b3BlcmF0b3JbXSh1bnNpZ25lZCBpKSB7IEFTU0VSVChpIDwgbV9sZW5ndGgpOyByZXR1cm4gbV9k
YXRhW2ldOyB9CiAgICAgVUNoYXIzMiBjaGFyYWN0ZXJTdGFydGluZ0F0KHVuc2lnbmVkKTsKIAot
ICAgIGJvb2wgY29udGFpbnNPbmx5V2hpdGVzcGFjZSgpOworICAgIEpTX0VYUE9SVEVEX1NZTUJP
TCBib29sIGNvbnRhaW5zT25seVdoaXRlc3BhY2UoKTsKIAogICAgIGludCB0b0ludFN0cmljdChi
b29sKiBvayA9IDAsIGludCBiYXNlID0gMTApOwogICAgIHVuc2lnbmVkIHRvVUludFN0cmljdChi
b29sKiBvayA9IDAsIGludCBiYXNlID0gMTApOwpAQCAtMjc3LDcgKzI3Nyw3IEBACiAgICAgdWlu
dDY0X3QgdG9VSW50NjRTdHJpY3QoYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKTsKICAgICBp
bnRwdHJfdCB0b0ludFB0clN0cmljdChib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApOwogCi0g
ICAgaW50IHRvSW50KGJvb2wqIG9rID0gMCk7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQor
ICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBpbnQgdG9JbnQoYm9vbCogb2sgPSAwKTsgLy8gaWdub3Jl
cyB0cmFpbGluZyBnYXJiYWdlCiAgICAgdW5zaWduZWQgdG9VSW50KGJvb2wqIG9rID0gMCk7IC8v
IGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQogICAgIGludDY0X3QgdG9JbnQ2NChib29sKiBvayA9
IDApOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKICAgICB1aW50NjRfdCB0b1VJbnQ2NChi
b29sKiBvayA9IDApOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKQEAgLTI4NiwzNSArMjg2
LDM1IEBACiAgICAgZG91YmxlIHRvRG91YmxlKGJvb2wqIG9rID0gMCk7CiAgICAgZmxvYXQgdG9G
bG9hdChib29sKiBvayA9IDApOwogCi0gICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBsb3dlcigp
OwotICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gdXBwZXIoKTsKLSAgICBQYXNzUmVmUHRyPFN0
cmluZ0ltcGw+IHNlY3VyZShVQ2hhciBhQ2hhcik7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIFBh
c3NSZWZQdHI8U3RyaW5nSW1wbD4gbG93ZXIoKTsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgUGFz
c1JlZlB0cjxTdHJpbmdJbXBsPiB1cHBlcigpOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBQYXNz
UmVmUHRyPFN0cmluZ0ltcGw+IHNlY3VyZShVQ2hhciBhQ2hhcik7CiAgICAgUGFzc1JlZlB0cjxT
dHJpbmdJbXBsPiBmb2xkQ2FzZSgpOwogCiAgICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBzdHJp
cFdoaXRlU3BhY2UoKTsKLSAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHNpbXBsaWZ5V2hpdGVT
cGFjZSgpOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHNp
bXBsaWZ5V2hpdGVTcGFjZSgpOwogCiAgICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZW1vdmVD
aGFyYWN0ZXJzKENoYXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIpOwogCi0gICAgaW50IGZpbmQoY29u
c3QgY2hhciosIGludCBpbmRleCA9IDAsIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IHRydWUpOwotICAg
IGludCBmaW5kKFVDaGFyLCBpbnQgaW5kZXggPSAwKTsKLSAgICBpbnQgZmluZChDaGFyYWN0ZXJN
YXRjaEZ1bmN0aW9uUHRyLCBpbnQgaW5kZXggPSAwKTsKLSAgICBpbnQgZmluZChTdHJpbmdJbXBs
KiwgaW50IGluZGV4LCBib29sIGNhc2VTZW5zaXRpdmUgPSB0cnVlKTsKKyAgICBKU19FWFBPUlRF
RF9TWU1CT0wgaW50IGZpbmQoY29uc3QgY2hhciosIGludCBpbmRleCA9IDAsIGJvb2wgY2FzZVNl
bnNpdGl2ZSA9IHRydWUpOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBpbnQgZmluZChVQ2hhciwg
aW50IGluZGV4ID0gMCk7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIGludCBmaW5kKENoYXJhY3Rl
ck1hdGNoRnVuY3Rpb25QdHIsIGludCBpbmRleCA9IDApOworICAgIEpTX0VYUE9SVEVEX1NZTUJP
TCBpbnQgZmluZChTdHJpbmdJbXBsKiwgaW50IGluZGV4LCBib29sIGNhc2VTZW5zaXRpdmUgPSB0
cnVlKTsKIAotICAgIGludCByZXZlcnNlRmluZChVQ2hhciwgaW50IGluZGV4KTsKLSAgICBpbnQg
cmV2ZXJzZUZpbmQoU3RyaW5nSW1wbCosIGludCBpbmRleCwgYm9vbCBjYXNlU2Vuc2l0aXZlID0g
dHJ1ZSk7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIGludCByZXZlcnNlRmluZChVQ2hhciwgaW50
IGluZGV4KTsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgaW50IHJldmVyc2VGaW5kKFN0cmluZ0lt
cGwqLCBpbnQgaW5kZXgsIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IHRydWUpOwogICAgIAogICAgIGJv
b2wgc3RhcnRzV2l0aChTdHJpbmdJbXBsKiBzdHIsIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IHRydWUp
IHsgcmV0dXJuIHJldmVyc2VGaW5kKHN0ciwgMCwgY2FzZVNlbnNpdGl2ZSkgPT0gMDsgfQotICAg
IGJvb2wgZW5kc1dpdGgoU3RyaW5nSW1wbCosIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IHRydWUpOwor
ICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBib29sIGVuZHNXaXRoKFN0cmluZ0ltcGwqLCBib29sIGNh
c2VTZW5zaXRpdmUgPSB0cnVlKTsKIAotICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwbGFj
ZShVQ2hhciwgVUNoYXIpOwotICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwbGFjZShVQ2hh
ciwgU3RyaW5nSW1wbCopOwotICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwbGFjZShTdHJp
bmdJbXBsKiwgU3RyaW5nSW1wbCopOwotICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwbGFj
ZSh1bnNpZ25lZCBpbmRleCwgdW5zaWduZWQgbGVuLCBTdHJpbmdJbXBsKik7CisgICAgSlNfRVhQ
T1JURURfU1lNQk9MIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwbGFjZShVQ2hhciwgVUNoYXIp
OworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJlcGxhY2Uo
VUNoYXIsIFN0cmluZ0ltcGwqKTsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgUGFzc1JlZlB0cjxT
dHJpbmdJbXBsPiByZXBsYWNlKFN0cmluZ0ltcGwqLCBTdHJpbmdJbXBsKik7CisgICAgSlNfRVhQ
T1JURURfU1lNQk9MIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwbGFjZSh1bnNpZ25lZCBpbmRl
eCwgdW5zaWduZWQgbGVuLCBTdHJpbmdJbXBsKik7CiAKICAgICBWZWN0b3I8Y2hhcj4gYXNjaWko
KTsKIAotICAgIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIGRlZmF1bHRXcml0aW5nRGlyZWN0aW9u
KCk7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIGRlZmF1
bHRXcml0aW5nRGlyZWN0aW9uKCk7CiAKICNpZiBQTEFURk9STShDRikKICAgICBDRlN0cmluZ1Jl
ZiBjcmVhdGVDRlN0cmluZygpOwpAQCAtMzI3LDcgKzMyNyw3IEBACiAgICAgLy8gVGhpcyBudW1i
ZXIgbXVzdCBiZSBhdCBsZWFzdCAyIHRvIGF2b2lkIHNoYXJpbmcgZW1wdHksIG51bGwgYXMgd2Vs
bCBhcyAxIGNoYXJhY3RlciBzdHJpbmdzIGZyb20gU21hbGxTdHJpbmdzLgogICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBzX2NvcHlDaGFyc0lubGluZUN1dE9mZiA9IDIwOwogCi0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gY3JlYXRlU3RyaXBwaW5nTnVsbENoYXJhY3RlcnNTbG93
Q2FzZShjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgSlNfRVhQT1JURURfU1lN
Qk9MIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGNyZWF0ZVN0cmlwcGluZ051bGxDaGFy
YWN0ZXJzU2xvd0Nhc2UoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIAogICAg
IEJ1ZmZlck93bmVyc2hpcCBidWZmZXJPd25lcnNoaXAoKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxCdWZmZXJPd25lcnNoaXA+KG1fcmVmQ291bnRBbmRGbGFncyAmIHNfcmVmQ291bnRNYXNr
QnVmZmVyT3duZXJzaGlwKTsgfQogICAgIGJvb2wgaXNTdGF0aWMoKSBjb25zdCB7IHJldHVybiBt
X3JlZkNvdW50QW5kRmxhZ3MgJiBzX3JlZkNvdW50RmxhZ1N0YXRpYzsgfQpAQCAtMzQwLDE3ICsz
NDAsMTcgQEAKICAgICBtdXRhYmxlIHVuc2lnbmVkIG1faGFzaDsKIH07CiAKLWJvb2wgZXF1YWwo
Y29uc3QgU3RyaW5nSW1wbCosIGNvbnN0IFN0cmluZ0ltcGwqKTsKLWJvb2wgZXF1YWwoY29uc3Qg
U3RyaW5nSW1wbCosIGNvbnN0IGNoYXIqKTsKK0pTX0VYUE9SVEVEX1NZTUJPTCBib29sIGVxdWFs
KGNvbnN0IFN0cmluZ0ltcGwqLCBjb25zdCBTdHJpbmdJbXBsKik7CitKU19FWFBPUlRFRF9TWU1C
T0wgYm9vbCBlcXVhbChjb25zdCBTdHJpbmdJbXBsKiwgY29uc3QgY2hhciopOwogaW5saW5lIGJv
b2wgZXF1YWwoY29uc3QgY2hhciogYSwgU3RyaW5nSW1wbCogYikgeyByZXR1cm4gZXF1YWwoYiwg
YSk7IH0KIAotYm9vbCBlcXVhbElnbm9yaW5nQ2FzZShTdHJpbmdJbXBsKiwgU3RyaW5nSW1wbCop
OwotYm9vbCBlcXVhbElnbm9yaW5nQ2FzZShTdHJpbmdJbXBsKiwgY29uc3QgY2hhciopOworSlNf
RVhQT1JURURfU1lNQk9MIGJvb2wgZXF1YWxJZ25vcmluZ0Nhc2UoU3RyaW5nSW1wbCosIFN0cmlu
Z0ltcGwqKTsKK0pTX0VYUE9SVEVEX1NZTUJPTCBib29sIGVxdWFsSWdub3JpbmdDYXNlKFN0cmlu
Z0ltcGwqLCBjb25zdCBjaGFyKik7CiBpbmxpbmUgYm9vbCBlcXVhbElnbm9yaW5nQ2FzZShjb25z
dCBjaGFyKiBhLCBTdHJpbmdJbXBsKiBiKSB7IHJldHVybiBlcXVhbElnbm9yaW5nQ2FzZShiLCBh
KTsgfQotYm9vbCBlcXVhbElnbm9yaW5nQ2FzZShjb25zdCBVQ2hhciogYSwgY29uc3QgY2hhciog
YiwgdW5zaWduZWQgbGVuZ3RoKTsKK0pTX0VYUE9SVEVEX1NZTUJPTCBib29sIGVxdWFsSWdub3Jp
bmdDYXNlKGNvbnN0IFVDaGFyKiBhLCBjb25zdCBjaGFyKiBiLCB1bnNpZ25lZCBsZW5ndGgpOwog
aW5saW5lIGJvb2wgZXF1YWxJZ25vcmluZ0Nhc2UoY29uc3QgY2hhciogYSwgY29uc3QgVUNoYXIq
IGIsIHVuc2lnbmVkIGxlbmd0aCkgeyByZXR1cm4gZXF1YWxJZ25vcmluZ0Nhc2UoYiwgYSwgbGVu
Z3RoKTsgfQogCi1ib29sIGVxdWFsSWdub3JpbmdOdWxsaXR5KFN0cmluZ0ltcGwqLCBTdHJpbmdJ
bXBsKik7CitKU19FWFBPUlRFRF9TWU1CT0wgYm9vbCBlcXVhbElnbm9yaW5nTnVsbGl0eShTdHJp
bmdJbXBsKiwgU3RyaW5nSW1wbCopOwogCiBpbnQgY29kZVBvaW50Q29tcGFyZShjb25zdCBTdHJp
bmdJbXBsKiwgY29uc3QgU3RyaW5nSW1wbCopOwogCkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYv
Qnl0ZUFycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL0J5dGVBcnJheS5o
CShyZXZpc2lvbiA2MTMyNykKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9CeXRlQXJyYXkuaAkod29y
a2luZyBjb3B5KQpAQCAtNzgsNyArNzgsNyBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAK
LSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBjcmVhdGUoc2l6ZV90IHNpemUp
OworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgc3RhdGljIFBhc3NSZWZQdHI8Qnl0ZUFycmF5
PiBjcmVhdGUoc2l6ZV90IHNpemUpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgQnl0ZUFycmF5
KHNpemVfdCBzaXplKQpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmcuaAkocmV2aXNpb24gNjEzMjcp
CisrKyBKYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTg0
LDI2ICs4NCwyNiBAQAogLy8gVGhpcyBmdW5jdGlvbiBtdXN0IGJlIGNhbGxlZCBmcm9tIHRoZSBt
YWluIHRocmVhZC4gSXQgaXMgc2FmZSB0byBjYWxsIGl0IHJlcGVhdGVkbHkuCiAvLyBEYXJ3aW4g
aXMgYW4gZXhjZXB0aW9uIHRvIHRoaXMgcnVsZTogaXQgaXMgT0sgdG8gY2FsbCBpdCBmcm9tIGFu
eSB0aHJlYWQsIHRoZSBvbmx5IAogLy8gcmVxdWlyZW1lbnQgaXMgdGhhdCB0aGUgY2FsbHMgYXJl
IG5vdCByZWVudHJhbnQuCi12b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKTsKK0pTX0VYUE9SVEVE
X1NZTUJPTCB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKTsKIAogLy8gUmV0dXJucyAwIGlmIHRo
cmVhZCBjcmVhdGlvbiBmYWlsZWQuCiAvLyBUaGUgdGhyZWFkIG5hbWUgbXVzdCBiZSBhIGxpdGVy
YWwgc2luY2Ugb24gc29tZSBwbGF0Zm9ybXMgaXQncyBwYXNzZWQgaW4gdG8gdGhlIHRocmVhZC4K
LVRocmVhZElkZW50aWZpZXIgY3JlYXRlVGhyZWFkKFRocmVhZEZ1bmN0aW9uLCB2b2lkKiwgY29u
c3QgY2hhciogdGhyZWFkTmFtZSk7CitKU19FWFBPUlRFRF9TWU1CT0wgVGhyZWFkSWRlbnRpZmll
ciBjcmVhdGVUaHJlYWQoVGhyZWFkRnVuY3Rpb24sIHZvaWQqLCBjb25zdCBjaGFyKiB0aHJlYWRO
YW1lKTsKIAogLy8gSW50ZXJuYWwgcGxhdGZvcm0tc3BlY2lmaWMgY3JlYXRlVGhyZWFkIGltcGxl
bWVudGF0aW9uLgotVGhyZWFkSWRlbnRpZmllciBjcmVhdGVUaHJlYWRJbnRlcm5hbChUaHJlYWRG
dW5jdGlvbiwgdm9pZCosIGNvbnN0IGNoYXIqIHRocmVhZE5hbWUpOworSlNfRVhQT1JURURfU1lN
Qk9MIFRocmVhZElkZW50aWZpZXIgY3JlYXRlVGhyZWFkSW50ZXJuYWwoVGhyZWFkRnVuY3Rpb24s
IHZvaWQqLCBjb25zdCBjaGFyKiB0aHJlYWROYW1lKTsKIAogLy8gQ2FsbGVkIGluIHRoZSB0aHJl
YWQgZHVyaW5nIGluaXRpYWxpemF0aW9uLgogLy8gSGVscGZ1bCBmb3IgcGxhdGZvcm1zIHdoZXJl
IHRoZSB0aHJlYWQgbmFtZSBtdXN0IGJlIHNldCBmcm9tIHdpdGhpbiB0aGUgdGhyZWFkLgogdm9p
ZCBpbml0aWFsaXplQ3VycmVudFRocmVhZEludGVybmFsKGNvbnN0IGNoYXIqIHRocmVhZE5hbWUp
OwogCi1UaHJlYWRJZGVudGlmaWVyIGN1cnJlbnRUaHJlYWQoKTsKLWludCB3YWl0Rm9yVGhyZWFk
Q29tcGxldGlvbihUaHJlYWRJZGVudGlmaWVyLCB2b2lkKiopOwotdm9pZCBkZXRhY2hUaHJlYWQo
VGhyZWFkSWRlbnRpZmllcik7CitKU19FWFBPUlRFRF9TWU1CT0wgVGhyZWFkSWRlbnRpZmllciBj
dXJyZW50VGhyZWFkKCk7CitKU19FWFBPUlRFRF9TWU1CT0wgaW50IHdhaXRGb3JUaHJlYWRDb21w
bGV0aW9uKFRocmVhZElkZW50aWZpZXIsIHZvaWQqKik7CitKU19FWFBPUlRFRF9TWU1CT0wgdm9p
ZCBkZXRhY2hUaHJlYWQoVGhyZWFkSWRlbnRpZmllcik7CiAKIAotdm9pZCBsb2NrQXRvbWljYWxs
eUluaXRpYWxpemVkU3RhdGljTXV0ZXgoKTsKLXZvaWQgdW5sb2NrQXRvbWljYWxseUluaXRpYWxp
emVkU3RhdGljTXV0ZXgoKTsKK0pTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIGxvY2tBdG9taWNhbGx5
SW5pdGlhbGl6ZWRTdGF0aWNNdXRleCgpOworSlNfRVhQT1JURURfU1lNQk9MIHZvaWQgdW5sb2Nr
QXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljTXV0ZXgoKTsKIAogfSAvLyBuYW1lc3BhY2UgV1RG
CiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9NYWluVGhyZWFkLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SmF2YVNjcmlwdENvcmUvd3RmL01haW5UaHJlYWQuaAkocmV2aXNpb24gNjEzMjcpCisrKyBKYXZh
U2NyaXB0Q29yZS93dGYvTWFpblRocmVhZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxNSArMzgs
MTUgQEAKIHR5cGVkZWYgdm9pZCBNYWluVGhyZWFkRnVuY3Rpb24odm9pZCopOwogCiAvLyBNdXN0
IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4KLXZvaWQgaW5pdGlhbGl6ZU1haW5UaHJl
YWQoKTsKK0pTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIGluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAK
LXZvaWQgY2FsbE9uTWFpblRocmVhZChNYWluVGhyZWFkRnVuY3Rpb24qLCB2b2lkKiBjb250ZXh0
KTsKK0pTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIGNhbGxPbk1haW5UaHJlYWQoTWFpblRocmVhZEZ1
bmN0aW9uKiwgdm9pZCogY29udGV4dCk7CiB2b2lkIGNhbGxPbk1haW5UaHJlYWRBbmRXYWl0KE1h
aW5UaHJlYWRGdW5jdGlvbiosIHZvaWQqIGNvbnRleHQpOwogdm9pZCBjYW5jZWxDYWxsT25NYWlu
VGhyZWFkKE1haW5UaHJlYWRGdW5jdGlvbiosIHZvaWQqIGNvbnRleHQpOwogCi12b2lkIHNldE1h
aW5UaHJlYWRDYWxsYmFja3NQYXVzZWQoYm9vbCBwYXVzZWQpOworSlNfRVhQT1JURURfU1lNQk9M
IHZvaWQgc2V0TWFpblRocmVhZENhbGxiYWNrc1BhdXNlZChib29sIHBhdXNlZCk7CiAKLWJvb2wg
aXNNYWluVGhyZWFkKCk7CitKU19FWFBPUlRFRF9TWU1CT0wgYm9vbCBpc01haW5UaHJlYWQoKTsK
IAogLy8gTk9URTogdGhlc2UgZnVuY3Rpb25zIGFyZSBpbnRlcm5hbCB0byB0aGUgY2FsbE9uTWFp
blRocmVhZCBpbXBsZW1lbnRhdGlvbi4KIHZvaWQgaW5pdGlhbGl6ZU1haW5UaHJlYWRQbGF0Zm9y
bSgpOwpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL0Zhc3RNYWxsb2MuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBKYXZhU2NyaXB0Q29yZS93dGYvRmFzdE1hbGxvYy5oCShyZXZpc2lvbiA2MTMyNykKKysrIEph
dmFTY3JpcHRDb3JlL3d0Zi9GYXN0TWFsbG9jLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDE1MyAr
MjgsMTUzIEBACiAKIG5hbWVzcGFjZSBXVEYgewogCi0gICAgLy8gVGhlc2UgZnVuY3Rpb25zIGNh
bGwgQ1JBU0goKSBpZiBhbiBhbGxvY2F0aW9uIGZhaWxzLgotICAgIHZvaWQqIGZhc3RNYWxsb2Mo
c2l6ZV90KTsKLSAgICB2b2lkKiBmYXN0WmVyb2VkTWFsbG9jKHNpemVfdCk7Ci0gICAgdm9pZCog
ZmFzdENhbGxvYyhzaXplX3QgbnVtRWxlbWVudHMsIHNpemVfdCBlbGVtZW50U2l6ZSk7Ci0gICAg
dm9pZCogZmFzdFJlYWxsb2Modm9pZCosIHNpemVfdCk7Ci0gICAgY2hhciogZmFzdFN0ckR1cChj
b25zdCBjaGFyKik7Ci0gICAgc2l6ZV90IGZhc3RNYWxsb2NTaXplKGNvbnN0IHZvaWQqKTsKKy8v
IFRoZXNlIGZ1bmN0aW9ucyBjYWxsIENSQVNIKCkgaWYgYW4gYWxsb2NhdGlvbiBmYWlscy4KK0pT
X0VYUE9SVEVEX1NZTUJPTCB2b2lkKiBmYXN0TWFsbG9jKHNpemVfdCk7CitKU19FWFBPUlRFRF9T
WU1CT0wgdm9pZCogZmFzdFplcm9lZE1hbGxvYyhzaXplX3QpOworSlNfRVhQT1JURURfU1lNQk9M
IHZvaWQqIGZhc3RDYWxsb2Moc2l6ZV90IG51bUVsZW1lbnRzLCBzaXplX3QgZWxlbWVudFNpemUp
OworSlNfRVhQT1JURURfU1lNQk9MIHZvaWQqIGZhc3RSZWFsbG9jKHZvaWQqLCBzaXplX3QpOwor
SlNfRVhQT1JURURfU1lNQk9MIGNoYXIqIGZhc3RTdHJEdXAoY29uc3QgY2hhciopOworSlNfRVhQ
T1JURURfU1lNQk9MIHNpemVfdCBmYXN0TWFsbG9jU2l6ZShjb25zdCB2b2lkKik7CiAKLSAgICBz
dHJ1Y3QgVHJ5TWFsbG9jUmV0dXJuVmFsdWUgewotICAgICAgICBUcnlNYWxsb2NSZXR1cm5WYWx1
ZSh2b2lkKiBkYXRhKQotICAgICAgICAgICAgOiBtX2RhdGEoZGF0YSkKLSAgICAgICAgewotICAg
ICAgICB9Ci0gICAgICAgIFRyeU1hbGxvY1JldHVyblZhbHVlKGNvbnN0IFRyeU1hbGxvY1JldHVy
blZhbHVlJiBzb3VyY2UpCi0gICAgICAgICAgICA6IG1fZGF0YShzb3VyY2UubV9kYXRhKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBzb3VyY2UubV9kYXRhID0gMDsKLSAgICAgICAgfQotICAgICAg
ICB+VHJ5TWFsbG9jUmV0dXJuVmFsdWUoKSB7IEFTU0VSVCghbV9kYXRhKTsgfQotICAgICAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gYm9vbCBnZXRWYWx1ZShUJiBkYXRhKSBXQVJOX1VOVVNFRF9S
RVRVUk47Ci0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBvcGVyYXRvciBQb3NzaWJseU51
bGw8VD4oKQotICAgICAgICB7IAotICAgICAgICAgICAgVCB2YWx1ZTsgCi0gICAgICAgICAgICBn
ZXRWYWx1ZSh2YWx1ZSk7IAotICAgICAgICAgICAgcmV0dXJuIFBvc3NpYmx5TnVsbDxUPih2YWx1
ZSk7Ci0gICAgICAgIH0gCi0gICAgcHJpdmF0ZToKLSAgICAgICAgbXV0YWJsZSB2b2lkKiBtX2Rh
dGE7Ci0gICAgfTsKLSAgICAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gYm9vbCBUcnlNYWxs
b2NSZXR1cm5WYWx1ZTo6Z2V0VmFsdWUoVCYgZGF0YSkKK3N0cnVjdCBUcnlNYWxsb2NSZXR1cm5W
YWx1ZSB7CisgICAgVHJ5TWFsbG9jUmV0dXJuVmFsdWUodm9pZCogZGF0YSkKKyAgICAgICAgOiBt
X2RhdGEoZGF0YSkKICAgICB7Ci0gICAgICAgIHVuaW9uIHUgeyB2b2lkKiBkYXRhOyBUIHRhcmdl
dDsgfSByZXM7Ci0gICAgICAgIHJlcy5kYXRhID0gbV9kYXRhOwotICAgICAgICBkYXRhID0gcmVz
LnRhcmdldDsKLSAgICAgICAgYm9vbCByZXR1cm5WYWx1ZSA9ICEhbV9kYXRhOwotICAgICAgICBt
X2RhdGEgPSAwOwotICAgICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiAgICAgfQorICAgIFRyeU1h
bGxvY1JldHVyblZhbHVlKGNvbnN0IFRyeU1hbGxvY1JldHVyblZhbHVlJiBzb3VyY2UpCisgICAg
ICAgIDogbV9kYXRhKHNvdXJjZS5tX2RhdGEpCisgICAgeworICAgICAgICBzb3VyY2UubV9kYXRh
ID0gMDsKKyAgICB9CisgICAgflRyeU1hbGxvY1JldHVyblZhbHVlKCkgeyBBU1NFUlQoIW1fZGF0
YSk7IH0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gYm9vbCBnZXRWYWx1ZShUJiBkYXRhKSBX
QVJOX1VOVVNFRF9SRVRVUk47CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IG9wZXJhdG9yIFBv
c3NpYmx5TnVsbDxUPigpCisgICAgeyAKKyAgICAgICAgVCB2YWx1ZTsgCisgICAgICAgIGdldFZh
bHVlKHZhbHVlKTsgCisgICAgICAgIHJldHVybiBQb3NzaWJseU51bGw8VD4odmFsdWUpOworICAg
IH0gCitwcml2YXRlOgorICAgIG11dGFibGUgdm9pZCogbV9kYXRhOworfTsKIAotICAgIFRyeU1h
bGxvY1JldHVyblZhbHVlIHRyeUZhc3RNYWxsb2Moc2l6ZV90IG4pOwotICAgIFRyeU1hbGxvY1Jl
dHVyblZhbHVlIHRyeUZhc3RaZXJvZWRNYWxsb2Moc2l6ZV90IG4pOwotICAgIFRyeU1hbGxvY1Jl
dHVyblZhbHVlIHRyeUZhc3RDYWxsb2Moc2l6ZV90IG5fZWxlbWVudHMsIHNpemVfdCBlbGVtZW50
X3NpemUpOwotICAgIFRyeU1hbGxvY1JldHVyblZhbHVlIHRyeUZhc3RSZWFsbG9jKHZvaWQqIHAs
IHNpemVfdCBuKTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBib29sIFRyeU1hbGxvY1JldHVyblZh
bHVlOjpnZXRWYWx1ZShUJiBkYXRhKQoreworICAgIHVuaW9uIHUgeyB2b2lkKiBkYXRhOyBUIHRh
cmdldDsgfSByZXM7CisgICAgcmVzLmRhdGEgPSBtX2RhdGE7CisgICAgZGF0YSA9IHJlcy50YXJn
ZXQ7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9ICEhbV9kYXRhOworICAgIG1fZGF0YSA9IDA7Cisg
ICAgcmV0dXJuIHJldHVyblZhbHVlOworfQogCi0gICAgdm9pZCBmYXN0RnJlZSh2b2lkKik7CitK
U19FWFBPUlRFRF9TWU1CT0wgVHJ5TWFsbG9jUmV0dXJuVmFsdWUgdHJ5RmFzdE1hbGxvYyhzaXpl
X3Qgbik7CitKU19FWFBPUlRFRF9TWU1CT0wgVHJ5TWFsbG9jUmV0dXJuVmFsdWUgdHJ5RmFzdFpl
cm9lZE1hbGxvYyhzaXplX3Qgbik7CitKU19FWFBPUlRFRF9TWU1CT0wgVHJ5TWFsbG9jUmV0dXJu
VmFsdWUgdHJ5RmFzdENhbGxvYyhzaXplX3Qgbl9lbGVtZW50cywgc2l6ZV90IGVsZW1lbnRfc2l6
ZSk7CitKU19FWFBPUlRFRF9TWU1CT0wgVHJ5TWFsbG9jUmV0dXJuVmFsdWUgdHJ5RmFzdFJlYWxs
b2Modm9pZCogcCwgc2l6ZV90IG4pOwogCitKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBmYXN0RnJl
ZSh2b2lkKik7CisKICNpZm5kZWYgTkRFQlVHICAgIAotICAgIHZvaWQgZmFzdE1hbGxvY0ZvcmJp
ZCgpOwotICAgIHZvaWQgZmFzdE1hbGxvY0FsbG93KCk7Cit2b2lkIGZhc3RNYWxsb2NGb3JiaWQo
KTsKK3ZvaWQgZmFzdE1hbGxvY0FsbG93KCk7CiAjZW5kaWYKIAotICAgIHZvaWQgcmVsZWFzZUZh
c3RNYWxsb2NGcmVlTWVtb3J5KCk7Ci0gICAgCi0gICAgc3RydWN0IEZhc3RNYWxsb2NTdGF0aXN0
aWNzIHsKLSAgICAgICAgc2l6ZV90IHJlc2VydmVkVk1CeXRlczsKLSAgICAgICAgc2l6ZV90IGNv
bW1pdHRlZFZNQnl0ZXM7Ci0gICAgICAgIHNpemVfdCBmcmVlTGlzdEJ5dGVzOwotICAgIH07Ci0g
ICAgRmFzdE1hbGxvY1N0YXRpc3RpY3MgZmFzdE1hbGxvY1N0YXRpc3RpY3MoKTsKK3ZvaWQgcmVs
ZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5KCk7CiAKLSAgICAvLyBUaGlzIGRlZmluZXMgYSB0eXBl
IHdoaWNoIGhvbGRzIGFuIHVuc2lnbmVkIGludGVnZXIgYW5kIGlzIHRoZSBzYW1lCi0gICAgLy8g
c2l6ZSBhcyB0aGUgbWluaW1hbGx5IGFsaWduZWQgbWVtb3J5IGFsbG9jYXRpb24uCi0gICAgdHlw
ZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgQWxsb2NBbGlnbm1lbnRJbnRlZ2VyOworc3RydWN0IEZh
c3RNYWxsb2NTdGF0aXN0aWNzIHsKKyAgICBzaXplX3QgcmVzZXJ2ZWRWTUJ5dGVzOworICAgIHNp
emVfdCBjb21taXR0ZWRWTUJ5dGVzOworICAgIHNpemVfdCBmcmVlTGlzdEJ5dGVzOworfTsKK0Zh
c3RNYWxsb2NTdGF0aXN0aWNzIGZhc3RNYWxsb2NTdGF0aXN0aWNzKCk7CiAKLSAgICBuYW1lc3Bh
Y2UgSW50ZXJuYWwgewotICAgICAgICBlbnVtIEFsbG9jVHlwZSB7ICAgICAgICAgICAgICAgICAg
ICAvLyBTdGFydCB3aXRoIGFuIHVudXN1YWwgbnVtYmVyIGluc3RlYWQgb2YgemVybywgYmVjYXVz
ZSB6ZXJvIGlzIGNvbW1vbi4KLSAgICAgICAgICAgIEFsbG9jVHlwZU1hbGxvYyA9IDB4Mzc1ZDY3
NTAsICAgLy8gRW5jb21wYXNzZXMgZmFzdE1hbGxvYywgZmFzdFplcm9lZE1hbGxvYywgZmFzdENh
bGxvYywgZmFzdFJlYWxsb2MuCi0gICAgICAgICAgICBBbGxvY1R5cGVDbGFzc05ldywgICAgICAg
ICAgICAgIC8vIEVuY29tcGFzc2VzIGNsYXNzIG9wZXJhdG9yIG5ldyBmcm9tIEZhc3RBbGxvY0Jh
c2UuCi0gICAgICAgICAgICBBbGxvY1R5cGVDbGFzc05ld0FycmF5LCAgICAgICAgIC8vIEVuY29t
cGFzc2VzIGNsYXNzIG9wZXJhdG9yIG5ld1tdIGZyb20gRmFzdEFsbG9jQmFzZS4KLSAgICAgICAg
ICAgIEFsbG9jVHlwZUZhc3ROZXcsICAgICAgICAgICAgICAgLy8gRW5jb21wYXNzZXMgZmFzdE5l
dy4KLSAgICAgICAgICAgIEFsbG9jVHlwZUZhc3ROZXdBcnJheSwgICAgICAgICAgLy8gRW5jb21w
YXNzZXMgZmFzdE5ld0FycmF5LgotICAgICAgICAgICAgQWxsb2NUeXBlTmV3LCAgICAgICAgICAg
ICAgICAgICAvLyBFbmNvbXBhc3NlcyBnbG9iYWwgb3BlcmF0b3IgbmV3LgotICAgICAgICAgICAg
QWxsb2NUeXBlTmV3QXJyYXkgICAgICAgICAgICAgICAvLyBFbmNvbXBhc3NlcyBnbG9iYWwgb3Bl
cmF0b3IgbmV3W10uCi0gICAgICAgIH07Ci0gICAgfQorLy8gVGhpcyBkZWZpbmVzIGEgdHlwZSB3
aGljaCBob2xkcyBhbiB1bnNpZ25lZCBpbnRlZ2VyIGFuZCBpcyB0aGUgc2FtZQorLy8gc2l6ZSBh
cyB0aGUgbWluaW1hbGx5IGFsaWduZWQgbWVtb3J5IGFsbG9jYXRpb24uCit0eXBlZGVmIHVuc2ln
bmVkIGxvbmcgbG9uZyBBbGxvY0FsaWdubWVudEludGVnZXI7CiAKK25hbWVzcGFjZSBJbnRlcm5h
bCB7CitlbnVtIEFsbG9jVHlwZSB7ICAgICAgICAgICAgICAgICAgICAvLyBTdGFydCB3aXRoIGFu
IHVudXN1YWwgbnVtYmVyIGluc3RlYWQgb2YgemVybywgYmVjYXVzZSB6ZXJvIGlzIGNvbW1vbi4K
KyAgICBBbGxvY1R5cGVNYWxsb2MgPSAweDM3NWQ2NzUwLCAgIC8vIEVuY29tcGFzc2VzIGZhc3RN
YWxsb2MsIGZhc3RaZXJvZWRNYWxsb2MsIGZhc3RDYWxsb2MsIGZhc3RSZWFsbG9jLgorICAgIEFs
bG9jVHlwZUNsYXNzTmV3LCAgICAgICAgICAgICAgLy8gRW5jb21wYXNzZXMgY2xhc3Mgb3BlcmF0
b3IgbmV3IGZyb20gRmFzdEFsbG9jQmFzZS4KKyAgICBBbGxvY1R5cGVDbGFzc05ld0FycmF5LCAg
ICAgICAgIC8vIEVuY29tcGFzc2VzIGNsYXNzIG9wZXJhdG9yIG5ld1tdIGZyb20gRmFzdEFsbG9j
QmFzZS4KKyAgICBBbGxvY1R5cGVGYXN0TmV3LCAgICAgICAgICAgICAgIC8vIEVuY29tcGFzc2Vz
IGZhc3ROZXcuCisgICAgQWxsb2NUeXBlRmFzdE5ld0FycmF5LCAgICAgICAgICAvLyBFbmNvbXBh
c3NlcyBmYXN0TmV3QXJyYXkuCisgICAgQWxsb2NUeXBlTmV3LCAgICAgICAgICAgICAgICAgICAv
LyBFbmNvbXBhc3NlcyBnbG9iYWwgb3BlcmF0b3IgbmV3LgorICAgIEFsbG9jVHlwZU5ld0FycmF5
ICAgICAgICAgICAgICAgLy8gRW5jb21wYXNzZXMgZ2xvYmFsIG9wZXJhdG9yIG5ld1tdLgorfTsK
K30KKwogI2lmIEVOQUJMRShGQVNUX01BTExPQ19NQVRDSF9WQUxJREFUSU9OKQogCi0gICAgLy8g
TWFsbG9jIHZhbGlkYXRpb24gaXMgYSBzY2hlbWUgd2hlcmVieSBhIHRhZyBpcyBhdHRhY2hlZCB0
byBhbgotICAgIC8vIGFsbG9jYXRpb24gd2hpY2ggaWRlbnRpZmllcyBob3cgaXQgd2FzIG9yaWdp
bmFsbHkgYWxsb2NhdGVkLgotICAgIC8vIFRoaXMgYWxsb3dzIHVzIHRvIHZlcmlmeSB0aGF0IHRo
ZSBmcmVlaW5nIG9wZXJhdGlvbiBtYXRjaGVzIHRoZQotICAgIC8vIGFsbG9jYXRpb24gb3BlcmF0
aW9uLiBJZiBtZW1vcnkgaXMgYWxsb2NhdGVkIHdpdGggb3BlcmF0b3IgbmV3W10KLSAgICAvLyBi
dXQgZnJlZWQgd2l0aCBmcmVlIG9yIGRlbGV0ZSwgdGhpcyBzeXN0ZW0gd291bGQgZGV0ZWN0IHRo
YXQuCi0gICAgLy8gSW4gdGhlIGltcGxlbWVudGF0aW9uIGhlcmUsIHRoZSB0YWcgaXMgYW4gaW50
ZWdlciBwcmVwZW5kZWQgdG8KLSAgICAvLyB0aGUgYWxsb2NhdGlvbiBtZW1vcnkgd2hpY2ggaXMg
YXNzaWduZWQgb25lIG9mIHRoZSBBbGxvY1R5cGUKLSAgICAvLyBlbnVtZXJhdGlvbiB2YWx1ZXMu
IEFuIGFsdGVybmF0aXZlIGltcGxlbWVudGF0aW9uIG9mIHRoaXMKLSAgICAvLyBzY2hlbWUgY291
bGQgc3RvcmUgdGhlIHRhZyBzb21ld2hlcmUgZWxzZSBvciBpZ25vcmUgaXQuCi0gICAgLy8gVXNl
cnMgb2YgRmFzdE1hbGxvYyBkb24ndCBuZWVkIHRvIGtub3cgb3IgY2FyZSBob3cgdGhpcyB0YWdn
aW5nCi0gICAgLy8gaXMgaW1wbGVtZW50ZWQuCisvLyBNYWxsb2MgdmFsaWRhdGlvbiBpcyBhIHNj
aGVtZSB3aGVyZWJ5IGEgdGFnIGlzIGF0dGFjaGVkIHRvIGFuCisvLyBhbGxvY2F0aW9uIHdoaWNo
IGlkZW50aWZpZXMgaG93IGl0IHdhcyBvcmlnaW5hbGx5IGFsbG9jYXRlZC4KKy8vIFRoaXMgYWxs
b3dzIHVzIHRvIHZlcmlmeSB0aGF0IHRoZSBmcmVlaW5nIG9wZXJhdGlvbiBtYXRjaGVzIHRoZQor
Ly8gYWxsb2NhdGlvbiBvcGVyYXRpb24uIElmIG1lbW9yeSBpcyBhbGxvY2F0ZWQgd2l0aCBvcGVy
YXRvciBuZXdbXQorLy8gYnV0IGZyZWVkIHdpdGggZnJlZSBvciBkZWxldGUsIHRoaXMgc3lzdGVt
IHdvdWxkIGRldGVjdCB0aGF0LgorLy8gSW4gdGhlIGltcGxlbWVudGF0aW9uIGhlcmUsIHRoZSB0
YWcgaXMgYW4gaW50ZWdlciBwcmVwZW5kZWQgdG8KKy8vIHRoZSBhbGxvY2F0aW9uIG1lbW9yeSB3
aGljaCBpcyBhc3NpZ25lZCBvbmUgb2YgdGhlIEFsbG9jVHlwZQorLy8gZW51bWVyYXRpb24gdmFs
dWVzLiBBbiBhbHRlcm5hdGl2ZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzCisvLyBzY2hlbWUgY291
bGQgc3RvcmUgdGhlIHRhZyBzb21ld2hlcmUgZWxzZSBvciBpZ25vcmUgaXQuCisvLyBVc2VycyBv
ZiBGYXN0TWFsbG9jIGRvbid0IG5lZWQgdG8ga25vdyBvciBjYXJlIGhvdyB0aGlzIHRhZ2dpbmcK
Ky8vIGlzIGltcGxlbWVudGVkLgogCi0gICAgbmFtZXNwYWNlIEludGVybmFsIHsKK25hbWVzcGFj
ZSBJbnRlcm5hbCB7CiAKLSAgICAgICAgLy8gUmV0dXJuIHRoZSBBbGxvY1R5cGUgdGFnIGFzc29j
aWF0ZWQgd2l0aCB0aGUgYWxsb2NhdGVkIGJsb2NrIHAuCi0gICAgICAgIGlubGluZSBBbGxvY1R5
cGUgZmFzdE1hbGxvY01hdGNoVmFsaWRhdGlvblR5cGUoY29uc3Qgdm9pZCogcCkKLSAgICAgICAg
ewotICAgICAgICAgICAgY29uc3QgQWxsb2NBbGlnbm1lbnRJbnRlZ2VyKiB0eXBlID0gc3RhdGlj
X2Nhc3Q8Y29uc3QgQWxsb2NBbGlnbm1lbnRJbnRlZ2VyKj4ocCkgLSAxOwotICAgICAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PEFsbG9jVHlwZT4oKnR5cGUpOwotICAgICAgICB9CisvLyBSZXR1
cm4gdGhlIEFsbG9jVHlwZSB0YWcgYXNzb2NpYXRlZCB3aXRoIHRoZSBhbGxvY2F0ZWQgYmxvY2sg
cC4KK2lubGluZSBBbGxvY1R5cGUgZmFzdE1hbGxvY01hdGNoVmFsaWRhdGlvblR5cGUoY29uc3Qg
dm9pZCogcCkKK3sKKyAgICBjb25zdCBBbGxvY0FsaWdubWVudEludGVnZXIqIHR5cGUgPSBzdGF0
aWNfY2FzdDxjb25zdCBBbGxvY0FsaWdubWVudEludGVnZXIqPihwKSAtIDE7CisgICAgcmV0dXJu
IHN0YXRpY19jYXN0PEFsbG9jVHlwZT4oKnR5cGUpOworfQogCi0gICAgICAgIC8vIFJldHVybiB0
aGUgYWRkcmVzcyBvZiB0aGUgQWxsb2NUeXBlIHRhZyBhc3NvY2lhdGVkIHdpdGggdGhlIGFsbG9j
YXRlZCBibG9jayBwLgotICAgICAgICBpbmxpbmUgQWxsb2NBbGlnbm1lbnRJbnRlZ2VyKiBmYXN0
TWFsbG9jTWF0Y2hWYWxpZGF0aW9uVmFsdWUodm9pZCogcCkKLSAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8QWxsb2NBbGlnbm1lbnRJbnRlZ2VyKj4oc3RhdGlj
X2Nhc3Q8Y2hhcio+KHApIC0gc2l6ZW9mKEFsbG9jQWxpZ25tZW50SW50ZWdlcikpOwotICAgICAg
ICB9CisvLyBSZXR1cm4gdGhlIGFkZHJlc3Mgb2YgdGhlIEFsbG9jVHlwZSB0YWcgYXNzb2NpYXRl
ZCB3aXRoIHRoZSBhbGxvY2F0ZWQgYmxvY2sgcC4KK2lubGluZSBBbGxvY0FsaWdubWVudEludGVn
ZXIqIGZhc3RNYWxsb2NNYXRjaFZhbGlkYXRpb25WYWx1ZSh2b2lkKiBwKQoreworICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PEFsbG9jQWxpZ25tZW50SW50ZWdlcio+KHN0YXRpY19jYXN0PGNo
YXIqPihwKSAtIHNpemVvZihBbGxvY0FsaWdubWVudEludGVnZXIpKTsKK30KIAotICAgICAgICAv
LyBTZXQgdGhlIEFsbG9jVHlwZSB0YWcgdG8gYmUgYXNzb2NpYWdlZCB3aXRoIHRoZSBhbGxvY2F0
ZWQgYmxvY2sgcC4KLSAgICAgICAgaW5saW5lIHZvaWQgc2V0RmFzdE1hbGxvY01hdGNoVmFsaWRh
dGlvblR5cGUodm9pZCogcCwgQWxsb2NUeXBlIGFsbG9jVHlwZSkKLSAgICAgICAgewotICAgICAg
ICAgICAgQWxsb2NBbGlnbm1lbnRJbnRlZ2VyKiB0eXBlID0gc3RhdGljX2Nhc3Q8QWxsb2NBbGln
bm1lbnRJbnRlZ2VyKj4ocCkgLSAxOwotICAgICAgICAgICAgKnR5cGUgPSBzdGF0aWNfY2FzdDxB
bGxvY0FsaWdubWVudEludGVnZXI+KGFsbG9jVHlwZSk7Ci0gICAgICAgIH0KKy8vIFNldCB0aGUg
QWxsb2NUeXBlIHRhZyB0byBiZSBhc3NvY2lhZ2VkIHdpdGggdGhlIGFsbG9jYXRlZCBibG9jayBw
LgoraW5saW5lIHZvaWQgc2V0RmFzdE1hbGxvY01hdGNoVmFsaWRhdGlvblR5cGUodm9pZCogcCwg
QWxsb2NUeXBlIGFsbG9jVHlwZSkKK3sKKyAgICBBbGxvY0FsaWdubWVudEludGVnZXIqIHR5cGUg
PSBzdGF0aWNfY2FzdDxBbGxvY0FsaWdubWVudEludGVnZXIqPihwKSAtIDE7CisgICAgKnR5cGUg
PSBzdGF0aWNfY2FzdDxBbGxvY0FsaWdubWVudEludGVnZXI+KGFsbG9jVHlwZSk7Cit9CiAKLSAg
ICAgICAgLy8gSGFuZGxlIGEgZGV0ZWN0ZWQgYWxsb2MvZnJlZSBtaXNtYXRjaC4gQnkgZGVmYXVs
dCB0aGlzIGNhbGxzIENSQVNIKCkuCi0gICAgICAgIHZvaWQgZmFzdE1hbGxvY01hdGNoRmFpbGVk
KHZvaWQqIHApOworLy8gSGFuZGxlIGEgZGV0ZWN0ZWQgYWxsb2MvZnJlZSBtaXNtYXRjaC4gQnkg
ZGVmYXVsdCB0aGlzIGNhbGxzIENSQVNIKCkuCit2b2lkIGZhc3RNYWxsb2NNYXRjaEZhaWxlZCh2
b2lkKiBwKTsKIAotICAgIH0gLy8gbmFtZXNwYWNlIEludGVybmFsCit9IC8vIG5hbWVzcGFjZSBJ
bnRlcm5hbAogCi0gICAgLy8gVGhpcyBpcyBhIGhpZ2hlciBsZXZlbCBmdW5jdGlvbiB3aGljaCBp
cyB1c2VkIGJ5IEZhc3RNYWxsb2MtdXNpbmcgY29kZS4KLSAgICBpbmxpbmUgdm9pZCBmYXN0TWFs
bG9jTWF0Y2hWYWxpZGF0ZU1hbGxvYyh2b2lkKiBwLCBJbnRlcm5hbDo6QWxsb2NUeXBlIGFsbG9j
VHlwZSkKLSAgICB7Ci0gICAgICAgIGlmICghcCkKLSAgICAgICAgICAgIHJldHVybjsKKy8vIFRo
aXMgaXMgYSBoaWdoZXIgbGV2ZWwgZnVuY3Rpb24gd2hpY2ggaXMgdXNlZCBieSBGYXN0TWFsbG9j
LXVzaW5nIGNvZGUuCitpbmxpbmUgdm9pZCBmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZU1hbGxvYyh2
b2lkKiBwLCBJbnRlcm5hbDo6QWxsb2NUeXBlIGFsbG9jVHlwZSkKK3sKKyAgICBpZiAoIXApCisg
ICAgICAgIHJldHVybjsKIAotICAgICAgICBJbnRlcm5hbDo6c2V0RmFzdE1hbGxvY01hdGNoVmFs
aWRhdGlvblR5cGUocCwgYWxsb2NUeXBlKTsKLSAgICB9CisgICAgSW50ZXJuYWw6OnNldEZhc3RN
YWxsb2NNYXRjaFZhbGlkYXRpb25UeXBlKHAsIGFsbG9jVHlwZSk7Cit9CiAKLSAgICAvLyBUaGlz
IGlzIGEgaGlnaGVyIGxldmVsIGZ1bmN0aW9uIHdoaWNoIGlzIHVzZWQgYnkgRmFzdE1hbGxvYy11
c2luZyBjb2RlLgotICAgIGlubGluZSB2b2lkIGZhc3RNYWxsb2NNYXRjaFZhbGlkYXRlRnJlZSh2
b2lkKiBwLCBJbnRlcm5hbDo6QWxsb2NUeXBlIGFsbG9jVHlwZSkKLSAgICB7Ci0gICAgICAgIGlm
ICghcCkKLSAgICAgICAgICAgIHJldHVybjsKKy8vIFRoaXMgaXMgYSBoaWdoZXIgbGV2ZWwgZnVu
Y3Rpb24gd2hpY2ggaXMgdXNlZCBieSBGYXN0TWFsbG9jLXVzaW5nIGNvZGUuCitpbmxpbmUgdm9p
ZCBmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZUZyZWUodm9pZCogcCwgSW50ZXJuYWw6OkFsbG9jVHlw
ZSBhbGxvY1R5cGUpCit7CisgICAgaWYgKCFwKQorICAgICAgICByZXR1cm47CiAKLSAgICAgICAg
aWYgKEludGVybmFsOjpmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0aW9uVHlwZShwKSAhPSBhbGxvY1R5
cGUpCi0gICAgICAgICAgICBJbnRlcm5hbDo6ZmFzdE1hbGxvY01hdGNoRmFpbGVkKHApOwotICAg
ICAgICBJbnRlcm5hbDo6c2V0RmFzdE1hbGxvY01hdGNoVmFsaWRhdGlvblR5cGUocCwgSW50ZXJu
YWw6OkFsbG9jVHlwZU1hbGxvYyk7ICAvLyBTZXQgaXQgdG8gdGhpcyBzbyB0aGF0IGZhc3RGcmVl
IHRoaW5rcyBpdCdzIE9LLgotICAgIH0KKyAgICBpZiAoSW50ZXJuYWw6OmZhc3RNYWxsb2NNYXRj
aFZhbGlkYXRpb25UeXBlKHApICE9IGFsbG9jVHlwZSkKKyAgICAgICAgSW50ZXJuYWw6OmZhc3RN
YWxsb2NNYXRjaEZhaWxlZChwKTsKKyAgICBJbnRlcm5hbDo6c2V0RmFzdE1hbGxvY01hdGNoVmFs
aWRhdGlvblR5cGUocCwgSW50ZXJuYWw6OkFsbG9jVHlwZU1hbGxvYyk7ICAvLyBTZXQgaXQgdG8g
dGhpcyBzbyB0aGF0IGZhc3RGcmVlIHRoaW5rcyBpdCdzIE9LLgorfQogCiAjZWxzZQogCi0gICAg
aW5saW5lIHZvaWQgZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVNYWxsb2Modm9pZCosIEludGVybmFs
OjpBbGxvY1R5cGUpCi0gICAgewotICAgIH0KK2lubGluZSB2b2lkIGZhc3RNYWxsb2NNYXRjaFZh
bGlkYXRlTWFsbG9jKHZvaWQqLCBJbnRlcm5hbDo6QWxsb2NUeXBlKQoreworfQogCi0gICAgaW5s
aW5lIHZvaWQgZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVGcmVlKHZvaWQqLCBJbnRlcm5hbDo6QWxs
b2NUeXBlKQotICAgIHsKLSAgICB9CitpbmxpbmUgdm9pZCBmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0
ZUZyZWUodm9pZCosIEludGVybmFsOjpBbGxvY1R5cGUpCit7Cit9CiAKICNlbmRpZgogCkluZGV4
OiBKYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkU3BlY2lmaWMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZh
U2NyaXB0Q29yZS93dGYvVGhyZWFkU3BlY2lmaWMuaAkocmV2aXNpb24gNjEzMjcpCisrKyBKYXZh
U2NyaXB0Q29yZS93dGYvVGhyZWFkU3BlY2lmaWMuaAkod29ya2luZyBjb3B5KQpAQCAtMTk4LDgg
KzE5OCw4IEBACiAvLyAyKSBXZSBkbyBub3QgbmVlZCB0byBob2xkIG1hbnkgaW5zdGFuY2VzIG9m
IFRocmVhZFNwZWNpZmljPD4gZGF0YS4gVGhpcyBmaXhlZCBudW1iZXIgc2hvdWxkIGJlIGZhciBl
bm91Z2guCiBjb25zdCBpbnQga01heFRsc0tleVNpemUgPSAyNTY7CiAKLWxvbmcmIHRsc0tleUNv
dW50KCk7Ci1EV09SRCogdGxzS2V5cygpOworSlNfRVhQT1JURURfU1lNQk9MIGxvbmcmIHRsc0tl
eUNvdW50KCk7CitKU19FWFBPUlRFRF9TWU1CT0wgRFdPUkQqIHRsc0tleXMoKTsKIAogdGVtcGxh
dGU8dHlwZW5hbWUgVD4KIGlubGluZSBUaHJlYWRTcGVjaWZpYzxUPjo6VGhyZWFkU3BlY2lmaWMo
KQpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL1dURlRocmVhZERhdGEuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBKYXZhU2NyaXB0Q29yZS93dGYvV1RGVGhyZWFkRGF0YS5oCShyZXZpc2lvbiA2MTMyNykKKysr
IEphdmFTY3JpcHRDb3JlL3d0Zi9XVEZUaHJlYWREYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTg0
LDggKzg0LDggQEAKIAogY2xhc3MgV1RGVGhyZWFkRGF0YSA6IHB1YmxpYyBOb25jb3B5YWJsZSB7
CiBwdWJsaWM6Ci0gICAgV1RGVGhyZWFkRGF0YSgpOwotICAgIH5XVEZUaHJlYWREYXRhKCk7Cisg
ICAgSlNfRVhQT1JURURfU1lNQk9MIFdURlRocmVhZERhdGEoKTsKKyAgICBKU19FWFBPUlRFRF9T
WU1CT0wgfldURlRocmVhZERhdGEoKTsKIAogICAgIFdlYkNvcmU6OkF0b21pY1N0cmluZ1RhYmxl
KiBhdG9taWNTdHJpbmdUYWJsZSgpCiAgICAgewpAQCAtMTI3LDkgKzEyNyw5IEBACiAjZW5kaWYK
IAogI2lmIFdURlRIUkVBRERBVEFfTVVMVElUSFJFQURFRAotICAgIHN0YXRpYyBKU19FWFBPUlRE
QVRBIFRocmVhZFNwZWNpZmljPFdURlRocmVhZERhdGE+KiBzdGF0aWNEYXRhOworICAgIHN0YXRp
YyBKU19FWFBPUlRFRF9TWU1CT0wgVGhyZWFkU3BlY2lmaWM8V1RGVGhyZWFkRGF0YT4qIHN0YXRp
Y0RhdGE7CiAjZWxzZQotICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIFdURlRocmVhZERhdGEqIHN0
YXRpY0RhdGE7CisgICAgc3RhdGljIEpTX0VYUE9SVEVEX1NZTUJPTCBXVEZUaHJlYWREYXRhKiBz
dGF0aWNEYXRhOwogI2VuZGlmCiAgICAgZnJpZW5kIFdURlRocmVhZERhdGEmIHd0ZlRocmVhZERh
dGEoKTsKICAgICBmcmllbmQgY2xhc3MgV2ViQ29yZTo6QXRvbWljU3RyaW5nVGFibGU7CkluZGV4
OiBKYXZhU2NyaXB0Q29yZS93dGYvRGF0ZU1hdGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS93dGYvRGF0ZU1hdGguaAkocmV2aXNpb24gNjEzMjcpCisrKyBKYXZhU2NyaXB0Q29yZS93
dGYvRGF0ZU1hdGguaAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQAogaW50IGVxdWl2
YWxlbnRZZWFyRm9yRFNUKGludCB5ZWFyKTsKIAogLy8gTm90IHJlYWxseSBtYXRoIHJlbGF0ZWQs
IGJ1dCB0aGlzIGlzIGN1cnJlbnRseSB0aGUgb25seSBzaGFyZWQgcGxhY2UgdG8gcHV0IHRoZXNl
LiAgCi1kb3VibGUgcGFyc2VEYXRlRnJvbU51bGxUZXJtaW5hdGVkQ2hhcmFjdGVycyhjb25zdCBj
aGFyKiBkYXRlU3RyaW5nKTsKK0pTX0VYUE9SVEVEX1NZTUJPTCBkb3VibGUgcGFyc2VEYXRlRnJv
bU51bGxUZXJtaW5hdGVkQ2hhcmFjdGVycyhjb25zdCBjaGFyKiBkYXRlU3RyaW5nKTsKIGRvdWJs
ZSB0aW1lQ2xpcChkb3VibGUpOwogCiBpbmxpbmUgZG91YmxlIGpzQ3VycmVudFRpbWUoKQpAQCAt
NzcsMTEgKzc3LDExIEBACiBjb25zdCBkb3VibGUgbXNQZXJNb250aCA9IDI1OTIwMDAwMDAuMDsK
IAogLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIGRheXMgZnJvbSAxOTcwLTAxLTAxIHRvIHRoZSBz
cGVjaWZpZWQgZGF0ZS4KLWRvdWJsZSBkYXRlVG9EYXlzRnJvbTE5NzAoaW50IHllYXIsIGludCBt
b250aCwgaW50IGRheSk7Ci1pbnQgbXNUb1llYXIoZG91YmxlIG1zKTsKLWludCBkYXlJblllYXIo
ZG91YmxlIG1zLCBpbnQgeWVhcik7Ci1pbnQgbW9udGhGcm9tRGF5SW5ZZWFyKGludCBkYXlJblll
YXIsIGJvb2wgbGVhcFllYXIpOwotaW50IGRheUluTW9udGhGcm9tRGF5SW5ZZWFyKGludCBkYXlJ
blllYXIsIGJvb2wgbGVhcFllYXIpOworSlNfRVhQT1JURURfU1lNQk9MIGRvdWJsZSBkYXRlVG9E
YXlzRnJvbTE5NzAoaW50IHllYXIsIGludCBtb250aCwgaW50IGRheSk7CitKU19FWFBPUlRFRF9T
WU1CT0wgaW50IG1zVG9ZZWFyKGRvdWJsZSBtcyk7CitKU19FWFBPUlRFRF9TWU1CT0wgaW50IGRh
eUluWWVhcihkb3VibGUgbXMsIGludCB5ZWFyKTsKK0pTX0VYUE9SVEVEX1NZTUJPTCBpbnQgbW9u
dGhGcm9tRGF5SW5ZZWFyKGludCBkYXlJblllYXIsIGJvb2wgbGVhcFllYXIpOworSlNfRVhQT1JU
RURfU1lNQk9MIGludCBkYXlJbk1vbnRoRnJvbURheUluWWVhcihpbnQgZGF5SW5ZZWFyLCBib29s
IGxlYXBZZWFyKTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKSW5kZXg6IEphdmFTY3JpcHRDb3Jl
L3d0Zi91bmljb2RlL0NvbGxhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3Rm
L3VuaWNvZGUvQ29sbGF0b3IuaAkocmV2aXNpb24gNjEzMjcpCisrKyBKYXZhU2NyaXB0Q29yZS93
dGYvdW5pY29kZS9Db2xsYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwyNyArMzksMjcgQEAK
IAogbmFtZXNwYWNlIFdURiB7CiAKLSAgICBjbGFzcyBDb2xsYXRvciA6IHB1YmxpYyBOb25jb3B5
YWJsZSB7Ci0gICAgcHVibGljOgotICAgICAgICBlbnVtIFJlc3VsdCB7IEVxdWFsID0gMCwgR3Jl
YXRlciA9IDEsIExlc3MgPSAtMSB9OworY2xhc3MgSlNfRVhQT1JURURfU1lNQk9MIENvbGxhdG9y
IDogcHVibGljIE5vbmNvcHlhYmxlIHsKK3B1YmxpYzoKKyAgICBlbnVtIFJlc3VsdCB7IEVxdWFs
ID0gMCwgR3JlYXRlciA9IDEsIExlc3MgPSAtMSB9OwogCi0gICAgICAgIENvbGxhdG9yKGNvbnN0
IGNoYXIqIGxvY2FsZSk7IC8vIFBhcnNpbmcgaXMgbGVuaWVudDsgZS5nLiBsYW5ndWFnZSBpZGVu
dGlmaWVycyAoc3VjaCBhcyAiZW4tVVMiKSBhcmUgYWNjZXB0ZWQsIHRvby4KLSAgICAgICAgfkNv
bGxhdG9yKCk7Ci0gICAgICAgIHZvaWQgc2V0T3JkZXJMb3dlckZpcnN0KGJvb2wpOworICAgIENv
bGxhdG9yKGNvbnN0IGNoYXIqIGxvY2FsZSk7IC8vIFBhcnNpbmcgaXMgbGVuaWVudDsgZS5nLiBs
YW5ndWFnZSBpZGVudGlmaWVycyAoc3VjaCBhcyAiZW4tVVMiKSBhcmUgYWNjZXB0ZWQsIHRvby4K
KyAgICB+Q29sbGF0b3IoKTsKKyAgICB2b2lkIHNldE9yZGVyTG93ZXJGaXJzdChib29sKTsKIAot
ICAgICAgICBzdGF0aWMgUGFzc093blB0cjxDb2xsYXRvcj4gdXNlckRlZmF1bHQoKTsKKyAgICBz
dGF0aWMgUGFzc093blB0cjxDb2xsYXRvcj4gdXNlckRlZmF1bHQoKTsKIAotICAgICAgICBSZXN1
bHQgY29sbGF0ZShjb25zdCA6OlVDaGFyKiwgc2l6ZV90LCBjb25zdCA6OlVDaGFyKiwgc2l6ZV90
KSBjb25zdDsKKyAgICBSZXN1bHQgY29sbGF0ZShjb25zdCA6OlVDaGFyKiwgc2l6ZV90LCBjb25z
dCA6OlVDaGFyKiwgc2l6ZV90KSBjb25zdDsKIAotICAgIHByaXZhdGU6Citwcml2YXRlOgogI2lm
IFVTRShJQ1VfVU5JQ09ERSkgJiYgIVVDT05GSUdfTk9fQ09MTEFUSU9OCi0gICAgICAgIHZvaWQg
Y3JlYXRlQ29sbGF0b3IoKSBjb25zdDsKLSAgICAgICAgdm9pZCByZWxlYXNlQ29sbGF0b3IoKTsK
LSAgICAgICAgbXV0YWJsZSBVQ29sbGF0b3IqIG1fY29sbGF0b3I7CisgICAgdm9pZCBjcmVhdGVD
b2xsYXRvcigpIGNvbnN0OworICAgIHZvaWQgcmVsZWFzZUNvbGxhdG9yKCk7CisgICAgbXV0YWJs
ZSBVQ29sbGF0b3IqIG1fY29sbGF0b3I7CiAjZW5kaWYKLSAgICAgICAgY2hhciogbV9sb2NhbGU7
Ci0gICAgICAgIGJvb2wgbV9sb3dlckZpcnN0OwotICAgIH07CisgICAgY2hhciogbV9sb2NhbGU7
CisgICAgYm9vbCBtX2xvd2VyRmlyc3Q7Cit9OwogfQogCiB1c2luZyBXVEY6OkNvbGxhdG9yOwpJ
bmRleDogSmF2YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUvVVRGOC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEph
dmFTY3JpcHRDb3JlL3d0Zi91bmljb2RlL1VURjguaAkocmV2aXNpb24gNjEzMjcpCisrKyBKYXZh
U2NyaXB0Q29yZS93dGYvdW5pY29kZS9VVEY4LmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2
LDcgQEAKICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhcioqIHNvdXJjZVN0YXJ0LCBjb25z
dCBjaGFyKiBzb3VyY2VFbmQsIAogICAgICAgICAgICAgICAgICAgICBVQ2hhcioqIHRhcmdldFN0
YXJ0LCBVQ2hhciogdGFyZ2V0RW5kLCBib29sIHN0cmljdCA9IHRydWUpOwogCi0gICAgQ29udmVy
c2lvblJlc3VsdCBjb252ZXJ0VVRGMTZUb1VURjgoCisgICAgSlNfRVhQT1JURURfU1lNQk9MIENv
bnZlcnNpb25SZXN1bHQgY29udmVydFVURjE2VG9VVEY4KAogICAgICAgICAgICAgICAgICAgICBj
b25zdCBVQ2hhcioqIHNvdXJjZVN0YXJ0LCBjb25zdCBVQ2hhciogc291cmNlRW5kLCAKICAgICAg
ICAgICAgICAgICAgICAgY2hhcioqIHRhcmdldFN0YXJ0LCBjaGFyKiB0YXJnZXRFbmQsIGJvb2wg
c3RyaWN0ID0gdHJ1ZSk7CiAgIH0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9DdXJyZW50VGlt
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9DdXJyZW50VGltZS5oCShyZXZp
c2lvbiA2MTMyNykKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9DdXJyZW50VGltZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNiwyNyArMzYsMjcgQEAKIAogbmFtZXNwYWNlIFdURiB7CiAKLSAgICAvLyBS
ZXR1cm5zIHRoZSBjdXJyZW50IFVUQyB0aW1lIGluIHNlY29uZHMsIGNvdW50ZWQgZnJvbSBKYW51
YXJ5IDEsIDE5NzAuCi0gICAgLy8gUHJlY2lzaW9uIHZhcmllcyBkZXBlbmRpbmcgb24gcGxhdGZv
cm0gYnV0IGlzIHVzdWFsbHkgYXMgZ29vZCBvciBiZXR0ZXIgCi0gICAgLy8gdGhhbiBhIG1pbGxp
c2Vjb25kLgotICAgIGRvdWJsZSBjdXJyZW50VGltZSgpOworLy8gUmV0dXJucyB0aGUgY3VycmVu
dCBVVEMgdGltZSBpbiBzZWNvbmRzLCBjb3VudGVkIGZyb20gSmFudWFyeSAxLCAxOTcwLgorLy8g
UHJlY2lzaW9uIHZhcmllcyBkZXBlbmRpbmcgb24gcGxhdGZvcm0gYnV0IGlzIHVzdWFsbHkgYXMg
Z29vZCBvciBiZXR0ZXIgCisvLyB0aGFuIGEgbWlsbGlzZWNvbmQuCitKU19FWFBPUlRFRF9TWU1C
T0wgZG91YmxlIGN1cnJlbnRUaW1lKCk7CiAKLSAgICAvLyBTYW1lIHRoaW5nLCBpbiBtaWxsaXNl
Y29uZHMuCi0gICAgaW5saW5lIGRvdWJsZSBjdXJyZW50VGltZU1TKCkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBjdXJyZW50VGltZSgpICogMTAwMC4wOyAKLSAgICB9CisvLyBTYW1lIHRoaW5nLCBp
biBtaWxsaXNlY29uZHMuCitpbmxpbmUgZG91YmxlIGN1cnJlbnRUaW1lTVMoKQoreworICAgIHJl
dHVybiBjdXJyZW50VGltZSgpICogMTAwMC4wOyAKK30KIAotICAgIGlubGluZSB2b2lkIGdldExv
Y2FsVGltZShjb25zdCB0aW1lX3QqIGxvY2FsVGltZSwgc3RydWN0IHRtKiBsb2NhbFRNKQotICAg
IHsKLSAgICAjaWYgQ09NUElMRVIoTVNWQzdfT1JfTE9XRVIpIHx8IENPTVBJTEVSKE1JTkdXKSB8
fCBPUyhXSU5DRSkKLSAgICAgICAgKmxvY2FsVE0gPSAqbG9jYWx0aW1lKGxvY2FsVGltZSk7Ci0g
ICAgI2VsaWYgQ09NUElMRVIoTVNWQykKLSAgICAgICAgbG9jYWx0aW1lX3MobG9jYWxUTSwgbG9j
YWxUaW1lKTsKLSAgICAjZWxzZQotICAgICAgICBsb2NhbHRpbWVfcihsb2NhbFRpbWUsIGxvY2Fs
VE0pOwotICAgICNlbmRpZgotICAgIH0KK2lubGluZSB2b2lkIGdldExvY2FsVGltZShjb25zdCB0
aW1lX3QqIGxvY2FsVGltZSwgc3RydWN0IHRtKiBsb2NhbFRNKQoreworI2lmIENPTVBJTEVSKE1T
VkM3X09SX0xPV0VSKSB8fCBDT01QSUxFUihNSU5HVykgfHwgT1MoV0lOQ0UpCisgICAgKmxvY2Fs
VE0gPSAqbG9jYWx0aW1lKGxvY2FsVGltZSk7CisjZWxpZiBDT01QSUxFUihNU1ZDKQorICAgIGxv
Y2FsdGltZV9zKGxvY2FsVE0sIGxvY2FsVGltZSk7CisjZWxzZQorICAgIGxvY2FsdGltZV9yKGxv
Y2FsVGltZSwgbG9jYWxUTSk7CisjZW5kaWYKK30KIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKSW5k
ZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9kdG9hLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENv
cmUvd3RmL2R0b2EuaAkocmV2aXNpb24gNjEzMjcpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvZHRv
YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBACiAvLyBkdG9hKCkgZm9yIEVDTUEt
MjYyICdUb1N0cmluZyBBcHBsaWVkIHRvIHRoZSBOdW1iZXIgVHlwZS4nCiAvLyBUaGUgKnJlc3Vs
dExlbmd0aCB3aWxsIGhhdmUgdGhlIGxlbmd0aCBvZiB0aGUgcmVzdWx0YW50IHN0cmluZyBpbiBi
dWZlci4KIC8vIFRoZSByZXN1bHRhbnQgc3RyaW5nIGlzbid0IHRlcm1pbmF0ZWQgYnkgMC4KLXZv
aWQgZG91YmxlVG9TdHJpbmdJbkphdmFTY3JpcHRGb3JtYXQoZG91YmxlLCBEdG9hQnVmZmVyLCB1
bnNpZ25lZCogcmVzdWx0TGVuZ3RoKTsKK0pTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIGRvdWJsZVRv
U3RyaW5nSW5KYXZhU2NyaXB0Rm9ybWF0KGRvdWJsZSwgRHRvYUJ1ZmZlciwgdW5zaWduZWQqIHJl
c3VsdExlbmd0aCk7CiAKIH0gLy8gbmFtZXNwYWNlIFdURgogCkluZGV4OiBKYXZhU2NyaXB0Q29y
ZS93dGYvQXNzZXJ0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9Bc3Nl
cnRpb25zLmgJKHJldmlzaW9uIDYxMzI3KQorKysgSmF2YVNjcmlwdENvcmUvd3RmL0Fzc2VydGlv
bnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTM3LDEzICsxMzcsMTMgQEAKICAgICBXVEZMb2dDaGFu
bmVsU3RhdGUgc3RhdGU7CiB9IFdURkxvZ0NoYW5uZWw7CiAKLXZvaWQgV1RGUmVwb3J0QXNzZXJ0
aW9uRmFpbHVyZShjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciogZnVuY3Rp
b24sIGNvbnN0IGNoYXIqIGFzc2VydGlvbik7Ci12b2lkIFdURlJlcG9ydEFzc2VydGlvbkZhaWx1
cmVXaXRoTWVzc2FnZShjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciogZnVu
Y3Rpb24sIGNvbnN0IGNoYXIqIGFzc2VydGlvbiwgY29uc3QgY2hhciogZm9ybWF0LCAuLi4pIFdU
Rl9BVFRSSUJVVEVfUFJJTlRGKDUsIDYpOwotdm9pZCBXVEZSZXBvcnRBcmd1bWVudEFzc2VydGlv
bkZhaWx1cmUoY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9u
LCBjb25zdCBjaGFyKiBhcmdOYW1lLCBjb25zdCBjaGFyKiBhc3NlcnRpb24pOwotdm9pZCBXVEZS
ZXBvcnRGYXRhbEVycm9yKGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiBm
dW5jdGlvbiwgY29uc3QgY2hhciogZm9ybWF0LCAuLi4pIFdURl9BVFRSSUJVVEVfUFJJTlRGKDQs
IDUpOwotdm9pZCBXVEZSZXBvcnRFcnJvcihjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29u
c3QgY2hhciogZnVuY3Rpb24sIGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKSBXVEZfQVRUUklCVVRF
X1BSSU5URig0LCA1KTsKLXZvaWQgV1RGTG9nKFdURkxvZ0NoYW5uZWwqIGNoYW5uZWwsIGNvbnN0
IGNoYXIqIGZvcm1hdCwgLi4uKSBXVEZfQVRUUklCVVRFX1BSSU5URigyLCAzKTsKLXZvaWQgV1RG
TG9nVmVyYm9zZShjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciogZnVuY3Rp
b24sIFdURkxvZ0NoYW5uZWwqIGNoYW5uZWwsIGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKSBXVEZf
QVRUUklCVVRFX1BSSU5URig1LCA2KTsKK0pTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIFdURlJlcG9y
dEFzc2VydGlvbkZhaWx1cmUoY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIq
IGZ1bmN0aW9uLCBjb25zdCBjaGFyKiBhc3NlcnRpb24pOworSlNfRVhQT1JURURfU1lNQk9MIHZv
aWQgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZVdpdGhNZXNzYWdlKGNvbnN0IGNoYXIqIGZpbGUs
IGludCBsaW5lLCBjb25zdCBjaGFyKiBmdW5jdGlvbiwgY29uc3QgY2hhciogYXNzZXJ0aW9uLCBj
b25zdCBjaGFyKiBmb3JtYXQsIC4uLikgV1RGX0FUVFJJQlVURV9QUklOVEYoNSwgNik7CitKU19F
WFBPUlRFRF9TWU1CT0wgdm9pZCBXVEZSZXBvcnRBcmd1bWVudEFzc2VydGlvbkZhaWx1cmUoY29u
c3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uLCBjb25zdCBjaGFy
KiBhcmdOYW1lLCBjb25zdCBjaGFyKiBhc3NlcnRpb24pOworSlNfRVhQT1JURURfU1lNQk9MIHZv
aWQgV1RGUmVwb3J0RmF0YWxFcnJvcihjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3Qg
Y2hhciogZnVuY3Rpb24sIGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKSBXVEZfQVRUUklCVVRFX1BS
SU5URig0LCA1KTsKK0pTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIFdURlJlcG9ydEVycm9yKGNvbnN0
IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiBmdW5jdGlvbiwgY29uc3QgY2hhciog
Zm9ybWF0LCAuLi4pIFdURl9BVFRSSUJVVEVfUFJJTlRGKDQsIDUpOworSlNfRVhQT1JURURfU1lN
Qk9MIHZvaWQgV1RGTG9nKFdURkxvZ0NoYW5uZWwqIGNoYW5uZWwsIGNvbnN0IGNoYXIqIGZvcm1h
dCwgLi4uKSBXVEZfQVRUUklCVVRFX1BSSU5URigyLCAzKTsKK0pTX0VYUE9SVEVEX1NZTUJPTCB2
b2lkIFdURkxvZ1ZlcmJvc2UoY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIq
IGZ1bmN0aW9uLCBXVEZMb2dDaGFubmVsKiBjaGFubmVsLCBjb25zdCBjaGFyKiBmb3JtYXQsIC4u
LikgV1RGX0FUVFJJQlVURV9QUklOVEYoNSwgNik7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpJ
bmRleDogSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oCShyZXZpc2lvbiA2
MTMyNykKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEwMCwxMiArMTAwLDEyIEBACiAgICAgCiBjbGFzcyBNdXRleCA6IHB1Ymxp
YyBOb25jb3B5YWJsZSB7CiBwdWJsaWM6Ci0gICAgTXV0ZXgoKTsKLSAgICB+TXV0ZXgoKTsKKyAg
ICBKU19FWFBPUlRFRF9TWU1CT0wgTXV0ZXgoKTsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgfk11
dGV4KCk7CiAKLSAgICB2b2lkIGxvY2soKTsKLSAgICBib29sIHRyeUxvY2soKTsKLSAgICB2b2lk
IHVubG9jaygpOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIGxvY2soKTsKKyAgICBKU19F
WFBPUlRFRF9TWU1CT0wgYm9vbCB0cnlMb2NrKCk7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIHZv
aWQgdW5sb2NrKCk7CiAKIHB1YmxpYzoKICAgICBQbGF0Zm9ybU11dGV4JiBpbXBsKCkgeyByZXR1
cm4gbV9tdXRleDsgfQpAQCAtMTM0LDE1ICsxMzQsMTUgQEAKIAogY2xhc3MgVGhyZWFkQ29uZGl0
aW9uIDogcHVibGljIE5vbmNvcHlhYmxlIHsKIHB1YmxpYzoKLSAgICBUaHJlYWRDb25kaXRpb24o
KTsKLSAgICB+VGhyZWFkQ29uZGl0aW9uKCk7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIFRocmVh
ZENvbmRpdGlvbigpOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB+VGhyZWFkQ29uZGl0aW9uKCk7
CiAgICAgCi0gICAgdm9pZCB3YWl0KE11dGV4JiBtdXRleCk7CisgICAgSlNfRVhQT1JURURfU1lN
Qk9MIHZvaWQgd2FpdChNdXRleCYgbXV0ZXgpOwogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUg
Y29uZGl0aW9uIHdhcyBzaWduYWxlZCBiZWZvcmUgYWJzb2x1dGVUaW1lLCBmYWxzZSBpZiB0aGUg
YWJzb2x1dGVUaW1lIHdhcyByZWFjaGVkIG9yIGlzIGluIHRoZSBwYXN0LgogICAgIC8vIFRoZSBh
YnNvbHV0ZVRpbWUgaXMgaW4gc2Vjb25kcywgc3RhcnRpbmcgb24gSmFudWFyeSAxLCAxOTcwLiBU
aGUgdGltZSBpcyBhc3N1bWVkIHRvIHVzZSB0aGUgc2FtZSB0aW1lIHpvbmUgYXMgV1RGOjpjdXJy
ZW50VGltZSgpLgotICAgIGJvb2wgdGltZWRXYWl0KE11dGV4JiwgZG91YmxlIGFic29sdXRlVGlt
ZSk7Ci0gICAgdm9pZCBzaWduYWwoKTsKLSAgICB2b2lkIGJyb2FkY2FzdCgpOworICAgIEpTX0VY
UE9SVEVEX1NZTUJPTCBib29sIHRpbWVkV2FpdChNdXRleCYsIGRvdWJsZSBhYnNvbHV0ZVRpbWUp
OworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIHNpZ25hbCgpOworICAgIEpTX0VYUE9SVEVE
X1NZTUJPTCB2b2lkIGJyb2FkY2FzdCgpOwogICAgIAogcHJpdmF0ZToKICAgICBQbGF0Zm9ybUNv
bmRpdGlvbiBtX2NvbmRpdGlvbjsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuaAkocmV2aXNpb24gNjEzMjcpCisrKyBKYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsOCArMTAwLDggQEAKICAgICAg
ICAgSlNWYWx1ZSBleGVjdXRlKEV2YWxFeGVjdXRhYmxlKiBldmFsTm9kZSwgQ2FsbEZyYW1lKiBl
eGVjLCBKU09iamVjdCogdGhpc09iaiwgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW4sIEpTVmFs
dWUqIGV4Y2VwdGlvbik7CiAKICAgICAgICAgSlNWYWx1ZSByZXRyaWV2ZUFyZ3VtZW50cyhDYWxs
RnJhbWUqLCBKU0Z1bmN0aW9uKikgY29uc3Q7Ci0gICAgICAgIEpTVmFsdWUgcmV0cmlldmVDYWxs
ZXIoQ2FsbEZyYW1lKiwgSlNGdW5jdGlvbiopIGNvbnN0OwotICAgICAgICB2b2lkIHJldHJpZXZl
TGFzdENhbGxlcihDYWxsRnJhbWUqLCBpbnQmIGxpbmVOdW1iZXIsIGludHB0cl90JiBzb3VyY2VJ
RCwgVVN0cmluZyYgc291cmNlVVJMLCBKU1ZhbHVlJiBmdW5jdGlvbikgY29uc3Q7CisgICAgICAg
IEpTX0VYUE9SVEVEX1NZTUJPTCBKU1ZhbHVlIHJldHJpZXZlQ2FsbGVyKENhbGxGcmFtZSosIEpT
RnVuY3Rpb24qKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZvaWQgcmV0cmll
dmVMYXN0Q2FsbGVyKENhbGxGcmFtZSosIGludCYgbGluZU51bWJlciwgaW50cHRyX3QmIHNvdXJj
ZUlELCBVU3RyaW5nJiBzb3VyY2VVUkwsIEpTVmFsdWUmIGZ1bmN0aW9uKSBjb25zdDsKICAgICAg
ICAgCiAgICAgICAgIHZvaWQgZ2V0QXJndW1lbnRzRGF0YShDYWxsRnJhbWUqLCBKU0Z1bmN0aW9u
KiYsIHB0cmRpZmZfdCYgZmlyc3RQYXJhbWV0ZXJJbmRleCwgUmVnaXN0ZXIqJiBhcmd2LCBpbnQm
IGFyZ2MpOwogICAgICAgICAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9KU05vZGVM
aXN0LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0pTTm9kZUxpc3Qu
YwkocmV2aXNpb24gNjEzMjcpCisrKyBKYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvSlNOb2RlTGlz
dC5jCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2ICsyMyw4IEBACiAgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAq
LwogCisjaW5jbHVkZSAiY29uZmlnLmgiCisKICNpbmNsdWRlICJKU05vZGUuaCIKICNpbmNsdWRl
ICJKU05vZGVMaXN0LmgiCiAjaW5jbHVkZSAiSlNPYmplY3RSZWYuaCIKSW5kZXg6IEphdmFTY3Jp
cHRDb3JlL0FQSS90ZXN0cy9KU05vZGUuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9B
UEkvdGVzdHMvSlNOb2RlLmMJKHJldmlzaW9uIDYxMzI3KQorKysgSmF2YVNjcmlwdENvcmUvQVBJ
L3Rlc3RzL0pTTm9kZS5jCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2ICsyMyw4IEBACiAgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKICAqLwogCisjaW5jbHVkZSAiY29uZmlnLmgiCisKICNpbmNsdWRlICJKU05vZGUu
aCIKICNpbmNsdWRlICJKU05vZGVMaXN0LmgiCiAjaW5jbHVkZSAiSlNPYmplY3RSZWYuaCIKSW5k
ZXg6IEphdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2
YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkuYwkocmV2aXNpb24gNjEzMjcpCisrKyBKYXZh
U2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5jCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2ICsy
Myw4IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCisjaW5jbHVkZSAiY29uZmlnLmgiCisKICNp
bmNsdWRlICJKYXZhU2NyaXB0Q29yZS5oIgogI2luY2x1ZGUgIkpTQmFzZVByaXZhdGUuaCIKICNp
bmNsdWRlICJKU0NvbnRleHRSZWZQcml2YXRlLmgiCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9BUEkv
dGVzdHMvbWluaWRvbS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9t
aW5pZG9tLmMJKHJldmlzaW9uIDYxMzI3KQorKysgSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL21p
bmlkb20uYwkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsOCBAQAogICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CiAgKi8KIAorI2luY2x1ZGUgImNvbmZpZy5oIgorCiAjaW5jbHVkZSAiSlNDb250ZXh0UmVmLmgi
CiAjaW5jbHVkZSAiSlNOb2RlLmgiCiAjaW5jbHVkZSAiSlNPYmplY3RSZWYuaCIKSW5kZXg6IEph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9DaGFu
Z2VMb2cJKHJldmlzaW9uIDYxMzQ5KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTI2IEBACisyMDEwLTA2LTE3ICBLZXZpbiBPbGxpdmllciAg
PGtldmlub0B0aGVvbGxpdmllcnMuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFVzZSBKU19FWFBPUlRFRF9TWU1CT0wgdG8gZXhwb3J0IEpTQ29y
ZSBzeW1ib2xzIG5lZWRlZCBieSBvdGhlciBXZWJLaXQgbGlicmFyaWVzLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc1NTEKKworICAgICAgICAqIEFQ
SS90ZXN0cy9KU05vZGUuYzoKKyAgICAgICAgKiBBUEkvdGVzdHMvSlNOb2RlTGlzdC5jOgorICAg
ICAgICAqIEFQSS90ZXN0cy9taW5pZG9tLmM6CisgICAgICAgICogQVBJL3Rlc3RzL3Rlc3RhcGku
YzoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAg
KiBjb25maWcuaDoKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlci5oOgorICAgICAgICAqIGRl
YnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmg6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXIuaDoKKyAgICAgICAgKiBwY3JlL3BjcmUuaDoKKyAgICAgICAgKiBwcm9maWxlci9Qcm9m
aWxlci5oOgorICAgICAgICAqIHJ1bnRpbWUvQXJnTGlzdC5oOgorICAgICAgICAqIHJ1bnRpbWUv
Q2FsbERhdGEuaDoKKyAgICAgICAgKiBydW50aW1lL0NvbGxlY3Rvci5jcHA6CisgICAgICAgICog
cnVudGltZS9Db2xsZWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL0NvbGxlY3RvckhlYXBJdGVy
YXRvci5oOgorICAgICAgICAqIHJ1bnRpbWUvQ29tcGxldGlvbi5oOgorICAgICAgICAqIHJ1bnRp
bWUvQ29uc3RydWN0RGF0YS5oOgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZUluc3RhbmNlLmg6Cisg
ICAgICAgICogcnVudGltZS9FcnJvci5oOgorICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uSGVs
cGVycy5oOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oOgorICAgICAg
ICAqIHJ1bnRpbWUvSWRlbnRpZmllci5oOgorICAgICAgICAqIHJ1bnRpbWUvSW5pdGlhbGl6ZVRo
cmVhZGluZy5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNBcnJheS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNCeXRlQXJyYXkuaDoK
KyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5oOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnZwdHIp
OgorICAgICAgICAoSlNDOjpKU0NlbGw6OnNldFZQdHIpOgorICAgICAgICAoSlNDOjpKU0NlbGw6
OmlzU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKiBy
dW50aW1lL0pTR2xvYmFsRGF0YS5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbERhdGE6Oik6Cisg
ICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2Jh
bE9iamVjdDo6SlNHbG9iYWxPYmplY3REYXRhOjpKU0dsb2JhbE9iamVjdERhdGEpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNMb2NrLmg6CisgICAgICAgIChKU0M6OkpTTG9jazo6KToKKyAgICAgICAg
KiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpwcm90b3R5cGUp
OgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRE
aXJlY3RGdW5jdGlvbik6CisgICAgICAgICogcnVudGltZS9KU09iamVjdFdpdGhHbG9iYWxPYmpl
Y3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTU3RyaW5nLmg6CisgICAgICAgIChKU0M6OkpTU3Ry
aW5nOjp2YWx1ZSk6CisgICAgICAgICogcnVudGltZS9KU1ZhbHVlLmg6CisgICAgICAgICogcnVu
dGltZS9KU1ZhcmlhYmxlT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTVmFyaWFibGVPYmplY3Q6
OnN5bWJvbFRhYmxlKToKKyAgICAgICAgKiBydW50aW1lL0pTV3JhcHBlck9iamVjdC5oOgorICAg
ICAgICAqIHJ1bnRpbWUvTG9va3VwLmg6CisgICAgICAgICogcnVudGltZS9NYXJrU3RhY2suaDoK
KyAgICAgICAgKiBydW50aW1lL09iamVjdFByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUv
UHJvcGVydHlEZXNjcmlwdG9yLmg6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJh
eS5oOgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlTbG90Lmg6CisgICAgICAgICogcnVudGlt
ZS9Sb3BlSW1wbC5oOgorICAgICAgICAqIHJ1bnRpbWUvU21hbGxTdHJpbmdzLmg6CisgICAgICAg
ICogcnVudGltZS9TdHJpbmdPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5o
OgorICAgICAgICAqIHJ1bnRpbWUvVGltZW91dENoZWNrZXIuaDoKKyAgICAgICAgKiBydW50aW1l
L1VTdHJpbmcuaDoKKyAgICAgICAgKEpTQzo6VVN0cmluZzo6VVN0cmluZyk6CisgICAgICAgIChK
U0M6OlVTdHJpbmc6OmlzTnVsbCk6CisgICAgICAgIChKU0M6OlVTdHJpbmc6On5VU3RyaW5nKToK
KyAgICAgICAgKEpTQzo6VVN0cmluZzo6b3BlcmF0b3I9KToKKyAgICAgICAgKiB3c2NyaXB0Ogor
ICAgICAgICAqIHd0Zi9Bc3NlcnRpb25zLmg6CisgICAgICAgICogd3RmL0J5dGVBcnJheS5oOgor
ICAgICAgICAqIHd0Zi9DdXJyZW50VGltZS5oOgorICAgICAgICAoV1RGOjpjdXJyZW50VGltZU1T
KToKKyAgICAgICAgKFdURjo6Z2V0TG9jYWxUaW1lKToKKyAgICAgICAgKiB3dGYvRGF0ZU1hdGgu
aDoKKyAgICAgICAgKiB3dGYvRmFzdE1hbGxvYy5oOgorICAgICAgICAoV1RGOjpUcnlNYWxsb2NS
ZXR1cm5WYWx1ZTo6VHJ5TWFsbG9jUmV0dXJuVmFsdWUpOgorICAgICAgICAoV1RGOjpUcnlNYWxs
b2NSZXR1cm5WYWx1ZTo6flRyeU1hbGxvY1JldHVyblZhbHVlKToKKyAgICAgICAgKFdURjo6VHJ5
TWFsbG9jUmV0dXJuVmFsdWU6Om9wZXJhdG9yIFBvc3NpYmx5TnVsbDxUPik6CisgICAgICAgIChX
VEY6OlRyeU1hbGxvY1JldHVyblZhbHVlOjpnZXRWYWx1ZSk6CisgICAgICAgIChXVEY6OkludGVy
bmFsOjopOgorICAgICAgICAoV1RGOjpJbnRlcm5hbDo6ZmFzdE1hbGxvY01hdGNoVmFsaWRhdGlv
blR5cGUpOgorICAgICAgICAoV1RGOjpJbnRlcm5hbDo6ZmFzdE1hbGxvY01hdGNoVmFsaWRhdGlv
blZhbHVlKToKKyAgICAgICAgKFdURjo6SW50ZXJuYWw6OnNldEZhc3RNYWxsb2NNYXRjaFZhbGlk
YXRpb25UeXBlKToKKyAgICAgICAgKFdURjo6ZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVNYWxsb2Mp
OgorICAgICAgICAoV1RGOjpmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZUZyZWUpOgorICAgICAgICAq
IHd0Zi9NYWluVGhyZWFkLmg6CisgICAgICAgICogd3RmL1JhbmRvbU51bWJlci5oOgorICAgICAg
ICAqIHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaDoKKyAgICAgICAgKFdURjo6KToKKyAgICAg
ICAgKiB3dGYvVGhyZWFkU3BlY2lmaWMuaDoKKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nLmg6Cisg
ICAgICAgICogd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaDoKKyAgICAgICAgKiB3dGYvV1RGVGhy
ZWFkRGF0YS5oOgorICAgICAgICAqIHd0Zi9kdG9hLmg6CisgICAgICAgICogd3RmL3RleHQvQXRv
bWljU3RyaW5nLmg6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNTdHJpbmc6OkF0b21pY1N0cmlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNTdHJpbmc6OmlzSGFzaFRhYmxlRGVsZXRlZFZh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkF0b21pY1N0cmluZzo6fkF0b21pY1N0cmluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpBdG9taWNTdHJpbmc6OmltcGwpOgorICAgICAgICAoV2ViQ29yZTo6
QXRvbWljU3RyaW5nOjpvcGVyYXRvcj0pOgorICAgICAgICAqIHd0Zi90ZXh0L0NTdHJpbmcuaDoK
KyAgICAgICAgKFdURjo6Q1N0cmluZzo6fkNTdHJpbmcpOgorICAgICAgICAoV1RGOjpDU3RyaW5n
OjpkYXRhKToKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmg6CisgICAgICAgIChXZWJD
b3JlOjpTdHJpbmdJbXBsOjpjaGFyYWN0ZXJzKToKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdT
dGF0aWNzLmNwcDoKKyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlN0cmluZzo6U3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlN0cmluZzo6flN0cmlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpTdHJpbmc6OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmU6OlN0cmluZzo6aXNFbXB0eSk6CisgICAgICAgIChXZWJDb3JlOjpT
dHJpbmc6OmltcGwpOgorICAgICAgICAoV2ViQ29yZTo6U3RyaW5nOjpvcGVyYXRvcj0pOgorICAg
ICAgICAqIHd0Zi91bmljb2RlL0NvbGxhdG9yLmg6CisgICAgICAgIChXVEY6Oik6CisgICAgICAg
ICogd3RmL3VuaWNvZGUvVVRGOC5oOgorCiAyMDEwLTA2LTE3ICBTaHUgQ2hhbmcgIDxjaGFuZy5z
aHVAbm9raWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0
aWFuc2VuLgpJbmRleDogSmF2YVNjcmlwdENvcmUvcGNyZS9wY3JlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SmF2YVNjcmlwdENvcmUvcGNyZS9wY3JlLmgJKHJldmlzaW9uIDYxMzI3KQorKysgSmF2YVNjcmlw
dENvcmUvcGNyZS9wY3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDE0ICs1NSwxNCBAQAogY29u
c3QgaW50IEpTUmVnRXhwRXJyb3JOb01lbW9yeSA9IC0zOwogY29uc3QgaW50IEpTUmVnRXhwRXJy
b3JJbnRlcm5hbCA9IC00OwogCi1KU1JlZ0V4cCoganNSZWdFeHBDb21waWxlKGNvbnN0IFVDaGFy
KiBwYXR0ZXJuLCBpbnQgcGF0dGVybkxlbmd0aCwKK0pTX0VYUE9SVEVEX1NZTUJPTCBKU1JlZ0V4
cCoganNSZWdFeHBDb21waWxlKGNvbnN0IFVDaGFyKiBwYXR0ZXJuLCBpbnQgcGF0dGVybkxlbmd0
aCwKICAgICBKU1JlZ0V4cElnbm9yZUNhc2VPcHRpb24sIEpTUmVnRXhwTXVsdGlsaW5lT3B0aW9u
LAogICAgIHVuc2lnbmVkKiBudW1TdWJwYXR0ZXJucywgY29uc3QgY2hhcioqIGVycm9yTWVzc2Fn
ZSk7CiAKLWludCBqc1JlZ0V4cEV4ZWN1dGUoY29uc3QgSlNSZWdFeHAqLAorSlNfRVhQT1JURURf
U1lNQk9MIGludCBqc1JlZ0V4cEV4ZWN1dGUoY29uc3QgSlNSZWdFeHAqLAogICAgIGNvbnN0IFVD
aGFyKiBzdWJqZWN0LCBpbnQgc3ViamVjdExlbmd0aCwgaW50IHN0YXJ0T2Zmc2V0LAogICAgIGlu
dCogb2Zmc2V0c1ZlY3RvciwgaW50IG9mZnNldHNWZWN0b3JMZW5ndGgpOwogCi12b2lkIGpzUmVn
RXhwRnJlZShKU1JlZ0V4cCopOworSlNfRVhQT1JURURfU1lNQk9MIHZvaWQganNSZWdFeHBGcmVl
KEpTUmVnRXhwKik7CiAKICNlbmRpZgpJbmRleDogSmF2YVNjcmlwdENvcmUvd3NjcmlwdAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93c2NyaXB0CShyZXZpc2lvbiA2MTMyNykKKysrIEph
dmFTY3JpcHRDb3JlL3dzY3JpcHQJKHdvcmtpbmcgY29weSkKQEAgLTc1LDYgKzc1LDcgQEAKIGRl
ZiBidWlsZChibGQpOgogICAgIGltcG9ydCBPcHRpb25zCiAKKyAgICBibGQuZW52LkxJQkRJUiA9
IG91dHB1dF9kaXIKICAgICBmdWxsX2RpcnMgPSBnZXRfZGlyc19mb3JfZmVhdHVyZXMoanNjb3Jl
X2RpciwgZmVhdHVyZXM9W2J1aWxkX3BvcnRdLCBkaXJzPWpzY29yZV9kaXJzKQogCiAgICAgaW5j
bHVkZXMgPSBjb21tb25faW5jbHVkZXMgKyBmdWxsX2RpcnMKQEAgLTgzLDkgKzg0LDEwIEBACiAK
ICAgICAjIDEuIEEgc2ltcGxlIHByb2dyYW0KICAgICBqc2NvcmUgPSBibGQubmV3X3Rhc2tfZ2Vu
KAotICAgICAgICBmZWF0dXJlcyA9ICdjeHggY3N0YXRpY2xpYicsCisgICAgICAgIGZlYXR1cmVz
ID0gJ2N4eCBjc2hsaWIgaW1wbGliJywKICAgICAgICAgaW5jbHVkZXMgPSAnLiAuLiBhc3NlbWJs
ZXIgRGVyaXZlZFNvdXJjZXMgRm9yd2FyZGluZ0hlYWRlcnMgJyArICcgJy5qb2luKGluY2x1ZGVz
KSwKICAgICAgICAgc291cmNlID0gc291cmNlcywKKyAgICAgICAgZGVmaW5lcyA9IFsnQlVJTERJ
TkdfSmF2YVNjcmlwdENvcmUnXSwKICAgICAgICAgdGFyZ2V0ID0gJ2pzY29yZScsCiAgICAgICAg
IHVzZWxpYiA9ICdXWCBJQ1UgJyArIGdldF9jb25maWcoKSwKICAgICAgICAgdXNlbGliX2xvY2Fs
ID0gJycsCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIEphdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyLmgJKHJldmlzaW9uIDYxMzI3
KQorKysgSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtNTEsMTEgKzUxLDExIEBACiAgICAgICAgICAgICByZXR1cm4gJnNfc2hhcmVkRW5hYmxlZFBy
b2ZpbGVyUmVmZXJlbmNlOwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIFByb2ZpbGVyKiBw
cm9maWxlcigpOyAKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHN0YXRpYyBQcm9maWxlciog
cHJvZmlsZXIoKTsgCiAgICAgICAgIHN0YXRpYyBDYWxsSWRlbnRpZmllciBjcmVhdGVDYWxsSWRl
bnRpZmllcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUsIGNvbnN0IFVTdHJpbmcmIHNvdXJjZVVS
TCwgaW50IGxpbmVOdW1iZXIpOwogCi0gICAgICAgIHZvaWQgc3RhcnRQcm9maWxpbmcoRXhlY1N0
YXRlKiwgY29uc3QgVVN0cmluZyYgdGl0bGUpOwotICAgICAgICBQYXNzUmVmUHRyPFByb2ZpbGU+
IHN0b3BQcm9maWxpbmcoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYgdGl0bGUpOworICAgICAg
ICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBzdGFydFByb2ZpbGluZyhFeGVjU3RhdGUqLCBjb25z
dCBVU3RyaW5nJiB0aXRsZSk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBQYXNzUmVmUHRy
PFByb2ZpbGU+IHN0b3BQcm9maWxpbmcoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYgdGl0bGUp
OwogCiAgICAgICAgIHZvaWQgd2lsbEV4ZWN1dGUoRXhlY1N0YXRlKiwgSlNWYWx1ZSBmdW5jdGlv
bik7CiAgICAgICAgIHZvaWQgd2lsbEV4ZWN1dGUoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYg
c291cmNlVVJMLCBpbnQgc3RhcnRpbmdMaW5lTnVtYmVyKTsKSW5kZXg6IEphdmFTY3JpcHRDb3Jl
L2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENv
cmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuaAkocmV2aXNpb24gNjEzMjcpCisrKyBKYXZh
U2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC01MSwxMCArNTEsMTAgQEAKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGR5bmFtaWNHbG9iYWxP
YmplY3QoKSBjb25zdCB7IHJldHVybiBtX2NhbGxGcmFtZS0+ZHluYW1pY0dsb2JhbE9iamVjdCgp
OyB9CiAgICAgICAgIGNvbnN0IFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluKCkgY29uc3QgeyBy
ZXR1cm4gbV9jYWxsRnJhbWUtPnNjb3BlQ2hhaW4oKTsgfQogICAgICAgICBjb25zdCBVU3RyaW5n
KiBmdW5jdGlvbk5hbWUoKSBjb25zdDsKLSAgICAgICAgVVN0cmluZyBjYWxjdWxhdGVkRnVuY3Rp
b25OYW1lKCkgY29uc3Q7Ci0gICAgICAgIFR5cGUgdHlwZSgpIGNvbnN0OwotICAgICAgICBKU09i
amVjdCogdGhpc09iamVjdCgpIGNvbnN0OwotICAgICAgICBKU1ZhbHVlIGV2YWx1YXRlKGNvbnN0
IFVTdHJpbmcmLCBKU1ZhbHVlJiBleGNlcHRpb24pIGNvbnN0OworICAgICAgICBKU19FWFBPUlRF
RF9TWU1CT0wgVVN0cmluZyBjYWxjdWxhdGVkRnVuY3Rpb25OYW1lKCkgY29uc3Q7CisgICAgICAg
IEpTX0VYUE9SVEVEX1NZTUJPTCBUeXBlIHR5cGUoKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JU
RURfU1lNQk9MIEpTT2JqZWN0KiB0aGlzT2JqZWN0KCkgY29uc3Q7CisgICAgICAgIEpTX0VYUE9S
VEVEX1NZTUJPTCBKU1ZhbHVlIGV2YWx1YXRlKGNvbnN0IFVTdHJpbmcmLCBKU1ZhbHVlJiBleGNl
cHRpb24pIGNvbnN0OwogICAgICAgICBKU1ZhbHVlIGV4Y2VwdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fZXhjZXB0aW9uOyB9CiAKICAgICBwcml2YXRlOgpJbmRleDogSmF2YVNjcmlwdENvcmUvZGVi
dWdnZXIvRGVidWdnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9E
ZWJ1Z2dlci5oCShyZXZpc2lvbiA2MTMyNykKKysrIEphdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0Rl
YnVnZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDEwICszNiwxMCBAQAogCiAgICAgY2xhc3Mg
RGVidWdnZXIgewogICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCB+RGVidWdnZXIoKTsKKyAg
ICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgfkRlYnVnZ2VyKCk7CiAKLSAgICAgICAg
dm9pZCBhdHRhY2goSlNHbG9iYWxPYmplY3QqKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRldGFj
aChKU0dsb2JhbE9iamVjdCopOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBhdHRh
Y2goSlNHbG9iYWxPYmplY3QqKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwg
dm9pZCBkZXRhY2goSlNHbG9iYWxPYmplY3QqKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgc291
cmNlUGFyc2VkKEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBpbnQgZXJyb3JMaW5lTnVt
YmVyLCBjb25zdCBVU3RyaW5nJiBlcnJvck1lc3NhZ2UpID0gMDsKICAgICAgICAgdmlydHVhbCB2
b2lkIGV4Y2VwdGlvbihjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlE
LCBpbnQgbGluZU51bWJlciwgYm9vbCBoYXNIYW5kbGVyKSA9IDA7CkBAIC01MSw3ICs1MSw3IEBA
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRFeGVjdXRlUHJvZ3JhbShjb25zdCBEZWJ1Z2dlckNh
bGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlcikgPSAwOwogICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVhY2hCcmVha3BvaW50KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1l
JiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyKSA9IDA7CiAKLSAgICAgICAgdm9p
ZCByZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucyhKU0dsb2JhbERhdGEqKTsKKyAgICAgICAgSlNfRVhQ
T1JURURfU1lNQk9MIHZvaWQgcmVjb21waWxlQWxsSlNGdW5jdGlvbnMoSlNHbG9iYWxEYXRhKik7
CiAKICAgICBwcml2YXRlOgogICAgICAgICBIYXNoU2V0PEpTR2xvYmFsT2JqZWN0Kj4gbV9nbG9i
YWxPYmplY3RzOwpJbmRleDogSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEphdmFTY3JpcHRHbHVlL0NoYW5nZUxvZwkocmV2aXNpb24gNjEzNDkpCisrKyBKYXZhU2NyaXB0
R2x1ZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMiBAQAorMjAxMC0wNi0x
NyAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgSlNfRVhQT1JURURfU1lN
Qk9MIHRvIGV4cG9ydCBKU0NvcmUgc3ltYm9scyBuZWVkZWQgYnkgb3RoZXIgV2ViS2l0IGxpYnJh
cmllcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3
NTUxCisKKyAgICAgICAgKiBjb25maWcuaDoKKwogMjAxMC0wNi0wMiAgR2F2aW4gQmFycmFjbG91
Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVy
IEh1bnQuCkluZGV4OiBKYXZhU2NyaXB0R2x1ZS9jb25maWcuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZh
U2NyaXB0R2x1ZS9jb25maWcuaAkocmV2aXNpb24gNjEzMjcpCisrKyBKYXZhU2NyaXB0R2x1ZS9j
b25maWcuaAkod29ya2luZyBjb3B5KQpAQCAtMTcsNSArMTcsNCBAQAogLyogVXNpbmcgVjggaW1w
bGllcyBub3QgdXNpbmcgSlNDIGFuZCB2aWNlIHZlcnNhICovCiAjZGVmaW5lIFdURl9VU0VfSlND
ICFXVEZfVVNFX1Y4CiAKLSNkZWZpbmUgSlNfRVhQT1JUREFUQQotI2RlZmluZSBKU19FWFBPUlRD
TEFTUworI2RlZmluZSBKU19FWFBPUlRFRF9TWU1CT0wKSW5kZXg6IFdlYktpdC9jZi9XZWJDb3Jl
U3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nm
L1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcAkocmV2aXNpb24gNjEzMjcp
CisrKyBXZWJLaXQvY2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zOSwxNCArMzksMTIgQEAKIAogI2lmIGRlZmluZWQoV0lOMzIpIHx8
IGRlZmluZWQoX1dJTjMyKQogI2lmIGRlZmluZWQoQlVJTERJTkdfSmF2YVNjcmlwdENvcmUpIHx8
IGRlZmluZWQoQlVJTERJTkdfV1RGKQotI2RlZmluZSBKU19FWFBPUlREQVRBIF9fZGVjbHNwZWMo
ZGxsZXhwb3J0KQorI2RlZmluZSBKU19FWFBPUlRFRF9TWU1CT0wgX19kZWNsc3BlYyhkbGxleHBv
cnQpCiAjZWxzZQotI2RlZmluZSBKU19FWFBPUlREQVRBIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQor
I2RlZmluZSBKU19FWFBPUlRFRF9TWU1CT0wgX19kZWNsc3BlYyhkbGxpbXBvcnQpCiAjZW5kaWYK
LSNkZWZpbmUgSlNfRVhQT1JUQ0xBU1MgSlNfRVhQT1JUREFUQQogI2Vsc2UKLSNkZWZpbmUgSlNf
RVhQT1JUREFUQQotI2RlZmluZSBKU19FWFBPUlRDTEFTUworI2RlZmluZSBKU19FWFBPUlRFRF9T
WU1CT0wKICNlbmRpZgogCiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yQ2xpZW50LmgiCkluZGV4OiBX
ZWJLaXQvY2YvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jZi9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDYxMzQ5KQorKysgV2ViS2l0L2NmL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDEyIEBACisyMDEwLTA2LTE3ICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVvbGxp
dmllcnMuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFVzZSBKU19FWFBPUlRFRF9TWU1CT0wgdG8gZXhwb3J0IEpTQ29yZSBzeW1ib2xzIG5lZWRl
ZCBieSBvdGhlciBXZWJLaXQgbGlicmFyaWVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc1NTEKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudENGLmNwcDoKKwogMjAxMC0wNi0xNCAgSWx5YSBUaWtob25vdnNreSAg
PGxvaXNsb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1h
bi4KSW5kZXg6IFdlYktpdC93eC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3d4L0No
YW5nZUxvZwkocmV2aXNpb24gNjEzNDkpCisrKyBXZWJLaXQvd3gvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTAtMDYtMTcgIEtldmluIE9sbGl2aWVyICA8a2V2
aW5vQHRoZW9sbGl2aWVycy5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVXNlIEpTX0VYUE9SVEVEX1NZTUJPTCB0byBleHBvcnQgSlNDb3JlIHN5
bWJvbHMgbmVlZGVkIGJ5IG90aGVyIFdlYktpdCBsaWJyYXJpZXMuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzU1MQorCisgICAgICAgICogd3Njcmlw
dDoKKwogMjAxMC0wNi0xNSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KSW5kZXg6IFdlYktpdC93eC93c2NyaXB0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC93eC93c2NyaXB0CShyZXZpc2lvbiA2MTMyNykKKysrIFdlYktpdC93
eC93c2NyaXB0CSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBACiAgICAgCiBkZWYgcHJl
X2J1aWxkKGJsZCk6CiAgICAgIiIiCi0gICAgVGhlIHd4V2ViS2l0IGxpYnJhcnkgc2hvdWxkIGJl
IHJlYnVpbHQgaWYganNjb3JlIG9yIHdlYmNvcmUgY2hhbmdlcywKKyAgICBUaGUgd3hXZWJLaXQg
bGlicmFyeSBzaG91bGQgYmUgcmVidWlsdCBpZiB3ZWJjb3JlIGNoYW5nZXMsCiAgICAgc28gd2Ug
bWFrZSB0aG9zZSBzdGF0aWMgbGlicyBhcyBkZXBlbmRlbmNpZXMuCiAgICAgIiIiCiAgICAgCkBA
IC03NCwxMyArNzQsMTAgQEAKICAgICBpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnd2luJyk6
CiAgICAgICAgIGV4dCA9ICcubGliJwogICAgIAotICAgIGxpYmpzY29yZSA9IG9zLnBhdGguam9p
bihvdXRwdXRfZGlyLCAnbGlianNjb3JlJXMnICUgZXh0KQogICAgIGxpYndlYmNvcmUgPSBvcy5w
YXRoLmpvaW4ob3V0cHV0X2RpciwgJ2xpYndlYmNvcmUlcycgJSBleHQpCiAgICAgCi0gICAgYXNz
ZXJ0IG9zLnBhdGguZXhpc3RzKGxpYmpzY29yZSkKICAgICBhc3NlcnQgb3MucGF0aC5leGlzdHMo
bGlid2ViY29yZSkKICAgICAKLSAgICBibGQuZW52LkNYWERFUFNfSlNDT1JFID0gVXRpbHMuaF9m
aWxlKGxpYmpzY29yZSkKICAgICBibGQuZW52LkNYWERFUFNfV0VCQ09SRSA9IFV0aWxzLmhfZmls
ZShsaWJ3ZWJjb3JlKQogICAgIAogZGVmIGJ1aWxkKGJsZCk6CkluZGV4OiBXZWJLaXQvbWFjL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gNjEz
NDkpCisrKyBXZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEy
IEBACisyMDEwLTA2LTE3ICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBK
U19FWFBPUlRFRF9TWU1CT0wgdG8gZXhwb3J0IEpTQ29yZSBzeW1ib2xzIG5lZWRlZCBieSBvdGhl
ciBXZWJLaXQgbGlicmFyaWVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9Mjc1NTEKKworICAgICAgICAqIFdlYktpdFByZWZpeC5oOgorCiAyMDEwLTA2
LTE3ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBTYW0gV2VpbmlnLgpJbmRleDogV2ViS2l0L21hYy9XZWJLaXRQcmVmaXguaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvbWFjL1dlYktpdFByZWZpeC5oCShyZXZpc2lvbiA2MTMyNykKKysrIFdlYktp
dC9tYWMvV2ViS2l0UHJlZml4LmgJKHdvcmtpbmcgY29weSkKQEAgLTcwLDYgKzcwLDggQEAKICNp
bXBvcnQgPENvY29hL0NvY29hLmg+CiAjZW5kaWYKIAorI2RlZmluZSBKU19FWFBPUlRFRF9TWU1C
T0wKKwogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogCiAjaW5jbHVkZSA8V2ViQ29yZS9FbXB0
eVByb3RvY29sRGVmaW5pdGlvbnMuaD4KQEAgLTg5LDYgKzkxLDQgQEAKICN1bmRlZiB0cnkKICN1
bmRlZiBjYXRjaAogCi0jZGVmaW5lIEpTX0VYUE9SVERBVEEKLSNkZWZpbmUgSlNfRVhQT1JUQ0xB
U1MKICNkZWZpbmUgV0VCS0lUX0VYUE9SVERBVEEKSW5kZXg6IFdlYkNvcmUvY29uZmlnLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9jb25maWcuaAkocmV2aXNpb24gNjEzMjcpCisrKyBXZWJDb3Jl
L2NvbmZpZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwyMSArMjksMTkgQEAKIAogI2luY2x1ZGUg
PHd0Zi9QbGF0Zm9ybS5oPgogCi0jaWYgIVBMQVRGT1JNKENIUk9NSVVNKSAmJiBPUyhXSU5ET1dT
KSAmJiAhZGVmaW5lZChCVUlMRElOR19XWF9fKSAmJiAhQ09NUElMRVIoR0NDKQorI2lmICFQTEFU
Rk9STShDSFJPTUlVTSkgJiYgT1MoV0lORE9XUykgJiYgIUNPTVBJTEVSKEdDQykKICNpZiBkZWZp
bmVkKEJVSUxESU5HX0phdmFTY3JpcHRDb3JlKSB8fCBkZWZpbmVkKEJVSUxESU5HX1dURikKLSNk
ZWZpbmUgSlNfRVhQT1JUREFUQSBfX2RlY2xzcGVjKGRsbGV4cG9ydCkKKyNkZWZpbmUgSlNfRVhQ
T1JURURfU1lNQk9MIF9fZGVjbHNwZWMoZGxsZXhwb3J0KQogI2Vsc2UKLSNkZWZpbmUgSlNfRVhQ
T1JUREFUQSBfX2RlY2xzcGVjKGRsbGltcG9ydCkKKyNkZWZpbmUgSlNfRVhQT1JURURfU1lNQk9M
IF9fZGVjbHNwZWMoZGxsaW1wb3J0KQogI2VuZGlmCiAjaWYgZGVmaW5lZChCVUlMRElOR19XZWJD
b3JlKSB8fCBkZWZpbmVkKEJVSUxESU5HX1dlYktpdCkKICNkZWZpbmUgV0VCS0lUX0VYUE9SVERB
VEEgX19kZWNsc3BlYyhkbGxleHBvcnQpCiAjZWxzZQogI2RlZmluZSBXRUJLSVRfRVhQT1JUREFU
QSBfX2RlY2xzcGVjKGRsbGltcG9ydCkKICNlbmRpZgotI2RlZmluZSBKU19FWFBPUlRDTEFTUyBK
U19FWFBPUlREQVRBCiAjZWxzZQotI2RlZmluZSBKU19FWFBPUlREQVRBCi0jZGVmaW5lIEpTX0VY
UE9SVENMQVNTCisjZGVmaW5lIEpTX0VYUE9SVEVEX1NZTUJPTAogI2RlZmluZSBXRUJLSVRfRVhQ
T1JUREFUQQogI2VuZGlmCiAKSW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA2MTM0OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTAtMDYtMTcgIEtldmluIE9sbGl2
aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIEpTX0VYUE9SVEVEX1NZTUJPTCB0byBleHBvcnQg
SlNDb3JlIHN5bWJvbHMgbmVlZGVkIGJ5IG90aGVyIFdlYktpdCBsaWJyYXJpZXMuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzU1MQorCisgICAgICAg
ICogYmluZGluZ3MvanMvSlNBcnJheUJ1ZmZlclZpZXdDdXN0b20uY3BwOgorICAgICAgICAqIGNv
bmZpZy5oOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9ndGsyZHJhd2luZy5jOgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9Mb2dnaW5nTWFjLm1tOgorICAgICAgICAqIHBsYXRmb3JtL3dpbmNlL1No
YXJlZFRpbWVyV2luY2UuY3BwOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0Zp
bHRlckJ1aWxkZXIuaDoKKwogMjAxMC0wNi0xNyAgS2ludWtvIFlhc3VkYSAgPGtpbnVrb0BjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSmlhbiBMaS4KSW5kZXg6IFdlYkNvcmUv
cGxhdGZvcm0vZ3RrL2d0azJkcmF3aW5nLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvZ3RrMmRyYXdpbmcuYwkocmV2aXNpb24gNjEzMjcpCisrKyBXZWJDb3JlL3BsYXRmb3Jt
L2d0ay9ndGsyZHJhd2luZy5jCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5j
bHVkZSA8Z2RrL2dka3ByaXZhdGUuaD4KICNpbmNsdWRlICJndGtkcmF3aW5nLmgiCiAKKyNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBc3NlcnRpb25zLmgiCiAKICNpbmNsdWRlIDxtYXRo
Lmg+CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2dnaW5nTWFjLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGxhdGZvcm0vbWFjL0xvZ2dpbmdNYWMubW0JKHJldmlzaW9uIDYxMzI3KQor
KysgV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9nZ2luZ01hYy5tbQkod29ya2luZyBjb3B5KQpAQCAt
MjMsNiArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAorI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpJbmRleDogV2Vi
Q29yZS9wbGF0Zm9ybS93aW5jZS9TaGFyZWRUaW1lcldpbmNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsYXRmb3JtL3dpbmNlL1NoYXJlZFRpbWVyV2luY2UuY3BwCShyZXZpc2lvbiA2MTMy
NykKKysrIFdlYkNvcmUvcGxhdGZvcm0vd2luY2UvU2hhcmVkVGltZXJXaW5jZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlIDx3aW5kb3dzLmg+CiAKIG5hbWVz
cGFjZSBKU0MgewotSlNfRVhQT1JUREFUQSBleHRlcm4gdm9pZCogZ19zdGFja0Jhc2U7CitKU19F
WFBPUlRFRF9TWU1CT0wgZXh0ZXJuIHZvaWQqIGdfc3RhY2tCYXNlOwogfQogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXJyYXlCdWZmZXJWaWV3Q3Vz
dG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXJyYXlCdWZmZXJW
aWV3Q3VzdG9tLmNwcAkocmV2aXNpb24gNjEzMjcpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pT
QXJyYXlCdWZmZXJWaWV3Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNiBA
QAogCiAjaWYgRU5BQkxFKDNEX0NBTlZBUykKIAotI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkpTQXJyYXlCdWZmZXJWaWV3LmgiCiAjaW5jbHVkZSAiSlNJbnQ4QXJyYXkuaCIKICNpbmNs
dWRlICJKU1VpbnQ4QXJyYXkuaCIKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRmlsdGVyQnVpbGRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oCShyZXZpc2lvbiA2MTMyNykKKysrIFdlYkNvcmUvc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
MCw4ICsyMCw2IEBACiAjaWZuZGVmIFNWR0ZpbHRlckJ1aWxkZXJfaAogI2RlZmluZSBTVkdGaWx0
ZXJCdWlsZGVyX2gKIAotI2luY2x1ZGUgImNvbmZpZy5oIgotCiAjaWYgRU5BQkxFKFNWRykgJiYg
RU5BQkxFKEZJTFRFUlMpCiAjaW5jbHVkZSAiQXRvbWljU3RyaW5nSGFzaC5oIgogI2luY2x1ZGUg
IkZpbHRlckVmZmVjdC5oIgpJbmRleDogV2ViS2l0VG9vbHMvd3gvYnVpbGQvc2V0dGluZ3MucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvd3gvYnVpbGQvc2V0dGluZ3MucHkJKHJldmlzaW9u
IDYxMzI3KQorKysgV2ViS2l0VG9vbHMvd3gvYnVpbGQvc2V0dGluZ3MucHkJKHdvcmtpbmcgY29w
eSkKQEAgLTI3MSw3ICsyNzEsNyBAQAogICAgIGlmIGJ1aWxkX3BvcnQgPT0gInd4IjoKICAgICAg
ICAgdXBkYXRlX3d4X2RlcHMoY29uZiwgd2tfcm9vdCwgbXN2Y192ZXJzaW9uKQogICAgIAotICAg
ICAgICBjb25mLmVudi5hcHBlbmRfdmFsdWUoJ0NYWERFRklORVMnLCBbJ0JVSUxESU5HX1dYX189
MScsICdKU19OT19FWFBPUlQnXSkKKyAgICAgICAgY29uZi5lbnYuYXBwZW5kX3ZhbHVlKCdDWFhE
RUZJTkVTJywgWydCVUlMRElOR19XWF9fPTEnXSkKIAogICAgICAgICBjb25mLmVudlsnTElCX1dY
V0VCS0lUJ10gPSBbJ3d4d2Via2l0J10KICAgICAgICAgY29uZi5lbnZbJ0NYWERFRklORVNfV1hX
RUJLSVQnXSA9IFsnV1hVU0lOR0RMTF9XRUJLSVQnXQpAQCAtMjg3LDcgKzI4Nyw3IEBACiAgICAg
ICAgICAgICBjb25mLmVudlsnTElCX1dYJ10gPSB3eGxpYnMKICAgICAgICAgICAgIGNvbmYuZW52
WydMSUJQQVRIX1dYJ10gPSB3eGxpYnBhdGhzCiAKLSAgICBjb25mLmVudlsnTElCX0pTQ09SRSdd
ID0gW2xpYnByZWZpeCArICdqc2NvcmUnXQorICAgIGNvbmYuZW52WydMSUJfSlNDT1JFJ10gPSBb
J2pzY29yZSddCiAgICAgY29uZi5lbnZbJ0xJQl9XRUJDT1JFJ10gPSBbbGlicHJlZml4ICsgJ3dl
YmNvcmUnXQogCiAgICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2RhcndpbicpOgpJbmRl
eDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vY29uZmlnLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vY29uZmlnLmgJKHJldmlz
aW9uIDYxMzI3KQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vY29uZmln
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDExICs0NCwxMSBAQAogCiAjaW5jbHVkZSA8d3RmL1Bs
YXRmb3JtLmg+CiAKLS8vIEpTX0VYUE9SVERBVEEgaXMgbmVlZGVkIHRvIGlubHVjZGUgd3RmL1dU
RlN0cmluZy5oLgorLy8gSlNfRVhQT1JURURfU1lNQk9MIGlzIG5lZWRlZCB0byBpbmx1Y2RlIHd0
Zi9XVEZTdHJpbmcuaC4KICNpZiBPUyhXSU5ET1dTKSAmJiAhQ09NUElMRVIoR0NDKQotI2RlZmlu
ZSBKU19FWFBPUlREQVRBIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQorI2RlZmluZSBKU19FWFBPUlRF
RF9TWU1CT0wgX19kZWNsc3BlYyhkbGxpbXBvcnQpCiAjZWxzZQotI2RlZmluZSBKU19FWFBPUlRE
QVRBCisjZGVmaW5lIEpTX0VYUE9SVEVEX1NZTUJPTAogI2VuZGlmCiAKICNlbmRpZiAvLyBjb25m
aWdfaApJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY29uZmlnLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY29uZmlnLmgJKHJldmlzaW9uIDYxMzI3
KQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY29uZmlnLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDIwICsyNiwyMCBAQAogCiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CiAKKyNpZiBP
UyhXSU5ET1dTKSAmJiAhQ09NUElMRVIoR0NDKQorI2RlZmluZSBKU19FWFBPUlRFRF9TWU1CT0wg
X19kZWNsc3BlYyhkbGxpbXBvcnQpCisjZGVmaW5lIFdFQktJVF9FWFBPUlREQVRBIF9fZGVjbHNw
ZWMoZGxsaW1wb3J0KQorI2Vsc2UKKyNkZWZpbmUgSlNfRVhQT1JURURfU1lNQk9MCisjZGVmaW5l
IFdFQktJVF9FWFBPUlREQVRBCisjZW5kaWYKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiAjdW5kZWYg
bmV3CiAjdW5kZWYgZGVsZXRlCiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNlbmRpZgog
Ci0jaWYgT1MoV0lORE9XUykgJiYgIUNPTVBJTEVSKEdDQykKLSNkZWZpbmUgSlNfRVhQT1JUREFU
QSBfX2RlY2xzcGVjKGRsbGltcG9ydCkKLSNkZWZpbmUgV0VCS0lUX0VYUE9SVERBVEEgX19kZWNs
c3BlYyhkbGxpbXBvcnQpCi0jZWxzZQotI2RlZmluZSBKU19FWFBPUlREQVRBCi0jZGVmaW5lIFdF
QktJVF9FWFBPUlREQVRBCi0jZW5kaWYKLQogI2lmIFBMQVRGT1JNKFdJTikKICNkZWZpbmUgV1RG
X1BMQVRGT1JNX0NGIDEgCiAjaWYgZGVmaW5lZChXSU5fQ0FJUk8pCkluZGV4OiBXZWJLaXRUb29s
cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lv
biA2MTM0OSkKKysrIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE0IEBACisyMDEwLTA2LTE3ICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVvbGxpdmll
cnMuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFVzZSBKU19FWFBPUlRFRF9TWU1CT0wgdG8gZXhwb3J0IEpTQ29yZSBzeW1ib2xzIG5lZWRlZCBi
eSBvdGhlciBXZWJLaXQgbGlicmFyaWVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Mjc1NTEKKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL2NvbmZpZy5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2NvbmZpZy5oOgorICAgICAg
ICAqIHd4L2J1aWxkL3NldHRpbmdzLnB5OgorCiAyMDEwLTA2LTE3ICBEYXJpbiBBZGxlciAgPGRh
cmluQGFwcGxlLmNvbT4KIAogICAgICAgICBPbmUgbW9yZSB0cnkgYXQgZml4IGZvciBDaHJvbWl1
bSBidWlsZC4KSW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIv
Q2hhbmdlTG9nCShyZXZpc2lvbiA2MTM0OSkKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTAtMDYtMTcgIEtldmluIE9sbGl2aWVyICA8a2V2
aW5vQHRoZW9sbGl2aWVycy5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVXNlIEpTX0VYUE9SVEVEX1NZTUJPTCB0byBleHBvcnQgSlNDb3JlIHN5
bWJvbHMgbmVlZGVkIGJ5IG90aGVyIFdlYktpdCBsaWJyYXJpZXMuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzU1MQorCisgICAgICAgICogV2ViS2l0
MlByZWZpeC5oOgorCiAyMDEwLTA2LTE2ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCkluZGV4OiBXZWJLaXQyL1dlYktp
dDJQcmVmaXguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYktpdDJQcmVmaXguaAkocmV2aXNp
b24gNjEzMjcpCisrKyBXZWJLaXQyL1dlYktpdDJQcmVmaXguaAkod29ya2luZyBjb3B5KQpAQCAt
MjUsNiArMjUsOSBAQAogCiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CiAjaW5jbHVkZSA8d3Rm
L0Rpc2FsbG93Q1R5cGUuaD4KKworI2RlZmluZSBKU19FWFBPUlRFRF9TWU1CT0wKKwogI2lmZGVm
IF9fY3BsdXNwbHVzCiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNlbmRpZgpAQCAtNDIs
OCArNDUsNiBAQAogI2RlZmluZSBXVEZfVVNFX0pTQyAxCiAjZGVmaW5lIFdURl9VU0VfVjggMAog
Ci0jZGVmaW5lIEpTX0VYUE9SVERBVEEKLSNkZWZpbmUgSlNfRVhQT1JUQ0xBU1MKICNkZWZpbmUg
V0VCS0lUX0VYUE9SVERBVEEKIAogI2VsaWYgZGVmaW5lZChXSU4zMikgfHwgZGVmaW5lZChfV0lO
MzIpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59298</attachid>
            <date>2010-06-21 15:11:42 -0700</date>
            <delta_ts>2010-06-23 18:31:48 -0700</delta_ts>
            <desc>Patch with another attempt at GTK bot fix</desc>
            <filename>jscore_export5.patch</filename>
            <type>text/plain</type>
            <size>154355</size>
            <attacher name="Kevin Ollivier">kevino</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkocmV2aXNpb24gNjE1NjgpCisrKyBK
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03MSwy
MSArNzEsMjEgQEAKIAogICAgICAgICBzdGF0aWMgdm9pZCBkdW1wU3RhdGlzdGljcygpOwogCi0g
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gYWRkUHJvcGVydHlUcmFuc2l0aW9u
KFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0
cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBzaXplX3QmIG9mZnNldCk7Ci0gICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gYWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlz
dGluZ1N0cnVjdHVyZShTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBvZmZz
ZXQpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0
dXJlPiBhZGRQcm9wZXJ0eVRyYW5zaXRpb24oU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUs
IHNpemVfdCYgb2Zmc2V0KTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHN0YXRpYyBQYXNz
UmVmUHRyPFN0cnVjdHVyZT4gYWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVy
ZShTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0
dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBvZmZzZXQpOwogICAgICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbihT
dHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHNpemVfdCYgb2Zmc2V0
KTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjaGFuZ2VQcm90b3R5cGVU
cmFuc2l0aW9uKFN0cnVjdHVyZSosIEpTVmFsdWUgcHJvdG90eXBlKTsKLSAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8U3RydWN0dXJlPiBkZXNwZWNpZnlGdW5jdGlvblRyYW5zaXRpb24oU3RydWN0
dXJlKiwgY29uc3QgSWRlbnRpZmllciYpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgc3Rh
dGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjaGFuZ2VQcm90b3R5cGVUcmFuc2l0aW9uKFN0cnVj
dHVyZSosIEpTVmFsdWUgcHJvdG90eXBlKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHN0
YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gZGVzcGVjaWZ5RnVuY3Rpb25UcmFuc2l0aW9uKFN0
cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXImKTsKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8
U3RydWN0dXJlPiBnZXR0ZXJTZXR0ZXJUcmFuc2l0aW9uKFN0cnVjdHVyZSopOwogICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHRvQ2FjaGVhYmxlRGljdGlvbmFyeVRyYW5zaXRp
b24oU3RydWN0dXJlKik7CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gdG9V
bmNhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKFN0cnVjdHVyZSopOwogCiAgICAgICAgIFBh
c3NSZWZQdHI8U3RydWN0dXJlPiBmbGF0dGVuRGljdGlvbmFyeVN0cnVjdHVyZShKU09iamVjdCop
OwogCi0gICAgICAgIH5TdHJ1Y3R1cmUoKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIH5T
dHJ1Y3R1cmUoKTsKIAogICAgICAgICAvLyBUaGVzZSBzaG91bGQgYmUgdXNlZCB3aXRoIGNhdXRp
b24uICAKLSAgICAgICAgc2l6ZV90IGFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNw
ZWNpZmljVmFsdWUpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgc2l6ZV90IGFkZFByb3Bl
cnR5V2l0aG91dFRyYW5zaXRpb24oY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNp
Z25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpOwogICAgICAgICBzaXplX3Qg
cmVtb3ZlUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUpOwogICAgICAgICB2b2lkIHNldFByb3RvdHlwZVdpdGhvdXRUcmFuc2l0aW9uKEpTVmFs
dWUgcHJvdG90eXBlKSB7IG1fcHJvdG90eXBlID0gcHJvdG90eXBlOyB9CiAgICAgICAgIApAQCAt
MTA2LDcgKzEwNiw3IEBACiAgICAgICAgIGJvb2wgaXNVc2luZ0lubGluZVN0b3JhZ2UoKSBjb25z
dDsKIAogICAgICAgICBzaXplX3QgZ2V0KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7
Ci0gICAgICAgIHNpemVfdCBnZXQoY29uc3QgVVN0cmluZzo6UmVwKiByZXAsIHVuc2lnbmVkJiBh
dHRyaWJ1dGVzLCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVlKTsKKyAgICAgICAgSlNfRVhQT1JURURf
U1lNQk9MIHNpemVfdCBnZXQoY29uc3QgVVN0cmluZzo6UmVwKiByZXAsIHVuc2lnbmVkJiBhdHRy
aWJ1dGVzLCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVlKTsKICAgICAgICAgc2l6ZV90IGdldChjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzLCBKU0NlbGwq
JiBzcGVjaWZpY1ZhbHVlKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoIXByb3BlcnR5
TmFtZS5pc051bGwoKSk7CkBAIC0xMTYsNyArMTE2LDcgQEAKICAgICAgICAgewogICAgICAgICAg
ICAgcmV0dXJuIG1fc3BlY2lmaWNWYWx1ZUluUHJldmlvdXMgPT0gc3BlY2lmaWNWYWx1ZTsKICAg
ICAgICAgfQotICAgICAgICBib29sIGhhc1RyYW5zaXRpb24oVVN0cmluZzo6UmVwKiwgdW5zaWdu
ZWQgYXR0cmlidXRlcyk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBib29sIGhhc1RyYW5z
aXRpb24oVVN0cmluZzo6UmVwKiwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAgICAgIGJvb2wg
aGFzVHJhbnNpdGlvbihjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0
dHJpYnV0ZXMpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBoYXNUcmFuc2l0aW9uKHBy
b3BlcnR5TmFtZS5fdXN0cmluZy5yZXAoKSwgYXR0cmlidXRlcyk7CkBAIC0xMzIsNyArMTMyLDcg
QEAKICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJv
cGVydHlUYWJsZSA/ICFtX3Byb3BlcnR5VGFibGUtPmtleUNvdW50IDogbV9vZmZzZXQgPT0gbm9P
ZmZzZXQ7IH0KIAotICAgICAgICB2b2lkIGRlc3BlY2lmeURpY3Rpb25hcnlGdW5jdGlvbihjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wg
dm9pZCBkZXNwZWNpZnlEaWN0aW9uYXJ5RnVuY3Rpb24oY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lKTsKICAgICAgICAgdm9pZCBkaXNhYmxlU3BlY2lmaWNGdW5jdGlvblRyYWNraW5nKCkg
eyBtX3NwZWNpZmljRnVuY3Rpb25UaHJhc2hDb3VudCA9IG1heFNwZWNpZmljRnVuY3Rpb25UaHJh
c2hDb3VudDsgfQogCiAgICAgICAgIHZvaWQgc2V0RW51bWVyYXRpb25DYWNoZShKU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yKiBlbnVtZXJhdGlvbkNhY2hlKTsgLy8gRGVmaW5lZCBpbiBKU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yLmguCkBAIC0xNDIsNyArMTQyLDcgQEAKICAgICAgICAgCiAgICAgcHJpdmF0
ZToKIAotICAgICAgICBTdHJ1Y3R1cmUoSlNWYWx1ZSBwcm90b3R5cGUsIGNvbnN0IFR5cGVJbmZv
JiwgdW5zaWduZWQgYW5vbnltb3VzU2xvdENvdW50KTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lN
Qk9MIFN0cnVjdHVyZShKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8mLCB1bnNpZ25l
ZCBhbm9ueW1vdXNTbG90Q291bnQpOwogICAgICAgICAKICAgICAgICAgdHlwZWRlZiBlbnVtIHsg
CiAgICAgICAgICAgICBOb25lRGljdGlvbmFyeUtpbmQgPSAwLApAQCAtMTY2LDcgKzE2Niw3IEBA
CiAgICAgICAgIHZvaWQgZGVzcGVjaWZ5QWxsRnVuY3Rpb25zKCk7CiAKICAgICAgICAgUHJvcGVy
dHlNYXBIYXNoVGFibGUqIGNvcHlQcm9wZXJ0eVRhYmxlKCk7Ci0gICAgICAgIHZvaWQgbWF0ZXJp
YWxpemVQcm9wZXJ0eU1hcCgpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBtYXRl
cmlhbGl6ZVByb3BlcnR5TWFwKCk7CiAgICAgICAgIHZvaWQgbWF0ZXJpYWxpemVQcm9wZXJ0eU1h
cElmTmVjZXNzYXJ5KCkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKG1fcHJvcGVydHlUYWJs
ZSB8fCAhbV9wcmV2aW91cykgICAgICAgICAgICAgCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0
cmluZy5oCShyZXZpc2lvbiA2MTU2OCkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJp
bmcuaAkod29ya2luZyBjb3B5KQpAQCAtNjIsNyArNjIsNyBAQAogICAgIHR5cGVkZWYgdm9pZCAo
KkpTU3RyaW5nRmluYWxpemVyQ2FsbGJhY2spKEpTU3RyaW5nKiwgdm9pZCogY29udGV4dCk7CiAg
ICAgSlNTdHJpbmcqIGpzU3RyaW5nV2l0aEZpbmFsaXplcihFeGVjU3RhdGUqLCBjb25zdCBVU3Ry
aW5nJiwgSlNTdHJpbmdGaW5hbGl6ZXJDYWxsYmFjayBjYWxsYmFjaywgdm9pZCogY29udGV4dCk7
CiAKLSAgICBjbGFzcyBKU19FWFBPUlRDTEFTUyBKU1N0cmluZyA6IHB1YmxpYyBKU0NlbGwgewor
ICAgIGNsYXNzIEpTU3RyaW5nIDogcHVibGljIEpTQ2VsbCB7CiAgICAgcHVibGljOgogICAgICAg
ICBmcmllbmQgY2xhc3MgSklUOwogICAgICAgICBmcmllbmQgY2xhc3MgSlNHbG9iYWxEYXRhOwpA
QCAtMzIxLDcgKzMyMSw3IEBACiAgICAgICAgICAgICAgICAgbV9vdGhlci5tX2ZpbmFsaXplckNh
bGxiYWNrKHRoaXMsIG1fb3RoZXIubV9maW5hbGl6ZXJDb250ZXh0KTsKICAgICAgICAgfQogCi0g
ICAgICAgIGNvbnN0IFVTdHJpbmcmIHZhbHVlKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKKyAgICAg
ICAgSlNfRVhQT1JURURfU1lNQk9MIGNvbnN0IFVTdHJpbmcmIHZhbHVlKEV4ZWNTdGF0ZSogZXhl
YykgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAgaWYgKGlzUm9wZSgpKQogICAgICAgICAg
ICAgICAgIHJlc29sdmVSb3BlKGV4ZWMpOwpAQCAtMzU1LDcgKzM1NSw3IEBACiAgICAgICAgIHsK
ICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgcmVzb2x2ZVJvcGUoRXhlY1N0YXRlKikgY29uc3Q7
CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIHJlc29sdmVSb3BlKEV4ZWNTdGF0ZSop
IGNvbnN0OwogCiAgICAgICAgIHZvaWQgYXBwZW5kU3RyaW5nSW5Db25zdHJ1Y3QodW5zaWduZWQm
IGluZGV4LCBjb25zdCBVU3RyaW5nJiBzdHJpbmcpCiAgICAgICAgIHsKQEAgLTM5MywxOSArMzkz
LDE5IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIEpTVmFs
dWUgdG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkgY29uc3Q7
Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBnZXRQcmltaXRpdmVOdW1iZXIoRXhlY1N0YXRlKiwgZG91
YmxlJiBudW1iZXIsIEpTVmFsdWUmIHZhbHVlKTsKLSAgICAgICAgdmlydHVhbCBib29sIHRvQm9v
bGVhbihFeGVjU3RhdGUqKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCBkb3VibGUgdG9OdW1iZXIo
RXhlY1N0YXRlKikgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgSlNPYmplY3QqIHRvT2JqZWN0KEV4
ZWNTdGF0ZSopIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIFVTdHJpbmcgdG9TdHJpbmcoRXhlY1N0
YXRlKikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIEpTVmFsdWUg
dG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkgY29uc3Q7Cisg
ICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIGJvb2wgZ2V0UHJpbWl0aXZlTnVtYmVy
KEV4ZWNTdGF0ZSosIGRvdWJsZSYgbnVtYmVyLCBKU1ZhbHVlJiB2YWx1ZSk7CisgICAgICAgIEpT
X0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIGJvb2wgdG9Cb29sZWFuKEV4ZWNTdGF0ZSopIGNvbnN0
OworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCBkb3VibGUgdG9OdW1iZXIoRXhl
Y1N0YXRlKikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIEpTT2Jq
ZWN0KiB0b09iamVjdChFeGVjU3RhdGUqKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JURURfU1lN
Qk9MIHZpcnR1YWwgVVN0cmluZyB0b1N0cmluZyhFeGVjU3RhdGUqKSBjb25zdDsKIAotICAgICAg
ICB2aXJ0dWFsIEpTT2JqZWN0KiB0b1RoaXNPYmplY3QoRXhlY1N0YXRlKikgY29uc3Q7CisgICAg
ICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIEpTT2JqZWN0KiB0b1RoaXNPYmplY3QoRXhl
Y1N0YXRlKikgY29uc3Q7CiAKICAgICAgICAgLy8gQWN0dWFsbHkgZ2V0UHJvcGVydHlTbG90LCBu
b3QgZ2V0T3duUHJvcGVydHlTbG90IChzZWUgSlNDZWxsKS4KLSAgICAgICAgdmlydHVhbCBib29s
IGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7
Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRl
KiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOworICAgICAgICBKU19F
WFBPUlRFRF9TWU1CT0wgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUq
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgICAg
ICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVj
U3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgICAgICBK
U19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKICAg
ICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfbWF4SW50ZXJuYWxSb3BlTGVuZ3RoID0gMzsK
IApJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2aXNpb24gNjE1NjgpCisrKyBK
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTc0LDI2
ICs3NCwyNiBAQAogICAgICAgICBmcmllbmQgY2xhc3MgQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6
ZXI7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKU0Nl
bGw7Ci0gICAgICAgIGZyaWVuZCB2b2lkIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSwgSlNPYmplY3QqIHRoaXNPYmosIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KTsKKyAgICAgICAg
ZnJpZW5kIEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSwgSlNPYmplY3QqIHRoaXNPYmos
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KTsKIAog
ICAgIHB1YmxpYzoKICAgICAgICAgZXhwbGljaXQgSlNPYmplY3QoTm9uTnVsbFBhc3NSZWZQdHI8
U3RydWN0dXJlPik7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIG1hcmtDaGlsZHJlbihNYXJrU3Rh
Y2smKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgdm9pZCBtYXJrQ2hpbGRy
ZW4oTWFya1N0YWNrJik7CiAgICAgICAgIEFMV0FZU19JTkxJTkUgdm9pZCBtYXJrQ2hpbGRyZW5E
aXJlY3QoTWFya1N0YWNrJiBtYXJrU3RhY2spOwogCiAgICAgICAgIC8vIFRoZSBpbmxpbmUgdmly
dHVhbCBkZXN0cnVjdG9yIGNhbm5vdCBiZSB0aGUgZmlyc3QgdmlydHVhbCBmdW5jdGlvbiBkZWNs
YXJlZAogICAgICAgICAvLyBpbiB0aGUgY2xhc3MgYXMgaXQgcmVzdWx0cyBpbiB0aGUgdnRhYmxl
IGJlaW5nIGdlbmVyYXRlZCBhcyBhIHdlYWsgc3ltYm9sCiAgICAgICAgIHZpcnR1YWwgfkpTT2Jq
ZWN0KCk7CiAKLSAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUoKSBjb25zdDsKKyAgICAgICAgSlNf
RVhQT1JURURfU1lNQk9MIEpTVmFsdWUgcHJvdG90eXBlKCkgY29uc3Q7CiAgICAgICAgIHZvaWQg
c2V0UHJvdG90eXBlKEpTVmFsdWUgcHJvdG90eXBlKTsKICAgICAgICAgYm9vbCBzZXRQcm90b3R5
cGVXaXRoQ3ljbGVDaGVjayhKU1ZhbHVlIHByb3RvdHlwZSk7CiAgICAgICAgIAogICAgICAgICB2
b2lkIHNldFN0cnVjdHVyZShOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+KTsKICAgICAgICAg
U3RydWN0dXJlKiBpbmhlcml0b3JJRCgpOwogCi0gICAgICAgIHZpcnR1YWwgVVN0cmluZyBjbGFz
c05hbWUoKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgVVN0cmlu
ZyBjbGFzc05hbWUoKSBjb25zdDsKIAogICAgICAgICBKU1ZhbHVlIGdldChFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpIGNvbnN0OwogICAgICAgICBKU1ZhbHVlIGdl
dChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpIGNvbnN0OwpAQCAtMTAyLDQ1ICsx
MDIsNDUgQEAKICAgICAgICAgYm9vbCBnZXRQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgdW5zaWdu
ZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgYm9vbCBnZXRQcm9wZXJ0
eURlc2NyaXB0b3IoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eURlc2NyaXB0b3ImKTsKIAotICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90Jik7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0
YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgdmly
dHVhbCBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJP
TCB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIEpTX0VYUE9SVEVE
X1NZTUJPTCB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIHVuc2ln
bmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZ
TUJPTCB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSosIGNv
bnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIAotICAgICAgICB2aXJ0dWFs
IHZvaWQgcHV0KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwdXQo
RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlKTsKKyAgICAg
ICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgdm9pZCBwdXQoRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
KTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgdm9pZCBwdXQoRXhlY1N0YXRl
KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlKTsKIAotICAgICAgICB2aXJ0
dWFsIHZvaWQgcHV0V2l0aEF0dHJpYnV0ZXMoSlNHbG9iYWxEYXRhKiwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBib29s
IGNoZWNrUmVhZE9ubHksIFB1dFByb3BlcnR5U2xvdCYgc2xvdCk7Ci0gICAgICAgIHZpcnR1YWwg
dm9pZCBwdXRXaXRoQXR0cmlidXRlcyhKU0dsb2JhbERhdGEqLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwotICAgICAg
ICB2aXJ0dWFsIHZvaWQgcHV0V2l0aEF0dHJpYnV0ZXMoSlNHbG9iYWxEYXRhKiwgdW5zaWduZWQg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKLSAgICAg
ICAgdmlydHVhbCB2b2lkIHB1dFdpdGhBdHRyaWJ1dGVzKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcywg
Ym9vbCBjaGVja1JlYWRPbmx5LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpOwotICAgICAgICB2aXJ0
dWFsIHZvaWQgcHV0V2l0aEF0dHJpYnV0ZXMoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKLSAgICAg
ICAgdmlydHVhbCB2b2lkIHB1dFdpdGhBdHRyaWJ1dGVzKEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAgICAg
IEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIHZvaWQgcHV0V2l0aEF0dHJpYnV0ZXMoSlNHbG9i
YWxEYXRhKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzLCBib29sIGNoZWNrUmVhZE9ubHksIFB1dFByb3BlcnR5U2xvdCYg
c2xvdCk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIHZvaWQgcHV0V2l0aEF0
dHJpYnV0ZXMoSlNHbG9iYWxEYXRhKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgSlNfRVhQT1JURURf
U1lNQk9MIHZpcnR1YWwgdm9pZCBwdXRXaXRoQXR0cmlidXRlcyhKU0dsb2JhbERhdGEqLCB1bnNp
Z25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwor
ICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCB2b2lkIHB1dFdpdGhBdHRyaWJ1dGVz
KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgYm9vbCBjaGVja1JlYWRPbmx5LCBQdXRQcm9wZXJ0eVNs
b3QmIHNsb3QpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCB2b2lkIHB1dFdp
dGhBdHRyaWJ1dGVzKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAgICAgIEpTX0VYUE9SVEVE
X1NZTUJPTCB2aXJ0dWFsIHZvaWQgcHV0V2l0aEF0dHJpYnV0ZXMoRXhlY1N0YXRlKiwgdW5zaWdu
ZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKIAog
ICAgICAgICBib29sIHByb3BlcnR5SXNFbnVtZXJhYmxlKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSkgY29uc3Q7CiAKLSAgICAgICAgYm9vbCBoYXNQcm9wZXJ0eShF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpIGNvbnN0OwotICAgICAg
ICBib29sIGhhc1Byb3BlcnR5KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSkgY29u
c3Q7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBib29sIGhhc1Byb3BlcnR5KEV4ZWNTdGF0
ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkgY29uc3Q7CisgICAgICAgIEpTX0VY
UE9SVEVEX1NZTUJPTCBib29sIGhhc1Byb3BlcnR5KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3Bl
cnR5TmFtZSkgY29uc3Q7CiAgICAgICAgIGJvb2wgaGFzT3duUHJvcGVydHkoRXhlY1N0YXRlKiwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKSBjb25zdDsKIAotICAgICAgICB2aXJ0dWFs
IGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lKTsKLSAgICAgICAgdmlydHVhbCBib29sIGRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSos
IHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0
dWFsIGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgYm9vbCBkZWxl
dGVQcm9wZXJ0eShFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwogCi0gICAgICAg
IHZpcnR1YWwgSlNWYWx1ZSBkZWZhdWx0VmFsdWUoRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0
aXZlVHlwZSkgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIEpTVmFs
dWUgZGVmYXVsdFZhbHVlKEV4ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpIGNvbnN0
OwogCi0gICAgICAgIHZpcnR1YWwgYm9vbCBoYXNJbnN0YW5jZShFeGVjU3RhdGUqLCBKU1ZhbHVl
LCBKU1ZhbHVlIHByb3RvdHlwZVByb3BlcnR5KTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9M
IHZpcnR1YWwgYm9vbCBoYXNJbnN0YW5jZShFeGVjU3RhdGUqLCBKU1ZhbHVlLCBKU1ZhbHVlIHBy
b3RvdHlwZVByb3BlcnR5KTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJvcGVydHlOYW1l
cyhFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSBtb2RlID0g
RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBnZXRPd25Q
cm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25N
b2RlIG1vZGUgPSBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICAgICAgSlNfRVhQT1JU
RURfU1lNQk9MIHZpcnR1YWwgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlIG1vZGUgPSBFeGNsdWRlRG9udEVudW1Qcm9w
ZXJ0aWVzKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgdm9pZCBnZXRPd25Q
cm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25N
b2RlIG1vZGUgPSBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKIAogICAgICAgICB2aXJ0dWFs
IEpTVmFsdWUgdG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSA9
IE5vUHJlZmVyZW5jZSkgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBnZXRQcmltaXRpdmVO
dW1iZXIoRXhlY1N0YXRlKiwgZG91YmxlJiBudW1iZXIsIEpTVmFsdWUmIHZhbHVlKTsKLSAgICAg
ICAgdmlydHVhbCBib29sIHRvQm9vbGVhbihFeGVjU3RhdGUqKSBjb25zdDsKLSAgICAgICAgdmly
dHVhbCBkb3VibGUgdG9OdW1iZXIoRXhlY1N0YXRlKikgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwg
VVN0cmluZyB0b1N0cmluZyhFeGVjU3RhdGUqKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCBKU09i
amVjdCogdG9PYmplY3QoRXhlY1N0YXRlKikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZ
TUJPTCB2aXJ0dWFsIGJvb2wgZ2V0UHJpbWl0aXZlTnVtYmVyKEV4ZWNTdGF0ZSosIGRvdWJsZSYg
bnVtYmVyLCBKU1ZhbHVlJiB2YWx1ZSk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0
dWFsIGJvb2wgdG9Cb29sZWFuKEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICBKU19FWFBPUlRF
RF9TWU1CT0wgdmlydHVhbCBkb3VibGUgdG9OdW1iZXIoRXhlY1N0YXRlKikgY29uc3Q7CisgICAg
ICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIFVTdHJpbmcgdG9TdHJpbmcoRXhlY1N0YXRl
KikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIEpTT2JqZWN0KiB0
b09iamVjdChFeGVjU3RhdGUqKSBjb25zdDsKIAotICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiB0
b1RoaXNPYmplY3QoRXhlY1N0YXRlKikgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgSlNPYmplY3Qq
IHVud3JhcHBlZE9iamVjdCgpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCBK
U09iamVjdCogdG9UaGlzT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICBKU19FWFBP
UlRFRF9TWU1CT0wgdmlydHVhbCBKU09iamVjdCogdW53cmFwcGVkT2JqZWN0KCk7CiAKICAgICAg
ICAgYm9vbCBnZXRQcm9wZXJ0eVNwZWNpZmljVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQ2VsbComIHNwZWNpZmljRnVuY3Rpb24pIGNvbnN0
OwogCkBAIC0xNzUsMTMgKzE3NSwxMyBAQAogICAgICAgICBib29sIGhhc0N1c3RvbVByb3BlcnRp
ZXMoKSB7IHJldHVybiAhbV9zdHJ1Y3R1cmUtPmlzRW1wdHkoKTsgfQogICAgICAgICBib29sIGhh
c0dldHRlclNldHRlclByb3BlcnRpZXMoKSB7IHJldHVybiBtX3N0cnVjdHVyZS0+aGFzR2V0dGVy
U2V0dGVyUHJvcGVydGllcygpOyB9CiAKLSAgICAgICAgdm9pZCBwdXREaXJlY3QoY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyLCBib29s
IGNoZWNrUmVhZE9ubHksIFB1dFByb3BlcnR5U2xvdCYgc2xvdCk7Ci0gICAgICAgIHZvaWQgcHV0
RGlyZWN0KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5z
aWduZWQgYXR0ciA9IDApOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBwdXREaXJl
Y3QoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25l
ZCBhdHRyLCBib29sIGNoZWNrUmVhZE9ubHksIFB1dFByb3BlcnR5U2xvdCYgc2xvdCk7CisgICAg
ICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIHB1dERpcmVjdChjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHIgPSAwKTsKIAotICAgICAg
ICB2b2lkIHB1dERpcmVjdEZ1bmN0aW9uKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
SlNDZWxsKiB2YWx1ZSwgdW5zaWduZWQgYXR0ciA9IDApOwotICAgICAgICB2b2lkIHB1dERpcmVj
dEZ1bmN0aW9uKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDZWxsKiB2YWx1ZSwg
dW5zaWduZWQgYXR0ciwgYm9vbCBjaGVja1JlYWRPbmx5LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3Qp
OwotICAgICAgICB2b2lkIHB1dERpcmVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSW50ZXJu
YWxGdW5jdGlvbiogZnVuY3Rpb24sIHVuc2lnbmVkIGF0dHIgPSAwKTsKLSAgICAgICAgdm9pZCBw
dXREaXJlY3RGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTRnVuY3Rpb24qIGZ1bmN0aW9uLCB1
bnNpZ25lZCBhdHRyID0gMCk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIHB1dERp
cmVjdEZ1bmN0aW9uKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDZWxsKiB2YWx1
ZSwgdW5zaWduZWQgYXR0ciA9IDApOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBw
dXREaXJlY3RGdW5jdGlvbihjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQ2VsbCog
dmFsdWUsIHVuc2lnbmVkIGF0dHIsIGJvb2wgY2hlY2tSZWFkT25seSwgUHV0UHJvcGVydHlTbG90
JiBzbG90KTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZvaWQgcHV0RGlyZWN0RnVuY3Rp
b24oRXhlY1N0YXRlKiBleGVjLCBJbnRlcm5hbEZ1bmN0aW9uKiBmdW5jdGlvbiwgdW5zaWduZWQg
YXR0ciA9IDApOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBwdXREaXJlY3RGdW5j
dGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTRnVuY3Rpb24qIGZ1bmN0aW9uLCB1bnNpZ25lZCBhdHRy
ID0gMCk7CiAKICAgICAgICAgdm9pZCBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHIgPSAw
KTsKICAgICAgICAgdm9pZCBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDZWxsKiB2YWx1ZSwgdW5zaWduZWQgYXR0ciA9
IDApOwpAQCAtMTkyLDEzICsxOTIsMTMgQEAKICAgICAgICAgSlNWYWx1ZSBnZXREaXJlY3RPZmZz
ZXQoc2l6ZV90IG9mZnNldCkgY29uc3QgeyByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHByb3BlcnR5
U3RvcmFnZSgpW29mZnNldF0pOyB9CiAgICAgICAgIHZvaWQgcHV0RGlyZWN0T2Zmc2V0KHNpemVf
dCBvZmZzZXQsIEpTVmFsdWUgdmFsdWUpIHsgcHJvcGVydHlTdG9yYWdlKClbb2Zmc2V0XSA9IEpT
VmFsdWU6OmVuY29kZSh2YWx1ZSk7IH0KIAotICAgICAgICB2b2lkIGZpbGxHZXR0ZXJQcm9wZXJ0
eVNsb3QoUHJvcGVydHlTbG90JiwgSlNWYWx1ZSogbG9jYXRpb24pOworICAgICAgICBKU19FWFBP
UlRFRF9TWU1CT0wgdm9pZCBmaWxsR2V0dGVyUHJvcGVydHlTbG90KFByb3BlcnR5U2xvdCYsIEpT
VmFsdWUqIGxvY2F0aW9uKTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgZGVmaW5lR2V0dGVyKEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNPYmplY3QqIGdldHRl
ckZ1bmN0aW9uLCB1bnNpZ25lZCBhdHRyaWJ1dGVzID0gMCk7Ci0gICAgICAgIHZpcnR1YWwgdm9p
ZCBkZWZpbmVTZXR0ZXIoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBKU09iamVjdCogc2V0dGVyRnVuY3Rpb24sIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSAwKTsKLSAg
ICAgICAgdmlydHVhbCBKU1ZhbHVlIGxvb2t1cEdldHRlcihFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUpOwotICAgICAgICB2aXJ0dWFsIEpTVmFsdWUgbG9va3VwU2V0
dGVyKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7Ci0gICAgICAg
IHZpcnR1YWwgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cp
OworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCB2b2lkIGRlZmluZUdldHRlcihF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBnZXR0
ZXJGdW5jdGlvbiwgdW5zaWduZWQgYXR0cmlidXRlcyA9IDApOworICAgICAgICBKU19FWFBPUlRF
RF9TWU1CT0wgdmlydHVhbCB2b2lkIGRlZmluZVNldHRlcihFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBzZXR0ZXJGdW5jdGlvbiwgdW5zaWduZWQg
YXR0cmlidXRlcyA9IDApOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCBKU1Zh
bHVlIGxvb2t1cEdldHRlcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCBKU1ZhbHVlIGxvb2t1cFNl
dHRlcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOworICAgICAg
ICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCBib29sIGRlZmluZU93blByb3BlcnR5KEV4ZWNT
dGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9y
JiwgYm9vbCBzaG91bGRUaHJvdyk7CiAKICAgICAgICAgdmlydHVhbCBib29sIGlzR2xvYmFsT2Jq
ZWN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzVmFy
aWFibGVPYmplY3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtMjA3LDcgKzIwNyw3IEBA
CiAKICAgICAgICAgdmlydHVhbCBDb21wbFR5cGUgZXhjZXB0aW9uVHlwZSgpIGNvbnN0IHsgcmV0
dXJuIFRocm93OyB9CiAKLSAgICAgICAgdm9pZCBhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShzaXpl
X3Qgb2xkU2l6ZSwgc2l6ZV90IG5ld1NpemUpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wg
dm9pZCBhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShzaXplX3Qgb2xkU2l6ZSwgc2l6ZV90IG5ld1Np
emUpOwogICAgICAgICB2b2lkIGFsbG9jYXRlUHJvcGVydHlTdG9yYWdlSW5saW5lKHNpemVfdCBv
bGRTaXplLCBzaXplX3QgbmV3U2l6ZSk7CiAgICAgICAgIGJvb2wgaXNVc2luZ0lubGluZVN0b3Jh
Z2UoKSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVyZS0+aXNVc2luZ0lubGluZVN0b3JhZ2UoKTsg
fQogCkBAIC0yNjQsNyArMjY0LDcgQEAKICAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PEpTVmFsdWUqPigmcHJvcGVydHlTdG9yYWdlKClbb2Zmc2V0XSk7CiAgICAgICAgIH0KIAot
ICAgICAgICB2b2lkIHB1dERpcmVjdEludGVybmFsKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0ciwgYm9vbCBjaGVja1JlYWRPbmx5LCBQ
dXRQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTQ2VsbCopOworICAgICAgICBKU19FWFBPUlRFRF9TWU1C
T0wgdm9pZCBwdXREaXJlY3RJbnRlcm5hbChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHIsIGJvb2wgY2hlY2tSZWFkT25seSwgUHV0UHJv
cGVydHlTbG90JiBzbG90LCBKU0NlbGwqKTsKICAgICAgICAgdm9pZCBwdXREaXJlY3RJbnRlcm5h
bChKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUg
dmFsdWUsIHVuc2lnbmVkIGF0dHIsIGJvb2wgY2hlY2tSZWFkT25seSwgUHV0UHJvcGVydHlTbG90
JiBzbG90KTsKICAgICAgICAgdm9pZCBwdXREaXJlY3RJbnRlcm5hbChKU0dsb2JhbERhdGEmLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0
dHIgPSAwKTsKIApAQCAtMzExLDcgKzMxMSw3IEBACiAgICAgbV9zdHJ1Y3R1cmUtPmRlcmVmKCk7
CiB9CiAKLWlubGluZSBKU1ZhbHVlIEpTT2JqZWN0Ojpwcm90b3R5cGUoKSBjb25zdAorSlNfRVhQ
T1JURURfU1lNQk9MIGlubGluZSBKU1ZhbHVlIEpTT2JqZWN0Ojpwcm90b3R5cGUoKSBjb25zdAog
ewogICAgIHJldHVybiBtX3N0cnVjdHVyZS0+c3RvcmVkUHJvdG90eXBlKCk7CiB9CkBAIC0zOTEs
NyArMzkxLDcgQEAKIC8vIEl0IG1heSBzZWVtIGNyYXp5IHRvIGlubGluZSBhIGZ1bmN0aW9uIHRo
aXMgbGFyZ2UsIGVzcGVjaWFsbHkgYSB2aXJ0dWFsIGZ1bmN0aW9uLAogLy8gYnV0IGl0IG1ha2Vz
IGEgYmlnIGRpZmZlcmVuY2UgdG8gcHJvcGVydHkgbG9va3VwIHRoYXQgZGVyaXZlZCBjbGFzc2Vz
IGNhbiBpbmxpbmUgdGhlaXIKIC8vIGJhc2UgY2xhc3MgY2FsbCB0byB0aGlzLgotQUxXQVlTX0lO
TElORSBib29sIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK0pTX0VY
UE9SVEVEX1NZTUJPTCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OmdldE93blByb3BlcnR5
U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90JiBzbG90KQogewogICAgIHJldHVybiBpbmxpbmVHZXRPd25Qcm9wZXJ0eVNsb3Qo
ZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KQEAgLTU3Niw3ICs1NzYsNyBAQAogICAgIHB1
dERpcmVjdEludGVybmFsKHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIGZhbHNlLCBz
bG90LCBnZXRKU0Z1bmN0aW9uKGdsb2JhbERhdGEsIHZhbHVlKSk7CiB9CiAKLWlubGluZSB2b2lk
IEpTT2JqZWN0OjpwdXREaXJlY3QoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBib29sIGNoZWNrUmVhZE9ubHksIFB1dFBy
b3BlcnR5U2xvdCYgc2xvdCkKK0pTX0VYUE9SVEVEX1NZTUJPTCBpbmxpbmUgdm9pZCBKU09iamVj
dDo6cHV0RGlyZWN0KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgYm9vbCBjaGVja1JlYWRPbmx5LCBQdXRQcm9wZXJ0eVNs
b3QmIHNsb3QpCiB7CiAgICAgQVNTRVJUKHZhbHVlKTsKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAo
dmFsdWUpIHx8IEhlYXA6OmhlYXAodmFsdWUpID09IEhlYXA6OmhlYXAodGhpcykpOwpAQCAtNTg0
LDE4ICs1ODQsMTggQEAKICAgICBwdXREaXJlY3RJbnRlcm5hbChwcm9wZXJ0eU5hbWUsIHZhbHVl
LCBhdHRyaWJ1dGVzLCBjaGVja1JlYWRPbmx5LCBzbG90LCAwKTsKIH0KIAotaW5saW5lIHZvaWQg
SlNPYmplY3Q6OnB1dERpcmVjdChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCitKU19FWFBPUlRFRF9TWU1CT0wgaW5saW5l
IHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAgICAgUHV0UHJvcGVydHlT
bG90IHNsb3Q7CiAgICAgcHV0RGlyZWN0SW50ZXJuYWwocHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0
cmlidXRlcywgZmFsc2UsIHNsb3QsIDApOwogfQogCi1pbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0
RGlyZWN0RnVuY3Rpb24oY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0NlbGwqIHZh
bHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBib29sIGNoZWNrUmVhZE9ubHksIFB1dFByb3BlcnR5
U2xvdCYgc2xvdCkKK0pTX0VYUE9SVEVEX1NZTUJPTCBpbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0
RGlyZWN0RnVuY3Rpb24oY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0NlbGwqIHZh
bHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBib29sIGNoZWNrUmVhZE9ubHksIFB1dFByb3BlcnR5
U2xvdCYgc2xvdCkKIHsKICAgICBwdXREaXJlY3RJbnRlcm5hbChwcm9wZXJ0eU5hbWUsIHZhbHVl
LCBhdHRyaWJ1dGVzLCBjaGVja1JlYWRPbmx5LCBzbG90LCB2YWx1ZSk7CiB9CiAKLWlubGluZSB2
b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RGdW5jdGlvbihjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIEpTQ2VsbCogdmFsdWUsIHVuc2lnbmVkIGF0dHIpCitKU19FWFBPUlRFRF9TWU1CT0wg
aW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdEZ1bmN0aW9uKGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgSlNDZWxsKiB2YWx1ZSwgdW5zaWduZWQgYXR0cikKIHsKICAgICBQdXRQ
cm9wZXJ0eVNsb3Qgc2xvdDsKICAgICBwdXREaXJlY3RJbnRlcm5hbChwcm9wZXJ0eU5hbWUsIHZh
bHVlLCBhdHRyLCBmYWxzZSwgc2xvdCwgdmFsdWUpOwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGNlcHRpb25IZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGNlcHRpb25IZWxwZXJzLmgJKHJldmlzaW9uIDYxNTY4KQorKysgSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDkgKzQy
LDkgQEAKICAgICBjbGFzcyBOb2RlOwogICAgIHN0cnVjdCBJbnN0cnVjdGlvbjsKICAgICAKLSAg
ICBKU1ZhbHVlIGNyZWF0ZUludGVycnVwdGVkRXhlY3V0aW9uRXhjZXB0aW9uKEpTR2xvYmFsRGF0
YSopOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBKU1ZhbHVlIGNyZWF0ZUludGVycnVwdGVkRXhl
Y3V0aW9uRXhjZXB0aW9uKEpTR2xvYmFsRGF0YSopOwogICAgIEpTVmFsdWUgY3JlYXRlVGVybWlu
YXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihKU0dsb2JhbERhdGEqKTsKLSAgICBKU09iamVjdCogY3Jl
YXRlU3RhY2tPdmVyZmxvd0Vycm9yKEV4ZWNTdGF0ZSopOworICAgIEpTX0VYUE9SVEVEX1NZTUJP
TCBKU09iamVjdCogY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKEV4ZWNTdGF0ZSopOwogICAgIEpT
VmFsdWUgY3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyJiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIENvZGVCbG9jayopOwogICAgIEpTTm90
QW5PYmplY3RFcnJvclN0dWIqIGNyZWF0ZU5vdEFuT2JqZWN0RXJyb3JTdHViKEV4ZWNTdGF0ZSos
IGJvb2wgaXNOdWxsKTsKICAgICBKU09iamVjdCogY3JlYXRlSW52YWxpZFBhcmFtRXJyb3IoRXhl
Y1N0YXRlKiwgY29uc3QgY2hhciogb3AsIEpTVmFsdWUsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0
LCBDb2RlQmxvY2sqKTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCShyZXZp
c2lvbiA2MTU2OCkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NCwxNCArNDQsMTQgQEAKICAgICAgICAgdHlwZWRlZiBKU09iamVjdFdp
dGhHbG9iYWxPYmplY3QgQmFzZTsKIAogICAgIHB1YmxpYzoKLSAgICAgICAgSlNGdW5jdGlvbihF
eGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4s
IGludCBsZW5ndGgsIGNvbnN0IElkZW50aWZpZXImLCBOYXRpdmVGdW5jdGlvbik7CisgICAgICAg
IEpTX0VYUE9SVEVEX1NZTUJPTCBKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0
KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgaW50IGxlbmd0aCwgY29uc3QgSWRlbnRp
ZmllciYsIE5hdGl2ZUZ1bmN0aW9uKTsKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBKU0Z1bmN0
aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0
dXJlPiwgaW50IGxlbmd0aCwgY29uc3QgSWRlbnRpZmllciYsIFBhc3NSZWZQdHI8TmF0aXZlRXhl
Y3V0YWJsZT4pOwogI2VuZGlmCiAgICAgICAgIEpTRnVuY3Rpb24oRXhlY1N0YXRlKiwgTm9uTnVs
bFBhc3NSZWZQdHI8RnVuY3Rpb25FeGVjdXRhYmxlPiwgU2NvcGVDaGFpbk5vZGUqKTsKICAgICAg
ICAgdmlydHVhbCB+SlNGdW5jdGlvbigpOwogCi0gICAgICAgIGNvbnN0IFVTdHJpbmcmIG5hbWUo
RXhlY1N0YXRlKik7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBjb25zdCBVU3RyaW5nJiBu
YW1lKEV4ZWNTdGF0ZSopOwogICAgICAgICBjb25zdCBVU3RyaW5nIGRpc3BsYXlOYW1lKEV4ZWNT
dGF0ZSopOwogICAgICAgICBjb25zdCBVU3RyaW5nIGNhbGN1bGF0ZWREaXNwbGF5TmFtZShFeGVj
U3RhdGUqKTsKIApAQCAtNzIsNyArNzIsNyBAQAogICAgICAgICBpbmxpbmUgYm9vbCBpc0hvc3RG
dW5jdGlvbigpIGNvbnN0OwogICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGpzRXhlY3V0YWJs
ZSgpIGNvbnN0OwogCi0gICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNzSW5m
byBpbmZvOworICAgICAgICBzdGF0aWMgSlNfRVhQT1JURURfU1lNQk9MIGNvbnN0IENsYXNzSW5m
byBpbmZvOwogCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlU3Ry
dWN0dXJlKEpTVmFsdWUgcHJvdG90eXBlKSAKICAgICAgICAgeyAKQEAgLTkwLDcgKzkwLDcgQEAK
ICAgICBwcml2YXRlOgogICAgICAgICBKU0Z1bmN0aW9uKE5vbk51bGxQYXNzUmVmUHRyPFN0cnVj
dHVyZT4pOwogCi0gICAgICAgIGJvb2wgaXNIb3N0RnVuY3Rpb25Ob25JbmxpbmUoKSBjb25zdDsK
KyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIGJvb2wgaXNIb3N0RnVuY3Rpb25Ob25JbmxpbmUo
KSBjb25zdDsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNT
dGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgdmlydHVh
bCBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlm
aWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09iamVjdFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T2JqZWN0UHJvdG90eXBlLmgJKHJldmlzaW9uIDYxNTY4KQorKysgSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PYmplY3RQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQAog
ICAgICAgICBib29sIG1faGFzTm9Qcm9wZXJ0aWVzV2l0aFVJbnQzMk5hbWVzOwogICAgIH07CiAK
LSAgICBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY1RvU3RyaW5n
KEV4ZWNTdGF0ZSopOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSopOwogCiB9IC8vIG5h
bWVzcGFjZSBKU0MKIApJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmgJKHJldmlzaW9uIDYx
NTY4KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTE0NCw3ICsxNDQsNyBAQAogICAgICAgICBzdGF0aWMgdm9pZCBtYXJrTGlzdHMoTWFya1N0
YWNrJiwgTGlzdFNldCYpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCBzbG93QXBwZW5k
KEpTVmFsdWUpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBzbG93QXBwZW5kKEpT
VmFsdWUpOwogICAgICAgICAKICAgICAgICAgUmVnaXN0ZXIqIG1fYnVmZmVyOwogICAgICAgICBz
aXplX3QgbV9zaXplOwpAQCAtMjM0LDcgKzIzNCw3IEBACiAgICAgICAgIGNvbnN0X2l0ZXJhdG9y
IGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9hcmdzOyB9CiAgICAgICAgIGNvbnN0X2l0ZXJhdG9y
IGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fYXJncyArIG1fYXJnQ291bnQ7IH0KIAotICAgICAgICB2
b2lkIGdldFNsaWNlKGludCBzdGFydEluZGV4LCBBcmdMaXN0JiByZXN1bHQpIGNvbnN0OworICAg
ICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBnZXRTbGljZShpbnQgc3RhcnRJbmRleCwgQXJn
TGlzdCYgcmVzdWx0KSBjb25zdDsKICAgICBwcml2YXRlOgogICAgICAgICBKU1ZhbHVlKiBtX2Fy
Z3M7CiAgICAgICAgIHNpemVfdCBtX2FyZ0NvdW50OwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5LmgJKHJldmlzaW9uIDYxNTY4KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDkgKzQxLDkgQEAKICAgICAgICAgZnJpZW5kIGNsYXNz
IFdhbGtlcjsKIAogICAgIHB1YmxpYzoKLSAgICAgICAgZXhwbGljaXQgSlNBcnJheShOb25OdWxs
UGFzc1JlZlB0cjxTdHJ1Y3R1cmU+KTsKLSAgICAgICAgSlNBcnJheShOb25OdWxsUGFzc1JlZlB0
cjxTdHJ1Y3R1cmU+LCB1bnNpZ25lZCBpbml0aWFsTGVuZ3RoKTsKLSAgICAgICAgSlNBcnJheShO
b25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBjb25zdCBBcmdMaXN0JiBpbml0aWFsVmFsdWVz
KTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIGV4cGxpY2l0IEpTQXJyYXkoTm9uTnVsbFBh
c3NSZWZQdHI8U3RydWN0dXJlPik7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBKU0FycmF5
KE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIHVuc2lnbmVkIGluaXRpYWxMZW5ndGgpOwor
ICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgSlNBcnJheShOb25OdWxsUGFzc1JlZlB0cjxTdHJ1
Y3R1cmU+LCBjb25zdCBBcmdMaXN0JiBpbml0aWFsVmFsdWVzKTsKICAgICAgICAgdmlydHVhbCB+
SlNBcnJheSgpOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhl
Y1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsK
QEAgLTUxLDEwICs1MSwxMCBAQAogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0
b3ImKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHB1dChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUpOyAvLyBGSVhNRTogTWFrZSBwcm90ZWN0ZWQgYW5kIGFkZCBzZXRJ
dGVtLgogCi0gICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNzSW5mbyBpbmZv
OworICAgICAgICBzdGF0aWMgSlNfRVhQT1JURURfU1lNQk9MIGNvbnN0IENsYXNzSW5mbyBpbmZv
OwogCiAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZS0+
bV9sZW5ndGg7IH0KLSAgICAgICAgdm9pZCBzZXRMZW5ndGgodW5zaWduZWQpOyAvLyBPSyB0byB1
c2Ugb24gbmV3IGFycmF5cywgYnV0IG5vdCBpZiBpdCBtaWdodCBiZSBhIFJlZ0V4cE1hdGNoQXJy
YXkuCisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIHNldExlbmd0aCh1bnNpZ25lZCk7
IC8vIE9LIHRvIHVzZSBvbiBuZXcgYXJyYXlzLCBidXQgbm90IGlmIGl0IG1pZ2h0IGJlIGEgUmVn
RXhwTWF0Y2hBcnJheS4KIAogICAgICAgICB2b2lkIHNvcnQoRXhlY1N0YXRlKik7CiAgICAgICAg
IHZvaWQgc29ydChFeGVjU3RhdGUqLCBKU1ZhbHVlIGNvbXBhcmVGdW5jdGlvbiwgQ2FsbFR5cGUs
IGNvbnN0IENhbGxEYXRhJik7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFs
RnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFs
RnVuY3Rpb24uaAkocmV2aXNpb24gNjE1NjgpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGVybmFsRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogICAgIGNs
YXNzIEludGVybmFsRnVuY3Rpb24gOiBwdWJsaWMgSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0IHsK
ICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8o
KSBjb25zdDsgCi0gICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNzSW5mbyBp
bmZvOworICAgICAgICBzdGF0aWMgSlNfRVhQT1JURURfU1lNQk9MIGNvbnN0IENsYXNzSW5mbyBp
bmZvOwogCiAgICAgICAgIGNvbnN0IFVTdHJpbmcmIG5hbWUoRXhlY1N0YXRlKik7CiAgICAgICAg
IGNvbnN0IFVTdHJpbmcgZGlzcGxheU5hbWUoRXhlY1N0YXRlKik7CkBAIC01MSw3ICs1MSw3IEBA
CiAgICAgICAgIC8vIE9ubHkgdXNlZCB0byBhbGxvdyB1cyB0byBkZXRlcm1pbmUgdGhlIEpTRnVu
Y3Rpb24gdnB0cgogICAgICAgICBJbnRlcm5hbEZ1bmN0aW9uKE5vbk51bGxQYXNzUmVmUHRyPFN0
cnVjdHVyZT4gc3RydWN0dXJlKTsKIAotICAgICAgICBJbnRlcm5hbEZ1bmN0aW9uKEpTR2xvYmFs
RGF0YSosIEpTR2xvYmFsT2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgY29u
c3QgSWRlbnRpZmllciYpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgSW50ZXJuYWxGdW5j
dGlvbihKU0dsb2JhbERhdGEqLCBKU0dsb2JhbE9iamVjdCosIE5vbk51bGxQYXNzUmVmUHRyPFN0
cnVjdHVyZT4sIGNvbnN0IElkZW50aWZpZXImKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZp
cnR1YWwgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoQ2FsbERhdGEmKSA9IDA7CkluZGV4OiBKYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0lkZW50aWZpZXIuaAkocmV2aXNpb24gNjE1NjgpCisrKyBKYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0lkZW50aWZpZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsOSArNTQsOSBAQAog
ICAgICAgICAKICAgICAgICAgY29uc3QgY2hhciogYXNjaWkoKSBjb25zdCB7IHJldHVybiBfdXN0
cmluZy5hc2NpaSgpOyB9CiAgICAgICAgIAotICAgICAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9t
KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgeSk7Ci0gICAgICAgIHN0YXRpYyBJZGVudGlmaWVy
IGZyb20oRXhlY1N0YXRlKiBleGVjLCBpbnQgeSk7Ci0gICAgICAgIHN0YXRpYyBJZGVudGlmaWVy
IGZyb20oRXhlY1N0YXRlKiBleGVjLCBkb3VibGUgeSk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZ
TUJPTCBzdGF0aWMgSWRlbnRpZmllciBmcm9tKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgeSk7
CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0aWMgSWRlbnRpZmllciBmcm9tKEV4ZWNT
dGF0ZSogZXhlYywgaW50IHkpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgc3RhdGljIElk
ZW50aWZpZXIgZnJvbShFeGVjU3RhdGUqIGV4ZWMsIGRvdWJsZSB5KTsKICAgICAgICAgc3RhdGlj
IElkZW50aWZpZXIgZnJvbShKU0dsb2JhbERhdGEqLCB1bnNpZ25lZCB5KTsKICAgICAgICAgc3Rh
dGljIElkZW50aWZpZXIgZnJvbShKU0dsb2JhbERhdGEqLCBpbnQgeSk7CiAgICAgICAgIHN0YXRp
YyBJZGVudGlmaWVyIGZyb20oSlNHbG9iYWxEYXRhKiwgZG91YmxlIHkpOwpAQCAtNzYsMTIgKzc2
LDEyIEBACiAgICAgICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgSWRlbnRpZmllciYs
IGNvbnN0IGNoYXIqKTsKICAgICAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJZGVu
dGlmaWVyJiwgY29uc3QgY2hhciopOwogICAgIAotICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChj
b25zdCBVU3RyaW5nOjpSZXAqLCBjb25zdCBjaGFyKik7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZ
TUJPTCBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBVU3RyaW5nOjpSZXAqLCBjb25zdCBjaGFyKik7
CiAgICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFVTdHJpbmc6OlJlcCosIGNvbnN0IFVD
aGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3Qg
VVN0cmluZzo6UmVwKiBhLCBjb25zdCBVU3RyaW5nOjpSZXAqIGIpIHsgcmV0dXJuIDo6ZXF1YWwo
YSwgYik7IH0KIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxVU3RyaW5nOjpSZXA+IGFkZChF
eGVjU3RhdGUqLCBjb25zdCBjaGFyKik7IC8vIE9ubHkgdG8gYmUgdXNlZCB3aXRoIHN0cmluZyBs
aXRlcmFscy4KLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8VVN0cmluZzo6UmVwPiBhZGQoSlNH
bG9iYWxEYXRhKiwgY29uc3QgY2hhciopOyAvLyBPbmx5IHRvIGJlIHVzZWQgd2l0aCBzdHJpbmcg
bGl0ZXJhbHMuCisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0aWMgUGFzc1JlZlB0cjxV
U3RyaW5nOjpSZXA+IGFkZChFeGVjU3RhdGUqLCBjb25zdCBjaGFyKik7IC8vIE9ubHkgdG8gYmUg
dXNlZCB3aXRoIHN0cmluZyBsaXRlcmFscy4KKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHN0
YXRpYyBQYXNzUmVmUHRyPFVTdHJpbmc6OlJlcD4gYWRkKEpTR2xvYmFsRGF0YSosIGNvbnN0IGNo
YXIqKTsgLy8gT25seSB0byBiZSB1c2VkIHdpdGggc3RyaW5nIGxpdGVyYWxzLgogCiAgICAgcHJp
dmF0ZToKICAgICAgICAgVVN0cmluZyBfdXN0cmluZzsKQEAgLTExMSwxMCArMTExLDEwIEBACiAg
ICAgICAgICAgICByZXR1cm4gYWRkU2xvd0Nhc2UoZ2xvYmFsRGF0YSwgcik7CiAgICAgICAgIH0K
IAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxVU3RyaW5nOjpSZXA+IGFkZFNsb3dDYXNlKEV4
ZWNTdGF0ZSosIFVTdHJpbmc6OlJlcCogcik7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBz
dGF0aWMgUGFzc1JlZlB0cjxVU3RyaW5nOjpSZXA+IGFkZFNsb3dDYXNlKEV4ZWNTdGF0ZSosIFVT
dHJpbmc6OlJlcCogcik7CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFVTdHJpbmc6OlJlcD4g
YWRkU2xvd0Nhc2UoSlNHbG9iYWxEYXRhKiwgVVN0cmluZzo6UmVwKiByKTsKIAotICAgICAgICBz
dGF0aWMgdm9pZCBjaGVja0N1cnJlbnRJZGVudGlmaWVyVGFibGUoRXhlY1N0YXRlKik7CisgICAg
ICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0aWMgdm9pZCBjaGVja0N1cnJlbnRJZGVudGlmaWVy
VGFibGUoRXhlY1N0YXRlKik7CiAgICAgICAgIHN0YXRpYyB2b2lkIGNoZWNrQ3VycmVudElkZW50
aWZpZXJUYWJsZShKU0dsb2JhbERhdGEqKTsKICAgICB9OwogICAgIApJbmRleDogSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCShyZXZpc2lvbiA2MTU2OCkKKysrIEphdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDIwICsyOSwy
MCBAQAogICAgIGNsYXNzIFN0cmluZ09iamVjdCA6IHB1YmxpYyBKU1dyYXBwZXJPYmplY3Qgewog
ICAgIHB1YmxpYzoKICAgICAgICAgU3RyaW5nT2JqZWN0KEV4ZWNTdGF0ZSosIE5vbk51bGxQYXNz
UmVmUHRyPFN0cnVjdHVyZT4pOwotICAgICAgICBTdHJpbmdPYmplY3QoRXhlY1N0YXRlKiwgTm9u
TnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgY29uc3QgVVN0cmluZyYpOworICAgICAgICBKU19F
WFBPUlRFRF9TWU1CT0wgU3RyaW5nT2JqZWN0KEV4ZWNTdGF0ZSosIE5vbk51bGxQYXNzUmVmUHRy
PFN0cnVjdHVyZT4sIGNvbnN0IFVTdHJpbmcmKTsKIAogICAgICAgICBzdGF0aWMgU3RyaW5nT2Jq
ZWN0KiBjcmVhdGUoRXhlY1N0YXRlKiwgSlNTdHJpbmcqKTsKIAotICAgICAgICB2aXJ0dWFsIGJv
b2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3QoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
KTsKLSAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3Rh
dGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgICAgIEpT
X0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0
ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAg
ICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4
ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAg
IEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIAot
ICAgICAgICB2aXJ0dWFsIHZvaWQgcHV0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgdmly
dHVhbCBib29sIGRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlIG1vZGUgPSBFeGNs
dWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1
YWwgdm9pZCBwdXQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1C
T0wgdmlydHVhbCBib29sIGRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIHZv
aWQgZ2V0T3duUHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVu
dW1lcmF0aW9uTW9kZSBtb2RlID0gRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CiAKICAgICAg
ICAgdmlydHVhbCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZp
bmZvOyB9Ci0gICAgICAgIHN0YXRpYyBjb25zdCBKU19FWFBPUlREQVRBIENsYXNzSW5mbyBpbmZv
OworICAgICAgICBzdGF0aWMgY29uc3QgSlNfRVhQT1JURURfU1lNQk9MIENsYXNzSW5mbyBpbmZv
OwogCiAgICAgICAgIEpTU3RyaW5nKiBpbnRlcm5hbFZhbHVlKCkgY29uc3QgeyByZXR1cm4gYXNT
dHJpbmcoSlNXcmFwcGVyT2JqZWN0OjppbnRlcm5hbFZhbHVlKCkpO30KIApJbmRleDogSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuaAkocmV2aXNpb24gNjE1NjgpCisrKyBKYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDggKzczLDgg
QEAKICAgICAgICAgICAgICAgICBzZXRJbmRleChpLCBieXRlVmFsdWUpOwogICAgICAgICB9CiAK
LSAgICAgICAgSlNCeXRlQXJyYXkoRXhlY1N0YXRlKiBleGVjLCBOb25OdWxsUGFzc1JlZlB0cjxT
dHJ1Y3R1cmU+LCBXVEY6OkJ5dGVBcnJheSogc3RvcmFnZSwgY29uc3QgSlNDOjpDbGFzc0luZm8q
ID0gJnNfZGVmYXVsdEluZm8pOwotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+
IGNyZWF0ZVN0cnVjdHVyZShKU1ZhbHVlIHByb3RvdHlwZSk7CisgICAgICAgIEpTX0VYUE9SVEVE
X1NZTUJPTCBKU0J5dGVBcnJheShFeGVjU3RhdGUqIGV4ZWMsIE5vbk51bGxQYXNzUmVmUHRyPFN0
cnVjdHVyZT4sIFdURjo6Qnl0ZUFycmF5KiBzdG9yYWdlLCBjb25zdCBKU0M6OkNsYXNzSW5mbyog
PSAmc19kZWZhdWx0SW5mbyk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0aWMgUGFz
c1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU1ZhbHVlIHByb3RvdHlwZSk7CiAg
ICAgICAgIAogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6RXhl
Y1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVy
dHlTbG90Jik7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpF
eGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7Cklu
ZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgJKHJldmlzaW9uIDYxNTY4KQorKysgSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Mb29rdXAuaAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDcgKzEzOSw3IEBA
CiAgICAgICAgICAgICAgICAgY3JlYXRlVGFibGUoJmV4ZWMtPmdsb2JhbERhdGEoKSk7CiAgICAg
ICAgIH0KIAotICAgICAgICB2b2lkIGRlbGV0ZVRhYmxlKCkgY29uc3Q7CisgICAgICAgIEpTX0VY
UE9SVEVEX1NZTUJPTCB2b2lkIGRlbGV0ZVRhYmxlKCkgY29uc3Q7CiAKICAgICAgICAgLy8gRmlu
ZCBhbiBlbnRyeSBpbiB0aGUgdGFibGUsIGFuZCByZXR1cm4gdGhlIGVudHJ5LgogICAgICAgICBB
TFdBWVNfSU5MSU5FIGNvbnN0IEhhc2hFbnRyeSogZW50cnkoSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSBjb25zdApAQCAtMTc0LDEwICsxNzQs
MTAgQEAKICAgICAgICAgfQogCiAgICAgICAgIC8vIENvbnZlcnQgdGhlIGhhc2ggdGFibGUga2V5
cyB0byBpZGVudGlmaWVycy4KLSAgICAgICAgdm9pZCBjcmVhdGVUYWJsZShKU0dsb2JhbERhdGEq
KSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZvaWQgY3JlYXRlVGFibGUoSlNH
bG9iYWxEYXRhKikgY29uc3Q7CiAgICAgfTsKIAotICAgIHZvaWQgc2V0VXBTdGF0aWNGdW5jdGlv
blNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSGFzaEVudHJ5KiwgSlNPYmplY3QqIHRoaXNPYmplY3Qs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgSlNf
RVhQT1JURURfU1lNQk9MIHZvaWQgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRlKiwg
Y29uc3QgSGFzaEVudHJ5KiwgSlNPYmplY3QqIHRoaXNPYmplY3QsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAKICAgICAvKioKICAgICAgKiBUaGlzIG1l
dGhvZCBkb2VzIGl0IGFsbCAobG9va2luZyBpbiB0aGUgaGFzaHRhYmxlLCBjaGVja2luZyBmb3Ig
ZnVuY3Rpb24KSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5oCShyZXZpc2lvbiA2
MTU2OCkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC01NSw4ICs1NSw4IEBACiAgICAgICAgIEpTVmFsdWUgbV92YWx1ZTsKICAgICB9Owog
Ci0gICAgQ29tcGxldGlvbiBjaGVja1N5bnRheChFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2Rl
Jik7Ci0gICAgQ29tcGxldGlvbiBldmFsdWF0ZShFeGVjU3RhdGUqLCBTY29wZUNoYWluJiwgY29u
c3QgU291cmNlQ29kZSYsIEpTVmFsdWUgdGhpc1ZhbHVlID0gSlNWYWx1ZSgpKTsKKyAgICBKU19F
WFBPUlRFRF9TWU1CT0wgQ29tcGxldGlvbiBjaGVja1N5bnRheChFeGVjU3RhdGUqLCBjb25zdCBT
b3VyY2VDb2RlJik7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIENvbXBsZXRpb24gZXZhbHVhdGUo
RXhlY1N0YXRlKiwgU2NvcGVDaGFpbiYsIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IEpTVmFsdWUoKSk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCkluZGV4OiBKYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAkocmV2aXNpb24gNjE1NjgpCisrKyBK
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAkod29ya2luZyBjb3B5KQpA
QCAtNDQsMTQgKzQ0LDE0IEBACiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAKICAgICBwdWJs
aWM6Ci0gICAgICAgIFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSgpIGNvbnN0IHsgcmV0dXJuICpk
LT5zeW1ib2xUYWJsZTsgfQorICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgU3ltYm9sVGFibGUm
IHN5bWJvbFRhYmxlKCkgY29uc3QgeyByZXR1cm4gKmQtPnN5bWJvbFRhYmxlOyB9CiAKICAgICAg
ICAgdmlydHVhbCB2b2lkIHB1dFdpdGhBdHRyaWJ1dGVzKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKSA9IDA7CiAKLSAgICAgICAgdmly
dHVhbCBib29sIGRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImKTsK
LSAgICAgICAgdmlydHVhbCB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSA9IEV4Y2x1ZGVEb250RW51bVBy
b3BlcnRpZXMpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCBib29sIGRlbGV0
ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImKTsKKyAgICAgICAgSlNfRVhQ
T1JURURfU1lNQk9MIHZpcnR1YWwgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlIG1vZGUgPSBFeGNsdWRlRG9udEVu
dW1Qcm9wZXJ0aWVzKTsKICAgICAgICAgCi0gICAgICAgIHZpcnR1YWwgYm9vbCBpc1ZhcmlhYmxl
T2JqZWN0KCkgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIGJvb2wg
aXNWYXJpYWJsZU9iamVjdCgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNEeW5hbWlj
U2NvcGUoYm9vbCYgcmVxdWlyZXNEeW5hbWljQ2hlY2tzKSBjb25zdCA9IDA7CiAKICAgICAgICAg
UmVnaXN0ZXImIHJlZ2lzdGVyQXQoaW50IGluZGV4KSBjb25zdCB7IHJldHVybiBkLT5yZWdpc3Rl
cnNbaW5kZXhdOyB9CkBAIC05Myw3ICs5Myw3IEBACiAgICAgICAgIHZvaWQgc2V0UmVnaXN0ZXJz
KFJlZ2lzdGVyKiByLCBSZWdpc3RlciogcmVnaXN0ZXJBcnJheSk7CiAKICAgICAgICAgYm9vbCBz
eW1ib2xUYWJsZUdldChjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAg
IGJvb2wgc3ltYm9sVGFibGVHZXQoY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRv
ciYpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgYm9vbCBzeW1ib2xUYWJsZUdldChjb25z
dCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgICAgIGJvb2wgc3ltYm9s
VGFibGVHZXQoY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYsIGJvb2wmIHNsb3RJc1dy
aXRlYWJsZSk7CiAgICAgICAgIGJvb2wgc3ltYm9sVGFibGVQdXQoY29uc3QgSWRlbnRpZmllciYs
IEpTVmFsdWUpOwogICAgICAgICBib29sIHN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMoY29u
c3QgSWRlbnRpZmllciYsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwpJbmRleDogSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ2VsbC5oCShyZXZpc2lvbiA2MTU2OCkKKysrIEphdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDggKzQ4LDggQEAKICAgICAgICAg
ZnJpZW5kIGNsYXNzIEpTR2xvYmFsRGF0YTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIGV4cGxp
Y2l0IEpTQ2VsbChTdHJ1Y3R1cmUqKTsKLSAgICAgICAgdmlydHVhbCB+SlNDZWxsKCk7CisgICAg
ICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBleHBsaWNpdCBKU0NlbGwoU3RydWN0dXJlKik7CisgICAg
ICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIH5KU0NlbGwoKTsKIAogICAgIHB1YmxpYzoK
ICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVEdW1teVN0cnVjdHVy
ZSgpCkBAIC02MSwzOSArNjEsMzkgQEAKICNpZiBVU0UoSlNWQUxVRTMyKQogICAgICAgICBib29s
IGlzTnVtYmVyKCkgY29uc3Q7CiAjZW5kaWYKLSAgICAgICAgYm9vbCBpc1N0cmluZygpIGNvbnN0
OwotICAgICAgICBib29sIGlzT2JqZWN0KCkgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBp
c0dldHRlclNldHRlcigpIGNvbnN0OwotICAgICAgICBib29sIGluaGVyaXRzKGNvbnN0IENsYXNz
SW5mbyopIGNvbnN0OworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgYm9vbCBpc1N0cmluZygp
IGNvbnN0OworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgYm9vbCBpc09iamVjdCgpIGNvbnN0
OworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCBib29sIGlzR2V0dGVyU2V0dGVy
KCkgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBib29sIGluaGVyaXRzKGNvbnN0
IENsYXNzSW5mbyopIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNBUElWYWx1ZVdyYXBw
ZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNQcm9w
ZXJ0eU5hbWVJdGVyYXRvcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICAgICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUoKSBjb25zdDsKIAogICAgICAgICAvLyBFeHRyYWN0aW5nIHRoZSB2
YWx1ZS4KLSAgICAgICAgYm9vbCBnZXRTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBVU3RyaW5nJikg
Y29uc3Q7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBib29sIGdldFN0cmluZyhFeGVjU3Rh
dGUqIGV4ZWMsIFVTdHJpbmcmKSBjb25zdDsKICAgICAgICAgVVN0cmluZyBnZXRTdHJpbmcoRXhl
Y1N0YXRlKiBleGVjKSBjb25zdDsgLy8gbnVsbCBzdHJpbmcgaWYgbm90IGEgc3RyaW5nCi0gICAg
ICAgIEpTT2JqZWN0KiBnZXRPYmplY3QoKTsgLy8gTlVMTCBpZiBub3QgYW4gb2JqZWN0Ci0gICAg
ICAgIGNvbnN0IEpTT2JqZWN0KiBnZXRPYmplY3QoKSBjb25zdDsgLy8gTlVMTCBpZiBub3QgYW4g
b2JqZWN0CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBKU09iamVjdCogZ2V0T2JqZWN0KCk7
IC8vIE5VTEwgaWYgbm90IGFuIG9iamVjdAorICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgY29u
c3QgSlNPYmplY3QqIGdldE9iamVjdCgpIGNvbnN0OyAvLyBOVUxMIGlmIG5vdCBhbiBvYmplY3QK
ICAgICAgICAgCi0gICAgICAgIHZpcnR1YWwgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoQ2FsbERhdGEm
KTsKLSAgICAgICAgdmlydHVhbCBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoQ29uc3Ry
dWN0RGF0YSYpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCBDYWxsVHlwZSBn
ZXRDYWxsRGF0YShDYWxsRGF0YSYpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVh
bCBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoQ29uc3RydWN0RGF0YSYpOwogCiAgICAg
ICAgIC8vIEV4dHJhY3RpbmcgaW50ZWdlciB2YWx1ZXMuCiAgICAgICAgIC8vIEZJWE1FOiByZW1v
dmUgdGhlc2UgbWV0aG9kcywgY2FuIGNoZWNrIGlzTnVtYmVyQ2VsbCBpbiBKU1ZhbHVlICYmIHRo
ZW4gY2FsbCBhc051bWJlckNlbGw6OiouCi0gICAgICAgIHZpcnR1YWwgYm9vbCBnZXRVSW50MzIo
dWludDMyX3QmKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgYm9v
bCBnZXRVSW50MzIodWludDMyX3QmKSBjb25zdDsKIAogICAgICAgICAvLyBCYXNpYyBjb252ZXJz
aW9ucy4KLSAgICAgICAgdmlydHVhbCBKU1ZhbHVlIHRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSosIFBy
ZWZlcnJlZFByaW1pdGl2ZVR5cGUpIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0UHJp
bWl0aXZlTnVtYmVyKEV4ZWNTdGF0ZSosIGRvdWJsZSYgbnVtYmVyLCBKU1ZhbHVlJik7Ci0gICAg
ICAgIHZpcnR1YWwgYm9vbCB0b0Jvb2xlYW4oRXhlY1N0YXRlKikgY29uc3Q7Ci0gICAgICAgIHZp
cnR1YWwgZG91YmxlIHRvTnVtYmVyKEV4ZWNTdGF0ZSopIGNvbnN0OwotICAgICAgICB2aXJ0dWFs
IFVTdHJpbmcgdG9TdHJpbmcoRXhlY1N0YXRlKikgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgSlNP
YmplY3QqIHRvT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICBKU19FWFBPUlRFRF9T
WU1CT0wgdmlydHVhbCBKU1ZhbHVlIHRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSosIFByZWZlcnJlZFBy
aW1pdGl2ZVR5cGUpIGNvbnN0OworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCBi
b29sIGdldFByaW1pdGl2ZU51bWJlcihFeGVjU3RhdGUqLCBkb3VibGUmIG51bWJlciwgSlNWYWx1
ZSYpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCBib29sIHRvQm9vbGVhbihF
eGVjU3RhdGUqKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgZG91
YmxlIHRvTnVtYmVyKEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICBKU19FWFBPUlRFRF9TWU1C
T0wgdmlydHVhbCBVU3RyaW5nIHRvU3RyaW5nKEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICBK
U19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCBKU09iamVjdCogdG9PYmplY3QoRXhlY1N0YXRlKikg
Y29uc3Q7CiAKICAgICAgICAgLy8gR2FyYmFnZSBjb2xsZWN0aW9uLgotICAgICAgICB2b2lkKiBv
cGVyYXRvciBuZXcoc2l6ZV90LCBFeGVjU3RhdGUqKTsKLSAgICAgICAgdm9pZCogb3BlcmF0b3Ig
bmV3KHNpemVfdCwgSlNHbG9iYWxEYXRhKik7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2
b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBFeGVjU3RhdGUqKTsKKyAgICAgICAgSlNfRVhQT1JU
RURfU1lNQk9MIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIEpTR2xvYmFsRGF0YSopOwogICAg
ICAgICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKiBwbGFjZW1lbnROZXdEZXN0aW5h
dGlvbikgeyByZXR1cm4gcGxhY2VtZW50TmV3RGVzdGluYXRpb247IH0KIAogICAgICAgICB2aXJ0
dWFsIHZvaWQgbWFya0NoaWxkcmVuKE1hcmtTdGFjayYpOwpAQCAtMTAyLDE2ICsxMDIsMTYgQEAK
ICNlbmRpZgogCiAgICAgICAgIC8vIE9iamVjdCBvcGVyYXRpb25zLCB3aXRoIHRoZSB0b09iamVj
dCBvcGVyYXRpb24gaW5jbHVkZWQuCi0gICAgICAgIHZpcnR1YWwgY29uc3QgQ2xhc3NJbmZvKiBj
bGFzc0luZm8oKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCB2b2lkIHB1dChFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYp
OwotICAgICAgICB2aXJ0dWFsIHZvaWQgcHV0KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSk7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBkZWxldGVQcm9wZXJ0eShFeGVj
U3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOwotICAgICAgICB2aXJ0dWFs
IGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsK
KyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgY29uc3QgQ2xhc3NJbmZvKiBjbGFz
c0luZm8oKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgdm9pZCBw
dXQoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgdm9p
ZCBwdXQoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlKTsKKyAgICAg
ICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgYm9vbCBkZWxldGVQcm9wZXJ0eShFeGVjU3Rh
dGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOworICAgICAgICBKU19FWFBPUlRF
RF9TWU1CT0wgdmlydHVhbCBib29sIGRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIHVuc2lnbmVk
IHByb3BlcnR5TmFtZSk7CiAKLSAgICAgICAgdmlydHVhbCBKU09iamVjdCogdG9UaGlzT2JqZWN0
KEV4ZWNTdGF0ZSopIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIEpTVmFsdWUgZ2V0SlNOdW1iZXIo
KTsKLSAgICAgICAgdm9pZCogdnB0cigpIHsgcmV0dXJuICpyZWludGVycHJldF9jYXN0PHZvaWQq
Kj4odGhpcyk7IH0KLSAgICAgICAgdm9pZCBzZXRWUHRyKHZvaWQqIHZwdHIpIHsgKnJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCoqPih0aGlzKSA9IHZwdHI7IH0KKyAgICAgICAgSlNfRVhQT1JURURfU1lN
Qk9MIHZpcnR1YWwgSlNPYmplY3QqIHRvVGhpc09iamVjdChFeGVjU3RhdGUqKSBjb25zdDsKKyAg
ICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgSlNWYWx1ZSBnZXRKU051bWJlcigpOwor
ICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCogdnB0cigpIHsgcmV0dXJuICpyZWludGVy
cHJldF9jYXN0PHZvaWQqKj4odGhpcyk7IH0KKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZv
aWQgc2V0VlB0cih2b2lkKiB2cHRyKSB7ICpyZWludGVycHJldF9jYXN0PHZvaWQqKj4odGhpcykg
PSB2cHRyOyB9CiAKICAgICAgICAgLy8gRklYTUU6IFJlbmFtZSBnZXRPd25Qcm9wZXJ0eVNsb3Qg
dG8gdmlydHVhbEdldE93blByb3BlcnR5U2xvdCwgYW5kCiAgICAgICAgIC8vIGZhc3RHZXRPd25Q
cm9wZXJ0eVNsb3QgdG8gZ2V0T3duUHJvcGVydHlTbG90LiBDYWxsZXJzIHNob3VsZCBhbHdheXMK
QEAgLTEyNCw4ICsxMjQsOCBAQAogCiAgICAgcHJpdmF0ZToKICAgICAgICAgLy8gQmFzZSBpbXBs
ZW1lbnRhdGlvbjsgZm9yIG5vbi1vYmplY3QgY2xhc3NlcyBpbXBsZW1lbnRzIGdldFByb3BlcnR5
U2xvdC4KLSAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUq
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgICAg
ICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2
aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZ
TUJPTCB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIHVuc2lnbmVk
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIAogICAgICAgICBTdHJ1Y3R1
cmUqIG1fc3RydWN0dXJlOwogICAgIH07CkBAIC0xNTEsNyArMTUxLDcgQEAKICAgICAgICAgcmV0
dXJuIG1fc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBPYmplY3RUeXBlOwogICAgIH0K
IAotICAgIGlubGluZSBib29sIEpTQ2VsbDo6aXNTdHJpbmcoKSBjb25zdAorICAgIEpTX0VYUE9S
VEVEX1NZTUJPTCBpbmxpbmUgYm9vbCBKU0NlbGw6OmlzU3RyaW5nKCkgY29uc3QKICAgICB7CiAg
ICAgICAgIHJldHVybiBtX3N0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gU3RyaW5nVHlw
ZTsKICAgICB9CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmgJKHJldmlzaW9uIDYxNTY4KQor
KysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNzcs
OCArNzcsOCBAQAogICAgICAgICAgICAgdW5sb2NrKG1fbG9ja0JlaGF2aW9yKTsgCiAgICAgICAg
IH0KICAgICAgICAgCi0gICAgICAgIHN0YXRpYyB2b2lkIGxvY2soSlNMb2NrQmVoYXZpb3IpOwot
ICAgICAgICBzdGF0aWMgdm9pZCB1bmxvY2soSlNMb2NrQmVoYXZpb3IpOworICAgICAgICBKU19F
WFBPUlRFRF9TWU1CT0wgc3RhdGljIHZvaWQgbG9jayhKU0xvY2tCZWhhdmlvcik7CisgICAgICAg
IEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0aWMgdm9pZCB1bmxvY2soSlNMb2NrQmVoYXZpb3IpOwog
ICAgICAgICBzdGF0aWMgdm9pZCBsb2NrKEV4ZWNTdGF0ZSopOwogICAgICAgICBzdGF0aWMgdm9p
ZCB1bmxvY2soRXhlY1N0YXRlKik7CiAKQEAgLTg3LDcgKzg3LDcgQEAKIAogICAgICAgICBKU0xv
Y2tCZWhhdmlvciBtX2xvY2tCZWhhdmlvcjsKIAotICAgICAgICBjbGFzcyBEcm9wQWxsTG9ja3Mg
OiBwdWJsaWMgTm9uY29weWFibGUgeworICAgICAgICBjbGFzcyBKU19FWFBPUlRFRF9TWU1CT0wg
RHJvcEFsbExvY2tzIDogcHVibGljIE5vbmNvcHlhYmxlIHsKICAgICAgICAgcHVibGljOgogICAg
ICAgICAgICAgRHJvcEFsbExvY2tzKEV4ZWNTdGF0ZSogZXhlYyk7CiAgICAgICAgICAgICBEcm9w
QWxsTG9ja3MoSlNMb2NrQmVoYXZpb3IpOwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm9wZXJ0eVNsb3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3Bl
cnR5U2xvdC5oCShyZXZpc2lvbiA2MTU2OCkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
cGVydHlTbG90LmgJKHdvcmtpbmcgY29weSkKQEAgLTI0Myw3ICsyNDMsNyBAQAogICAgICAgICAg
ICAgcmV0dXJuIG1fZ2V0VmFsdWU7CiAgICAgICAgIH0KICAgICBwcml2YXRlOgotICAgICAgICBK
U1ZhbHVlIGZ1bmN0aW9uR2V0dGVyKEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICBKU19FWFBP
UlRFRF9TWU1CT0wgSlNWYWx1ZSBmdW5jdGlvbkdldHRlcihFeGVjU3RhdGUqKSBjb25zdDsKIAog
ICAgICAgICBHZXRWYWx1ZUZ1bmMgbV9nZXRWYWx1ZTsKICAgICAgICAgR2V0SW5kZXhWYWx1ZUZ1
bmMgbV9nZXRJbmRleFZhbHVlOwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlv
bkNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5j
dGlvbkNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDYxNTY4KQorKysgSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcg
QEAKICAgICAgICAgdmlydHVhbCBDYWxsVHlwZSBnZXRDYWxsRGF0YShDYWxsRGF0YSYpOwogICAg
IH07CiAKLSAgICBKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiwgY29uc3Qg
QXJnTGlzdCYsIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwgY29uc3QgVVN0cmluZyYg
c291cmNlVVJMLCBpbnQgbGluZU51bWJlcik7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIEpTT2Jq
ZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqLCBjb25zdCBBcmdMaXN0JiwgY29uc3Qg
SWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBVU3RyaW5nJiBzb3VyY2VVUkwsIGludCBs
aW5lTnVtYmVyKTsKICAgICBKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiwg
Y29uc3QgQXJnTGlzdCYpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IEphdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TbWFsbFN0cmluZ3MuaAkocmV2aXNpb24gNjE1NjgpCisrKyBKYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC02NCw4ICs2NCw4IEBA
CiAgICAgICAgIEpTU3RyaW5nKiogc2luZ2xlQ2hhcmFjdGVyU3RyaW5ncygpIHsgcmV0dXJuIG1f
c2luZ2xlQ2hhcmFjdGVyU3RyaW5nczsgfQogI2VuZGlmCiAgICAgcHJpdmF0ZToKLSAgICAgICAg
dm9pZCBjcmVhdGVFbXB0eVN0cmluZyhKU0dsb2JhbERhdGEqKTsKLSAgICAgICAgdm9pZCBjcmVh
dGVTaW5nbGVDaGFyYWN0ZXJTdHJpbmcoSlNHbG9iYWxEYXRhKiwgdW5zaWduZWQgY2hhcik7Cisg
ICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIGNyZWF0ZUVtcHR5U3RyaW5nKEpTR2xvYmFs
RGF0YSopOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBjcmVhdGVTaW5nbGVDaGFy
YWN0ZXJTdHJpbmcoSlNHbG9iYWxEYXRhKiwgdW5zaWduZWQgY2hhcik7CiAKICAgICAgICAgSlNT
dHJpbmcqIG1fZW1wdHlTdHJpbmc7CiAgICAgICAgIEpTU3RyaW5nKiBtX3NpbmdsZUNoYXJhY3Rl
clN0cmluZ3NbMHgxMDBdOwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5h
bWVBcnJheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlO
YW1lQXJyYXkuaAkocmV2aXNpb24gNjE1NjgpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3BlcnR5TmFtZUFycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAKICAgICAg
ICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKCkgeyByZXR1cm4gbV9nbG9iYWxEYXRhOyB9CiAK
ICAgICAgICAgdm9pZCBhZGQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikgeyBhZGQoaWRl
bnRpZmllci51c3RyaW5nKCkucmVwKCkpOyB9Ci0gICAgICAgIHZvaWQgYWRkKFVTdHJpbmc6OlJl
cCopOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBhZGQoVVN0cmluZzo6UmVwKik7
CiAgICAgICAgIHZvaWQgYWRkS25vd25VbmlxdWUoVVN0cmluZzo6UmVwKiBpZGVudGlmaWVyKSB7
IG1fZGF0YS0+cHJvcGVydHlOYW1lVmVjdG9yKCkuYXBwZW5kKElkZW50aWZpZXIobV9nbG9iYWxE
YXRhLCBpZGVudGlmaWVyKSk7IH0KIAogICAgICAgICBJZGVudGlmaWVyJiBvcGVyYXRvcltdKHVu
c2lnbmVkIGkpIHsgcmV0dXJuIG1fZGF0YS0+cHJvcGVydHlOYW1lVmVjdG9yKClbaV07IH0KSW5k
ZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Vycm9yLmgJKHJldmlzaW9uIDYxNTY4KQorKysgSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FcnJvci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSwxMiArNDUsMTIgQEAKICAg
ICBKU09iamVjdCogY3JlYXRlVHlwZUVycm9yKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgVVN0cmlu
ZyYpOwogICAgIEpTT2JqZWN0KiBjcmVhdGVVUklFcnJvcihKU0dsb2JhbE9iamVjdCosIGNvbnN0
IFVTdHJpbmcmKTsKICAgICAvLyBFeGVjU3RhdGUgd3JhcHBlcnMuCi0gICAgSlNPYmplY3QqIGNy
ZWF0ZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmKTsKKyAgICBKU19FWFBPUlRFRF9T
WU1CT0wgSlNPYmplY3QqIGNyZWF0ZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmKTsK
ICAgICBKU09iamVjdCogY3JlYXRlRXZhbEVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcm
KTsKICAgICBKU09iamVjdCogY3JlYXRlUmFuZ2VFcnJvcihFeGVjU3RhdGUqLCBjb25zdCBVU3Ry
aW5nJik7Ci0gICAgSlNPYmplY3QqIGNyZWF0ZVJlZmVyZW5jZUVycm9yKEV4ZWNTdGF0ZSosIGNv
bnN0IFVTdHJpbmcmKTsKLSAgICBKU09iamVjdCogY3JlYXRlU3ludGF4RXJyb3IoRXhlY1N0YXRl
KiwgY29uc3QgVVN0cmluZyYpOwotICAgIEpTT2JqZWN0KiBjcmVhdGVUeXBlRXJyb3IoRXhlY1N0
YXRlKiwgY29uc3QgVVN0cmluZyYpOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBKU09iamVjdCog
Y3JlYXRlUmVmZXJlbmNlRXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYpOworICAgIEpT
X0VYUE9SVEVEX1NZTUJPTCBKU09iamVjdCogY3JlYXRlU3ludGF4RXJyb3IoRXhlY1N0YXRlKiwg
Y29uc3QgVVN0cmluZyYpOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBKU09iamVjdCogY3JlYXRl
VHlwZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmKTsKICAgICBKU09iamVjdCogY3Jl
YXRlVVJJRXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYpOwogCiAgICAgLy8gTWV0aG9k
cyB0byBhZGQgCkBAIC02MiwxMiArNjIsMTIgQEAKICAgICBKU09iamVjdCogYWRkRXJyb3JJbmZv
KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiBlcnJvciwgaW50IGxpbmUsIGNvbnN0IFNvdXJjZUNvZGUm
LCBpbnQgZGl2b3RQb2ludCwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0LCBib29sIHdp
dGhDYXJldCA9IHRydWUpOwogCiAgICAgLy8gTWV0aG9kcyB0byB0aHJvdyBFcnJvcnMuCi0gICAg
SlNWYWx1ZSB0aHJvd0Vycm9yKEV4ZWNTdGF0ZSosIEpTVmFsdWUpOwotICAgIEpTT2JqZWN0KiB0
aHJvd0Vycm9yKEV4ZWNTdGF0ZSosIEpTT2JqZWN0Kik7CisgICAgSlNfRVhQT1JURURfU1lNQk9M
IEpTVmFsdWUgdGhyb3dFcnJvcihFeGVjU3RhdGUqLCBKU1ZhbHVlKTsKKyAgICBKU19FWFBPUlRF
RF9TWU1CT0wgSlNPYmplY3QqIHRocm93RXJyb3IoRXhlY1N0YXRlKiwgSlNPYmplY3QqKTsKIAog
ICAgIC8vIENvbnZlbmllbmNlIHdyYXBwZXJzLCBjcmVhdGUgYW4gdGhyb3cgYW4gZXhjZXB0aW9u
IHdpdGggYSBkZWZhdWx0IG1lc3NhZ2UuCi0gICAgSlNPYmplY3QqIHRocm93VHlwZUVycm9yKEV4
ZWNTdGF0ZSopOwotICAgIEpTT2JqZWN0KiB0aHJvd1N5bnRheEVycm9yKEV4ZWNTdGF0ZSopOwor
ICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBKU09iamVjdCogdGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRl
Kik7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIEpTT2JqZWN0KiB0aHJvd1N5bnRheEVycm9yKEV4
ZWNTdGF0ZSopOwogCiAgICAgLy8gQ29udmVuaWVuY2Ugd3JhcHBlcnMsIHdyYXAgcmVzdWx0IGFz
IGFuIEVuY29kZWRKU1ZhbHVlLgogICAgIGlubGluZSBFbmNvZGVkSlNWYWx1ZSB0aHJvd1ZNRXJy
b3IoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGVycm9yKSB7IHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhyb3dFcnJvcihleGVjLCBlcnJvcikpOyB9CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1VTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJp
bmcuaAkocmV2aXNpb24gNjE1NjgpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcu
aAkod29ya2luZyBjb3B5KQpAQCAtNDgsMTkgKzQ4LDE5IEBACiAgICAgICAgIHR5cGVkZWYgVVN0
cmluZ0ltcGwgUmVwOwogICAgIAogICAgIHB1YmxpYzoKLSAgICAgICAgVVN0cmluZygpIHt9Ci0g
ICAgICAgIFVTdHJpbmcoY29uc3QgY2hhciopOyAvLyBDb25zdHJ1Y3RvciBmb3IgbnVsbC10ZXJt
aW5hdGVkIHN0cmluZy4KLSAgICAgICAgVVN0cmluZyhjb25zdCBjaGFyKiwgdW5zaWduZWQgbGVu
Z3RoKTsKLSAgICAgICAgVVN0cmluZyhjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7Ci0g
ICAgICAgIFVTdHJpbmcoY29uc3QgVmVjdG9yPFVDaGFyPiYgYnVmZmVyKTsKKyAgICAgICAgSlNf
RVhQT1JURURfU1lNQk9MIFVTdHJpbmcoKSB7fQorICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wg
VVN0cmluZyhjb25zdCBjaGFyKik7IC8vIENvbnN0cnVjdG9yIGZvciBudWxsLXRlcm1pbmF0ZWQg
c3RyaW5nLgorICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgVVN0cmluZyhjb25zdCBjaGFyKiwg
dW5zaWduZWQgbGVuZ3RoKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIFVTdHJpbmcoY29u
c3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wg
VVN0cmluZyhjb25zdCBWZWN0b3I8VUNoYXI+JiBidWZmZXIpOwogCi0gICAgICAgIFVTdHJpbmco
Y29uc3QgVVN0cmluZyYgcykKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIFVTdHJpbmcoY29u
c3QgVVN0cmluZyYgcykKICAgICAgICAgICAgIDogbV9yZXAocy5tX3JlcCkKICAgICAgICAgewog
ICAgICAgICB9CiAKICAgICAgICAgLy8gU3BlY2lhbCBjb25zdHJ1Y3RvciBmb3IgY2FzZXMgd2hl
cmUgd2Ugb3ZlcndyaXRlIGFuIG9iamVjdCBpbiBwbGFjZS4KLSAgICAgICAgVVN0cmluZyhQbGFj
ZW1lbnROZXdBZG9wdFR5cGUpCisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBVU3RyaW5nKFBs
YWNlbWVudE5ld0Fkb3B0VHlwZSkKICAgICAgICAgICAgIDogbV9yZXAoUGxhY2VtZW50TmV3QWRv
cHQpCiAgICAgICAgIHsKICAgICAgICAgfQpAQCAtNzEsMTUgKzcxLDE1IEBACiAgICAgICAgICAg
ICByZXR1cm4gUmVwOjphZG9wdCh2ZWN0b3IpOwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGlj
IFVTdHJpbmcgZnJvbShpbnQpOwotICAgICAgICBzdGF0aWMgVVN0cmluZyBmcm9tKGxvbmcgbG9u
Zyk7Ci0gICAgICAgIHN0YXRpYyBVU3RyaW5nIGZyb20odW5zaWduZWQpOwotICAgICAgICBzdGF0
aWMgVVN0cmluZyBmcm9tKGxvbmcpOwotICAgICAgICBzdGF0aWMgVVN0cmluZyBmcm9tKGRvdWJs
ZSk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0aWMgVVN0cmluZyBmcm9tKGludCk7
CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0aWMgVVN0cmluZyBmcm9tKGxvbmcgbG9u
Zyk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0aWMgVVN0cmluZyBmcm9tKHVuc2ln
bmVkKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHN0YXRpYyBVU3RyaW5nIGZyb20obG9u
Zyk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0aWMgVVN0cmluZyBmcm9tKGRvdWJs
ZSk7CiAKICAgICAgICAgLy8gTk9URTogVGhpcyBtZXRob2Qgc2hvdWxkIG9ubHkgYmUgdXNlZCBm
b3IgKmRlYnVnZ2luZyogcHVycG9zZXMgYXMgaXQKICAgICAgICAgLy8gaXMgbmVpdGhlciBVbmlj
b2RlIHNhZmUgbm9yIGZyZWUgZnJvbSBzaWRlIGVmZmVjdHMgbm9yIHRocmVhZC1zYWZlLgotICAg
ICAgICBjaGFyKiBhc2NpaSgpIGNvbnN0OworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgY2hh
ciogYXNjaWkoKSBjb25zdDsKIAogICAgICAgICAvKioKICAgICAgICAgICogQ29udmVydCB0aGUg
c3RyaW5nIHRvIFVURi04LCBhc3N1bWluZyBpdCBpcyBVVEYtMTYgZW5jb2RlZC4KQEAgLTg5LDcg
Kzg5LDcgQEAKICAgICAgICAgICogZ3VhcmFudGVlZCB0byBiZSBvdGhlcndpc2UgdmFsaWQuCiAg
ICAgICAgICAqIEluIHN0cmljdCBtb2RlLCBlcnJvciBpcyByZXR1cm5lZCBhcyBudWxsIENTdHJp
bmcuCiAgICAgICAgICAqLwotICAgICAgICBDU3RyaW5nIFVURjhTdHJpbmcoYm9vbCBzdHJpY3Qg
PSBmYWxzZSkgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBDU3RyaW5nIFVURjhT
dHJpbmcoYm9vbCBzdHJpY3QgPSBmYWxzZSkgY29uc3Q7CiAKICAgICAgICAgY29uc3QgVUNoYXIq
IGRhdGEoKSBjb25zdAogICAgICAgICB7CkBAIC0xMDUsNyArMTA1LDcgQEAKICAgICAgICAgICAg
IHJldHVybiBtX3JlcC0+bGVuZ3RoKCk7CiAgICAgICAgIH0KIAotICAgICAgICBib29sIGlzTnVs
bCgpIGNvbnN0IHsgcmV0dXJuICFtX3JlcDsgfQorICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wg
Ym9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhbV9yZXA7IH0KICAgICAgICAgYm9vbCBpc0Vt
cHR5KCkgY29uc3QgeyByZXR1cm4gIW1fcmVwIHx8ICFtX3JlcC0+bGVuZ3RoKCk7IH0KIAogICAg
ICAgICBib29sIGlzOEJpdCgpIGNvbnN0OwpAQCAtMTE2LDggKzExNiw4IEBACiAgICAgICAgIGRv
dWJsZSB0b0RvdWJsZShib29sIHRvbGVyYXRlVHJhaWxpbmdKdW5rKSBjb25zdDsKICAgICAgICAg
ZG91YmxlIHRvRG91YmxlKCkgY29uc3Q7CiAKLSAgICAgICAgdWludDMyX3QgdG9VSW50MzIoYm9v
bCogb2sgPSAwKSBjb25zdDsKLSAgICAgICAgdWludDMyX3QgdG9VSW50MzIoYm9vbCogb2ssIGJv
b2wgdG9sZXJhdGVFbXB0eVN0cmluZykgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJP
TCB1aW50MzJfdCB0b1VJbnQzMihib29sKiBvayA9IDApIGNvbnN0OworICAgICAgICBKU19FWFBP
UlRFRF9TWU1CT0wgdWludDMyX3QgdG9VSW50MzIoYm9vbCogb2ssIGJvb2wgdG9sZXJhdGVFbXB0
eVN0cmluZykgY29uc3Q7CiAgICAgICAgIHVpbnQzMl90IHRvU3RyaWN0VUludDMyKGJvb2wqIG9r
ID0gMCkgY29uc3Q7CiAKICAgICAgICAgdW5zaWduZWQgdG9BcnJheUluZGV4KGJvb2wqIG9rID0g
MCkgY29uc3Q7CkBAIC0xMjgsNyArMTI4LDcgQEAKICAgICAgICAgdW5zaWduZWQgcmZpbmQoY29u
c3QgVVN0cmluZyYgZiwgdW5zaWduZWQgcG9zKSBjb25zdDsKICAgICAgICAgdW5zaWduZWQgcmZp
bmQoVUNoYXIsIHVuc2lnbmVkIHBvcykgY29uc3Q7CiAKLSAgICAgICAgVVN0cmluZyBzdWJzdHIo
dW5zaWduZWQgcG9zID0gMCwgdW5zaWduZWQgbGVuID0gMHhGRkZGRkZGRikgY29uc3Q7CisgICAg
ICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBVU3RyaW5nIHN1YnN0cih1bnNpZ25lZCBwb3MgPSAwLCB1
bnNpZ25lZCBsZW4gPSAweEZGRkZGRkZGKSBjb25zdDsKIAogICAgICAgICBzdGF0aWMgY29uc3Qg
VVN0cmluZyYgbnVsbCgpIHsgcmV0dXJuICpzX251bGxVU3RyaW5nOyB9CiAKQEAgLTE0Niw3ICsx
NDYsMTIgQEAKICAgICAgICAgICAgIHJldHVybiBtX3JlcC0+Y29zdCgpOwogICAgICAgICB9CiAK
LSAgICAgICAgQUxXQVlTX0lOTElORSB+VVN0cmluZygpIHsgfQorICAgICAgICBKU19FWFBPUlRF
RF9TWU1CT0wgQUxXQVlTX0lOTElORSB+VVN0cmluZygpIHsgfQorICAgICAgICBKU19FWFBPUlRF
RF9TWU1CT0wgVVN0cmluZyYgb3BlcmF0b3I9KGNvbnN0IFVTdHJpbmcmIHMpCisgICAgICAgIHsK
KyAgICAgICAgICAgIG1fcmVwID0gcy5tX3JlcDsKKyAgICAgICAgICAgIHJldHVybiAqdGhpczsK
KyAgICAgICAgfQogICAgIHByaXZhdGU6CiAgICAgICAgIFJlZlB0cjxSZXA+IG1fcmVwOwogCklu
ZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5jZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmgJKHJldmlzaW9uIDYxNTY4KQor
KysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2UuaAkod29ya2luZyBjb3B5KQpA
QCAtMzEsMTMgKzMxLDEzIEBACiAKICAgICBjbGFzcyBEYXRlSW5zdGFuY2UgOiBwdWJsaWMgSlNX
cmFwcGVyT2JqZWN0IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIERhdGVJbnN0YW5jZShFeGVjU3Rh
dGUqLCBkb3VibGUpOwotICAgICAgICBEYXRlSW5zdGFuY2UoRXhlY1N0YXRlKiwgTm9uTnVsbFBh
c3NSZWZQdHI8U3RydWN0dXJlPiwgZG91YmxlKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9M
IERhdGVJbnN0YW5jZShFeGVjU3RhdGUqLCBkb3VibGUpOworICAgICAgICBKU19FWFBPUlRFRF9T
WU1CT0wgRGF0ZUluc3RhbmNlKEV4ZWNTdGF0ZSosIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVy
ZT4sIGRvdWJsZSk7CiAgICAgICAgIGV4cGxpY2l0IERhdGVJbnN0YW5jZShFeGVjU3RhdGUqLCBO
b25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+KTsKIAogICAgICAgICBkb3VibGUgaW50ZXJuYWxO
dW1iZXIoKSBjb25zdCB7IHJldHVybiBpbnRlcm5hbFZhbHVlKCkudW5jaGVja2VkR2V0TnVtYmVy
KCk7IH0KIAotICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSBjb25zdCBDbGFzc0luZm8gaW5m
bzsKKyAgICAgICAgc3RhdGljIEpTX0VYUE9SVEVEX1NZTUJPTCBjb25zdCBDbGFzc0luZm8gaW5m
bzsKIAogICAgICAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29yaWFuRGF0ZVRpbWUo
RXhlY1N0YXRlKiBleGVjKSBjb25zdAogICAgICAgICB7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxEYXRhLmgJKHJldmlzaW9uIDYxNTY4KQorKysgSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbERhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDcgKzEwMiw3IEBACiAg
ICAgICAgIC8vIHRoZSBvcmlnaW5hbCBBUEkuCiAgICAgICAgIGVudW0gR2xvYmFsRGF0YVR5cGUg
eyBEZWZhdWx0LCBBUElDb250ZXh0R3JvdXAsIEFQSVNoYXJlZCB9OwogCi0gICAgICAgIHN0cnVj
dCBDbGllbnREYXRhIHsKKyAgICAgICAgc3RydWN0IEpTX0VYUE9SVEVEX1NZTUJPTCBDbGllbnRE
YXRhIHsKICAgICAgICAgICAgIHZpcnR1YWwgfkNsaWVudERhdGEoKSA9IDA7CiAgICAgICAgIH07
CiAKQEAgLTExMCwxMCArMTEwLDEwIEBACiAgICAgICAgIHN0YXRpYyBib29sIHNoYXJlZEluc3Rh
bmNlRXhpc3RzKCk7CiAgICAgICAgIHN0YXRpYyBKU0dsb2JhbERhdGEmIHNoYXJlZEluc3RhbmNl
KCk7CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SlNHbG9iYWxEYXRhPiBjcmVhdGUoVGhy
ZWFkU3RhY2tUeXBlKTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SlNHbG9iYWxEYXRhPiBj
cmVhdGVMZWFrZWQoVGhyZWFkU3RhY2tUeXBlKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9M
IHN0YXRpYyBQYXNzUmVmUHRyPEpTR2xvYmFsRGF0YT4gY3JlYXRlKFRocmVhZFN0YWNrVHlwZSk7
CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0aWMgUGFzc1JlZlB0cjxKU0dsb2JhbERh
dGE+IGNyZWF0ZUxlYWtlZChUaHJlYWRTdGFja1R5cGUpOwogICAgICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxKU0dsb2JhbERhdGE+IGNyZWF0ZUNvbnRleHRHcm91cChUaHJlYWRTdGFja1R5cGUpOwot
ICAgICAgICB+SlNHbG9iYWxEYXRhKCk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB+SlNH
bG9iYWxEYXRhKCk7CiAKICNpZiBFTkFCTEUoSlNDX01VTFRJUExFX1RIUkVBRFMpCiAgICAgICAg
IC8vIFdpbGwgc3RhcnQgdHJhY2tpbmcgdGhyZWFkcyB0aGF0IHVzZSB0aGUgaGVhcCwgd2hpY2gg
aXMgcmVzb3VyY2UtaGVhdnkuCkBAIC0xNDksMTAgKzE0OSwxMCBAQAogI2VuZGlmCiAKICAgICAg
ICAgc3RhdGljIHZvaWQgc3RvcmVWUHRycygpOwotICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFU
QSB2b2lkKiBqc0FycmF5VlB0cjsKLSAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgdm9pZCog
anNCeXRlQXJyYXlWUHRyOwotICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSB2b2lkKiBqc1N0
cmluZ1ZQdHI7Ci0gICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIHZvaWQqIGpzRnVuY3Rpb25W
UHRyOworICAgICAgICBzdGF0aWMgSlNfRVhQT1JURURfU1lNQk9MIHZvaWQqIGpzQXJyYXlWUHRy
OworICAgICAgICBzdGF0aWMgSlNfRVhQT1JURURfU1lNQk9MIHZvaWQqIGpzQnl0ZUFycmF5VlB0
cjsKKyAgICAgICAgc3RhdGljIEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkKiBqc1N0cmluZ1ZQdHI7
CisgICAgICAgIHN0YXRpYyBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCoganNGdW5jdGlvblZQdHI7
CiAKICAgICAgICAgSWRlbnRpZmllclRhYmxlKiBpZGVudGlmaWVyVGFibGU7CiAgICAgICAgIENv
bW1vbklkZW50aWZpZXJzKiBwcm9wZXJ0eU5hbWVzOwpAQCAtMjE3LDExICsyMTcsMTEgQEAKIAog
ICAgICAgICBDYWNoZWRUcmFuc2NlbmRlbnRhbEZ1bmN0aW9uPHNpbj4gY2FjaGVkU2luOwogCi0g
ICAgICAgIHZvaWQgcmVzZXREYXRlQ2FjaGUoKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9M
IHZvaWQgcmVzZXREYXRlQ2FjaGUoKTsKIAotICAgICAgICB2b2lkIHN0YXJ0U2FtcGxpbmcoKTsK
LSAgICAgICAgdm9pZCBzdG9wU2FtcGxpbmcoKTsKLSAgICAgICAgdm9pZCBkdW1wU2FtcGxlRGF0
YShFeGVjU3RhdGUqIGV4ZWMpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBzdGFy
dFNhbXBsaW5nKCk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIHN0b3BTYW1wbGlu
ZygpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBkdW1wU2FtcGxlRGF0YShFeGVj
U3RhdGUqIGV4ZWMpOwogICAgIHByaXZhdGU6CiAgICAgICAgIEpTR2xvYmFsRGF0YShHbG9iYWxE
YXRhVHlwZSwgVGhyZWFkU3RhY2tUeXBlKTsKICAgICAgICAgc3RhdGljIEpTR2xvYmFsRGF0YSom
IHNoYXJlZEluc3RhbmNlSW50ZXJuYWwoKTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Um9wZUltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JvcGVJbXBs
LmgJKHJldmlzaW9uIDYxNTY4KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9Sb3BlSW1wbC5o
CSh3b3JraW5nIGNvcHkpCkBAIC04Myw3ICs4Myw3IEBACiAgICAgewogICAgIH0KIAotICAgIHZv
aWQgZGVzdHJ1Y3ROb25SZWN1cnNpdmUoKTsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBk
ZXN0cnVjdE5vblJlY3Vyc2l2ZSgpOwogICAgIHZvaWQgZGVyZWZGaWJlcnNOb25SZWN1cnNpdmUo
VmVjdG9yPFJvcGVJbXBsKiwgMzI+JiB3b3JrUXVldWUpOwogCiAgICAgYm9vbCBoYXNPbmVSZWYo
KSB7IHJldHVybiAobV9yZWZDb3VudEFuZEZsYWdzICYgc19yZWZDb3VudE1hc2spID09IHNfcmVm
Q291bnRJbmNyZW1lbnQ7IH0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGltZW91dENo
ZWNrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RpbWVvdXRDaGVj
a2VyLmgJKHJldmlzaW9uIDYxNTY4KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9UaW1lb3V0
Q2hlY2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw5ICs1Niw5IEBACiAgICAgICAgICAgICAt
LW1fc3RhcnRDb3VudDsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgcmVzZXQoKTsKKyAgICAg
ICAgSlNfRVhQT1JURURfU1lNQk9MIHZvaWQgcmVzZXQoKTsKIAotICAgICAgICBib29sIGRpZFRp
bWVPdXQoRXhlY1N0YXRlKik7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBib29sIGRpZFRp
bWVPdXQoRXhlY1N0YXRlKik7CiAKICAgICBwcml2YXRlOgogICAgICAgICB1bnNpZ25lZCBtX3Rp
bWVvdXRJbnRlcnZhbDsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29sbGVjdG9yLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbGxlY3Rvci5jcHAJKHJl
dmlzaW9uIDYxNTY4KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2xsZWN0b3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00NTAsNyArNDUwLDcgQEAKIH0KIAogI2lmIE9TKFdJTkNFKQotSlNf
RVhQT1JUREFUQSB2b2lkKiBnX3N0YWNrQmFzZSA9IDA7CitKU19FWFBPUlRFRF9TWU1CT0wgdm9p
ZCogZ19zdGFja0Jhc2UgPSAwOwogCiBpbmxpbmUgYm9vbCBpc1BhZ2VXcml0YWJsZSh2b2lkKiBw
YWdlKQogewpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkocmV2
aXNpb24gNjE1NjgpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTY3LDcgKzY3LDcgQEAKICAgICAgICAgICAgIC8vIEpTVmFyaWFi
bGVPYmplY3REYXRhKiB0byBKU0dsb2JhbE9iamVjdERhdGEqLgogICAgICAgICAgICAgdHlwZWRl
ZiB2b2lkICgqRGVzdHJ1Y3Rvcikodm9pZCopOwogCi0gICAgICAgICAgICBKU0dsb2JhbE9iamVj
dERhdGEoRGVzdHJ1Y3RvciBkZXN0cnVjdG9yKQorICAgICAgICAgICAgSlNfRVhQT1JURURfU1lN
Qk9MIEpTR2xvYmFsT2JqZWN0RGF0YShEZXN0cnVjdG9yIGRlc3RydWN0b3IpCiAgICAgICAgICAg
ICAgICAgOiBKU1ZhcmlhYmxlT2JqZWN0RGF0YSgmc3ltYm9sVGFibGUsIDApCiAgICAgICAgICAg
ICAgICAgLCBkZXN0cnVjdG9yKGRlc3RydWN0b3IpCiAgICAgICAgICAgICAgICAgLCByZWdpc3Rl
ckFycmF5U2l6ZSgwKQpAQCAtMTU5LDcgKzE1OSw3IEBACiAgICAgICAgIH07CiAKICAgICBwdWJs
aWM6Ci0gICAgICAgIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIEpTR2xvYmFsRGF0YSopOwor
ICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgSlNH
bG9iYWxEYXRhKik7CiAgICAgICAgIAogICAgICAgICBleHBsaWNpdCBKU0dsb2JhbE9iamVjdCgp
CiAgICAgICAgICAgICA6IEpTVmFyaWFibGVPYmplY3QoSlNHbG9iYWxPYmplY3Q6OmNyZWF0ZVN0
cnVjdHVyZShqc051bGwoKSksIG5ldyBKU0dsb2JhbE9iamVjdERhdGEoZGVzdHJveUpTR2xvYmFs
T2JqZWN0RGF0YSkpCkBAIC0xODcsMTggKzE4NywxOCBAQAogICAgICAgICB9CiAKICAgICBwdWJs
aWM6Ci0gICAgICAgIHZpcnR1YWwgfkpTR2xvYmFsT2JqZWN0KCk7CisgICAgICAgIEpTX0VYUE9S
VEVEX1NZTUJPTCB2aXJ0dWFsIH5KU0dsb2JhbE9iamVjdCgpOwogCi0gICAgICAgIHZpcnR1YWwg
dm9pZCBtYXJrQ2hpbGRyZW4oTWFya1N0YWNrJik7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJP
TCB2aXJ0dWFsIHZvaWQgbWFya0NoaWxkcmVuKE1hcmtTdGFjayYpOwogCiAgICAgICAgIHZpcnR1
YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYs
IFByb3BlcnR5U2xvdCYpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3Im
KTsKICAgICAgICAgdmlydHVhbCBib29sIGhhc093blByb3BlcnR5Rm9yV3JpdGUoRXhlY1N0YXRl
KiwgY29uc3QgSWRlbnRpZmllciYpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcHV0KEV4ZWNTdGF0
ZSosIGNvbnN0IElkZW50aWZpZXImLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICAg
ICAgdmlydHVhbCB2b2lkIHB1dFdpdGhBdHRyaWJ1dGVzKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7
CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIHZvaWQgcHV0KEV4ZWNTdGF0ZSos
IGNvbnN0IElkZW50aWZpZXImLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAg
SlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgdm9pZCBwdXRXaXRoQXR0cmlidXRlcyhFeGVjU3Rh
dGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2ln
bmVkIGF0dHJpYnV0ZXMpOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBkZWZpbmVHZXR0ZXIoRXhl
Y1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU09iamVjdCogZ2V0dGVy
RnVuYywgdW5zaWduZWQgYXR0cmlidXRlcyk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkZWZpbmVT
ZXR0ZXIoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU09iamVj
dCogc2V0dGVyRnVuYywgdW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAgICAgIEpTX0VYUE9SVEVE
X1NZTUJPTCB2aXJ0dWFsIHZvaWQgZGVmaW5lR2V0dGVyKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgSlNPYmplY3QqIGdldHRlckZ1bmMsIHVuc2lnbmVkIGF0dHJp
YnV0ZXMpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCB2b2lkIGRlZmluZVNl
dHRlcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0
KiBzZXR0ZXJGdW5jLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKIAogICAgICAgICAvLyBMaW5rZWQg
bGlzdCBvZiBhbGwgZ2xvYmFsIG9iamVjdHMgdGhhdCB1c2UgdGhlIHNhbWUgSlNHbG9iYWxEYXRh
LgogICAgICAgICBKU0dsb2JhbE9iamVjdComIGhlYWQoKSB7IHJldHVybiBkKCktPmdsb2JhbERh
dGEtPmhlYWQ7IH0KQEAgLTI2MiwxMyArMjYyLDEzIEBACiAKICAgICAgICAgdmlydHVhbCBib29s
IGlzR2xvYmFsT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgICAgIHZpcnR1
YWwgRXhlY1N0YXRlKiBnbG9iYWxFeGVjKCk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2
aXJ0dWFsIEV4ZWNTdGF0ZSogZ2xvYmFsRXhlYygpOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBz
aG91bGRJbnRlcnJ1cHRTY3JpcHQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKICAgICAgICAg
dmlydHVhbCBib29sIGFsbG93c0FjY2Vzc0Zyb20oY29uc3QgSlNHbG9iYWxPYmplY3QqKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICAgICAgdmlydHVhbCBib29sIGlzRHluYW1pY1Njb3Bl
KGJvb2wmIHJlcXVpcmVzRHluYW1pY0NoZWNrcykgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVEVE
X1NZTUJPTCB2aXJ0dWFsIGJvb2wgaXNEeW5hbWljU2NvcGUoYm9vbCYgcmVxdWlyZXNEeW5hbWlj
Q2hlY2tzKSBjb25zdDsKIAogICAgICAgICBIYXNoU2V0PEdsb2JhbENvZGVCbG9jayo+JiBjb2Rl
QmxvY2tzKCkgeyByZXR1cm4gZCgpLT5jb2RlQmxvY2tzOyB9CiAKQEAgLTMxNSwxMCArMzE1LDEw
IEBACiAgICAgICAgIHZvaWQgYWRkU3RhdGljR2xvYmFscyhHbG9iYWxQcm9wZXJ0eUluZm8qLCBp
bnQgY291bnQpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveUpT
R2xvYmFsT2JqZWN0RGF0YSh2b2lkKik7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0
aWMgdm9pZCBkZXN0cm95SlNHbG9iYWxPYmplY3REYXRhKHZvaWQqKTsKIAogICAgICAgICAvLyBG
SVhNRTogRm9sZCByZXNldCBpbnRvIGluaXQuCi0gICAgICAgIHZvaWQgaW5pdChKU09iamVjdCog
dGhpc1ZhbHVlKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZvaWQgaW5pdChKU09iamVj
dCogdGhpc1ZhbHVlKTsKICAgICAgICAgdm9pZCByZXNldChKU1ZhbHVlIHByb3RvdHlwZSk7CiAK
ICAgICAgICAgdm9pZCBzZXRSZWdpc3RlcnMoUmVnaXN0ZXIqIHJlZ2lzdGVycywgUmVnaXN0ZXIq
IHJlZ2lzdGVyQXJyYXksIHNpemVfdCBjb3VudCk7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbGxlY3RvckhlYXBJdGVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29sbGVjdG9ySGVhcEl0ZXJhdG9yLmgJKHJldmlzaW9uIDYxNTY4KQorKysgSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db2xsZWN0b3JIZWFwSXRlcmF0b3IuaAkod29ya2luZyBjb3B5
KQpAQCAtMjMsNyArMjMsNiBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIkNvbGxlY3Rvci5oIgogCiAjaWZuZGVmIENvbGxlY3RvckhlYXBJ
dGVyYXRvcl9oCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0V2l0aEdsb2Jh
bE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RX
aXRoR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDYxNTY4KQorKysgSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdFdpdGhHbG9iYWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzksMTAg
KzM5LDEwIEBACiAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShwcm90bywgVHlwZUlu
Zm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQpOwogICAg
IH0KIAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoKSBjb25zdDsKKyAgICBKU19F
WFBPUlRFRF9TWU1CT0wgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCgpIGNvbnN0OwogCiBw
cm90ZWN0ZWQ6Ci0gICAgSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0KEpTR2xvYmFsT2JqZWN0Kiwg
Tm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPik7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIEpT
T2JqZWN0V2l0aEdsb2JhbE9iamVjdChKU0dsb2JhbE9iamVjdCosIE5vbk51bGxQYXNzUmVmUHRy
PFN0cnVjdHVyZT4pOwogCiAgICAgSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0KE5vbk51bGxQYXNz
UmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlKQogICAgICAgICA6IEpTT2JqZWN0KHN0cnVjdHVy
ZSkKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCShyZXZpc2lvbiA2MTU2OCkKKysrIEph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw5ICs1
NSw5IEBACiAgICAgdHlwZWRlZiB2b2lkKiBFbmNvZGVkSlNWYWx1ZTsKICNlbmRpZgogCi0gICAg
ZG91YmxlIG5vbklubGluZU5hTigpOwotICAgIGludDMyX3QgdG9JbnQzMlNsb3dDYXNlKGRvdWJs
ZSwgYm9vbCYgb2spOwotICAgIHVpbnQzMl90IHRvVUludDMyU2xvd0Nhc2UoZG91YmxlLCBib29s
JiBvayk7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIGRvdWJsZSBub25JbmxpbmVOYU4oKTsKKyAg
ICBKU19FWFBPUlRFRF9TWU1CT0wgaW50MzJfdCB0b0ludDMyU2xvd0Nhc2UoZG91YmxlLCBib29s
JiBvayk7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIHVpbnQzMl90IHRvVUludDMyU2xvd0Nhc2Uo
ZG91YmxlLCBib29sJiBvayk7CiAKICAgICBjbGFzcyBKU1ZhbHVlIHsKICAgICAgICAgZnJpZW5k
IGNsYXNzIEpTSW1tZWRpYXRlOwpAQCAtMTk5LDcgKzE5OSw3IEBACiAKICAgICAgICAgYm9vbCBp
c0NlbGwoKSBjb25zdDsKICAgICAgICAgSlNDZWxsKiBhc0NlbGwoKSBjb25zdDsKLSAgICAgICAg
Ym9vbCBpc1ZhbGlkQ2FsbGVlKCk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBib29sIGlz
VmFsaWRDYWxsZWUoKTsKIAogI2lmbmRlZiBOREVCVUcKICAgICAgICAgY2hhciogZGVzY3JpcHRp
b24oKTsKQEAgLTIxMCw4ICsyMTAsOCBAQAogICAgICAgICBKU1ZhbHVlKEhhc2hUYWJsZURlbGV0
ZWRWYWx1ZVRhZyk7CiAKICAgICAgICAgaW5saW5lIGNvbnN0IEpTVmFsdWUgYXNWYWx1ZSgpIGNv
bnN0IHsgcmV0dXJuICp0aGlzOyB9Ci0gICAgICAgIEpTT2JqZWN0KiB0b09iamVjdFNsb3dDYXNl
KEV4ZWNTdGF0ZSopIGNvbnN0OwotICAgICAgICBKU09iamVjdCogdG9UaGlzT2JqZWN0U2xvd0Nh
c2UoRXhlY1N0YXRlKikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBKU09iamVj
dCogdG9PYmplY3RTbG93Q2FzZShFeGVjU3RhdGUqKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JU
RURfU1lNQk9MIEpTT2JqZWN0KiB0b1RoaXNPYmplY3RTbG93Q2FzZShFeGVjU3RhdGUqKSBjb25z
dDsKIAogICAgICAgICBKU09iamVjdCogc3ludGhlc2l6ZVByb3RvdHlwZShFeGVjU3RhdGUqKSBj
b25zdDsKICAgICAgICAgSlNPYmplY3QqIHN5bnRoZXNpemVPYmplY3QoRXhlY1N0YXRlKikgY29u
c3Q7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmgJ
KHJldmlzaW9uIDYxNTY4KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eURlc2Ny
aXB0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsOCArNDYsOCBAQAogICAgICAgICBKU1ZhbHVl
IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQogICAgICAgICBKU1ZhbHVlIGdldHRl
cigpIGNvbnN0OwogICAgICAgICBKU1ZhbHVlIHNldHRlcigpIGNvbnN0OwotICAgICAgICB2b2lk
IHNldFVuZGVmaW5lZCgpOwotICAgICAgICB2b2lkIHNldERlc2NyaXB0b3IoSlNWYWx1ZSB2YWx1
ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lk
IHNldFVuZGVmaW5lZCgpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBzZXREZXNj
cmlwdG9yKEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgICAgICB2b2lk
IHNldEFjY2Vzc29yRGVzY3JpcHRvcihKU1ZhbHVlIGdldHRlciwgSlNWYWx1ZSBzZXR0ZXIsIHVu
c2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgICAgICB2b2lkIHNldFdyaXRhYmxlKGJvb2wpOwogICAg
ICAgICB2b2lkIHNldEVudW1lcmFibGUoYm9vbCk7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbGxlY3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29s
bGVjdG9yLmgJKHJldmlzaW9uIDYxNTY4KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2xs
ZWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNzQsMTMgKzc0LDEzIEBACiAgICAgcHVibGljOgog
ICAgICAgICBjbGFzcyBUaHJlYWQ7CiAKLSAgICAgICAgdm9pZCBkZXN0cm95KCk7CisgICAgICAg
IEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIGRlc3Ryb3koKTsKIAogICAgICAgICB2b2lkKiBhbGxv
Y2F0ZU51bWJlcihzaXplX3QpOwotICAgICAgICB2b2lkKiBhbGxvY2F0ZShzaXplX3QpOworICAg
ICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCogYWxsb2NhdGUoc2l6ZV90KTsKIAotICAgICAg
ICBib29sIGlzQnVzeSgpOyAvLyB0cnVlIGlmIGFuIGFsbG9jYXRpb24gb3IgY29sbGVjdGlvbiBp
cyBpbiBwcm9ncmVzcwotICAgICAgICB2b2lkIGNvbGxlY3RBbGxHYXJiYWdlKCk7CisgICAgICAg
IEpTX0VYUE9SVEVEX1NZTUJPTCBib29sIGlzQnVzeSgpOyAvLyB0cnVlIGlmIGFuIGFsbG9jYXRp
b24gb3IgY29sbGVjdGlvbiBpcyBpbiBwcm9ncmVzcworICAgICAgICBKU19FWFBPUlRFRF9TWU1C
T0wgdm9pZCBjb2xsZWN0QWxsR2FyYmFnZSgpOwogCiAgICAgICAgIHN0YXRpYyBjb25zdCBzaXpl
X3QgbWluRXh0cmFDb3N0ID0gMjU2OwogICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heEV4
dHJhQ29zdCA9IDEwMjQgKiAxMDI0OwpAQCAtOTMsMTIgKzkzLDEyIEBACiAgICAgICAgICAgICBz
aXplX3QgZnJlZTsKICAgICAgICAgfTsKICAgICAgICAgU3RhdGlzdGljcyBzdGF0aXN0aWNzKCkg
Y29uc3Q7Ci0gICAgICAgIHNpemVfdCBzaXplKCkgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVEVE
X1NZTUJPTCBzaXplX3Qgc2l6ZSgpIGNvbnN0OwogCi0gICAgICAgIHZvaWQgcHJvdGVjdChKU1Zh
bHVlKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZvaWQgcHJvdGVjdChKU1ZhbHVlKTsK
ICAgICAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSB2YWx1ZSBpcyBubyBsb25nZXIgcHJvdGVj
dGVkIGJ5IGFueSBwcm90ZWN0IHBvaW50ZXJzCiAgICAgICAgIC8vICh0aG91Z2ggaXQgbWF5IHN0
aWxsIGJlIGFsaXZlIGR1ZSB0byBoZWFwL3N0YWNrIHJlZmVyZW5jZXMpLgotICAgICAgICBib29s
IHVucHJvdGVjdChKU1ZhbHVlKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIGJvb2wgdW5w
cm90ZWN0KEpTVmFsdWUpOwogCiAgICAgICAgIHN0YXRpYyBIZWFwKiBoZWFwKEpTVmFsdWUpOyAv
LyAwIGZvciBpbW1lZGlhdGUgdmFsdWVzCiAgICAgICAgIHN0YXRpYyBIZWFwKiBoZWFwKEpTQ2Vs
bCopOwpAQCAtMTQ1LDcgKzE0NSw3IEBACiAgICAgICAgIHZvaWQgY2xlYXJNYXJrQml0cyhDb2xs
ZWN0b3JCbG9jayopOwogICAgICAgICBzaXplX3QgbWFya2VkQ2VsbHMoc2l6ZV90IHN0YXJ0Qmxv
Y2sgPSAwLCBzaXplX3Qgc3RhcnRDZWxsID0gMCkgY29uc3Q7CiAKLSAgICAgICAgdm9pZCByZWNv
cmRFeHRyYUNvc3Qoc2l6ZV90KTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZvaWQgcmVj
b3JkRXh0cmFDb3N0KHNpemVfdCk7CiAKICAgICAgICAgdm9pZCBhZGRUb1N0YXRpc3RpY3MoU3Rh
dGlzdGljcyYpIGNvbnN0OwogCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBl
ck9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXcmFwcGVy
T2JqZWN0LmgJKHJldmlzaW9uIDYxNTY4KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dy
YXBwZXJPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQAogICAgICAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgQW5vbnltb3VzU2xvdENvdW50ID0gMSArIEpTT2JqZWN0OjpB
bm9ueW1vdXNTbG90Q291bnQ7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIHZvaWQg
bWFya0NoaWxkcmVuKE1hcmtTdGFjayYpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmly
dHVhbCB2b2lkIG1hcmtDaGlsZHJlbihNYXJrU3RhY2smKTsKICAgICAgICAgCiAgICAgICAgIEpT
VmFsdWUgbV9pbnRlcm5hbFZhbHVlOwogICAgIH07CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NhbGxEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWxs
RGF0YS5oCShyZXZpc2lvbiA2MTU2OCkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FsbERh
dGEuaAkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBAQAogICAgICAgICB9IGpzOwogICAg
IH07CiAKLSAgICBKU1ZhbHVlIGNhbGwoRXhlY1N0YXRlKiwgSlNWYWx1ZSBmdW5jdGlvbk9iamVj
dCwgQ2FsbFR5cGUsIGNvbnN0IENhbGxEYXRhJiwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEFy
Z0xpc3QmKTsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgSlNWYWx1ZSBjYWxsKEV4ZWNTdGF0ZSos
IEpTVmFsdWUgZnVuY3Rpb25PYmplY3QsIENhbGxUeXBlLCBjb25zdCBDYWxsRGF0YSYsIEpTVmFs
dWUgdGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0Jik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCklu
ZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0cnVjdERhdGEuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0cnVjdERhdGEuaAkocmV2aXNpb24gNjE1Njgp
CisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0cnVjdERhdGEuaAkod29ya2luZyBjb3B5
KQpAQCAtNTcsNyArNTcsNyBAQAogICAgICAgICB9IGpzOwogICAgIH07CiAKLSAgICBKU09iamVj
dCogY29uc3RydWN0KEV4ZWNTdGF0ZSosIEpTVmFsdWUgY29uc3RydWN0b3IsIENvbnN0cnVjdFR5
cGUsIGNvbnN0IENvbnN0cnVjdERhdGEmLCBjb25zdCBBcmdMaXN0Jik7CisgICAgSlNfRVhQT1JU
RURfU1lNQk9MIEpTT2JqZWN0KiBjb25zdHJ1Y3QoRXhlY1N0YXRlKiwgSlNWYWx1ZSBjb25zdHJ1
Y3RvciwgQ29uc3RydWN0VHlwZSwgY29uc3QgQ29uc3RydWN0RGF0YSYsIGNvbnN0IEFyZ0xpc3Qm
KTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TWFya1N0YWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXJrU3Rh
Y2suaAkocmV2aXNpb24gNjE1NjgpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcmtTdGFj
ay5oCSh3b3JraW5nIGNvcHkpCkBAIC04NSw4ICs4NSw4IEBACiAgICAgICAgICAgICBNYXJrU2V0
UHJvcGVydGllcyBtX3Byb3BlcnRpZXM7CiAgICAgICAgIH07CiAKLSAgICAgICAgc3RhdGljIHZv
aWQqIGFsbG9jYXRlU3RhY2soc2l6ZV90IHNpemUpOwotICAgICAgICBzdGF0aWMgdm9pZCByZWxl
YXNlU3RhY2sodm9pZCogYWRkciwgc2l6ZV90IHNpemUpOworICAgICAgICBKU19FWFBPUlRFRF9T
WU1CT0wgc3RhdGljIHZvaWQqIGFsbG9jYXRlU3RhY2soc2l6ZV90IHNpemUpOworICAgICAgICBK
U19FWFBPUlRFRF9TWU1CT0wgc3RhdGljIHZvaWQgcmVsZWFzZVN0YWNrKHZvaWQqIGFkZHIsIHNp
emVfdCBzaXplKTsKIAogICAgICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplUGFnZXNpemUoKTsK
ICAgICAgICAgc3RhdGljIHNpemVfdCBwYWdlU2l6ZSgpCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuaAkocmV2aXNpb24gNjE1NjgpCisrKyBKYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuaAkod29ya2luZyBjb3B5KQpA
QCAtMzEsOSArMzEsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotICAgIC8vIFRoaXMgZnVuY3Rp
b24gbXVzdCBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQuIEl0IGlzIHNhZmUgdG8gY2Fs
bCBpdCByZXBlYXRlZGx5LgotICAgIC8vIERhcndpbiBpcyBhbiBleGNlcHRpb24gdG8gdGhpcyBy
dWxlOiBpdCBpcyBPSyB0byBjYWxsIHRoaXMgZnVuY3Rpb24gZnJvbSBhbnkgdGhyZWFkLCBldmVu
IHJlZW50cmFudGx5LgotICAgIHZvaWQgaW5pdGlhbGl6ZVRocmVhZGluZygpOworLy8gVGhpcyBm
dW5jdGlvbiBtdXN0IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4gSXQgaXMgc2FmZSB0
byBjYWxsIGl0IHJlcGVhdGVkbHkuCisvLyBEYXJ3aW4gaXMgYW4gZXhjZXB0aW9uIHRvIHRoaXMg
cnVsZTogaXQgaXMgT0sgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIGZyb20gYW55IHRocmVhZCwgZXZl
biByZWVudHJhbnRseS4KK0pTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIGluaXRpYWxpemVUaHJlYWRp
bmcoKTsKIAogfQogCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9jb25maWcuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBKYXZhU2NyaXB0Q29yZS9jb25maWcuaAkocmV2aXNpb24gNjE1NjgpCisrKyBKYXZhU2NyaXB0
Q29yZS9jb25maWcuaAkod29ya2luZyBjb3B5KQpAQCAtMjksMjcgKzI5LDI4IEBACiAKICNpbmNs
dWRlIDx3dGYvUGxhdGZvcm0uaD4KIAotI2lmICFQTEFURk9STShDSFJPTUlVTSkgJiYgT1MoV0lO
RE9XUykgJiYgIWRlZmluZWQoQlVJTERJTkdfV1hfXykgJiYgIUNPTVBJTEVSKEdDQykKKyNpZiAh
UExBVEZPUk0oQ0hST01JVU0pICYmIE9TKFdJTkRPV1MpICYmICFDT01QSUxFUihHQ0MpCiAjaWYg
ZGVmaW5lZChCVUlMRElOR19KYXZhU2NyaXB0Q29yZSkgfHwgZGVmaW5lZChCVUlMRElOR19XVEYp
Ci0jZGVmaW5lIEpTX0VYUE9SVERBVEEgX19kZWNsc3BlYyhkbGxleHBvcnQpCisjZGVmaW5lIEpT
X0VYUE9SVEVEX1NZTUJPTCBfX2RlY2xzcGVjKGRsbGV4cG9ydCkKICNlbHNlCi0jZGVmaW5lIEpT
X0VYUE9SVERBVEEgX19kZWNsc3BlYyhkbGxpbXBvcnQpCisjZGVmaW5lIEpTX0VYUE9SVEVEX1NZ
TUJPTCBfX2RlY2xzcGVjKGRsbGltcG9ydCkKICNlbmRpZgotI2RlZmluZSBKU19FWFBPUlRDTEFT
UyBKU19FWFBPUlREQVRBCisjZWxpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAhZGVmaW5lZChfX0ND
X0FSTSkgJiYgIWRlZmluZWQoX19BUk1DQ19fKQorI2RlZmluZSBKU19FWFBPUlRFRF9TWU1CT0wg
X19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkKICNlbHNlCi0jZGVmaW5lIEpT
X0VYUE9SVERBVEEKLSNkZWZpbmUgSlNfRVhQT1JUQ0xBU1MKKyNkZWZpbmUgSlNfRVhQT1JURURf
U1lNQk9MCiAjZW5kaWYKIAogI2lmIE9TKFdJTkRPV1MpCiAKLS8vIElmIHdlIGRvbid0IGRlZmlu
ZSB0aGVzZSwgdGhleSBnZXQgZGVmaW5lZCBpbiB3aW5kZWYuaC4gCi0vLyBXZSB3YW50IHRvIHVz
ZSBzdGQ6Om1pbiBhbmQgc3RkOjptYXgKKy8qIElmIHdlIGRvbid0IGRlZmluZSB0aGVzZSwgdGhl
eSBnZXQgZGVmaW5lZCBpbiB3aW5kZWYuaC4gCisgKiBXZSB3YW50IHRvIHVzZSBzdGQ6Om1pbiBh
bmQgc3RkOjptYXgKKyAqLwogI2RlZmluZSBtYXggbWF4CiAjZGVmaW5lIG1pbiBtaW4KIAogI2lm
ICFDT01QSUxFUihNU1ZDN19PUl9MT1dFUikgJiYgIU9TKFdJTkNFKQotLy8gV2UgbmVlZCB0byBk
ZWZpbmUgdGhpcyBiZWZvcmUgdGhlIGZpcnN0ICNpbmNsdWRlIG9mIHN0ZGxpYi5oIG9yIGl0IHdv
bid0IGNvbnRhaW4gcmFuZF9zLgorLyogV2UgbmVlZCB0byBkZWZpbmUgdGhpcyBiZWZvcmUgdGhl
IGZpcnN0ICNpbmNsdWRlIG9mIHN0ZGxpYi5oIG9yIGl0IHdvbid0IGNvbnRhaW4gcmFuZF9zLiAq
LwogI2lmbmRlZiBfQ1JUX1JBTkRfUwogI2RlZmluZSBfQ1JUX1JBTkRfUwogI2VuZGlmCkBAIC03
Miw5ICs3MywxMCBAQAogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjZW5kaWYKIAotLy8g
dGhpcyBicmVha3MgY29tcGlsYXRpb24gb2YgPFFGb250RGF0YWJhc2U+LCBhdCBsZWFzdCwgc28g
dHVybiBpdCBvZmYgZm9yIG5vdwotLy8gQWxzbyBnZW5lcmF0ZXMgZXJyb3JzIG9uIHd4IG9uIFdp
bmRvd3MsIGJlY2F1c2UgdGhlc2UgZnVuY3Rpb25zCi0vLyBhcmUgdXNlZCBmcm9tIHd4IGhlYWRl
cnMuIAorLyogdGhpcyBicmVha3MgY29tcGlsYXRpb24gb2YgPFFGb250RGF0YWJhc2U+LCBhdCBs
ZWFzdCwgc28gdHVybiBpdCBvZmYgZm9yIG5vdworICogIEFsc28gZ2VuZXJhdGVzIGVycm9ycyBv
biB3eCBvbiBXaW5kb3dzLCBiZWNhdXNlIHRoZXNlIGZ1bmN0aW9ucworICogIGFyZSB1c2VkIGZy
b20gd3ggaGVhZGVycy4KKyAqLyAKICNpZiAhUExBVEZPUk0oUVQpICYmICFQTEFURk9STShXWCkK
ICNpbmNsdWRlIDx3dGYvRGlzYWxsb3dDVHlwZS5oPgogI2VuZGlmCkluZGV4OiBKYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAkocmV2aXNpb24gNjE1
NjgpCisrKyBKYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAko
d29ya2luZyBjb3B5KQpAQCAtOTAsNyArOTAsNyBAQAogICAgICAgICB0eXBlZGVmIERlY2xhcmF0
aW9uU3RhY2tzOjpWYXJTdGFjayBWYXJTdGFjazsKICAgICAgICAgdHlwZWRlZiBEZWNsYXJhdGlv
blN0YWNrczo6RnVuY3Rpb25TdGFjayBGdW5jdGlvblN0YWNrOwogCi0gICAgICAgIHN0YXRpYyB2
b2lkIHNldER1bXBzR2VuZXJhdGVkQ29kZShib29sIGR1bXBzR2VuZXJhdGVkQ29kZSk7CisgICAg
ICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0aWMgdm9pZCBzZXREdW1wc0dlbmVyYXRlZENvZGUo
Ym9vbCBkdW1wc0dlbmVyYXRlZENvZGUpOwogICAgICAgICBzdGF0aWMgYm9vbCBkdW1wc0dlbmVy
YXRlZENvZGUoKTsKIAogICAgICAgICBCeXRlY29kZUdlbmVyYXRvcihQcm9ncmFtTm9kZSosIGNv
bnN0IERlYnVnZ2VyKiwgY29uc3QgU2NvcGVDaGFpbiYsIFN5bWJvbFRhYmxlKiwgUHJvZ3JhbUNv
ZGVCbG9jayopOwpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL1JhbmRvbU51bWJlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9SYW5kb21OdW1iZXIuaAkocmV2aXNpb24gNjE1
NjgpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvUmFuZG9tTnVtYmVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI4LDkgKzI4LDkgQEAKIAogbmFtZXNwYWNlIFdURiB7CiAKLSAgICAvLyBSZXR1cm5zIGEg
cHNldWRvLXJhbmRvbSBudW1iZXIgaW4gdGhlIHJhbmdlIFswLCAxKSwgYXR0ZW1wdHMgdG8gYmUK
LSAgICAvLyBjcnlwdG9ncmFwaGljYWxseSBzZWN1cmUgaWYgcG9zc2libGUgb24gdGhlIHRhcmdl
dCBwbGF0Zm9ybQotICAgIGRvdWJsZSByYW5kb21OdW1iZXIoKTsKKy8vIFJldHVybnMgYSBwc2V1
ZG8tcmFuZG9tIG51bWJlciBpbiB0aGUgcmFuZ2UgWzAsIDEpLCBhdHRlbXB0cyB0byBiZQorLy8g
Y3J5cHRvZ3JhcGhpY2FsbHkgc2VjdXJlIGlmIHBvc3NpYmxlIG9uIHRoZSB0YXJnZXQgcGxhdGZv
cm0KK0pTX0VYUE9SVEVEX1NZTUJPTCBkb3VibGUgcmFuZG9tTnVtYmVyKCk7CiAKIH0KIApJbmRl
eDogSmF2YVNjcmlwdENvcmUvd3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaAkocmV2aXNpb24g
NjE1NjgpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI2LDIyICsyNiwyMiBAQAogCiBuYW1lc3BhY2UgV1RGIHsKICAgICAK
LSAgICBzdHJ1Y3QgUmVmQ291bnRlZExlYWtDb3VudGVyIHsKLSAgICAgICAgc3RhdGljIHZvaWQg
c3VwcHJlc3NNZXNzYWdlcyhjb25zdCBjaGFyKik7Ci0gICAgICAgIHN0YXRpYyB2b2lkIGNhbmNl
bE1lc3NhZ2VTdXBwcmVzc2lvbihjb25zdCBjaGFyKik7CitzdHJ1Y3QgSlNfRVhQT1JURURfU1lN
Qk9MIFJlZkNvdW50ZWRMZWFrQ291bnRlciB7CisgICAgc3RhdGljIHZvaWQgc3VwcHJlc3NNZXNz
YWdlcyhjb25zdCBjaGFyKik7CisgICAgc3RhdGljIHZvaWQgY2FuY2VsTWVzc2FnZVN1cHByZXNz
aW9uKGNvbnN0IGNoYXIqKTsKICAgICAgICAgCi0gICAgICAgIGV4cGxpY2l0IFJlZkNvdW50ZWRM
ZWFrQ291bnRlcihjb25zdCBjaGFyKiBkZXNjcmlwdGlvbik7Ci0gICAgICAgIH5SZWZDb3VudGVk
TGVha0NvdW50ZXIoKTsKKyAgICBleHBsaWNpdCBSZWZDb3VudGVkTGVha0NvdW50ZXIoY29uc3Qg
Y2hhciogZGVzY3JpcHRpb24pOworICAgIH5SZWZDb3VudGVkTGVha0NvdW50ZXIoKTsKIAotICAg
ICAgICB2b2lkIGluY3JlbWVudCgpOwotICAgICAgICB2b2lkIGRlY3JlbWVudCgpOworICAgIHZv
aWQgaW5jcmVtZW50KCk7CisgICAgdm9pZCBkZWNyZW1lbnQoKTsKIAogI2lmbmRlZiBOREVCVUcK
LSAgICBwcml2YXRlOgotICAgICAgICB2b2xhdGlsZSBpbnQgbV9jb3VudDsKLSAgICAgICAgY29u
c3QgY2hhciogbV9kZXNjcmlwdGlvbjsKK3ByaXZhdGU6CisgICAgdm9sYXRpbGUgaW50IG1fY291
bnQ7CisgICAgY29uc3QgY2hhciogbV9kZXNjcmlwdGlvbjsKICNlbmRpZgotICAgIH07Cit9Owog
CiB9ICAvLyBuYW1lc3BhY2UgV1RGCiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L0NT
dHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9DU3RyaW5nLmgJ
KHJldmlzaW9uIDYxNTY4KQorKysgSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvQ1N0cmluZy5oCSh3
b3JraW5nIGNvcHkpCkBAIC01MiwxMiArNTIsMTMgQEAKIGNsYXNzIENTdHJpbmcgewogcHVibGlj
OgogICAgIENTdHJpbmcoKSB7IH0KLSAgICBDU3RyaW5nKGNvbnN0IGNoYXIqKTsKLSAgICBDU3Ry
aW5nKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIEpTX0VYUE9SVEVEX1NZTUJP
TCBDU3RyaW5nKGNvbnN0IGNoYXIqKTsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgQ1N0cmluZyhj
b25zdCBjaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBDU3RyaW5nKENTdHJpbmdCdWZmZXIq
IGJ1ZmZlcikgOiBtX2J1ZmZlcihidWZmZXIpIHsgfQotICAgIHN0YXRpYyBDU3RyaW5nIG5ld1Vu
aW5pdGlhbGl6ZWQoc2l6ZV90IGxlbmd0aCwgY2hhciomIGNoYXJhY3RlckJ1ZmZlcik7CisgICAg
SlNfRVhQT1JURURfU1lNQk9MIHN0YXRpYyBDU3RyaW5nIG5ld1VuaW5pdGlhbGl6ZWQoc2l6ZV90
IGxlbmd0aCwgY2hhciomIGNoYXJhY3RlckJ1ZmZlcik7CiAKLSAgICBjb25zdCBjaGFyKiBkYXRh
KCkgY29uc3QKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgfkNTdHJpbmcoKSB7IH0KKyAgICBKU19F
WFBPUlRFRF9TWU1CT0wgY29uc3QgY2hhciogZGF0YSgpIGNvbnN0CiAgICAgewogICAgICAgICBy
ZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+ZGF0YSgpIDogMDsKICAgICB9CkBAIC03Nyw3ICs3
OCw3IEBACiAgICAgUmVmUHRyPENTdHJpbmdCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAotYm9vbCBv
cGVyYXRvcj09KGNvbnN0IENTdHJpbmcmIGEsIGNvbnN0IENTdHJpbmcmIGIpOworSlNfRVhQT1JU
RURfU1lNQk9MIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDU3RyaW5nJiBhLCBjb25zdCBDU3RyaW5n
JiBiKTsKIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgQ1N0cmluZyYgYSwgY29uc3QgQ1N0
cmluZyYgYikgeyByZXR1cm4gIShhID09IGIpOyB9CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpJbmRl
eDogSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nU3RhdGljcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nU3RhdGljcy5jcHAJKHJldmlzaW9uIDYx
NTY4KQorKysgSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nU3RhdGljcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ5LDEzICs0OSwxMyBAQAogICAgIHJldHVybiAmZW1wdHlTdHJpbmc7CiB9
CiAKLUpTX0VYUE9SVERBVEEgREVGSU5FX0dMT0JBTChBdG9taWNTdHJpbmcsIG51bGxBdG9tKQot
SlNfRVhQT1JUREFUQSBERUZJTkVfR0xPQkFMKEF0b21pY1N0cmluZywgZW1wdHlBdG9tLCAiIikK
LUpTX0VYUE9SVERBVEEgREVGSU5FX0dMT0JBTChBdG9taWNTdHJpbmcsIHRleHRBdG9tLCAiI3Rl
eHQiKQotSlNfRVhQT1JUREFUQSBERUZJTkVfR0xPQkFMKEF0b21pY1N0cmluZywgY29tbWVudEF0
b20sICIjY29tbWVudCIpCi1KU19FWFBPUlREQVRBIERFRklORV9HTE9CQUwoQXRvbWljU3RyaW5n
LCBzdGFyQXRvbSwgIioiKQotSlNfRVhQT1JUREFUQSBERUZJTkVfR0xPQkFMKEF0b21pY1N0cmlu
ZywgeG1sQXRvbSwgInhtbCIpCi1KU19FWFBPUlREQVRBIERFRklORV9HTE9CQUwoQXRvbWljU3Ry
aW5nLCB4bWxuc0F0b20sICJ4bWxucyIpCitKU19FWFBPUlRFRF9TWU1CT0wgREVGSU5FX0dMT0JB
TChBdG9taWNTdHJpbmcsIG51bGxBdG9tKQorSlNfRVhQT1JURURfU1lNQk9MIERFRklORV9HTE9C
QUwoQXRvbWljU3RyaW5nLCBlbXB0eUF0b20sICIiKQorSlNfRVhQT1JURURfU1lNQk9MIERFRklO
RV9HTE9CQUwoQXRvbWljU3RyaW5nLCB0ZXh0QXRvbSwgIiN0ZXh0IikKK0pTX0VYUE9SVEVEX1NZ
TUJPTCBERUZJTkVfR0xPQkFMKEF0b21pY1N0cmluZywgY29tbWVudEF0b20sICIjY29tbWVudCIp
CitKU19FWFBPUlRFRF9TWU1CT0wgREVGSU5FX0dMT0JBTChBdG9taWNTdHJpbmcsIHN0YXJBdG9t
LCAiKiIpCitKU19FWFBPUlRFRF9TWU1CT0wgREVGSU5FX0dMT0JBTChBdG9taWNTdHJpbmcsIHht
bEF0b20sICJ4bWwiKQorSlNfRVhQT1JURURfU1lNQk9MIERFRklORV9HTE9CQUwoQXRvbWljU3Ry
aW5nLCB4bWxuc0F0b20sICJ4bWxucyIpCiAKIHZvaWQgQXRvbWljU3RyaW5nOjppbml0KCkKIHsK
SW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIEphdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5oCShyZXZpc2lvbiA2MTU2
OCkKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5oCSh3b3JraW5nIGNv
cHkpCkBAIC00MCwyNyArNDAsMzEgQEAKIAogY2xhc3MgQXRvbWljU3RyaW5nIHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgdm9pZCBpbml0KCk7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIHN0YXRpYyB2
b2lkIGluaXQoKTsKIAotICAgIEF0b21pY1N0cmluZygpIHsgfQotICAgIEF0b21pY1N0cmluZyhj
b25zdCBjaGFyKiBzKSA6IG1fc3RyaW5nKGFkZChzKSkgeyB9CisgICAgSlNfRVhQT1JURURfU1lN
Qk9MIEF0b21pY1N0cmluZygpIHsgfQorICAgIC8vIGNvcHkgY29uc3RydWN0b3IgbmVlZHMgdG8g
YmUgZXhwbGljaXRseSBkZWZpbmVkIHNvIHdlIGNhbiBzcGVjaWZ5IHByb3BlciBkbGwgbGlua2Fn
ZQorICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBBdG9taWNTdHJpbmcoY29uc3QgQXRvbWljU3RyaW5n
JiBzKSA6IG1fc3RyaW5nKHMubV9zdHJpbmcpIHsgfQorICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBB
dG9taWNTdHJpbmcoY29uc3QgY2hhciogcykgOiBtX3N0cmluZyhhZGQocykpIHsgfQogICAgIEF0
b21pY1N0cmluZyhjb25zdCBVQ2hhciogcywgdW5zaWduZWQgbGVuZ3RoKSA6IG1fc3RyaW5nKGFk
ZChzLCBsZW5ndGgpKSB7IH0KICAgICBBdG9taWNTdHJpbmcoY29uc3QgVUNoYXIqIHMsIHVuc2ln
bmVkIGxlbmd0aCwgdW5zaWduZWQgZXhpc3RpbmdIYXNoKSA6IG1fc3RyaW5nKGFkZChzLCBsZW5n
dGgsIGV4aXN0aW5nSGFzaCkpIHsgfQogICAgIEF0b21pY1N0cmluZyhjb25zdCBVQ2hhciogcykg
OiBtX3N0cmluZyhhZGQocykpIHsgfQogICAgIEFUT01JQ1NUUklOR19DT05WRVJTSU9OIEF0b21p
Y1N0cmluZyhTdHJpbmdJbXBsKiBpbXApIDogbV9zdHJpbmcoYWRkKGltcCkpIHsgfQogICAgIEF0
b21pY1N0cmluZyhBdG9taWNTdHJpbmdJbXBsKiBpbXApIDogbV9zdHJpbmcoaW1wKSB7IH0KLSAg
ICBBVE9NSUNTVFJJTkdfQ09OVkVSU0lPTiBBdG9taWNTdHJpbmcoY29uc3QgU3RyaW5nJiBzKSA6
IG1fc3RyaW5nKGFkZChzLmltcGwoKSkpIHsgfQorICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBBVE9N
SUNTVFJJTkdfQ09OVkVSU0lPTiBBdG9taWNTdHJpbmcoY29uc3QgU3RyaW5nJiBzKSA6IG1fc3Ry
aW5nKGFkZChzLmltcGwoKSkpIHsgfQogCiAgICAgLy8gSGFzaCB0YWJsZSBkZWxldGVkIHZhbHVl
cywgd2hpY2ggYXJlIG9ubHkgY29uc3RydWN0ZWQgYW5kIG5ldmVyIGNvcGllZCBvciBkZXN0cm95
ZWQuCi0gICAgQXRvbWljU3RyaW5nKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkgOiBt
X3N0cmluZyhXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkgeyB9Ci0gICAgYm9vbCBpc0hhc2hU
YWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmlzSGFzaFRhYmxlRGVs
ZXRlZFZhbHVlKCk7IH0KKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgQXRvbWljU3RyaW5nKFdURjo6
SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkgOiBtX3N0cmluZyhXVEY6Okhhc2hUYWJsZURlbGV0
ZWRWYWx1ZSkgeyB9CisgICAgSlNfRVhQT1JURURfU1lNQk9MIGJvb2wgaXNIYXNoVGFibGVEZWxl
dGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1
ZSgpOyB9CiAKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nSW1wbCogZmluZChjb25zdCBVQ2hhciog
cywgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBleGlzdGluZ0hhc2gpOworICAgIEpTX0VYUE9S
VEVEX1NZTUJPTCB+QXRvbWljU3RyaW5nKCkgeyB9CiAKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wg
c3RhdGljIEF0b21pY1N0cmluZ0ltcGwqIGZpbmQoY29uc3QgVUNoYXIqIHMsIHVuc2lnbmVkIGxl
bmd0aCwgdW5zaWduZWQgZXhpc3RpbmdIYXNoKTsKKwogICAgIG9wZXJhdG9yIGNvbnN0IFN0cmlu
ZyYoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfQogICAgIGNvbnN0IFN0cmluZyYgc3RyaW5n
KCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH07CiAKLSAgICBBdG9taWNTdHJpbmdJbXBsKiBp
bXBsKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXRvbWljU3RyaW5nSW1wbCAqPihtX3N0
cmluZy5pbXBsKCkpOyB9CisgICAgSlNfRVhQT1JURURfU1lNQk9MIEF0b21pY1N0cmluZ0ltcGwq
IGltcGwoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxBdG9taWNTdHJpbmdJbXBsICo+KG1f
c3RyaW5nLmltcGwoKSk7IH0KICAgICAKICAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycygpIGNv
bnN0IHsgcmV0dXJuIG1fc3RyaW5nLmNoYXJhY3RlcnMoKTsgfQogICAgIHVuc2lnbmVkIGxlbmd0
aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmxlbmd0aCgpOyB9CkBAIC04NCw3ICs4OCw3IEBA
CiAgICAgYm9vbCBlbmRzV2l0aChjb25zdCBTdHJpbmcmIHMsIGJvb2wgY2FzZVNlbnNpdGl2ZSA9
IHRydWUpIGNvbnN0CiAgICAgICAgIHsgcmV0dXJuIG1fc3RyaW5nLmVuZHNXaXRoKHMsIGNhc2VT
ZW5zaXRpdmUpOyB9CiAgICAgCi0gICAgQXRvbWljU3RyaW5nIGxvd2VyKCkgY29uc3Q7CisgICAg
SlNfRVhQT1JURURfU1lNQk9MIEF0b21pY1N0cmluZyBsb3dlcigpIGNvbnN0OwogICAgIEF0b21p
Y1N0cmluZyB1cHBlcigpIGNvbnN0IHsgcmV0dXJuIEF0b21pY1N0cmluZyhpbXBsKCktPnVwcGVy
KCkpOyB9CiAgICAgCiAgICAgaW50IHRvSW50KGJvb2wqIG9rID0gMCkgY29uc3QgeyByZXR1cm4g
bV9zdHJpbmcudG9JbnQob2spOyB9CkBAIC0xMTAsMjQgKzExNCwzMiBAQAogICAgIG9wZXJhdG9y
IFFTdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfQogI2VuZGlmCiAKKyAgICBKU19F
WFBPUlRFRF9TWU1CT0wgaW5saW5lIEF0b21pY1N0cmluZyYgb3BlcmF0b3I9KGNvbnN0IEF0b21p
Y1N0cmluZyYgYSkgCisgICAgeyAKKyAgICAgICAgaWYgKHRoaXMgIT0gJmEpCisgICAgICAgICAg
ICBtX3N0cmluZyA9IGEubV9zdHJpbmc7IAorICAgICAgICAKKyAgICAgICAgcmV0dXJuICp0aGlz
OyAKKyAgICB9CisKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fc3RyaW5nOwogICAgIAotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChjb25zdCBjaGFyKik7Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRkKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3Ro
KTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGQoY29uc3QgVUNoYXIqLCB1
bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIGV4aXN0aW5nSGFzaCk7Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8U3RyaW5nSW1wbD4gYWRkKGNvbnN0IFVDaGFyKik7CisgICAgSlNfRVhQT1JURURfU1lN
Qk9MIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChjb25zdCBjaGFyKik7CisgICAg
SlNfRVhQT1JURURfU1lNQk9MIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChjb25z
dCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIHN0YXRp
YyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0
aCwgdW5zaWduZWQgZXhpc3RpbmdIYXNoKTsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgc3RhdGlj
IFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRkKGNvbnN0IFVDaGFyKik7CiAgICAgQUxXQVlTX0lO
TElORSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChTdHJpbmdJbXBsKiByKQogICAgIHsKICAg
ICAgICAgaWYgKCFyIHx8IHItPmlzQXRvbWljKCkpCiAgICAgICAgICAgICByZXR1cm4gcjsKICAg
ICAgICAgcmV0dXJuIGFkZFNsb3dDYXNlKHIpOwogICAgIH0KLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxTdHJpbmdJbXBsPiBhZGRTbG93Q2FzZShTdHJpbmdJbXBsKik7CisgICAgSlNfRVhQT1JURURf
U1lNQk9MIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZFNsb3dDYXNlKFN0cmluZ0lt
cGwqKTsKIH07CiAKIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgQXRvbWljU3RyaW5nJiBh
LCBjb25zdCBBdG9taWNTdHJpbmcmIGIpIHsgcmV0dXJuIGEuaW1wbCgpID09IGIuaW1wbCgpOyB9
Ci1ib29sIG9wZXJhdG9yPT0oY29uc3QgQXRvbWljU3RyaW5nJiBhLCBjb25zdCBjaGFyKiBiKTsK
K0pTX0VYUE9SVEVEX1NZTUJPTCBib29sIG9wZXJhdG9yPT0oY29uc3QgQXRvbWljU3RyaW5nJiBh
LCBjb25zdCBjaGFyKiBiKTsKIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgQXRvbWljU3Ry
aW5nJiBhLCBjb25zdCBTdHJpbmcmIGIpIHsgcmV0dXJuIGVxdWFsKGEuaW1wbCgpLCBiLmltcGwo
KSk7IH0KIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgY2hhciogYSwgY29uc3QgQXRvbWlj
U3RyaW5nJiBiKSB7IHJldHVybiBiID09IGE7IH0KIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29u
c3QgU3RyaW5nJiBhLCBjb25zdCBBdG9taWNTdHJpbmcmIGIpIHsgcmV0dXJuIGVxdWFsKGEuaW1w
bCgpLCBiLmltcGwoKSk7IH0KQEAgLTE0NywxMyArMTU5LDEzIEBACiAvLyBEZWZpbmUgZXh0ZXJu
YWwgZ2xvYmFsIHZhcmlhYmxlcyBmb3IgdGhlIGNvbW1vbmx5IHVzZWQgYXRvbWljIHN0cmluZ3Mu
CiAvLyBUaGVzZSBhcmUgb25seSB1c2FibGUgZnJvbSB0aGUgbWFpbiB0aHJlYWQuCiAjaWZuZGVm
IEFUT01JQ1NUUklOR19ISURFX0dMT0JBTFMKLSAgICBleHRlcm4gY29uc3QgSlNfRVhQT1JUREFU
QSBBdG9taWNTdHJpbmcgbnVsbEF0b207Ci0gICAgZXh0ZXJuIGNvbnN0IEpTX0VYUE9SVERBVEEg
QXRvbWljU3RyaW5nIGVtcHR5QXRvbTsKLSAgICBleHRlcm4gY29uc3QgSlNfRVhQT1JUREFUQSBB
dG9taWNTdHJpbmcgdGV4dEF0b207Ci0gICAgZXh0ZXJuIGNvbnN0IEpTX0VYUE9SVERBVEEgQXRv
bWljU3RyaW5nIGNvbW1lbnRBdG9tOwotICAgIGV4dGVybiBjb25zdCBKU19FWFBPUlREQVRBIEF0
b21pY1N0cmluZyBzdGFyQXRvbTsKLSAgICBleHRlcm4gY29uc3QgSlNfRVhQT1JUREFUQSBBdG9t
aWNTdHJpbmcgeG1sQXRvbTsKLSAgICBleHRlcm4gY29uc3QgSlNfRVhQT1JUREFUQSBBdG9taWNT
dHJpbmcgeG1sbnNBdG9tOworZXh0ZXJuIGNvbnN0IEpTX0VYUE9SVEVEX1NZTUJPTCBBdG9taWNT
dHJpbmcgbnVsbEF0b207CitleHRlcm4gY29uc3QgSlNfRVhQT1JURURfU1lNQk9MIEF0b21pY1N0
cmluZyBlbXB0eUF0b207CitleHRlcm4gY29uc3QgSlNfRVhQT1JURURfU1lNQk9MIEF0b21pY1N0
cmluZyB0ZXh0QXRvbTsKK2V4dGVybiBjb25zdCBKU19FWFBPUlRFRF9TWU1CT0wgQXRvbWljU3Ry
aW5nIGNvbW1lbnRBdG9tOworZXh0ZXJuIGNvbnN0IEpTX0VYUE9SVEVEX1NZTUJPTCBBdG9taWNT
dHJpbmcgc3RhckF0b207CitleHRlcm4gY29uc3QgSlNfRVhQT1JURURfU1lNQk9MIEF0b21pY1N0
cmluZyB4bWxBdG9tOworZXh0ZXJuIGNvbnN0IEpTX0VYUE9SVEVEX1NZTUJPTCBBdG9taWNTdHJp
bmcgeG1sbnNBdG9tOwogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IEph
dmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3Jp
cHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5oCShyZXZpc2lvbiA2MTU2OCkKKysrIEphdmFTY3Jp
cHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC02NSwxOSArNjUs
MTkgQEAKIC8vIERlY2xhcmF0aW9ucyBvZiBzdHJpbmcgb3BlcmF0aW9ucwogCiBib29sIGNoYXJh
Y3RlcnNBcmVBbGxBU0NJSShjb25zdCBVQ2hhciosIHNpemVfdCk7Ci1pbnQgY2hhcmFjdGVyc1Rv
SW50U3RyaWN0KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDAsIGludCBiYXNlID0g
MTApOwotdW5zaWduZWQgY2hhcmFjdGVyc1RvVUludFN0cmljdChjb25zdCBVQ2hhciosIHNpemVf
dCwgYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKTsKK0pTX0VYUE9SVEVEX1NZTUJPTCBpbnQg
Y2hhcmFjdGVyc1RvSW50U3RyaWN0KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDAs
IGludCBiYXNlID0gMTApOworSlNfRVhQT1JURURfU1lNQk9MIHVuc2lnbmVkIGNoYXJhY3RlcnNU
b1VJbnRTdHJpY3QoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gMCwgaW50IGJhc2Ug
PSAxMCk7CiBpbnQ2NF90IGNoYXJhY3RlcnNUb0ludDY0U3RyaWN0KGNvbnN0IFVDaGFyKiwgc2l6
ZV90LCBib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApOwogdWludDY0X3QgY2hhcmFjdGVyc1Rv
VUludDY0U3RyaWN0KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDAsIGludCBiYXNl
ID0gMTApOwogaW50cHRyX3QgY2hhcmFjdGVyc1RvSW50UHRyU3RyaWN0KGNvbnN0IFVDaGFyKiwg
c2l6ZV90LCBib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApOwogCi1pbnQgY2hhcmFjdGVyc1Rv
SW50KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDApOyAvLyBpZ25vcmVzIHRyYWls
aW5nIGdhcmJhZ2UKK0pTX0VYUE9SVEVEX1NZTUJPTCBpbnQgY2hhcmFjdGVyc1RvSW50KGNvbnN0
IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDApOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJh
Z2UKIHVuc2lnbmVkIGNoYXJhY3RlcnNUb1VJbnQoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wq
IG9rID0gMCk7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQogaW50NjRfdCBjaGFyYWN0ZXJz
VG9JbnQ2NChjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSAwKTsgLy8gaWdub3JlcyB0
cmFpbGluZyBnYXJiYWdlCiB1aW50NjRfdCBjaGFyYWN0ZXJzVG9VSW50NjQoY29uc3QgVUNoYXIq
LCBzaXplX3QsIGJvb2wqIG9rID0gMCk7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQogaW50
cHRyX3QgY2hhcmFjdGVyc1RvSW50UHRyKGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9
IDApOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKIAotZG91YmxlIGNoYXJhY3RlcnNUb0Rv
dWJsZShjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSAwKTsKK0pTX0VYUE9SVEVEX1NZ
TUJPTCBkb3VibGUgY2hhcmFjdGVyc1RvRG91YmxlKGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29s
KiBvayA9IDApOwogZmxvYXQgY2hhcmFjdGVyc1RvRmxvYXQoY29uc3QgVUNoYXIqLCBzaXplX3Qs
IGJvb2wqIG9rID0gMCk7CiAKIGludCBmaW5kKGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBVQ2hhciwg
aW50IHN0YXJ0UG9zaXRpb24gPSAwKTsKQEAgLTg1LDE0ICs4NSwxNSBAQAogCiBjbGFzcyBTdHJp
bmcgewogcHVibGljOgotICAgIFN0cmluZygpIHsgfSAvLyBnaXZlcyBudWxsIHN0cmluZywgZGlz
dGluZ3Vpc2hhYmxlIGZyb20gYW4gZW1wdHkgc3RyaW5nCisgICAgSlNfRVhQT1JURURfU1lNQk9M
IFN0cmluZygpIHsgfSAvLyBnaXZlcyBudWxsIHN0cmluZywgZGlzdGluZ3Vpc2hhYmxlIGZyb20g
YW4gZW1wdHkgc3RyaW5nCisgICAgSlNfRVhQT1JURURfU1lNQk9MIH5TdHJpbmcoKSB7IH0KICAg
ICBTdHJpbmcoY29uc3QgVUNoYXIqIHN0ciwgdW5zaWduZWQgbGVuKQogICAgIHsKICAgICAgICAg
aWYgKCFzdHIpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIG1faW1wbCA9IFN0cmluZ0lt
cGw6OmNyZWF0ZShzdHIsIGxlbik7CiAgICAgfQotICAgIFN0cmluZyhjb25zdCBjaGFyKiBzdHIp
CisgICAgSlNfRVhQT1JURURfU1lNQk9MIFN0cmluZyhjb25zdCBjaGFyKiBzdHIpCiAgICAgewog
ICAgICAgICBpZiAoIXN0cikKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEwNCwxNiArMTA1LDE4
IEBACiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIG1faW1wbCA9IFN0cmluZ0ltcGw6OmNy
ZWF0ZShzdHIsIGxlbmd0aCk7CiAgICAgfQotICAgIFN0cmluZyhjb25zdCBVQ2hhciopOyAvLyBT
cGVjaWZpY2FsbHkgZm9yIG51bGwgdGVybWluYXRlZCBVVEYtMTYKLSAgICBTdHJpbmcoU3RyaW5n
SW1wbCogaSkgOiBtX2ltcGwoaSkgeyB9Ci0gICAgU3RyaW5nKFBhc3NSZWZQdHI8U3RyaW5nSW1w
bD4gaSkgOiBtX2ltcGwoaSkgeyB9CisgICAgSlNfRVhQT1JURURfU1lNQk9MIFN0cmluZyhjb25z
dCBVQ2hhciopOyAvLyBTcGVjaWZpY2FsbHkgZm9yIG51bGwgdGVybWluYXRlZCBVVEYtMTYKKyAg
ICAvLyBjb3B5IGNvbnN0cnVjdG9yIG5lZWRzIHRvIGJlIGV4cGxpY2l0bHkgZGVmaW5lZCBzbyB3
ZSBjYW4gc3BlY2lmeSBwcm9wZXIgZGxsIGxpbmthZ2UKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wg
U3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyKSA6IG1faW1wbChzdHIubV9pbXBsKSB7IH0KKyAgICBK
U19FWFBPUlRFRF9TWU1CT0wgU3RyaW5nKFN0cmluZ0ltcGwqIGkpIDogbV9pbXBsKGkpIHsgfQor
ICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBTdHJpbmcoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBpKSA6
IG1faW1wbChpKSB7IH0KICAgICBTdHJpbmcoUmVmUHRyPFN0cmluZ0ltcGw+IGkpIDogbV9pbXBs
KGkpIHsgfQogCiAgICAgdm9pZCBzd2FwKFN0cmluZyYgbykgeyBtX2ltcGwuc3dhcChvLm1faW1w
bCk7IH0KIAogICAgIC8vIEhhc2ggdGFibGUgZGVsZXRlZCB2YWx1ZXMsIHdoaWNoIGFyZSBvbmx5
IGNvbnN0cnVjdGVkIGFuZCBuZXZlciBjb3BpZWQgb3IgZGVzdHJveWVkLgogICAgIFN0cmluZyhX
VEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpIDogbV9pbXBsKFdURjo6SGFzaFRhYmxlRGVs
ZXRlZFZhbHVlKSB7IH0KLSAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3Qg
eyByZXR1cm4gbV9pbXBsLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KKyAgICBKU19FWFBP
UlRFRF9TWU1CT0wgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJu
IG1faW1wbC5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9CiAKICAgICBzdGF0aWMgU3RyaW5n
IGFkb3B0KFN0cmluZ0J1ZmZlciYgYnVmZmVyKSB7IHJldHVybiBTdHJpbmdJbXBsOjphZG9wdChi
dWZmZXIpOyB9CiAgICAgc3RhdGljIFN0cmluZyBhZG9wdChWZWN0b3I8VUNoYXI+JiB2ZWN0b3Ip
IHsgcmV0dXJuIFN0cmluZ0ltcGw6OmFkb3B0KHZlY3Rvcik7IH0KQEAgLTEzMiw3ICsxMzUsNyBA
QAogICAgICAgICByZXR1cm4gbV9pbXBsLT5jaGFyYWN0ZXJzKCk7CiAgICAgfQogCi0gICAgY29u
c3QgVUNoYXIqIGNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCk7CisgICAgSlNfRVhQT1JU
RURfU1lNQk9MIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpOwog
ICAgIAogICAgIFVDaGFyIG9wZXJhdG9yW10odW5zaWduZWQgaSkgY29uc3QgLy8gaWYgaSA+PSBs
ZW5ndGgoKSwgcmV0dXJucyAwCiAgICAgewpAQCAtMTQwLDcgKzE0Myw3IEBACiAgICAgICAgICAg
ICByZXR1cm4gMDsKICAgICAgICAgcmV0dXJuIG1faW1wbC0+Y2hhcmFjdGVycygpW2ldOwogICAg
IH0KLSAgICBVQ2hhcjMyIGNoYXJhY3RlclN0YXJ0aW5nQXQodW5zaWduZWQpIGNvbnN0OyAvLyBE
aXR0by4KKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgVUNoYXIzMiBjaGFyYWN0ZXJTdGFydGluZ0F0
KHVuc2lnbmVkKSBjb25zdDsgLy8gRGl0dG8uCiAgICAgCiAgICAgYm9vbCBjb250YWlucyhVQ2hh
ciBjKSBjb25zdCB7IHJldHVybiBmaW5kKGMpICE9IC0xOyB9CiAgICAgYm9vbCBjb250YWlucyhj
b25zdCBjaGFyKiBzdHIsIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IHRydWUpIGNvbnN0IHsgcmV0dXJu
IGZpbmQoc3RyLCAwLCBjYXNlU2Vuc2l0aXZlKSAhPSAtMTsgfQpAQCAtMTY1LDExICsxNjgsMTEg
QEAKICAgICBib29sIGVuZHNXaXRoKGNvbnN0IFN0cmluZyYgcywgYm9vbCBjYXNlU2Vuc2l0aXZl
ID0gdHJ1ZSkgY29uc3QKICAgICAgICAgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5lbmRzV2l0
aChzLmltcGwoKSwgY2FzZVNlbnNpdGl2ZSkgOiBzLmlzRW1wdHkoKTsgfQogCi0gICAgdm9pZCBh
cHBlbmQoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBhcHBlbmQoY2hhcik7Ci0gICAgdm9pZCBh
cHBlbmQoVUNoYXIpOwotICAgIHZvaWQgYXBwZW5kKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVu
Z3RoKTsKLSAgICB2b2lkIGluc2VydChjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBwb3MpOworICAg
IEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmKTsKKyAgICBKU19F
WFBPUlRFRF9TWU1CT0wgdm9pZCBhcHBlbmQoY2hhcik7CisgICAgSlNfRVhQT1JURURfU1lNQk9M
IHZvaWQgYXBwZW5kKFVDaGFyKTsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBhcHBlbmQo
Y29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2
b2lkIGluc2VydChjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBwb3MpOwogICAgIHZvaWQgaW5zZXJ0
KGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBwb3MpOwogCiAgICAgU3Ry
aW5nJiByZXBsYWNlKFVDaGFyIGEsIFVDaGFyIGIpIHsgaWYgKG1faW1wbCkgbV9pbXBsID0gbV9p
bXBsLT5yZXBsYWNlKGEsIGIpOyByZXR1cm4gKnRoaXM7IH0KQEAgLTE4MSw3NSArMTg0LDc1IEBA
CiAgICAgdm9pZCBtYWtlVXBwZXIoKSB7IGlmIChtX2ltcGwpIG1faW1wbCA9IG1faW1wbC0+dXBw
ZXIoKTsgfQogICAgIHZvaWQgbWFrZVNlY3VyZShVQ2hhciBhQ2hhcikgeyBpZiAobV9pbXBsKSBt
X2ltcGwgPSBtX2ltcGwtPnNlY3VyZShhQ2hhcik7IH0KIAotICAgIHZvaWQgdHJ1bmNhdGUodW5z
aWduZWQgbGVuKTsKLSAgICB2b2lkIHJlbW92ZSh1bnNpZ25lZCBwb3MsIGludCBsZW4gPSAxKTsK
KyAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCB0cnVuY2F0ZSh1bnNpZ25lZCBsZW4pOworICAg
IEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIHJlbW92ZSh1bnNpZ25lZCBwb3MsIGludCBsZW4gPSAx
KTsKIAotICAgIFN0cmluZyBzdWJzdHJpbmcodW5zaWduZWQgcG9zLCB1bnNpZ25lZCBsZW4gPSBV
SU5UX01BWCkgY29uc3Q7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIFN0cmluZyBzdWJzdHJpbmco
dW5zaWduZWQgcG9zLCB1bnNpZ25lZCBsZW4gPSBVSU5UX01BWCkgY29uc3Q7CiAgICAgU3RyaW5n
IGxlZnQodW5zaWduZWQgbGVuKSBjb25zdCB7IHJldHVybiBzdWJzdHJpbmcoMCwgbGVuKTsgfQog
ICAgIFN0cmluZyByaWdodCh1bnNpZ25lZCBsZW4pIGNvbnN0IHsgcmV0dXJuIHN1YnN0cmluZyhs
ZW5ndGgoKSAtIGxlbiwgbGVuKTsgfQogCiAgICAgLy8gUmV0dXJucyBhIGxvd2VyY2FzZS91cHBl
cmNhc2UgdmVyc2lvbiBvZiB0aGUgc3RyaW5nCi0gICAgU3RyaW5nIGxvd2VyKCkgY29uc3Q7Ci0g
ICAgU3RyaW5nIHVwcGVyKCkgY29uc3Q7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIFN0cmluZyBs
b3dlcigpIGNvbnN0OworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBTdHJpbmcgdXBwZXIoKSBjb25z
dDsKIAotICAgIFN0cmluZyBzdHJpcFdoaXRlU3BhY2UoKSBjb25zdDsKLSAgICBTdHJpbmcgc2lt
cGxpZnlXaGl0ZVNwYWNlKCkgY29uc3Q7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIFN0cmluZyBz
dHJpcFdoaXRlU3BhY2UoKSBjb25zdDsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgU3RyaW5nIHNp
bXBsaWZ5V2hpdGVTcGFjZSgpIGNvbnN0OwogCi0gICAgU3RyaW5nIHJlbW92ZUNoYXJhY3RlcnMo
Q2hhcmFjdGVyTWF0Y2hGdW5jdGlvblB0cikgY29uc3Q7CisgICAgSlNfRVhQT1JURURfU1lNQk9M
IFN0cmluZyByZW1vdmVDaGFyYWN0ZXJzKENoYXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIpIGNvbnN0
OwogCiAgICAgLy8gUmV0dXJuIHRoZSBzdHJpbmcgd2l0aCBjYXNlIGZvbGRlZCBmb3IgY2FzZSBp
bnNlbnNpdGl2ZSBjb21wYXJpc29uLgotICAgIFN0cmluZyBmb2xkQ2FzZSgpIGNvbnN0OworICAg
IEpTX0VYUE9SVEVEX1NZTUJPTCBTdHJpbmcgZm9sZENhc2UoKSBjb25zdDsKIAogICAgIHN0YXRp
YyBTdHJpbmcgbnVtYmVyKHNob3J0KTsKLSAgICBzdGF0aWMgU3RyaW5nIG51bWJlcih1bnNpZ25l
ZCBzaG9ydCk7Ci0gICAgc3RhdGljIFN0cmluZyBudW1iZXIoaW50KTsKLSAgICBzdGF0aWMgU3Ry
aW5nIG51bWJlcih1bnNpZ25lZCk7Ci0gICAgc3RhdGljIFN0cmluZyBudW1iZXIobG9uZyk7Ci0g
ICAgc3RhdGljIFN0cmluZyBudW1iZXIodW5zaWduZWQgbG9uZyk7Ci0gICAgc3RhdGljIFN0cmlu
ZyBudW1iZXIobG9uZyBsb25nKTsKLSAgICBzdGF0aWMgU3RyaW5nIG51bWJlcih1bnNpZ25lZCBs
b25nIGxvbmcpOwotICAgIHN0YXRpYyBTdHJpbmcgbnVtYmVyKGRvdWJsZSk7CisgICAgSlNfRVhQ
T1JURURfU1lNQk9MIHN0YXRpYyBTdHJpbmcgbnVtYmVyKHVuc2lnbmVkIHNob3J0KTsKKyAgICBK
U19FWFBPUlRFRF9TWU1CT0wgc3RhdGljIFN0cmluZyBudW1iZXIoaW50KTsKKyAgICBKU19FWFBP
UlRFRF9TWU1CT0wgc3RhdGljIFN0cmluZyBudW1iZXIodW5zaWduZWQpOworICAgIEpTX0VYUE9S
VEVEX1NZTUJPTCBzdGF0aWMgU3RyaW5nIG51bWJlcihsb25nKTsKKyAgICBKU19FWFBPUlRFRF9T
WU1CT0wgc3RhdGljIFN0cmluZyBudW1iZXIodW5zaWduZWQgbG9uZyk7CisgICAgSlNfRVhQT1JU
RURfU1lNQk9MIHN0YXRpYyBTdHJpbmcgbnVtYmVyKGxvbmcgbG9uZyk7CisgICAgSlNfRVhQT1JU
RURfU1lNQk9MIHN0YXRpYyBTdHJpbmcgbnVtYmVyKHVuc2lnbmVkIGxvbmcgbG9uZyk7CisgICAg
SlNfRVhQT1JURURfU1lNQk9MIHN0YXRpYyBTdHJpbmcgbnVtYmVyKGRvdWJsZSk7CiAgICAgCi0g
ICAgc3RhdGljIFN0cmluZyBmb3JtYXQoY29uc3QgY2hhciAqLCAuLi4pIFdURl9BVFRSSUJVVEVf
UFJJTlRGKDEsIDIpOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0aWMgU3RyaW5nIGZvcm1h
dChjb25zdCBjaGFyICosIC4uLikgV1RGX0FUVFJJQlVURV9QUklOVEYoMSwgMik7CiAKICAgICAv
LyBSZXR1cm5zIGFuIHVuaW5pdGlhbGl6ZWQgc3RyaW5nLiBUaGUgY2hhcmFjdGVycyBuZWVkcyB0
byBiZSB3cml0dGVuCiAgICAgLy8gaW50byB0aGUgYnVmZmVyIHJldHVybmVkIGluIGRhdGEgYmVm
b3JlIHRoZSByZXR1cm5lZCBzdHJpbmcgaXMgdXNlZC4KICAgICAvLyBGYWlsdXJlIHRvIGRvIHRo
aXMgd2lsbCBoYXZlIHVucHJlZGljdGFibGUgcmVzdWx0cy4KICAgICBzdGF0aWMgU3RyaW5nIGNy
ZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoLCBVQ2hhciomIGRhdGEpIHsgcmV0dXJu
IFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBkYXRhKTsgfQogCi0gICAg
dm9pZCBzcGxpdChjb25zdCBTdHJpbmcmIHNlcGFyYXRvciwgVmVjdG9yPFN0cmluZz4mIHJlc3Vs
dCkgY29uc3Q7Ci0gICAgdm9pZCBzcGxpdChjb25zdCBTdHJpbmcmIHNlcGFyYXRvciwgYm9vbCBh
bGxvd0VtcHR5RW50cmllcywgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkgY29uc3Q7Ci0gICAgdm9p
ZCBzcGxpdChVQ2hhciBzZXBhcmF0b3IsIFZlY3RvcjxTdHJpbmc+JiByZXN1bHQpIGNvbnN0Owot
ICAgIHZvaWQgc3BsaXQoVUNoYXIgc2VwYXJhdG9yLCBib29sIGFsbG93RW1wdHlFbnRyaWVzLCBW
ZWN0b3I8U3RyaW5nPiYgcmVzdWx0KSBjb25zdDsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9p
ZCBzcGxpdChjb25zdCBTdHJpbmcmIHNlcGFyYXRvciwgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkg
Y29uc3Q7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIHZvaWQgc3BsaXQoY29uc3QgU3RyaW5nJiBz
ZXBhcmF0b3IsIGJvb2wgYWxsb3dFbXB0eUVudHJpZXMsIFZlY3RvcjxTdHJpbmc+JiByZXN1bHQp
IGNvbnN0OworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIHNwbGl0KFVDaGFyIHNlcGFyYXRv
ciwgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkgY29uc3Q7CisgICAgSlNfRVhQT1JURURfU1lNQk9M
IHZvaWQgc3BsaXQoVUNoYXIgc2VwYXJhdG9yLCBib29sIGFsbG93RW1wdHlFbnRyaWVzLCBWZWN0
b3I8U3RyaW5nPiYgcmVzdWx0KSBjb25zdDsKIAotICAgIGludCB0b0ludFN0cmljdChib29sKiBv
ayA9IDAsIGludCBiYXNlID0gMTApIGNvbnN0OwotICAgIHVuc2lnbmVkIHRvVUludFN0cmljdChi
b29sKiBvayA9IDAsIGludCBiYXNlID0gMTApIGNvbnN0OworICAgIEpTX0VYUE9SVEVEX1NZTUJP
TCBpbnQgdG9JbnRTdHJpY3QoYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKSBjb25zdDsKKyAg
ICBKU19FWFBPUlRFRF9TWU1CT0wgdW5zaWduZWQgdG9VSW50U3RyaWN0KGJvb2wqIG9rID0gMCwg
aW50IGJhc2UgPSAxMCkgY29uc3Q7CiAgICAgaW50NjRfdCB0b0ludDY0U3RyaWN0KGJvb2wqIG9r
ID0gMCwgaW50IGJhc2UgPSAxMCkgY29uc3Q7CiAgICAgdWludDY0X3QgdG9VSW50NjRTdHJpY3Qo
Ym9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKSBjb25zdDsKICAgICBpbnRwdHJfdCB0b0ludFB0
clN0cmljdChib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApIGNvbnN0OwogCi0gICAgaW50IHRv
SW50KGJvb2wqIG9rID0gMCkgY29uc3Q7Ci0gICAgdW5zaWduZWQgdG9VSW50KGJvb2wqIG9rID0g
MCkgY29uc3Q7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIGludCB0b0ludChib29sKiBvayA9IDAp
IGNvbnN0OworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB1bnNpZ25lZCB0b1VJbnQoYm9vbCogb2sg
PSAwKSBjb25zdDsKICAgICBpbnQ2NF90IHRvSW50NjQoYm9vbCogb2sgPSAwKSBjb25zdDsKLSAg
ICB1aW50NjRfdCB0b1VJbnQ2NChib29sKiBvayA9IDApIGNvbnN0OwotICAgIGludHB0cl90IHRv
SW50UHRyKGJvb2wqIG9rID0gMCkgY29uc3Q7Ci0gICAgZG91YmxlIHRvRG91YmxlKGJvb2wqIG9r
ID0gMCkgY29uc3Q7Ci0gICAgZmxvYXQgdG9GbG9hdChib29sKiBvayA9IDApIGNvbnN0OworICAg
IEpTX0VYUE9SVEVEX1NZTUJPTCB1aW50NjRfdCB0b1VJbnQ2NChib29sKiBvayA9IDApIGNvbnN0
OworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBpbnRwdHJfdCB0b0ludFB0cihib29sKiBvayA9IDAp
IGNvbnN0OworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBkb3VibGUgdG9Eb3VibGUoYm9vbCogb2sg
PSAwKSBjb25zdDsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgZmxvYXQgdG9GbG9hdChib29sKiBv
ayA9IDApIGNvbnN0OwogCiAgICAgYm9vbCBwZXJjZW50YWdlKGludCYgcGVyY2VudGFnZSkgY29u
c3Q7CiAKICAgICAvLyBSZXR1cm5zIGEgU3RyaW5nSW1wbCBzdWl0YWJsZSBmb3IgdXNlIG9uIGFu
b3RoZXIgdGhyZWFkLgotICAgIFN0cmluZyBjcm9zc1RocmVhZFN0cmluZygpIGNvbnN0OworICAg
IEpTX0VYUE9SVEVEX1NZTUJPTCBTdHJpbmcgY3Jvc3NUaHJlYWRTdHJpbmcoKSBjb25zdDsKICAg
ICAvLyBNYWtlcyBhIGRlZXAgY29weS4gSGVscGZ1bCBvbmx5IGlmIHlvdSBuZWVkIHRvIHVzZSBh
IFN0cmluZyBvbiBhbm90aGVyIHRocmVhZAogICAgIC8vICh1c2UgY3Jvc3NUaHJlYWRTdHJpbmcg
aWYgdGhlIG1ldGhvZCBjYWxsIGRvZXNuJ3QgbmVlZCB0byBiZSB0aHJlYWRzYWZlKS4KICAgICAv
LyBTaW5jZSB0aGUgdW5kZXJseWluZyBTdHJpbmdJbXBsIG9iamVjdHMgYXJlIGltbXV0YWJsZSwg
dGhlcmUncyBubyBvdGhlciByZWFzb24KICAgICAvLyB0byBldmVyIHByZWZlciBjb3B5KCkgb3Zl
ciBwbGFpbiBvbGQgYXNzaWdubWVudC4KLSAgICBTdHJpbmcgdGhyZWFkc2FmZUNvcHkoKSBjb25z
dDsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgU3RyaW5nIHRocmVhZHNhZmVDb3B5KCkgY29uc3Q7
CiAKICAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuICFtX2ltcGw7IH0KLSAgICBBTFdB
WVNfSU5MSU5FIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX2ltcGwgfHwgIW1faW1w
bC0+bGVuZ3RoKCk7IH0KKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgQUxXQVlTX0lOTElORSBib29s
IGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9pbXBsIHx8ICFtX2ltcGwtPmxlbmd0aCgpOyB9
CiAKLSAgICBTdHJpbmdJbXBsKiBpbXBsKCkgY29uc3QgeyByZXR1cm4gbV9pbXBsLmdldCgpOyB9
CisgICAgSlNfRVhQT1JURURfU1lNQk9MIFN0cmluZ0ltcGwqIGltcGwoKSBjb25zdCB7IHJldHVy
biBtX2ltcGwuZ2V0KCk7IH0KIAogI2lmIFBMQVRGT1JNKENGKQogICAgIFN0cmluZyhDRlN0cmlu
Z1JlZik7CkBAIC0yNzEsOCArMjc0LDggQEAKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oV1gpCi0g
ICAgU3RyaW5nKGNvbnN0IHd4U3RyaW5nJik7Ci0gICAgb3BlcmF0b3Igd3hTdHJpbmcoKSBjb25z
dDsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgU3RyaW5nKGNvbnN0IHd4U3RyaW5nJik7CisgICAg
SlNfRVhQT1JURURfU1lNQk9MIG9wZXJhdG9yIHd4U3RyaW5nKCkgY29uc3Q7CiAjZW5kaWYKIAog
I2lmIFBMQVRGT1JNKEhBSUtVKQpAQCAtMjgwLDIyICsyODMsMzAgQEAKICAgICBvcGVyYXRvciBC
U3RyaW5nKCkgY29uc3Q7CiAjZW5kaWYKIAotICAgIFZlY3RvcjxjaGFyPiBhc2NpaSgpIGNvbnN0
OworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBWZWN0b3I8Y2hhcj4gYXNjaWkoKSBjb25zdDsKIAot
ICAgIENTdHJpbmcgbGF0aW4xKCkgY29uc3Q7Ci0gICAgQ1N0cmluZyB1dGY4KCkgY29uc3Q7Cisg
ICAgSlNfRVhQT1JURURfU1lNQk9MIENTdHJpbmcgbGF0aW4xKCkgY29uc3Q7CisgICAgSlNfRVhQ
T1JURURfU1lNQk9MIENTdHJpbmcgdXRmOCgpIGNvbnN0OwogCi0gICAgc3RhdGljIFN0cmluZyBm
cm9tVVRGOChjb25zdCBjaGFyKiwgc2l6ZV90KTsKLSAgICBzdGF0aWMgU3RyaW5nIGZyb21VVEY4
KGNvbnN0IGNoYXIqKTsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgc3RhdGljIFN0cmluZyBmcm9t
VVRGOChjb25zdCBjaGFyKiwgc2l6ZV90KTsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgc3RhdGlj
IFN0cmluZyBmcm9tVVRGOChjb25zdCBjaGFyKik7CiAKICAgICAvLyBUcmllcyB0byBjb252ZXJ0
IHRoZSBwYXNzZWQgaW4gc3RyaW5nIHRvIFVURi04LCBidXQgd2lsbCBmYWxsIGJhY2sgdG8gTGF0
aW4tMSBpZiB0aGUgc3RyaW5nIGlzIG5vdCB2YWxpZCBVVEYtOC4KLSAgICBzdGF0aWMgU3RyaW5n
IGZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNrKGNvbnN0IGNoYXIqLCBzaXplX3QpOworICAgIEpT
X0VYUE9SVEVEX1NZTUJPTCBzdGF0aWMgU3RyaW5nIGZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNr
KGNvbnN0IGNoYXIqLCBzaXplX3QpOwogICAgIAogICAgIC8vIERldGVybWluZXMgdGhlIHdyaXRp
bmcgZGlyZWN0aW9uIHVzaW5nIHRoZSBVbmljb2RlIEJpZGkgQWxnb3JpdGhtIHJ1bGVzIFAyIGFu
ZCBQMy4KICAgICBXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbiBkZWZhdWx0V3JpdGluZ0RpcmVjdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZGVmYXVsdFdyaXRpbmdEaXJlY3Rp
b24oKSA6IFdURjo6VW5pY29kZTo6TGVmdFRvUmlnaHQ7IH0KIAogICAgIGJvb2wgY29udGFpbnNP
bmx5QVNDSUkoKSBjb25zdCB7IHJldHVybiBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoY2hhcmFjdGVy
cygpLCBsZW5ndGgoKSk7IH0KIAorICAgIC8vIG9wZXJhdG9yPSBuZWVkcyB0byBiZSBleHBsaWNp
dGx5IGRlZmluZWQgdG8gc3BlY2lmeSBkbGwgbGlua2FnZQorICAgIEpTX0VYUE9SVEVEX1NZTUJP
TCBpbmxpbmUgU3RyaW5nJiBvcGVyYXRvcj0oY29uc3QgU3RyaW5nJiBhKSAKKyAgICB7CisgICAg
ICAgIGlmICh0aGlzICE9ICZhKQorICAgICAgICAgICAgbV9pbXBsID0gYS5tX2ltcGw7CisgICAg
ICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgUmVmUHRyPFN0cmluZ0lt
cGw+IG1faW1wbDsKIH07CkBAIC0zMDUsOSArMzE2LDkgQEAKIFFEYXRhU3RyZWFtJiBvcGVyYXRv
cj4+KFFEYXRhU3RyZWFtJiBzdHJlYW0sIFN0cmluZyYgc3RyKTsKICNlbmRpZgogCi1TdHJpbmcg
b3BlcmF0b3IrKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOwotU3RyaW5nIG9wZXJhdG9y
Kyhjb25zdCBTdHJpbmcmLCBjb25zdCBjaGFyKik7Ci1TdHJpbmcgb3BlcmF0b3IrKGNvbnN0IGNo
YXIqLCBjb25zdCBTdHJpbmcmKTsKK0pTX0VYUE9SVEVEX1NZTUJPTCBTdHJpbmcgb3BlcmF0b3Ir
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOworSlNfRVhQT1JURURfU1lNQk9MIFN0cmlu
ZyBvcGVyYXRvcisoY29uc3QgU3RyaW5nJiwgY29uc3QgY2hhciopOworSlNfRVhQT1JURURfU1lN
Qk9MIFN0cmluZyBvcGVyYXRvcisoY29uc3QgY2hhciosIGNvbnN0IFN0cmluZyYpOwogCiBpbmxp
bmUgU3RyaW5nJiBvcGVyYXRvcis9KFN0cmluZyYgYSwgY29uc3QgU3RyaW5nJiBiKSB7IGEuYXBw
ZW5kKGIpOyByZXR1cm4gYTsgfQogCkBAIC0zNTEsNyArMzYyLDcgQEAKICAgICByZXR1cm4gIShv
cmVkICYgMHhGRjgwKTsKIH0KIAotaW50IGNvZGVQb2ludENvbXBhcmUoY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJik7CitKU19FWFBPUlRFRF9TWU1CT0wgaW50IGNvZGVQb2ludENvbXBhcmUo
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7CiAKIGlubGluZSBpbnQgZmluZChjb25zdCBV
Q2hhciogY2hhcmFjdGVycywgc2l6ZV90IGxlbmd0aCwgVUNoYXIgY2hhcmFjdGVyLCBpbnQgc3Rh
cnRQb3NpdGlvbikKIHsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgJKHJl
dmlzaW9uIDYxNTY4KQorKysgSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xNDUsMTEgKzE0NSwxMSBAQAogICAgIH0KIAogcHVibGljOgotICAg
IH5TdHJpbmdJbXBsKCk7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIH5TdHJpbmdJbXBsKCk7CiAK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBjcmVhdGUoY29uc3QgVUNoYXIqLCB1
bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGNyZWF0
ZShjb25zdCBjaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxT
dHJpbmdJbXBsPiBjcmVhdGUoY29uc3QgY2hhciopOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBz
dGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBjcmVhdGUoY29uc3QgVUNoYXIqLCB1bnNpZ25l
ZCBsZW5ndGgpOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0aWMgUGFzc1JlZlB0cjxTdHJp
bmdJbXBsPiBjcmVhdGUoY29uc3QgY2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgSlNfRVhQ
T1JURURfU1lNQk9MIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGNyZWF0ZShjb25zdCBj
aGFyKik7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gY3JlYXRlKGNvbnN0IFVD
aGFyKiwgdW5zaWduZWQgbGVuZ3RoLCBQYXNzUmVmUHRyPFNoYXJlZFVDaGFyPiBzaGFyZWRCdWZm
ZXIpOwogICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gY3Jl
YXRlKFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVk
IGxlbmd0aCkKICAgICB7CkBAIC0xNjMsNyArMTYzLDcgQEAKICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBTdHJpbmdJbXBsKHJlcC0+bV9kYXRhICsgb2Zmc2V0LCBsZW5ndGgsIG93bmVyUmVw
KSk7CiAgICAgfQogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gY3JlYXRlVW5p
bml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgsIFVDaGFyKiYgZGF0YSk7CisgICAgSlNfRVhQT1JU
RURfU1lNQk9MIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGNyZWF0ZVVuaW5pdGlhbGl6
ZWQodW5zaWduZWQgbGVuZ3RoLCBVQ2hhciomIGRhdGEpOwogICAgIHN0YXRpYyBBTFdBWVNfSU5M
SU5FIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25l
ZCBsZW5ndGgsIFVDaGFyKiYgb3V0cHV0KQogICAgIHsKICAgICAgICAgaWYgKCFsZW5ndGgpIHsK
QEAgLTE5NywxMCArMTk3LDEwIEBACiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGVtcHR5KCk7
CiAgICAgfQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkb3B0KFN0cmluZ0J1
ZmZlciYpOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJ
bXBsPiBhZG9wdChTdHJpbmdCdWZmZXImKTsKIAogICAgIFNoYXJlZFVDaGFyKiBzaGFyZWRCdWZm
ZXIoKTsKLSAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fZGF0
YTsgfQorICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBjb25zdCBVQ2hhciogY2hhcmFjdGVycygpIGNv
bnN0IHsgcmV0dXJuIG1fZGF0YTsgfQogCiAgICAgc2l6ZV90IGNvc3QoKQogICAgIHsKQEAgLTI0
Niw3ICsyNDYsNyBAQAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBkZXJlZigpIHsgbV9yZWZDb3Vu
dEFuZEZsYWdzIC09IHNfcmVmQ291bnRJbmNyZW1lbnQ7IGlmICghKG1fcmVmQ291bnRBbmRGbGFn
cyAmIChzX3JlZkNvdW50TWFzayB8IHNfcmVmQ291bnRGbGFnU3RhdGljKSkpIGRlbGV0ZSB0aGlz
OyB9CiAgICAgQUxXQVlTX0lOTElORSBib29sIGhhc09uZVJlZigpIGNvbnN0IHsgcmV0dXJuICht
X3JlZkNvdW50QW5kRmxhZ3MgJiAoc19yZWZDb3VudE1hc2sgfCBzX3JlZkNvdW50RmxhZ1N0YXRp
YykpID09IHNfcmVmQ291bnRJbmNyZW1lbnQ7IH0KIAotICAgIHN0YXRpYyBTdHJpbmdJbXBsKiBl
bXB0eSgpOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0aWMgU3RyaW5nSW1wbCogZW1wdHko
KTsKIAogICAgIHN0YXRpYyB2b2lkIGNvcHlDaGFycyhVQ2hhciogZGVzdGluYXRpb24sIGNvbnN0
IFVDaGFyKiBzb3VyY2UsIHVuc2lnbmVkIG51bUNoYXJhY3RlcnMpCiAgICAgewpAQCAtMjY0LDEy
ICsyNjQsMTIgQEAKICAgICAvLyBTaW5jZSBTdHJpbmdJbXBsIG9iamVjdHMgYXJlIGltbXV0YWJs
ZSwgdGhlcmUncyBubyBvdGhlciByZWFzb24gdG8gbWFrZSBhIGNvcHkuCiAgICAgUGFzc1JlZlB0
cjxTdHJpbmdJbXBsPiB0aHJlYWRzYWZlQ29weSgpIGNvbnN0OwogCi0gICAgUGFzc1JlZlB0cjxT
dHJpbmdJbXBsPiBzdWJzdHJpbmcodW5zaWduZWQgcG9zLCB1bnNpZ25lZCBsZW4gPSBVSU5UX01B
WCk7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gc3Vic3Ry
aW5nKHVuc2lnbmVkIHBvcywgdW5zaWduZWQgbGVuID0gVUlOVF9NQVgpOwogCiAgICAgVUNoYXIg
b3BlcmF0b3JbXSh1bnNpZ25lZCBpKSB7IEFTU0VSVChpIDwgbV9sZW5ndGgpOyByZXR1cm4gbV9k
YXRhW2ldOyB9CiAgICAgVUNoYXIzMiBjaGFyYWN0ZXJTdGFydGluZ0F0KHVuc2lnbmVkKTsKIAot
ICAgIGJvb2wgY29udGFpbnNPbmx5V2hpdGVzcGFjZSgpOworICAgIEpTX0VYUE9SVEVEX1NZTUJP
TCBib29sIGNvbnRhaW5zT25seVdoaXRlc3BhY2UoKTsKIAogICAgIGludCB0b0ludFN0cmljdChi
b29sKiBvayA9IDAsIGludCBiYXNlID0gMTApOwogICAgIHVuc2lnbmVkIHRvVUludFN0cmljdChi
b29sKiBvayA9IDAsIGludCBiYXNlID0gMTApOwpAQCAtMjc3LDcgKzI3Nyw3IEBACiAgICAgdWlu
dDY0X3QgdG9VSW50NjRTdHJpY3QoYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKTsKICAgICBp
bnRwdHJfdCB0b0ludFB0clN0cmljdChib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApOwogCi0g
ICAgaW50IHRvSW50KGJvb2wqIG9rID0gMCk7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQor
ICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBpbnQgdG9JbnQoYm9vbCogb2sgPSAwKTsgLy8gaWdub3Jl
cyB0cmFpbGluZyBnYXJiYWdlCiAgICAgdW5zaWduZWQgdG9VSW50KGJvb2wqIG9rID0gMCk7IC8v
IGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQogICAgIGludDY0X3QgdG9JbnQ2NChib29sKiBvayA9
IDApOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKICAgICB1aW50NjRfdCB0b1VJbnQ2NChi
b29sKiBvayA9IDApOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKQEAgLTI4NiwzNSArMjg2
LDM1IEBACiAgICAgZG91YmxlIHRvRG91YmxlKGJvb2wqIG9rID0gMCk7CiAgICAgZmxvYXQgdG9G
bG9hdChib29sKiBvayA9IDApOwogCi0gICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBsb3dlcigp
OwotICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gdXBwZXIoKTsKLSAgICBQYXNzUmVmUHRyPFN0
cmluZ0ltcGw+IHNlY3VyZShVQ2hhciBhQ2hhcik7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIFBh
c3NSZWZQdHI8U3RyaW5nSW1wbD4gbG93ZXIoKTsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgUGFz
c1JlZlB0cjxTdHJpbmdJbXBsPiB1cHBlcigpOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBQYXNz
UmVmUHRyPFN0cmluZ0ltcGw+IHNlY3VyZShVQ2hhciBhQ2hhcik7CiAgICAgUGFzc1JlZlB0cjxT
dHJpbmdJbXBsPiBmb2xkQ2FzZSgpOwogCiAgICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBzdHJp
cFdoaXRlU3BhY2UoKTsKLSAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHNpbXBsaWZ5V2hpdGVT
cGFjZSgpOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHNp
bXBsaWZ5V2hpdGVTcGFjZSgpOwogCiAgICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZW1vdmVD
aGFyYWN0ZXJzKENoYXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIpOwogCi0gICAgaW50IGZpbmQoY29u
c3QgY2hhciosIGludCBpbmRleCA9IDAsIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IHRydWUpOwotICAg
IGludCBmaW5kKFVDaGFyLCBpbnQgaW5kZXggPSAwKTsKLSAgICBpbnQgZmluZChDaGFyYWN0ZXJN
YXRjaEZ1bmN0aW9uUHRyLCBpbnQgaW5kZXggPSAwKTsKLSAgICBpbnQgZmluZChTdHJpbmdJbXBs
KiwgaW50IGluZGV4LCBib29sIGNhc2VTZW5zaXRpdmUgPSB0cnVlKTsKKyAgICBKU19FWFBPUlRF
RF9TWU1CT0wgaW50IGZpbmQoY29uc3QgY2hhciosIGludCBpbmRleCA9IDAsIGJvb2wgY2FzZVNl
bnNpdGl2ZSA9IHRydWUpOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBpbnQgZmluZChVQ2hhciwg
aW50IGluZGV4ID0gMCk7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIGludCBmaW5kKENoYXJhY3Rl
ck1hdGNoRnVuY3Rpb25QdHIsIGludCBpbmRleCA9IDApOworICAgIEpTX0VYUE9SVEVEX1NZTUJP
TCBpbnQgZmluZChTdHJpbmdJbXBsKiwgaW50IGluZGV4LCBib29sIGNhc2VTZW5zaXRpdmUgPSB0
cnVlKTsKIAotICAgIGludCByZXZlcnNlRmluZChVQ2hhciwgaW50IGluZGV4KTsKLSAgICBpbnQg
cmV2ZXJzZUZpbmQoU3RyaW5nSW1wbCosIGludCBpbmRleCwgYm9vbCBjYXNlU2Vuc2l0aXZlID0g
dHJ1ZSk7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIGludCByZXZlcnNlRmluZChVQ2hhciwgaW50
IGluZGV4KTsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgaW50IHJldmVyc2VGaW5kKFN0cmluZ0lt
cGwqLCBpbnQgaW5kZXgsIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IHRydWUpOwogICAgIAogICAgIGJv
b2wgc3RhcnRzV2l0aChTdHJpbmdJbXBsKiBzdHIsIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IHRydWUp
IHsgcmV0dXJuIHJldmVyc2VGaW5kKHN0ciwgMCwgY2FzZVNlbnNpdGl2ZSkgPT0gMDsgfQotICAg
IGJvb2wgZW5kc1dpdGgoU3RyaW5nSW1wbCosIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IHRydWUpOwor
ICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBib29sIGVuZHNXaXRoKFN0cmluZ0ltcGwqLCBib29sIGNh
c2VTZW5zaXRpdmUgPSB0cnVlKTsKIAotICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwbGFj
ZShVQ2hhciwgVUNoYXIpOwotICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwbGFjZShVQ2hh
ciwgU3RyaW5nSW1wbCopOwotICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwbGFjZShTdHJp
bmdJbXBsKiwgU3RyaW5nSW1wbCopOwotICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwbGFj
ZSh1bnNpZ25lZCBpbmRleCwgdW5zaWduZWQgbGVuLCBTdHJpbmdJbXBsKik7CisgICAgSlNfRVhQ
T1JURURfU1lNQk9MIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwbGFjZShVQ2hhciwgVUNoYXIp
OworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJlcGxhY2Uo
VUNoYXIsIFN0cmluZ0ltcGwqKTsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgUGFzc1JlZlB0cjxT
dHJpbmdJbXBsPiByZXBsYWNlKFN0cmluZ0ltcGwqLCBTdHJpbmdJbXBsKik7CisgICAgSlNfRVhQ
T1JURURfU1lNQk9MIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwbGFjZSh1bnNpZ25lZCBpbmRl
eCwgdW5zaWduZWQgbGVuLCBTdHJpbmdJbXBsKik7CiAKICAgICBWZWN0b3I8Y2hhcj4gYXNjaWko
KTsKIAotICAgIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIGRlZmF1bHRXcml0aW5nRGlyZWN0aW9u
KCk7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIGRlZmF1
bHRXcml0aW5nRGlyZWN0aW9uKCk7CiAKICNpZiBQTEFURk9STShDRikKICAgICBDRlN0cmluZ1Jl
ZiBjcmVhdGVDRlN0cmluZygpOwpAQCAtMzI3LDcgKzMyNyw3IEBACiAgICAgLy8gVGhpcyBudW1i
ZXIgbXVzdCBiZSBhdCBsZWFzdCAyIHRvIGF2b2lkIHNoYXJpbmcgZW1wdHksIG51bGwgYXMgd2Vs
bCBhcyAxIGNoYXJhY3RlciBzdHJpbmdzIGZyb20gU21hbGxTdHJpbmdzLgogICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBzX2NvcHlDaGFyc0lubGluZUN1dE9mZiA9IDIwOwogCi0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gY3JlYXRlU3RyaXBwaW5nTnVsbENoYXJhY3RlcnNTbG93
Q2FzZShjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgSlNfRVhQT1JURURfU1lN
Qk9MIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGNyZWF0ZVN0cmlwcGluZ051bGxDaGFy
YWN0ZXJzU2xvd0Nhc2UoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIAogICAg
IEJ1ZmZlck93bmVyc2hpcCBidWZmZXJPd25lcnNoaXAoKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxCdWZmZXJPd25lcnNoaXA+KG1fcmVmQ291bnRBbmRGbGFncyAmIHNfcmVmQ291bnRNYXNr
QnVmZmVyT3duZXJzaGlwKTsgfQogICAgIGJvb2wgaXNTdGF0aWMoKSBjb25zdCB7IHJldHVybiBt
X3JlZkNvdW50QW5kRmxhZ3MgJiBzX3JlZkNvdW50RmxhZ1N0YXRpYzsgfQpAQCAtMzQwLDE3ICsz
NDAsMTcgQEAKICAgICBtdXRhYmxlIHVuc2lnbmVkIG1faGFzaDsKIH07CiAKLWJvb2wgZXF1YWwo
Y29uc3QgU3RyaW5nSW1wbCosIGNvbnN0IFN0cmluZ0ltcGwqKTsKLWJvb2wgZXF1YWwoY29uc3Qg
U3RyaW5nSW1wbCosIGNvbnN0IGNoYXIqKTsKK0pTX0VYUE9SVEVEX1NZTUJPTCBib29sIGVxdWFs
KGNvbnN0IFN0cmluZ0ltcGwqLCBjb25zdCBTdHJpbmdJbXBsKik7CitKU19FWFBPUlRFRF9TWU1C
T0wgYm9vbCBlcXVhbChjb25zdCBTdHJpbmdJbXBsKiwgY29uc3QgY2hhciopOwogaW5saW5lIGJv
b2wgZXF1YWwoY29uc3QgY2hhciogYSwgU3RyaW5nSW1wbCogYikgeyByZXR1cm4gZXF1YWwoYiwg
YSk7IH0KIAotYm9vbCBlcXVhbElnbm9yaW5nQ2FzZShTdHJpbmdJbXBsKiwgU3RyaW5nSW1wbCop
OwotYm9vbCBlcXVhbElnbm9yaW5nQ2FzZShTdHJpbmdJbXBsKiwgY29uc3QgY2hhciopOworSlNf
RVhQT1JURURfU1lNQk9MIGJvb2wgZXF1YWxJZ25vcmluZ0Nhc2UoU3RyaW5nSW1wbCosIFN0cmlu
Z0ltcGwqKTsKK0pTX0VYUE9SVEVEX1NZTUJPTCBib29sIGVxdWFsSWdub3JpbmdDYXNlKFN0cmlu
Z0ltcGwqLCBjb25zdCBjaGFyKik7CiBpbmxpbmUgYm9vbCBlcXVhbElnbm9yaW5nQ2FzZShjb25z
dCBjaGFyKiBhLCBTdHJpbmdJbXBsKiBiKSB7IHJldHVybiBlcXVhbElnbm9yaW5nQ2FzZShiLCBh
KTsgfQotYm9vbCBlcXVhbElnbm9yaW5nQ2FzZShjb25zdCBVQ2hhciogYSwgY29uc3QgY2hhciog
YiwgdW5zaWduZWQgbGVuZ3RoKTsKK0pTX0VYUE9SVEVEX1NZTUJPTCBib29sIGVxdWFsSWdub3Jp
bmdDYXNlKGNvbnN0IFVDaGFyKiBhLCBjb25zdCBjaGFyKiBiLCB1bnNpZ25lZCBsZW5ndGgpOwog
aW5saW5lIGJvb2wgZXF1YWxJZ25vcmluZ0Nhc2UoY29uc3QgY2hhciogYSwgY29uc3QgVUNoYXIq
IGIsIHVuc2lnbmVkIGxlbmd0aCkgeyByZXR1cm4gZXF1YWxJZ25vcmluZ0Nhc2UoYiwgYSwgbGVu
Z3RoKTsgfQogCi1ib29sIGVxdWFsSWdub3JpbmdOdWxsaXR5KFN0cmluZ0ltcGwqLCBTdHJpbmdJ
bXBsKik7CitKU19FWFBPUlRFRF9TWU1CT0wgYm9vbCBlcXVhbElnbm9yaW5nTnVsbGl0eShTdHJp
bmdJbXBsKiwgU3RyaW5nSW1wbCopOwogCiBpbnQgY29kZVBvaW50Q29tcGFyZShjb25zdCBTdHJp
bmdJbXBsKiwgY29uc3QgU3RyaW5nSW1wbCopOwogCkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYv
Qnl0ZUFycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL0J5dGVBcnJheS5o
CShyZXZpc2lvbiA2MTU2OCkKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9CeXRlQXJyYXkuaAkod29y
a2luZyBjb3B5KQpAQCAtNzgsNyArNzgsNyBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAK
LSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBjcmVhdGUoc2l6ZV90IHNpemUp
OworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgc3RhdGljIFBhc3NSZWZQdHI8Qnl0ZUFycmF5
PiBjcmVhdGUoc2l6ZV90IHNpemUpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgQnl0ZUFycmF5
KHNpemVfdCBzaXplKQpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmcuaAkocmV2aXNpb24gNjE1Njgp
CisrKyBKYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTg0
LDI2ICs4NCwyNiBAQAogLy8gVGhpcyBmdW5jdGlvbiBtdXN0IGJlIGNhbGxlZCBmcm9tIHRoZSBt
YWluIHRocmVhZC4gSXQgaXMgc2FmZSB0byBjYWxsIGl0IHJlcGVhdGVkbHkuCiAvLyBEYXJ3aW4g
aXMgYW4gZXhjZXB0aW9uIHRvIHRoaXMgcnVsZTogaXQgaXMgT0sgdG8gY2FsbCBpdCBmcm9tIGFu
eSB0aHJlYWQsIHRoZSBvbmx5IAogLy8gcmVxdWlyZW1lbnQgaXMgdGhhdCB0aGUgY2FsbHMgYXJl
IG5vdCByZWVudHJhbnQuCi12b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKTsKK0pTX0VYUE9SVEVE
X1NZTUJPTCB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKTsKIAogLy8gUmV0dXJucyAwIGlmIHRo
cmVhZCBjcmVhdGlvbiBmYWlsZWQuCiAvLyBUaGUgdGhyZWFkIG5hbWUgbXVzdCBiZSBhIGxpdGVy
YWwgc2luY2Ugb24gc29tZSBwbGF0Zm9ybXMgaXQncyBwYXNzZWQgaW4gdG8gdGhlIHRocmVhZC4K
LVRocmVhZElkZW50aWZpZXIgY3JlYXRlVGhyZWFkKFRocmVhZEZ1bmN0aW9uLCB2b2lkKiwgY29u
c3QgY2hhciogdGhyZWFkTmFtZSk7CitKU19FWFBPUlRFRF9TWU1CT0wgVGhyZWFkSWRlbnRpZmll
ciBjcmVhdGVUaHJlYWQoVGhyZWFkRnVuY3Rpb24sIHZvaWQqLCBjb25zdCBjaGFyKiB0aHJlYWRO
YW1lKTsKIAogLy8gSW50ZXJuYWwgcGxhdGZvcm0tc3BlY2lmaWMgY3JlYXRlVGhyZWFkIGltcGxl
bWVudGF0aW9uLgotVGhyZWFkSWRlbnRpZmllciBjcmVhdGVUaHJlYWRJbnRlcm5hbChUaHJlYWRG
dW5jdGlvbiwgdm9pZCosIGNvbnN0IGNoYXIqIHRocmVhZE5hbWUpOworSlNfRVhQT1JURURfU1lN
Qk9MIFRocmVhZElkZW50aWZpZXIgY3JlYXRlVGhyZWFkSW50ZXJuYWwoVGhyZWFkRnVuY3Rpb24s
IHZvaWQqLCBjb25zdCBjaGFyKiB0aHJlYWROYW1lKTsKIAogLy8gQ2FsbGVkIGluIHRoZSB0aHJl
YWQgZHVyaW5nIGluaXRpYWxpemF0aW9uLgogLy8gSGVscGZ1bCBmb3IgcGxhdGZvcm1zIHdoZXJl
IHRoZSB0aHJlYWQgbmFtZSBtdXN0IGJlIHNldCBmcm9tIHdpdGhpbiB0aGUgdGhyZWFkLgogdm9p
ZCBpbml0aWFsaXplQ3VycmVudFRocmVhZEludGVybmFsKGNvbnN0IGNoYXIqIHRocmVhZE5hbWUp
OwogCi1UaHJlYWRJZGVudGlmaWVyIGN1cnJlbnRUaHJlYWQoKTsKLWludCB3YWl0Rm9yVGhyZWFk
Q29tcGxldGlvbihUaHJlYWRJZGVudGlmaWVyLCB2b2lkKiopOwotdm9pZCBkZXRhY2hUaHJlYWQo
VGhyZWFkSWRlbnRpZmllcik7CitKU19FWFBPUlRFRF9TWU1CT0wgVGhyZWFkSWRlbnRpZmllciBj
dXJyZW50VGhyZWFkKCk7CitKU19FWFBPUlRFRF9TWU1CT0wgaW50IHdhaXRGb3JUaHJlYWRDb21w
bGV0aW9uKFRocmVhZElkZW50aWZpZXIsIHZvaWQqKik7CitKU19FWFBPUlRFRF9TWU1CT0wgdm9p
ZCBkZXRhY2hUaHJlYWQoVGhyZWFkSWRlbnRpZmllcik7CiAKIAotdm9pZCBsb2NrQXRvbWljYWxs
eUluaXRpYWxpemVkU3RhdGljTXV0ZXgoKTsKLXZvaWQgdW5sb2NrQXRvbWljYWxseUluaXRpYWxp
emVkU3RhdGljTXV0ZXgoKTsKK0pTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIGxvY2tBdG9taWNhbGx5
SW5pdGlhbGl6ZWRTdGF0aWNNdXRleCgpOworSlNfRVhQT1JURURfU1lNQk9MIHZvaWQgdW5sb2Nr
QXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljTXV0ZXgoKTsKIAogfSAvLyBuYW1lc3BhY2UgV1RG
CiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9NYWluVGhyZWFkLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SmF2YVNjcmlwdENvcmUvd3RmL01haW5UaHJlYWQuaAkocmV2aXNpb24gNjE1NjgpCisrKyBKYXZh
U2NyaXB0Q29yZS93dGYvTWFpblRocmVhZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxNSArMzgs
MTUgQEAKIHR5cGVkZWYgdm9pZCBNYWluVGhyZWFkRnVuY3Rpb24odm9pZCopOwogCiAvLyBNdXN0
IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4KLXZvaWQgaW5pdGlhbGl6ZU1haW5UaHJl
YWQoKTsKK0pTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIGluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAK
LXZvaWQgY2FsbE9uTWFpblRocmVhZChNYWluVGhyZWFkRnVuY3Rpb24qLCB2b2lkKiBjb250ZXh0
KTsKK0pTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIGNhbGxPbk1haW5UaHJlYWQoTWFpblRocmVhZEZ1
bmN0aW9uKiwgdm9pZCogY29udGV4dCk7CiB2b2lkIGNhbGxPbk1haW5UaHJlYWRBbmRXYWl0KE1h
aW5UaHJlYWRGdW5jdGlvbiosIHZvaWQqIGNvbnRleHQpOwogdm9pZCBjYW5jZWxDYWxsT25NYWlu
VGhyZWFkKE1haW5UaHJlYWRGdW5jdGlvbiosIHZvaWQqIGNvbnRleHQpOwogCi12b2lkIHNldE1h
aW5UaHJlYWRDYWxsYmFja3NQYXVzZWQoYm9vbCBwYXVzZWQpOworSlNfRVhQT1JURURfU1lNQk9M
IHZvaWQgc2V0TWFpblRocmVhZENhbGxiYWNrc1BhdXNlZChib29sIHBhdXNlZCk7CiAKLWJvb2wg
aXNNYWluVGhyZWFkKCk7CitKU19FWFBPUlRFRF9TWU1CT0wgYm9vbCBpc01haW5UaHJlYWQoKTsK
IAogLy8gTk9URTogdGhlc2UgZnVuY3Rpb25zIGFyZSBpbnRlcm5hbCB0byB0aGUgY2FsbE9uTWFp
blRocmVhZCBpbXBsZW1lbnRhdGlvbi4KIHZvaWQgaW5pdGlhbGl6ZU1haW5UaHJlYWRQbGF0Zm9y
bSgpOwpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL0Rpc2FsbG93Q1R5cGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvRGlzYWxsb3dDVHlwZS5oCShyZXZpc2lvbiA2MTU2OCkK
KysrIEphdmFTY3JpcHRDb3JlL3d0Zi9EaXNhbGxvd0NUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI5LDEyICsyOSwxMyBAQAogI2lmbmRlZiBXVEZfRGlzYWxsb3dDVHlwZV9oCiAjZGVmaW5lIFdU
Rl9EaXNhbGxvd0NUeXBlX2gKIAotLy8gVGhlIGJlaGF2aW9yIG9mIG1hbnkgb2YgdGhlIGZ1bmN0
aW9ucyBpbiB0aGUgPGN0eXBlLmg+IGhlYWRlciBpcyBkZXBlbmRlbnQKLS8vIG9uIHRoZSBjdXJy
ZW50IGxvY2FsZS4gQnV0IGFsbW9zdCBhbGwgdXNlcyBvZiB0aGVzZSBmdW5jdGlvbnMgYXJlIGZv
cgotLy8gbG9jYWxlLWluZGVwZW5kZW50LCBBU0NJSS1zcGVjaWZpYyBwdXJwb3Nlcy4gSW4gV2Vi
S2l0IGNvZGUgd2UgdXNlIG91ciBvd24KLS8vIEFTQ0lJLXNwZWNpZmljIGZ1bmN0aW9ucyBpbnN0
ZWFkLiBUaGlzIGhlYWRlciBtYWtlcyBzdXJlIHdlIGdldCBhIGNvbXBpbGUtdGltZQotLy8gZXJy
b3IgaWYgd2UgdXNlIG9uZSBvZiB0aGUgPGN0eXBlLmg+IGZ1bmN0aW9ucyBieSBhY2NpZGVudC4K
LQorLyogCisgKiBUaGUgYmVoYXZpb3Igb2YgbWFueSBvZiB0aGUgZnVuY3Rpb25zIGluIHRoZSA8
Y3R5cGUuaD4gaGVhZGVyIGlzIGRlcGVuZGVudAorICogb24gdGhlIGN1cnJlbnQgbG9jYWxlLiBC
dXQgYWxtb3N0IGFsbCB1c2VzIG9mIHRoZXNlIGZ1bmN0aW9ucyBhcmUgZm9yCisgKiBsb2NhbGUt
aW5kZXBlbmRlbnQsIEFTQ0lJLXNwZWNpZmljIHB1cnBvc2VzLiBJbiBXZWJLaXQgY29kZSB3ZSB1
c2Ugb3VyIG93bgorICogQVNDSUktc3BlY2lmaWMgZnVuY3Rpb25zIGluc3RlYWQuIFRoaXMgaGVh
ZGVyIG1ha2VzIHN1cmUgd2UgZ2V0IGEgY29tcGlsZS10aW1lCisgKiBlcnJvciBpZiB3ZSB1c2Ug
b25lIG9mIHRoZSA8Y3R5cGUuaD4gZnVuY3Rpb25zIGJ5IGFjY2lkZW50LgorICovCiAjaW5jbHVk
ZSA8Y3R5cGUuaD4KIAogI3VuZGVmIGlzYWxudW0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9G
YXN0TWFsbG9jLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL0Zhc3RNYWxsb2Mu
aAkocmV2aXNpb24gNjE1NjgpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvRmFzdE1hbGxvYy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yOCwxNTMgKzI4LDE1MyBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAot
ICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyBjYWxsIENSQVNIKCkgaWYgYW4gYWxsb2NhdGlvbiBmYWls
cy4KLSAgICB2b2lkKiBmYXN0TWFsbG9jKHNpemVfdCk7Ci0gICAgdm9pZCogZmFzdFplcm9lZE1h
bGxvYyhzaXplX3QpOwotICAgIHZvaWQqIGZhc3RDYWxsb2Moc2l6ZV90IG51bUVsZW1lbnRzLCBz
aXplX3QgZWxlbWVudFNpemUpOwotICAgIHZvaWQqIGZhc3RSZWFsbG9jKHZvaWQqLCBzaXplX3Qp
OwotICAgIGNoYXIqIGZhc3RTdHJEdXAoY29uc3QgY2hhciopOwotICAgIHNpemVfdCBmYXN0TWFs
bG9jU2l6ZShjb25zdCB2b2lkKik7CisvLyBUaGVzZSBmdW5jdGlvbnMgY2FsbCBDUkFTSCgpIGlm
IGFuIGFsbG9jYXRpb24gZmFpbHMuCitKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCogZmFzdE1hbGxv
YyhzaXplX3QpOworSlNfRVhQT1JURURfU1lNQk9MIHZvaWQqIGZhc3RaZXJvZWRNYWxsb2Moc2l6
ZV90KTsKK0pTX0VYUE9SVEVEX1NZTUJPTCB2b2lkKiBmYXN0Q2FsbG9jKHNpemVfdCBudW1FbGVt
ZW50cywgc2l6ZV90IGVsZW1lbnRTaXplKTsKK0pTX0VYUE9SVEVEX1NZTUJPTCB2b2lkKiBmYXN0
UmVhbGxvYyh2b2lkKiwgc2l6ZV90KTsKK0pTX0VYUE9SVEVEX1NZTUJPTCBjaGFyKiBmYXN0U3Ry
RHVwKGNvbnN0IGNoYXIqKTsKK0pTX0VYUE9SVEVEX1NZTUJPTCBzaXplX3QgZmFzdE1hbGxvY1Np
emUoY29uc3Qgdm9pZCopOwogCi0gICAgc3RydWN0IFRyeU1hbGxvY1JldHVyblZhbHVlIHsKLSAg
ICAgICAgVHJ5TWFsbG9jUmV0dXJuVmFsdWUodm9pZCogZGF0YSkKLSAgICAgICAgICAgIDogbV9k
YXRhKGRhdGEpCi0gICAgICAgIHsKLSAgICAgICAgfQotICAgICAgICBUcnlNYWxsb2NSZXR1cm5W
YWx1ZShjb25zdCBUcnlNYWxsb2NSZXR1cm5WYWx1ZSYgc291cmNlKQotICAgICAgICAgICAgOiBt
X2RhdGEoc291cmNlLm1fZGF0YSkKLSAgICAgICAgewotICAgICAgICAgICAgc291cmNlLm1fZGF0
YSA9IDA7Ci0gICAgICAgIH0KLSAgICAgICAgflRyeU1hbGxvY1JldHVyblZhbHVlKCkgeyBBU1NF
UlQoIW1fZGF0YSk7IH0KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGJvb2wgZ2V0VmFs
dWUoVCYgZGF0YSkgV0FSTl9VTlVTRURfUkVUVVJOOwotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gb3BlcmF0b3IgUG9zc2libHlOdWxsPFQ+KCkKLSAgICAgICAgeyAKLSAgICAgICAgICAg
IFQgdmFsdWU7IAotICAgICAgICAgICAgZ2V0VmFsdWUodmFsdWUpOyAKLSAgICAgICAgICAgIHJl
dHVybiBQb3NzaWJseU51bGw8VD4odmFsdWUpOwotICAgICAgICB9IAotICAgIHByaXZhdGU6Ci0g
ICAgICAgIG11dGFibGUgdm9pZCogbV9kYXRhOwotICAgIH07Ci0gICAgCi0gICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+IGJvb2wgVHJ5TWFsbG9jUmV0dXJuVmFsdWU6OmdldFZhbHVlKFQmIGRhdGEp
CitzdHJ1Y3QgVHJ5TWFsbG9jUmV0dXJuVmFsdWUgeworICAgIFRyeU1hbGxvY1JldHVyblZhbHVl
KHZvaWQqIGRhdGEpCisgICAgICAgIDogbV9kYXRhKGRhdGEpCiAgICAgewotICAgICAgICB1bmlv
biB1IHsgdm9pZCogZGF0YTsgVCB0YXJnZXQ7IH0gcmVzOwotICAgICAgICByZXMuZGF0YSA9IG1f
ZGF0YTsKLSAgICAgICAgZGF0YSA9IHJlcy50YXJnZXQ7Ci0gICAgICAgIGJvb2wgcmV0dXJuVmFs
dWUgPSAhIW1fZGF0YTsKLSAgICAgICAgbV9kYXRhID0gMDsKLSAgICAgICAgcmV0dXJuIHJldHVy
blZhbHVlOwogICAgIH0KKyAgICBUcnlNYWxsb2NSZXR1cm5WYWx1ZShjb25zdCBUcnlNYWxsb2NS
ZXR1cm5WYWx1ZSYgc291cmNlKQorICAgICAgICA6IG1fZGF0YShzb3VyY2UubV9kYXRhKQorICAg
IHsKKyAgICAgICAgc291cmNlLm1fZGF0YSA9IDA7CisgICAgfQorICAgIH5UcnlNYWxsb2NSZXR1
cm5WYWx1ZSgpIHsgQVNTRVJUKCFtX2RhdGEpOyB9CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
IGJvb2wgZ2V0VmFsdWUoVCYgZGF0YSkgV0FSTl9VTlVTRURfUkVUVVJOOworICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPiBvcGVyYXRvciBQb3NzaWJseU51bGw8VD4oKQorICAgIHsgCisgICAgICAg
IFQgdmFsdWU7IAorICAgICAgICBnZXRWYWx1ZSh2YWx1ZSk7IAorICAgICAgICByZXR1cm4gUG9z
c2libHlOdWxsPFQ+KHZhbHVlKTsKKyAgICB9IAorcHJpdmF0ZToKKyAgICBtdXRhYmxlIHZvaWQq
IG1fZGF0YTsKK307CiAKLSAgICBUcnlNYWxsb2NSZXR1cm5WYWx1ZSB0cnlGYXN0TWFsbG9jKHNp
emVfdCBuKTsKLSAgICBUcnlNYWxsb2NSZXR1cm5WYWx1ZSB0cnlGYXN0WmVyb2VkTWFsbG9jKHNp
emVfdCBuKTsKLSAgICBUcnlNYWxsb2NSZXR1cm5WYWx1ZSB0cnlGYXN0Q2FsbG9jKHNpemVfdCBu
X2VsZW1lbnRzLCBzaXplX3QgZWxlbWVudF9zaXplKTsKLSAgICBUcnlNYWxsb2NSZXR1cm5WYWx1
ZSB0cnlGYXN0UmVhbGxvYyh2b2lkKiBwLCBzaXplX3Qgbik7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4gYm9vbCBUcnlNYWxsb2NSZXR1cm5WYWx1ZTo6Z2V0VmFsdWUoVCYgZGF0YSkKK3sKKyAgICB1
bmlvbiB1IHsgdm9pZCogZGF0YTsgVCB0YXJnZXQ7IH0gcmVzOworICAgIHJlcy5kYXRhID0gbV9k
YXRhOworICAgIGRhdGEgPSByZXMudGFyZ2V0OworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSAhIW1f
ZGF0YTsKKyAgICBtX2RhdGEgPSAwOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KIAotICAg
IHZvaWQgZmFzdEZyZWUodm9pZCopOworSlNfRVhQT1JURURfU1lNQk9MIFRyeU1hbGxvY1JldHVy
blZhbHVlIHRyeUZhc3RNYWxsb2Moc2l6ZV90IG4pOworSlNfRVhQT1JURURfU1lNQk9MIFRyeU1h
bGxvY1JldHVyblZhbHVlIHRyeUZhc3RaZXJvZWRNYWxsb2Moc2l6ZV90IG4pOworSlNfRVhQT1JU
RURfU1lNQk9MIFRyeU1hbGxvY1JldHVyblZhbHVlIHRyeUZhc3RDYWxsb2Moc2l6ZV90IG5fZWxl
bWVudHMsIHNpemVfdCBlbGVtZW50X3NpemUpOworSlNfRVhQT1JURURfU1lNQk9MIFRyeU1hbGxv
Y1JldHVyblZhbHVlIHRyeUZhc3RSZWFsbG9jKHZvaWQqIHAsIHNpemVfdCBuKTsKIAorSlNfRVhQ
T1JURURfU1lNQk9MIHZvaWQgZmFzdEZyZWUodm9pZCopOworCiAjaWZuZGVmIE5ERUJVRyAgICAK
LSAgICB2b2lkIGZhc3RNYWxsb2NGb3JiaWQoKTsKLSAgICB2b2lkIGZhc3RNYWxsb2NBbGxvdygp
Owordm9pZCBmYXN0TWFsbG9jRm9yYmlkKCk7Cit2b2lkIGZhc3RNYWxsb2NBbGxvdygpOwogI2Vu
ZGlmCiAKLSAgICB2b2lkIHJlbGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9yeSgpOwotICAgIAotICAg
IHN0cnVjdCBGYXN0TWFsbG9jU3RhdGlzdGljcyB7Ci0gICAgICAgIHNpemVfdCByZXNlcnZlZFZN
Qnl0ZXM7Ci0gICAgICAgIHNpemVfdCBjb21taXR0ZWRWTUJ5dGVzOwotICAgICAgICBzaXplX3Qg
ZnJlZUxpc3RCeXRlczsKLSAgICB9OwotICAgIEZhc3RNYWxsb2NTdGF0aXN0aWNzIGZhc3RNYWxs
b2NTdGF0aXN0aWNzKCk7Cit2b2lkIHJlbGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9yeSgpOwogCi0g
ICAgLy8gVGhpcyBkZWZpbmVzIGEgdHlwZSB3aGljaCBob2xkcyBhbiB1bnNpZ25lZCBpbnRlZ2Vy
IGFuZCBpcyB0aGUgc2FtZQotICAgIC8vIHNpemUgYXMgdGhlIG1pbmltYWxseSBhbGlnbmVkIG1l
bW9yeSBhbGxvY2F0aW9uLgotICAgIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIEFsbG9jQWxp
Z25tZW50SW50ZWdlcjsKK3N0cnVjdCBGYXN0TWFsbG9jU3RhdGlzdGljcyB7CisgICAgc2l6ZV90
IHJlc2VydmVkVk1CeXRlczsKKyAgICBzaXplX3QgY29tbWl0dGVkVk1CeXRlczsKKyAgICBzaXpl
X3QgZnJlZUxpc3RCeXRlczsKK307CitGYXN0TWFsbG9jU3RhdGlzdGljcyBmYXN0TWFsbG9jU3Rh
dGlzdGljcygpOwogCi0gICAgbmFtZXNwYWNlIEludGVybmFsIHsKLSAgICAgICAgZW51bSBBbGxv
Y1R5cGUgeyAgICAgICAgICAgICAgICAgICAgLy8gU3RhcnQgd2l0aCBhbiB1bnVzdWFsIG51bWJl
ciBpbnN0ZWFkIG9mIHplcm8sIGJlY2F1c2UgemVybyBpcyBjb21tb24uCi0gICAgICAgICAgICBB
bGxvY1R5cGVNYWxsb2MgPSAweDM3NWQ2NzUwLCAgIC8vIEVuY29tcGFzc2VzIGZhc3RNYWxsb2Ms
IGZhc3RaZXJvZWRNYWxsb2MsIGZhc3RDYWxsb2MsIGZhc3RSZWFsbG9jLgotICAgICAgICAgICAg
QWxsb2NUeXBlQ2xhc3NOZXcsICAgICAgICAgICAgICAvLyBFbmNvbXBhc3NlcyBjbGFzcyBvcGVy
YXRvciBuZXcgZnJvbSBGYXN0QWxsb2NCYXNlLgotICAgICAgICAgICAgQWxsb2NUeXBlQ2xhc3NO
ZXdBcnJheSwgICAgICAgICAvLyBFbmNvbXBhc3NlcyBjbGFzcyBvcGVyYXRvciBuZXdbXSBmcm9t
IEZhc3RBbGxvY0Jhc2UuCi0gICAgICAgICAgICBBbGxvY1R5cGVGYXN0TmV3LCAgICAgICAgICAg
ICAgIC8vIEVuY29tcGFzc2VzIGZhc3ROZXcuCi0gICAgICAgICAgICBBbGxvY1R5cGVGYXN0TmV3
QXJyYXksICAgICAgICAgIC8vIEVuY29tcGFzc2VzIGZhc3ROZXdBcnJheS4KLSAgICAgICAgICAg
IEFsbG9jVHlwZU5ldywgICAgICAgICAgICAgICAgICAgLy8gRW5jb21wYXNzZXMgZ2xvYmFsIG9w
ZXJhdG9yIG5ldy4KLSAgICAgICAgICAgIEFsbG9jVHlwZU5ld0FycmF5ICAgICAgICAgICAgICAg
Ly8gRW5jb21wYXNzZXMgZ2xvYmFsIG9wZXJhdG9yIG5ld1tdLgotICAgICAgICB9OwotICAgIH0K
Ky8vIFRoaXMgZGVmaW5lcyBhIHR5cGUgd2hpY2ggaG9sZHMgYW4gdW5zaWduZWQgaW50ZWdlciBh
bmQgaXMgdGhlIHNhbWUKKy8vIHNpemUgYXMgdGhlIG1pbmltYWxseSBhbGlnbmVkIG1lbW9yeSBh
bGxvY2F0aW9uLgordHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgQWxsb2NBbGlnbm1lbnRJbnRl
Z2VyOwogCituYW1lc3BhY2UgSW50ZXJuYWwgeworZW51bSBBbGxvY1R5cGUgeyAgICAgICAgICAg
ICAgICAgICAgLy8gU3RhcnQgd2l0aCBhbiB1bnVzdWFsIG51bWJlciBpbnN0ZWFkIG9mIHplcm8s
IGJlY2F1c2UgemVybyBpcyBjb21tb24uCisgICAgQWxsb2NUeXBlTWFsbG9jID0gMHgzNzVkNjc1
MCwgICAvLyBFbmNvbXBhc3NlcyBmYXN0TWFsbG9jLCBmYXN0WmVyb2VkTWFsbG9jLCBmYXN0Q2Fs
bG9jLCBmYXN0UmVhbGxvYy4KKyAgICBBbGxvY1R5cGVDbGFzc05ldywgICAgICAgICAgICAgIC8v
IEVuY29tcGFzc2VzIGNsYXNzIG9wZXJhdG9yIG5ldyBmcm9tIEZhc3RBbGxvY0Jhc2UuCisgICAg
QWxsb2NUeXBlQ2xhc3NOZXdBcnJheSwgICAgICAgICAvLyBFbmNvbXBhc3NlcyBjbGFzcyBvcGVy
YXRvciBuZXdbXSBmcm9tIEZhc3RBbGxvY0Jhc2UuCisgICAgQWxsb2NUeXBlRmFzdE5ldywgICAg
ICAgICAgICAgICAvLyBFbmNvbXBhc3NlcyBmYXN0TmV3LgorICAgIEFsbG9jVHlwZUZhc3ROZXdB
cnJheSwgICAgICAgICAgLy8gRW5jb21wYXNzZXMgZmFzdE5ld0FycmF5LgorICAgIEFsbG9jVHlw
ZU5ldywgICAgICAgICAgICAgICAgICAgLy8gRW5jb21wYXNzZXMgZ2xvYmFsIG9wZXJhdG9yIG5l
dy4KKyAgICBBbGxvY1R5cGVOZXdBcnJheSAgICAgICAgICAgICAgIC8vIEVuY29tcGFzc2VzIGds
b2JhbCBvcGVyYXRvciBuZXdbXS4KK307Cit9CisKICNpZiBFTkFCTEUoRkFTVF9NQUxMT0NfTUFU
Q0hfVkFMSURBVElPTikKIAotICAgIC8vIE1hbGxvYyB2YWxpZGF0aW9uIGlzIGEgc2NoZW1lIHdo
ZXJlYnkgYSB0YWcgaXMgYXR0YWNoZWQgdG8gYW4KLSAgICAvLyBhbGxvY2F0aW9uIHdoaWNoIGlk
ZW50aWZpZXMgaG93IGl0IHdhcyBvcmlnaW5hbGx5IGFsbG9jYXRlZC4KLSAgICAvLyBUaGlzIGFs
bG93cyB1cyB0byB2ZXJpZnkgdGhhdCB0aGUgZnJlZWluZyBvcGVyYXRpb24gbWF0Y2hlcyB0aGUK
LSAgICAvLyBhbGxvY2F0aW9uIG9wZXJhdGlvbi4gSWYgbWVtb3J5IGlzIGFsbG9jYXRlZCB3aXRo
IG9wZXJhdG9yIG5ld1tdCi0gICAgLy8gYnV0IGZyZWVkIHdpdGggZnJlZSBvciBkZWxldGUsIHRo
aXMgc3lzdGVtIHdvdWxkIGRldGVjdCB0aGF0LgotICAgIC8vIEluIHRoZSBpbXBsZW1lbnRhdGlv
biBoZXJlLCB0aGUgdGFnIGlzIGFuIGludGVnZXIgcHJlcGVuZGVkIHRvCi0gICAgLy8gdGhlIGFs
bG9jYXRpb24gbWVtb3J5IHdoaWNoIGlzIGFzc2lnbmVkIG9uZSBvZiB0aGUgQWxsb2NUeXBlCi0g
ICAgLy8gZW51bWVyYXRpb24gdmFsdWVzLiBBbiBhbHRlcm5hdGl2ZSBpbXBsZW1lbnRhdGlvbiBv
ZiB0aGlzCi0gICAgLy8gc2NoZW1lIGNvdWxkIHN0b3JlIHRoZSB0YWcgc29tZXdoZXJlIGVsc2Ug
b3IgaWdub3JlIGl0LgotICAgIC8vIFVzZXJzIG9mIEZhc3RNYWxsb2MgZG9uJ3QgbmVlZCB0byBr
bm93IG9yIGNhcmUgaG93IHRoaXMgdGFnZ2luZwotICAgIC8vIGlzIGltcGxlbWVudGVkLgorLy8g
TWFsbG9jIHZhbGlkYXRpb24gaXMgYSBzY2hlbWUgd2hlcmVieSBhIHRhZyBpcyBhdHRhY2hlZCB0
byBhbgorLy8gYWxsb2NhdGlvbiB3aGljaCBpZGVudGlmaWVzIGhvdyBpdCB3YXMgb3JpZ2luYWxs
eSBhbGxvY2F0ZWQuCisvLyBUaGlzIGFsbG93cyB1cyB0byB2ZXJpZnkgdGhhdCB0aGUgZnJlZWlu
ZyBvcGVyYXRpb24gbWF0Y2hlcyB0aGUKKy8vIGFsbG9jYXRpb24gb3BlcmF0aW9uLiBJZiBtZW1v
cnkgaXMgYWxsb2NhdGVkIHdpdGggb3BlcmF0b3IgbmV3W10KKy8vIGJ1dCBmcmVlZCB3aXRoIGZy
ZWUgb3IgZGVsZXRlLCB0aGlzIHN5c3RlbSB3b3VsZCBkZXRlY3QgdGhhdC4KKy8vIEluIHRoZSBp
bXBsZW1lbnRhdGlvbiBoZXJlLCB0aGUgdGFnIGlzIGFuIGludGVnZXIgcHJlcGVuZGVkIHRvCisv
LyB0aGUgYWxsb2NhdGlvbiBtZW1vcnkgd2hpY2ggaXMgYXNzaWduZWQgb25lIG9mIHRoZSBBbGxv
Y1R5cGUKKy8vIGVudW1lcmF0aW9uIHZhbHVlcy4gQW4gYWx0ZXJuYXRpdmUgaW1wbGVtZW50YXRp
b24gb2YgdGhpcworLy8gc2NoZW1lIGNvdWxkIHN0b3JlIHRoZSB0YWcgc29tZXdoZXJlIGVsc2Ug
b3IgaWdub3JlIGl0LgorLy8gVXNlcnMgb2YgRmFzdE1hbGxvYyBkb24ndCBuZWVkIHRvIGtub3cg
b3IgY2FyZSBob3cgdGhpcyB0YWdnaW5nCisvLyBpcyBpbXBsZW1lbnRlZC4KIAotICAgIG5hbWVz
cGFjZSBJbnRlcm5hbCB7CituYW1lc3BhY2UgSW50ZXJuYWwgewogCi0gICAgICAgIC8vIFJldHVy
biB0aGUgQWxsb2NUeXBlIHRhZyBhc3NvY2lhdGVkIHdpdGggdGhlIGFsbG9jYXRlZCBibG9jayBw
LgotICAgICAgICBpbmxpbmUgQWxsb2NUeXBlIGZhc3RNYWxsb2NNYXRjaFZhbGlkYXRpb25UeXBl
KGNvbnN0IHZvaWQqIHApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IEFsbG9jQWxpZ25t
ZW50SW50ZWdlciogdHlwZSA9IHN0YXRpY19jYXN0PGNvbnN0IEFsbG9jQWxpZ25tZW50SW50ZWdl
cio+KHApIC0gMTsKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxBbGxvY1R5cGU+KCp0
eXBlKTsKLSAgICAgICAgfQorLy8gUmV0dXJuIHRoZSBBbGxvY1R5cGUgdGFnIGFzc29jaWF0ZWQg
d2l0aCB0aGUgYWxsb2NhdGVkIGJsb2NrIHAuCitpbmxpbmUgQWxsb2NUeXBlIGZhc3RNYWxsb2NN
YXRjaFZhbGlkYXRpb25UeXBlKGNvbnN0IHZvaWQqIHApCit7CisgICAgY29uc3QgQWxsb2NBbGln
bm1lbnRJbnRlZ2VyKiB0eXBlID0gc3RhdGljX2Nhc3Q8Y29uc3QgQWxsb2NBbGlnbm1lbnRJbnRl
Z2VyKj4ocCkgLSAxOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxBbGxvY1R5cGU+KCp0eXBlKTsK
K30KIAotICAgICAgICAvLyBSZXR1cm4gdGhlIGFkZHJlc3Mgb2YgdGhlIEFsbG9jVHlwZSB0YWcg
YXNzb2NpYXRlZCB3aXRoIHRoZSBhbGxvY2F0ZWQgYmxvY2sgcC4KLSAgICAgICAgaW5saW5lIEFs
bG9jQWxpZ25tZW50SW50ZWdlciogZmFzdE1hbGxvY01hdGNoVmFsaWRhdGlvblZhbHVlKHZvaWQq
IHApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEFsbG9j
QWxpZ25tZW50SW50ZWdlcio+KHN0YXRpY19jYXN0PGNoYXIqPihwKSAtIHNpemVvZihBbGxvY0Fs
aWdubWVudEludGVnZXIpKTsKLSAgICAgICAgfQorLy8gUmV0dXJuIHRoZSBhZGRyZXNzIG9mIHRo
ZSBBbGxvY1R5cGUgdGFnIGFzc29jaWF0ZWQgd2l0aCB0aGUgYWxsb2NhdGVkIGJsb2NrIHAuCitp
bmxpbmUgQWxsb2NBbGlnbm1lbnRJbnRlZ2VyKiBmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0aW9uVmFs
dWUodm9pZCogcCkKK3sKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxBbGxvY0FsaWdubWVu
dEludGVnZXIqPihzdGF0aWNfY2FzdDxjaGFyKj4ocCkgLSBzaXplb2YoQWxsb2NBbGlnbm1lbnRJ
bnRlZ2VyKSk7Cit9CiAKLSAgICAgICAgLy8gU2V0IHRoZSBBbGxvY1R5cGUgdGFnIHRvIGJlIGFz
c29jaWFnZWQgd2l0aCB0aGUgYWxsb2NhdGVkIGJsb2NrIHAuCi0gICAgICAgIGlubGluZSB2b2lk
IHNldEZhc3RNYWxsb2NNYXRjaFZhbGlkYXRpb25UeXBlKHZvaWQqIHAsIEFsbG9jVHlwZSBhbGxv
Y1R5cGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFsbG9jQWxpZ25tZW50SW50ZWdlciogdHlw
ZSA9IHN0YXRpY19jYXN0PEFsbG9jQWxpZ25tZW50SW50ZWdlcio+KHApIC0gMTsKLSAgICAgICAg
ICAgICp0eXBlID0gc3RhdGljX2Nhc3Q8QWxsb2NBbGlnbm1lbnRJbnRlZ2VyPihhbGxvY1R5cGUp
OwotICAgICAgICB9CisvLyBTZXQgdGhlIEFsbG9jVHlwZSB0YWcgdG8gYmUgYXNzb2NpYWdlZCB3
aXRoIHRoZSBhbGxvY2F0ZWQgYmxvY2sgcC4KK2lubGluZSB2b2lkIHNldEZhc3RNYWxsb2NNYXRj
aFZhbGlkYXRpb25UeXBlKHZvaWQqIHAsIEFsbG9jVHlwZSBhbGxvY1R5cGUpCit7CisgICAgQWxs
b2NBbGlnbm1lbnRJbnRlZ2VyKiB0eXBlID0gc3RhdGljX2Nhc3Q8QWxsb2NBbGlnbm1lbnRJbnRl
Z2VyKj4ocCkgLSAxOworICAgICp0eXBlID0gc3RhdGljX2Nhc3Q8QWxsb2NBbGlnbm1lbnRJbnRl
Z2VyPihhbGxvY1R5cGUpOworfQogCi0gICAgICAgIC8vIEhhbmRsZSBhIGRldGVjdGVkIGFsbG9j
L2ZyZWUgbWlzbWF0Y2guIEJ5IGRlZmF1bHQgdGhpcyBjYWxscyBDUkFTSCgpLgotICAgICAgICB2
b2lkIGZhc3RNYWxsb2NNYXRjaEZhaWxlZCh2b2lkKiBwKTsKKy8vIEhhbmRsZSBhIGRldGVjdGVk
IGFsbG9jL2ZyZWUgbWlzbWF0Y2guIEJ5IGRlZmF1bHQgdGhpcyBjYWxscyBDUkFTSCgpLgordm9p
ZCBmYXN0TWFsbG9jTWF0Y2hGYWlsZWQodm9pZCogcCk7CiAKLSAgICB9IC8vIG5hbWVzcGFjZSBJ
bnRlcm5hbAorfSAvLyBuYW1lc3BhY2UgSW50ZXJuYWwKIAotICAgIC8vIFRoaXMgaXMgYSBoaWdo
ZXIgbGV2ZWwgZnVuY3Rpb24gd2hpY2ggaXMgdXNlZCBieSBGYXN0TWFsbG9jLXVzaW5nIGNvZGUu
Ci0gICAgaW5saW5lIHZvaWQgZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVNYWxsb2Modm9pZCogcCwg
SW50ZXJuYWw6OkFsbG9jVHlwZSBhbGxvY1R5cGUpCi0gICAgewotICAgICAgICBpZiAoIXApCi0g
ICAgICAgICAgICByZXR1cm47CisvLyBUaGlzIGlzIGEgaGlnaGVyIGxldmVsIGZ1bmN0aW9uIHdo
aWNoIGlzIHVzZWQgYnkgRmFzdE1hbGxvYy11c2luZyBjb2RlLgoraW5saW5lIHZvaWQgZmFzdE1h
bGxvY01hdGNoVmFsaWRhdGVNYWxsb2Modm9pZCogcCwgSW50ZXJuYWw6OkFsbG9jVHlwZSBhbGxv
Y1R5cGUpCit7CisgICAgaWYgKCFwKQorICAgICAgICByZXR1cm47CiAKLSAgICAgICAgSW50ZXJu
YWw6OnNldEZhc3RNYWxsb2NNYXRjaFZhbGlkYXRpb25UeXBlKHAsIGFsbG9jVHlwZSk7Ci0gICAg
fQorICAgIEludGVybmFsOjpzZXRGYXN0TWFsbG9jTWF0Y2hWYWxpZGF0aW9uVHlwZShwLCBhbGxv
Y1R5cGUpOworfQogCi0gICAgLy8gVGhpcyBpcyBhIGhpZ2hlciBsZXZlbCBmdW5jdGlvbiB3aGlj
aCBpcyB1c2VkIGJ5IEZhc3RNYWxsb2MtdXNpbmcgY29kZS4KLSAgICBpbmxpbmUgdm9pZCBmYXN0
TWFsbG9jTWF0Y2hWYWxpZGF0ZUZyZWUodm9pZCogcCwgSW50ZXJuYWw6OkFsbG9jVHlwZSBhbGxv
Y1R5cGUpCi0gICAgewotICAgICAgICBpZiAoIXApCi0gICAgICAgICAgICByZXR1cm47CisvLyBU
aGlzIGlzIGEgaGlnaGVyIGxldmVsIGZ1bmN0aW9uIHdoaWNoIGlzIHVzZWQgYnkgRmFzdE1hbGxv
Yy11c2luZyBjb2RlLgoraW5saW5lIHZvaWQgZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVGcmVlKHZv
aWQqIHAsIEludGVybmFsOjpBbGxvY1R5cGUgYWxsb2NUeXBlKQoreworICAgIGlmICghcCkKKyAg
ICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmIChJbnRlcm5hbDo6ZmFzdE1hbGxvY01hdGNoVmFs
aWRhdGlvblR5cGUocCkgIT0gYWxsb2NUeXBlKQotICAgICAgICAgICAgSW50ZXJuYWw6OmZhc3RN
YWxsb2NNYXRjaEZhaWxlZChwKTsKLSAgICAgICAgSW50ZXJuYWw6OnNldEZhc3RNYWxsb2NNYXRj
aFZhbGlkYXRpb25UeXBlKHAsIEludGVybmFsOjpBbGxvY1R5cGVNYWxsb2MpOyAgLy8gU2V0IGl0
IHRvIHRoaXMgc28gdGhhdCBmYXN0RnJlZSB0aGlua3MgaXQncyBPSy4KLSAgICB9CisgICAgaWYg
KEludGVybmFsOjpmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0aW9uVHlwZShwKSAhPSBhbGxvY1R5cGUp
CisgICAgICAgIEludGVybmFsOjpmYXN0TWFsbG9jTWF0Y2hGYWlsZWQocCk7CisgICAgSW50ZXJu
YWw6OnNldEZhc3RNYWxsb2NNYXRjaFZhbGlkYXRpb25UeXBlKHAsIEludGVybmFsOjpBbGxvY1R5
cGVNYWxsb2MpOyAgLy8gU2V0IGl0IHRvIHRoaXMgc28gdGhhdCBmYXN0RnJlZSB0aGlua3MgaXQn
cyBPSy4KK30KIAogI2Vsc2UKIAotICAgIGlubGluZSB2b2lkIGZhc3RNYWxsb2NNYXRjaFZhbGlk
YXRlTWFsbG9jKHZvaWQqLCBJbnRlcm5hbDo6QWxsb2NUeXBlKQotICAgIHsKLSAgICB9Citpbmxp
bmUgdm9pZCBmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZU1hbGxvYyh2b2lkKiwgSW50ZXJuYWw6OkFs
bG9jVHlwZSkKK3sKK30KIAotICAgIGlubGluZSB2b2lkIGZhc3RNYWxsb2NNYXRjaFZhbGlkYXRl
RnJlZSh2b2lkKiwgSW50ZXJuYWw6OkFsbG9jVHlwZSkKLSAgICB7Ci0gICAgfQoraW5saW5lIHZv
aWQgZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVGcmVlKHZvaWQqLCBJbnRlcm5hbDo6QWxsb2NUeXBl
KQoreworfQogCiAjZW5kaWYKIApJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZFNwZWNp
ZmljLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZFNwZWNpZmljLmgJ
KHJldmlzaW9uIDYxNTY4KQorKysgSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZFNwZWNpZmljLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE5OCw4ICsxOTgsOCBAQAogLy8gMikgV2UgZG8gbm90IG5lZWQg
dG8gaG9sZCBtYW55IGluc3RhbmNlcyBvZiBUaHJlYWRTcGVjaWZpYzw+IGRhdGEuIFRoaXMgZml4
ZWQgbnVtYmVyIHNob3VsZCBiZSBmYXIgZW5vdWdoLgogY29uc3QgaW50IGtNYXhUbHNLZXlTaXpl
ID0gMjU2OwogCi1sb25nJiB0bHNLZXlDb3VudCgpOwotRFdPUkQqIHRsc0tleXMoKTsKK0pTX0VY
UE9SVEVEX1NZTUJPTCBsb25nJiB0bHNLZXlDb3VudCgpOworSlNfRVhQT1JURURfU1lNQk9MIERX
T1JEKiB0bHNLZXlzKCk7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBpbmxpbmUgVGhyZWFkU3Bl
Y2lmaWM8VD46OlRocmVhZFNwZWNpZmljKCkKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9XVEZU
aHJlYWREYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL1dURlRocmVhZERh
dGEuaAkocmV2aXNpb24gNjE1NjgpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvV1RGVGhyZWFkRGF0
YS5oCSh3b3JraW5nIGNvcHkpCkBAIC04NCw4ICs4NCw4IEBACiAKIGNsYXNzIFdURlRocmVhZERh
dGEgOiBwdWJsaWMgTm9uY29weWFibGUgewogcHVibGljOgotICAgIFdURlRocmVhZERhdGEoKTsK
LSAgICB+V1RGVGhyZWFkRGF0YSgpOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBXVEZUaHJlYWRE
YXRhKCk7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIH5XVEZUaHJlYWREYXRhKCk7CiAKICAgICBX
ZWJDb3JlOjpBdG9taWNTdHJpbmdUYWJsZSogYXRvbWljU3RyaW5nVGFibGUoKQogICAgIHsKQEAg
LTEyNyw5ICsxMjcsOSBAQAogI2VuZGlmCiAKICNpZiBXVEZUSFJFQUREQVRBX01VTFRJVEhSRUFE
RUQKLSAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSBUaHJlYWRTcGVjaWZpYzxXVEZUaHJlYWREYXRh
Piogc3RhdGljRGF0YTsKKyAgICBzdGF0aWMgSlNfRVhQT1JURURfU1lNQk9MIFRocmVhZFNwZWNp
ZmljPFdURlRocmVhZERhdGE+KiBzdGF0aWNEYXRhOwogI2Vsc2UKLSAgICBzdGF0aWMgSlNfRVhQ
T1JUREFUQSBXVEZUaHJlYWREYXRhKiBzdGF0aWNEYXRhOworICAgIHN0YXRpYyBKU19FWFBPUlRF
RF9TWU1CT0wgV1RGVGhyZWFkRGF0YSogc3RhdGljRGF0YTsKICNlbmRpZgogICAgIGZyaWVuZCBX
VEZUaHJlYWREYXRhJiB3dGZUaHJlYWREYXRhKCk7CiAgICAgZnJpZW5kIGNsYXNzIFdlYkNvcmU6
OkF0b21pY1N0cmluZ1RhYmxlOwpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL0RhdGVNYXRoLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL0RhdGVNYXRoLmgJKHJldmlzaW9uIDYx
NTY4KQorKysgSmF2YVNjcmlwdENvcmUvd3RmL0RhdGVNYXRoLmgJKHdvcmtpbmcgY29weSkKQEAg
LTU0LDcgKzU0LDcgQEAKIGludCBlcXVpdmFsZW50WWVhckZvckRTVChpbnQgeWVhcik7CiAKIC8v
IE5vdCByZWFsbHkgbWF0aCByZWxhdGVkLCBidXQgdGhpcyBpcyBjdXJyZW50bHkgdGhlIG9ubHkg
c2hhcmVkIHBsYWNlIHRvIHB1dCB0aGVzZS4gIAotZG91YmxlIHBhcnNlRGF0ZUZyb21OdWxsVGVy
bWluYXRlZENoYXJhY3RlcnMoY29uc3QgY2hhciogZGF0ZVN0cmluZyk7CitKU19FWFBPUlRFRF9T
WU1CT0wgZG91YmxlIHBhcnNlRGF0ZUZyb21OdWxsVGVybWluYXRlZENoYXJhY3RlcnMoY29uc3Qg
Y2hhciogZGF0ZVN0cmluZyk7CiBkb3VibGUgdGltZUNsaXAoZG91YmxlKTsKIAogaW5saW5lIGRv
dWJsZSBqc0N1cnJlbnRUaW1lKCkKQEAgLTc3LDExICs3NywxMSBAQAogY29uc3QgZG91YmxlIG1z
UGVyTW9udGggPSAyNTkyMDAwMDAwLjA7CiAKIC8vIFJldHVybnMgdGhlIG51bWJlciBvZiBkYXlz
IGZyb20gMTk3MC0wMS0wMSB0byB0aGUgc3BlY2lmaWVkIGRhdGUuCi1kb3VibGUgZGF0ZVRvRGF5
c0Zyb20xOTcwKGludCB5ZWFyLCBpbnQgbW9udGgsIGludCBkYXkpOwotaW50IG1zVG9ZZWFyKGRv
dWJsZSBtcyk7Ci1pbnQgZGF5SW5ZZWFyKGRvdWJsZSBtcywgaW50IHllYXIpOwotaW50IG1vbnRo
RnJvbURheUluWWVhcihpbnQgZGF5SW5ZZWFyLCBib29sIGxlYXBZZWFyKTsKLWludCBkYXlJbk1v
bnRoRnJvbURheUluWWVhcihpbnQgZGF5SW5ZZWFyLCBib29sIGxlYXBZZWFyKTsKK0pTX0VYUE9S
VEVEX1NZTUJPTCBkb3VibGUgZGF0ZVRvRGF5c0Zyb20xOTcwKGludCB5ZWFyLCBpbnQgbW9udGgs
IGludCBkYXkpOworSlNfRVhQT1JURURfU1lNQk9MIGludCBtc1RvWWVhcihkb3VibGUgbXMpOwor
SlNfRVhQT1JURURfU1lNQk9MIGludCBkYXlJblllYXIoZG91YmxlIG1zLCBpbnQgeWVhcik7CitK
U19FWFBPUlRFRF9TWU1CT0wgaW50IG1vbnRoRnJvbURheUluWWVhcihpbnQgZGF5SW5ZZWFyLCBi
b29sIGxlYXBZZWFyKTsKK0pTX0VYUE9SVEVEX1NZTUJPTCBpbnQgZGF5SW5Nb250aEZyb21EYXlJ
blllYXIoaW50IGRheUluWWVhciwgYm9vbCBsZWFwWWVhcik7CiAKIH0gLy8gbmFtZXNwYWNlIFdU
RgogCkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvdW5pY29kZS9Db2xsYXRvci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi91bmljb2RlL0NvbGxhdG9yLmgJKHJldmlzaW9uIDYx
NTY4KQorKysgSmF2YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUvQ29sbGF0b3IuaAkod29ya2luZyBj
b3B5KQpAQCAtMzksMjcgKzM5LDI3IEBACiAKIG5hbWVzcGFjZSBXVEYgewogCi0gICAgY2xhc3Mg
Q29sbGF0b3IgOiBwdWJsaWMgTm9uY29weWFibGUgewotICAgIHB1YmxpYzoKLSAgICAgICAgZW51
bSBSZXN1bHQgeyBFcXVhbCA9IDAsIEdyZWF0ZXIgPSAxLCBMZXNzID0gLTEgfTsKK2NsYXNzIEpT
X0VYUE9SVEVEX1NZTUJPTCBDb2xsYXRvciA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CitwdWJsaWM6
CisgICAgZW51bSBSZXN1bHQgeyBFcXVhbCA9IDAsIEdyZWF0ZXIgPSAxLCBMZXNzID0gLTEgfTsK
IAotICAgICAgICBDb2xsYXRvcihjb25zdCBjaGFyKiBsb2NhbGUpOyAvLyBQYXJzaW5nIGlzIGxl
bmllbnQ7IGUuZy4gbGFuZ3VhZ2UgaWRlbnRpZmllcnMgKHN1Y2ggYXMgImVuLVVTIikgYXJlIGFj
Y2VwdGVkLCB0b28uCi0gICAgICAgIH5Db2xsYXRvcigpOwotICAgICAgICB2b2lkIHNldE9yZGVy
TG93ZXJGaXJzdChib29sKTsKKyAgICBDb2xsYXRvcihjb25zdCBjaGFyKiBsb2NhbGUpOyAvLyBQ
YXJzaW5nIGlzIGxlbmllbnQ7IGUuZy4gbGFuZ3VhZ2UgaWRlbnRpZmllcnMgKHN1Y2ggYXMgImVu
LVVTIikgYXJlIGFjY2VwdGVkLCB0b28uCisgICAgfkNvbGxhdG9yKCk7CisgICAgdm9pZCBzZXRP
cmRlckxvd2VyRmlyc3QoYm9vbCk7CiAKLSAgICAgICAgc3RhdGljIFBhc3NPd25QdHI8Q29sbGF0
b3I+IHVzZXJEZWZhdWx0KCk7CisgICAgc3RhdGljIFBhc3NPd25QdHI8Q29sbGF0b3I+IHVzZXJE
ZWZhdWx0KCk7CiAKLSAgICAgICAgUmVzdWx0IGNvbGxhdGUoY29uc3QgOjpVQ2hhciosIHNpemVf
dCwgY29uc3QgOjpVQ2hhciosIHNpemVfdCkgY29uc3Q7CisgICAgUmVzdWx0IGNvbGxhdGUoY29u
c3QgOjpVQ2hhciosIHNpemVfdCwgY29uc3QgOjpVQ2hhciosIHNpemVfdCkgY29uc3Q7CiAKLSAg
ICBwcml2YXRlOgorcHJpdmF0ZToKICNpZiBVU0UoSUNVX1VOSUNPREUpICYmICFVQ09ORklHX05P
X0NPTExBVElPTgotICAgICAgICB2b2lkIGNyZWF0ZUNvbGxhdG9yKCkgY29uc3Q7Ci0gICAgICAg
IHZvaWQgcmVsZWFzZUNvbGxhdG9yKCk7Ci0gICAgICAgIG11dGFibGUgVUNvbGxhdG9yKiBtX2Nv
bGxhdG9yOworICAgIHZvaWQgY3JlYXRlQ29sbGF0b3IoKSBjb25zdDsKKyAgICB2b2lkIHJlbGVh
c2VDb2xsYXRvcigpOworICAgIG11dGFibGUgVUNvbGxhdG9yKiBtX2NvbGxhdG9yOwogI2VuZGlm
Ci0gICAgICAgIGNoYXIqIG1fbG9jYWxlOwotICAgICAgICBib29sIG1fbG93ZXJGaXJzdDsKLSAg
ICB9OworICAgIGNoYXIqIG1fbG9jYWxlOworICAgIGJvb2wgbV9sb3dlckZpcnN0OworfTsKIH0K
IAogdXNpbmcgV1RGOjpDb2xsYXRvcjsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi91bmljb2Rl
L1VURjguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvdW5pY29kZS9VVEY4LmgJ
KHJldmlzaW9uIDYxNTY4KQorKysgSmF2YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUvVVRGOC5oCSh3
b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBACiAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIqKiBzb3VyY2VTdGFydCwgY29uc3QgY2hhciogc291cmNlRW5kLCAKICAgICAgICAgICAg
ICAgICAgICAgVUNoYXIqKiB0YXJnZXRTdGFydCwgVUNoYXIqIHRhcmdldEVuZCwgYm9vbCBzdHJp
Y3QgPSB0cnVlKTsKIAotICAgIENvbnZlcnNpb25SZXN1bHQgY29udmVydFVURjE2VG9VVEY4KAor
ICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBDb252ZXJzaW9uUmVzdWx0IGNvbnZlcnRVVEYxNlRvVVRG
OCgKICAgICAgICAgICAgICAgICAgICAgY29uc3QgVUNoYXIqKiBzb3VyY2VTdGFydCwgY29uc3Qg
VUNoYXIqIHNvdXJjZUVuZCwgCiAgICAgICAgICAgICAgICAgICAgIGNoYXIqKiB0YXJnZXRTdGFy
dCwgY2hhciogdGFyZ2V0RW5kLCBib29sIHN0cmljdCA9IHRydWUpOwogICB9CkluZGV4OiBKYXZh
U2NyaXB0Q29yZS93dGYvQ3VycmVudFRpbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS93dGYvQ3VycmVudFRpbWUuaAkocmV2aXNpb24gNjE1NjgpCisrKyBKYXZhU2NyaXB0Q29yZS93
dGYvQ3VycmVudFRpbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsMjcgKzM2LDI3IEBACiAKIG5h
bWVzcGFjZSBXVEYgewogCi0gICAgLy8gUmV0dXJucyB0aGUgY3VycmVudCBVVEMgdGltZSBpbiBz
ZWNvbmRzLCBjb3VudGVkIGZyb20gSmFudWFyeSAxLCAxOTcwLgotICAgIC8vIFByZWNpc2lvbiB2
YXJpZXMgZGVwZW5kaW5nIG9uIHBsYXRmb3JtIGJ1dCBpcyB1c3VhbGx5IGFzIGdvb2Qgb3IgYmV0
dGVyIAotICAgIC8vIHRoYW4gYSBtaWxsaXNlY29uZC4KLSAgICBkb3VibGUgY3VycmVudFRpbWUo
KTsKKy8vIFJldHVybnMgdGhlIGN1cnJlbnQgVVRDIHRpbWUgaW4gc2Vjb25kcywgY291bnRlZCBm
cm9tIEphbnVhcnkgMSwgMTk3MC4KKy8vIFByZWNpc2lvbiB2YXJpZXMgZGVwZW5kaW5nIG9uIHBs
YXRmb3JtIGJ1dCBpcyB1c3VhbGx5IGFzIGdvb2Qgb3IgYmV0dGVyIAorLy8gdGhhbiBhIG1pbGxp
c2Vjb25kLgorSlNfRVhQT1JURURfU1lNQk9MIGRvdWJsZSBjdXJyZW50VGltZSgpOwogCi0gICAg
Ly8gU2FtZSB0aGluZywgaW4gbWlsbGlzZWNvbmRzLgotICAgIGlubGluZSBkb3VibGUgY3VycmVu
dFRpbWVNUygpCi0gICAgewotICAgICAgICByZXR1cm4gY3VycmVudFRpbWUoKSAqIDEwMDAuMDsg
Ci0gICAgfQorLy8gU2FtZSB0aGluZywgaW4gbWlsbGlzZWNvbmRzLgoraW5saW5lIGRvdWJsZSBj
dXJyZW50VGltZU1TKCkKK3sKKyAgICByZXR1cm4gY3VycmVudFRpbWUoKSAqIDEwMDAuMDsgCit9
CiAKLSAgICBpbmxpbmUgdm9pZCBnZXRMb2NhbFRpbWUoY29uc3QgdGltZV90KiBsb2NhbFRpbWUs
IHN0cnVjdCB0bSogbG9jYWxUTSkKLSAgICB7Ci0gICAgI2lmIENPTVBJTEVSKE1TVkM3X09SX0xP
V0VSKSB8fCBDT01QSUxFUihNSU5HVykgfHwgT1MoV0lOQ0UpCi0gICAgICAgICpsb2NhbFRNID0g
KmxvY2FsdGltZShsb2NhbFRpbWUpOwotICAgICNlbGlmIENPTVBJTEVSKE1TVkMpCi0gICAgICAg
IGxvY2FsdGltZV9zKGxvY2FsVE0sIGxvY2FsVGltZSk7Ci0gICAgI2Vsc2UKLSAgICAgICAgbG9j
YWx0aW1lX3IobG9jYWxUaW1lLCBsb2NhbFRNKTsKLSAgICAjZW5kaWYKLSAgICB9CitpbmxpbmUg
dm9pZCBnZXRMb2NhbFRpbWUoY29uc3QgdGltZV90KiBsb2NhbFRpbWUsIHN0cnVjdCB0bSogbG9j
YWxUTSkKK3sKKyNpZiBDT01QSUxFUihNU1ZDN19PUl9MT1dFUikgfHwgQ09NUElMRVIoTUlOR1cp
IHx8IE9TKFdJTkNFKQorICAgICpsb2NhbFRNID0gKmxvY2FsdGltZShsb2NhbFRpbWUpOworI2Vs
aWYgQ09NUElMRVIoTVNWQykKKyAgICBsb2NhbHRpbWVfcyhsb2NhbFRNLCBsb2NhbFRpbWUpOwor
I2Vsc2UKKyAgICBsb2NhbHRpbWVfcihsb2NhbFRpbWUsIGxvY2FsVE0pOworI2VuZGlmCit9CiAK
IH0gLy8gbmFtZXNwYWNlIFdURgogCkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvZHRvYS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9kdG9hLmgJKHJldmlzaW9uIDYxNTY4KQor
KysgSmF2YVNjcmlwdENvcmUvd3RmL2R0b2EuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzks
NyBAQAogLy8gZHRvYSgpIGZvciBFQ01BLTI2MiAnVG9TdHJpbmcgQXBwbGllZCB0byB0aGUgTnVt
YmVyIFR5cGUuJwogLy8gVGhlICpyZXN1bHRMZW5ndGggd2lsbCBoYXZlIHRoZSBsZW5ndGggb2Yg
dGhlIHJlc3VsdGFudCBzdHJpbmcgaW4gYnVmZXIuCiAvLyBUaGUgcmVzdWx0YW50IHN0cmluZyBp
c24ndCB0ZXJtaW5hdGVkIGJ5IDAuCi12b2lkIGRvdWJsZVRvU3RyaW5nSW5KYXZhU2NyaXB0Rm9y
bWF0KGRvdWJsZSwgRHRvYUJ1ZmZlciwgdW5zaWduZWQqIHJlc3VsdExlbmd0aCk7CitKU19FWFBP
UlRFRF9TWU1CT0wgdm9pZCBkb3VibGVUb1N0cmluZ0luSmF2YVNjcmlwdEZvcm1hdChkb3VibGUs
IER0b2FCdWZmZXIsIHVuc2lnbmVkKiByZXN1bHRMZW5ndGgpOwogCiB9IC8vIG5hbWVzcGFjZSBX
VEYKIApJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL0Fzc2VydGlvbnMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBKYXZhU2NyaXB0Q29yZS93dGYvQXNzZXJ0aW9ucy5oCShyZXZpc2lvbiA2MTU2OCkKKysrIEph
dmFTY3JpcHRDb3JlL3d0Zi9Bc3NlcnRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNywxMyAr
MTM3LDEzIEBACiAgICAgV1RGTG9nQ2hhbm5lbFN0YXRlIHN0YXRlOwogfSBXVEZMb2dDaGFubmVs
OwogCi12b2lkIFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoY29uc3QgY2hhciogZmlsZSwgaW50
IGxpbmUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uLCBjb25zdCBjaGFyKiBhc3NlcnRpb24pOwotdm9p
ZCBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlV2l0aE1lc3NhZ2UoY29uc3QgY2hhciogZmlsZSwg
aW50IGxpbmUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uLCBjb25zdCBjaGFyKiBhc3NlcnRpb24sIGNv
bnN0IGNoYXIqIGZvcm1hdCwgLi4uKSBXVEZfQVRUUklCVVRFX1BSSU5URig1LCA2KTsKLXZvaWQg
V1RGUmVwb3J0QXJndW1lbnRBc3NlcnRpb25GYWlsdXJlKGNvbnN0IGNoYXIqIGZpbGUsIGludCBs
aW5lLCBjb25zdCBjaGFyKiBmdW5jdGlvbiwgY29uc3QgY2hhciogYXJnTmFtZSwgY29uc3QgY2hh
ciogYXNzZXJ0aW9uKTsKLXZvaWQgV1RGUmVwb3J0RmF0YWxFcnJvcihjb25zdCBjaGFyKiBmaWxl
LCBpbnQgbGluZSwgY29uc3QgY2hhciogZnVuY3Rpb24sIGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4u
KSBXVEZfQVRUUklCVVRFX1BSSU5URig0LCA1KTsKLXZvaWQgV1RGUmVwb3J0RXJyb3IoY29uc3Qg
Y2hhciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uLCBjb25zdCBjaGFyKiBm
b3JtYXQsIC4uLikgV1RGX0FUVFJJQlVURV9QUklOVEYoNCwgNSk7Ci12b2lkIFdURkxvZyhXVEZM
b2dDaGFubmVsKiBjaGFubmVsLCBjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikgV1RGX0FUVFJJQlVU
RV9QUklOVEYoMiwgMyk7Ci12b2lkIFdURkxvZ1ZlcmJvc2UoY29uc3QgY2hhciogZmlsZSwgaW50
IGxpbmUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uLCBXVEZMb2dDaGFubmVsKiBjaGFubmVsLCBjb25z
dCBjaGFyKiBmb3JtYXQsIC4uLikgV1RGX0FUVFJJQlVURV9QUklOVEYoNSwgNik7CitKU19FWFBP
UlRFRF9TWU1CT0wgdm9pZCBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKGNvbnN0IGNoYXIqIGZp
bGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiBmdW5jdGlvbiwgY29uc3QgY2hhciogYXNzZXJ0aW9u
KTsKK0pTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmVXaXRo
TWVzc2FnZShjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciogZnVuY3Rpb24s
IGNvbnN0IGNoYXIqIGFzc2VydGlvbiwgY29uc3QgY2hhciogZm9ybWF0LCAuLi4pIFdURl9BVFRS
SUJVVEVfUFJJTlRGKDUsIDYpOworSlNfRVhQT1JURURfU1lNQk9MIHZvaWQgV1RGUmVwb3J0QXJn
dW1lbnRBc3NlcnRpb25GYWlsdXJlKGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCBj
aGFyKiBmdW5jdGlvbiwgY29uc3QgY2hhciogYXJnTmFtZSwgY29uc3QgY2hhciogYXNzZXJ0aW9u
KTsKK0pTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIFdURlJlcG9ydEZhdGFsRXJyb3IoY29uc3QgY2hh
ciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uLCBjb25zdCBjaGFyKiBmb3Jt
YXQsIC4uLikgV1RGX0FUVFJJQlVURV9QUklOVEYoNCwgNSk7CitKU19FWFBPUlRFRF9TWU1CT0wg
dm9pZCBXVEZSZXBvcnRFcnJvcihjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hh
ciogZnVuY3Rpb24sIGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKSBXVEZfQVRUUklCVVRFX1BSSU5U
Rig0LCA1KTsKK0pTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIFdURkxvZyhXVEZMb2dDaGFubmVsKiBj
aGFubmVsLCBjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikgV1RGX0FUVFJJQlVURV9QUklOVEYoMiwg
Myk7CitKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBXVEZMb2dWZXJib3NlKGNvbnN0IGNoYXIqIGZp
bGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiBmdW5jdGlvbiwgV1RGTG9nQ2hhbm5lbCogY2hhbm5l
bCwgY29uc3QgY2hhciogZm9ybWF0LCAuLi4pIFdURl9BVFRSSUJVVEVfUFJJTlRGKDUsIDYpOwog
CiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRp
bmdQcmltaXRpdmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGlu
Z1ByaW1pdGl2ZXMuaAkocmV2aXNpb24gNjE1NjgpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvVGhy
ZWFkaW5nUHJpbWl0aXZlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsMTIgKzEwMCwxMiBAQAog
ICAgIAogY2xhc3MgTXV0ZXggOiBwdWJsaWMgTm9uY29weWFibGUgewogcHVibGljOgotICAgIE11
dGV4KCk7Ci0gICAgfk11dGV4KCk7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIE11dGV4KCk7Cisg
ICAgSlNfRVhQT1JURURfU1lNQk9MIH5NdXRleCgpOwogCi0gICAgdm9pZCBsb2NrKCk7Ci0gICAg
Ym9vbCB0cnlMb2NrKCk7Ci0gICAgdm9pZCB1bmxvY2soKTsKKyAgICBKU19FWFBPUlRFRF9TWU1C
T0wgdm9pZCBsb2NrKCk7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIGJvb2wgdHJ5TG9jaygpOwor
ICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIHVubG9jaygpOwogCiBwdWJsaWM6CiAgICAgUGxh
dGZvcm1NdXRleCYgaW1wbCgpIHsgcmV0dXJuIG1fbXV0ZXg7IH0KQEAgLTEzNCwxNSArMTM0LDE1
IEBACiAKIGNsYXNzIFRocmVhZENvbmRpdGlvbiA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiBwdWJs
aWM6Ci0gICAgVGhyZWFkQ29uZGl0aW9uKCk7Ci0gICAgflRocmVhZENvbmRpdGlvbigpOworICAg
IEpTX0VYUE9SVEVEX1NZTUJPTCBUaHJlYWRDb25kaXRpb24oKTsKKyAgICBKU19FWFBPUlRFRF9T
WU1CT0wgflRocmVhZENvbmRpdGlvbigpOwogICAgIAotICAgIHZvaWQgd2FpdChNdXRleCYgbXV0
ZXgpOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIHdhaXQoTXV0ZXgmIG11dGV4KTsKICAg
ICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGNvbmRpdGlvbiB3YXMgc2lnbmFsZWQgYmVmb3JlIGFi
c29sdXRlVGltZSwgZmFsc2UgaWYgdGhlIGFic29sdXRlVGltZSB3YXMgcmVhY2hlZCBvciBpcyBp
biB0aGUgcGFzdC4KICAgICAvLyBUaGUgYWJzb2x1dGVUaW1lIGlzIGluIHNlY29uZHMsIHN0YXJ0
aW5nIG9uIEphbnVhcnkgMSwgMTk3MC4gVGhlIHRpbWUgaXMgYXNzdW1lZCB0byB1c2UgdGhlIHNh
bWUgdGltZSB6b25lIGFzIFdURjo6Y3VycmVudFRpbWUoKS4KLSAgICBib29sIHRpbWVkV2FpdChN
dXRleCYsIGRvdWJsZSBhYnNvbHV0ZVRpbWUpOwotICAgIHZvaWQgc2lnbmFsKCk7Ci0gICAgdm9p
ZCBicm9hZGNhc3QoKTsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgYm9vbCB0aW1lZFdhaXQoTXV0
ZXgmLCBkb3VibGUgYWJzb2x1dGVUaW1lKTsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBz
aWduYWwoKTsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBicm9hZGNhc3QoKTsKICAgICAK
IHByaXZhdGU6CiAgICAgUGxhdGZvcm1Db25kaXRpb24gbV9jb25kaXRpb247CkluZGV4OiBKYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgJKHJldmlzaW9uIDYxNTY4KQorKysg
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMTAwLDggKzEwMCw4IEBACiAgICAgICAgIEpTVmFsdWUgZXhlY3V0ZShFdmFsRXhlY3V0YWJs
ZSogZXZhbE5vZGUsIENhbGxGcmFtZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmosIFNjb3BlQ2hh
aW5Ob2RlKiBzY29wZUNoYWluLCBKU1ZhbHVlKiBleGNlcHRpb24pOwogCiAgICAgICAgIEpTVmFs
dWUgcmV0cmlldmVBcmd1bWVudHMoQ2FsbEZyYW1lKiwgSlNGdW5jdGlvbiopIGNvbnN0OwotICAg
ICAgICBKU1ZhbHVlIHJldHJpZXZlQ2FsbGVyKENhbGxGcmFtZSosIEpTRnVuY3Rpb24qKSBjb25z
dDsKLSAgICAgICAgdm9pZCByZXRyaWV2ZUxhc3RDYWxsZXIoQ2FsbEZyYW1lKiwgaW50JiBsaW5l
TnVtYmVyLCBpbnRwdHJfdCYgc291cmNlSUQsIFVTdHJpbmcmIHNvdXJjZVVSTCwgSlNWYWx1ZSYg
ZnVuY3Rpb24pIGNvbnN0OworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgSlNWYWx1ZSByZXRy
aWV2ZUNhbGxlcihDYWxsRnJhbWUqLCBKU0Z1bmN0aW9uKikgY29uc3Q7CisgICAgICAgIEpTX0VY
UE9SVEVEX1NZTUJPTCB2b2lkIHJldHJpZXZlTGFzdENhbGxlcihDYWxsRnJhbWUqLCBpbnQmIGxp
bmVOdW1iZXIsIGludHB0cl90JiBzb3VyY2VJRCwgVVN0cmluZyYgc291cmNlVVJMLCBKU1ZhbHVl
JiBmdW5jdGlvbikgY29uc3Q7CiAgICAgICAgIAogICAgICAgICB2b2lkIGdldEFyZ3VtZW50c0Rh
dGEoQ2FsbEZyYW1lKiwgSlNGdW5jdGlvbiomLCBwdHJkaWZmX3QmIGZpcnN0UGFyYW1ldGVySW5k
ZXgsIFJlZ2lzdGVyKiYgYXJndiwgaW50JiBhcmdjKTsKICAgICAgICAgCkluZGV4OiBKYXZhU2Ny
aXB0Q29yZS9BUEkvdGVzdHMvSlNOb2RlTGlzdC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRD
b3JlL0FQSS90ZXN0cy9KU05vZGVMaXN0LmMJKHJldmlzaW9uIDYxNTY4KQorKysgSmF2YVNjcmlw
dENvcmUvQVBJL3Rlc3RzL0pTTm9kZUxpc3QuYwkod29ya2luZyBjb3B5KQpAQCAtMjMsNiArMjMs
OCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAorI2luY2x1ZGUgImNvbmZpZy5oIgorCiAjaW5j
bHVkZSAiSlNOb2RlLmgiCiAjaW5jbHVkZSAiSlNOb2RlTGlzdC5oIgogI2luY2x1ZGUgIkpTT2Jq
ZWN0UmVmLmgiCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvSlNOb2RlLmMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0pTTm9kZS5jCShyZXZpc2lvbiA2MTU2
OCkKKysrIEphdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9KU05vZGUuYwkod29ya2luZyBjb3B5KQpA
QCAtMjMsNiArMjMsOCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAorI2luY2x1ZGUgImNvbmZp
Zy5oIgorCiAjaW5jbHVkZSAiSlNOb2RlLmgiCiAjaW5jbHVkZSAiSlNOb2RlTGlzdC5oIgogI2lu
Y2x1ZGUgIkpTT2JqZWN0UmVmLmgiCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVz
dGFwaS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMJ
KHJldmlzaW9uIDYxNTY4KQorKysgSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkuYwko
d29ya2luZyBjb3B5KQpAQCAtMjMsNiArMjMsOCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAor
I2luY2x1ZGUgImNvbmZpZy5oIgorCiAjaW5jbHVkZSAiSmF2YVNjcmlwdENvcmUuaCIKICNpbmNs
dWRlICJKU0Jhc2VQcml2YXRlLmgiCiAjaW5jbHVkZSAiSlNDb250ZXh0UmVmUHJpdmF0ZS5oIgpJ
bmRleDogSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL21pbmlkb20uYwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
YXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvbWluaWRvbS5jCShyZXZpc2lvbiA2MTU2OCkKKysrIEph
dmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9taW5pZG9tLmMJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYg
KzI0LDggQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKKyNpbmNsdWRlICJjb25maWcuaCIKKwog
I2luY2x1ZGUgIkpTQ29udGV4dFJlZi5oIgogI2luY2x1ZGUgIkpTTm9kZS5oIgogI2luY2x1ZGUg
IkpTT2JqZWN0UmVmLmgiCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA2MTU2OCkKKysrIEphdmFT
Y3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyNiBAQAorMjAx
MC0wNi0xNyAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgSlNfRVhQT1JU
RURfU1lNQk9MIHRvIGV4cG9ydCBKU0NvcmUgc3ltYm9scyBuZWVkZWQgYnkgb3RoZXIgV2ViS2l0
IGxpYnJhcmllcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTI3NTUxCisKKyAgICAgICAgKiBBUEkvdGVzdHMvSlNOb2RlLmM6CisgICAgICAgICogQVBJ
L3Rlc3RzL0pTTm9kZUxpc3QuYzoKKyAgICAgICAgKiBBUEkvdGVzdHMvbWluaWRvbS5jOgorICAg
ICAgICAqIEFQSS90ZXN0cy90ZXN0YXBpLmM6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmg6CisgICAgICAgICogY29uZmlnLmg6CisgICAgICAgICogZGVidWdnZXIv
RGVidWdnZXIuaDoKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5oOgorICAg
ICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmg6CisgICAgICAgICogcGNyZS9wY3JlLmg6
CisgICAgICAgICogcHJvZmlsZXIvUHJvZmlsZXIuaDoKKyAgICAgICAgKiBydW50aW1lL0FyZ0xp
c3QuaDoKKyAgICAgICAgKiBydW50aW1lL0NhbGxEYXRhLmg6CisgICAgICAgICogcnVudGltZS9D
b2xsZWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQ29sbGVjdG9yLmg6CisgICAgICAgICog
cnVudGltZS9Db2xsZWN0b3JIZWFwSXRlcmF0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL0NvbXBs
ZXRpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0NvbnN0cnVjdERhdGEuaDoKKyAgICAgICAgKiBy
dW50aW1lL0RhdGVJbnN0YW5jZS5oOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3IuaDoKKyAgICAg
ICAgKiBydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0
aW9uQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL0lkZW50aWZpZXIuaDoKKyAgICAg
ICAgKiBydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuaDoKKyAgICAgICAgKiBydW50aW1lL0lu
dGVybmFsRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTQnl0ZUFycmF5Lmg6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAg
ICAgICAgKEpTQzo6SlNDZWxsOjp2cHRyKToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpzZXRWUHRy
KToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjppc1N0cmluZyk6CisgICAgICAgICogcnVudGltZS9K
U0Z1bmN0aW9uLmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbERhdGEuaDoKKyAgICAgICAg
KEpTQzo6SlNHbG9iYWxEYXRhOjopOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OkpTR2xvYmFsT2JqZWN0RGF0YTo6SlNH
bG9iYWxPYmplY3REYXRhKToKKyAgICAgICAgKiBydW50aW1lL0pTTG9jay5oOgorICAgICAgICAo
SlNDOjpKU0xvY2s6Oik6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldE93
blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3QpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0RnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRp
bWUvSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU1N0cmlu
Zy5oOgorICAgICAgICAoSlNDOjpKU1N0cmluZzo6dmFsdWUpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNWYWx1ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oOgorICAgICAg
ICAoSlNDOjpKU1ZhcmlhYmxlT2JqZWN0OjpzeW1ib2xUYWJsZSk6CisgICAgICAgICogcnVudGlt
ZS9KU1dyYXBwZXJPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5oOgorICAgICAg
ICAqIHJ1bnRpbWUvTWFya1N0YWNrLmg6CisgICAgICAgICogcnVudGltZS9PYmplY3RQcm90b3R5
cGUuaDoKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5oOgorICAgICAgICAq
IHJ1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuaDoKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5
U2xvdC5oOgorICAgICAgICAqIHJ1bnRpbWUvUm9wZUltcGwuaDoKKyAgICAgICAgKiBydW50aW1l
L1NtYWxsU3RyaW5ncy5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0Lmg6CisgICAg
ICAgICogcnVudGltZS9TdHJ1Y3R1cmUuaDoKKyAgICAgICAgKiBydW50aW1lL1RpbWVvdXRDaGVj
a2VyLmg6CisgICAgICAgICogcnVudGltZS9VU3RyaW5nLmg6CisgICAgICAgIChKU0M6OlVTdHJp
bmc6OlVTdHJpbmcpOgorICAgICAgICAoSlNDOjpVU3RyaW5nOjppc051bGwpOgorICAgICAgICAo
SlNDOjpVU3RyaW5nOjp+VVN0cmluZyk6CisgICAgICAgIChKU0M6OlVTdHJpbmc6Om9wZXJhdG9y
PSk6CisgICAgICAgICogd3NjcmlwdDoKKyAgICAgICAgKiB3dGYvQXNzZXJ0aW9ucy5oOgorICAg
ICAgICAqIHd0Zi9CeXRlQXJyYXkuaDoKKyAgICAgICAgKiB3dGYvQ3VycmVudFRpbWUuaDoKKyAg
ICAgICAgKFdURjo6Y3VycmVudFRpbWVNUyk6CisgICAgICAgIChXVEY6OmdldExvY2FsVGltZSk6
CisgICAgICAgICogd3RmL0RhdGVNYXRoLmg6CisgICAgICAgICogd3RmL0Zhc3RNYWxsb2MuaDoK
KyAgICAgICAgKFdURjo6VHJ5TWFsbG9jUmV0dXJuVmFsdWU6OlRyeU1hbGxvY1JldHVyblZhbHVl
KToKKyAgICAgICAgKFdURjo6VHJ5TWFsbG9jUmV0dXJuVmFsdWU6On5UcnlNYWxsb2NSZXR1cm5W
YWx1ZSk6CisgICAgICAgIChXVEY6OlRyeU1hbGxvY1JldHVyblZhbHVlOjpvcGVyYXRvciBQb3Nz
aWJseU51bGw8VD4pOgorICAgICAgICAoV1RGOjpUcnlNYWxsb2NSZXR1cm5WYWx1ZTo6Z2V0VmFs
dWUpOgorICAgICAgICAoV1RGOjpJbnRlcm5hbDo6KToKKyAgICAgICAgKFdURjo6SW50ZXJuYWw6
OmZhc3RNYWxsb2NNYXRjaFZhbGlkYXRpb25UeXBlKToKKyAgICAgICAgKFdURjo6SW50ZXJuYWw6
OmZhc3RNYWxsb2NNYXRjaFZhbGlkYXRpb25WYWx1ZSk6CisgICAgICAgIChXVEY6OkludGVybmFs
OjpzZXRGYXN0TWFsbG9jTWF0Y2hWYWxpZGF0aW9uVHlwZSk6CisgICAgICAgIChXVEY6OmZhc3RN
YWxsb2NNYXRjaFZhbGlkYXRlTWFsbG9jKToKKyAgICAgICAgKFdURjo6ZmFzdE1hbGxvY01hdGNo
VmFsaWRhdGVGcmVlKToKKyAgICAgICAgKiB3dGYvTWFpblRocmVhZC5oOgorICAgICAgICAqIHd0
Zi9SYW5kb21OdW1iZXIuaDoKKyAgICAgICAgKiB3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg6
CisgICAgICAgIChXVEY6Oik6CisgICAgICAgICogd3RmL1RocmVhZFNwZWNpZmljLmg6CisgICAg
ICAgICogd3RmL1RocmVhZGluZy5oOgorICAgICAgICAqIHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVz
Lmg6CisgICAgICAgICogd3RmL1dURlRocmVhZERhdGEuaDoKKyAgICAgICAgKiB3dGYvZHRvYS5o
OgorICAgICAgICAqIHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oOgorICAgICAgICAoV2ViQ29yZTo6
QXRvbWljU3RyaW5nOjpBdG9taWNTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6QXRvbWljU3Ry
aW5nOjppc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNT
dHJpbmc6On5BdG9taWNTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6QXRvbWljU3RyaW5nOjpp
bXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkF0b21pY1N0cmluZzo6b3BlcmF0b3I9KToKKyAgICAg
ICAgKiB3dGYvdGV4dC9DU3RyaW5nLmg6CisgICAgICAgIChXVEY6OkNTdHJpbmc6On5DU3RyaW5n
KToKKyAgICAgICAgKFdURjo6Q1N0cmluZzo6ZGF0YSk6CisgICAgICAgICogd3RmL3RleHQvU3Ry
aW5nSW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6U3RyaW5nSW1wbDo6Y2hhcmFjdGVycyk6Cisg
ICAgICAgICogd3RmL3RleHQvU3RyaW5nU3RhdGljcy5jcHA6CisgICAgICAgICogd3RmL3RleHQv
V1RGU3RyaW5nLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHJpbmc6OlN0cmluZyk6CisgICAgICAg
IChXZWJDb3JlOjpTdHJpbmc6On5TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U3RyaW5nOjpp
c0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHJpbmc6OmlzRW1w
dHkpOgorICAgICAgICAoV2ViQ29yZTo6U3RyaW5nOjppbXBsKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0cmluZzo6b3BlcmF0b3I9KToKKyAgICAgICAgKiB3dGYvdW5pY29kZS9Db2xsYXRvci5oOgor
ICAgICAgICAoV1RGOjopOgorICAgICAgICAqIHd0Zi91bmljb2RlL1VURjguaDoKKwogMjAxMC0w
Ni0xOSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEdlb2ZmcmV5IEdhcmVuLgpJbmRleDogSmF2YVNjcmlwdENvcmUvcGNyZS9wY3JlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcGNyZS9wY3JlLmgJKHJldmlzaW9uIDYxNTY4KQor
KysgSmF2YVNjcmlwdENvcmUvcGNyZS9wY3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDE0ICs1
NSwxNCBAQAogY29uc3QgaW50IEpTUmVnRXhwRXJyb3JOb01lbW9yeSA9IC0zOwogY29uc3QgaW50
IEpTUmVnRXhwRXJyb3JJbnRlcm5hbCA9IC00OwogCi1KU1JlZ0V4cCoganNSZWdFeHBDb21waWxl
KGNvbnN0IFVDaGFyKiBwYXR0ZXJuLCBpbnQgcGF0dGVybkxlbmd0aCwKK0pTX0VYUE9SVEVEX1NZ
TUJPTCBKU1JlZ0V4cCoganNSZWdFeHBDb21waWxlKGNvbnN0IFVDaGFyKiBwYXR0ZXJuLCBpbnQg
cGF0dGVybkxlbmd0aCwKICAgICBKU1JlZ0V4cElnbm9yZUNhc2VPcHRpb24sIEpTUmVnRXhwTXVs
dGlsaW5lT3B0aW9uLAogICAgIHVuc2lnbmVkKiBudW1TdWJwYXR0ZXJucywgY29uc3QgY2hhcioq
IGVycm9yTWVzc2FnZSk7CiAKLWludCBqc1JlZ0V4cEV4ZWN1dGUoY29uc3QgSlNSZWdFeHAqLAor
SlNfRVhQT1JURURfU1lNQk9MIGludCBqc1JlZ0V4cEV4ZWN1dGUoY29uc3QgSlNSZWdFeHAqLAog
ICAgIGNvbnN0IFVDaGFyKiBzdWJqZWN0LCBpbnQgc3ViamVjdExlbmd0aCwgaW50IHN0YXJ0T2Zm
c2V0LAogICAgIGludCogb2Zmc2V0c1ZlY3RvciwgaW50IG9mZnNldHNWZWN0b3JMZW5ndGgpOwog
Ci12b2lkIGpzUmVnRXhwRnJlZShKU1JlZ0V4cCopOworSlNfRVhQT1JURURfU1lNQk9MIHZvaWQg
anNSZWdFeHBGcmVlKEpTUmVnRXhwKik7CiAKICNlbmRpZgpJbmRleDogSmF2YVNjcmlwdENvcmUv
d3NjcmlwdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93c2NyaXB0CShyZXZpc2lvbiA2
MTU2OCkKKysrIEphdmFTY3JpcHRDb3JlL3dzY3JpcHQJKHdvcmtpbmcgY29weSkKQEAgLTc1LDYg
Kzc1LDcgQEAKIGRlZiBidWlsZChibGQpOgogICAgIGltcG9ydCBPcHRpb25zCiAKKyAgICBibGQu
ZW52LkxJQkRJUiA9IG91dHB1dF9kaXIKICAgICBmdWxsX2RpcnMgPSBnZXRfZGlyc19mb3JfZmVh
dHVyZXMoanNjb3JlX2RpciwgZmVhdHVyZXM9W2J1aWxkX3BvcnRdLCBkaXJzPWpzY29yZV9kaXJz
KQogCiAgICAgaW5jbHVkZXMgPSBjb21tb25faW5jbHVkZXMgKyBmdWxsX2RpcnMKQEAgLTgzLDkg
Kzg0LDEwIEBACiAKICAgICAjIDEuIEEgc2ltcGxlIHByb2dyYW0KICAgICBqc2NvcmUgPSBibGQu
bmV3X3Rhc2tfZ2VuKAotICAgICAgICBmZWF0dXJlcyA9ICdjeHggY3N0YXRpY2xpYicsCisgICAg
ICAgIGZlYXR1cmVzID0gJ2N4eCBjc2hsaWIgaW1wbGliJywKICAgICAgICAgaW5jbHVkZXMgPSAn
LiAuLiBhc3NlbWJsZXIgRGVyaXZlZFNvdXJjZXMgRm9yd2FyZGluZ0hlYWRlcnMgJyArICcgJy5q
b2luKGluY2x1ZGVzKSwKICAgICAgICAgc291cmNlID0gc291cmNlcywKKyAgICAgICAgZGVmaW5l
cyA9IFsnQlVJTERJTkdfSmF2YVNjcmlwdENvcmUnXSwKICAgICAgICAgdGFyZ2V0ID0gJ2pzY29y
ZScsCiAgICAgICAgIHVzZWxpYiA9ICdXWCBJQ1UgJyArIGdldF9jb25maWcoKSwKICAgICAgICAg
dXNlbGliX2xvY2FsID0gJycsCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyLmgJKHJl
dmlzaW9uIDYxNTY4KQorKysgSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtNTEsMTEgKzUxLDExIEBACiAgICAgICAgICAgICByZXR1cm4gJnNfc2hh
cmVkRW5hYmxlZFByb2ZpbGVyUmVmZXJlbmNlOwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGlj
IFByb2ZpbGVyKiBwcm9maWxlcigpOyAKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHN0YXRp
YyBQcm9maWxlciogcHJvZmlsZXIoKTsgCiAgICAgICAgIHN0YXRpYyBDYWxsSWRlbnRpZmllciBj
cmVhdGVDYWxsSWRlbnRpZmllcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUsIGNvbnN0IFVTdHJp
bmcmIHNvdXJjZVVSTCwgaW50IGxpbmVOdW1iZXIpOwogCi0gICAgICAgIHZvaWQgc3RhcnRQcm9m
aWxpbmcoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYgdGl0bGUpOwotICAgICAgICBQYXNzUmVm
UHRyPFByb2ZpbGU+IHN0b3BQcm9maWxpbmcoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYgdGl0
bGUpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBzdGFydFByb2ZpbGluZyhFeGVj
U3RhdGUqLCBjb25zdCBVU3RyaW5nJiB0aXRsZSk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJP
TCBQYXNzUmVmUHRyPFByb2ZpbGU+IHN0b3BQcm9maWxpbmcoRXhlY1N0YXRlKiwgY29uc3QgVVN0
cmluZyYgdGl0bGUpOwogCiAgICAgICAgIHZvaWQgd2lsbEV4ZWN1dGUoRXhlY1N0YXRlKiwgSlNW
YWx1ZSBmdW5jdGlvbik7CiAgICAgICAgIHZvaWQgd2lsbEV4ZWN1dGUoRXhlY1N0YXRlKiwgY29u
c3QgVVN0cmluZyYgc291cmNlVVJMLCBpbnQgc3RhcnRpbmdMaW5lTnVtYmVyKTsKSW5kZXg6IEph
dmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuaAkocmV2aXNpb24gNjE1
NjgpCisrKyBKYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MSwxMCArNTEsMTAgQEAKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGR5
bmFtaWNHbG9iYWxPYmplY3QoKSBjb25zdCB7IHJldHVybiBtX2NhbGxGcmFtZS0+ZHluYW1pY0ds
b2JhbE9iamVjdCgpOyB9CiAgICAgICAgIGNvbnN0IFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWlu
KCkgY29uc3QgeyByZXR1cm4gbV9jYWxsRnJhbWUtPnNjb3BlQ2hhaW4oKTsgfQogICAgICAgICBj
b25zdCBVU3RyaW5nKiBmdW5jdGlvbk5hbWUoKSBjb25zdDsKLSAgICAgICAgVVN0cmluZyBjYWxj
dWxhdGVkRnVuY3Rpb25OYW1lKCkgY29uc3Q7Ci0gICAgICAgIFR5cGUgdHlwZSgpIGNvbnN0Owot
ICAgICAgICBKU09iamVjdCogdGhpc09iamVjdCgpIGNvbnN0OwotICAgICAgICBKU1ZhbHVlIGV2
YWx1YXRlKGNvbnN0IFVTdHJpbmcmLCBKU1ZhbHVlJiBleGNlcHRpb24pIGNvbnN0OworICAgICAg
ICBKU19FWFBPUlRFRF9TWU1CT0wgVVN0cmluZyBjYWxjdWxhdGVkRnVuY3Rpb25OYW1lKCkgY29u
c3Q7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBUeXBlIHR5cGUoKSBjb25zdDsKKyAgICAg
ICAgSlNfRVhQT1JURURfU1lNQk9MIEpTT2JqZWN0KiB0aGlzT2JqZWN0KCkgY29uc3Q7CisgICAg
ICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBKU1ZhbHVlIGV2YWx1YXRlKGNvbnN0IFVTdHJpbmcmLCBK
U1ZhbHVlJiBleGNlcHRpb24pIGNvbnN0OwogICAgICAgICBKU1ZhbHVlIGV4Y2VwdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fZXhjZXB0aW9uOyB9CiAKICAgICBwcml2YXRlOgpJbmRleDogSmF2YVNj
cmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCShyZXZpc2lvbiA2MTU2OCkKKysrIEphdmFTY3JpcHRDb3Jl
L2RlYnVnZ2VyL0RlYnVnZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDEwICszNiwxMCBAQAog
CiAgICAgY2xhc3MgRGVidWdnZXIgewogICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCB+RGVi
dWdnZXIoKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgfkRlYnVnZ2VyKCk7
CiAKLSAgICAgICAgdm9pZCBhdHRhY2goSlNHbG9iYWxPYmplY3QqKTsKLSAgICAgICAgdmlydHVh
bCB2b2lkIGRldGFjaChKU0dsb2JhbE9iamVjdCopOworICAgICAgICBKU19FWFBPUlRFRF9TWU1C
T0wgdm9pZCBhdHRhY2goSlNHbG9iYWxPYmplY3QqKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lN
Qk9MIHZpcnR1YWwgdm9pZCBkZXRhY2goSlNHbG9iYWxPYmplY3QqKTsKIAogICAgICAgICB2aXJ0
dWFsIHZvaWQgc291cmNlUGFyc2VkKEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBpbnQg
ZXJyb3JMaW5lTnVtYmVyLCBjb25zdCBVU3RyaW5nJiBlcnJvck1lc3NhZ2UpID0gMDsKICAgICAg
ICAgdmlydHVhbCB2b2lkIGV4Y2VwdGlvbihjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0
cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlciwgYm9vbCBoYXNIYW5kbGVyKSA9IDA7CkBAIC01
MSw3ICs1MSw3IEBACiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRFeGVjdXRlUHJvZ3JhbShjb25z
dCBEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlcikg
PSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVhY2hCcmVha3BvaW50KGNvbnN0IERlYnVn
Z2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyKSA9IDA7CiAK
LSAgICAgICAgdm9pZCByZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucyhKU0dsb2JhbERhdGEqKTsKKyAg
ICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZvaWQgcmVjb21waWxlQWxsSlNGdW5jdGlvbnMoSlNH
bG9iYWxEYXRhKik7CiAKICAgICBwcml2YXRlOgogICAgICAgICBIYXNoU2V0PEpTR2xvYmFsT2Jq
ZWN0Kj4gbV9nbG9iYWxPYmplY3RzOwpJbmRleDogV2ViS2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudENGLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2YvV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCShyZXZpc2lvbiA2MTU2OCkKKysrIFdlYktp
dC9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM5LDE0ICszOSwxMiBAQAogCiAjaWYgZGVmaW5lZChXSU4zMikgfHwgZGVmaW5lZChf
V0lOMzIpCiAjaWYgZGVmaW5lZChCVUlMRElOR19KYXZhU2NyaXB0Q29yZSkgfHwgZGVmaW5lZChC
VUlMRElOR19XVEYpCi0jZGVmaW5lIEpTX0VYUE9SVERBVEEgX19kZWNsc3BlYyhkbGxleHBvcnQp
CisjZGVmaW5lIEpTX0VYUE9SVEVEX1NZTUJPTCBfX2RlY2xzcGVjKGRsbGV4cG9ydCkKICNlbHNl
Ci0jZGVmaW5lIEpTX0VYUE9SVERBVEEgX19kZWNsc3BlYyhkbGxpbXBvcnQpCisjZGVmaW5lIEpT
X0VYUE9SVEVEX1NZTUJPTCBfX2RlY2xzcGVjKGRsbGltcG9ydCkKICNlbmRpZgotI2RlZmluZSBK
U19FWFBPUlRDTEFTUyBKU19FWFBPUlREQVRBCiAjZWxzZQotI2RlZmluZSBKU19FWFBPUlREQVRB
Ci0jZGVmaW5lIEpTX0VYUE9SVENMQVNTCisjZGVmaW5lIEpTX0VYUE9SVEVEX1NZTUJPTAogI2Vu
ZGlmCiAKICNpbmNsdWRlICJXZWJJbnNwZWN0b3JDbGllbnQuaCIKSW5kZXg6IFdlYktpdC9jZi9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2NmL0NoYW5nZUxvZwkocmV2aXNpb24gNjE1
NjgpCisrKyBXZWJLaXQvY2YvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIg
QEAKKzIwMTAtMDYtMTcgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIEpT
X0VYUE9SVEVEX1NZTUJPTCB0byBleHBvcnQgSlNDb3JlIHN5bWJvbHMgbmVlZGVkIGJ5IG90aGVy
IFdlYktpdCBsaWJyYXJpZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yNzU1MQorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9y
Q2xpZW50Q0YuY3BwOgorCiAyMDEwLTA2LTE0ICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgpJbmRleDog
V2ViS2l0L3d4L3dzY3JpcHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3d4L3dzY3JpcHQJKHJldmlz
aW9uIDYxNTY4KQorKysgV2ViS2l0L3d4L3dzY3JpcHQJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcg
KzY2LDcgQEAKICAgICAKIGRlZiBwcmVfYnVpbGQoYmxkKToKICAgICAiIiIKLSAgICBUaGUgd3hX
ZWJLaXQgbGlicmFyeSBzaG91bGQgYmUgcmVidWlsdCBpZiBqc2NvcmUgb3Igd2ViY29yZSBjaGFu
Z2VzLAorICAgIFRoZSB3eFdlYktpdCBsaWJyYXJ5IHNob3VsZCBiZSByZWJ1aWx0IGlmIHdlYmNv
cmUgY2hhbmdlcywKICAgICBzbyB3ZSBtYWtlIHRob3NlIHN0YXRpYyBsaWJzIGFzIGRlcGVuZGVu
Y2llcy4KICAgICAiIiIKICAgICAKQEAgLTc0LDEzICs3NCwxMCBAQAogICAgIGlmIHN5cy5wbGF0
Zm9ybS5zdGFydHN3aXRoKCd3aW4nKToKICAgICAgICAgZXh0ID0gJy5saWInCiAgICAgCi0gICAg
bGlianNjb3JlID0gb3MucGF0aC5qb2luKG91dHB1dF9kaXIsICdsaWJqc2NvcmUlcycgJSBleHQp
CiAgICAgbGlid2ViY29yZSA9IG9zLnBhdGguam9pbihvdXRwdXRfZGlyLCAnbGlid2ViY29yZSVz
JyAlIGV4dCkKICAgICAKLSAgICBhc3NlcnQgb3MucGF0aC5leGlzdHMobGlianNjb3JlKQogICAg
IGFzc2VydCBvcy5wYXRoLmV4aXN0cyhsaWJ3ZWJjb3JlKQogICAgIAotICAgIGJsZC5lbnYuQ1hY
REVQU19KU0NPUkUgPSBVdGlscy5oX2ZpbGUobGlianNjb3JlKQogICAgIGJsZC5lbnYuQ1hYREVQ
U19XRUJDT1JFID0gVXRpbHMuaF9maWxlKGxpYndlYmNvcmUpCiAgICAgCiBkZWYgYnVpbGQoYmxk
KToKSW5kZXg6IFdlYktpdC9tYWMvV2ViS2l0UHJlZml4LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L21hYy9XZWJLaXRQcmVmaXguaAkocmV2aXNpb24gNjE1NjgpCisrKyBXZWJLaXQvbWFjL1dlYktp
dFByZWZpeC5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCw2ICs3MCw4IEBACiAjaW1wb3J0IDxDb2Nv
YS9Db2NvYS5oPgogI2VuZGlmCiAKKyNkZWZpbmUgSlNfRVhQT1JURURfU1lNQk9MCisKICNpbmNs
dWRlIDx3dGYvUGxhdGZvcm0uaD4KIAogI2luY2x1ZGUgPFdlYkNvcmUvRW1wdHlQcm90b2NvbERl
ZmluaXRpb25zLmg+CkBAIC04OSw2ICs5MSw0IEBACiAjdW5kZWYgdHJ5CiAjdW5kZWYgY2F0Y2gK
IAotI2RlZmluZSBKU19FWFBPUlREQVRBCi0jZGVmaW5lIEpTX0VYUE9SVENMQVNTCiAjZGVmaW5l
IFdFQktJVF9FWFBPUlREQVRBCkluZGV4OiBKYXZhU2NyaXB0R2x1ZS9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nCShyZXZpc2lvbiA2MTU2OCkKKysrIEph
dmFTY3JpcHRHbHVlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisy
MDEwLTA2LTE3ICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBKU19FWFBP
UlRFRF9TWU1CT0wgdG8gZXhwb3J0IEpTQ29yZSBzeW1ib2xzIG5lZWRlZCBieSBvdGhlciBXZWJL
aXQgbGlicmFyaWVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9Mjc1NTEKKworICAgICAgICAqIGNvbmZpZy5oOgorCiAyMDEwLTA2LTAyICBHYXZpbiBC
YXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBPbGl2ZXIgSHVudC4KSW5kZXg6IEphdmFTY3JpcHRHbHVlL2NvbmZpZy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIEphdmFTY3JpcHRHbHVlL2NvbmZpZy5oCShyZXZpc2lvbiA2MTU2OCkKKysrIEphdmFTY3Jp
cHRHbHVlL2NvbmZpZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNyw1ICsxNyw0IEBACiAvKiBVc2lu
ZyBWOCBpbXBsaWVzIG5vdCB1c2luZyBKU0MgYW5kIHZpY2UgdmVyc2EgKi8KICNkZWZpbmUgV1RG
X1VTRV9KU0MgIVdURl9VU0VfVjgKIAotI2RlZmluZSBKU19FWFBPUlREQVRBCi0jZGVmaW5lIEpT
X0VYUE9SVENMQVNTCisjZGVmaW5lIEpTX0VYUE9SVEVEX1NZTUJPTApJbmRleDogV2ViQ29yZS9j
b25maWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2NvbmZpZy5oCShyZXZpc2lvbiA2MTU2OCkK
KysrIFdlYkNvcmUvY29uZmlnLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDIxICsyOSwxOSBAQAog
CiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CiAKLSNpZiAhUExBVEZPUk0oQ0hST01JVU0pICYm
IE9TKFdJTkRPV1MpICYmICFkZWZpbmVkKEJVSUxESU5HX1dYX18pICYmICFDT01QSUxFUihHQ0Mp
CisjaWYgIVBMQVRGT1JNKENIUk9NSVVNKSAmJiBPUyhXSU5ET1dTKSAmJiAhQ09NUElMRVIoR0ND
KQogI2lmIGRlZmluZWQoQlVJTERJTkdfSmF2YVNjcmlwdENvcmUpIHx8IGRlZmluZWQoQlVJTERJ
TkdfV1RGKQotI2RlZmluZSBKU19FWFBPUlREQVRBIF9fZGVjbHNwZWMoZGxsZXhwb3J0KQorI2Rl
ZmluZSBKU19FWFBPUlRFRF9TWU1CT0wgX19kZWNsc3BlYyhkbGxleHBvcnQpCiAjZWxzZQotI2Rl
ZmluZSBKU19FWFBPUlREQVRBIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQorI2RlZmluZSBKU19FWFBP
UlRFRF9TWU1CT0wgX19kZWNsc3BlYyhkbGxpbXBvcnQpCiAjZW5kaWYKICNpZiBkZWZpbmVkKEJV
SUxESU5HX1dlYkNvcmUpIHx8IGRlZmluZWQoQlVJTERJTkdfV2ViS2l0KQogI2RlZmluZSBXRUJL
SVRfRVhQT1JUREFUQSBfX2RlY2xzcGVjKGRsbGV4cG9ydCkKICNlbHNlCiAjZGVmaW5lIFdFQktJ
VF9FWFBPUlREQVRBIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQogI2VuZGlmCi0jZGVmaW5lIEpTX0VY
UE9SVENMQVNTIEpTX0VYUE9SVERBVEEKICNlbHNlCi0jZGVmaW5lIEpTX0VYUE9SVERBVEEKLSNk
ZWZpbmUgSlNfRVhQT1JUQ0xBU1MKKyNkZWZpbmUgSlNfRVhQT1JURURfU1lNQk9MCiAjZGVmaW5l
IFdFQktJVF9FWFBPUlREQVRBCiAjZW5kaWYKIApJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDYxNTY4KQorKysgV2ViQ29y
ZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxMC0wNi0xNyAg
S2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgSlNfRVhQT1JURURfU1lNQk9M
IHRvIGV4cG9ydCBKU0NvcmUgc3ltYm9scyBuZWVkZWQgYnkgb3RoZXIgV2ViS2l0IGxpYnJhcmll
cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NTUx
CisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0FycmF5QnVmZmVyVmlld0N1c3RvbS5jcHA6Cisg
ICAgICAgICogY29uZmlnLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL2d0azJkcmF3aW5nLmM6
CisgICAgICAgICogcGxhdGZvcm0vbWFjL0xvZ2dpbmdNYWMubW06CisgICAgICAgICogcGxhdGZv
cm0vd2luY2UvU2hhcmVkVGltZXJXaW5jZS5jcHA6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oOgorCiAyMDEwLTA2LTIxICBOYXRlIENoYXBpbiAgPGph
cGhldEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3RrL2d0azJkcmF3aW5nLmMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvZ3RrMmRyYXdpbmcuYwkocmV2aXNpb24gNjE1NjgpCisrKyBXZWJD
b3JlL3BsYXRmb3JtL2d0ay9ndGsyZHJhd2luZy5jCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0
Nyw3IEBACiAjaW5jbHVkZSA8Z2RrL2dka3ByaXZhdGUuaD4KICNpbmNsdWRlICJndGtkcmF3aW5n
LmgiCiAKKyNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBc3NlcnRpb25zLmgiCiAKICNp
bmNsdWRlIDxtYXRoLmg+CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2dnaW5nTWFjLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbWFjL0xvZ2dpbmdNYWMubW0JKHJldmlz
aW9uIDYxNTY4KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9nZ2luZ01hYy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMjMsNiArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAorI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS93aW5jZS9TaGFyZWRUaW1lcldpbmNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3dpbmNlL1NoYXJlZFRpbWVyV2luY2UuY3BwCShy
ZXZpc2lvbiA2MTU2OCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vd2luY2UvU2hhcmVkVGltZXJXaW5j
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlIDx3aW5kb3dz
Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewotSlNfRVhQT1JUREFUQSBleHRlcm4gdm9pZCogZ19zdGFj
a0Jhc2U7CitKU19FWFBPUlRFRF9TWU1CT0wgZXh0ZXJuIHZvaWQqIGdfc3RhY2tCYXNlOwogfQog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXJyYXlC
dWZmZXJWaWV3Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pT
QXJyYXlCdWZmZXJWaWV3Q3VzdG9tLmNwcAkocmV2aXNpb24gNjE1NjgpCisrKyBXZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQXJyYXlCdWZmZXJWaWV3Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjcsNyArMjcsNiBAQAogCiAjaWYgRU5BQkxFKDNEX0NBTlZBUykKIAotI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJWaWV3LmgiCiAjaW5jbHVkZSAiSlNJbnQ4QXJy
YXkuaCIKICNpbmNsdWRlICJKU1VpbnQ4QXJyYXkuaCIKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oCShyZXZpc2lvbiA2MTU2OCkKKysr
IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMCw4ICsyMCw2IEBACiAjaWZuZGVmIFNWR0ZpbHRlckJ1aWxkZXJfaAogI2Rl
ZmluZSBTVkdGaWx0ZXJCdWlsZGVyX2gKIAotI2luY2x1ZGUgImNvbmZpZy5oIgotCiAjaWYgRU5B
QkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCiAjaW5jbHVkZSAiQXRvbWljU3RyaW5nSGFzaC5o
IgogI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgpJbmRleDogV2ViS2l0VG9vbHMvd3gvYnVpbGQv
c2V0dGluZ3MucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvd3gvYnVpbGQvc2V0dGluZ3Mu
cHkJKHJldmlzaW9uIDYxNTY4KQorKysgV2ViS2l0VG9vbHMvd3gvYnVpbGQvc2V0dGluZ3MucHkJ
KHdvcmtpbmcgY29weSkKQEAgLTI3MSw3ICsyNzEsNyBAQAogICAgIGlmIGJ1aWxkX3BvcnQgPT0g
Ind4IjoKICAgICAgICAgdXBkYXRlX3d4X2RlcHMoY29uZiwgd2tfcm9vdCwgbXN2Y192ZXJzaW9u
KQogICAgIAotICAgICAgICBjb25mLmVudi5hcHBlbmRfdmFsdWUoJ0NYWERFRklORVMnLCBbJ0JV
SUxESU5HX1dYX189MScsICdKU19OT19FWFBPUlQnXSkKKyAgICAgICAgY29uZi5lbnYuYXBwZW5k
X3ZhbHVlKCdDWFhERUZJTkVTJywgWydCVUlMRElOR19XWF9fPTEnXSkKIAogICAgICAgICBjb25m
LmVudlsnTElCX1dYV0VCS0lUJ10gPSBbJ3d4d2Via2l0J10KICAgICAgICAgY29uZi5lbnZbJ0NY
WERFRklORVNfV1hXRUJLSVQnXSA9IFsnV1hVU0lOR0RMTF9XRUJLSVQnXQpAQCAtMjg3LDcgKzI4
Nyw3IEBACiAgICAgICAgICAgICBjb25mLmVudlsnTElCX1dYJ10gPSB3eGxpYnMKICAgICAgICAg
ICAgIGNvbmYuZW52WydMSUJQQVRIX1dYJ10gPSB3eGxpYnBhdGhzCiAKLSAgICBjb25mLmVudlsn
TElCX0pTQ09SRSddID0gW2xpYnByZWZpeCArICdqc2NvcmUnXQorICAgIGNvbmYuZW52WydMSUJf
SlNDT1JFJ10gPSBbJ2pzY29yZSddCiAgICAgY29uZi5lbnZbJ0xJQl9XRUJDT1JFJ10gPSBbbGli
cHJlZml4ICsgJ3dlYmNvcmUnXQogCiAgICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2Rh
cndpbicpOgpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vY29uZmln
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vY29u
ZmlnLmgJKHJldmlzaW9uIDYxNTY4KQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vY29uZmlnLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDExICs0NCwxMSBAQAogCiAjaW5j
bHVkZSA8d3RmL1BsYXRmb3JtLmg+CiAKLS8vIEpTX0VYUE9SVERBVEEgaXMgbmVlZGVkIHRvIGlu
bHVjZGUgd3RmL1dURlN0cmluZy5oLgorLy8gSlNfRVhQT1JURURfU1lNQk9MIGlzIG5lZWRlZCB0
byBpbmx1Y2RlIHd0Zi9XVEZTdHJpbmcuaC4KICNpZiBPUyhXSU5ET1dTKSAmJiAhQ09NUElMRVIo
R0NDKQotI2RlZmluZSBKU19FWFBPUlREQVRBIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQorI2RlZmlu
ZSBKU19FWFBPUlRFRF9TWU1CT0wgX19kZWNsc3BlYyhkbGxpbXBvcnQpCiAjZWxzZQotI2RlZmlu
ZSBKU19FWFBPUlREQVRBCisjZGVmaW5lIEpTX0VYUE9SVEVEX1NZTUJPTAogI2VuZGlmCiAKICNl
bmRpZiAvLyBjb25maWdfaApJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY29uZmln
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY29uZmlnLmgJKHJl
dmlzaW9uIDYxNTY4KQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY29uZmlnLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI2LDIwICsyNiwyMCBAQAogCiAjaW5jbHVkZSA8d3RmL1BsYXRmb3Jt
Lmg+CiAKKyNpZiBPUyhXSU5ET1dTKSAmJiAhQ09NUElMRVIoR0NDKQorI2RlZmluZSBKU19FWFBP
UlRFRF9TWU1CT0wgX19kZWNsc3BlYyhkbGxpbXBvcnQpCisjZGVmaW5lIFdFQktJVF9FWFBPUlRE
QVRBIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQorI2Vsc2UKKyNkZWZpbmUgSlNfRVhQT1JURURfU1lN
Qk9MCisjZGVmaW5lIFdFQktJVF9FWFBPUlREQVRBCisjZW5kaWYKKwogI2lmZGVmIF9fY3BsdXNw
bHVzCiAjdW5kZWYgbmV3CiAjdW5kZWYgZGVsZXRlCiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2Mu
aD4KICNlbmRpZgogCi0jaWYgT1MoV0lORE9XUykgJiYgIUNPTVBJTEVSKEdDQykKLSNkZWZpbmUg
SlNfRVhQT1JUREFUQSBfX2RlY2xzcGVjKGRsbGltcG9ydCkKLSNkZWZpbmUgV0VCS0lUX0VYUE9S
VERBVEEgX19kZWNsc3BlYyhkbGxpbXBvcnQpCi0jZWxzZQotI2RlZmluZSBKU19FWFBPUlREQVRB
Ci0jZGVmaW5lIFdFQktJVF9FWFBPUlREQVRBCi0jZW5kaWYKLQogI2lmIFBMQVRGT1JNKFdJTikK
ICNkZWZpbmUgV1RGX1BMQVRGT1JNX0NGIDEgCiAjaWYgZGVmaW5lZChXSU5fQ0FJUk8pCkluZGV4
OiBXZWJLaXRUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvQ2hhbmdl
TG9nCShyZXZpc2lvbiA2MTU2OCkKKysrIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDEwLTA2LTE3ICBLZXZpbiBPbGxpdmllciAgPGtldmlu
b0B0aGVvbGxpdmllcnMuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFVzZSBKU19FWFBPUlRFRF9TWU1CT0wgdG8gZXhwb3J0IEpTQ29yZSBzeW1i
b2xzIG5lZWRlZCBieSBvdGhlciBXZWJLaXQgbGlicmFyaWVzLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc1NTEKKworICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL2NvbmZpZy5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2NvbmZp
Zy5oOgorICAgICAgICAqIHd4L2J1aWxkL3NldHRpbmdzLnB5OgorCiAyMDEwLTA2LTIxICBEcmV3
IFdpbHNvbiAgPGF0d2lsc29uQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLgpJ
bmRleDogV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDYxNTY4KQorKysgV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxMiBAQAorMjAxMC0wNi0xNyAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xs
aXZpZXJzLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBVc2UgSlNfRVhQT1JURURfU1lNQk9MIHRvIGV4cG9ydCBKU0NvcmUgc3ltYm9scyBuZWVk
ZWQgYnkgb3RoZXIgV2ViS2l0IGxpYnJhcmllcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NTUxCisKKyAgICAgICAgKiBXZWJLaXQyUHJlZml4Lmg6
CisKIDIwMTAtMDYtMjEgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpJbmRleDogV2ViS2l0Mi9XZWJLaXQyUHJl
Zml4LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJLaXQyUHJlZml4LmgJKHJldmlzaW9uIDYx
NTY4KQorKysgV2ViS2l0Mi9XZWJLaXQyUHJlZml4LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYg
KzI1LDkgQEAKIAogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogI2luY2x1ZGUgPHd0Zi9EaXNh
bGxvd0NUeXBlLmg+CisKKyNkZWZpbmUgSlNfRVhQT1JURURfU1lNQk9MCisKICNpZmRlZiBfX2Nw
bHVzcGx1cwogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjZW5kaWYKQEAgLTQyLDggKzQ1
LDYgQEAKICNkZWZpbmUgV1RGX1VTRV9KU0MgMQogI2RlZmluZSBXVEZfVVNFX1Y4IDAKIAotI2Rl
ZmluZSBKU19FWFBPUlREQVRBCi0jZGVmaW5lIEpTX0VYUE9SVENMQVNTCiAjZGVmaW5lIFdFQktJ
VF9FWFBPUlREQVRBCiAKICNlbGlmIGRlZmluZWQoV0lOMzIpIHx8IGRlZmluZWQoX1dJTjMyKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59596</attachid>
            <date>2010-06-23 18:31:48 -0700</date>
            <delta_ts>2010-08-28 17:34:07 -0700</delta_ts>
            <desc>Now trying a Windows fix</desc>
            <filename>jscore_exports6.patch</filename>
            <type>text/plain</type>
            <size>167901</size>
            <attacher name="Kevin Ollivier">kevino</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkocmV2aXNpb24gNjE3MjIpCisrKyBK
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03MSwy
MSArNzEsMjEgQEAKIAogICAgICAgICBzdGF0aWMgdm9pZCBkdW1wU3RhdGlzdGljcygpOwogCi0g
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gYWRkUHJvcGVydHlUcmFuc2l0aW9u
KFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0
cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBzaXplX3QmIG9mZnNldCk7Ci0gICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gYWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlz
dGluZ1N0cnVjdHVyZShTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBvZmZz
ZXQpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0
dXJlPiBhZGRQcm9wZXJ0eVRyYW5zaXRpb24oU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUs
IHNpemVfdCYgb2Zmc2V0KTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHN0YXRpYyBQYXNz
UmVmUHRyPFN0cnVjdHVyZT4gYWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVy
ZShTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0
dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBvZmZzZXQpOwogICAgICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbihT
dHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHNpemVfdCYgb2Zmc2V0
KTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjaGFuZ2VQcm90b3R5cGVU
cmFuc2l0aW9uKFN0cnVjdHVyZSosIEpTVmFsdWUgcHJvdG90eXBlKTsKLSAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8U3RydWN0dXJlPiBkZXNwZWNpZnlGdW5jdGlvblRyYW5zaXRpb24oU3RydWN0
dXJlKiwgY29uc3QgSWRlbnRpZmllciYpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgc3Rh
dGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjaGFuZ2VQcm90b3R5cGVUcmFuc2l0aW9uKFN0cnVj
dHVyZSosIEpTVmFsdWUgcHJvdG90eXBlKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHN0
YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gZGVzcGVjaWZ5RnVuY3Rpb25UcmFuc2l0aW9uKFN0
cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXImKTsKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8
U3RydWN0dXJlPiBnZXR0ZXJTZXR0ZXJUcmFuc2l0aW9uKFN0cnVjdHVyZSopOwogICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHRvQ2FjaGVhYmxlRGljdGlvbmFyeVRyYW5zaXRp
b24oU3RydWN0dXJlKik7CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gdG9V
bmNhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKFN0cnVjdHVyZSopOwogCiAgICAgICAgIFBh
c3NSZWZQdHI8U3RydWN0dXJlPiBmbGF0dGVuRGljdGlvbmFyeVN0cnVjdHVyZShKU09iamVjdCop
OwogCi0gICAgICAgIH5TdHJ1Y3R1cmUoKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIH5T
dHJ1Y3R1cmUoKTsKIAogICAgICAgICAvLyBUaGVzZSBzaG91bGQgYmUgdXNlZCB3aXRoIGNhdXRp
b24uICAKLSAgICAgICAgc2l6ZV90IGFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNw
ZWNpZmljVmFsdWUpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgc2l6ZV90IGFkZFByb3Bl
cnR5V2l0aG91dFRyYW5zaXRpb24oY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNp
Z25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpOwogICAgICAgICBzaXplX3Qg
cmVtb3ZlUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUpOwogICAgICAgICB2b2lkIHNldFByb3RvdHlwZVdpdGhvdXRUcmFuc2l0aW9uKEpTVmFs
dWUgcHJvdG90eXBlKSB7IG1fcHJvdG90eXBlID0gcHJvdG90eXBlOyB9CiAgICAgICAgIApAQCAt
MTA2LDcgKzEwNiw3IEBACiAgICAgICAgIGJvb2wgaXNVc2luZ0lubGluZVN0b3JhZ2UoKSBjb25z
dDsKIAogICAgICAgICBzaXplX3QgZ2V0KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7
Ci0gICAgICAgIHNpemVfdCBnZXQoY29uc3QgVVN0cmluZzo6UmVwKiByZXAsIHVuc2lnbmVkJiBh
dHRyaWJ1dGVzLCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVlKTsKKyAgICAgICAgSlNfRVhQT1JURURf
U1lNQk9MIHNpemVfdCBnZXQoY29uc3QgVVN0cmluZzo6UmVwKiByZXAsIHVuc2lnbmVkJiBhdHRy
aWJ1dGVzLCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVlKTsKICAgICAgICAgc2l6ZV90IGdldChjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzLCBKU0NlbGwq
JiBzcGVjaWZpY1ZhbHVlKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoIXByb3BlcnR5
TmFtZS5pc051bGwoKSk7CkBAIC0xMTYsNyArMTE2LDcgQEAKICAgICAgICAgewogICAgICAgICAg
ICAgcmV0dXJuIG1fc3BlY2lmaWNWYWx1ZUluUHJldmlvdXMgPT0gc3BlY2lmaWNWYWx1ZTsKICAg
ICAgICAgfQotICAgICAgICBib29sIGhhc1RyYW5zaXRpb24oVVN0cmluZzo6UmVwKiwgdW5zaWdu
ZWQgYXR0cmlidXRlcyk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBib29sIGhhc1RyYW5z
aXRpb24oVVN0cmluZzo6UmVwKiwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAgICAgIGJvb2wg
aGFzVHJhbnNpdGlvbihjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0
dHJpYnV0ZXMpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBoYXNUcmFuc2l0aW9uKHBy
b3BlcnR5TmFtZS5fdXN0cmluZy5yZXAoKSwgYXR0cmlidXRlcyk7CkBAIC0xMzIsNyArMTMyLDcg
QEAKICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJv
cGVydHlUYWJsZSA/ICFtX3Byb3BlcnR5VGFibGUtPmtleUNvdW50IDogbV9vZmZzZXQgPT0gbm9P
ZmZzZXQ7IH0KIAotICAgICAgICB2b2lkIGRlc3BlY2lmeURpY3Rpb25hcnlGdW5jdGlvbihjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wg
dm9pZCBkZXNwZWNpZnlEaWN0aW9uYXJ5RnVuY3Rpb24oY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lKTsKICAgICAgICAgdm9pZCBkaXNhYmxlU3BlY2lmaWNGdW5jdGlvblRyYWNraW5nKCkg
eyBtX3NwZWNpZmljRnVuY3Rpb25UaHJhc2hDb3VudCA9IG1heFNwZWNpZmljRnVuY3Rpb25UaHJh
c2hDb3VudDsgfQogCiAgICAgICAgIHZvaWQgc2V0RW51bWVyYXRpb25DYWNoZShKU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yKiBlbnVtZXJhdGlvbkNhY2hlKTsgLy8gRGVmaW5lZCBpbiBKU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yLmguCkBAIC0xNDIsNyArMTQyLDcgQEAKICAgICAgICAgCiAgICAgcHJpdmF0
ZToKIAotICAgICAgICBTdHJ1Y3R1cmUoSlNWYWx1ZSBwcm90b3R5cGUsIGNvbnN0IFR5cGVJbmZv
JiwgdW5zaWduZWQgYW5vbnltb3VzU2xvdENvdW50KTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lN
Qk9MIFN0cnVjdHVyZShKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8mLCB1bnNpZ25l
ZCBhbm9ueW1vdXNTbG90Q291bnQpOwogICAgICAgICAKICAgICAgICAgdHlwZWRlZiBlbnVtIHsg
CiAgICAgICAgICAgICBOb25lRGljdGlvbmFyeUtpbmQgPSAwLApAQCAtMTY2LDcgKzE2Niw3IEBA
CiAgICAgICAgIHZvaWQgZGVzcGVjaWZ5QWxsRnVuY3Rpb25zKCk7CiAKICAgICAgICAgUHJvcGVy
dHlNYXBIYXNoVGFibGUqIGNvcHlQcm9wZXJ0eVRhYmxlKCk7Ci0gICAgICAgIHZvaWQgbWF0ZXJp
YWxpemVQcm9wZXJ0eU1hcCgpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBtYXRl
cmlhbGl6ZVByb3BlcnR5TWFwKCk7CiAgICAgICAgIHZvaWQgbWF0ZXJpYWxpemVQcm9wZXJ0eU1h
cElmTmVjZXNzYXJ5KCkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKG1fcHJvcGVydHlUYWJs
ZSB8fCAhbV9wcmV2aW91cykgICAgICAgICAgICAgCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0
cmluZy5oCShyZXZpc2lvbiA2MTcyMikKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJp
bmcuaAkod29ya2luZyBjb3B5KQpAQCAtNjIsNyArNjIsNyBAQAogICAgIHR5cGVkZWYgdm9pZCAo
KkpTU3RyaW5nRmluYWxpemVyQ2FsbGJhY2spKEpTU3RyaW5nKiwgdm9pZCogY29udGV4dCk7CiAg
ICAgSlNTdHJpbmcqIGpzU3RyaW5nV2l0aEZpbmFsaXplcihFeGVjU3RhdGUqLCBjb25zdCBVU3Ry
aW5nJiwgSlNTdHJpbmdGaW5hbGl6ZXJDYWxsYmFjayBjYWxsYmFjaywgdm9pZCogY29udGV4dCk7
CiAKLSAgICBjbGFzcyBKU19FWFBPUlRDTEFTUyBKU1N0cmluZyA6IHB1YmxpYyBKU0NlbGwgewor
ICAgIGNsYXNzIEpTU3RyaW5nIDogcHVibGljIEpTQ2VsbCB7CiAgICAgcHVibGljOgogICAgICAg
ICBmcmllbmQgY2xhc3MgSklUOwogICAgICAgICBmcmllbmQgY2xhc3MgSlNHbG9iYWxEYXRhOwpA
QCAtMzIxLDcgKzMyMSw3IEBACiAgICAgICAgICAgICAgICAgbV9vdGhlci5tX2ZpbmFsaXplckNh
bGxiYWNrKHRoaXMsIG1fb3RoZXIubV9maW5hbGl6ZXJDb250ZXh0KTsKICAgICAgICAgfQogCi0g
ICAgICAgIGNvbnN0IFVTdHJpbmcmIHZhbHVlKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKKyAgICAg
ICAgSlNfRVhQT1JURURfU1lNQk9MIGNvbnN0IFVTdHJpbmcmIHZhbHVlKEV4ZWNTdGF0ZSogZXhl
YykgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAgaWYgKGlzUm9wZSgpKQogICAgICAgICAg
ICAgICAgIHJlc29sdmVSb3BlKGV4ZWMpOwpAQCAtMzU1LDcgKzM1NSw3IEBACiAgICAgICAgIHsK
ICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgcmVzb2x2ZVJvcGUoRXhlY1N0YXRlKikgY29uc3Q7
CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIHJlc29sdmVSb3BlKEV4ZWNTdGF0ZSop
IGNvbnN0OwogCiAgICAgICAgIHZvaWQgYXBwZW5kU3RyaW5nSW5Db25zdHJ1Y3QodW5zaWduZWQm
IGluZGV4LCBjb25zdCBVU3RyaW5nJiBzdHJpbmcpCiAgICAgICAgIHsKQEAgLTM5MywxOSArMzkz
LDE5IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIEpTVmFs
dWUgdG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkgY29uc3Q7
Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBnZXRQcmltaXRpdmVOdW1iZXIoRXhlY1N0YXRlKiwgZG91
YmxlJiBudW1iZXIsIEpTVmFsdWUmIHZhbHVlKTsKLSAgICAgICAgdmlydHVhbCBib29sIHRvQm9v
bGVhbihFeGVjU3RhdGUqKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCBkb3VibGUgdG9OdW1iZXIo
RXhlY1N0YXRlKikgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgSlNPYmplY3QqIHRvT2JqZWN0KEV4
ZWNTdGF0ZSopIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIFVTdHJpbmcgdG9TdHJpbmcoRXhlY1N0
YXRlKikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIEpTVmFsdWUg
dG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkgY29uc3Q7Cisg
ICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIGJvb2wgZ2V0UHJpbWl0aXZlTnVtYmVy
KEV4ZWNTdGF0ZSosIGRvdWJsZSYgbnVtYmVyLCBKU1ZhbHVlJiB2YWx1ZSk7CisgICAgICAgIEpT
X0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIGJvb2wgdG9Cb29sZWFuKEV4ZWNTdGF0ZSopIGNvbnN0
OworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCBkb3VibGUgdG9OdW1iZXIoRXhl
Y1N0YXRlKikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIEpTT2Jq
ZWN0KiB0b09iamVjdChFeGVjU3RhdGUqKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JURURfU1lN
Qk9MIHZpcnR1YWwgVVN0cmluZyB0b1N0cmluZyhFeGVjU3RhdGUqKSBjb25zdDsKIAotICAgICAg
ICB2aXJ0dWFsIEpTT2JqZWN0KiB0b1RoaXNPYmplY3QoRXhlY1N0YXRlKikgY29uc3Q7CisgICAg
ICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIEpTT2JqZWN0KiB0b1RoaXNPYmplY3QoRXhl
Y1N0YXRlKikgY29uc3Q7CiAKICAgICAgICAgLy8gQWN0dWFsbHkgZ2V0UHJvcGVydHlTbG90LCBu
b3QgZ2V0T3duUHJvcGVydHlTbG90IChzZWUgSlNDZWxsKS4KLSAgICAgICAgdmlydHVhbCBib29s
IGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7
Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRl
KiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOworICAgICAgICBKU19F
WFBPUlRFRF9TWU1CT0wgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUq
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgICAg
ICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVj
U3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgICAgICBK
U19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKICAg
ICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfbWF4SW50ZXJuYWxSb3BlTGVuZ3RoID0gMzsK
IApJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2aXNpb24gNjE3MjIpCisrKyBK
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTc0LDI2
ICs3NCwyNiBAQAogICAgICAgICBmcmllbmQgY2xhc3MgQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6
ZXI7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKU0Nl
bGw7Ci0gICAgICAgIGZyaWVuZCB2b2lkIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSwgSlNPYmplY3QqIHRoaXNPYmosIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KTsKKyAgICAgICAg
ZnJpZW5kIEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSwgSlNPYmplY3QqIHRoaXNPYmos
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KTsKIAog
ICAgIHB1YmxpYzoKICAgICAgICAgZXhwbGljaXQgSlNPYmplY3QoTm9uTnVsbFBhc3NSZWZQdHI8
U3RydWN0dXJlPik7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIG1hcmtDaGlsZHJlbihNYXJrU3Rh
Y2smKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgdm9pZCBtYXJrQ2hpbGRy
ZW4oTWFya1N0YWNrJik7CiAgICAgICAgIEFMV0FZU19JTkxJTkUgdm9pZCBtYXJrQ2hpbGRyZW5E
aXJlY3QoTWFya1N0YWNrJiBtYXJrU3RhY2spOwogCiAgICAgICAgIC8vIFRoZSBpbmxpbmUgdmly
dHVhbCBkZXN0cnVjdG9yIGNhbm5vdCBiZSB0aGUgZmlyc3QgdmlydHVhbCBmdW5jdGlvbiBkZWNs
YXJlZAogICAgICAgICAvLyBpbiB0aGUgY2xhc3MgYXMgaXQgcmVzdWx0cyBpbiB0aGUgdnRhYmxl
IGJlaW5nIGdlbmVyYXRlZCBhcyBhIHdlYWsgc3ltYm9sCiAgICAgICAgIHZpcnR1YWwgfkpTT2Jq
ZWN0KCk7CiAKLSAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUoKSBjb25zdDsKKyAgICAgICAgSlNf
RVhQT1JURURfU1lNQk9MIEpTVmFsdWUgcHJvdG90eXBlKCkgY29uc3Q7CiAgICAgICAgIHZvaWQg
c2V0UHJvdG90eXBlKEpTVmFsdWUgcHJvdG90eXBlKTsKICAgICAgICAgYm9vbCBzZXRQcm90b3R5
cGVXaXRoQ3ljbGVDaGVjayhKU1ZhbHVlIHByb3RvdHlwZSk7CiAgICAgICAgIAogICAgICAgICB2
b2lkIHNldFN0cnVjdHVyZShOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+KTsKICAgICAgICAg
U3RydWN0dXJlKiBpbmhlcml0b3JJRCgpOwogCi0gICAgICAgIHZpcnR1YWwgVVN0cmluZyBjbGFz
c05hbWUoKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgVVN0cmlu
ZyBjbGFzc05hbWUoKSBjb25zdDsKIAogICAgICAgICBKU1ZhbHVlIGdldChFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpIGNvbnN0OwogICAgICAgICBKU1ZhbHVlIGdl
dChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpIGNvbnN0OwpAQCAtMTAyLDQ1ICsx
MDIsNDUgQEAKICAgICAgICAgYm9vbCBnZXRQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgdW5zaWdu
ZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgYm9vbCBnZXRQcm9wZXJ0
eURlc2NyaXB0b3IoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eURlc2NyaXB0b3ImKTsKIAotICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90Jik7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0
YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgdmly
dHVhbCBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJP
TCB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIEpTX0VYUE9SVEVE
X1NZTUJPTCB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIHVuc2ln
bmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZ
TUJPTCB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSosIGNv
bnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIAotICAgICAgICB2aXJ0dWFs
IHZvaWQgcHV0KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwdXQo
RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlKTsKKyAgICAg
ICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgdm9pZCBwdXQoRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
KTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgdm9pZCBwdXQoRXhlY1N0YXRl
KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlKTsKIAotICAgICAgICB2aXJ0
dWFsIHZvaWQgcHV0V2l0aEF0dHJpYnV0ZXMoSlNHbG9iYWxEYXRhKiwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBib29s
IGNoZWNrUmVhZE9ubHksIFB1dFByb3BlcnR5U2xvdCYgc2xvdCk7Ci0gICAgICAgIHZpcnR1YWwg
dm9pZCBwdXRXaXRoQXR0cmlidXRlcyhKU0dsb2JhbERhdGEqLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwotICAgICAg
ICB2aXJ0dWFsIHZvaWQgcHV0V2l0aEF0dHJpYnV0ZXMoSlNHbG9iYWxEYXRhKiwgdW5zaWduZWQg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKLSAgICAg
ICAgdmlydHVhbCB2b2lkIHB1dFdpdGhBdHRyaWJ1dGVzKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcywg
Ym9vbCBjaGVja1JlYWRPbmx5LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpOwotICAgICAgICB2aXJ0
dWFsIHZvaWQgcHV0V2l0aEF0dHJpYnV0ZXMoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKLSAgICAg
ICAgdmlydHVhbCB2b2lkIHB1dFdpdGhBdHRyaWJ1dGVzKEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAgICAg
IEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIHZvaWQgcHV0V2l0aEF0dHJpYnV0ZXMoSlNHbG9i
YWxEYXRhKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzLCBib29sIGNoZWNrUmVhZE9ubHksIFB1dFByb3BlcnR5U2xvdCYg
c2xvdCk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIHZvaWQgcHV0V2l0aEF0
dHJpYnV0ZXMoSlNHbG9iYWxEYXRhKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgSlNfRVhQT1JURURf
U1lNQk9MIHZpcnR1YWwgdm9pZCBwdXRXaXRoQXR0cmlidXRlcyhKU0dsb2JhbERhdGEqLCB1bnNp
Z25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwor
ICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCB2b2lkIHB1dFdpdGhBdHRyaWJ1dGVz
KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgYm9vbCBjaGVja1JlYWRPbmx5LCBQdXRQcm9wZXJ0eVNs
b3QmIHNsb3QpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCB2b2lkIHB1dFdp
dGhBdHRyaWJ1dGVzKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAgICAgIEpTX0VYUE9SVEVE
X1NZTUJPTCB2aXJ0dWFsIHZvaWQgcHV0V2l0aEF0dHJpYnV0ZXMoRXhlY1N0YXRlKiwgdW5zaWdu
ZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKIAog
ICAgICAgICBib29sIHByb3BlcnR5SXNFbnVtZXJhYmxlKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSkgY29uc3Q7CiAKLSAgICAgICAgYm9vbCBoYXNQcm9wZXJ0eShF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpIGNvbnN0OwotICAgICAg
ICBib29sIGhhc1Byb3BlcnR5KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSkgY29u
c3Q7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBib29sIGhhc1Byb3BlcnR5KEV4ZWNTdGF0
ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkgY29uc3Q7CisgICAgICAgIEpTX0VY
UE9SVEVEX1NZTUJPTCBib29sIGhhc1Byb3BlcnR5KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3Bl
cnR5TmFtZSkgY29uc3Q7CiAgICAgICAgIGJvb2wgaGFzT3duUHJvcGVydHkoRXhlY1N0YXRlKiwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKSBjb25zdDsKIAotICAgICAgICB2aXJ0dWFs
IGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lKTsKLSAgICAgICAgdmlydHVhbCBib29sIGRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSos
IHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0
dWFsIGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgYm9vbCBkZWxl
dGVQcm9wZXJ0eShFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwogCi0gICAgICAg
IHZpcnR1YWwgSlNWYWx1ZSBkZWZhdWx0VmFsdWUoRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0
aXZlVHlwZSkgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIEpTVmFs
dWUgZGVmYXVsdFZhbHVlKEV4ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpIGNvbnN0
OwogCi0gICAgICAgIHZpcnR1YWwgYm9vbCBoYXNJbnN0YW5jZShFeGVjU3RhdGUqLCBKU1ZhbHVl
LCBKU1ZhbHVlIHByb3RvdHlwZVByb3BlcnR5KTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9M
IHZpcnR1YWwgYm9vbCBoYXNJbnN0YW5jZShFeGVjU3RhdGUqLCBKU1ZhbHVlLCBKU1ZhbHVlIHBy
b3RvdHlwZVByb3BlcnR5KTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJvcGVydHlOYW1l
cyhFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSBtb2RlID0g
RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBnZXRPd25Q
cm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25N
b2RlIG1vZGUgPSBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICAgICAgSlNfRVhQT1JU
RURfU1lNQk9MIHZpcnR1YWwgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlIG1vZGUgPSBFeGNsdWRlRG9udEVudW1Qcm9w
ZXJ0aWVzKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgdm9pZCBnZXRPd25Q
cm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25N
b2RlIG1vZGUgPSBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKIAogICAgICAgICB2aXJ0dWFs
IEpTVmFsdWUgdG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSA9
IE5vUHJlZmVyZW5jZSkgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBnZXRQcmltaXRpdmVO
dW1iZXIoRXhlY1N0YXRlKiwgZG91YmxlJiBudW1iZXIsIEpTVmFsdWUmIHZhbHVlKTsKLSAgICAg
ICAgdmlydHVhbCBib29sIHRvQm9vbGVhbihFeGVjU3RhdGUqKSBjb25zdDsKLSAgICAgICAgdmly
dHVhbCBkb3VibGUgdG9OdW1iZXIoRXhlY1N0YXRlKikgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwg
VVN0cmluZyB0b1N0cmluZyhFeGVjU3RhdGUqKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCBKU09i
amVjdCogdG9PYmplY3QoRXhlY1N0YXRlKikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZ
TUJPTCB2aXJ0dWFsIGJvb2wgZ2V0UHJpbWl0aXZlTnVtYmVyKEV4ZWNTdGF0ZSosIGRvdWJsZSYg
bnVtYmVyLCBKU1ZhbHVlJiB2YWx1ZSk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0
dWFsIGJvb2wgdG9Cb29sZWFuKEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICBKU19FWFBPUlRF
RF9TWU1CT0wgdmlydHVhbCBkb3VibGUgdG9OdW1iZXIoRXhlY1N0YXRlKikgY29uc3Q7CisgICAg
ICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIFVTdHJpbmcgdG9TdHJpbmcoRXhlY1N0YXRl
KikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIEpTT2JqZWN0KiB0
b09iamVjdChFeGVjU3RhdGUqKSBjb25zdDsKIAotICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiB0
b1RoaXNPYmplY3QoRXhlY1N0YXRlKikgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgSlNPYmplY3Qq
IHVud3JhcHBlZE9iamVjdCgpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCBK
U09iamVjdCogdG9UaGlzT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICBKU19FWFBP
UlRFRF9TWU1CT0wgdmlydHVhbCBKU09iamVjdCogdW53cmFwcGVkT2JqZWN0KCk7CiAKICAgICAg
ICAgYm9vbCBnZXRQcm9wZXJ0eVNwZWNpZmljVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQ2VsbComIHNwZWNpZmljRnVuY3Rpb24pIGNvbnN0
OwogCkBAIC0xNzUsMTMgKzE3NSwxMyBAQAogICAgICAgICBib29sIGhhc0N1c3RvbVByb3BlcnRp
ZXMoKSB7IHJldHVybiAhbV9zdHJ1Y3R1cmUtPmlzRW1wdHkoKTsgfQogICAgICAgICBib29sIGhh
c0dldHRlclNldHRlclByb3BlcnRpZXMoKSB7IHJldHVybiBtX3N0cnVjdHVyZS0+aGFzR2V0dGVy
U2V0dGVyUHJvcGVydGllcygpOyB9CiAKLSAgICAgICAgdm9pZCBwdXREaXJlY3QoY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyLCBib29s
IGNoZWNrUmVhZE9ubHksIFB1dFByb3BlcnR5U2xvdCYgc2xvdCk7Ci0gICAgICAgIHZvaWQgcHV0
RGlyZWN0KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5z
aWduZWQgYXR0ciA9IDApOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBwdXREaXJl
Y3QoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25l
ZCBhdHRyLCBib29sIGNoZWNrUmVhZE9ubHksIFB1dFByb3BlcnR5U2xvdCYgc2xvdCk7CisgICAg
ICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIHB1dERpcmVjdChjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHIgPSAwKTsKIAotICAgICAg
ICB2b2lkIHB1dERpcmVjdEZ1bmN0aW9uKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
SlNDZWxsKiB2YWx1ZSwgdW5zaWduZWQgYXR0ciA9IDApOwotICAgICAgICB2b2lkIHB1dERpcmVj
dEZ1bmN0aW9uKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDZWxsKiB2YWx1ZSwg
dW5zaWduZWQgYXR0ciwgYm9vbCBjaGVja1JlYWRPbmx5LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3Qp
OwotICAgICAgICB2b2lkIHB1dERpcmVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSW50ZXJu
YWxGdW5jdGlvbiogZnVuY3Rpb24sIHVuc2lnbmVkIGF0dHIgPSAwKTsKLSAgICAgICAgdm9pZCBw
dXREaXJlY3RGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTRnVuY3Rpb24qIGZ1bmN0aW9uLCB1
bnNpZ25lZCBhdHRyID0gMCk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIHB1dERp
cmVjdEZ1bmN0aW9uKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDZWxsKiB2YWx1
ZSwgdW5zaWduZWQgYXR0ciA9IDApOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBw
dXREaXJlY3RGdW5jdGlvbihjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQ2VsbCog
dmFsdWUsIHVuc2lnbmVkIGF0dHIsIGJvb2wgY2hlY2tSZWFkT25seSwgUHV0UHJvcGVydHlTbG90
JiBzbG90KTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZvaWQgcHV0RGlyZWN0RnVuY3Rp
b24oRXhlY1N0YXRlKiBleGVjLCBJbnRlcm5hbEZ1bmN0aW9uKiBmdW5jdGlvbiwgdW5zaWduZWQg
YXR0ciA9IDApOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBwdXREaXJlY3RGdW5j
dGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTRnVuY3Rpb24qIGZ1bmN0aW9uLCB1bnNpZ25lZCBhdHRy
ID0gMCk7CiAKICAgICAgICAgdm9pZCBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHIgPSAw
KTsKICAgICAgICAgdm9pZCBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDZWxsKiB2YWx1ZSwgdW5zaWduZWQgYXR0ciA9
IDApOwpAQCAtMTkyLDEzICsxOTIsMTMgQEAKICAgICAgICAgSlNWYWx1ZSBnZXREaXJlY3RPZmZz
ZXQoc2l6ZV90IG9mZnNldCkgY29uc3QgeyByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHByb3BlcnR5
U3RvcmFnZSgpW29mZnNldF0pOyB9CiAgICAgICAgIHZvaWQgcHV0RGlyZWN0T2Zmc2V0KHNpemVf
dCBvZmZzZXQsIEpTVmFsdWUgdmFsdWUpIHsgcHJvcGVydHlTdG9yYWdlKClbb2Zmc2V0XSA9IEpT
VmFsdWU6OmVuY29kZSh2YWx1ZSk7IH0KIAotICAgICAgICB2b2lkIGZpbGxHZXR0ZXJQcm9wZXJ0
eVNsb3QoUHJvcGVydHlTbG90JiwgSlNWYWx1ZSogbG9jYXRpb24pOworICAgICAgICBKU19FWFBP
UlRFRF9TWU1CT0wgdm9pZCBmaWxsR2V0dGVyUHJvcGVydHlTbG90KFByb3BlcnR5U2xvdCYsIEpT
VmFsdWUqIGxvY2F0aW9uKTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgZGVmaW5lR2V0dGVyKEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNPYmplY3QqIGdldHRl
ckZ1bmN0aW9uLCB1bnNpZ25lZCBhdHRyaWJ1dGVzID0gMCk7Ci0gICAgICAgIHZpcnR1YWwgdm9p
ZCBkZWZpbmVTZXR0ZXIoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBKU09iamVjdCogc2V0dGVyRnVuY3Rpb24sIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSAwKTsKLSAg
ICAgICAgdmlydHVhbCBKU1ZhbHVlIGxvb2t1cEdldHRlcihFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUpOwotICAgICAgICB2aXJ0dWFsIEpTVmFsdWUgbG9va3VwU2V0
dGVyKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7Ci0gICAgICAg
IHZpcnR1YWwgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cp
OworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCB2b2lkIGRlZmluZUdldHRlcihF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBnZXR0
ZXJGdW5jdGlvbiwgdW5zaWduZWQgYXR0cmlidXRlcyA9IDApOworICAgICAgICBKU19FWFBPUlRF
RF9TWU1CT0wgdmlydHVhbCB2b2lkIGRlZmluZVNldHRlcihFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBzZXR0ZXJGdW5jdGlvbiwgdW5zaWduZWQg
YXR0cmlidXRlcyA9IDApOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCBKU1Zh
bHVlIGxvb2t1cEdldHRlcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCBKU1ZhbHVlIGxvb2t1cFNl
dHRlcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOworICAgICAg
ICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCBib29sIGRlZmluZU93blByb3BlcnR5KEV4ZWNT
dGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9y
JiwgYm9vbCBzaG91bGRUaHJvdyk7CiAKICAgICAgICAgdmlydHVhbCBib29sIGlzR2xvYmFsT2Jq
ZWN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzVmFy
aWFibGVPYmplY3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtMjA3LDcgKzIwNyw3IEBA
CiAKICAgICAgICAgdmlydHVhbCBDb21wbFR5cGUgZXhjZXB0aW9uVHlwZSgpIGNvbnN0IHsgcmV0
dXJuIFRocm93OyB9CiAKLSAgICAgICAgdm9pZCBhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShzaXpl
X3Qgb2xkU2l6ZSwgc2l6ZV90IG5ld1NpemUpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wg
dm9pZCBhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShzaXplX3Qgb2xkU2l6ZSwgc2l6ZV90IG5ld1Np
emUpOwogICAgICAgICB2b2lkIGFsbG9jYXRlUHJvcGVydHlTdG9yYWdlSW5saW5lKHNpemVfdCBv
bGRTaXplLCBzaXplX3QgbmV3U2l6ZSk7CiAgICAgICAgIGJvb2wgaXNVc2luZ0lubGluZVN0b3Jh
Z2UoKSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVyZS0+aXNVc2luZ0lubGluZVN0b3JhZ2UoKTsg
fQogCkBAIC0yNjQsNyArMjY0LDcgQEAKICAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PEpTVmFsdWUqPigmcHJvcGVydHlTdG9yYWdlKClbb2Zmc2V0XSk7CiAgICAgICAgIH0KIAot
ICAgICAgICB2b2lkIHB1dERpcmVjdEludGVybmFsKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0ciwgYm9vbCBjaGVja1JlYWRPbmx5LCBQ
dXRQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTQ2VsbCopOworICAgICAgICBKU19FWFBPUlRFRF9TWU1C
T0wgdm9pZCBwdXREaXJlY3RJbnRlcm5hbChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHIsIGJvb2wgY2hlY2tSZWFkT25seSwgUHV0UHJv
cGVydHlTbG90JiBzbG90LCBKU0NlbGwqKTsKICAgICAgICAgdm9pZCBwdXREaXJlY3RJbnRlcm5h
bChKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUg
dmFsdWUsIHVuc2lnbmVkIGF0dHIsIGJvb2wgY2hlY2tSZWFkT25seSwgUHV0UHJvcGVydHlTbG90
JiBzbG90KTsKICAgICAgICAgdm9pZCBwdXREaXJlY3RJbnRlcm5hbChKU0dsb2JhbERhdGEmLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0
dHIgPSAwKTsKIApAQCAtMzExLDcgKzMxMSw3IEBACiAgICAgbV9zdHJ1Y3R1cmUtPmRlcmVmKCk7
CiB9CiAKLWlubGluZSBKU1ZhbHVlIEpTT2JqZWN0Ojpwcm90b3R5cGUoKSBjb25zdAorSlNfRVhQ
T1JURURfU1lNQk9MIGlubGluZSBKU1ZhbHVlIEpTT2JqZWN0Ojpwcm90b3R5cGUoKSBjb25zdAog
ewogICAgIHJldHVybiBtX3N0cnVjdHVyZS0+c3RvcmVkUHJvdG90eXBlKCk7CiB9CkBAIC0zOTEs
NyArMzkxLDcgQEAKIC8vIEl0IG1heSBzZWVtIGNyYXp5IHRvIGlubGluZSBhIGZ1bmN0aW9uIHRo
aXMgbGFyZ2UsIGVzcGVjaWFsbHkgYSB2aXJ0dWFsIGZ1bmN0aW9uLAogLy8gYnV0IGl0IG1ha2Vz
IGEgYmlnIGRpZmZlcmVuY2UgdG8gcHJvcGVydHkgbG9va3VwIHRoYXQgZGVyaXZlZCBjbGFzc2Vz
IGNhbiBpbmxpbmUgdGhlaXIKIC8vIGJhc2UgY2xhc3MgY2FsbCB0byB0aGlzLgotQUxXQVlTX0lO
TElORSBib29sIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK0pTX0VY
UE9SVEVEX1NZTUJPTCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OmdldE93blByb3BlcnR5
U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90JiBzbG90KQogewogICAgIHJldHVybiBpbmxpbmVHZXRPd25Qcm9wZXJ0eVNsb3Qo
ZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KQEAgLTU3Niw3ICs1NzYsNyBAQAogICAgIHB1
dERpcmVjdEludGVybmFsKHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIGZhbHNlLCBz
bG90LCBnZXRKU0Z1bmN0aW9uKGdsb2JhbERhdGEsIHZhbHVlKSk7CiB9CiAKLWlubGluZSB2b2lk
IEpTT2JqZWN0OjpwdXREaXJlY3QoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBib29sIGNoZWNrUmVhZE9ubHksIFB1dFBy
b3BlcnR5U2xvdCYgc2xvdCkKK0pTX0VYUE9SVEVEX1NZTUJPTCBpbmxpbmUgdm9pZCBKU09iamVj
dDo6cHV0RGlyZWN0KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgYm9vbCBjaGVja1JlYWRPbmx5LCBQdXRQcm9wZXJ0eVNs
b3QmIHNsb3QpCiB7CiAgICAgQVNTRVJUKHZhbHVlKTsKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAo
dmFsdWUpIHx8IEhlYXA6OmhlYXAodmFsdWUpID09IEhlYXA6OmhlYXAodGhpcykpOwpAQCAtNTg0
LDE4ICs1ODQsMTggQEAKICAgICBwdXREaXJlY3RJbnRlcm5hbChwcm9wZXJ0eU5hbWUsIHZhbHVl
LCBhdHRyaWJ1dGVzLCBjaGVja1JlYWRPbmx5LCBzbG90LCAwKTsKIH0KIAotaW5saW5lIHZvaWQg
SlNPYmplY3Q6OnB1dERpcmVjdChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCitKU19FWFBPUlRFRF9TWU1CT0wgaW5saW5l
IHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAgICAgUHV0UHJvcGVydHlT
bG90IHNsb3Q7CiAgICAgcHV0RGlyZWN0SW50ZXJuYWwocHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0
cmlidXRlcywgZmFsc2UsIHNsb3QsIDApOwogfQogCi1pbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0
RGlyZWN0RnVuY3Rpb24oY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0NlbGwqIHZh
bHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBib29sIGNoZWNrUmVhZE9ubHksIFB1dFByb3BlcnR5
U2xvdCYgc2xvdCkKK0pTX0VYUE9SVEVEX1NZTUJPTCBpbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0
RGlyZWN0RnVuY3Rpb24oY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0NlbGwqIHZh
bHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBib29sIGNoZWNrUmVhZE9ubHksIFB1dFByb3BlcnR5
U2xvdCYgc2xvdCkKIHsKICAgICBwdXREaXJlY3RJbnRlcm5hbChwcm9wZXJ0eU5hbWUsIHZhbHVl
LCBhdHRyaWJ1dGVzLCBjaGVja1JlYWRPbmx5LCBzbG90LCB2YWx1ZSk7CiB9CiAKLWlubGluZSB2
b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RGdW5jdGlvbihjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIEpTQ2VsbCogdmFsdWUsIHVuc2lnbmVkIGF0dHIpCitKU19FWFBPUlRFRF9TWU1CT0wg
aW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdEZ1bmN0aW9uKGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgSlNDZWxsKiB2YWx1ZSwgdW5zaWduZWQgYXR0cikKIHsKICAgICBQdXRQ
cm9wZXJ0eVNsb3Qgc2xvdDsKICAgICBwdXREaXJlY3RJbnRlcm5hbChwcm9wZXJ0eU5hbWUsIHZh
bHVlLCBhdHRyLCBmYWxzZSwgc2xvdCwgdmFsdWUpOwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGNlcHRpb25IZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGNlcHRpb25IZWxwZXJzLmgJKHJldmlzaW9uIDYxNzIyKQorKysgSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDkgKzQy
LDkgQEAKICAgICBjbGFzcyBOb2RlOwogICAgIHN0cnVjdCBJbnN0cnVjdGlvbjsKICAgICAKLSAg
ICBKU1ZhbHVlIGNyZWF0ZUludGVycnVwdGVkRXhlY3V0aW9uRXhjZXB0aW9uKEpTR2xvYmFsRGF0
YSopOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBKU1ZhbHVlIGNyZWF0ZUludGVycnVwdGVkRXhl
Y3V0aW9uRXhjZXB0aW9uKEpTR2xvYmFsRGF0YSopOwogICAgIEpTVmFsdWUgY3JlYXRlVGVybWlu
YXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihKU0dsb2JhbERhdGEqKTsKLSAgICBKU09iamVjdCogY3Jl
YXRlU3RhY2tPdmVyZmxvd0Vycm9yKEV4ZWNTdGF0ZSopOworICAgIEpTX0VYUE9SVEVEX1NZTUJP
TCBKU09iamVjdCogY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKEV4ZWNTdGF0ZSopOwogICAgIEpT
VmFsdWUgY3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyJiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIENvZGVCbG9jayopOwogICAgIEpTTm90
QW5PYmplY3RFcnJvclN0dWIqIGNyZWF0ZU5vdEFuT2JqZWN0RXJyb3JTdHViKEV4ZWNTdGF0ZSos
IGJvb2wgaXNOdWxsKTsKICAgICBKU09iamVjdCogY3JlYXRlSW52YWxpZFBhcmFtRXJyb3IoRXhl
Y1N0YXRlKiwgY29uc3QgY2hhciogb3AsIEpTVmFsdWUsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0
LCBDb2RlQmxvY2sqKTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCShyZXZp
c2lvbiA2MTcyMikKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NCwxNCArNDQsMTQgQEAKICAgICAgICAgdHlwZWRlZiBKU09iamVjdFdp
dGhHbG9iYWxPYmplY3QgQmFzZTsKIAogICAgIHB1YmxpYzoKLSAgICAgICAgSlNGdW5jdGlvbihF
eGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4s
IGludCBsZW5ndGgsIGNvbnN0IElkZW50aWZpZXImLCBOYXRpdmVGdW5jdGlvbik7CisgICAgICAg
IEpTX0VYUE9SVEVEX1NZTUJPTCBKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0
KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgaW50IGxlbmd0aCwgY29uc3QgSWRlbnRp
ZmllciYsIE5hdGl2ZUZ1bmN0aW9uKTsKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBKU0Z1bmN0
aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0
dXJlPiwgaW50IGxlbmd0aCwgY29uc3QgSWRlbnRpZmllciYsIFBhc3NSZWZQdHI8TmF0aXZlRXhl
Y3V0YWJsZT4pOwogI2VuZGlmCiAgICAgICAgIEpTRnVuY3Rpb24oRXhlY1N0YXRlKiwgTm9uTnVs
bFBhc3NSZWZQdHI8RnVuY3Rpb25FeGVjdXRhYmxlPiwgU2NvcGVDaGFpbk5vZGUqKTsKICAgICAg
ICAgdmlydHVhbCB+SlNGdW5jdGlvbigpOwogCi0gICAgICAgIGNvbnN0IFVTdHJpbmcmIG5hbWUo
RXhlY1N0YXRlKik7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBjb25zdCBVU3RyaW5nJiBu
YW1lKEV4ZWNTdGF0ZSopOwogICAgICAgICBjb25zdCBVU3RyaW5nIGRpc3BsYXlOYW1lKEV4ZWNT
dGF0ZSopOwogICAgICAgICBjb25zdCBVU3RyaW5nIGNhbGN1bGF0ZWREaXNwbGF5TmFtZShFeGVj
U3RhdGUqKTsKIApAQCAtNzIsNyArNzIsNyBAQAogICAgICAgICBpbmxpbmUgYm9vbCBpc0hvc3RG
dW5jdGlvbigpIGNvbnN0OwogICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGpzRXhlY3V0YWJs
ZSgpIGNvbnN0OwogCi0gICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNzSW5m
byBpbmZvOworICAgICAgICBzdGF0aWMgSlNfRVhQT1JURURfU1lNQk9MIGNvbnN0IENsYXNzSW5m
byBpbmZvOwogCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlU3Ry
dWN0dXJlKEpTVmFsdWUgcHJvdG90eXBlKSAKICAgICAgICAgeyAKQEAgLTkwLDcgKzkwLDcgQEAK
ICAgICBwcml2YXRlOgogICAgICAgICBKU0Z1bmN0aW9uKE5vbk51bGxQYXNzUmVmUHRyPFN0cnVj
dHVyZT4pOwogCi0gICAgICAgIGJvb2wgaXNIb3N0RnVuY3Rpb25Ob25JbmxpbmUoKSBjb25zdDsK
KyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIGJvb2wgaXNIb3N0RnVuY3Rpb25Ob25JbmxpbmUo
KSBjb25zdDsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNT
dGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgdmlydHVh
bCBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlm
aWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09iamVjdFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T2JqZWN0UHJvdG90eXBlLmgJKHJldmlzaW9uIDYxNzIyKQorKysgSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PYmplY3RQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQAog
ICAgICAgICBib29sIG1faGFzTm9Qcm9wZXJ0aWVzV2l0aFVJbnQzMk5hbWVzOwogICAgIH07CiAK
LSAgICBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY1RvU3RyaW5n
KEV4ZWNTdGF0ZSopOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSopOwogCiB9IC8vIG5h
bWVzcGFjZSBKU0MKIApJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmgJKHJldmlzaW9uIDYx
NzIyKQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTE0NCw3ICsxNDQsNyBAQAogICAgICAgICBzdGF0aWMgdm9pZCBtYXJrTGlzdHMoTWFya1N0
YWNrJiwgTGlzdFNldCYpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCBzbG93QXBwZW5k
KEpTVmFsdWUpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBzbG93QXBwZW5kKEpT
VmFsdWUpOwogICAgICAgICAKICAgICAgICAgUmVnaXN0ZXIqIG1fYnVmZmVyOwogICAgICAgICBz
aXplX3QgbV9zaXplOwpAQCAtMjM0LDcgKzIzNCw3IEBACiAgICAgICAgIGNvbnN0X2l0ZXJhdG9y
IGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9hcmdzOyB9CiAgICAgICAgIGNvbnN0X2l0ZXJhdG9y
IGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fYXJncyArIG1fYXJnQ291bnQ7IH0KIAotICAgICAgICB2
b2lkIGdldFNsaWNlKGludCBzdGFydEluZGV4LCBBcmdMaXN0JiByZXN1bHQpIGNvbnN0OworICAg
ICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBnZXRTbGljZShpbnQgc3RhcnRJbmRleCwgQXJn
TGlzdCYgcmVzdWx0KSBjb25zdDsKICAgICBwcml2YXRlOgogICAgICAgICBKU1ZhbHVlKiBtX2Fy
Z3M7CiAgICAgICAgIHNpemVfdCBtX2FyZ0NvdW50OwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5LmgJKHJldmlzaW9uIDYxNzIyKQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDkgKzQxLDkgQEAKICAgICAgICAgZnJpZW5kIGNsYXNz
IFdhbGtlcjsKIAogICAgIHB1YmxpYzoKLSAgICAgICAgZXhwbGljaXQgSlNBcnJheShOb25OdWxs
UGFzc1JlZlB0cjxTdHJ1Y3R1cmU+KTsKLSAgICAgICAgSlNBcnJheShOb25OdWxsUGFzc1JlZlB0
cjxTdHJ1Y3R1cmU+LCB1bnNpZ25lZCBpbml0aWFsTGVuZ3RoKTsKLSAgICAgICAgSlNBcnJheShO
b25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBjb25zdCBBcmdMaXN0JiBpbml0aWFsVmFsdWVz
KTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIGV4cGxpY2l0IEpTQXJyYXkoTm9uTnVsbFBh
c3NSZWZQdHI8U3RydWN0dXJlPik7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBKU0FycmF5
KE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIHVuc2lnbmVkIGluaXRpYWxMZW5ndGgpOwor
ICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgSlNBcnJheShOb25OdWxsUGFzc1JlZlB0cjxTdHJ1
Y3R1cmU+LCBjb25zdCBBcmdMaXN0JiBpbml0aWFsVmFsdWVzKTsKICAgICAgICAgdmlydHVhbCB+
SlNBcnJheSgpOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhl
Y1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsK
QEAgLTUxLDEwICs1MSwxMCBAQAogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0
b3ImKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHB1dChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUpOyAvLyBGSVhNRTogTWFrZSBwcm90ZWN0ZWQgYW5kIGFkZCBzZXRJ
dGVtLgogCi0gICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNzSW5mbyBpbmZv
OworICAgICAgICBzdGF0aWMgSlNfRVhQT1JURURfU1lNQk9MIGNvbnN0IENsYXNzSW5mbyBpbmZv
OwogCiAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZS0+
bV9sZW5ndGg7IH0KLSAgICAgICAgdm9pZCBzZXRMZW5ndGgodW5zaWduZWQpOyAvLyBPSyB0byB1
c2Ugb24gbmV3IGFycmF5cywgYnV0IG5vdCBpZiBpdCBtaWdodCBiZSBhIFJlZ0V4cE1hdGNoQXJy
YXkuCisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIHNldExlbmd0aCh1bnNpZ25lZCk7
IC8vIE9LIHRvIHVzZSBvbiBuZXcgYXJyYXlzLCBidXQgbm90IGlmIGl0IG1pZ2h0IGJlIGEgUmVn
RXhwTWF0Y2hBcnJheS4KIAogICAgICAgICB2b2lkIHNvcnQoRXhlY1N0YXRlKik7CiAgICAgICAg
IHZvaWQgc29ydChFeGVjU3RhdGUqLCBKU1ZhbHVlIGNvbXBhcmVGdW5jdGlvbiwgQ2FsbFR5cGUs
IGNvbnN0IENhbGxEYXRhJik7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFs
RnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFs
RnVuY3Rpb24uaAkocmV2aXNpb24gNjE3MjIpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGVybmFsRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogICAgIGNs
YXNzIEludGVybmFsRnVuY3Rpb24gOiBwdWJsaWMgSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0IHsK
ICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8o
KSBjb25zdDsgCi0gICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNzSW5mbyBp
bmZvOworICAgICAgICBzdGF0aWMgSlNfRVhQT1JURURfU1lNQk9MIGNvbnN0IENsYXNzSW5mbyBp
bmZvOwogCiAgICAgICAgIGNvbnN0IFVTdHJpbmcmIG5hbWUoRXhlY1N0YXRlKik7CiAgICAgICAg
IGNvbnN0IFVTdHJpbmcgZGlzcGxheU5hbWUoRXhlY1N0YXRlKik7CkBAIC01MSw3ICs1MSw3IEBA
CiAgICAgICAgIC8vIE9ubHkgdXNlZCB0byBhbGxvdyB1cyB0byBkZXRlcm1pbmUgdGhlIEpTRnVu
Y3Rpb24gdnB0cgogICAgICAgICBJbnRlcm5hbEZ1bmN0aW9uKE5vbk51bGxQYXNzUmVmUHRyPFN0
cnVjdHVyZT4gc3RydWN0dXJlKTsKIAotICAgICAgICBJbnRlcm5hbEZ1bmN0aW9uKEpTR2xvYmFs
RGF0YSosIEpTR2xvYmFsT2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgY29u
c3QgSWRlbnRpZmllciYpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgSW50ZXJuYWxGdW5j
dGlvbihKU0dsb2JhbERhdGEqLCBKU0dsb2JhbE9iamVjdCosIE5vbk51bGxQYXNzUmVmUHRyPFN0
cnVjdHVyZT4sIGNvbnN0IElkZW50aWZpZXImKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZp
cnR1YWwgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoQ2FsbERhdGEmKSA9IDA7CkluZGV4OiBKYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0lkZW50aWZpZXIuaAkocmV2aXNpb24gNjE3MjIpCisrKyBKYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0lkZW50aWZpZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsOSArNTQsOSBAQAog
ICAgICAgICAKICAgICAgICAgY29uc3QgY2hhciogYXNjaWkoKSBjb25zdCB7IHJldHVybiBfdXN0
cmluZy5hc2NpaSgpOyB9CiAgICAgICAgIAotICAgICAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9t
KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgeSk7Ci0gICAgICAgIHN0YXRpYyBJZGVudGlmaWVy
IGZyb20oRXhlY1N0YXRlKiBleGVjLCBpbnQgeSk7Ci0gICAgICAgIHN0YXRpYyBJZGVudGlmaWVy
IGZyb20oRXhlY1N0YXRlKiBleGVjLCBkb3VibGUgeSk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZ
TUJPTCBzdGF0aWMgSWRlbnRpZmllciBmcm9tKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgeSk7
CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0aWMgSWRlbnRpZmllciBmcm9tKEV4ZWNT
dGF0ZSogZXhlYywgaW50IHkpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgc3RhdGljIElk
ZW50aWZpZXIgZnJvbShFeGVjU3RhdGUqIGV4ZWMsIGRvdWJsZSB5KTsKICAgICAgICAgc3RhdGlj
IElkZW50aWZpZXIgZnJvbShKU0dsb2JhbERhdGEqLCB1bnNpZ25lZCB5KTsKICAgICAgICAgc3Rh
dGljIElkZW50aWZpZXIgZnJvbShKU0dsb2JhbERhdGEqLCBpbnQgeSk7CiAgICAgICAgIHN0YXRp
YyBJZGVudGlmaWVyIGZyb20oSlNHbG9iYWxEYXRhKiwgZG91YmxlIHkpOwpAQCAtNzYsMTIgKzc2
LDEyIEBACiAgICAgICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgSWRlbnRpZmllciYs
IGNvbnN0IGNoYXIqKTsKICAgICAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJZGVu
dGlmaWVyJiwgY29uc3QgY2hhciopOwogICAgIAotICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChj
b25zdCBVU3RyaW5nOjpSZXAqLCBjb25zdCBjaGFyKik7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZ
TUJPTCBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBVU3RyaW5nOjpSZXAqLCBjb25zdCBjaGFyKik7
CiAgICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFVTdHJpbmc6OlJlcCosIGNvbnN0IFVD
aGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3Qg
VVN0cmluZzo6UmVwKiBhLCBjb25zdCBVU3RyaW5nOjpSZXAqIGIpIHsgcmV0dXJuIDo6ZXF1YWwo
YSwgYik7IH0KIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxVU3RyaW5nOjpSZXA+IGFkZChF
eGVjU3RhdGUqLCBjb25zdCBjaGFyKik7IC8vIE9ubHkgdG8gYmUgdXNlZCB3aXRoIHN0cmluZyBs
aXRlcmFscy4KLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8VVN0cmluZzo6UmVwPiBhZGQoSlNH
bG9iYWxEYXRhKiwgY29uc3QgY2hhciopOyAvLyBPbmx5IHRvIGJlIHVzZWQgd2l0aCBzdHJpbmcg
bGl0ZXJhbHMuCisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0aWMgUGFzc1JlZlB0cjxV
U3RyaW5nOjpSZXA+IGFkZChFeGVjU3RhdGUqLCBjb25zdCBjaGFyKik7IC8vIE9ubHkgdG8gYmUg
dXNlZCB3aXRoIHN0cmluZyBsaXRlcmFscy4KKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHN0
YXRpYyBQYXNzUmVmUHRyPFVTdHJpbmc6OlJlcD4gYWRkKEpTR2xvYmFsRGF0YSosIGNvbnN0IGNo
YXIqKTsgLy8gT25seSB0byBiZSB1c2VkIHdpdGggc3RyaW5nIGxpdGVyYWxzLgogCiAgICAgcHJp
dmF0ZToKICAgICAgICAgVVN0cmluZyBfdXN0cmluZzsKQEAgLTExMSwxMCArMTExLDEwIEBACiAg
ICAgICAgICAgICByZXR1cm4gYWRkU2xvd0Nhc2UoZ2xvYmFsRGF0YSwgcik7CiAgICAgICAgIH0K
IAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxVU3RyaW5nOjpSZXA+IGFkZFNsb3dDYXNlKEV4
ZWNTdGF0ZSosIFVTdHJpbmc6OlJlcCogcik7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBz
dGF0aWMgUGFzc1JlZlB0cjxVU3RyaW5nOjpSZXA+IGFkZFNsb3dDYXNlKEV4ZWNTdGF0ZSosIFVT
dHJpbmc6OlJlcCogcik7CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFVTdHJpbmc6OlJlcD4g
YWRkU2xvd0Nhc2UoSlNHbG9iYWxEYXRhKiwgVVN0cmluZzo6UmVwKiByKTsKIAotICAgICAgICBz
dGF0aWMgdm9pZCBjaGVja0N1cnJlbnRJZGVudGlmaWVyVGFibGUoRXhlY1N0YXRlKik7CisgICAg
ICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0aWMgdm9pZCBjaGVja0N1cnJlbnRJZGVudGlmaWVy
VGFibGUoRXhlY1N0YXRlKik7CiAgICAgICAgIHN0YXRpYyB2b2lkIGNoZWNrQ3VycmVudElkZW50
aWZpZXJUYWJsZShKU0dsb2JhbERhdGEqKTsKICAgICB9OwogICAgIApJbmRleDogSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCShyZXZpc2lvbiA2MTcyMikKKysrIEphdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDIwICsyOSwy
MCBAQAogICAgIGNsYXNzIFN0cmluZ09iamVjdCA6IHB1YmxpYyBKU1dyYXBwZXJPYmplY3Qgewog
ICAgIHB1YmxpYzoKICAgICAgICAgU3RyaW5nT2JqZWN0KEV4ZWNTdGF0ZSosIE5vbk51bGxQYXNz
UmVmUHRyPFN0cnVjdHVyZT4pOwotICAgICAgICBTdHJpbmdPYmplY3QoRXhlY1N0YXRlKiwgTm9u
TnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgY29uc3QgVVN0cmluZyYpOworICAgICAgICBKU19F
WFBPUlRFRF9TWU1CT0wgU3RyaW5nT2JqZWN0KEV4ZWNTdGF0ZSosIE5vbk51bGxQYXNzUmVmUHRy
PFN0cnVjdHVyZT4sIGNvbnN0IFVTdHJpbmcmKTsKIAogICAgICAgICBzdGF0aWMgU3RyaW5nT2Jq
ZWN0KiBjcmVhdGUoRXhlY1N0YXRlKiwgSlNTdHJpbmcqKTsKIAotICAgICAgICB2aXJ0dWFsIGJv
b2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3QoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
KTsKLSAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3Rh
dGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgICAgIEpT
X0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0
ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAg
ICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4
ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAg
IEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIAot
ICAgICAgICB2aXJ0dWFsIHZvaWQgcHV0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgdmly
dHVhbCBib29sIGRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlIG1vZGUgPSBFeGNs
dWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1
YWwgdm9pZCBwdXQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1C
T0wgdmlydHVhbCBib29sIGRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIHZv
aWQgZ2V0T3duUHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVu
dW1lcmF0aW9uTW9kZSBtb2RlID0gRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CiAKICAgICAg
ICAgdmlydHVhbCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZp
bmZvOyB9Ci0gICAgICAgIHN0YXRpYyBjb25zdCBKU19FWFBPUlREQVRBIENsYXNzSW5mbyBpbmZv
OworICAgICAgICBzdGF0aWMgY29uc3QgSlNfRVhQT1JURURfU1lNQk9MIENsYXNzSW5mbyBpbmZv
OwogCiAgICAgICAgIEpTU3RyaW5nKiBpbnRlcm5hbFZhbHVlKCkgY29uc3QgeyByZXR1cm4gYXNT
dHJpbmcoSlNXcmFwcGVyT2JqZWN0OjppbnRlcm5hbFZhbHVlKCkpO30KIApJbmRleDogSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuaAkocmV2aXNpb24gNjE3MjIpCisrKyBKYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDggKzczLDgg
QEAKICAgICAgICAgICAgICAgICBzZXRJbmRleChpLCBieXRlVmFsdWUpOwogICAgICAgICB9CiAK
LSAgICAgICAgSlNCeXRlQXJyYXkoRXhlY1N0YXRlKiBleGVjLCBOb25OdWxsUGFzc1JlZlB0cjxT
dHJ1Y3R1cmU+LCBXVEY6OkJ5dGVBcnJheSogc3RvcmFnZSwgY29uc3QgSlNDOjpDbGFzc0luZm8q
ID0gJnNfZGVmYXVsdEluZm8pOwotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+
IGNyZWF0ZVN0cnVjdHVyZShKU1ZhbHVlIHByb3RvdHlwZSk7CisgICAgICAgIEpTX0VYUE9SVEVE
X1NZTUJPTCBKU0J5dGVBcnJheShFeGVjU3RhdGUqIGV4ZWMsIE5vbk51bGxQYXNzUmVmUHRyPFN0
cnVjdHVyZT4sIFdURjo6Qnl0ZUFycmF5KiBzdG9yYWdlLCBjb25zdCBKU0M6OkNsYXNzSW5mbyog
PSAmc19kZWZhdWx0SW5mbyk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0aWMgUGFz
c1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU1ZhbHVlIHByb3RvdHlwZSk7CiAg
ICAgICAgIAogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6RXhl
Y1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVy
dHlTbG90Jik7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpF
eGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7Cklu
ZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgJKHJldmlzaW9uIDYxNzIyKQorKysgSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Mb29rdXAuaAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDcgKzEzOSw3IEBA
CiAgICAgICAgICAgICAgICAgY3JlYXRlVGFibGUoJmV4ZWMtPmdsb2JhbERhdGEoKSk7CiAgICAg
ICAgIH0KIAotICAgICAgICB2b2lkIGRlbGV0ZVRhYmxlKCkgY29uc3Q7CisgICAgICAgIEpTX0VY
UE9SVEVEX1NZTUJPTCB2b2lkIGRlbGV0ZVRhYmxlKCkgY29uc3Q7CiAKICAgICAgICAgLy8gRmlu
ZCBhbiBlbnRyeSBpbiB0aGUgdGFibGUsIGFuZCByZXR1cm4gdGhlIGVudHJ5LgogICAgICAgICBB
TFdBWVNfSU5MSU5FIGNvbnN0IEhhc2hFbnRyeSogZW50cnkoSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSBjb25zdApAQCAtMTc0LDEwICsxNzQs
MTAgQEAKICAgICAgICAgfQogCiAgICAgICAgIC8vIENvbnZlcnQgdGhlIGhhc2ggdGFibGUga2V5
cyB0byBpZGVudGlmaWVycy4KLSAgICAgICAgdm9pZCBjcmVhdGVUYWJsZShKU0dsb2JhbERhdGEq
KSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZvaWQgY3JlYXRlVGFibGUoSlNH
bG9iYWxEYXRhKikgY29uc3Q7CiAgICAgfTsKIAotICAgIHZvaWQgc2V0VXBTdGF0aWNGdW5jdGlv
blNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSGFzaEVudHJ5KiwgSlNPYmplY3QqIHRoaXNPYmplY3Qs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgSlNf
RVhQT1JURURfU1lNQk9MIHZvaWQgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRlKiwg
Y29uc3QgSGFzaEVudHJ5KiwgSlNPYmplY3QqIHRoaXNPYmplY3QsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAKICAgICAvKioKICAgICAgKiBUaGlzIG1l
dGhvZCBkb2VzIGl0IGFsbCAobG9va2luZyBpbiB0aGUgaGFzaHRhYmxlLCBjaGVja2luZyBmb3Ig
ZnVuY3Rpb24KSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5oCShyZXZpc2lvbiA2
MTcyMikKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC01NSw4ICs1NSw4IEBACiAgICAgICAgIEpTVmFsdWUgbV92YWx1ZTsKICAgICB9Owog
Ci0gICAgQ29tcGxldGlvbiBjaGVja1N5bnRheChFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2Rl
Jik7Ci0gICAgQ29tcGxldGlvbiBldmFsdWF0ZShFeGVjU3RhdGUqLCBTY29wZUNoYWluJiwgY29u
c3QgU291cmNlQ29kZSYsIEpTVmFsdWUgdGhpc1ZhbHVlID0gSlNWYWx1ZSgpKTsKKyAgICBKU19F
WFBPUlRFRF9TWU1CT0wgQ29tcGxldGlvbiBjaGVja1N5bnRheChFeGVjU3RhdGUqLCBjb25zdCBT
b3VyY2VDb2RlJik7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIENvbXBsZXRpb24gZXZhbHVhdGUo
RXhlY1N0YXRlKiwgU2NvcGVDaGFpbiYsIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IEpTVmFsdWUoKSk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCkluZGV4OiBKYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAkocmV2aXNpb24gNjE3MjIpCisrKyBK
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAkod29ya2luZyBjb3B5KQpA
QCAtNDQsMTQgKzQ0LDE0IEBACiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAKICAgICBwdWJs
aWM6Ci0gICAgICAgIFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSgpIGNvbnN0IHsgcmV0dXJuICpk
LT5zeW1ib2xUYWJsZTsgfQorICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgU3ltYm9sVGFibGUm
IHN5bWJvbFRhYmxlKCkgY29uc3QgeyByZXR1cm4gKmQtPnN5bWJvbFRhYmxlOyB9CiAKICAgICAg
ICAgdmlydHVhbCB2b2lkIHB1dFdpdGhBdHRyaWJ1dGVzKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKSA9IDA7CiAKLSAgICAgICAgdmly
dHVhbCBib29sIGRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImKTsK
LSAgICAgICAgdmlydHVhbCB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSA9IEV4Y2x1ZGVEb250RW51bVBy
b3BlcnRpZXMpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCBib29sIGRlbGV0
ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImKTsKKyAgICAgICAgSlNfRVhQ
T1JURURfU1lNQk9MIHZpcnR1YWwgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlIG1vZGUgPSBFeGNsdWRlRG9udEVu
dW1Qcm9wZXJ0aWVzKTsKICAgICAgICAgCi0gICAgICAgIHZpcnR1YWwgYm9vbCBpc1ZhcmlhYmxl
T2JqZWN0KCkgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIGJvb2wg
aXNWYXJpYWJsZU9iamVjdCgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNEeW5hbWlj
U2NvcGUoYm9vbCYgcmVxdWlyZXNEeW5hbWljQ2hlY2tzKSBjb25zdCA9IDA7CiAKICAgICAgICAg
UmVnaXN0ZXImIHJlZ2lzdGVyQXQoaW50IGluZGV4KSBjb25zdCB7IHJldHVybiBkLT5yZWdpc3Rl
cnNbaW5kZXhdOyB9CkBAIC05Myw3ICs5Myw3IEBACiAgICAgICAgIHZvaWQgc2V0UmVnaXN0ZXJz
KFJlZ2lzdGVyKiByLCBSZWdpc3RlciogcmVnaXN0ZXJBcnJheSk7CiAKICAgICAgICAgYm9vbCBz
eW1ib2xUYWJsZUdldChjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAg
IGJvb2wgc3ltYm9sVGFibGVHZXQoY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRv
ciYpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgYm9vbCBzeW1ib2xUYWJsZUdldChjb25z
dCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgICAgIGJvb2wgc3ltYm9s
VGFibGVHZXQoY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYsIGJvb2wmIHNsb3RJc1dy
aXRlYWJsZSk7CiAgICAgICAgIGJvb2wgc3ltYm9sVGFibGVQdXQoY29uc3QgSWRlbnRpZmllciYs
IEpTVmFsdWUpOwogICAgICAgICBib29sIHN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMoY29u
c3QgSWRlbnRpZmllciYsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwpJbmRleDogSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ2VsbC5oCShyZXZpc2lvbiA2MTcyMikKKysrIEphdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDggKzQ4LDggQEAKICAgICAgICAg
ZnJpZW5kIGNsYXNzIEpTR2xvYmFsRGF0YTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIGV4cGxp
Y2l0IEpTQ2VsbChTdHJ1Y3R1cmUqKTsKLSAgICAgICAgdmlydHVhbCB+SlNDZWxsKCk7CisgICAg
ICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBleHBsaWNpdCBKU0NlbGwoU3RydWN0dXJlKik7CisgICAg
ICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIH5KU0NlbGwoKTsKIAogICAgIHB1YmxpYzoK
ICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVEdW1teVN0cnVjdHVy
ZSgpCkBAIC02MSwzOSArNjEsMzkgQEAKICNpZiBVU0UoSlNWQUxVRTMyKQogICAgICAgICBib29s
IGlzTnVtYmVyKCkgY29uc3Q7CiAjZW5kaWYKLSAgICAgICAgYm9vbCBpc1N0cmluZygpIGNvbnN0
OwotICAgICAgICBib29sIGlzT2JqZWN0KCkgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBp
c0dldHRlclNldHRlcigpIGNvbnN0OwotICAgICAgICBib29sIGluaGVyaXRzKGNvbnN0IENsYXNz
SW5mbyopIGNvbnN0OworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgYm9vbCBpc1N0cmluZygp
IGNvbnN0OworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgYm9vbCBpc09iamVjdCgpIGNvbnN0
OworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCBib29sIGlzR2V0dGVyU2V0dGVy
KCkgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBib29sIGluaGVyaXRzKGNvbnN0
IENsYXNzSW5mbyopIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNBUElWYWx1ZVdyYXBw
ZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNQcm9w
ZXJ0eU5hbWVJdGVyYXRvcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICAgICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUoKSBjb25zdDsKIAogICAgICAgICAvLyBFeHRyYWN0aW5nIHRoZSB2
YWx1ZS4KLSAgICAgICAgYm9vbCBnZXRTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBVU3RyaW5nJikg
Y29uc3Q7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBib29sIGdldFN0cmluZyhFeGVjU3Rh
dGUqIGV4ZWMsIFVTdHJpbmcmKSBjb25zdDsKICAgICAgICAgVVN0cmluZyBnZXRTdHJpbmcoRXhl
Y1N0YXRlKiBleGVjKSBjb25zdDsgLy8gbnVsbCBzdHJpbmcgaWYgbm90IGEgc3RyaW5nCi0gICAg
ICAgIEpTT2JqZWN0KiBnZXRPYmplY3QoKTsgLy8gTlVMTCBpZiBub3QgYW4gb2JqZWN0Ci0gICAg
ICAgIGNvbnN0IEpTT2JqZWN0KiBnZXRPYmplY3QoKSBjb25zdDsgLy8gTlVMTCBpZiBub3QgYW4g
b2JqZWN0CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBKU09iamVjdCogZ2V0T2JqZWN0KCk7
IC8vIE5VTEwgaWYgbm90IGFuIG9iamVjdAorICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgY29u
c3QgSlNPYmplY3QqIGdldE9iamVjdCgpIGNvbnN0OyAvLyBOVUxMIGlmIG5vdCBhbiBvYmplY3QK
ICAgICAgICAgCi0gICAgICAgIHZpcnR1YWwgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoQ2FsbERhdGEm
KTsKLSAgICAgICAgdmlydHVhbCBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoQ29uc3Ry
dWN0RGF0YSYpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCBDYWxsVHlwZSBn
ZXRDYWxsRGF0YShDYWxsRGF0YSYpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVh
bCBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoQ29uc3RydWN0RGF0YSYpOwogCiAgICAg
ICAgIC8vIEV4dHJhY3RpbmcgaW50ZWdlciB2YWx1ZXMuCiAgICAgICAgIC8vIEZJWE1FOiByZW1v
dmUgdGhlc2UgbWV0aG9kcywgY2FuIGNoZWNrIGlzTnVtYmVyQ2VsbCBpbiBKU1ZhbHVlICYmIHRo
ZW4gY2FsbCBhc051bWJlckNlbGw6OiouCi0gICAgICAgIHZpcnR1YWwgYm9vbCBnZXRVSW50MzIo
dWludDMyX3QmKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgYm9v
bCBnZXRVSW50MzIodWludDMyX3QmKSBjb25zdDsKIAogICAgICAgICAvLyBCYXNpYyBjb252ZXJz
aW9ucy4KLSAgICAgICAgdmlydHVhbCBKU1ZhbHVlIHRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSosIFBy
ZWZlcnJlZFByaW1pdGl2ZVR5cGUpIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0UHJp
bWl0aXZlTnVtYmVyKEV4ZWNTdGF0ZSosIGRvdWJsZSYgbnVtYmVyLCBKU1ZhbHVlJik7Ci0gICAg
ICAgIHZpcnR1YWwgYm9vbCB0b0Jvb2xlYW4oRXhlY1N0YXRlKikgY29uc3Q7Ci0gICAgICAgIHZp
cnR1YWwgZG91YmxlIHRvTnVtYmVyKEV4ZWNTdGF0ZSopIGNvbnN0OwotICAgICAgICB2aXJ0dWFs
IFVTdHJpbmcgdG9TdHJpbmcoRXhlY1N0YXRlKikgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgSlNP
YmplY3QqIHRvT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICBKU19FWFBPUlRFRF9T
WU1CT0wgdmlydHVhbCBKU1ZhbHVlIHRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSosIFByZWZlcnJlZFBy
aW1pdGl2ZVR5cGUpIGNvbnN0OworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCBi
b29sIGdldFByaW1pdGl2ZU51bWJlcihFeGVjU3RhdGUqLCBkb3VibGUmIG51bWJlciwgSlNWYWx1
ZSYpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCBib29sIHRvQm9vbGVhbihF
eGVjU3RhdGUqKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgZG91
YmxlIHRvTnVtYmVyKEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICBKU19FWFBPUlRFRF9TWU1C
T0wgdmlydHVhbCBVU3RyaW5nIHRvU3RyaW5nKEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICBK
U19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCBKU09iamVjdCogdG9PYmplY3QoRXhlY1N0YXRlKikg
Y29uc3Q7CiAKICAgICAgICAgLy8gR2FyYmFnZSBjb2xsZWN0aW9uLgotICAgICAgICB2b2lkKiBv
cGVyYXRvciBuZXcoc2l6ZV90LCBFeGVjU3RhdGUqKTsKLSAgICAgICAgdm9pZCogb3BlcmF0b3Ig
bmV3KHNpemVfdCwgSlNHbG9iYWxEYXRhKik7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2
b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBFeGVjU3RhdGUqKTsKKyAgICAgICAgSlNfRVhQT1JU
RURfU1lNQk9MIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIEpTR2xvYmFsRGF0YSopOwogICAg
ICAgICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKiBwbGFjZW1lbnROZXdEZXN0aW5h
dGlvbikgeyByZXR1cm4gcGxhY2VtZW50TmV3RGVzdGluYXRpb247IH0KIAogICAgICAgICB2aXJ0
dWFsIHZvaWQgbWFya0NoaWxkcmVuKE1hcmtTdGFjayYpOwpAQCAtMTAyLDE2ICsxMDIsMTYgQEAK
ICNlbmRpZgogCiAgICAgICAgIC8vIE9iamVjdCBvcGVyYXRpb25zLCB3aXRoIHRoZSB0b09iamVj
dCBvcGVyYXRpb24gaW5jbHVkZWQuCi0gICAgICAgIHZpcnR1YWwgY29uc3QgQ2xhc3NJbmZvKiBj
bGFzc0luZm8oKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCB2b2lkIHB1dChFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYp
OwotICAgICAgICB2aXJ0dWFsIHZvaWQgcHV0KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSk7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBkZWxldGVQcm9wZXJ0eShFeGVj
U3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOwotICAgICAgICB2aXJ0dWFs
IGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsK
KyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgY29uc3QgQ2xhc3NJbmZvKiBjbGFz
c0luZm8oKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgdm9pZCBw
dXQoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgdm9p
ZCBwdXQoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlKTsKKyAgICAg
ICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgYm9vbCBkZWxldGVQcm9wZXJ0eShFeGVjU3Rh
dGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOworICAgICAgICBKU19FWFBPUlRF
RF9TWU1CT0wgdmlydHVhbCBib29sIGRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIHVuc2lnbmVk
IHByb3BlcnR5TmFtZSk7CiAKLSAgICAgICAgdmlydHVhbCBKU09iamVjdCogdG9UaGlzT2JqZWN0
KEV4ZWNTdGF0ZSopIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIEpTVmFsdWUgZ2V0SlNOdW1iZXIo
KTsKLSAgICAgICAgdm9pZCogdnB0cigpIHsgcmV0dXJuICpyZWludGVycHJldF9jYXN0PHZvaWQq
Kj4odGhpcyk7IH0KLSAgICAgICAgdm9pZCBzZXRWUHRyKHZvaWQqIHZwdHIpIHsgKnJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCoqPih0aGlzKSA9IHZwdHI7IH0KKyAgICAgICAgSlNfRVhQT1JURURfU1lN
Qk9MIHZpcnR1YWwgSlNPYmplY3QqIHRvVGhpc09iamVjdChFeGVjU3RhdGUqKSBjb25zdDsKKyAg
ICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgSlNWYWx1ZSBnZXRKU051bWJlcigpOwor
ICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCogdnB0cigpIHsgcmV0dXJuICpyZWludGVy
cHJldF9jYXN0PHZvaWQqKj4odGhpcyk7IH0KKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZv
aWQgc2V0VlB0cih2b2lkKiB2cHRyKSB7ICpyZWludGVycHJldF9jYXN0PHZvaWQqKj4odGhpcykg
PSB2cHRyOyB9CiAKICAgICAgICAgLy8gRklYTUU6IFJlbmFtZSBnZXRPd25Qcm9wZXJ0eVNsb3Qg
dG8gdmlydHVhbEdldE93blByb3BlcnR5U2xvdCwgYW5kCiAgICAgICAgIC8vIGZhc3RHZXRPd25Q
cm9wZXJ0eVNsb3QgdG8gZ2V0T3duUHJvcGVydHlTbG90LiBDYWxsZXJzIHNob3VsZCBhbHdheXMK
QEAgLTEyNCw4ICsxMjQsOCBAQAogCiAgICAgcHJpdmF0ZToKICAgICAgICAgLy8gQmFzZSBpbXBs
ZW1lbnRhdGlvbjsgZm9yIG5vbi1vYmplY3QgY2xhc3NlcyBpbXBsZW1lbnRzIGdldFByb3BlcnR5
U2xvdC4KLSAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUq
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgICAg
ICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2
aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZ
TUJPTCB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIHVuc2lnbmVk
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIAogICAgICAgICBTdHJ1Y3R1
cmUqIG1fc3RydWN0dXJlOwogICAgIH07CkBAIC0xNTEsNyArMTUxLDcgQEAKICAgICAgICAgcmV0
dXJuIG1fc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBPYmplY3RUeXBlOwogICAgIH0K
IAotICAgIGlubGluZSBib29sIEpTQ2VsbDo6aXNTdHJpbmcoKSBjb25zdAorICAgIEpTX0VYUE9S
VEVEX1NZTUJPTCBpbmxpbmUgYm9vbCBKU0NlbGw6OmlzU3RyaW5nKCkgY29uc3QKICAgICB7CiAg
ICAgICAgIHJldHVybiBtX3N0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gU3RyaW5nVHlw
ZTsKICAgICB9CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmgJKHJldmlzaW9uIDYxNzIyKQor
KysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNzcs
OCArNzcsOCBAQAogICAgICAgICAgICAgdW5sb2NrKG1fbG9ja0JlaGF2aW9yKTsgCiAgICAgICAg
IH0KICAgICAgICAgCi0gICAgICAgIHN0YXRpYyB2b2lkIGxvY2soSlNMb2NrQmVoYXZpb3IpOwot
ICAgICAgICBzdGF0aWMgdm9pZCB1bmxvY2soSlNMb2NrQmVoYXZpb3IpOworICAgICAgICBKU19F
WFBPUlRFRF9TWU1CT0wgc3RhdGljIHZvaWQgbG9jayhKU0xvY2tCZWhhdmlvcik7CisgICAgICAg
IEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0aWMgdm9pZCB1bmxvY2soSlNMb2NrQmVoYXZpb3IpOwog
ICAgICAgICBzdGF0aWMgdm9pZCBsb2NrKEV4ZWNTdGF0ZSopOwogICAgICAgICBzdGF0aWMgdm9p
ZCB1bmxvY2soRXhlY1N0YXRlKik7CiAKQEAgLTg3LDcgKzg3LDcgQEAKIAogICAgICAgICBKU0xv
Y2tCZWhhdmlvciBtX2xvY2tCZWhhdmlvcjsKIAotICAgICAgICBjbGFzcyBEcm9wQWxsTG9ja3Mg
OiBwdWJsaWMgTm9uY29weWFibGUgeworICAgICAgICBjbGFzcyBKU19FWFBPUlRFRF9TWU1CT0wg
RHJvcEFsbExvY2tzIDogcHVibGljIE5vbmNvcHlhYmxlIHsKICAgICAgICAgcHVibGljOgogICAg
ICAgICAgICAgRHJvcEFsbExvY2tzKEV4ZWNTdGF0ZSogZXhlYyk7CiAgICAgICAgICAgICBEcm9w
QWxsTG9ja3MoSlNMb2NrQmVoYXZpb3IpOwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm9wZXJ0eVNsb3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3Bl
cnR5U2xvdC5oCShyZXZpc2lvbiA2MTcyMikKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
cGVydHlTbG90LmgJKHdvcmtpbmcgY29weSkKQEAgLTI0Myw3ICsyNDMsNyBAQAogICAgICAgICAg
ICAgcmV0dXJuIG1fZ2V0VmFsdWU7CiAgICAgICAgIH0KICAgICBwcml2YXRlOgotICAgICAgICBK
U1ZhbHVlIGZ1bmN0aW9uR2V0dGVyKEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICBKU19FWFBP
UlRFRF9TWU1CT0wgSlNWYWx1ZSBmdW5jdGlvbkdldHRlcihFeGVjU3RhdGUqKSBjb25zdDsKIAog
ICAgICAgICBHZXRWYWx1ZUZ1bmMgbV9nZXRWYWx1ZTsKICAgICAgICAgR2V0SW5kZXhWYWx1ZUZ1
bmMgbV9nZXRJbmRleFZhbHVlOwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlv
bkNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5j
dGlvbkNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDYxNzIyKQorKysgSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcg
QEAKICAgICAgICAgdmlydHVhbCBDYWxsVHlwZSBnZXRDYWxsRGF0YShDYWxsRGF0YSYpOwogICAg
IH07CiAKLSAgICBKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiwgY29uc3Qg
QXJnTGlzdCYsIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwgY29uc3QgVVN0cmluZyYg
c291cmNlVVJMLCBpbnQgbGluZU51bWJlcik7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIEpTT2Jq
ZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqLCBjb25zdCBBcmdMaXN0JiwgY29uc3Qg
SWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBVU3RyaW5nJiBzb3VyY2VVUkwsIGludCBs
aW5lTnVtYmVyKTsKICAgICBKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiwg
Y29uc3QgQXJnTGlzdCYpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IEphdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TbWFsbFN0cmluZ3MuaAkocmV2aXNpb24gNjE3MjIpCisrKyBKYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC02NCw4ICs2NCw4IEBA
CiAgICAgICAgIEpTU3RyaW5nKiogc2luZ2xlQ2hhcmFjdGVyU3RyaW5ncygpIHsgcmV0dXJuIG1f
c2luZ2xlQ2hhcmFjdGVyU3RyaW5nczsgfQogI2VuZGlmCiAgICAgcHJpdmF0ZToKLSAgICAgICAg
dm9pZCBjcmVhdGVFbXB0eVN0cmluZyhKU0dsb2JhbERhdGEqKTsKLSAgICAgICAgdm9pZCBjcmVh
dGVTaW5nbGVDaGFyYWN0ZXJTdHJpbmcoSlNHbG9iYWxEYXRhKiwgdW5zaWduZWQgY2hhcik7Cisg
ICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIGNyZWF0ZUVtcHR5U3RyaW5nKEpTR2xvYmFs
RGF0YSopOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBjcmVhdGVTaW5nbGVDaGFy
YWN0ZXJTdHJpbmcoSlNHbG9iYWxEYXRhKiwgdW5zaWduZWQgY2hhcik7CiAKICAgICAgICAgSlNT
dHJpbmcqIG1fZW1wdHlTdHJpbmc7CiAgICAgICAgIEpTU3RyaW5nKiBtX3NpbmdsZUNoYXJhY3Rl
clN0cmluZ3NbMHgxMDBdOwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5h
bWVBcnJheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlO
YW1lQXJyYXkuaAkocmV2aXNpb24gNjE3MjIpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3BlcnR5TmFtZUFycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAKICAgICAg
ICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKCkgeyByZXR1cm4gbV9nbG9iYWxEYXRhOyB9CiAK
ICAgICAgICAgdm9pZCBhZGQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikgeyBhZGQoaWRl
bnRpZmllci51c3RyaW5nKCkucmVwKCkpOyB9Ci0gICAgICAgIHZvaWQgYWRkKFVTdHJpbmc6OlJl
cCopOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBhZGQoVVN0cmluZzo6UmVwKik7
CiAgICAgICAgIHZvaWQgYWRkS25vd25VbmlxdWUoVVN0cmluZzo6UmVwKiBpZGVudGlmaWVyKSB7
IG1fZGF0YS0+cHJvcGVydHlOYW1lVmVjdG9yKCkuYXBwZW5kKElkZW50aWZpZXIobV9nbG9iYWxE
YXRhLCBpZGVudGlmaWVyKSk7IH0KIAogICAgICAgICBJZGVudGlmaWVyJiBvcGVyYXRvcltdKHVu
c2lnbmVkIGkpIHsgcmV0dXJuIG1fZGF0YS0+cHJvcGVydHlOYW1lVmVjdG9yKClbaV07IH0KSW5k
ZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Vycm9yLmgJKHJldmlzaW9uIDYxNzIyKQorKysgSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FcnJvci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSwxMiArNDUsMTIgQEAKICAg
ICBKU09iamVjdCogY3JlYXRlVHlwZUVycm9yKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgVVN0cmlu
ZyYpOwogICAgIEpTT2JqZWN0KiBjcmVhdGVVUklFcnJvcihKU0dsb2JhbE9iamVjdCosIGNvbnN0
IFVTdHJpbmcmKTsKICAgICAvLyBFeGVjU3RhdGUgd3JhcHBlcnMuCi0gICAgSlNPYmplY3QqIGNy
ZWF0ZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmKTsKKyAgICBKU19FWFBPUlRFRF9T
WU1CT0wgSlNPYmplY3QqIGNyZWF0ZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmKTsK
ICAgICBKU09iamVjdCogY3JlYXRlRXZhbEVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcm
KTsKICAgICBKU09iamVjdCogY3JlYXRlUmFuZ2VFcnJvcihFeGVjU3RhdGUqLCBjb25zdCBVU3Ry
aW5nJik7Ci0gICAgSlNPYmplY3QqIGNyZWF0ZVJlZmVyZW5jZUVycm9yKEV4ZWNTdGF0ZSosIGNv
bnN0IFVTdHJpbmcmKTsKLSAgICBKU09iamVjdCogY3JlYXRlU3ludGF4RXJyb3IoRXhlY1N0YXRl
KiwgY29uc3QgVVN0cmluZyYpOwotICAgIEpTT2JqZWN0KiBjcmVhdGVUeXBlRXJyb3IoRXhlY1N0
YXRlKiwgY29uc3QgVVN0cmluZyYpOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBKU09iamVjdCog
Y3JlYXRlUmVmZXJlbmNlRXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYpOworICAgIEpT
X0VYUE9SVEVEX1NZTUJPTCBKU09iamVjdCogY3JlYXRlU3ludGF4RXJyb3IoRXhlY1N0YXRlKiwg
Y29uc3QgVVN0cmluZyYpOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBKU09iamVjdCogY3JlYXRl
VHlwZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmKTsKICAgICBKU09iamVjdCogY3Jl
YXRlVVJJRXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYpOwogCiAgICAgLy8gTWV0aG9k
cyB0byBhZGQgCkBAIC02MiwxMiArNjIsMTIgQEAKICAgICBKU09iamVjdCogYWRkRXJyb3JJbmZv
KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiBlcnJvciwgaW50IGxpbmUsIGNvbnN0IFNvdXJjZUNvZGUm
LCBpbnQgZGl2b3RQb2ludCwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0LCBib29sIHdp
dGhDYXJldCA9IHRydWUpOwogCiAgICAgLy8gTWV0aG9kcyB0byB0aHJvdyBFcnJvcnMuCi0gICAg
SlNWYWx1ZSB0aHJvd0Vycm9yKEV4ZWNTdGF0ZSosIEpTVmFsdWUpOwotICAgIEpTT2JqZWN0KiB0
aHJvd0Vycm9yKEV4ZWNTdGF0ZSosIEpTT2JqZWN0Kik7CisgICAgSlNfRVhQT1JURURfU1lNQk9M
IEpTVmFsdWUgdGhyb3dFcnJvcihFeGVjU3RhdGUqLCBKU1ZhbHVlKTsKKyAgICBKU19FWFBPUlRF
RF9TWU1CT0wgSlNPYmplY3QqIHRocm93RXJyb3IoRXhlY1N0YXRlKiwgSlNPYmplY3QqKTsKIAog
ICAgIC8vIENvbnZlbmllbmNlIHdyYXBwZXJzLCBjcmVhdGUgYW4gdGhyb3cgYW4gZXhjZXB0aW9u
IHdpdGggYSBkZWZhdWx0IG1lc3NhZ2UuCi0gICAgSlNPYmplY3QqIHRocm93VHlwZUVycm9yKEV4
ZWNTdGF0ZSopOwotICAgIEpTT2JqZWN0KiB0aHJvd1N5bnRheEVycm9yKEV4ZWNTdGF0ZSopOwor
ICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBKU09iamVjdCogdGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRl
Kik7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIEpTT2JqZWN0KiB0aHJvd1N5bnRheEVycm9yKEV4
ZWNTdGF0ZSopOwogCiAgICAgLy8gQ29udmVuaWVuY2Ugd3JhcHBlcnMsIHdyYXAgcmVzdWx0IGFz
IGFuIEVuY29kZWRKU1ZhbHVlLgogICAgIGlubGluZSBFbmNvZGVkSlNWYWx1ZSB0aHJvd1ZNRXJy
b3IoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGVycm9yKSB7IHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhyb3dFcnJvcihleGVjLCBlcnJvcikpOyB9CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1VTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJp
bmcuaAkocmV2aXNpb24gNjE3MjIpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcu
aAkod29ya2luZyBjb3B5KQpAQCAtNDgsMTkgKzQ4LDE5IEBACiAgICAgICAgIHR5cGVkZWYgVVN0
cmluZ0ltcGwgUmVwOwogICAgIAogICAgIHB1YmxpYzoKLSAgICAgICAgVVN0cmluZygpIHt9Ci0g
ICAgICAgIFVTdHJpbmcoY29uc3QgY2hhciopOyAvLyBDb25zdHJ1Y3RvciBmb3IgbnVsbC10ZXJt
aW5hdGVkIHN0cmluZy4KLSAgICAgICAgVVN0cmluZyhjb25zdCBjaGFyKiwgdW5zaWduZWQgbGVu
Z3RoKTsKLSAgICAgICAgVVN0cmluZyhjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7Ci0g
ICAgICAgIFVTdHJpbmcoY29uc3QgVmVjdG9yPFVDaGFyPiYgYnVmZmVyKTsKKyAgICAgICAgSlNf
RVhQT1JURURfU1lNQk9MIFVTdHJpbmcoKSB7fQorICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wg
VVN0cmluZyhjb25zdCBjaGFyKik7IC8vIENvbnN0cnVjdG9yIGZvciBudWxsLXRlcm1pbmF0ZWQg
c3RyaW5nLgorICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgVVN0cmluZyhjb25zdCBjaGFyKiwg
dW5zaWduZWQgbGVuZ3RoKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIFVTdHJpbmcoY29u
c3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wg
VVN0cmluZyhjb25zdCBWZWN0b3I8VUNoYXI+JiBidWZmZXIpOwogCi0gICAgICAgIFVTdHJpbmco
Y29uc3QgVVN0cmluZyYgcykKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIFVTdHJpbmcoY29u
c3QgVVN0cmluZyYgcykKICAgICAgICAgICAgIDogbV9yZXAocy5tX3JlcCkKICAgICAgICAgewog
ICAgICAgICB9CiAKICAgICAgICAgLy8gU3BlY2lhbCBjb25zdHJ1Y3RvciBmb3IgY2FzZXMgd2hl
cmUgd2Ugb3ZlcndyaXRlIGFuIG9iamVjdCBpbiBwbGFjZS4KLSAgICAgICAgVVN0cmluZyhQbGFj
ZW1lbnROZXdBZG9wdFR5cGUpCisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBVU3RyaW5nKFBs
YWNlbWVudE5ld0Fkb3B0VHlwZSkKICAgICAgICAgICAgIDogbV9yZXAoUGxhY2VtZW50TmV3QWRv
cHQpCiAgICAgICAgIHsKICAgICAgICAgfQpAQCAtNzEsMTUgKzcxLDE1IEBACiAgICAgICAgICAg
ICByZXR1cm4gUmVwOjphZG9wdCh2ZWN0b3IpOwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGlj
IFVTdHJpbmcgZnJvbShpbnQpOwotICAgICAgICBzdGF0aWMgVVN0cmluZyBmcm9tKGxvbmcgbG9u
Zyk7Ci0gICAgICAgIHN0YXRpYyBVU3RyaW5nIGZyb20odW5zaWduZWQpOwotICAgICAgICBzdGF0
aWMgVVN0cmluZyBmcm9tKGxvbmcpOwotICAgICAgICBzdGF0aWMgVVN0cmluZyBmcm9tKGRvdWJs
ZSk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0aWMgVVN0cmluZyBmcm9tKGludCk7
CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0aWMgVVN0cmluZyBmcm9tKGxvbmcgbG9u
Zyk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0aWMgVVN0cmluZyBmcm9tKHVuc2ln
bmVkKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHN0YXRpYyBVU3RyaW5nIGZyb20obG9u
Zyk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0aWMgVVN0cmluZyBmcm9tKGRvdWJs
ZSk7CiAKICAgICAgICAgLy8gTk9URTogVGhpcyBtZXRob2Qgc2hvdWxkIG9ubHkgYmUgdXNlZCBm
b3IgKmRlYnVnZ2luZyogcHVycG9zZXMgYXMgaXQKICAgICAgICAgLy8gaXMgbmVpdGhlciBVbmlj
b2RlIHNhZmUgbm9yIGZyZWUgZnJvbSBzaWRlIGVmZmVjdHMgbm9yIHRocmVhZC1zYWZlLgotICAg
ICAgICBjaGFyKiBhc2NpaSgpIGNvbnN0OworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgY2hh
ciogYXNjaWkoKSBjb25zdDsKIAogICAgICAgICAvKioKICAgICAgICAgICogQ29udmVydCB0aGUg
c3RyaW5nIHRvIFVURi04LCBhc3N1bWluZyBpdCBpcyBVVEYtMTYgZW5jb2RlZC4KQEAgLTg5LDcg
Kzg5LDcgQEAKICAgICAgICAgICogZ3VhcmFudGVlZCB0byBiZSBvdGhlcndpc2UgdmFsaWQuCiAg
ICAgICAgICAqIEluIHN0cmljdCBtb2RlLCBlcnJvciBpcyByZXR1cm5lZCBhcyBudWxsIENTdHJp
bmcuCiAgICAgICAgICAqLwotICAgICAgICBDU3RyaW5nIFVURjhTdHJpbmcoYm9vbCBzdHJpY3Qg
PSBmYWxzZSkgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBDU3RyaW5nIFVURjhT
dHJpbmcoYm9vbCBzdHJpY3QgPSBmYWxzZSkgY29uc3Q7CiAKICAgICAgICAgY29uc3QgVUNoYXIq
IGRhdGEoKSBjb25zdAogICAgICAgICB7CkBAIC0xMDUsNyArMTA1LDcgQEAKICAgICAgICAgICAg
IHJldHVybiBtX3JlcC0+bGVuZ3RoKCk7CiAgICAgICAgIH0KIAotICAgICAgICBib29sIGlzTnVs
bCgpIGNvbnN0IHsgcmV0dXJuICFtX3JlcDsgfQorICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wg
Ym9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhbV9yZXA7IH0KICAgICAgICAgYm9vbCBpc0Vt
cHR5KCkgY29uc3QgeyByZXR1cm4gIW1fcmVwIHx8ICFtX3JlcC0+bGVuZ3RoKCk7IH0KIAogICAg
ICAgICBib29sIGlzOEJpdCgpIGNvbnN0OwpAQCAtMTE2LDggKzExNiw4IEBACiAgICAgICAgIGRv
dWJsZSB0b0RvdWJsZShib29sIHRvbGVyYXRlVHJhaWxpbmdKdW5rKSBjb25zdDsKICAgICAgICAg
ZG91YmxlIHRvRG91YmxlKCkgY29uc3Q7CiAKLSAgICAgICAgdWludDMyX3QgdG9VSW50MzIoYm9v
bCogb2sgPSAwKSBjb25zdDsKLSAgICAgICAgdWludDMyX3QgdG9VSW50MzIoYm9vbCogb2ssIGJv
b2wgdG9sZXJhdGVFbXB0eVN0cmluZykgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJP
TCB1aW50MzJfdCB0b1VJbnQzMihib29sKiBvayA9IDApIGNvbnN0OworICAgICAgICBKU19FWFBP
UlRFRF9TWU1CT0wgdWludDMyX3QgdG9VSW50MzIoYm9vbCogb2ssIGJvb2wgdG9sZXJhdGVFbXB0
eVN0cmluZykgY29uc3Q7CiAgICAgICAgIHVpbnQzMl90IHRvU3RyaWN0VUludDMyKGJvb2wqIG9r
ID0gMCkgY29uc3Q7CiAKICAgICAgICAgdW5zaWduZWQgdG9BcnJheUluZGV4KGJvb2wqIG9rID0g
MCkgY29uc3Q7CkBAIC0xMjgsNyArMTI4LDcgQEAKICAgICAgICAgdW5zaWduZWQgcmZpbmQoY29u
c3QgVVN0cmluZyYgZiwgdW5zaWduZWQgcG9zKSBjb25zdDsKICAgICAgICAgdW5zaWduZWQgcmZp
bmQoVUNoYXIsIHVuc2lnbmVkIHBvcykgY29uc3Q7CiAKLSAgICAgICAgVVN0cmluZyBzdWJzdHIo
dW5zaWduZWQgcG9zID0gMCwgdW5zaWduZWQgbGVuID0gMHhGRkZGRkZGRikgY29uc3Q7CisgICAg
ICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBVU3RyaW5nIHN1YnN0cih1bnNpZ25lZCBwb3MgPSAwLCB1
bnNpZ25lZCBsZW4gPSAweEZGRkZGRkZGKSBjb25zdDsKIAogICAgICAgICBzdGF0aWMgY29uc3Qg
VVN0cmluZyYgbnVsbCgpIHsgcmV0dXJuICpzX251bGxVU3RyaW5nOyB9CiAKQEAgLTE0Niw3ICsx
NDYsMTIgQEAKICAgICAgICAgICAgIHJldHVybiBtX3JlcC0+Y29zdCgpOwogICAgICAgICB9CiAK
LSAgICAgICAgQUxXQVlTX0lOTElORSB+VVN0cmluZygpIHsgfQorICAgICAgICBKU19FWFBPUlRF
RF9TWU1CT0wgQUxXQVlTX0lOTElORSB+VVN0cmluZygpIHsgfQorICAgICAgICBKU19FWFBPUlRF
RF9TWU1CT0wgVVN0cmluZyYgb3BlcmF0b3I9KGNvbnN0IFVTdHJpbmcmIHMpCisgICAgICAgIHsK
KyAgICAgICAgICAgIG1fcmVwID0gcy5tX3JlcDsKKyAgICAgICAgICAgIHJldHVybiAqdGhpczsK
KyAgICAgICAgfQogICAgIHByaXZhdGU6CiAgICAgICAgIFJlZlB0cjxSZXA+IG1fcmVwOwogCklu
ZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5jZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmgJKHJldmlzaW9uIDYxNzIyKQor
KysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2UuaAkod29ya2luZyBjb3B5KQpA
QCAtMzEsMTMgKzMxLDEzIEBACiAKICAgICBjbGFzcyBEYXRlSW5zdGFuY2UgOiBwdWJsaWMgSlNX
cmFwcGVyT2JqZWN0IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIERhdGVJbnN0YW5jZShFeGVjU3Rh
dGUqLCBkb3VibGUpOwotICAgICAgICBEYXRlSW5zdGFuY2UoRXhlY1N0YXRlKiwgTm9uTnVsbFBh
c3NSZWZQdHI8U3RydWN0dXJlPiwgZG91YmxlKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9M
IERhdGVJbnN0YW5jZShFeGVjU3RhdGUqLCBkb3VibGUpOworICAgICAgICBKU19FWFBPUlRFRF9T
WU1CT0wgRGF0ZUluc3RhbmNlKEV4ZWNTdGF0ZSosIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVy
ZT4sIGRvdWJsZSk7CiAgICAgICAgIGV4cGxpY2l0IERhdGVJbnN0YW5jZShFeGVjU3RhdGUqLCBO
b25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+KTsKIAogICAgICAgICBkb3VibGUgaW50ZXJuYWxO
dW1iZXIoKSBjb25zdCB7IHJldHVybiBpbnRlcm5hbFZhbHVlKCkudW5jaGVja2VkR2V0TnVtYmVy
KCk7IH0KIAotICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSBjb25zdCBDbGFzc0luZm8gaW5m
bzsKKyAgICAgICAgc3RhdGljIEpTX0VYUE9SVEVEX1NZTUJPTCBjb25zdCBDbGFzc0luZm8gaW5m
bzsKIAogICAgICAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29yaWFuRGF0ZVRpbWUo
RXhlY1N0YXRlKiBleGVjKSBjb25zdAogICAgICAgICB7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxEYXRhLmgJKHJldmlzaW9uIDYxNzIyKQorKysgSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbERhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDcgKzEwMyw3IEBACiAg
ICAgICAgIC8vIHRoZSBvcmlnaW5hbCBBUEkuCiAgICAgICAgIGVudW0gR2xvYmFsRGF0YVR5cGUg
eyBEZWZhdWx0LCBBUElDb250ZXh0R3JvdXAsIEFQSVNoYXJlZCB9OwogCi0gICAgICAgIHN0cnVj
dCBDbGllbnREYXRhIHsKKyAgICAgICAgc3RydWN0IEpTX0VYUE9SVEVEX1NZTUJPTCBDbGllbnRE
YXRhIHsKICAgICAgICAgICAgIHZpcnR1YWwgfkNsaWVudERhdGEoKSA9IDA7CiAgICAgICAgIH07
CiAKQEAgLTExMSwxMCArMTExLDEwIEBACiAgICAgICAgIHN0YXRpYyBib29sIHNoYXJlZEluc3Rh
bmNlRXhpc3RzKCk7CiAgICAgICAgIHN0YXRpYyBKU0dsb2JhbERhdGEmIHNoYXJlZEluc3RhbmNl
KCk7CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SlNHbG9iYWxEYXRhPiBjcmVhdGUoVGhy
ZWFkU3RhY2tUeXBlKTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SlNHbG9iYWxEYXRhPiBj
cmVhdGVMZWFrZWQoVGhyZWFkU3RhY2tUeXBlKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9M
IHN0YXRpYyBQYXNzUmVmUHRyPEpTR2xvYmFsRGF0YT4gY3JlYXRlKFRocmVhZFN0YWNrVHlwZSk7
CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0aWMgUGFzc1JlZlB0cjxKU0dsb2JhbERh
dGE+IGNyZWF0ZUxlYWtlZChUaHJlYWRTdGFja1R5cGUpOwogICAgICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxKU0dsb2JhbERhdGE+IGNyZWF0ZUNvbnRleHRHcm91cChUaHJlYWRTdGFja1R5cGUpOwot
ICAgICAgICB+SlNHbG9iYWxEYXRhKCk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB+SlNH
bG9iYWxEYXRhKCk7CiAKICNpZiBFTkFCTEUoSlNDX01VTFRJUExFX1RIUkVBRFMpCiAgICAgICAg
IC8vIFdpbGwgc3RhcnQgdHJhY2tpbmcgdGhyZWFkcyB0aGF0IHVzZSB0aGUgaGVhcCwgd2hpY2gg
aXMgcmVzb3VyY2UtaGVhdnkuCkBAIC0xNTAsMTAgKzE1MCwxMCBAQAogI2VuZGlmCiAKICAgICAg
ICAgc3RhdGljIHZvaWQgc3RvcmVWUHRycygpOwotICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFU
QSB2b2lkKiBqc0FycmF5VlB0cjsKLSAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgdm9pZCog
anNCeXRlQXJyYXlWUHRyOwotICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSB2b2lkKiBqc1N0
cmluZ1ZQdHI7Ci0gICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIHZvaWQqIGpzRnVuY3Rpb25W
UHRyOworICAgICAgICBzdGF0aWMgSlNfRVhQT1JURURfU1lNQk9MIHZvaWQqIGpzQXJyYXlWUHRy
OworICAgICAgICBzdGF0aWMgSlNfRVhQT1JURURfU1lNQk9MIHZvaWQqIGpzQnl0ZUFycmF5VlB0
cjsKKyAgICAgICAgc3RhdGljIEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkKiBqc1N0cmluZ1ZQdHI7
CisgICAgICAgIHN0YXRpYyBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCoganNGdW5jdGlvblZQdHI7
CiAKICAgICAgICAgSWRlbnRpZmllclRhYmxlKiBpZGVudGlmaWVyVGFibGU7CiAgICAgICAgIENv
bW1vbklkZW50aWZpZXJzKiBwcm9wZXJ0eU5hbWVzOwpAQCAtMjIxLDExICsyMjEsMTEgQEAKIAog
ICAgICAgICBDYWNoZWRUcmFuc2NlbmRlbnRhbEZ1bmN0aW9uPHNpbj4gY2FjaGVkU2luOwogCi0g
ICAgICAgIHZvaWQgcmVzZXREYXRlQ2FjaGUoKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9M
IHZvaWQgcmVzZXREYXRlQ2FjaGUoKTsKIAotICAgICAgICB2b2lkIHN0YXJ0U2FtcGxpbmcoKTsK
LSAgICAgICAgdm9pZCBzdG9wU2FtcGxpbmcoKTsKLSAgICAgICAgdm9pZCBkdW1wU2FtcGxlRGF0
YShFeGVjU3RhdGUqIGV4ZWMpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBzdGFy
dFNhbXBsaW5nKCk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIHN0b3BTYW1wbGlu
ZygpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBkdW1wU2FtcGxlRGF0YShFeGVj
U3RhdGUqIGV4ZWMpOwogICAgICAgICBSZWdFeHBDYWNoZSogcmVnRXhwQ2FjaGUoKSB7IHJldHVy
biBtX3JlZ0V4cENhY2hlOyB9CiAgICAgcHJpdmF0ZToKICAgICAgICAgSlNHbG9iYWxEYXRhKEds
b2JhbERhdGFUeXBlLCBUaHJlYWRTdGFja1R5cGUpOwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Sb3BlSW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvUm9w
ZUltcGwuaAkocmV2aXNpb24gNjE3MjIpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JvcGVJ
bXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTgzLDcgKzgzLDcgQEAKICAgICB7CiAgICAgfQogCi0g
ICAgdm9pZCBkZXN0cnVjdE5vblJlY3Vyc2l2ZSgpOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2
b2lkIGRlc3RydWN0Tm9uUmVjdXJzaXZlKCk7CiAgICAgdm9pZCBkZXJlZkZpYmVyc05vblJlY3Vy
c2l2ZShWZWN0b3I8Um9wZUltcGwqLCAzMj4mIHdvcmtRdWV1ZSk7CiAKICAgICBib29sIGhhc09u
ZVJlZigpIHsgcmV0dXJuIChtX3JlZkNvdW50QW5kRmxhZ3MgJiBzX3JlZkNvdW50TWFzaykgPT0g
c19yZWZDb3VudEluY3JlbWVudDsgfQpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9UaW1l
b3V0Q2hlY2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGltZW91
dENoZWNrZXIuaAkocmV2aXNpb24gNjE3MjIpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rp
bWVvdXRDaGVja2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDkgKzU2LDkgQEAKICAgICAgICAg
ICAgIC0tbV9zdGFydENvdW50OwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCByZXNldCgpOwor
ICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCByZXNldCgpOwogCi0gICAgICAgIGJvb2wg
ZGlkVGltZU91dChFeGVjU3RhdGUqKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIGJvb2wg
ZGlkVGltZU91dChFeGVjU3RhdGUqKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHVuc2lnbmVk
IG1fdGltZW91dEludGVydmFsOwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2xsZWN0
b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29sbGVjdG9yLmNw
cAkocmV2aXNpb24gNjE3MjIpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbGxlY3Rvci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1MCw3ICs0NTAsNyBAQAogfQogCiAjaWYgT1MoV0lOQ0Up
Ci1KU19FWFBPUlREQVRBIHZvaWQqIGdfc3RhY2tCYXNlID0gMDsKK0pTX0VYUE9SVEVEX1NZTUJP
TCB2b2lkKiBnX3N0YWNrQmFzZSA9IDA7CiAKIGlubGluZSBib29sIGlzUGFnZVdyaXRhYmxlKHZv
aWQqIHBhZ2UpCiB7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
CShyZXZpc2lvbiA2MTcyMikKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaAkod29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcsNyBAQAogICAgICAgICAgICAgLy8gSlNW
YXJpYWJsZU9iamVjdERhdGEqIHRvIEpTR2xvYmFsT2JqZWN0RGF0YSouCiAgICAgICAgICAgICB0
eXBlZGVmIHZvaWQgKCpEZXN0cnVjdG9yKSh2b2lkKik7CiAKLSAgICAgICAgICAgIEpTR2xvYmFs
T2JqZWN0RGF0YShEZXN0cnVjdG9yIGRlc3RydWN0b3IpCisgICAgICAgICAgICBKU19FWFBPUlRF
RF9TWU1CT0wgSlNHbG9iYWxPYmplY3REYXRhKERlc3RydWN0b3IgZGVzdHJ1Y3RvcikKICAgICAg
ICAgICAgICAgICA6IEpTVmFyaWFibGVPYmplY3REYXRhKCZzeW1ib2xUYWJsZSwgMCkKICAgICAg
ICAgICAgICAgICAsIGRlc3RydWN0b3IoZGVzdHJ1Y3RvcikKICAgICAgICAgICAgICAgICAsIHJl
Z2lzdGVyQXJyYXlTaXplKDApCkBAIC0xNTksNyArMTU5LDcgQEAKICAgICAgICAgfTsKIAogICAg
IHB1YmxpYzoKLSAgICAgICAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgSlNHbG9iYWxEYXRh
Kik7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90
LCBKU0dsb2JhbERhdGEqKTsKICAgICAgICAgCiAgICAgICAgIGV4cGxpY2l0IEpTR2xvYmFsT2Jq
ZWN0KCkKICAgICAgICAgICAgIDogSlNWYXJpYWJsZU9iamVjdChKU0dsb2JhbE9iamVjdDo6Y3Jl
YXRlU3RydWN0dXJlKGpzTnVsbCgpKSwgbmV3IEpTR2xvYmFsT2JqZWN0RGF0YShkZXN0cm95SlNH
bG9iYWxPYmplY3REYXRhKSkKQEAgLTE4NywxOCArMTg3LDE4IEBACiAgICAgICAgIH0KIAogICAg
IHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCB+SlNHbG9iYWxPYmplY3QoKTsKKyAgICAgICAgSlNf
RVhQT1JURURfU1lNQk9MIHZpcnR1YWwgfkpTR2xvYmFsT2JqZWN0KCk7CiAKLSAgICAgICAgdmly
dHVhbCB2b2lkIG1hcmtDaGlsZHJlbihNYXJrU3RhY2smKTsKKyAgICAgICAgSlNfRVhQT1JURURf
U1lNQk9MIHZpcnR1YWwgdm9pZCBtYXJrQ2hpbGRyZW4oTWFya1N0YWNrJik7CiAKICAgICAgICAg
dmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlm
aWVyJiwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3Jp
cHRvciYpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgaGFzT3duUHJvcGVydHlGb3JXcml0ZShFeGVj
U3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJik7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwdXQoRXhl
Y1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwot
ICAgICAgICB2aXJ0dWFsIHZvaWQgcHV0V2l0aEF0dHJpYnV0ZXMoRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1
dGVzKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgdm9pZCBwdXQoRXhlY1N0
YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAg
ICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCB2b2lkIHB1dFdpdGhBdHRyaWJ1dGVzKEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwg
dW5zaWduZWQgYXR0cmlidXRlcyk7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGRlZmluZUdldHRl
cihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBn
ZXR0ZXJGdW5jLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRl
ZmluZVNldHRlcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpT
T2JqZWN0KiBzZXR0ZXJGdW5jLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgSlNfRVhQ
T1JURURfU1lNQk9MIHZpcnR1YWwgdm9pZCBkZWZpbmVHZXR0ZXIoRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU09iamVjdCogZ2V0dGVyRnVuYywgdW5zaWduZWQg
YXR0cmlidXRlcyk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIHZvaWQgZGVm
aW5lU2V0dGVyKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNP
YmplY3QqIHNldHRlckZ1bmMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogCiAgICAgICAgIC8vIExp
bmtlZCBsaXN0IG9mIGFsbCBnbG9iYWwgb2JqZWN0cyB0aGF0IHVzZSB0aGUgc2FtZSBKU0dsb2Jh
bERhdGEuCiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiYgaGVhZCgpIHsgcmV0dXJuIGQoKS0+Z2xv
YmFsRGF0YS0+aGVhZDsgfQpAQCAtMjYyLDEzICsyNjIsMTMgQEAKIAogICAgICAgICB2aXJ0dWFs
IGJvb2wgaXNHbG9iYWxPYmplY3QoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICAgICAg
dmlydHVhbCBFeGVjU3RhdGUqIGdsb2JhbEV4ZWMoKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lN
Qk9MIHZpcnR1YWwgRXhlY1N0YXRlKiBnbG9iYWxFeGVjKCk7CiAKICAgICAgICAgdmlydHVhbCBi
b29sIHNob3VsZEludGVycnVwdFNjcmlwdCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogICAg
ICAgICB2aXJ0dWFsIGJvb2wgYWxsb3dzQWNjZXNzRnJvbShjb25zdCBKU0dsb2JhbE9iamVjdCop
IGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNEeW5hbWlj
U2NvcGUoYm9vbCYgcmVxdWlyZXNEeW5hbWljQ2hlY2tzKSBjb25zdDsKKyAgICAgICAgSlNfRVhQ
T1JURURfU1lNQk9MIHZpcnR1YWwgYm9vbCBpc0R5bmFtaWNTY29wZShib29sJiByZXF1aXJlc0R5
bmFtaWNDaGVja3MpIGNvbnN0OwogCiAgICAgICAgIEhhc2hTZXQ8R2xvYmFsQ29kZUJsb2NrKj4m
IGNvZGVCbG9ja3MoKSB7IHJldHVybiBkKCktPmNvZGVCbG9ja3M7IH0KIApAQCAtMzE1LDEwICsz
MTUsMTAgQEAKICAgICAgICAgdm9pZCBhZGRTdGF0aWNHbG9iYWxzKEdsb2JhbFByb3BlcnR5SW5m
byosIGludCBjb3VudCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICBzdGF0aWMgdm9pZCBkZXN0
cm95SlNHbG9iYWxPYmplY3REYXRhKHZvaWQqKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9M
IHN0YXRpYyB2b2lkIGRlc3Ryb3lKU0dsb2JhbE9iamVjdERhdGEodm9pZCopOwogCiAgICAgICAg
IC8vIEZJWE1FOiBGb2xkIHJlc2V0IGludG8gaW5pdC4KLSAgICAgICAgdm9pZCBpbml0KEpTT2Jq
ZWN0KiB0aGlzVmFsdWUpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBpbml0KEpT
T2JqZWN0KiB0aGlzVmFsdWUpOwogICAgICAgICB2b2lkIHJlc2V0KEpTVmFsdWUgcHJvdG90eXBl
KTsKIAogICAgICAgICB2b2lkIHNldFJlZ2lzdGVycyhSZWdpc3RlciogcmVnaXN0ZXJzLCBSZWdp
c3RlciogcmVnaXN0ZXJBcnJheSwgc2l6ZV90IGNvdW50KTsKSW5kZXg6IEphdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29sbGVjdG9ySGVhcEl0ZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db2xsZWN0b3JIZWFwSXRlcmF0b3IuaAkocmV2aXNpb24gNjE3MjIpCisr
KyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbGxlY3RvckhlYXBJdGVyYXRvci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMyw3ICsyMyw2IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29sbGVjdG9yLmgiCiAKICNpZm5kZWYgQ29sbGVjdG9y
SGVhcEl0ZXJhdG9yX2gKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RXaXRo
R2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdFdpdGhHbG9iYWxPYmplY3QuaAkocmV2aXNpb24gNjE3MjIpCisrKyBKYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0V2l0aEdsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
OSwxMCArMzksMTAgQEAKICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHByb3RvLCBU
eXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCk7
CiAgICAgfQogCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCgpIGNvbnN0OworICAg
IEpTX0VYUE9SVEVEX1NZTUJPTCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KCkgY29uc3Q7
CiAKIHByb3RlY3RlZDoKLSAgICBKU09iamVjdFdpdGhHbG9iYWxPYmplY3QoSlNHbG9iYWxPYmpl
Y3QqLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+KTsKKyAgICBKU19FWFBPUlRFRF9TWU1C
T0wgSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiwgTm9uTnVsbFBhc3NS
ZWZQdHI8U3RydWN0dXJlPik7CiAKICAgICBKU09iamVjdFdpdGhHbG9iYWxPYmplY3QoTm9uTnVs
bFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUpCiAgICAgICAgIDogSlNPYmplY3Qoc3Ry
dWN0dXJlKQpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgJKHJldmlzaW9uIDYxNzIyKQor
KysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1
LDkgKzU1LDkgQEAKICAgICB0eXBlZGVmIHZvaWQqIEVuY29kZWRKU1ZhbHVlOwogI2VuZGlmCiAK
LSAgICBkb3VibGUgbm9uSW5saW5lTmFOKCk7Ci0gICAgaW50MzJfdCB0b0ludDMyU2xvd0Nhc2Uo
ZG91YmxlLCBib29sJiBvayk7Ci0gICAgdWludDMyX3QgdG9VSW50MzJTbG93Q2FzZShkb3VibGUs
IGJvb2wmIG9rKTsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgZG91YmxlIG5vbklubGluZU5hTigp
OworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBpbnQzMl90IHRvSW50MzJTbG93Q2FzZShkb3VibGUs
IGJvb2wmIG9rKTsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgdWludDMyX3QgdG9VSW50MzJTbG93
Q2FzZShkb3VibGUsIGJvb2wmIG9rKTsKIAogICAgIGNsYXNzIEpTVmFsdWUgewogICAgICAgICBm
cmllbmQgY2xhc3MgSlNJbW1lZGlhdGU7CkBAIC0xOTksNyArMTk5LDcgQEAKIAogICAgICAgICBi
b29sIGlzQ2VsbCgpIGNvbnN0OwogICAgICAgICBKU0NlbGwqIGFzQ2VsbCgpIGNvbnN0OwotICAg
ICAgICBib29sIGlzVmFsaWRDYWxsZWUoKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIGJv
b2wgaXNWYWxpZENhbGxlZSgpOwogCiAjaWZuZGVmIE5ERUJVRwogICAgICAgICBjaGFyKiBkZXNj
cmlwdGlvbigpOwpAQCAtMjEwLDggKzIxMCw4IEBACiAgICAgICAgIEpTVmFsdWUoSGFzaFRhYmxl
RGVsZXRlZFZhbHVlVGFnKTsKIAogICAgICAgICBpbmxpbmUgY29uc3QgSlNWYWx1ZSBhc1ZhbHVl
KCkgY29uc3QgeyByZXR1cm4gKnRoaXM7IH0KLSAgICAgICAgSlNPYmplY3QqIHRvT2JqZWN0U2xv
d0Nhc2UoRXhlY1N0YXRlKikgY29uc3Q7Ci0gICAgICAgIEpTT2JqZWN0KiB0b1RoaXNPYmplY3RT
bG93Q2FzZShFeGVjU3RhdGUqKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIEpT
T2JqZWN0KiB0b09iamVjdFNsb3dDYXNlKEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICBKU19F
WFBPUlRFRF9TWU1CT0wgSlNPYmplY3QqIHRvVGhpc09iamVjdFNsb3dDYXNlKEV4ZWNTdGF0ZSop
IGNvbnN0OwogCiAgICAgICAgIEpTT2JqZWN0KiBzeW50aGVzaXplUHJvdG90eXBlKEV4ZWNTdGF0
ZSopIGNvbnN0OwogICAgICAgICBKU09iamVjdCogc3ludGhlc2l6ZU9iamVjdChFeGVjU3RhdGUq
KSBjb25zdDsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9y
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0
b3IuaAkocmV2aXNpb24gNjE3MjIpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5
RGVzY3JpcHRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw4ICs0Niw4IEBACiAgICAgICAgIEpT
VmFsdWUgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CiAgICAgICAgIEpTVmFsdWUg
Z2V0dGVyKCkgY29uc3Q7CiAgICAgICAgIEpTVmFsdWUgc2V0dGVyKCkgY29uc3Q7Ci0gICAgICAg
IHZvaWQgc2V0VW5kZWZpbmVkKCk7Ci0gICAgICAgIHZvaWQgc2V0RGVzY3JpcHRvcihKU1ZhbHVl
IHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9M
IHZvaWQgc2V0VW5kZWZpbmVkKCk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIHNl
dERlc2NyaXB0b3IoSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAgICAg
IHZvaWQgc2V0QWNjZXNzb3JEZXNjcmlwdG9yKEpTVmFsdWUgZ2V0dGVyLCBKU1ZhbHVlIHNldHRl
ciwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAgICAgIHZvaWQgc2V0V3JpdGFibGUoYm9vbCk7
CiAgICAgICAgIHZvaWQgc2V0RW51bWVyYWJsZShib29sKTsKSW5kZXg6IEphdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29sbGVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db2xsZWN0b3IuaAkocmV2aXNpb24gNjE3MjIpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbGxlY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC03NCwxMyArNzQsMTMgQEAKICAgICBwdWJs
aWM6CiAgICAgICAgIGNsYXNzIFRocmVhZDsKIAotICAgICAgICB2b2lkIGRlc3Ryb3koKTsKKyAg
ICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZvaWQgZGVzdHJveSgpOwogCiAgICAgICAgIHZvaWQq
IGFsbG9jYXRlTnVtYmVyKHNpemVfdCk7Ci0gICAgICAgIHZvaWQqIGFsbG9jYXRlKHNpemVfdCk7
CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkKiBhbGxvY2F0ZShzaXplX3QpOwogCi0g
ICAgICAgIGJvb2wgaXNCdXN5KCk7IC8vIHRydWUgaWYgYW4gYWxsb2NhdGlvbiBvciBjb2xsZWN0
aW9uIGlzIGluIHByb2dyZXNzCi0gICAgICAgIHZvaWQgY29sbGVjdEFsbEdhcmJhZ2UoKTsKKyAg
ICAgICAgSlNfRVhQT1JURURfU1lNQk9MIGJvb2wgaXNCdXN5KCk7IC8vIHRydWUgaWYgYW4gYWxs
b2NhdGlvbiBvciBjb2xsZWN0aW9uIGlzIGluIHByb2dyZXNzCisgICAgICAgIEpTX0VYUE9SVEVE
X1NZTUJPTCB2b2lkIGNvbGxlY3RBbGxHYXJiYWdlKCk7CiAKICAgICAgICAgc3RhdGljIGNvbnN0
IHNpemVfdCBtaW5FeHRyYUNvc3QgPSAyNTY7CiAgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3Qg
bWF4RXh0cmFDb3N0ID0gMTAyNCAqIDEwMjQ7CkBAIC05MywxMiArOTMsMTIgQEAKICAgICAgICAg
ICAgIHNpemVfdCBmcmVlOwogICAgICAgICB9OwogICAgICAgICBTdGF0aXN0aWNzIHN0YXRpc3Rp
Y3MoKSBjb25zdDsKLSAgICAgICAgc2l6ZV90IHNpemUoKSBjb25zdDsKKyAgICAgICAgSlNfRVhQ
T1JURURfU1lNQk9MIHNpemVfdCBzaXplKCkgY29uc3Q7CiAKLSAgICAgICAgdm9pZCBwcm90ZWN0
KEpTVmFsdWUpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBwcm90ZWN0KEpTVmFs
dWUpOwogICAgICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIHZhbHVlIGlzIG5vIGxvbmdlciBw
cm90ZWN0ZWQgYnkgYW55IHByb3RlY3QgcG9pbnRlcnMKICAgICAgICAgLy8gKHRob3VnaCBpdCBt
YXkgc3RpbGwgYmUgYWxpdmUgZHVlIHRvIGhlYXAvc3RhY2sgcmVmZXJlbmNlcykuCi0gICAgICAg
IGJvb2wgdW5wcm90ZWN0KEpTVmFsdWUpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgYm9v
bCB1bnByb3RlY3QoSlNWYWx1ZSk7CiAKICAgICAgICAgc3RhdGljIEhlYXAqIGhlYXAoSlNWYWx1
ZSk7IC8vIDAgZm9yIGltbWVkaWF0ZSB2YWx1ZXMKICAgICAgICAgc3RhdGljIEhlYXAqIGhlYXAo
SlNDZWxsKik7CkBAIC0xNDUsNyArMTQ1LDcgQEAKICAgICAgICAgdm9pZCBjbGVhck1hcmtCaXRz
KENvbGxlY3RvckJsb2NrKik7CiAgICAgICAgIHNpemVfdCBtYXJrZWRDZWxscyhzaXplX3Qgc3Rh
cnRCbG9jayA9IDAsIHNpemVfdCBzdGFydENlbGwgPSAwKSBjb25zdDsKIAotICAgICAgICB2b2lk
IHJlY29yZEV4dHJhQ29zdChzaXplX3QpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9p
ZCByZWNvcmRFeHRyYUNvc3Qoc2l6ZV90KTsKIAogICAgICAgICB2b2lkIGFkZFRvU3RhdGlzdGlj
cyhTdGF0aXN0aWNzJikgY29uc3Q7CiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNX
cmFwcGVyT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dy
YXBwZXJPYmplY3QuaAkocmV2aXNpb24gNjE3MjIpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTV3JhcHBlck9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBACiAgICAg
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBBbm9ueW1vdXNTbG90Q291bnQgPSAxICsgSlNPYmpl
Y3Q6OkFub255bW91c1Nsb3RDb3VudDsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwg
dm9pZCBtYXJrQ2hpbGRyZW4oTWFya1N0YWNrJik7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJP
TCB2aXJ0dWFsIHZvaWQgbWFya0NoaWxkcmVuKE1hcmtTdGFjayYpOwogICAgICAgICAKICAgICAg
ICAgSlNWYWx1ZSBtX2ludGVybmFsVmFsdWU7CiAgICAgfTsKSW5kZXg6IEphdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ2FsbERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NhbGxEYXRhLmgJKHJldmlzaW9uIDYxNzIyKQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
YWxsRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC01OCw3ICs1OCw3IEBACiAgICAgICAgIH0ganM7
CiAgICAgfTsKIAotICAgIEpTVmFsdWUgY2FsbChFeGVjU3RhdGUqLCBKU1ZhbHVlIGZ1bmN0aW9u
T2JqZWN0LCBDYWxsVHlwZSwgY29uc3QgQ2FsbERhdGEmLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgY29u
c3QgQXJnTGlzdCYpOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBKU1ZhbHVlIGNhbGwoRXhlY1N0
YXRlKiwgSlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwgQ2FsbFR5cGUsIGNvbnN0IENhbGxEYXRhJiwg
SlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3QmKTsKIAogfSAvLyBuYW1lc3BhY2UgSlND
CiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc3RydWN0RGF0YS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc3RydWN0RGF0YS5oCShyZXZpc2lvbiA2
MTcyMikKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc3RydWN0RGF0YS5oCSh3b3JraW5n
IGNvcHkpCkBAIC01Nyw3ICs1Nyw3IEBACiAgICAgICAgIH0ganM7CiAgICAgfTsKIAotICAgIEpT
T2JqZWN0KiBjb25zdHJ1Y3QoRXhlY1N0YXRlKiwgSlNWYWx1ZSBjb25zdHJ1Y3RvciwgQ29uc3Ry
dWN0VHlwZSwgY29uc3QgQ29uc3RydWN0RGF0YSYsIGNvbnN0IEFyZ0xpc3QmKTsKKyAgICBKU19F
WFBPUlRFRF9TWU1CT0wgSlNPYmplY3QqIGNvbnN0cnVjdChFeGVjU3RhdGUqLCBKU1ZhbHVlIGNv
bnN0cnVjdG9yLCBDb25zdHJ1Y3RUeXBlLCBjb25zdCBDb25zdHJ1Y3REYXRhJiwgY29uc3QgQXJn
TGlzdCYpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApJbmRleDogSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9NYXJrU3RhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL01h
cmtTdGFjay5oCShyZXZpc2lvbiA2MTcyMikKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFy
a1N0YWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTg1LDggKzg1LDggQEAKICAgICAgICAgICAgIE1h
cmtTZXRQcm9wZXJ0aWVzIG1fcHJvcGVydGllczsKICAgICAgICAgfTsKIAotICAgICAgICBzdGF0
aWMgdm9pZCogYWxsb2NhdGVTdGFjayhzaXplX3Qgc2l6ZSk7Ci0gICAgICAgIHN0YXRpYyB2b2lk
IHJlbGVhc2VTdGFjayh2b2lkKiBhZGRyLCBzaXplX3Qgc2l6ZSk7CisgICAgICAgIEpTX0VYUE9S
VEVEX1NZTUJPTCBzdGF0aWMgdm9pZCogYWxsb2NhdGVTdGFjayhzaXplX3Qgc2l6ZSk7CisgICAg
ICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0aWMgdm9pZCByZWxlYXNlU3RhY2sodm9pZCogYWRk
ciwgc2l6ZV90IHNpemUpOwogCiAgICAgICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVQYWdlc2l6
ZSgpOwogICAgICAgICBzdGF0aWMgc2l6ZV90IHBhZ2VTaXplKCkKSW5kZXg6IEphdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5oCShyZXZpc2lvbiA2MTcyMikKKysr
IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMSw5ICszMSw5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi0gICAgLy8gVGhpcyBm
dW5jdGlvbiBtdXN0IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4gSXQgaXMgc2FmZSB0
byBjYWxsIGl0IHJlcGVhdGVkbHkuCi0gICAgLy8gRGFyd2luIGlzIGFuIGV4Y2VwdGlvbiB0byB0
aGlzIHJ1bGU6IGl0IGlzIE9LIHRvIGNhbGwgdGhpcyBmdW5jdGlvbiBmcm9tIGFueSB0aHJlYWQs
IGV2ZW4gcmVlbnRyYW50bHkuCi0gICAgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nKCk7CisvLyBU
aGlzIGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVkIGZyb20gdGhlIG1haW4gdGhyZWFkLiBJdCBpcyBz
YWZlIHRvIGNhbGwgaXQgcmVwZWF0ZWRseS4KKy8vIERhcndpbiBpcyBhbiBleGNlcHRpb24gdG8g
dGhpcyBydWxlOiBpdCBpcyBPSyB0byBjYWxsIHRoaXMgZnVuY3Rpb24gZnJvbSBhbnkgdGhyZWFk
LCBldmVuIHJlZW50cmFudGx5LgorSlNfRVhQT1JURURfU1lNQk9MIHZvaWQgaW5pdGlhbGl6ZVRo
cmVhZGluZygpOwogCiB9CiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2NvbmZpZy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIEphdmFTY3JpcHRDb3JlL2NvbmZpZy5oCShyZXZpc2lvbiA2MTcyMikKKysrIEphdmFT
Y3JpcHRDb3JlL2NvbmZpZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwyNyArMjksMjggQEAKIAog
I2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogCi0jaWYgIVBMQVRGT1JNKENIUk9NSVVNKSAmJiBP
UyhXSU5ET1dTKSAmJiAhZGVmaW5lZChCVUlMRElOR19XWF9fKSAmJiAhQ09NUElMRVIoR0NDKQor
I2lmICFQTEFURk9STShDSFJPTUlVTSkgJiYgT1MoV0lORE9XUykgJiYgIUNPTVBJTEVSKEdDQykK
ICNpZiBkZWZpbmVkKEJVSUxESU5HX0phdmFTY3JpcHRDb3JlKSB8fCBkZWZpbmVkKEJVSUxESU5H
X1dURikKLSNkZWZpbmUgSlNfRVhQT1JUREFUQSBfX2RlY2xzcGVjKGRsbGV4cG9ydCkKKyNkZWZp
bmUgSlNfRVhQT1JURURfU1lNQk9MIF9fZGVjbHNwZWMoZGxsZXhwb3J0KQogI2Vsc2UKLSNkZWZp
bmUgSlNfRVhQT1JUREFUQSBfX2RlY2xzcGVjKGRsbGltcG9ydCkKKyNkZWZpbmUgSlNfRVhQT1JU
RURfU1lNQk9MIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQogI2VuZGlmCi0jZGVmaW5lIEpTX0VYUE9S
VENMQVNTIEpTX0VYUE9SVERBVEEKKyNlbGlmIGRlZmluZWQoX19HTlVDX18pICYmICFkZWZpbmVk
KF9fQ0NfQVJNKSAmJiAhZGVmaW5lZChfX0FSTUNDX18pCisjZGVmaW5lIEpTX0VYUE9SVEVEX1NZ
TUJPTCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKQogI2Vsc2UKLSNkZWZp
bmUgSlNfRVhQT1JUREFUQQotI2RlZmluZSBKU19FWFBPUlRDTEFTUworI2RlZmluZSBKU19FWFBP
UlRFRF9TWU1CT0wKICNlbmRpZgogCiAjaWYgT1MoV0lORE9XUykKIAotLy8gSWYgd2UgZG9uJ3Qg
ZGVmaW5lIHRoZXNlLCB0aGV5IGdldCBkZWZpbmVkIGluIHdpbmRlZi5oLiAKLS8vIFdlIHdhbnQg
dG8gdXNlIHN0ZDo6bWluIGFuZCBzdGQ6Om1heAorLyogSWYgd2UgZG9uJ3QgZGVmaW5lIHRoZXNl
LCB0aGV5IGdldCBkZWZpbmVkIGluIHdpbmRlZi5oLiAKKyAqIFdlIHdhbnQgdG8gdXNlIHN0ZDo6
bWluIGFuZCBzdGQ6Om1heAorICovCiAjZGVmaW5lIG1heCBtYXgKICNkZWZpbmUgbWluIG1pbgog
CiAjaWYgIUNPTVBJTEVSKE1TVkM3X09SX0xPV0VSKSAmJiAhT1MoV0lOQ0UpCi0vLyBXZSBuZWVk
IHRvIGRlZmluZSB0aGlzIGJlZm9yZSB0aGUgZmlyc3QgI2luY2x1ZGUgb2Ygc3RkbGliLmggb3Ig
aXQgd29uJ3QgY29udGFpbiByYW5kX3MuCisvKiBXZSBuZWVkIHRvIGRlZmluZSB0aGlzIGJlZm9y
ZSB0aGUgZmlyc3QgI2luY2x1ZGUgb2Ygc3RkbGliLmggb3IgaXQgd29uJ3QgY29udGFpbiByYW5k
X3MuICovCiAjaWZuZGVmIF9DUlRfUkFORF9TCiAjZGVmaW5lIF9DUlRfUkFORF9TCiAjZW5kaWYK
QEAgLTcyLDkgKzczLDEwIEBACiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNlbmRpZgog
Ci0vLyB0aGlzIGJyZWFrcyBjb21waWxhdGlvbiBvZiA8UUZvbnREYXRhYmFzZT4sIGF0IGxlYXN0
LCBzbyB0dXJuIGl0IG9mZiBmb3Igbm93Ci0vLyBBbHNvIGdlbmVyYXRlcyBlcnJvcnMgb24gd3gg
b24gV2luZG93cywgYmVjYXVzZSB0aGVzZSBmdW5jdGlvbnMKLS8vIGFyZSB1c2VkIGZyb20gd3gg
aGVhZGVycy4gCisvKiB0aGlzIGJyZWFrcyBjb21waWxhdGlvbiBvZiA8UUZvbnREYXRhYmFzZT4s
IGF0IGxlYXN0LCBzbyB0dXJuIGl0IG9mZiBmb3Igbm93CisgKiAgQWxzbyBnZW5lcmF0ZXMgZXJy
b3JzIG9uIHd4IG9uIFdpbmRvd3MsIGJlY2F1c2UgdGhlc2UgZnVuY3Rpb25zCisgKiAgYXJlIHVz
ZWQgZnJvbSB3eCBoZWFkZXJzLgorICovIAogI2lmICFQTEFURk9STShRVCkgJiYgIVBMQVRGT1JN
KFdYKQogI2luY2x1ZGUgPHd0Zi9EaXNhbGxvd0NUeXBlLmg+CiAjZW5kaWYKSW5kZXg6IEphdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEphdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCShyZXZpc2lv
biA2MTcyMikKKysrIEphdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC05MCw3ICs5MCw3IEBACiAgICAgICAgIHR5cGVkZWYgRGVj
bGFyYXRpb25TdGFja3M6OlZhclN0YWNrIFZhclN0YWNrOwogICAgICAgICB0eXBlZGVmIERlY2xh
cmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNrIEZ1bmN0aW9uU3RhY2s7CiAKLSAgICAgICAgc3Rh
dGljIHZvaWQgc2V0RHVtcHNHZW5lcmF0ZWRDb2RlKGJvb2wgZHVtcHNHZW5lcmF0ZWRDb2RlKTsK
KyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHN0YXRpYyB2b2lkIHNldER1bXBzR2VuZXJhdGVk
Q29kZShib29sIGR1bXBzR2VuZXJhdGVkQ29kZSk7CiAgICAgICAgIHN0YXRpYyBib29sIGR1bXBz
R2VuZXJhdGVkQ29kZSgpOwogCiAgICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yKFByb2dyYW1Ob2Rl
KiwgY29uc3QgRGVidWdnZXIqLCBjb25zdCBTY29wZUNoYWluJiwgU3ltYm9sVGFibGUqLCBQcm9n
cmFtQ29kZUJsb2NrKik7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvUmFuZG9tTnVtYmVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL1JhbmRvbU51bWJlci5oCShyZXZpc2lv
biA2MTcyMikKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9SYW5kb21OdW1iZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMjgsOSArMjgsOSBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotICAgIC8vIFJldHVy
bnMgYSBwc2V1ZG8tcmFuZG9tIG51bWJlciBpbiB0aGUgcmFuZ2UgWzAsIDEpLCBhdHRlbXB0cyB0
byBiZQotICAgIC8vIGNyeXB0b2dyYXBoaWNhbGx5IHNlY3VyZSBpZiBwb3NzaWJsZSBvbiB0aGUg
dGFyZ2V0IHBsYXRmb3JtCi0gICAgZG91YmxlIHJhbmRvbU51bWJlcigpOworLy8gUmV0dXJucyBh
IHBzZXVkby1yYW5kb20gbnVtYmVyIGluIHRoZSByYW5nZSBbMCwgMSksIGF0dGVtcHRzIHRvIGJl
CisvLyBjcnlwdG9ncmFwaGljYWxseSBzZWN1cmUgaWYgcG9zc2libGUgb24gdGhlIHRhcmdldCBw
bGF0Zm9ybQorSlNfRVhQT1JURURfU1lNQk9MIGRvdWJsZSByYW5kb21OdW1iZXIoKTsKIAogfQog
CkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oCShyZXZp
c2lvbiA2MTcyMikKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMjYsMjIgKzI2LDIyIEBACiAKIG5hbWVzcGFjZSBXVEYgewog
ICAgIAotICAgIHN0cnVjdCBSZWZDb3VudGVkTGVha0NvdW50ZXIgewotICAgICAgICBzdGF0aWMg
dm9pZCBzdXBwcmVzc01lc3NhZ2VzKGNvbnN0IGNoYXIqKTsKLSAgICAgICAgc3RhdGljIHZvaWQg
Y2FuY2VsTWVzc2FnZVN1cHByZXNzaW9uKGNvbnN0IGNoYXIqKTsKK3N0cnVjdCBKU19FWFBPUlRF
RF9TWU1CT0wgUmVmQ291bnRlZExlYWtDb3VudGVyIHsKKyAgICBzdGF0aWMgdm9pZCBzdXBwcmVz
c01lc3NhZ2VzKGNvbnN0IGNoYXIqKTsKKyAgICBzdGF0aWMgdm9pZCBjYW5jZWxNZXNzYWdlU3Vw
cHJlc3Npb24oY29uc3QgY2hhciopOwogICAgICAgICAKLSAgICAgICAgZXhwbGljaXQgUmVmQ291
bnRlZExlYWtDb3VudGVyKGNvbnN0IGNoYXIqIGRlc2NyaXB0aW9uKTsKLSAgICAgICAgflJlZkNv
dW50ZWRMZWFrQ291bnRlcigpOworICAgIGV4cGxpY2l0IFJlZkNvdW50ZWRMZWFrQ291bnRlcihj
b25zdCBjaGFyKiBkZXNjcmlwdGlvbik7CisgICAgflJlZkNvdW50ZWRMZWFrQ291bnRlcigpOwog
Ci0gICAgICAgIHZvaWQgaW5jcmVtZW50KCk7Ci0gICAgICAgIHZvaWQgZGVjcmVtZW50KCk7Cisg
ICAgdm9pZCBpbmNyZW1lbnQoKTsKKyAgICB2b2lkIGRlY3JlbWVudCgpOwogCiAjaWZuZGVmIE5E
RUJVRwotICAgIHByaXZhdGU6Ci0gICAgICAgIHZvbGF0aWxlIGludCBtX2NvdW50OwotICAgICAg
ICBjb25zdCBjaGFyKiBtX2Rlc2NyaXB0aW9uOworcHJpdmF0ZToKKyAgICB2b2xhdGlsZSBpbnQg
bV9jb3VudDsKKyAgICBjb25zdCBjaGFyKiBtX2Rlc2NyaXB0aW9uOwogI2VuZGlmCi0gICAgfTsK
K307CiAKIH0gIC8vIG5hbWVzcGFjZSBXVEYKIApJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL3Rl
eHQvQ1N0cmluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L0NTdHJp
bmcuaAkocmV2aXNpb24gNjE3MjIpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9DU3RyaW5n
LmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDEyICs1MiwxMyBAQAogY2xhc3MgQ1N0cmluZyB7CiBw
dWJsaWM6CiAgICAgQ1N0cmluZygpIHsgfQotICAgIENTdHJpbmcoY29uc3QgY2hhciopOwotICAg
IENTdHJpbmcoY29uc3QgY2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgSlNfRVhQT1JURURf
U1lNQk9MIENTdHJpbmcoY29uc3QgY2hhciopOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBDU3Ry
aW5nKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIENTdHJpbmcoQ1N0cmluZ0J1
ZmZlciogYnVmZmVyKSA6IG1fYnVmZmVyKGJ1ZmZlcikgeyB9Ci0gICAgc3RhdGljIENTdHJpbmcg
bmV3VW5pbml0aWFsaXplZChzaXplX3QgbGVuZ3RoLCBjaGFyKiYgY2hhcmFjdGVyQnVmZmVyKTsK
KyAgICBKU19FWFBPUlRFRF9TWU1CT0wgc3RhdGljIENTdHJpbmcgbmV3VW5pbml0aWFsaXplZChz
aXplX3QgbGVuZ3RoLCBjaGFyKiYgY2hhcmFjdGVyQnVmZmVyKTsKIAotICAgIGNvbnN0IGNoYXIq
IGRhdGEoKSBjb25zdAorICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB+Q1N0cmluZygpIHsgfQorICAg
IEpTX0VYUE9SVEVEX1NZTUJPTCBjb25zdCBjaGFyKiBkYXRhKCkgY29uc3QKICAgICB7CiAgICAg
ICAgIHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5kYXRhKCkgOiAwOwogICAgIH0KQEAgLTc3
LDcgKzc4LDcgQEAKICAgICBSZWZQdHI8Q1N0cmluZ0J1ZmZlcj4gbV9idWZmZXI7CiB9OwogCi1i
b29sIG9wZXJhdG9yPT0oY29uc3QgQ1N0cmluZyYgYSwgY29uc3QgQ1N0cmluZyYgYik7CitKU19F
WFBPUlRFRF9TWU1CT0wgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTdHJpbmcmIGEsIGNvbnN0IENT
dHJpbmcmIGIpOwogaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBDU3RyaW5nJiBhLCBjb25z
dCBDU3RyaW5nJiBiKSB7IHJldHVybiAhKGEgPT0gYik7IH0KIAogfSAvLyBuYW1lc3BhY2UgV1RG
CkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdTdGF0aWNzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdTdGF0aWNzLmNwcAkocmV2aXNp
b24gNjE3MjIpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdTdGF0aWNzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDksMTMgKzQ5LDEzIEBACiAgICAgcmV0dXJuICZlbXB0eVN0cmlu
ZzsKIH0KIAotSlNfRVhQT1JUREFUQSBERUZJTkVfR0xPQkFMKEF0b21pY1N0cmluZywgbnVsbEF0
b20pCi1KU19FWFBPUlREQVRBIERFRklORV9HTE9CQUwoQXRvbWljU3RyaW5nLCBlbXB0eUF0b20s
ICIiKQotSlNfRVhQT1JUREFUQSBERUZJTkVfR0xPQkFMKEF0b21pY1N0cmluZywgdGV4dEF0b20s
ICIjdGV4dCIpCi1KU19FWFBPUlREQVRBIERFRklORV9HTE9CQUwoQXRvbWljU3RyaW5nLCBjb21t
ZW50QXRvbSwgIiNjb21tZW50IikKLUpTX0VYUE9SVERBVEEgREVGSU5FX0dMT0JBTChBdG9taWNT
dHJpbmcsIHN0YXJBdG9tLCAiKiIpCi1KU19FWFBPUlREQVRBIERFRklORV9HTE9CQUwoQXRvbWlj
U3RyaW5nLCB4bWxBdG9tLCAieG1sIikKLUpTX0VYUE9SVERBVEEgREVGSU5FX0dMT0JBTChBdG9t
aWNTdHJpbmcsIHhtbG5zQXRvbSwgInhtbG5zIikKK0pTX0VYUE9SVEVEX1NZTUJPTCBERUZJTkVf
R0xPQkFMKEF0b21pY1N0cmluZywgbnVsbEF0b20pCitKU19FWFBPUlRFRF9TWU1CT0wgREVGSU5F
X0dMT0JBTChBdG9taWNTdHJpbmcsIGVtcHR5QXRvbSwgIiIpCitKU19FWFBPUlRFRF9TWU1CT0wg
REVGSU5FX0dMT0JBTChBdG9taWNTdHJpbmcsIHRleHRBdG9tLCAiI3RleHQiKQorSlNfRVhQT1JU
RURfU1lNQk9MIERFRklORV9HTE9CQUwoQXRvbWljU3RyaW5nLCBjb21tZW50QXRvbSwgIiNjb21t
ZW50IikKK0pTX0VYUE9SVEVEX1NZTUJPTCBERUZJTkVfR0xPQkFMKEF0b21pY1N0cmluZywgc3Rh
ckF0b20sICIqIikKK0pTX0VYUE9SVEVEX1NZTUJPTCBERUZJTkVfR0xPQkFMKEF0b21pY1N0cmlu
ZywgeG1sQXRvbSwgInhtbCIpCitKU19FWFBPUlRFRF9TWU1CT0wgREVGSU5FX0dMT0JBTChBdG9t
aWNTdHJpbmcsIHhtbG5zQXRvbSwgInhtbG5zIikKIAogdm9pZCBBdG9taWNTdHJpbmc6OmluaXQo
KQogewpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvQXRvbWljU3RyaW5nLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvQXRvbWljU3RyaW5nLmgJKHJldmlzaW9u
IDYxNzIyKQorKysgSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvQXRvbWljU3RyaW5nLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQwLDI3ICs0MCwzMSBAQAogCiBjbGFzcyBBdG9taWNTdHJpbmcgewogcHVi
bGljOgotICAgIHN0YXRpYyB2b2lkIGluaXQoKTsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgc3Rh
dGljIHZvaWQgaW5pdCgpOwogCi0gICAgQXRvbWljU3RyaW5nKCkgeyB9Ci0gICAgQXRvbWljU3Ry
aW5nKGNvbnN0IGNoYXIqIHMpIDogbV9zdHJpbmcoYWRkKHMpKSB7IH0KKyAgICBKU19FWFBPUlRF
RF9TWU1CT0wgQXRvbWljU3RyaW5nKCkgeyB9CisgICAgLy8gY29weSBjb25zdHJ1Y3RvciBuZWVk
cyB0byBiZSBleHBsaWNpdGx5IGRlZmluZWQgc28gd2UgY2FuIHNwZWNpZnkgcHJvcGVyIGRsbCBs
aW5rYWdlCisgICAgSlNfRVhQT1JURURfU1lNQk9MIEF0b21pY1N0cmluZyhjb25zdCBBdG9taWNT
dHJpbmcmIHMpIDogbV9zdHJpbmcocy5tX3N0cmluZykgeyB9CisgICAgSlNfRVhQT1JURURfU1lN
Qk9MIEF0b21pY1N0cmluZyhjb25zdCBjaGFyKiBzKSA6IG1fc3RyaW5nKGFkZChzKSkgeyB9CiAg
ICAgQXRvbWljU3RyaW5nKGNvbnN0IFVDaGFyKiBzLCB1bnNpZ25lZCBsZW5ndGgpIDogbV9zdHJp
bmcoYWRkKHMsIGxlbmd0aCkpIHsgfQogICAgIEF0b21pY1N0cmluZyhjb25zdCBVQ2hhciogcywg
dW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBleGlzdGluZ0hhc2gpIDogbV9zdHJpbmcoYWRkKHMs
IGxlbmd0aCwgZXhpc3RpbmdIYXNoKSkgeyB9CiAgICAgQXRvbWljU3RyaW5nKGNvbnN0IFVDaGFy
KiBzKSA6IG1fc3RyaW5nKGFkZChzKSkgeyB9CiAgICAgQVRPTUlDU1RSSU5HX0NPTlZFUlNJT04g
QXRvbWljU3RyaW5nKFN0cmluZ0ltcGwqIGltcCkgOiBtX3N0cmluZyhhZGQoaW1wKSkgeyB9CiAg
ICAgQXRvbWljU3RyaW5nKEF0b21pY1N0cmluZ0ltcGwqIGltcCkgOiBtX3N0cmluZyhpbXApIHsg
fQotICAgIEFUT01JQ1NUUklOR19DT05WRVJTSU9OIEF0b21pY1N0cmluZyhjb25zdCBTdHJpbmcm
IHMpIDogbV9zdHJpbmcoYWRkKHMuaW1wbCgpKSkgeyB9CisgICAgSlNfRVhQT1JURURfU1lNQk9M
IEFUT01JQ1NUUklOR19DT05WRVJTSU9OIEF0b21pY1N0cmluZyhjb25zdCBTdHJpbmcmIHMpIDog
bV9zdHJpbmcoYWRkKHMuaW1wbCgpKSkgeyB9CiAKICAgICAvLyBIYXNoIHRhYmxlIGRlbGV0ZWQg
dmFsdWVzLCB3aGljaCBhcmUgb25seSBjb25zdHJ1Y3RlZCBhbmQgbmV2ZXIgY29waWVkIG9yIGRl
c3Ryb3llZC4KLSAgICBBdG9taWNTdHJpbmcoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBl
KSA6IG1fc3RyaW5nKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKSB7IH0KLSAgICBib29sIGlz
SGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuaXNIYXNoVGFi
bGVEZWxldGVkVmFsdWUoKTsgfQorICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBBdG9taWNTdHJpbmco
V1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKSA6IG1fc3RyaW5nKFdURjo6SGFzaFRhYmxl
RGVsZXRlZFZhbHVlKSB7IH0KKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgYm9vbCBpc0hhc2hUYWJs
ZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmlzSGFzaFRhYmxlRGVsZXRl
ZFZhbHVlKCk7IH0KIAotICAgIHN0YXRpYyBBdG9taWNTdHJpbmdJbXBsKiBmaW5kKGNvbnN0IFVD
aGFyKiBzLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIGV4aXN0aW5nSGFzaCk7CisgICAgSlNf
RVhQT1JURURfU1lNQk9MIH5BdG9taWNTdHJpbmcoKSB7IH0KIAorICAgIEpTX0VYUE9SVEVEX1NZ
TUJPTCBzdGF0aWMgQXRvbWljU3RyaW5nSW1wbCogZmluZChjb25zdCBVQ2hhciogcywgdW5zaWdu
ZWQgbGVuZ3RoLCB1bnNpZ25lZCBleGlzdGluZ0hhc2gpOworCiAgICAgb3BlcmF0b3IgY29uc3Qg
U3RyaW5nJigpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9CiAgICAgY29uc3QgU3RyaW5nJiBz
dHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfTsKIAotICAgIEF0b21pY1N0cmluZ0lt
cGwqIGltcGwoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxBdG9taWNTdHJpbmdJbXBsICo+
KG1fc3RyaW5nLmltcGwoKSk7IH0KKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgQXRvbWljU3RyaW5n
SW1wbCogaW1wbCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEF0b21pY1N0cmluZ0ltcGwg
Kj4obV9zdHJpbmcuaW1wbCgpKTsgfQogICAgIAogICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJz
KCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuY2hhcmFjdGVycygpOyB9CiAgICAgdW5zaWduZWQg
bGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcubGVuZ3RoKCk7IH0KQEAgLTg0LDcgKzg4
LDcgQEAKICAgICBib29sIGVuZHNXaXRoKGNvbnN0IFN0cmluZyYgcywgYm9vbCBjYXNlU2Vuc2l0
aXZlID0gdHJ1ZSkgY29uc3QKICAgICAgICAgeyByZXR1cm4gbV9zdHJpbmcuZW5kc1dpdGgocywg
Y2FzZVNlbnNpdGl2ZSk7IH0KICAgICAKLSAgICBBdG9taWNTdHJpbmcgbG93ZXIoKSBjb25zdDsK
KyAgICBKU19FWFBPUlRFRF9TWU1CT0wgQXRvbWljU3RyaW5nIGxvd2VyKCkgY29uc3Q7CiAgICAg
QXRvbWljU3RyaW5nIHVwcGVyKCkgY29uc3QgeyByZXR1cm4gQXRvbWljU3RyaW5nKGltcGwoKS0+
dXBwZXIoKSk7IH0KICAgICAKICAgICBpbnQgdG9JbnQoYm9vbCogb2sgPSAwKSBjb25zdCB7IHJl
dHVybiBtX3N0cmluZy50b0ludChvayk7IH0KQEAgLTExMCwyNCArMTE0LDMyIEBACiAgICAgb3Bl
cmF0b3IgUVN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9CiAjZW5kaWYKIAorICAg
IEpTX0VYUE9SVEVEX1NZTUJPTCBpbmxpbmUgQXRvbWljU3RyaW5nJiBvcGVyYXRvcj0oY29uc3Qg
QXRvbWljU3RyaW5nJiBhKSAKKyAgICB7IAorICAgICAgICBpZiAodGhpcyAhPSAmYSkKKyAgICAg
ICAgICAgIG1fc3RyaW5nID0gYS5tX3N0cmluZzsgCisgICAgICAgIAorICAgICAgICByZXR1cm4g
KnRoaXM7IAorICAgIH0KKwogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9zdHJpbmc7CiAgICAgCi0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRkKGNvbnN0IGNoYXIqKTsKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGQoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBs
ZW5ndGgpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChjb25zdCBVQ2hh
ciosIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgZXhpc3RpbmdIYXNoKTsKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGQoY29uc3QgVUNoYXIqKTsKKyAgICBKU19FWFBPUlRF
RF9TWU1CT0wgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRkKGNvbnN0IGNoYXIqKTsK
KyAgICBKU19FWFBPUlRFRF9TWU1CT0wgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRk
KGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wg
c3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRkKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQg
bGVuZ3RoLCB1bnNpZ25lZCBleGlzdGluZ0hhc2gpOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBz
dGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGQoY29uc3QgVUNoYXIqKTsKICAgICBBTFdB
WVNfSU5MSU5FIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRkKFN0cmluZ0ltcGwqIHIpCiAgICAg
ewogICAgICAgICBpZiAoIXIgfHwgci0+aXNBdG9taWMoKSkKICAgICAgICAgICAgIHJldHVybiBy
OwogICAgICAgICByZXR1cm4gYWRkU2xvd0Nhc2Uocik7CiAgICAgfQotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFN0cmluZ0ltcGw+IGFkZFNsb3dDYXNlKFN0cmluZ0ltcGwqKTsKKyAgICBKU19FWFBP
UlRFRF9TWU1CT0wgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRkU2xvd0Nhc2UoU3Ry
aW5nSW1wbCopOwogfTsKIAogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBdG9taWNTdHJp
bmcmIGEsIGNvbnN0IEF0b21pY1N0cmluZyYgYikgeyByZXR1cm4gYS5pbXBsKCkgPT0gYi5pbXBs
KCk7IH0KLWJvb2wgb3BlcmF0b3I9PShjb25zdCBBdG9taWNTdHJpbmcmIGEsIGNvbnN0IGNoYXIq
IGIpOworSlNfRVhQT1JURURfU1lNQk9MIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBdG9taWNTdHJp
bmcmIGEsIGNvbnN0IGNoYXIqIGIpOwogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBdG9t
aWNTdHJpbmcmIGEsIGNvbnN0IFN0cmluZyYgYikgeyByZXR1cm4gZXF1YWwoYS5pbXBsKCksIGIu
aW1wbCgpKTsgfQogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBjaGFyKiBhLCBjb25zdCBB
dG9taWNTdHJpbmcmIGIpIHsgcmV0dXJuIGIgPT0gYTsgfQogaW5saW5lIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBTdHJpbmcmIGEsIGNvbnN0IEF0b21pY1N0cmluZyYgYikgeyByZXR1cm4gZXF1YWwo
YS5pbXBsKCksIGIuaW1wbCgpKTsgfQpAQCAtMTQ3LDEzICsxNTksMTMgQEAKIC8vIERlZmluZSBl
eHRlcm5hbCBnbG9iYWwgdmFyaWFibGVzIGZvciB0aGUgY29tbW9ubHkgdXNlZCBhdG9taWMgc3Ry
aW5ncy4KIC8vIFRoZXNlIGFyZSBvbmx5IHVzYWJsZSBmcm9tIHRoZSBtYWluIHRocmVhZC4KICNp
Zm5kZWYgQVRPTUlDU1RSSU5HX0hJREVfR0xPQkFMUwotICAgIGV4dGVybiBjb25zdCBKU19FWFBP
UlREQVRBIEF0b21pY1N0cmluZyBudWxsQXRvbTsKLSAgICBleHRlcm4gY29uc3QgSlNfRVhQT1JU
REFUQSBBdG9taWNTdHJpbmcgZW1wdHlBdG9tOwotICAgIGV4dGVybiBjb25zdCBKU19FWFBPUlRE
QVRBIEF0b21pY1N0cmluZyB0ZXh0QXRvbTsKLSAgICBleHRlcm4gY29uc3QgSlNfRVhQT1JUREFU
QSBBdG9taWNTdHJpbmcgY29tbWVudEF0b207Ci0gICAgZXh0ZXJuIGNvbnN0IEpTX0VYUE9SVERB
VEEgQXRvbWljU3RyaW5nIHN0YXJBdG9tOwotICAgIGV4dGVybiBjb25zdCBKU19FWFBPUlREQVRB
IEF0b21pY1N0cmluZyB4bWxBdG9tOwotICAgIGV4dGVybiBjb25zdCBKU19FWFBPUlREQVRBIEF0
b21pY1N0cmluZyB4bWxuc0F0b207CitleHRlcm4gY29uc3QgSlNfRVhQT1JURURfU1lNQk9MIEF0
b21pY1N0cmluZyBudWxsQXRvbTsKK2V4dGVybiBjb25zdCBKU19FWFBPUlRFRF9TWU1CT0wgQXRv
bWljU3RyaW5nIGVtcHR5QXRvbTsKK2V4dGVybiBjb25zdCBKU19FWFBPUlRFRF9TWU1CT0wgQXRv
bWljU3RyaW5nIHRleHRBdG9tOworZXh0ZXJuIGNvbnN0IEpTX0VYUE9SVEVEX1NZTUJPTCBBdG9t
aWNTdHJpbmcgY29tbWVudEF0b207CitleHRlcm4gY29uc3QgSlNfRVhQT1JURURfU1lNQk9MIEF0
b21pY1N0cmluZyBzdGFyQXRvbTsKK2V4dGVybiBjb25zdCBKU19FWFBPUlRFRF9TWU1CT0wgQXRv
bWljU3RyaW5nIHhtbEF0b207CitleHRlcm4gY29uc3QgSlNfRVhQT1JURURfU1lNQk9MIEF0b21p
Y1N0cmluZyB4bWxuc0F0b207CiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvV1RGU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2
YVNjcmlwdENvcmUvd3RmL3RleHQvV1RGU3RyaW5nLmgJKHJldmlzaW9uIDYxNzIyKQorKysgSmF2
YVNjcmlwdENvcmUvd3RmL3RleHQvV1RGU3RyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTY1LDE5
ICs2NSwxOSBAQAogLy8gRGVjbGFyYXRpb25zIG9mIHN0cmluZyBvcGVyYXRpb25zCiAKIGJvb2wg
Y2hhcmFjdGVyc0FyZUFsbEFTQ0lJKGNvbnN0IFVDaGFyKiwgc2l6ZV90KTsKLWludCBjaGFyYWN0
ZXJzVG9JbnRTdHJpY3QoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gMCwgaW50IGJh
c2UgPSAxMCk7Ci11bnNpZ25lZCBjaGFyYWN0ZXJzVG9VSW50U3RyaWN0KGNvbnN0IFVDaGFyKiwg
c2l6ZV90LCBib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApOworSlNfRVhQT1JURURfU1lNQk9M
IGludCBjaGFyYWN0ZXJzVG9JbnRTdHJpY3QoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9r
ID0gMCwgaW50IGJhc2UgPSAxMCk7CitKU19FWFBPUlRFRF9TWU1CT0wgdW5zaWduZWQgY2hhcmFj
dGVyc1RvVUludFN0cmljdChjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSAwLCBpbnQg
YmFzZSA9IDEwKTsKIGludDY0X3QgY2hhcmFjdGVyc1RvSW50NjRTdHJpY3QoY29uc3QgVUNoYXIq
LCBzaXplX3QsIGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCk7CiB1aW50NjRfdCBjaGFyYWN0
ZXJzVG9VSW50NjRTdHJpY3QoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gMCwgaW50
IGJhc2UgPSAxMCk7CiBpbnRwdHJfdCBjaGFyYWN0ZXJzVG9JbnRQdHJTdHJpY3QoY29uc3QgVUNo
YXIqLCBzaXplX3QsIGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCk7CiAKLWludCBjaGFyYWN0
ZXJzVG9JbnQoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gMCk7IC8vIGlnbm9yZXMg
dHJhaWxpbmcgZ2FyYmFnZQorSlNfRVhQT1JURURfU1lNQk9MIGludCBjaGFyYWN0ZXJzVG9JbnQo
Y29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gMCk7IC8vIGlnbm9yZXMgdHJhaWxpbmcg
Z2FyYmFnZQogdW5zaWduZWQgY2hhcmFjdGVyc1RvVUludChjb25zdCBVQ2hhciosIHNpemVfdCwg
Ym9vbCogb2sgPSAwKTsgLy8gaWdub3JlcyB0cmFpbGluZyBnYXJiYWdlCiBpbnQ2NF90IGNoYXJh
Y3RlcnNUb0ludDY0KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDApOyAvLyBpZ25v
cmVzIHRyYWlsaW5nIGdhcmJhZ2UKIHVpbnQ2NF90IGNoYXJhY3RlcnNUb1VJbnQ2NChjb25zdCBV
Q2hhciosIHNpemVfdCwgYm9vbCogb2sgPSAwKTsgLy8gaWdub3JlcyB0cmFpbGluZyBnYXJiYWdl
CiBpbnRwdHJfdCBjaGFyYWN0ZXJzVG9JbnRQdHIoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wq
IG9rID0gMCk7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQogCi1kb3VibGUgY2hhcmFjdGVy
c1RvRG91YmxlKGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDApOworSlNfRVhQT1JU
RURfU1lNQk9MIGRvdWJsZSBjaGFyYWN0ZXJzVG9Eb3VibGUoY29uc3QgVUNoYXIqLCBzaXplX3Qs
IGJvb2wqIG9rID0gMCk7CiBmbG9hdCBjaGFyYWN0ZXJzVG9GbG9hdChjb25zdCBVQ2hhciosIHNp
emVfdCwgYm9vbCogb2sgPSAwKTsKIAogaW50IGZpbmQoY29uc3QgVUNoYXIqLCBzaXplX3QsIFVD
aGFyLCBpbnQgc3RhcnRQb3NpdGlvbiA9IDApOwpAQCAtODUsMTQgKzg1LDE1IEBACiAKIGNsYXNz
IFN0cmluZyB7CiBwdWJsaWM6Ci0gICAgU3RyaW5nKCkgeyB9IC8vIGdpdmVzIG51bGwgc3RyaW5n
LCBkaXN0aW5ndWlzaGFibGUgZnJvbSBhbiBlbXB0eSBzdHJpbmcKKyAgICBKU19FWFBPUlRFRF9T
WU1CT0wgU3RyaW5nKCkgeyB9IC8vIGdpdmVzIG51bGwgc3RyaW5nLCBkaXN0aW5ndWlzaGFibGUg
ZnJvbSBhbiBlbXB0eSBzdHJpbmcKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgflN0cmluZygpIHsg
fQogICAgIFN0cmluZyhjb25zdCBVQ2hhciogc3RyLCB1bnNpZ25lZCBsZW4pCiAgICAgewogICAg
ICAgICBpZiAoIXN0cikKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgbV9pbXBsID0gU3Ry
aW5nSW1wbDo6Y3JlYXRlKHN0ciwgbGVuKTsKICAgICB9Ci0gICAgU3RyaW5nKGNvbnN0IGNoYXIq
IHN0cikKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgU3RyaW5nKGNvbnN0IGNoYXIqIHN0cikKICAg
ICB7CiAgICAgICAgIGlmICghc3RyKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTA0LDE2ICsx
MDUsMTggQEAKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgbV9pbXBsID0gU3RyaW5nSW1w
bDo6Y3JlYXRlKHN0ciwgbGVuZ3RoKTsKICAgICB9Ci0gICAgU3RyaW5nKGNvbnN0IFVDaGFyKik7
IC8vIFNwZWNpZmljYWxseSBmb3IgbnVsbCB0ZXJtaW5hdGVkIFVURi0xNgotICAgIFN0cmluZyhT
dHJpbmdJbXBsKiBpKSA6IG1faW1wbChpKSB7IH0KLSAgICBTdHJpbmcoUGFzc1JlZlB0cjxTdHJp
bmdJbXBsPiBpKSA6IG1faW1wbChpKSB7IH0KKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgU3RyaW5n
KGNvbnN0IFVDaGFyKik7IC8vIFNwZWNpZmljYWxseSBmb3IgbnVsbCB0ZXJtaW5hdGVkIFVURi0x
NgorICAgIC8vIGNvcHkgY29uc3RydWN0b3IgbmVlZHMgdG8gYmUgZXhwbGljaXRseSBkZWZpbmVk
IHNvIHdlIGNhbiBzcGVjaWZ5IHByb3BlciBkbGwgbGlua2FnZQorICAgIEpTX0VYUE9SVEVEX1NZ
TUJPTCBTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHIpIDogbV9pbXBsKHN0ci5tX2ltcGwpIHsgfQor
ICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBTdHJpbmcoU3RyaW5nSW1wbCogaSkgOiBtX2ltcGwoaSkg
eyB9CisgICAgSlNfRVhQT1JURURfU1lNQk9MIFN0cmluZyhQYXNzUmVmUHRyPFN0cmluZ0ltcGw+
IGkpIDogbV9pbXBsKGkpIHsgfQogICAgIFN0cmluZyhSZWZQdHI8U3RyaW5nSW1wbD4gaSkgOiBt
X2ltcGwoaSkgeyB9CiAKICAgICB2b2lkIHN3YXAoU3RyaW5nJiBvKSB7IG1faW1wbC5zd2FwKG8u
bV9pbXBsKTsgfQogCiAgICAgLy8gSGFzaCB0YWJsZSBkZWxldGVkIHZhbHVlcywgd2hpY2ggYXJl
IG9ubHkgY29uc3RydWN0ZWQgYW5kIG5ldmVyIGNvcGllZCBvciBkZXN0cm95ZWQuCiAgICAgU3Ry
aW5nKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkgOiBtX2ltcGwoV1RGOjpIYXNoVGFi
bGVEZWxldGVkVmFsdWUpIHsgfQotICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBj
b25zdCB7IHJldHVybiBtX2ltcGwuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQorICAgIEpT
X0VYUE9SVEVEX1NZTUJPTCBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyBy
ZXR1cm4gbV9pbXBsLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KIAogICAgIHN0YXRpYyBT
dHJpbmcgYWRvcHQoU3RyaW5nQnVmZmVyJiBidWZmZXIpIHsgcmV0dXJuIFN0cmluZ0ltcGw6OmFk
b3B0KGJ1ZmZlcik7IH0KICAgICBzdGF0aWMgU3RyaW5nIGFkb3B0KFZlY3RvcjxVQ2hhcj4mIHZl
Y3RvcikgeyByZXR1cm4gU3RyaW5nSW1wbDo6YWRvcHQodmVjdG9yKTsgfQpAQCAtMTMyLDcgKzEz
NSw3IEBACiAgICAgICAgIHJldHVybiBtX2ltcGwtPmNoYXJhY3RlcnMoKTsKICAgICB9CiAKLSAg
ICBjb25zdCBVQ2hhciogY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKTsKKyAgICBKU19F
WFBPUlRFRF9TWU1CT0wgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9u
KCk7CiAgICAgCiAgICAgVUNoYXIgb3BlcmF0b3JbXSh1bnNpZ25lZCBpKSBjb25zdCAvLyBpZiBp
ID49IGxlbmd0aCgpLCByZXR1cm5zIDAKICAgICB7CkBAIC0xNDAsNyArMTQzLDcgQEAKICAgICAg
ICAgICAgIHJldHVybiAwOwogICAgICAgICByZXR1cm4gbV9pbXBsLT5jaGFyYWN0ZXJzKClbaV07
CiAgICAgfQotICAgIFVDaGFyMzIgY2hhcmFjdGVyU3RhcnRpbmdBdCh1bnNpZ25lZCkgY29uc3Q7
IC8vIERpdHRvLgorICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBVQ2hhcjMyIGNoYXJhY3RlclN0YXJ0
aW5nQXQodW5zaWduZWQpIGNvbnN0OyAvLyBEaXR0by4KICAgICAKICAgICBib29sIGNvbnRhaW5z
KFVDaGFyIGMpIGNvbnN0IHsgcmV0dXJuIGZpbmQoYykgIT0gLTE7IH0KICAgICBib29sIGNvbnRh
aW5zKGNvbnN0IGNoYXIqIHN0ciwgYm9vbCBjYXNlU2Vuc2l0aXZlID0gdHJ1ZSkgY29uc3QgeyBy
ZXR1cm4gZmluZChzdHIsIDAsIGNhc2VTZW5zaXRpdmUpICE9IC0xOyB9CkBAIC0xNjUsMTEgKzE2
OCwxMSBAQAogICAgIGJvb2wgZW5kc1dpdGgoY29uc3QgU3RyaW5nJiBzLCBib29sIGNhc2VTZW5z
aXRpdmUgPSB0cnVlKSBjb25zdAogICAgICAgICB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmVu
ZHNXaXRoKHMuaW1wbCgpLCBjYXNlU2Vuc2l0aXZlKSA6IHMuaXNFbXB0eSgpOyB9CiAKLSAgICB2
b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIGFwcGVuZChjaGFyKTsKLSAgICB2
b2lkIGFwcGVuZChVQ2hhcik7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgVUNoYXIqLCB1bnNpZ25l
ZCBsZW5ndGgpOwotICAgIHZvaWQgaW5zZXJ0KGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIHBvcyk7
CisgICAgSlNfRVhQT1JURURfU1lNQk9MIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYpOworICAg
IEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIGFwcGVuZChjaGFyKTsKKyAgICBKU19FWFBPUlRFRF9T
WU1CT0wgdm9pZCBhcHBlbmQoVUNoYXIpOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIGFw
cGVuZChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgSlNfRVhQT1JURURfU1lN
Qk9MIHZvaWQgaW5zZXJ0KGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIHBvcyk7CiAgICAgdm9pZCBp
bnNlcnQoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIHBvcyk7CiAKICAg
ICBTdHJpbmcmIHJlcGxhY2UoVUNoYXIgYSwgVUNoYXIgYikgeyBpZiAobV9pbXBsKSBtX2ltcGwg
PSBtX2ltcGwtPnJlcGxhY2UoYSwgYik7IHJldHVybiAqdGhpczsgfQpAQCAtMTgxLDc1ICsxODQs
NzUgQEAKICAgICB2b2lkIG1ha2VVcHBlcigpIHsgaWYgKG1faW1wbCkgbV9pbXBsID0gbV9pbXBs
LT51cHBlcigpOyB9CiAgICAgdm9pZCBtYWtlU2VjdXJlKFVDaGFyIGFDaGFyKSB7IGlmIChtX2lt
cGwpIG1faW1wbCA9IG1faW1wbC0+c2VjdXJlKGFDaGFyKTsgfQogCi0gICAgdm9pZCB0cnVuY2F0
ZSh1bnNpZ25lZCBsZW4pOwotICAgIHZvaWQgcmVtb3ZlKHVuc2lnbmVkIHBvcywgaW50IGxlbiA9
IDEpOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIHRydW5jYXRlKHVuc2lnbmVkIGxlbik7
CisgICAgSlNfRVhQT1JURURfU1lNQk9MIHZvaWQgcmVtb3ZlKHVuc2lnbmVkIHBvcywgaW50IGxl
biA9IDEpOwogCi0gICAgU3RyaW5nIHN1YnN0cmluZyh1bnNpZ25lZCBwb3MsIHVuc2lnbmVkIGxl
biA9IFVJTlRfTUFYKSBjb25zdDsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgU3RyaW5nIHN1YnN0
cmluZyh1bnNpZ25lZCBwb3MsIHVuc2lnbmVkIGxlbiA9IFVJTlRfTUFYKSBjb25zdDsKICAgICBT
dHJpbmcgbGVmdCh1bnNpZ25lZCBsZW4pIGNvbnN0IHsgcmV0dXJuIHN1YnN0cmluZygwLCBsZW4p
OyB9CiAgICAgU3RyaW5nIHJpZ2h0KHVuc2lnbmVkIGxlbikgY29uc3QgeyByZXR1cm4gc3Vic3Ry
aW5nKGxlbmd0aCgpIC0gbGVuLCBsZW4pOyB9CiAKICAgICAvLyBSZXR1cm5zIGEgbG93ZXJjYXNl
L3VwcGVyY2FzZSB2ZXJzaW9uIG9mIHRoZSBzdHJpbmcKLSAgICBTdHJpbmcgbG93ZXIoKSBjb25z
dDsKLSAgICBTdHJpbmcgdXBwZXIoKSBjb25zdDsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgU3Ry
aW5nIGxvd2VyKCkgY29uc3Q7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIFN0cmluZyB1cHBlcigp
IGNvbnN0OwogCi0gICAgU3RyaW5nIHN0cmlwV2hpdGVTcGFjZSgpIGNvbnN0OwotICAgIFN0cmlu
ZyBzaW1wbGlmeVdoaXRlU3BhY2UoKSBjb25zdDsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgU3Ry
aW5nIHN0cmlwV2hpdGVTcGFjZSgpIGNvbnN0OworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBTdHJp
bmcgc2ltcGxpZnlXaGl0ZVNwYWNlKCkgY29uc3Q7CiAKLSAgICBTdHJpbmcgcmVtb3ZlQ2hhcmFj
dGVycyhDaGFyYWN0ZXJNYXRjaEZ1bmN0aW9uUHRyKSBjb25zdDsKKyAgICBKU19FWFBPUlRFRF9T
WU1CT0wgU3RyaW5nIHJlbW92ZUNoYXJhY3RlcnMoQ2hhcmFjdGVyTWF0Y2hGdW5jdGlvblB0cikg
Y29uc3Q7CiAKICAgICAvLyBSZXR1cm4gdGhlIHN0cmluZyB3aXRoIGNhc2UgZm9sZGVkIGZvciBj
YXNlIGluc2Vuc2l0aXZlIGNvbXBhcmlzb24uCi0gICAgU3RyaW5nIGZvbGRDYXNlKCkgY29uc3Q7
CisgICAgSlNfRVhQT1JURURfU1lNQk9MIFN0cmluZyBmb2xkQ2FzZSgpIGNvbnN0OwogCiAgICAg
c3RhdGljIFN0cmluZyBudW1iZXIoc2hvcnQpOwotICAgIHN0YXRpYyBTdHJpbmcgbnVtYmVyKHVu
c2lnbmVkIHNob3J0KTsKLSAgICBzdGF0aWMgU3RyaW5nIG51bWJlcihpbnQpOwotICAgIHN0YXRp
YyBTdHJpbmcgbnVtYmVyKHVuc2lnbmVkKTsKLSAgICBzdGF0aWMgU3RyaW5nIG51bWJlcihsb25n
KTsKLSAgICBzdGF0aWMgU3RyaW5nIG51bWJlcih1bnNpZ25lZCBsb25nKTsKLSAgICBzdGF0aWMg
U3RyaW5nIG51bWJlcihsb25nIGxvbmcpOwotICAgIHN0YXRpYyBTdHJpbmcgbnVtYmVyKHVuc2ln
bmVkIGxvbmcgbG9uZyk7Ci0gICAgc3RhdGljIFN0cmluZyBudW1iZXIoZG91YmxlKTsKKyAgICBK
U19FWFBPUlRFRF9TWU1CT0wgc3RhdGljIFN0cmluZyBudW1iZXIodW5zaWduZWQgc2hvcnQpOwor
ICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0aWMgU3RyaW5nIG51bWJlcihpbnQpOworICAgIEpT
X0VYUE9SVEVEX1NZTUJPTCBzdGF0aWMgU3RyaW5nIG51bWJlcih1bnNpZ25lZCk7CisgICAgSlNf
RVhQT1JURURfU1lNQk9MIHN0YXRpYyBTdHJpbmcgbnVtYmVyKGxvbmcpOworICAgIEpTX0VYUE9S
VEVEX1NZTUJPTCBzdGF0aWMgU3RyaW5nIG51bWJlcih1bnNpZ25lZCBsb25nKTsKKyAgICBKU19F
WFBPUlRFRF9TWU1CT0wgc3RhdGljIFN0cmluZyBudW1iZXIobG9uZyBsb25nKTsKKyAgICBKU19F
WFBPUlRFRF9TWU1CT0wgc3RhdGljIFN0cmluZyBudW1iZXIodW5zaWduZWQgbG9uZyBsb25nKTsK
KyAgICBKU19FWFBPUlRFRF9TWU1CT0wgc3RhdGljIFN0cmluZyBudW1iZXIoZG91YmxlKTsKICAg
ICAKLSAgICBzdGF0aWMgU3RyaW5nIGZvcm1hdChjb25zdCBjaGFyICosIC4uLikgV1RGX0FUVFJJ
QlVURV9QUklOVEYoMSwgMik7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIHN0YXRpYyBTdHJpbmcg
Zm9ybWF0KGNvbnN0IGNoYXIgKiwgLi4uKSBXVEZfQVRUUklCVVRFX1BSSU5URigxLCAyKTsKIAog
ICAgIC8vIFJldHVybnMgYW4gdW5pbml0aWFsaXplZCBzdHJpbmcuIFRoZSBjaGFyYWN0ZXJzIG5l
ZWRzIHRvIGJlIHdyaXR0ZW4KICAgICAvLyBpbnRvIHRoZSBidWZmZXIgcmV0dXJuZWQgaW4gZGF0
YSBiZWZvcmUgdGhlIHJldHVybmVkIHN0cmluZyBpcyB1c2VkLgogICAgIC8vIEZhaWx1cmUgdG8g
ZG8gdGhpcyB3aWxsIGhhdmUgdW5wcmVkaWN0YWJsZSByZXN1bHRzLgogICAgIHN0YXRpYyBTdHJp
bmcgY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgsIFVDaGFyKiYgZGF0YSkgeyBy
ZXR1cm4gU3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgsIGRhdGEpOyB9CiAK
LSAgICB2b2lkIHNwbGl0KGNvbnN0IFN0cmluZyYgc2VwYXJhdG9yLCBWZWN0b3I8U3RyaW5nPiYg
cmVzdWx0KSBjb25zdDsKLSAgICB2b2lkIHNwbGl0KGNvbnN0IFN0cmluZyYgc2VwYXJhdG9yLCBi
b29sIGFsbG93RW1wdHlFbnRyaWVzLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KSBjb25zdDsKLSAg
ICB2b2lkIHNwbGl0KFVDaGFyIHNlcGFyYXRvciwgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkgY29u
c3Q7Ci0gICAgdm9pZCBzcGxpdChVQ2hhciBzZXBhcmF0b3IsIGJvb2wgYWxsb3dFbXB0eUVudHJp
ZXMsIFZlY3RvcjxTdHJpbmc+JiByZXN1bHQpIGNvbnN0OworICAgIEpTX0VYUE9SVEVEX1NZTUJP
TCB2b2lkIHNwbGl0KGNvbnN0IFN0cmluZyYgc2VwYXJhdG9yLCBWZWN0b3I8U3RyaW5nPiYgcmVz
dWx0KSBjb25zdDsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBzcGxpdChjb25zdCBTdHJp
bmcmIHNlcGFyYXRvciwgYm9vbCBhbGxvd0VtcHR5RW50cmllcywgVmVjdG9yPFN0cmluZz4mIHJl
c3VsdCkgY29uc3Q7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIHZvaWQgc3BsaXQoVUNoYXIgc2Vw
YXJhdG9yLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KSBjb25zdDsKKyAgICBKU19FWFBPUlRFRF9T
WU1CT0wgdm9pZCBzcGxpdChVQ2hhciBzZXBhcmF0b3IsIGJvb2wgYWxsb3dFbXB0eUVudHJpZXMs
IFZlY3RvcjxTdHJpbmc+JiByZXN1bHQpIGNvbnN0OwogCi0gICAgaW50IHRvSW50U3RyaWN0KGJv
b2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCkgY29uc3Q7Ci0gICAgdW5zaWduZWQgdG9VSW50U3Ry
aWN0KGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCkgY29uc3Q7CisgICAgSlNfRVhQT1JURURf
U1lNQk9MIGludCB0b0ludFN0cmljdChib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApIGNvbnN0
OworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB1bnNpZ25lZCB0b1VJbnRTdHJpY3QoYm9vbCogb2sg
PSAwLCBpbnQgYmFzZSA9IDEwKSBjb25zdDsKICAgICBpbnQ2NF90IHRvSW50NjRTdHJpY3QoYm9v
bCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKSBjb25zdDsKICAgICB1aW50NjRfdCB0b1VJbnQ2NFN0
cmljdChib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApIGNvbnN0OwogICAgIGludHB0cl90IHRv
SW50UHRyU3RyaWN0KGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCkgY29uc3Q7CiAKLSAgICBp
bnQgdG9JbnQoYm9vbCogb2sgPSAwKSBjb25zdDsKLSAgICB1bnNpZ25lZCB0b1VJbnQoYm9vbCog
b2sgPSAwKSBjb25zdDsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgaW50IHRvSW50KGJvb2wqIG9r
ID0gMCkgY29uc3Q7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIHVuc2lnbmVkIHRvVUludChib29s
KiBvayA9IDApIGNvbnN0OwogICAgIGludDY0X3QgdG9JbnQ2NChib29sKiBvayA9IDApIGNvbnN0
OwotICAgIHVpbnQ2NF90IHRvVUludDY0KGJvb2wqIG9rID0gMCkgY29uc3Q7Ci0gICAgaW50cHRy
X3QgdG9JbnRQdHIoYm9vbCogb2sgPSAwKSBjb25zdDsKLSAgICBkb3VibGUgdG9Eb3VibGUoYm9v
bCogb2sgPSAwKSBjb25zdDsKLSAgICBmbG9hdCB0b0Zsb2F0KGJvb2wqIG9rID0gMCkgY29uc3Q7
CisgICAgSlNfRVhQT1JURURfU1lNQk9MIHVpbnQ2NF90IHRvVUludDY0KGJvb2wqIG9rID0gMCkg
Y29uc3Q7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIGludHB0cl90IHRvSW50UHRyKGJvb2wqIG9r
ID0gMCkgY29uc3Q7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIGRvdWJsZSB0b0RvdWJsZShib29s
KiBvayA9IDApIGNvbnN0OworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBmbG9hdCB0b0Zsb2F0KGJv
b2wqIG9rID0gMCkgY29uc3Q7CiAKICAgICBib29sIHBlcmNlbnRhZ2UoaW50JiBwZXJjZW50YWdl
KSBjb25zdDsKIAogICAgIC8vIFJldHVybnMgYSBTdHJpbmdJbXBsIHN1aXRhYmxlIGZvciB1c2Ug
b24gYW5vdGhlciB0aHJlYWQuCi0gICAgU3RyaW5nIGNyb3NzVGhyZWFkU3RyaW5nKCkgY29uc3Q7
CisgICAgSlNfRVhQT1JURURfU1lNQk9MIFN0cmluZyBjcm9zc1RocmVhZFN0cmluZygpIGNvbnN0
OwogICAgIC8vIE1ha2VzIGEgZGVlcCBjb3B5LiBIZWxwZnVsIG9ubHkgaWYgeW91IG5lZWQgdG8g
dXNlIGEgU3RyaW5nIG9uIGFub3RoZXIgdGhyZWFkCiAgICAgLy8gKHVzZSBjcm9zc1RocmVhZFN0
cmluZyBpZiB0aGUgbWV0aG9kIGNhbGwgZG9lc24ndCBuZWVkIHRvIGJlIHRocmVhZHNhZmUpLgog
ICAgIC8vIFNpbmNlIHRoZSB1bmRlcmx5aW5nIFN0cmluZ0ltcGwgb2JqZWN0cyBhcmUgaW1tdXRh
YmxlLCB0aGVyZSdzIG5vIG90aGVyIHJlYXNvbgogICAgIC8vIHRvIGV2ZXIgcHJlZmVyIGNvcHko
KSBvdmVyIHBsYWluIG9sZCBhc3NpZ25tZW50LgotICAgIFN0cmluZyB0aHJlYWRzYWZlQ29weSgp
IGNvbnN0OworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBTdHJpbmcgdGhyZWFkc2FmZUNvcHkoKSBj
b25zdDsKIAogICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gIW1faW1wbDsgfQotICAg
IEFMV0FZU19JTkxJTkUgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1faW1wbCB8fCAh
bV9pbXBsLT5sZW5ndGgoKTsgfQorICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBBTFdBWVNfSU5MSU5F
IGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX2ltcGwgfHwgIW1faW1wbC0+bGVuZ3Ro
KCk7IH0KIAotICAgIFN0cmluZ0ltcGwqIGltcGwoKSBjb25zdCB7IHJldHVybiBtX2ltcGwuZ2V0
KCk7IH0KKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgU3RyaW5nSW1wbCogaW1wbCgpIGNvbnN0IHsg
cmV0dXJuIG1faW1wbC5nZXQoKTsgfQogCiAjaWYgUExBVEZPUk0oQ0YpCiAgICAgU3RyaW5nKENG
U3RyaW5nUmVmKTsKQEAgLTI3MSw4ICsyNzQsOCBAQAogI2VuZGlmCiAKICNpZiBQTEFURk9STShX
WCkKLSAgICBTdHJpbmcoY29uc3Qgd3hTdHJpbmcmKTsKLSAgICBvcGVyYXRvciB3eFN0cmluZygp
IGNvbnN0OworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBTdHJpbmcoY29uc3Qgd3hTdHJpbmcmKTsK
KyAgICBKU19FWFBPUlRFRF9TWU1CT0wgb3BlcmF0b3Igd3hTdHJpbmcoKSBjb25zdDsKICNlbmRp
ZgogCiAjaWYgUExBVEZPUk0oSEFJS1UpCkBAIC0yODAsMjIgKzI4MywzMCBAQAogICAgIG9wZXJh
dG9yIEJTdHJpbmcoKSBjb25zdDsKICNlbmRpZgogCi0gICAgVmVjdG9yPGNoYXI+IGFzY2lpKCkg
Y29uc3Q7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIFZlY3RvcjxjaGFyPiBhc2NpaSgpIGNvbnN0
OwogCi0gICAgQ1N0cmluZyBsYXRpbjEoKSBjb25zdDsKLSAgICBDU3RyaW5nIHV0ZjgoKSBjb25z
dDsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgQ1N0cmluZyBsYXRpbjEoKSBjb25zdDsKKyAgICBK
U19FWFBPUlRFRF9TWU1CT0wgQ1N0cmluZyB1dGY4KCkgY29uc3Q7CiAKLSAgICBzdGF0aWMgU3Ry
aW5nIGZyb21VVEY4KGNvbnN0IGNoYXIqLCBzaXplX3QpOwotICAgIHN0YXRpYyBTdHJpbmcgZnJv
bVVURjgoY29uc3QgY2hhciopOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0aWMgU3RyaW5n
IGZyb21VVEY4KGNvbnN0IGNoYXIqLCBzaXplX3QpOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBz
dGF0aWMgU3RyaW5nIGZyb21VVEY4KGNvbnN0IGNoYXIqKTsKIAogICAgIC8vIFRyaWVzIHRvIGNv
bnZlcnQgdGhlIHBhc3NlZCBpbiBzdHJpbmcgdG8gVVRGLTgsIGJ1dCB3aWxsIGZhbGwgYmFjayB0
byBMYXRpbi0xIGlmIHRoZSBzdHJpbmcgaXMgbm90IHZhbGlkIFVURi04LgotICAgIHN0YXRpYyBT
dHJpbmcgZnJvbVVURjhXaXRoTGF0aW4xRmFsbGJhY2soY29uc3QgY2hhciosIHNpemVfdCk7Cisg
ICAgSlNfRVhQT1JURURfU1lNQk9MIHN0YXRpYyBTdHJpbmcgZnJvbVVURjhXaXRoTGF0aW4xRmFs
bGJhY2soY29uc3QgY2hhciosIHNpemVfdCk7CiAgICAgCiAgICAgLy8gRGV0ZXJtaW5lcyB0aGUg
d3JpdGluZyBkaXJlY3Rpb24gdXNpbmcgdGhlIFVuaWNvZGUgQmlkaSBBbGdvcml0aG0gcnVsZXMg
UDIgYW5kIFAzLgogICAgIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIGRlZmF1bHRXcml0aW5nRGly
ZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5kZWZhdWx0V3JpdGluZ0Rp
cmVjdGlvbigpIDogV1RGOjpVbmljb2RlOjpMZWZ0VG9SaWdodDsgfQogCiAgICAgYm9vbCBjb250
YWluc09ubHlBU0NJSSgpIGNvbnN0IHsgcmV0dXJuIGNoYXJhY3RlcnNBcmVBbGxBU0NJSShjaGFy
YWN0ZXJzKCksIGxlbmd0aCgpKTsgfQogCisgICAgLy8gb3BlcmF0b3I9IG5lZWRzIHRvIGJlIGV4
cGxpY2l0bHkgZGVmaW5lZCB0byBzcGVjaWZ5IGRsbCBsaW5rYWdlCisgICAgSlNfRVhQT1JURURf
U1lNQk9MIGlubGluZSBTdHJpbmcmIG9wZXJhdG9yPShjb25zdCBTdHJpbmcmIGEpIAorICAgIHsK
KyAgICAgICAgaWYgKHRoaXMgIT0gJmEpCisgICAgICAgICAgICBtX2ltcGwgPSBhLm1faW1wbDsK
KyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKwogcHJpdmF0ZToKICAgICBSZWZQdHI8U3Ry
aW5nSW1wbD4gbV9pbXBsOwogfTsKQEAgLTMwNSw5ICszMTYsOSBAQAogUURhdGFTdHJlYW0mIG9w
ZXJhdG9yPj4oUURhdGFTdHJlYW0mIHN0cmVhbSwgU3RyaW5nJiBzdHIpOwogI2VuZGlmCiAKLVN0
cmluZyBvcGVyYXRvcisoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7Ci1TdHJpbmcgb3Bl
cmF0b3IrKGNvbnN0IFN0cmluZyYsIGNvbnN0IGNoYXIqKTsKLVN0cmluZyBvcGVyYXRvcisoY29u
c3QgY2hhciosIGNvbnN0IFN0cmluZyYpOworSlNfRVhQT1JURURfU1lNQk9MIFN0cmluZyBvcGVy
YXRvcisoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7CitKU19FWFBPUlRFRF9TWU1CT0wg
U3RyaW5nIG9wZXJhdG9yKyhjb25zdCBTdHJpbmcmLCBjb25zdCBjaGFyKik7CitKU19FWFBPUlRF
RF9TWU1CT0wgU3RyaW5nIG9wZXJhdG9yKyhjb25zdCBjaGFyKiwgY29uc3QgU3RyaW5nJik7CiAK
IGlubGluZSBTdHJpbmcmIG9wZXJhdG9yKz0oU3RyaW5nJiBhLCBjb25zdCBTdHJpbmcmIGIpIHsg
YS5hcHBlbmQoYik7IHJldHVybiBhOyB9CiAKQEAgLTM1MSw3ICszNjIsNyBAQAogICAgIHJldHVy
biAhKG9yZWQgJiAweEZGODApOwogfQogCi1pbnQgY29kZVBvaW50Q29tcGFyZShjb25zdCBTdHJp
bmcmLCBjb25zdCBTdHJpbmcmKTsKK0pTX0VYUE9SVEVEX1NZTUJPTCBpbnQgY29kZVBvaW50Q29t
cGFyZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKIAogaW5saW5lIGludCBmaW5kKGNv
bnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QgbGVuZ3RoLCBVQ2hhciBjaGFyYWN0ZXIsIGlu
dCBzdGFydFBvc2l0aW9uKQogewpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5n
SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwu
aAkocmV2aXNpb24gNjE3MjIpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBs
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0NSwxMSArMTQ1LDExIEBACiAgICAgfQogCiBwdWJsaWM6
Ci0gICAgflN0cmluZ0ltcGwoKTsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgflN0cmluZ0ltcGwo
KTsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGNyZWF0ZShjb25zdCBVQ2hh
ciosIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4g
Y3JlYXRlKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFN0cmluZ0ltcGw+IGNyZWF0ZShjb25zdCBjaGFyKik7CisgICAgSlNfRVhQT1JURURfU1lN
Qk9MIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGNyZWF0ZShjb25zdCBVQ2hhciosIHVu
c2lnbmVkIGxlbmd0aCk7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIHN0YXRpYyBQYXNzUmVmUHRy
PFN0cmluZ0ltcGw+IGNyZWF0ZShjb25zdCBjaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBK
U19FWFBPUlRFRF9TWU1CT0wgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gY3JlYXRlKGNv
bnN0IGNoYXIqKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBjcmVhdGUoY29u
c3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgsIFBhc3NSZWZQdHI8U2hhcmVkVUNoYXI+IHNoYXJl
ZEJ1ZmZlcik7CiAgICAgc3RhdGljIEFMV0FZU19JTkxJTkUgUGFzc1JlZlB0cjxTdHJpbmdJbXBs
PiBjcmVhdGUoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXAsIHVuc2lnbmVkIG9mZnNldCwgdW5z
aWduZWQgbGVuZ3RoKQogICAgIHsKQEAgLTE2Myw3ICsxNjMsNyBAQAogICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFN0cmluZ0ltcGwocmVwLT5tX2RhdGEgKyBvZmZzZXQsIGxlbmd0aCwgb3du
ZXJSZXApKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBjcmVh
dGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCwgVUNoYXIqJiBkYXRhKTsKKyAgICBKU19F
WFBPUlRFRF9TWU1CT0wgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gY3JlYXRlVW5pbml0
aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgsIFVDaGFyKiYgZGF0YSk7CiAgICAgc3RhdGljIEFMV0FZ
U19JTkxJTkUgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiB0cnlDcmVhdGVVbmluaXRpYWxpemVkKHVu
c2lnbmVkIGxlbmd0aCwgVUNoYXIqJiBvdXRwdXQpCiAgICAgewogICAgICAgICBpZiAoIWxlbmd0
aCkgewpAQCAtMTk3LDEwICsxOTcsMTAgQEAKICAgICAgICAgfQogICAgICAgICByZXR1cm4gZW1w
dHkoKTsKICAgICB9Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRvcHQoU3Ry
aW5nQnVmZmVyJik7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIHN0YXRpYyBQYXNzUmVmUHRyPFN0
cmluZ0ltcGw+IGFkb3B0KFN0cmluZ0J1ZmZlciYpOwogCiAgICAgU2hhcmVkVUNoYXIqIHNoYXJl
ZEJ1ZmZlcigpOwotICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzKCkgY29uc3QgeyByZXR1cm4g
bV9kYXRhOyB9CisgICAgSlNfRVhQT1JURURfU1lNQk9MIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJz
KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CiAKICAgICBzaXplX3QgY29zdCgpCiAgICAgewpA
QCAtMjQ2LDcgKzI0Niw3IEBACiAgICAgQUxXQVlTX0lOTElORSB2b2lkIGRlcmVmKCkgeyBtX3Jl
ZkNvdW50QW5kRmxhZ3MgLT0gc19yZWZDb3VudEluY3JlbWVudDsgaWYgKCEobV9yZWZDb3VudEFu
ZEZsYWdzICYgKHNfcmVmQ291bnRNYXNrIHwgc19yZWZDb3VudEZsYWdTdGF0aWMpKSkgZGVsZXRl
IHRoaXM7IH0KICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaGFzT25lUmVmKCkgY29uc3QgeyByZXR1
cm4gKG1fcmVmQ291bnRBbmRGbGFncyAmIChzX3JlZkNvdW50TWFzayB8IHNfcmVmQ291bnRGbGFn
U3RhdGljKSkgPT0gc19yZWZDb3VudEluY3JlbWVudDsgfQogCi0gICAgc3RhdGljIFN0cmluZ0lt
cGwqIGVtcHR5KCk7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIHN0YXRpYyBTdHJpbmdJbXBsKiBl
bXB0eSgpOwogCiAgICAgc3RhdGljIHZvaWQgY29weUNoYXJzKFVDaGFyKiBkZXN0aW5hdGlvbiwg
Y29uc3QgVUNoYXIqIHNvdXJjZSwgdW5zaWduZWQgbnVtQ2hhcmFjdGVycykKICAgICB7CkBAIC0y
NjQsMTIgKzI2NCwxMiBAQAogICAgIC8vIFNpbmNlIFN0cmluZ0ltcGwgb2JqZWN0cyBhcmUgaW1t
dXRhYmxlLCB0aGVyZSdzIG5vIG90aGVyIHJlYXNvbiB0byBtYWtlIGEgY29weS4KICAgICBQYXNz
UmVmUHRyPFN0cmluZ0ltcGw+IHRocmVhZHNhZmVDb3B5KCkgY29uc3Q7CiAKLSAgICBQYXNzUmVm
UHRyPFN0cmluZ0ltcGw+IHN1YnN0cmluZyh1bnNpZ25lZCBwb3MsIHVuc2lnbmVkIGxlbiA9IFVJ
TlRfTUFYKTsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBz
dWJzdHJpbmcodW5zaWduZWQgcG9zLCB1bnNpZ25lZCBsZW4gPSBVSU5UX01BWCk7CiAKICAgICBV
Q2hhciBvcGVyYXRvcltdKHVuc2lnbmVkIGkpIHsgQVNTRVJUKGkgPCBtX2xlbmd0aCk7IHJldHVy
biBtX2RhdGFbaV07IH0KICAgICBVQ2hhcjMyIGNoYXJhY3RlclN0YXJ0aW5nQXQodW5zaWduZWQp
OwogCi0gICAgYm9vbCBjb250YWluc09ubHlXaGl0ZXNwYWNlKCk7CisgICAgSlNfRVhQT1JURURf
U1lNQk9MIGJvb2wgY29udGFpbnNPbmx5V2hpdGVzcGFjZSgpOwogCiAgICAgaW50IHRvSW50U3Ry
aWN0KGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCk7CiAgICAgdW5zaWduZWQgdG9VSW50U3Ry
aWN0KGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCk7CkBAIC0yNzcsNyArMjc3LDcgQEAKICAg
ICB1aW50NjRfdCB0b1VJbnQ2NFN0cmljdChib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApOwog
ICAgIGludHB0cl90IHRvSW50UHRyU3RyaWN0KGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCk7
CiAKLSAgICBpbnQgdG9JbnQoYm9vbCogb2sgPSAwKTsgLy8gaWdub3JlcyB0cmFpbGluZyBnYXJi
YWdlCisgICAgSlNfRVhQT1JURURfU1lNQk9MIGludCB0b0ludChib29sKiBvayA9IDApOyAvLyBp
Z25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKICAgICB1bnNpZ25lZCB0b1VJbnQoYm9vbCogb2sgPSAw
KTsgLy8gaWdub3JlcyB0cmFpbGluZyBnYXJiYWdlCiAgICAgaW50NjRfdCB0b0ludDY0KGJvb2wq
IG9rID0gMCk7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQogICAgIHVpbnQ2NF90IHRvVUlu
dDY0KGJvb2wqIG9rID0gMCk7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQpAQCAtMjg2LDM1
ICsyODYsMzUgQEAKICAgICBkb3VibGUgdG9Eb3VibGUoYm9vbCogb2sgPSAwKTsKICAgICBmbG9h
dCB0b0Zsb2F0KGJvb2wqIG9rID0gMCk7CiAKLSAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGxv
d2VyKCk7Ci0gICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiB1cHBlcigpOwotICAgIFBhc3NSZWZQ
dHI8U3RyaW5nSW1wbD4gc2VjdXJlKFVDaGFyIGFDaGFyKTsKKyAgICBKU19FWFBPUlRFRF9TWU1C
T0wgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBsb3dlcigpOworICAgIEpTX0VYUE9SVEVEX1NZTUJP
TCBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHVwcGVyKCk7CisgICAgSlNfRVhQT1JURURfU1lNQk9M
IFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gc2VjdXJlKFVDaGFyIGFDaGFyKTsKICAgICBQYXNzUmVm
UHRyPFN0cmluZ0ltcGw+IGZvbGRDYXNlKCk7CiAKICAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+
IHN0cmlwV2hpdGVTcGFjZSgpOwotICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gc2ltcGxpZnlX
aGl0ZVNwYWNlKCk7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIFBhc3NSZWZQdHI8U3RyaW5nSW1w
bD4gc2ltcGxpZnlXaGl0ZVNwYWNlKCk7CiAKICAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJl
bW92ZUNoYXJhY3RlcnMoQ2hhcmFjdGVyTWF0Y2hGdW5jdGlvblB0cik7CiAKLSAgICBpbnQgZmlu
ZChjb25zdCBjaGFyKiwgaW50IGluZGV4ID0gMCwgYm9vbCBjYXNlU2Vuc2l0aXZlID0gdHJ1ZSk7
Ci0gICAgaW50IGZpbmQoVUNoYXIsIGludCBpbmRleCA9IDApOwotICAgIGludCBmaW5kKENoYXJh
Y3Rlck1hdGNoRnVuY3Rpb25QdHIsIGludCBpbmRleCA9IDApOwotICAgIGludCBmaW5kKFN0cmlu
Z0ltcGwqLCBpbnQgaW5kZXgsIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IHRydWUpOworICAgIEpTX0VY
UE9SVEVEX1NZTUJPTCBpbnQgZmluZChjb25zdCBjaGFyKiwgaW50IGluZGV4ID0gMCwgYm9vbCBj
YXNlU2Vuc2l0aXZlID0gdHJ1ZSk7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIGludCBmaW5kKFVD
aGFyLCBpbnQgaW5kZXggPSAwKTsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgaW50IGZpbmQoQ2hh
cmFjdGVyTWF0Y2hGdW5jdGlvblB0ciwgaW50IGluZGV4ID0gMCk7CisgICAgSlNfRVhQT1JURURf
U1lNQk9MIGludCBmaW5kKFN0cmluZ0ltcGwqLCBpbnQgaW5kZXgsIGJvb2wgY2FzZVNlbnNpdGl2
ZSA9IHRydWUpOwogCi0gICAgaW50IHJldmVyc2VGaW5kKFVDaGFyLCBpbnQgaW5kZXgpOwotICAg
IGludCByZXZlcnNlRmluZChTdHJpbmdJbXBsKiwgaW50IGluZGV4LCBib29sIGNhc2VTZW5zaXRp
dmUgPSB0cnVlKTsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgaW50IHJldmVyc2VGaW5kKFVDaGFy
LCBpbnQgaW5kZXgpOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBpbnQgcmV2ZXJzZUZpbmQoU3Ry
aW5nSW1wbCosIGludCBpbmRleCwgYm9vbCBjYXNlU2Vuc2l0aXZlID0gdHJ1ZSk7CiAgICAgCiAg
ICAgYm9vbCBzdGFydHNXaXRoKFN0cmluZ0ltcGwqIHN0ciwgYm9vbCBjYXNlU2Vuc2l0aXZlID0g
dHJ1ZSkgeyByZXR1cm4gcmV2ZXJzZUZpbmQoc3RyLCAwLCBjYXNlU2Vuc2l0aXZlKSA9PSAwOyB9
Ci0gICAgYm9vbCBlbmRzV2l0aChTdHJpbmdJbXBsKiwgYm9vbCBjYXNlU2Vuc2l0aXZlID0gdHJ1
ZSk7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIGJvb2wgZW5kc1dpdGgoU3RyaW5nSW1wbCosIGJv
b2wgY2FzZVNlbnNpdGl2ZSA9IHRydWUpOwogCi0gICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBy
ZXBsYWNlKFVDaGFyLCBVQ2hhcik7Ci0gICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXBsYWNl
KFVDaGFyLCBTdHJpbmdJbXBsKik7Ci0gICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXBsYWNl
KFN0cmluZ0ltcGwqLCBTdHJpbmdJbXBsKik7Ci0gICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBy
ZXBsYWNlKHVuc2lnbmVkIGluZGV4LCB1bnNpZ25lZCBsZW4sIFN0cmluZ0ltcGwqKTsKKyAgICBK
U19FWFBPUlRFRF9TWU1CT0wgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXBsYWNlKFVDaGFyLCBV
Q2hhcik7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVw
bGFjZShVQ2hhciwgU3RyaW5nSW1wbCopOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBQYXNzUmVm
UHRyPFN0cmluZ0ltcGw+IHJlcGxhY2UoU3RyaW5nSW1wbCosIFN0cmluZ0ltcGwqKTsKKyAgICBK
U19FWFBPUlRFRF9TWU1CT0wgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXBsYWNlKHVuc2lnbmVk
IGluZGV4LCB1bnNpZ25lZCBsZW4sIFN0cmluZ0ltcGwqKTsKIAogICAgIFZlY3RvcjxjaGFyPiBh
c2NpaSgpOwogCi0gICAgV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24gZGVmYXVsdFdyaXRpbmdEaXJl
Y3Rpb24oKTsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24g
ZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oKTsKIAogI2lmIFBMQVRGT1JNKENGKQogICAgIENGU3Ry
aW5nUmVmIGNyZWF0ZUNGU3RyaW5nKCk7CkBAIC0zMjcsNyArMzI3LDcgQEAKICAgICAvLyBUaGlz
IG51bWJlciBtdXN0IGJlIGF0IGxlYXN0IDIgdG8gYXZvaWQgc2hhcmluZyBlbXB0eSwgbnVsbCBh
cyB3ZWxsIGFzIDEgY2hhcmFjdGVyIHN0cmluZ3MgZnJvbSBTbWFsbFN0cmluZ3MuCiAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIHNfY29weUNoYXJzSW5saW5lQ3V0T2ZmID0gMjA7CiAKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBjcmVhdGVTdHJpcHBpbmdOdWxsQ2hhcmFjdGVy
c1Nsb3dDYXNlKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBKU19FWFBPUlRF
RF9TWU1CT0wgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gY3JlYXRlU3RyaXBwaW5nTnVs
bENoYXJhY3RlcnNTbG93Q2FzZShjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAg
CiAgICAgQnVmZmVyT3duZXJzaGlwIGJ1ZmZlck93bmVyc2hpcCgpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PEJ1ZmZlck93bmVyc2hpcD4obV9yZWZDb3VudEFuZEZsYWdzICYgc19yZWZDb3Vu
dE1hc2tCdWZmZXJPd25lcnNoaXApOyB9CiAgICAgYm9vbCBpc1N0YXRpYygpIGNvbnN0IHsgcmV0
dXJuIG1fcmVmQ291bnRBbmRGbGFncyAmIHNfcmVmQ291bnRGbGFnU3RhdGljOyB9CkBAIC0zNDAs
MTcgKzM0MCwxNyBAQAogICAgIG11dGFibGUgdW5zaWduZWQgbV9oYXNoOwogfTsKIAotYm9vbCBl
cXVhbChjb25zdCBTdHJpbmdJbXBsKiwgY29uc3QgU3RyaW5nSW1wbCopOwotYm9vbCBlcXVhbChj
b25zdCBTdHJpbmdJbXBsKiwgY29uc3QgY2hhciopOworSlNfRVhQT1JURURfU1lNQk9MIGJvb2wg
ZXF1YWwoY29uc3QgU3RyaW5nSW1wbCosIGNvbnN0IFN0cmluZ0ltcGwqKTsKK0pTX0VYUE9SVEVE
X1NZTUJPTCBib29sIGVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqLCBjb25zdCBjaGFyKik7CiBpbmxp
bmUgYm9vbCBlcXVhbChjb25zdCBjaGFyKiBhLCBTdHJpbmdJbXBsKiBiKSB7IHJldHVybiBlcXVh
bChiLCBhKTsgfQogCi1ib29sIGVxdWFsSWdub3JpbmdDYXNlKFN0cmluZ0ltcGwqLCBTdHJpbmdJ
bXBsKik7Ci1ib29sIGVxdWFsSWdub3JpbmdDYXNlKFN0cmluZ0ltcGwqLCBjb25zdCBjaGFyKik7
CitKU19FWFBPUlRFRF9TWU1CT0wgYm9vbCBlcXVhbElnbm9yaW5nQ2FzZShTdHJpbmdJbXBsKiwg
U3RyaW5nSW1wbCopOworSlNfRVhQT1JURURfU1lNQk9MIGJvb2wgZXF1YWxJZ25vcmluZ0Nhc2Uo
U3RyaW5nSW1wbCosIGNvbnN0IGNoYXIqKTsKIGlubGluZSBib29sIGVxdWFsSWdub3JpbmdDYXNl
KGNvbnN0IGNoYXIqIGEsIFN0cmluZ0ltcGwqIGIpIHsgcmV0dXJuIGVxdWFsSWdub3JpbmdDYXNl
KGIsIGEpOyB9Ci1ib29sIGVxdWFsSWdub3JpbmdDYXNlKGNvbnN0IFVDaGFyKiBhLCBjb25zdCBj
aGFyKiBiLCB1bnNpZ25lZCBsZW5ndGgpOworSlNfRVhQT1JURURfU1lNQk9MIGJvb2wgZXF1YWxJ
Z25vcmluZ0Nhc2UoY29uc3QgVUNoYXIqIGEsIGNvbnN0IGNoYXIqIGIsIHVuc2lnbmVkIGxlbmd0
aCk7CiBpbmxpbmUgYm9vbCBlcXVhbElnbm9yaW5nQ2FzZShjb25zdCBjaGFyKiBhLCBjb25zdCBV
Q2hhciogYiwgdW5zaWduZWQgbGVuZ3RoKSB7IHJldHVybiBlcXVhbElnbm9yaW5nQ2FzZShiLCBh
LCBsZW5ndGgpOyB9CiAKLWJvb2wgZXF1YWxJZ25vcmluZ051bGxpdHkoU3RyaW5nSW1wbCosIFN0
cmluZ0ltcGwqKTsKK0pTX0VYUE9SVEVEX1NZTUJPTCBib29sIGVxdWFsSWdub3JpbmdOdWxsaXR5
KFN0cmluZ0ltcGwqLCBTdHJpbmdJbXBsKik7CiAKIGludCBjb2RlUG9pbnRDb21wYXJlKGNvbnN0
IFN0cmluZ0ltcGwqLCBjb25zdCBTdHJpbmdJbXBsKik7CiAKSW5kZXg6IEphdmFTY3JpcHRDb3Jl
L3d0Zi9CeXRlQXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvQnl0ZUFy
cmF5LmgJKHJldmlzaW9uIDYxNzIyKQorKysgSmF2YVNjcmlwdENvcmUvd3RmL0J5dGVBcnJheS5o
CSh3b3JraW5nIGNvcHkpCkBAIC03OCw3ICs3OCw3IEBACiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxCeXRlQXJyYXk+IGNyZWF0ZShzaXplX3Qg
c2l6ZSk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0aWMgUGFzc1JlZlB0cjxCeXRl
QXJyYXk+IGNyZWF0ZShzaXplX3Qgc2l6ZSk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBCeXRl
QXJyYXkoc2l6ZV90IHNpemUpCkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZy5oCShyZXZpc2lvbiA2
MTcyMikKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmcuaAkod29ya2luZyBjb3B5KQpA
QCAtODQsMjYgKzg0LDI2IEBACiAvLyBUaGlzIGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVkIGZyb20g
dGhlIG1haW4gdGhyZWFkLiBJdCBpcyBzYWZlIHRvIGNhbGwgaXQgcmVwZWF0ZWRseS4KIC8vIERh
cndpbiBpcyBhbiBleGNlcHRpb24gdG8gdGhpcyBydWxlOiBpdCBpcyBPSyB0byBjYWxsIGl0IGZy
b20gYW55IHRocmVhZCwgdGhlIG9ubHkgCiAvLyByZXF1aXJlbWVudCBpcyB0aGF0IHRoZSBjYWxs
cyBhcmUgbm90IHJlZW50cmFudC4KLXZvaWQgaW5pdGlhbGl6ZVRocmVhZGluZygpOworSlNfRVhQ
T1JURURfU1lNQk9MIHZvaWQgaW5pdGlhbGl6ZVRocmVhZGluZygpOwogCiAvLyBSZXR1cm5zIDAg
aWYgdGhyZWFkIGNyZWF0aW9uIGZhaWxlZC4KIC8vIFRoZSB0aHJlYWQgbmFtZSBtdXN0IGJlIGEg
bGl0ZXJhbCBzaW5jZSBvbiBzb21lIHBsYXRmb3JtcyBpdCdzIHBhc3NlZCBpbiB0byB0aGUgdGhy
ZWFkLgotVGhyZWFkSWRlbnRpZmllciBjcmVhdGVUaHJlYWQoVGhyZWFkRnVuY3Rpb24sIHZvaWQq
LCBjb25zdCBjaGFyKiB0aHJlYWROYW1lKTsKK0pTX0VYUE9SVEVEX1NZTUJPTCBUaHJlYWRJZGVu
dGlmaWVyIGNyZWF0ZVRocmVhZChUaHJlYWRGdW5jdGlvbiwgdm9pZCosIGNvbnN0IGNoYXIqIHRo
cmVhZE5hbWUpOwogCiAvLyBJbnRlcm5hbCBwbGF0Zm9ybS1zcGVjaWZpYyBjcmVhdGVUaHJlYWQg
aW1wbGVtZW50YXRpb24uCi1UaHJlYWRJZGVudGlmaWVyIGNyZWF0ZVRocmVhZEludGVybmFsKFRo
cmVhZEZ1bmN0aW9uLCB2b2lkKiwgY29uc3QgY2hhciogdGhyZWFkTmFtZSk7CitKU19FWFBPUlRF
RF9TWU1CT0wgVGhyZWFkSWRlbnRpZmllciBjcmVhdGVUaHJlYWRJbnRlcm5hbChUaHJlYWRGdW5j
dGlvbiwgdm9pZCosIGNvbnN0IGNoYXIqIHRocmVhZE5hbWUpOwogCiAvLyBDYWxsZWQgaW4gdGhl
IHRocmVhZCBkdXJpbmcgaW5pdGlhbGl6YXRpb24uCiAvLyBIZWxwZnVsIGZvciBwbGF0Zm9ybXMg
d2hlcmUgdGhlIHRocmVhZCBuYW1lIG11c3QgYmUgc2V0IGZyb20gd2l0aGluIHRoZSB0aHJlYWQu
CiB2b2lkIGluaXRpYWxpemVDdXJyZW50VGhyZWFkSW50ZXJuYWwoY29uc3QgY2hhciogdGhyZWFk
TmFtZSk7CiAKLVRocmVhZElkZW50aWZpZXIgY3VycmVudFRocmVhZCgpOwotaW50IHdhaXRGb3JU
aHJlYWRDb21wbGV0aW9uKFRocmVhZElkZW50aWZpZXIsIHZvaWQqKik7Ci12b2lkIGRldGFjaFRo
cmVhZChUaHJlYWRJZGVudGlmaWVyKTsKK0pTX0VYUE9SVEVEX1NZTUJPTCBUaHJlYWRJZGVudGlm
aWVyIGN1cnJlbnRUaHJlYWQoKTsKK0pTX0VYUE9SVEVEX1NZTUJPTCBpbnQgd2FpdEZvclRocmVh
ZENvbXBsZXRpb24oVGhyZWFkSWRlbnRpZmllciwgdm9pZCoqKTsKK0pTX0VYUE9SVEVEX1NZTUJP
TCB2b2lkIGRldGFjaFRocmVhZChUaHJlYWRJZGVudGlmaWVyKTsKIAogCi12b2lkIGxvY2tBdG9t
aWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleCgpOwotdm9pZCB1bmxvY2tBdG9taWNhbGx5SW5p
dGlhbGl6ZWRTdGF0aWNNdXRleCgpOworSlNfRVhQT1JURURfU1lNQk9MIHZvaWQgbG9ja0F0b21p
Y2FsbHlJbml0aWFsaXplZFN0YXRpY011dGV4KCk7CitKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCB1
bmxvY2tBdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleCgpOwogCiB9IC8vIG5hbWVzcGFj
ZSBXVEYKIApJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL01haW5UaHJlYWQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvTWFpblRocmVhZC5oCShyZXZpc2lvbiA2MTcyMikKKysr
IEphdmFTY3JpcHRDb3JlL3d0Zi9NYWluVGhyZWFkLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDE1
ICszOCwxNSBAQAogdHlwZWRlZiB2b2lkIE1haW5UaHJlYWRGdW5jdGlvbih2b2lkKik7CiAKIC8v
IE11c3QgYmUgY2FsbGVkIGZyb20gdGhlIG1haW4gdGhyZWFkLgotdm9pZCBpbml0aWFsaXplTWFp
blRocmVhZCgpOworSlNfRVhQT1JURURfU1lNQk9MIHZvaWQgaW5pdGlhbGl6ZU1haW5UaHJlYWQo
KTsKIAotdm9pZCBjYWxsT25NYWluVGhyZWFkKE1haW5UaHJlYWRGdW5jdGlvbiosIHZvaWQqIGNv
bnRleHQpOworSlNfRVhQT1JURURfU1lNQk9MIHZvaWQgY2FsbE9uTWFpblRocmVhZChNYWluVGhy
ZWFkRnVuY3Rpb24qLCB2b2lkKiBjb250ZXh0KTsKIHZvaWQgY2FsbE9uTWFpblRocmVhZEFuZFdh
aXQoTWFpblRocmVhZEZ1bmN0aW9uKiwgdm9pZCogY29udGV4dCk7CiB2b2lkIGNhbmNlbENhbGxP
bk1haW5UaHJlYWQoTWFpblRocmVhZEZ1bmN0aW9uKiwgdm9pZCogY29udGV4dCk7CiAKLXZvaWQg
c2V0TWFpblRocmVhZENhbGxiYWNrc1BhdXNlZChib29sIHBhdXNlZCk7CitKU19FWFBPUlRFRF9T
WU1CT0wgdm9pZCBzZXRNYWluVGhyZWFkQ2FsbGJhY2tzUGF1c2VkKGJvb2wgcGF1c2VkKTsKIAot
Ym9vbCBpc01haW5UaHJlYWQoKTsKK0pTX0VYUE9SVEVEX1NZTUJPTCBib29sIGlzTWFpblRocmVh
ZCgpOwogCiAvLyBOT1RFOiB0aGVzZSBmdW5jdGlvbnMgYXJlIGludGVybmFsIHRvIHRoZSBjYWxs
T25NYWluVGhyZWFkIGltcGxlbWVudGF0aW9uLgogdm9pZCBpbml0aWFsaXplTWFpblRocmVhZFBs
YXRmb3JtKCk7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvRGlzYWxsb3dDVHlwZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9EaXNhbGxvd0NUeXBlLmgJKHJldmlzaW9uIDYx
NzIyKQorKysgSmF2YVNjcmlwdENvcmUvd3RmL0Rpc2FsbG93Q1R5cGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMjksMTIgKzI5LDEzIEBACiAjaWZuZGVmIFdURl9EaXNhbGxvd0NUeXBlX2gKICNkZWZp
bmUgV1RGX0Rpc2FsbG93Q1R5cGVfaAogCi0vLyBUaGUgYmVoYXZpb3Igb2YgbWFueSBvZiB0aGUg
ZnVuY3Rpb25zIGluIHRoZSA8Y3R5cGUuaD4gaGVhZGVyIGlzIGRlcGVuZGVudAotLy8gb24gdGhl
IGN1cnJlbnQgbG9jYWxlLiBCdXQgYWxtb3N0IGFsbCB1c2VzIG9mIHRoZXNlIGZ1bmN0aW9ucyBh
cmUgZm9yCi0vLyBsb2NhbGUtaW5kZXBlbmRlbnQsIEFTQ0lJLXNwZWNpZmljIHB1cnBvc2VzLiBJ
biBXZWJLaXQgY29kZSB3ZSB1c2Ugb3VyIG93bgotLy8gQVNDSUktc3BlY2lmaWMgZnVuY3Rpb25z
IGluc3RlYWQuIFRoaXMgaGVhZGVyIG1ha2VzIHN1cmUgd2UgZ2V0IGEgY29tcGlsZS10aW1lCi0v
LyBlcnJvciBpZiB3ZSB1c2Ugb25lIG9mIHRoZSA8Y3R5cGUuaD4gZnVuY3Rpb25zIGJ5IGFjY2lk
ZW50LgotCisvKiAKKyAqIFRoZSBiZWhhdmlvciBvZiBtYW55IG9mIHRoZSBmdW5jdGlvbnMgaW4g
dGhlIDxjdHlwZS5oPiBoZWFkZXIgaXMgZGVwZW5kZW50CisgKiBvbiB0aGUgY3VycmVudCBsb2Nh
bGUuIEJ1dCBhbG1vc3QgYWxsIHVzZXMgb2YgdGhlc2UgZnVuY3Rpb25zIGFyZSBmb3IKKyAqIGxv
Y2FsZS1pbmRlcGVuZGVudCwgQVNDSUktc3BlY2lmaWMgcHVycG9zZXMuIEluIFdlYktpdCBjb2Rl
IHdlIHVzZSBvdXIgb3duCisgKiBBU0NJSS1zcGVjaWZpYyBmdW5jdGlvbnMgaW5zdGVhZC4gVGhp
cyBoZWFkZXIgbWFrZXMgc3VyZSB3ZSBnZXQgYSBjb21waWxlLXRpbWUKKyAqIGVycm9yIGlmIHdl
IHVzZSBvbmUgb2YgdGhlIDxjdHlwZS5oPiBmdW5jdGlvbnMgYnkgYWNjaWRlbnQuCisgKi8KICNp
bmNsdWRlIDxjdHlwZS5oPgogCiAjdW5kZWYgaXNhbG51bQpJbmRleDogSmF2YVNjcmlwdENvcmUv
d3RmL0Zhc3RNYWxsb2MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvRmFzdE1h
bGxvYy5oCShyZXZpc2lvbiA2MTcyMikKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9GYXN0TWFsbG9j
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDE1MyArMjgsMTUzIEBACiAKIG5hbWVzcGFjZSBXVEYg
ewogCi0gICAgLy8gVGhlc2UgZnVuY3Rpb25zIGNhbGwgQ1JBU0goKSBpZiBhbiBhbGxvY2F0aW9u
IGZhaWxzLgotICAgIHZvaWQqIGZhc3RNYWxsb2Moc2l6ZV90KTsKLSAgICB2b2lkKiBmYXN0WmVy
b2VkTWFsbG9jKHNpemVfdCk7Ci0gICAgdm9pZCogZmFzdENhbGxvYyhzaXplX3QgbnVtRWxlbWVu
dHMsIHNpemVfdCBlbGVtZW50U2l6ZSk7Ci0gICAgdm9pZCogZmFzdFJlYWxsb2Modm9pZCosIHNp
emVfdCk7Ci0gICAgY2hhciogZmFzdFN0ckR1cChjb25zdCBjaGFyKik7Ci0gICAgc2l6ZV90IGZh
c3RNYWxsb2NTaXplKGNvbnN0IHZvaWQqKTsKKy8vIFRoZXNlIGZ1bmN0aW9ucyBjYWxsIENSQVNI
KCkgaWYgYW4gYWxsb2NhdGlvbiBmYWlscy4KK0pTX0VYUE9SVEVEX1NZTUJPTCB2b2lkKiBmYXN0
TWFsbG9jKHNpemVfdCk7CitKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCogZmFzdFplcm9lZE1hbGxv
YyhzaXplX3QpOworSlNfRVhQT1JURURfU1lNQk9MIHZvaWQqIGZhc3RDYWxsb2Moc2l6ZV90IG51
bUVsZW1lbnRzLCBzaXplX3QgZWxlbWVudFNpemUpOworSlNfRVhQT1JURURfU1lNQk9MIHZvaWQq
IGZhc3RSZWFsbG9jKHZvaWQqLCBzaXplX3QpOworSlNfRVhQT1JURURfU1lNQk9MIGNoYXIqIGZh
c3RTdHJEdXAoY29uc3QgY2hhciopOworSlNfRVhQT1JURURfU1lNQk9MIHNpemVfdCBmYXN0TWFs
bG9jU2l6ZShjb25zdCB2b2lkKik7CiAKLSAgICBzdHJ1Y3QgVHJ5TWFsbG9jUmV0dXJuVmFsdWUg
ewotICAgICAgICBUcnlNYWxsb2NSZXR1cm5WYWx1ZSh2b2lkKiBkYXRhKQotICAgICAgICAgICAg
OiBtX2RhdGEoZGF0YSkKLSAgICAgICAgewotICAgICAgICB9Ci0gICAgICAgIFRyeU1hbGxvY1Jl
dHVyblZhbHVlKGNvbnN0IFRyeU1hbGxvY1JldHVyblZhbHVlJiBzb3VyY2UpCi0gICAgICAgICAg
ICA6IG1fZGF0YShzb3VyY2UubV9kYXRhKQotICAgICAgICB7Ci0gICAgICAgICAgICBzb3VyY2Uu
bV9kYXRhID0gMDsKLSAgICAgICAgfQotICAgICAgICB+VHJ5TWFsbG9jUmV0dXJuVmFsdWUoKSB7
IEFTU0VSVCghbV9kYXRhKTsgfQotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gYm9vbCBn
ZXRWYWx1ZShUJiBkYXRhKSBXQVJOX1VOVVNFRF9SRVRVUk47Ci0gICAgICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPiBvcGVyYXRvciBQb3NzaWJseU51bGw8VD4oKQotICAgICAgICB7IAotICAgICAg
ICAgICAgVCB2YWx1ZTsgCi0gICAgICAgICAgICBnZXRWYWx1ZSh2YWx1ZSk7IAotICAgICAgICAg
ICAgcmV0dXJuIFBvc3NpYmx5TnVsbDxUPih2YWx1ZSk7Ci0gICAgICAgIH0gCi0gICAgcHJpdmF0
ZToKLSAgICAgICAgbXV0YWJsZSB2b2lkKiBtX2RhdGE7Ci0gICAgfTsKLSAgICAKLSAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4gYm9vbCBUcnlNYWxsb2NSZXR1cm5WYWx1ZTo6Z2V0VmFsdWUoVCYg
ZGF0YSkKK3N0cnVjdCBUcnlNYWxsb2NSZXR1cm5WYWx1ZSB7CisgICAgVHJ5TWFsbG9jUmV0dXJu
VmFsdWUodm9pZCogZGF0YSkKKyAgICAgICAgOiBtX2RhdGEoZGF0YSkKICAgICB7Ci0gICAgICAg
IHVuaW9uIHUgeyB2b2lkKiBkYXRhOyBUIHRhcmdldDsgfSByZXM7Ci0gICAgICAgIHJlcy5kYXRh
ID0gbV9kYXRhOwotICAgICAgICBkYXRhID0gcmVzLnRhcmdldDsKLSAgICAgICAgYm9vbCByZXR1
cm5WYWx1ZSA9ICEhbV9kYXRhOwotICAgICAgICBtX2RhdGEgPSAwOwotICAgICAgICByZXR1cm4g
cmV0dXJuVmFsdWU7CiAgICAgfQorICAgIFRyeU1hbGxvY1JldHVyblZhbHVlKGNvbnN0IFRyeU1h
bGxvY1JldHVyblZhbHVlJiBzb3VyY2UpCisgICAgICAgIDogbV9kYXRhKHNvdXJjZS5tX2RhdGEp
CisgICAgeworICAgICAgICBzb3VyY2UubV9kYXRhID0gMDsKKyAgICB9CisgICAgflRyeU1hbGxv
Y1JldHVyblZhbHVlKCkgeyBBU1NFUlQoIW1fZGF0YSk7IH0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gYm9vbCBnZXRWYWx1ZShUJiBkYXRhKSBXQVJOX1VOVVNFRF9SRVRVUk47CisgICAgdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+IG9wZXJhdG9yIFBvc3NpYmx5TnVsbDxUPigpCisgICAgeyAKKyAg
ICAgICAgVCB2YWx1ZTsgCisgICAgICAgIGdldFZhbHVlKHZhbHVlKTsgCisgICAgICAgIHJldHVy
biBQb3NzaWJseU51bGw8VD4odmFsdWUpOworICAgIH0gCitwcml2YXRlOgorICAgIG11dGFibGUg
dm9pZCogbV9kYXRhOworfTsKIAotICAgIFRyeU1hbGxvY1JldHVyblZhbHVlIHRyeUZhc3RNYWxs
b2Moc2l6ZV90IG4pOwotICAgIFRyeU1hbGxvY1JldHVyblZhbHVlIHRyeUZhc3RaZXJvZWRNYWxs
b2Moc2l6ZV90IG4pOwotICAgIFRyeU1hbGxvY1JldHVyblZhbHVlIHRyeUZhc3RDYWxsb2Moc2l6
ZV90IG5fZWxlbWVudHMsIHNpemVfdCBlbGVtZW50X3NpemUpOwotICAgIFRyeU1hbGxvY1JldHVy
blZhbHVlIHRyeUZhc3RSZWFsbG9jKHZvaWQqIHAsIHNpemVfdCBuKTsKK3RlbXBsYXRlIDx0eXBl
bmFtZSBUPiBib29sIFRyeU1hbGxvY1JldHVyblZhbHVlOjpnZXRWYWx1ZShUJiBkYXRhKQorewor
ICAgIHVuaW9uIHUgeyB2b2lkKiBkYXRhOyBUIHRhcmdldDsgfSByZXM7CisgICAgcmVzLmRhdGEg
PSBtX2RhdGE7CisgICAgZGF0YSA9IHJlcy50YXJnZXQ7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9
ICEhbV9kYXRhOworICAgIG1fZGF0YSA9IDA7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQog
Ci0gICAgdm9pZCBmYXN0RnJlZSh2b2lkKik7CitKU19FWFBPUlRFRF9TWU1CT0wgVHJ5TWFsbG9j
UmV0dXJuVmFsdWUgdHJ5RmFzdE1hbGxvYyhzaXplX3Qgbik7CitKU19FWFBPUlRFRF9TWU1CT0wg
VHJ5TWFsbG9jUmV0dXJuVmFsdWUgdHJ5RmFzdFplcm9lZE1hbGxvYyhzaXplX3Qgbik7CitKU19F
WFBPUlRFRF9TWU1CT0wgVHJ5TWFsbG9jUmV0dXJuVmFsdWUgdHJ5RmFzdENhbGxvYyhzaXplX3Qg
bl9lbGVtZW50cywgc2l6ZV90IGVsZW1lbnRfc2l6ZSk7CitKU19FWFBPUlRFRF9TWU1CT0wgVHJ5
TWFsbG9jUmV0dXJuVmFsdWUgdHJ5RmFzdFJlYWxsb2Modm9pZCogcCwgc2l6ZV90IG4pOwogCitK
U19FWFBPUlRFRF9TWU1CT0wgdm9pZCBmYXN0RnJlZSh2b2lkKik7CisKICNpZm5kZWYgTkRFQlVH
ICAgIAotICAgIHZvaWQgZmFzdE1hbGxvY0ZvcmJpZCgpOwotICAgIHZvaWQgZmFzdE1hbGxvY0Fs
bG93KCk7Cit2b2lkIGZhc3RNYWxsb2NGb3JiaWQoKTsKK3ZvaWQgZmFzdE1hbGxvY0FsbG93KCk7
CiAjZW5kaWYKIAotICAgIHZvaWQgcmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5KCk7Ci0gICAg
Ci0gICAgc3RydWN0IEZhc3RNYWxsb2NTdGF0aXN0aWNzIHsKLSAgICAgICAgc2l6ZV90IHJlc2Vy
dmVkVk1CeXRlczsKLSAgICAgICAgc2l6ZV90IGNvbW1pdHRlZFZNQnl0ZXM7Ci0gICAgICAgIHNp
emVfdCBmcmVlTGlzdEJ5dGVzOwotICAgIH07Ci0gICAgRmFzdE1hbGxvY1N0YXRpc3RpY3MgZmFz
dE1hbGxvY1N0YXRpc3RpY3MoKTsKK3ZvaWQgcmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5KCk7
CiAKLSAgICAvLyBUaGlzIGRlZmluZXMgYSB0eXBlIHdoaWNoIGhvbGRzIGFuIHVuc2lnbmVkIGlu
dGVnZXIgYW5kIGlzIHRoZSBzYW1lCi0gICAgLy8gc2l6ZSBhcyB0aGUgbWluaW1hbGx5IGFsaWdu
ZWQgbWVtb3J5IGFsbG9jYXRpb24uCi0gICAgdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgQWxs
b2NBbGlnbm1lbnRJbnRlZ2VyOworc3RydWN0IEZhc3RNYWxsb2NTdGF0aXN0aWNzIHsKKyAgICBz
aXplX3QgcmVzZXJ2ZWRWTUJ5dGVzOworICAgIHNpemVfdCBjb21taXR0ZWRWTUJ5dGVzOworICAg
IHNpemVfdCBmcmVlTGlzdEJ5dGVzOworfTsKK0Zhc3RNYWxsb2NTdGF0aXN0aWNzIGZhc3RNYWxs
b2NTdGF0aXN0aWNzKCk7CiAKLSAgICBuYW1lc3BhY2UgSW50ZXJuYWwgewotICAgICAgICBlbnVt
IEFsbG9jVHlwZSB7ICAgICAgICAgICAgICAgICAgICAvLyBTdGFydCB3aXRoIGFuIHVudXN1YWwg
bnVtYmVyIGluc3RlYWQgb2YgemVybywgYmVjYXVzZSB6ZXJvIGlzIGNvbW1vbi4KLSAgICAgICAg
ICAgIEFsbG9jVHlwZU1hbGxvYyA9IDB4Mzc1ZDY3NTAsICAgLy8gRW5jb21wYXNzZXMgZmFzdE1h
bGxvYywgZmFzdFplcm9lZE1hbGxvYywgZmFzdENhbGxvYywgZmFzdFJlYWxsb2MuCi0gICAgICAg
ICAgICBBbGxvY1R5cGVDbGFzc05ldywgICAgICAgICAgICAgIC8vIEVuY29tcGFzc2VzIGNsYXNz
IG9wZXJhdG9yIG5ldyBmcm9tIEZhc3RBbGxvY0Jhc2UuCi0gICAgICAgICAgICBBbGxvY1R5cGVD
bGFzc05ld0FycmF5LCAgICAgICAgIC8vIEVuY29tcGFzc2VzIGNsYXNzIG9wZXJhdG9yIG5ld1td
IGZyb20gRmFzdEFsbG9jQmFzZS4KLSAgICAgICAgICAgIEFsbG9jVHlwZUZhc3ROZXcsICAgICAg
ICAgICAgICAgLy8gRW5jb21wYXNzZXMgZmFzdE5ldy4KLSAgICAgICAgICAgIEFsbG9jVHlwZUZh
c3ROZXdBcnJheSwgICAgICAgICAgLy8gRW5jb21wYXNzZXMgZmFzdE5ld0FycmF5LgotICAgICAg
ICAgICAgQWxsb2NUeXBlTmV3LCAgICAgICAgICAgICAgICAgICAvLyBFbmNvbXBhc3NlcyBnbG9i
YWwgb3BlcmF0b3IgbmV3LgotICAgICAgICAgICAgQWxsb2NUeXBlTmV3QXJyYXkgICAgICAgICAg
ICAgICAvLyBFbmNvbXBhc3NlcyBnbG9iYWwgb3BlcmF0b3IgbmV3W10uCi0gICAgICAgIH07Ci0g
ICAgfQorLy8gVGhpcyBkZWZpbmVzIGEgdHlwZSB3aGljaCBob2xkcyBhbiB1bnNpZ25lZCBpbnRl
Z2VyIGFuZCBpcyB0aGUgc2FtZQorLy8gc2l6ZSBhcyB0aGUgbWluaW1hbGx5IGFsaWduZWQgbWVt
b3J5IGFsbG9jYXRpb24uCit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBBbGxvY0FsaWdubWVu
dEludGVnZXI7CiAKK25hbWVzcGFjZSBJbnRlcm5hbCB7CitlbnVtIEFsbG9jVHlwZSB7ICAgICAg
ICAgICAgICAgICAgICAvLyBTdGFydCB3aXRoIGFuIHVudXN1YWwgbnVtYmVyIGluc3RlYWQgb2Yg
emVybywgYmVjYXVzZSB6ZXJvIGlzIGNvbW1vbi4KKyAgICBBbGxvY1R5cGVNYWxsb2MgPSAweDM3
NWQ2NzUwLCAgIC8vIEVuY29tcGFzc2VzIGZhc3RNYWxsb2MsIGZhc3RaZXJvZWRNYWxsb2MsIGZh
c3RDYWxsb2MsIGZhc3RSZWFsbG9jLgorICAgIEFsbG9jVHlwZUNsYXNzTmV3LCAgICAgICAgICAg
ICAgLy8gRW5jb21wYXNzZXMgY2xhc3Mgb3BlcmF0b3IgbmV3IGZyb20gRmFzdEFsbG9jQmFzZS4K
KyAgICBBbGxvY1R5cGVDbGFzc05ld0FycmF5LCAgICAgICAgIC8vIEVuY29tcGFzc2VzIGNsYXNz
IG9wZXJhdG9yIG5ld1tdIGZyb20gRmFzdEFsbG9jQmFzZS4KKyAgICBBbGxvY1R5cGVGYXN0TmV3
LCAgICAgICAgICAgICAgIC8vIEVuY29tcGFzc2VzIGZhc3ROZXcuCisgICAgQWxsb2NUeXBlRmFz
dE5ld0FycmF5LCAgICAgICAgICAvLyBFbmNvbXBhc3NlcyBmYXN0TmV3QXJyYXkuCisgICAgQWxs
b2NUeXBlTmV3LCAgICAgICAgICAgICAgICAgICAvLyBFbmNvbXBhc3NlcyBnbG9iYWwgb3BlcmF0
b3IgbmV3LgorICAgIEFsbG9jVHlwZU5ld0FycmF5ICAgICAgICAgICAgICAgLy8gRW5jb21wYXNz
ZXMgZ2xvYmFsIG9wZXJhdG9yIG5ld1tdLgorfTsKK30KKwogI2lmIEVOQUJMRShGQVNUX01BTExP
Q19NQVRDSF9WQUxJREFUSU9OKQogCi0gICAgLy8gTWFsbG9jIHZhbGlkYXRpb24gaXMgYSBzY2hl
bWUgd2hlcmVieSBhIHRhZyBpcyBhdHRhY2hlZCB0byBhbgotICAgIC8vIGFsbG9jYXRpb24gd2hp
Y2ggaWRlbnRpZmllcyBob3cgaXQgd2FzIG9yaWdpbmFsbHkgYWxsb2NhdGVkLgotICAgIC8vIFRo
aXMgYWxsb3dzIHVzIHRvIHZlcmlmeSB0aGF0IHRoZSBmcmVlaW5nIG9wZXJhdGlvbiBtYXRjaGVz
IHRoZQotICAgIC8vIGFsbG9jYXRpb24gb3BlcmF0aW9uLiBJZiBtZW1vcnkgaXMgYWxsb2NhdGVk
IHdpdGggb3BlcmF0b3IgbmV3W10KLSAgICAvLyBidXQgZnJlZWQgd2l0aCBmcmVlIG9yIGRlbGV0
ZSwgdGhpcyBzeXN0ZW0gd291bGQgZGV0ZWN0IHRoYXQuCi0gICAgLy8gSW4gdGhlIGltcGxlbWVu
dGF0aW9uIGhlcmUsIHRoZSB0YWcgaXMgYW4gaW50ZWdlciBwcmVwZW5kZWQgdG8KLSAgICAvLyB0
aGUgYWxsb2NhdGlvbiBtZW1vcnkgd2hpY2ggaXMgYXNzaWduZWQgb25lIG9mIHRoZSBBbGxvY1R5
cGUKLSAgICAvLyBlbnVtZXJhdGlvbiB2YWx1ZXMuIEFuIGFsdGVybmF0aXZlIGltcGxlbWVudGF0
aW9uIG9mIHRoaXMKLSAgICAvLyBzY2hlbWUgY291bGQgc3RvcmUgdGhlIHRhZyBzb21ld2hlcmUg
ZWxzZSBvciBpZ25vcmUgaXQuCi0gICAgLy8gVXNlcnMgb2YgRmFzdE1hbGxvYyBkb24ndCBuZWVk
IHRvIGtub3cgb3IgY2FyZSBob3cgdGhpcyB0YWdnaW5nCi0gICAgLy8gaXMgaW1wbGVtZW50ZWQu
CisvLyBNYWxsb2MgdmFsaWRhdGlvbiBpcyBhIHNjaGVtZSB3aGVyZWJ5IGEgdGFnIGlzIGF0dGFj
aGVkIHRvIGFuCisvLyBhbGxvY2F0aW9uIHdoaWNoIGlkZW50aWZpZXMgaG93IGl0IHdhcyBvcmln
aW5hbGx5IGFsbG9jYXRlZC4KKy8vIFRoaXMgYWxsb3dzIHVzIHRvIHZlcmlmeSB0aGF0IHRoZSBm
cmVlaW5nIG9wZXJhdGlvbiBtYXRjaGVzIHRoZQorLy8gYWxsb2NhdGlvbiBvcGVyYXRpb24uIElm
IG1lbW9yeSBpcyBhbGxvY2F0ZWQgd2l0aCBvcGVyYXRvciBuZXdbXQorLy8gYnV0IGZyZWVkIHdp
dGggZnJlZSBvciBkZWxldGUsIHRoaXMgc3lzdGVtIHdvdWxkIGRldGVjdCB0aGF0LgorLy8gSW4g
dGhlIGltcGxlbWVudGF0aW9uIGhlcmUsIHRoZSB0YWcgaXMgYW4gaW50ZWdlciBwcmVwZW5kZWQg
dG8KKy8vIHRoZSBhbGxvY2F0aW9uIG1lbW9yeSB3aGljaCBpcyBhc3NpZ25lZCBvbmUgb2YgdGhl
IEFsbG9jVHlwZQorLy8gZW51bWVyYXRpb24gdmFsdWVzLiBBbiBhbHRlcm5hdGl2ZSBpbXBsZW1l
bnRhdGlvbiBvZiB0aGlzCisvLyBzY2hlbWUgY291bGQgc3RvcmUgdGhlIHRhZyBzb21ld2hlcmUg
ZWxzZSBvciBpZ25vcmUgaXQuCisvLyBVc2VycyBvZiBGYXN0TWFsbG9jIGRvbid0IG5lZWQgdG8g
a25vdyBvciBjYXJlIGhvdyB0aGlzIHRhZ2dpbmcKKy8vIGlzIGltcGxlbWVudGVkLgogCi0gICAg
bmFtZXNwYWNlIEludGVybmFsIHsKK25hbWVzcGFjZSBJbnRlcm5hbCB7CiAKLSAgICAgICAgLy8g
UmV0dXJuIHRoZSBBbGxvY1R5cGUgdGFnIGFzc29jaWF0ZWQgd2l0aCB0aGUgYWxsb2NhdGVkIGJs
b2NrIHAuCi0gICAgICAgIGlubGluZSBBbGxvY1R5cGUgZmFzdE1hbGxvY01hdGNoVmFsaWRhdGlv
blR5cGUoY29uc3Qgdm9pZCogcCkKLSAgICAgICAgewotICAgICAgICAgICAgY29uc3QgQWxsb2NB
bGlnbm1lbnRJbnRlZ2VyKiB0eXBlID0gc3RhdGljX2Nhc3Q8Y29uc3QgQWxsb2NBbGlnbm1lbnRJ
bnRlZ2VyKj4ocCkgLSAxOwotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEFsbG9jVHlw
ZT4oKnR5cGUpOwotICAgICAgICB9CisvLyBSZXR1cm4gdGhlIEFsbG9jVHlwZSB0YWcgYXNzb2Np
YXRlZCB3aXRoIHRoZSBhbGxvY2F0ZWQgYmxvY2sgcC4KK2lubGluZSBBbGxvY1R5cGUgZmFzdE1h
bGxvY01hdGNoVmFsaWRhdGlvblR5cGUoY29uc3Qgdm9pZCogcCkKK3sKKyAgICBjb25zdCBBbGxv
Y0FsaWdubWVudEludGVnZXIqIHR5cGUgPSBzdGF0aWNfY2FzdDxjb25zdCBBbGxvY0FsaWdubWVu
dEludGVnZXIqPihwKSAtIDE7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEFsbG9jVHlwZT4oKnR5
cGUpOworfQogCi0gICAgICAgIC8vIFJldHVybiB0aGUgYWRkcmVzcyBvZiB0aGUgQWxsb2NUeXBl
IHRhZyBhc3NvY2lhdGVkIHdpdGggdGhlIGFsbG9jYXRlZCBibG9jayBwLgotICAgICAgICBpbmxp
bmUgQWxsb2NBbGlnbm1lbnRJbnRlZ2VyKiBmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0aW9uVmFsdWUo
dm9pZCogcCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
QWxsb2NBbGlnbm1lbnRJbnRlZ2VyKj4oc3RhdGljX2Nhc3Q8Y2hhcio+KHApIC0gc2l6ZW9mKEFs
bG9jQWxpZ25tZW50SW50ZWdlcikpOwotICAgICAgICB9CisvLyBSZXR1cm4gdGhlIGFkZHJlc3Mg
b2YgdGhlIEFsbG9jVHlwZSB0YWcgYXNzb2NpYXRlZCB3aXRoIHRoZSBhbGxvY2F0ZWQgYmxvY2sg
cC4KK2lubGluZSBBbGxvY0FsaWdubWVudEludGVnZXIqIGZhc3RNYWxsb2NNYXRjaFZhbGlkYXRp
b25WYWx1ZSh2b2lkKiBwKQoreworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEFsbG9jQWxp
Z25tZW50SW50ZWdlcio+KHN0YXRpY19jYXN0PGNoYXIqPihwKSAtIHNpemVvZihBbGxvY0FsaWdu
bWVudEludGVnZXIpKTsKK30KIAotICAgICAgICAvLyBTZXQgdGhlIEFsbG9jVHlwZSB0YWcgdG8g
YmUgYXNzb2NpYWdlZCB3aXRoIHRoZSBhbGxvY2F0ZWQgYmxvY2sgcC4KLSAgICAgICAgaW5saW5l
IHZvaWQgc2V0RmFzdE1hbGxvY01hdGNoVmFsaWRhdGlvblR5cGUodm9pZCogcCwgQWxsb2NUeXBl
IGFsbG9jVHlwZSkKLSAgICAgICAgewotICAgICAgICAgICAgQWxsb2NBbGlnbm1lbnRJbnRlZ2Vy
KiB0eXBlID0gc3RhdGljX2Nhc3Q8QWxsb2NBbGlnbm1lbnRJbnRlZ2VyKj4ocCkgLSAxOwotICAg
ICAgICAgICAgKnR5cGUgPSBzdGF0aWNfY2FzdDxBbGxvY0FsaWdubWVudEludGVnZXI+KGFsbG9j
VHlwZSk7Ci0gICAgICAgIH0KKy8vIFNldCB0aGUgQWxsb2NUeXBlIHRhZyB0byBiZSBhc3NvY2lh
Z2VkIHdpdGggdGhlIGFsbG9jYXRlZCBibG9jayBwLgoraW5saW5lIHZvaWQgc2V0RmFzdE1hbGxv
Y01hdGNoVmFsaWRhdGlvblR5cGUodm9pZCogcCwgQWxsb2NUeXBlIGFsbG9jVHlwZSkKK3sKKyAg
ICBBbGxvY0FsaWdubWVudEludGVnZXIqIHR5cGUgPSBzdGF0aWNfY2FzdDxBbGxvY0FsaWdubWVu
dEludGVnZXIqPihwKSAtIDE7CisgICAgKnR5cGUgPSBzdGF0aWNfY2FzdDxBbGxvY0FsaWdubWVu
dEludGVnZXI+KGFsbG9jVHlwZSk7Cit9CiAKLSAgICAgICAgLy8gSGFuZGxlIGEgZGV0ZWN0ZWQg
YWxsb2MvZnJlZSBtaXNtYXRjaC4gQnkgZGVmYXVsdCB0aGlzIGNhbGxzIENSQVNIKCkuCi0gICAg
ICAgIHZvaWQgZmFzdE1hbGxvY01hdGNoRmFpbGVkKHZvaWQqIHApOworLy8gSGFuZGxlIGEgZGV0
ZWN0ZWQgYWxsb2MvZnJlZSBtaXNtYXRjaC4gQnkgZGVmYXVsdCB0aGlzIGNhbGxzIENSQVNIKCku
Cit2b2lkIGZhc3RNYWxsb2NNYXRjaEZhaWxlZCh2b2lkKiBwKTsKIAotICAgIH0gLy8gbmFtZXNw
YWNlIEludGVybmFsCit9IC8vIG5hbWVzcGFjZSBJbnRlcm5hbAogCi0gICAgLy8gVGhpcyBpcyBh
IGhpZ2hlciBsZXZlbCBmdW5jdGlvbiB3aGljaCBpcyB1c2VkIGJ5IEZhc3RNYWxsb2MtdXNpbmcg
Y29kZS4KLSAgICBpbmxpbmUgdm9pZCBmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZU1hbGxvYyh2b2lk
KiBwLCBJbnRlcm5hbDo6QWxsb2NUeXBlIGFsbG9jVHlwZSkKLSAgICB7Ci0gICAgICAgIGlmICgh
cCkKLSAgICAgICAgICAgIHJldHVybjsKKy8vIFRoaXMgaXMgYSBoaWdoZXIgbGV2ZWwgZnVuY3Rp
b24gd2hpY2ggaXMgdXNlZCBieSBGYXN0TWFsbG9jLXVzaW5nIGNvZGUuCitpbmxpbmUgdm9pZCBm
YXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZU1hbGxvYyh2b2lkKiBwLCBJbnRlcm5hbDo6QWxsb2NUeXBl
IGFsbG9jVHlwZSkKK3sKKyAgICBpZiAoIXApCisgICAgICAgIHJldHVybjsKIAotICAgICAgICBJ
bnRlcm5hbDo6c2V0RmFzdE1hbGxvY01hdGNoVmFsaWRhdGlvblR5cGUocCwgYWxsb2NUeXBlKTsK
LSAgICB9CisgICAgSW50ZXJuYWw6OnNldEZhc3RNYWxsb2NNYXRjaFZhbGlkYXRpb25UeXBlKHAs
IGFsbG9jVHlwZSk7Cit9CiAKLSAgICAvLyBUaGlzIGlzIGEgaGlnaGVyIGxldmVsIGZ1bmN0aW9u
IHdoaWNoIGlzIHVzZWQgYnkgRmFzdE1hbGxvYy11c2luZyBjb2RlLgotICAgIGlubGluZSB2b2lk
IGZhc3RNYWxsb2NNYXRjaFZhbGlkYXRlRnJlZSh2b2lkKiBwLCBJbnRlcm5hbDo6QWxsb2NUeXBl
IGFsbG9jVHlwZSkKLSAgICB7Ci0gICAgICAgIGlmICghcCkKLSAgICAgICAgICAgIHJldHVybjsK
Ky8vIFRoaXMgaXMgYSBoaWdoZXIgbGV2ZWwgZnVuY3Rpb24gd2hpY2ggaXMgdXNlZCBieSBGYXN0
TWFsbG9jLXVzaW5nIGNvZGUuCitpbmxpbmUgdm9pZCBmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZUZy
ZWUodm9pZCogcCwgSW50ZXJuYWw6OkFsbG9jVHlwZSBhbGxvY1R5cGUpCit7CisgICAgaWYgKCFw
KQorICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKEludGVybmFsOjpmYXN0TWFsbG9jTWF0
Y2hWYWxpZGF0aW9uVHlwZShwKSAhPSBhbGxvY1R5cGUpCi0gICAgICAgICAgICBJbnRlcm5hbDo6
ZmFzdE1hbGxvY01hdGNoRmFpbGVkKHApOwotICAgICAgICBJbnRlcm5hbDo6c2V0RmFzdE1hbGxv
Y01hdGNoVmFsaWRhdGlvblR5cGUocCwgSW50ZXJuYWw6OkFsbG9jVHlwZU1hbGxvYyk7ICAvLyBT
ZXQgaXQgdG8gdGhpcyBzbyB0aGF0IGZhc3RGcmVlIHRoaW5rcyBpdCdzIE9LLgotICAgIH0KKyAg
ICBpZiAoSW50ZXJuYWw6OmZhc3RNYWxsb2NNYXRjaFZhbGlkYXRpb25UeXBlKHApICE9IGFsbG9j
VHlwZSkKKyAgICAgICAgSW50ZXJuYWw6OmZhc3RNYWxsb2NNYXRjaEZhaWxlZChwKTsKKyAgICBJ
bnRlcm5hbDo6c2V0RmFzdE1hbGxvY01hdGNoVmFsaWRhdGlvblR5cGUocCwgSW50ZXJuYWw6OkFs
bG9jVHlwZU1hbGxvYyk7ICAvLyBTZXQgaXQgdG8gdGhpcyBzbyB0aGF0IGZhc3RGcmVlIHRoaW5r
cyBpdCdzIE9LLgorfQogCiAjZWxzZQogCi0gICAgaW5saW5lIHZvaWQgZmFzdE1hbGxvY01hdGNo
VmFsaWRhdGVNYWxsb2Modm9pZCosIEludGVybmFsOjpBbGxvY1R5cGUpCi0gICAgewotICAgIH0K
K2lubGluZSB2b2lkIGZhc3RNYWxsb2NNYXRjaFZhbGlkYXRlTWFsbG9jKHZvaWQqLCBJbnRlcm5h
bDo6QWxsb2NUeXBlKQoreworfQogCi0gICAgaW5saW5lIHZvaWQgZmFzdE1hbGxvY01hdGNoVmFs
aWRhdGVGcmVlKHZvaWQqLCBJbnRlcm5hbDo6QWxsb2NUeXBlKQotICAgIHsKLSAgICB9Citpbmxp
bmUgdm9pZCBmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZUZyZWUodm9pZCosIEludGVybmFsOjpBbGxv
Y1R5cGUpCit7Cit9CiAKICNlbmRpZgogCkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFk
U3BlY2lmaWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkU3BlY2lm
aWMuaAkocmV2aXNpb24gNjE3MjIpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkU3BlY2lm
aWMuaAkod29ya2luZyBjb3B5KQpAQCAtMjMxLDggKzIzMSw4IEBACiAvLyAyKSBXZSBkbyBub3Qg
bmVlZCB0byBob2xkIG1hbnkgaW5zdGFuY2VzIG9mIFRocmVhZFNwZWNpZmljPD4gZGF0YS4gVGhp
cyBmaXhlZCBudW1iZXIgc2hvdWxkIGJlIGZhciBlbm91Z2guCiBjb25zdCBpbnQga01heFRsc0tl
eVNpemUgPSAyNTY7CiAKLWxvbmcmIHRsc0tleUNvdW50KCk7Ci1EV09SRCogdGxzS2V5cygpOwor
SlNfRVhQT1JURURfU1lNQk9MIGxvbmcmIHRsc0tleUNvdW50KCk7CitKU19FWFBPUlRFRF9TWU1C
T0wgRFdPUkQqIHRsc0tleXMoKTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIGlubGluZSBUaHJl
YWRTcGVjaWZpYzxUPjo6VGhyZWFkU3BlY2lmaWMoKQpJbmRleDogSmF2YVNjcmlwdENvcmUvd3Rm
L1dURlRocmVhZERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvV1RGVGhy
ZWFkRGF0YS5oCShyZXZpc2lvbiA2MTcyMikKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9XVEZUaHJl
YWREYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTg0LDggKzg0LDggQEAKIAogY2xhc3MgV1RGVGhy
ZWFkRGF0YSA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiBwdWJsaWM6Ci0gICAgV1RGVGhyZWFkRGF0
YSgpOwotICAgIH5XVEZUaHJlYWREYXRhKCk7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIFdURlRo
cmVhZERhdGEoKTsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgfldURlRocmVhZERhdGEoKTsKIAog
ICAgIFdlYkNvcmU6OkF0b21pY1N0cmluZ1RhYmxlKiBhdG9taWNTdHJpbmdUYWJsZSgpCiAgICAg
ewpAQCAtMTI3LDkgKzEyNyw5IEBACiAjZW5kaWYKIAogI2lmIFdURlRIUkVBRERBVEFfTVVMVElU
SFJFQURFRAotICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIFRocmVhZFNwZWNpZmljPFdURlRocmVh
ZERhdGE+KiBzdGF0aWNEYXRhOworICAgIHN0YXRpYyBKU19FWFBPUlRFRF9TWU1CT0wgVGhyZWFk
U3BlY2lmaWM8V1RGVGhyZWFkRGF0YT4qIHN0YXRpY0RhdGE7CiAjZWxzZQotICAgIHN0YXRpYyBK
U19FWFBPUlREQVRBIFdURlRocmVhZERhdGEqIHN0YXRpY0RhdGE7CisgICAgc3RhdGljIEpTX0VY
UE9SVEVEX1NZTUJPTCBXVEZUaHJlYWREYXRhKiBzdGF0aWNEYXRhOwogI2VuZGlmCiAgICAgZnJp
ZW5kIFdURlRocmVhZERhdGEmIHd0ZlRocmVhZERhdGEoKTsKICAgICBmcmllbmQgY2xhc3MgV2Vi
Q29yZTo6QXRvbWljU3RyaW5nVGFibGU7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvRGF0ZU1h
dGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvRGF0ZU1hdGguaAkocmV2aXNp
b24gNjE3MjIpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvRGF0ZU1hdGguaAkod29ya2luZyBjb3B5
KQpAQCAtNTQsNyArNTQsNyBAQAogaW50IGVxdWl2YWxlbnRZZWFyRm9yRFNUKGludCB5ZWFyKTsK
IAogLy8gTm90IHJlYWxseSBtYXRoIHJlbGF0ZWQsIGJ1dCB0aGlzIGlzIGN1cnJlbnRseSB0aGUg
b25seSBzaGFyZWQgcGxhY2UgdG8gcHV0IHRoZXNlLiAgCi1kb3VibGUgcGFyc2VEYXRlRnJvbU51
bGxUZXJtaW5hdGVkQ2hhcmFjdGVycyhjb25zdCBjaGFyKiBkYXRlU3RyaW5nKTsKK0pTX0VYUE9S
VEVEX1NZTUJPTCBkb3VibGUgcGFyc2VEYXRlRnJvbU51bGxUZXJtaW5hdGVkQ2hhcmFjdGVycyhj
b25zdCBjaGFyKiBkYXRlU3RyaW5nKTsKIGRvdWJsZSB0aW1lQ2xpcChkb3VibGUpOwogCiBpbmxp
bmUgZG91YmxlIGpzQ3VycmVudFRpbWUoKQpAQCAtNzcsMTEgKzc3LDExIEBACiBjb25zdCBkb3Vi
bGUgbXNQZXJNb250aCA9IDI1OTIwMDAwMDAuMDsKIAogLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9m
IGRheXMgZnJvbSAxOTcwLTAxLTAxIHRvIHRoZSBzcGVjaWZpZWQgZGF0ZS4KLWRvdWJsZSBkYXRl
VG9EYXlzRnJvbTE5NzAoaW50IHllYXIsIGludCBtb250aCwgaW50IGRheSk7Ci1pbnQgbXNUb1ll
YXIoZG91YmxlIG1zKTsKLWludCBkYXlJblllYXIoZG91YmxlIG1zLCBpbnQgeWVhcik7Ci1pbnQg
bW9udGhGcm9tRGF5SW5ZZWFyKGludCBkYXlJblllYXIsIGJvb2wgbGVhcFllYXIpOwotaW50IGRh
eUluTW9udGhGcm9tRGF5SW5ZZWFyKGludCBkYXlJblllYXIsIGJvb2wgbGVhcFllYXIpOworSlNf
RVhQT1JURURfU1lNQk9MIGRvdWJsZSBkYXRlVG9EYXlzRnJvbTE5NzAoaW50IHllYXIsIGludCBt
b250aCwgaW50IGRheSk7CitKU19FWFBPUlRFRF9TWU1CT0wgaW50IG1zVG9ZZWFyKGRvdWJsZSBt
cyk7CitKU19FWFBPUlRFRF9TWU1CT0wgaW50IGRheUluWWVhcihkb3VibGUgbXMsIGludCB5ZWFy
KTsKK0pTX0VYUE9SVEVEX1NZTUJPTCBpbnQgbW9udGhGcm9tRGF5SW5ZZWFyKGludCBkYXlJblll
YXIsIGJvb2wgbGVhcFllYXIpOworSlNfRVhQT1JURURfU1lNQk9MIGludCBkYXlJbk1vbnRoRnJv
bURheUluWWVhcihpbnQgZGF5SW5ZZWFyLCBib29sIGxlYXBZZWFyKTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV1RGCiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi91bmljb2RlL0NvbGxhdG9yLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUvQ29sbGF0b3IuaAkocmV2aXNp
b24gNjE3MjIpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvdW5pY29kZS9Db2xsYXRvci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOSwyNyArMzksMjcgQEAKIAogbmFtZXNwYWNlIFdURiB7CiAKLSAgICBj
bGFzcyBDb2xsYXRvciA6IHB1YmxpYyBOb25jb3B5YWJsZSB7Ci0gICAgcHVibGljOgotICAgICAg
ICBlbnVtIFJlc3VsdCB7IEVxdWFsID0gMCwgR3JlYXRlciA9IDEsIExlc3MgPSAtMSB9OworY2xh
c3MgSlNfRVhQT1JURURfU1lNQk9MIENvbGxhdG9yIDogcHVibGljIE5vbmNvcHlhYmxlIHsKK3B1
YmxpYzoKKyAgICBlbnVtIFJlc3VsdCB7IEVxdWFsID0gMCwgR3JlYXRlciA9IDEsIExlc3MgPSAt
MSB9OwogCi0gICAgICAgIENvbGxhdG9yKGNvbnN0IGNoYXIqIGxvY2FsZSk7IC8vIFBhcnNpbmcg
aXMgbGVuaWVudDsgZS5nLiBsYW5ndWFnZSBpZGVudGlmaWVycyAoc3VjaCBhcyAiZW4tVVMiKSBh
cmUgYWNjZXB0ZWQsIHRvby4KLSAgICAgICAgfkNvbGxhdG9yKCk7Ci0gICAgICAgIHZvaWQgc2V0
T3JkZXJMb3dlckZpcnN0KGJvb2wpOworICAgIENvbGxhdG9yKGNvbnN0IGNoYXIqIGxvY2FsZSk7
IC8vIFBhcnNpbmcgaXMgbGVuaWVudDsgZS5nLiBsYW5ndWFnZSBpZGVudGlmaWVycyAoc3VjaCBh
cyAiZW4tVVMiKSBhcmUgYWNjZXB0ZWQsIHRvby4KKyAgICB+Q29sbGF0b3IoKTsKKyAgICB2b2lk
IHNldE9yZGVyTG93ZXJGaXJzdChib29sKTsKIAotICAgICAgICBzdGF0aWMgUGFzc093blB0cjxD
b2xsYXRvcj4gdXNlckRlZmF1bHQoKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxDb2xsYXRvcj4g
dXNlckRlZmF1bHQoKTsKIAotICAgICAgICBSZXN1bHQgY29sbGF0ZShjb25zdCA6OlVDaGFyKiwg
c2l6ZV90LCBjb25zdCA6OlVDaGFyKiwgc2l6ZV90KSBjb25zdDsKKyAgICBSZXN1bHQgY29sbGF0
ZShjb25zdCA6OlVDaGFyKiwgc2l6ZV90LCBjb25zdCA6OlVDaGFyKiwgc2l6ZV90KSBjb25zdDsK
IAotICAgIHByaXZhdGU6Citwcml2YXRlOgogI2lmIFVTRShJQ1VfVU5JQ09ERSkgJiYgIVVDT05G
SUdfTk9fQ09MTEFUSU9OCi0gICAgICAgIHZvaWQgY3JlYXRlQ29sbGF0b3IoKSBjb25zdDsKLSAg
ICAgICAgdm9pZCByZWxlYXNlQ29sbGF0b3IoKTsKLSAgICAgICAgbXV0YWJsZSBVQ29sbGF0b3Iq
IG1fY29sbGF0b3I7CisgICAgdm9pZCBjcmVhdGVDb2xsYXRvcigpIGNvbnN0OworICAgIHZvaWQg
cmVsZWFzZUNvbGxhdG9yKCk7CisgICAgbXV0YWJsZSBVQ29sbGF0b3IqIG1fY29sbGF0b3I7CiAj
ZW5kaWYKLSAgICAgICAgY2hhciogbV9sb2NhbGU7Ci0gICAgICAgIGJvb2wgbV9sb3dlckZpcnN0
OwotICAgIH07CisgICAgY2hhciogbV9sb2NhbGU7CisgICAgYm9vbCBtX2xvd2VyRmlyc3Q7Cit9
OwogfQogCiB1c2luZyBXVEY6OkNvbGxhdG9yOwpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL3Vu
aWNvZGUvVVRGOC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi91bmljb2RlL1VU
RjguaAkocmV2aXNpb24gNjE3MjIpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvdW5pY29kZS9VVEY4
LmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcgQEAKICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhcioqIHNvdXJjZVN0YXJ0LCBjb25zdCBjaGFyKiBzb3VyY2VFbmQsIAogICAgICAg
ICAgICAgICAgICAgICBVQ2hhcioqIHRhcmdldFN0YXJ0LCBVQ2hhciogdGFyZ2V0RW5kLCBib29s
IHN0cmljdCA9IHRydWUpOwogCi0gICAgQ29udmVyc2lvblJlc3VsdCBjb252ZXJ0VVRGMTZUb1VU
RjgoCisgICAgSlNfRVhQT1JURURfU1lNQk9MIENvbnZlcnNpb25SZXN1bHQgY29udmVydFVURjE2
VG9VVEY4KAogICAgICAgICAgICAgICAgICAgICBjb25zdCBVQ2hhcioqIHNvdXJjZVN0YXJ0LCBj
b25zdCBVQ2hhciogc291cmNlRW5kLCAKICAgICAgICAgICAgICAgICAgICAgY2hhcioqIHRhcmdl
dFN0YXJ0LCBjaGFyKiB0YXJnZXRFbmQsIGJvb2wgc3RyaWN0ID0gdHJ1ZSk7CiAgIH0KSW5kZXg6
IEphdmFTY3JpcHRDb3JlL3d0Zi9DdXJyZW50VGltZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3Jp
cHRDb3JlL3d0Zi9DdXJyZW50VGltZS5oCShyZXZpc2lvbiA2MTcyMikKKysrIEphdmFTY3JpcHRD
b3JlL3d0Zi9DdXJyZW50VGltZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwyNyArMzYsMjcgQEAK
IAogbmFtZXNwYWNlIFdURiB7CiAKLSAgICAvLyBSZXR1cm5zIHRoZSBjdXJyZW50IFVUQyB0aW1l
IGluIHNlY29uZHMsIGNvdW50ZWQgZnJvbSBKYW51YXJ5IDEsIDE5NzAuCi0gICAgLy8gUHJlY2lz
aW9uIHZhcmllcyBkZXBlbmRpbmcgb24gcGxhdGZvcm0gYnV0IGlzIHVzdWFsbHkgYXMgZ29vZCBv
ciBiZXR0ZXIgCi0gICAgLy8gdGhhbiBhIG1pbGxpc2Vjb25kLgotICAgIGRvdWJsZSBjdXJyZW50
VGltZSgpOworLy8gUmV0dXJucyB0aGUgY3VycmVudCBVVEMgdGltZSBpbiBzZWNvbmRzLCBjb3Vu
dGVkIGZyb20gSmFudWFyeSAxLCAxOTcwLgorLy8gUHJlY2lzaW9uIHZhcmllcyBkZXBlbmRpbmcg
b24gcGxhdGZvcm0gYnV0IGlzIHVzdWFsbHkgYXMgZ29vZCBvciBiZXR0ZXIgCisvLyB0aGFuIGEg
bWlsbGlzZWNvbmQuCitKU19FWFBPUlRFRF9TWU1CT0wgZG91YmxlIGN1cnJlbnRUaW1lKCk7CiAK
LSAgICAvLyBTYW1lIHRoaW5nLCBpbiBtaWxsaXNlY29uZHMuCi0gICAgaW5saW5lIGRvdWJsZSBj
dXJyZW50VGltZU1TKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBjdXJyZW50VGltZSgpICogMTAw
MC4wOyAKLSAgICB9CisvLyBTYW1lIHRoaW5nLCBpbiBtaWxsaXNlY29uZHMuCitpbmxpbmUgZG91
YmxlIGN1cnJlbnRUaW1lTVMoKQoreworICAgIHJldHVybiBjdXJyZW50VGltZSgpICogMTAwMC4w
OyAKK30KIAotICAgIGlubGluZSB2b2lkIGdldExvY2FsVGltZShjb25zdCB0aW1lX3QqIGxvY2Fs
VGltZSwgc3RydWN0IHRtKiBsb2NhbFRNKQotICAgIHsKLSAgICAjaWYgQ09NUElMRVIoTVNWQzdf
T1JfTE9XRVIpIHx8IENPTVBJTEVSKE1JTkdXKSB8fCBPUyhXSU5DRSkKLSAgICAgICAgKmxvY2Fs
VE0gPSAqbG9jYWx0aW1lKGxvY2FsVGltZSk7Ci0gICAgI2VsaWYgQ09NUElMRVIoTVNWQykKLSAg
ICAgICAgbG9jYWx0aW1lX3MobG9jYWxUTSwgbG9jYWxUaW1lKTsKLSAgICAjZWxzZQotICAgICAg
ICBsb2NhbHRpbWVfcihsb2NhbFRpbWUsIGxvY2FsVE0pOwotICAgICNlbmRpZgotICAgIH0KK2lu
bGluZSB2b2lkIGdldExvY2FsVGltZShjb25zdCB0aW1lX3QqIGxvY2FsVGltZSwgc3RydWN0IHRt
KiBsb2NhbFRNKQoreworI2lmIENPTVBJTEVSKE1TVkM3X09SX0xPV0VSKSB8fCBDT01QSUxFUihN
SU5HVykgfHwgT1MoV0lOQ0UpCisgICAgKmxvY2FsVE0gPSAqbG9jYWx0aW1lKGxvY2FsVGltZSk7
CisjZWxpZiBDT01QSUxFUihNU1ZDKQorICAgIGxvY2FsdGltZV9zKGxvY2FsVE0sIGxvY2FsVGlt
ZSk7CisjZWxzZQorICAgIGxvY2FsdGltZV9yKGxvY2FsVGltZSwgbG9jYWxUTSk7CisjZW5kaWYK
K30KIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9kdG9h
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL2R0b2EuaAkocmV2aXNpb24gNjE3
MjIpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvZHRvYS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3
ICszOSw3IEBACiAvLyBkdG9hKCkgZm9yIEVDTUEtMjYyICdUb1N0cmluZyBBcHBsaWVkIHRvIHRo
ZSBOdW1iZXIgVHlwZS4nCiAvLyBUaGUgKnJlc3VsdExlbmd0aCB3aWxsIGhhdmUgdGhlIGxlbmd0
aCBvZiB0aGUgcmVzdWx0YW50IHN0cmluZyBpbiBidWZlci4KIC8vIFRoZSByZXN1bHRhbnQgc3Ry
aW5nIGlzbid0IHRlcm1pbmF0ZWQgYnkgMC4KLXZvaWQgZG91YmxlVG9TdHJpbmdJbkphdmFTY3Jp
cHRGb3JtYXQoZG91YmxlLCBEdG9hQnVmZmVyLCB1bnNpZ25lZCogcmVzdWx0TGVuZ3RoKTsKK0pT
X0VYUE9SVEVEX1NZTUJPTCB2b2lkIGRvdWJsZVRvU3RyaW5nSW5KYXZhU2NyaXB0Rm9ybWF0KGRv
dWJsZSwgRHRvYUJ1ZmZlciwgdW5zaWduZWQqIHJlc3VsdExlbmd0aCk7CiAKIH0gLy8gbmFtZXNw
YWNlIFdURgogCkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvQXNzZXJ0aW9ucy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9Bc3NlcnRpb25zLmgJKHJldmlzaW9uIDYxNzIyKQor
KysgSmF2YVNjcmlwdENvcmUvd3RmL0Fzc2VydGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTM3
LDEzICsxMzcsMTMgQEAKICAgICBXVEZMb2dDaGFubmVsU3RhdGUgc3RhdGU7CiB9IFdURkxvZ0No
YW5uZWw7CiAKLXZvaWQgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZShjb25zdCBjaGFyKiBmaWxl
LCBpbnQgbGluZSwgY29uc3QgY2hhciogZnVuY3Rpb24sIGNvbnN0IGNoYXIqIGFzc2VydGlvbik7
Ci12b2lkIFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmVXaXRoTWVzc2FnZShjb25zdCBjaGFyKiBm
aWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciogZnVuY3Rpb24sIGNvbnN0IGNoYXIqIGFzc2VydGlv
biwgY29uc3QgY2hhciogZm9ybWF0LCAuLi4pIFdURl9BVFRSSUJVVEVfUFJJTlRGKDUsIDYpOwot
dm9pZCBXVEZSZXBvcnRBcmd1bWVudEFzc2VydGlvbkZhaWx1cmUoY29uc3QgY2hhciogZmlsZSwg
aW50IGxpbmUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uLCBjb25zdCBjaGFyKiBhcmdOYW1lLCBjb25z
dCBjaGFyKiBhc3NlcnRpb24pOwotdm9pZCBXVEZSZXBvcnRGYXRhbEVycm9yKGNvbnN0IGNoYXIq
IGZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiBmdW5jdGlvbiwgY29uc3QgY2hhciogZm9ybWF0
LCAuLi4pIFdURl9BVFRSSUJVVEVfUFJJTlRGKDQsIDUpOwotdm9pZCBXVEZSZXBvcnRFcnJvcihj
b25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciogZnVuY3Rpb24sIGNvbnN0IGNo
YXIqIGZvcm1hdCwgLi4uKSBXVEZfQVRUUklCVVRFX1BSSU5URig0LCA1KTsKLXZvaWQgV1RGTG9n
KFdURkxvZ0NoYW5uZWwqIGNoYW5uZWwsIGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKSBXVEZfQVRU
UklCVVRFX1BSSU5URigyLCAzKTsKLXZvaWQgV1RGTG9nVmVyYm9zZShjb25zdCBjaGFyKiBmaWxl
LCBpbnQgbGluZSwgY29uc3QgY2hhciogZnVuY3Rpb24sIFdURkxvZ0NoYW5uZWwqIGNoYW5uZWws
IGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKSBXVEZfQVRUUklCVVRFX1BSSU5URig1LCA2KTsKK0pT
X0VYUE9SVEVEX1NZTUJPTCB2b2lkIFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoY29uc3QgY2hh
ciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uLCBjb25zdCBjaGFyKiBhc3Nl
cnRpb24pOworSlNfRVhQT1JURURfU1lNQk9MIHZvaWQgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVy
ZVdpdGhNZXNzYWdlKGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiBmdW5j
dGlvbiwgY29uc3QgY2hhciogYXNzZXJ0aW9uLCBjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikgV1RG
X0FUVFJJQlVURV9QUklOVEYoNSwgNik7CitKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBXVEZSZXBv
cnRBcmd1bWVudEFzc2VydGlvbkZhaWx1cmUoY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNv
bnN0IGNoYXIqIGZ1bmN0aW9uLCBjb25zdCBjaGFyKiBhcmdOYW1lLCBjb25zdCBjaGFyKiBhc3Nl
cnRpb24pOworSlNfRVhQT1JURURfU1lNQk9MIHZvaWQgV1RGUmVwb3J0RmF0YWxFcnJvcihjb25z
dCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciogZnVuY3Rpb24sIGNvbnN0IGNoYXIq
IGZvcm1hdCwgLi4uKSBXVEZfQVRUUklCVVRFX1BSSU5URig0LCA1KTsKK0pTX0VYUE9SVEVEX1NZ
TUJPTCB2b2lkIFdURlJlcG9ydEVycm9yKGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25z
dCBjaGFyKiBmdW5jdGlvbiwgY29uc3QgY2hhciogZm9ybWF0LCAuLi4pIFdURl9BVFRSSUJVVEVf
UFJJTlRGKDQsIDUpOworSlNfRVhQT1JURURfU1lNQk9MIHZvaWQgV1RGTG9nKFdURkxvZ0NoYW5u
ZWwqIGNoYW5uZWwsIGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKSBXVEZfQVRUUklCVVRFX1BSSU5U
RigyLCAzKTsKK0pTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIFdURkxvZ1ZlcmJvc2UoY29uc3QgY2hh
ciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uLCBXVEZMb2dDaGFubmVsKiBj
aGFubmVsLCBjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikgV1RGX0FUVFJJQlVURV9QUklOVEYoNSwg
Nik7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL1Ro
cmVhZGluZ1ByaW1pdGl2ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvVGhy
ZWFkaW5nUHJpbWl0aXZlcy5oCShyZXZpc2lvbiA2MTcyMikKKysrIEphdmFTY3JpcHRDb3JlL3d0
Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMCwxMiArMTAwLDEy
IEBACiAgICAgCiBjbGFzcyBNdXRleCA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiBwdWJsaWM6Ci0g
ICAgTXV0ZXgoKTsKLSAgICB+TXV0ZXgoKTsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgTXV0ZXgo
KTsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgfk11dGV4KCk7CiAKLSAgICB2b2lkIGxvY2soKTsK
LSAgICBib29sIHRyeUxvY2soKTsKLSAgICB2b2lkIHVubG9jaygpOworICAgIEpTX0VYUE9SVEVE
X1NZTUJPTCB2b2lkIGxvY2soKTsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgYm9vbCB0cnlMb2Nr
KCk7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIHZvaWQgdW5sb2NrKCk7CiAKIHB1YmxpYzoKICAg
ICBQbGF0Zm9ybU11dGV4JiBpbXBsKCkgeyByZXR1cm4gbV9tdXRleDsgfQpAQCAtMTM0LDE1ICsx
MzQsMTUgQEAKIAogY2xhc3MgVGhyZWFkQ29uZGl0aW9uIDogcHVibGljIE5vbmNvcHlhYmxlIHsK
IHB1YmxpYzoKLSAgICBUaHJlYWRDb25kaXRpb24oKTsKLSAgICB+VGhyZWFkQ29uZGl0aW9uKCk7
CisgICAgSlNfRVhQT1JURURfU1lNQk9MIFRocmVhZENvbmRpdGlvbigpOworICAgIEpTX0VYUE9S
VEVEX1NZTUJPTCB+VGhyZWFkQ29uZGl0aW9uKCk7CiAgICAgCi0gICAgdm9pZCB3YWl0KE11dGV4
JiBtdXRleCk7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIHZvaWQgd2FpdChNdXRleCYgbXV0ZXgp
OwogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgY29uZGl0aW9uIHdhcyBzaWduYWxlZCBiZWZv
cmUgYWJzb2x1dGVUaW1lLCBmYWxzZSBpZiB0aGUgYWJzb2x1dGVUaW1lIHdhcyByZWFjaGVkIG9y
IGlzIGluIHRoZSBwYXN0LgogICAgIC8vIFRoZSBhYnNvbHV0ZVRpbWUgaXMgaW4gc2Vjb25kcywg
c3RhcnRpbmcgb24gSmFudWFyeSAxLCAxOTcwLiBUaGUgdGltZSBpcyBhc3N1bWVkIHRvIHVzZSB0
aGUgc2FtZSB0aW1lIHpvbmUgYXMgV1RGOjpjdXJyZW50VGltZSgpLgotICAgIGJvb2wgdGltZWRX
YWl0KE11dGV4JiwgZG91YmxlIGFic29sdXRlVGltZSk7Ci0gICAgdm9pZCBzaWduYWwoKTsKLSAg
ICB2b2lkIGJyb2FkY2FzdCgpOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBib29sIHRpbWVkV2Fp
dChNdXRleCYsIGRvdWJsZSBhYnNvbHV0ZVRpbWUpOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2
b2lkIHNpZ25hbCgpOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIGJyb2FkY2FzdCgpOwog
ICAgIAogcHJpdmF0ZToKICAgICBQbGF0Zm9ybUNvbmRpdGlvbiBtX2NvbmRpdGlvbjsKSW5kZXg6
IEphdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkocmV2aXNpb24gNjE3MjIp
CisrKyBKYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDAsOCArMTAwLDggQEAKICAgICAgICAgSlNWYWx1ZSBleGVjdXRlKEV2YWxFeGVj
dXRhYmxlKiBldmFsTm9kZSwgQ2FsbEZyYW1lKiBleGVjLCBKU09iamVjdCogdGhpc09iaiwgU2Nv
cGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW4sIEpTVmFsdWUqIGV4Y2VwdGlvbik7CiAKICAgICAgICAg
SlNWYWx1ZSByZXRyaWV2ZUFyZ3VtZW50cyhDYWxsRnJhbWUqLCBKU0Z1bmN0aW9uKikgY29uc3Q7
Ci0gICAgICAgIEpTVmFsdWUgcmV0cmlldmVDYWxsZXIoQ2FsbEZyYW1lKiwgSlNGdW5jdGlvbiop
IGNvbnN0OwotICAgICAgICB2b2lkIHJldHJpZXZlTGFzdENhbGxlcihDYWxsRnJhbWUqLCBpbnQm
IGxpbmVOdW1iZXIsIGludHB0cl90JiBzb3VyY2VJRCwgVVN0cmluZyYgc291cmNlVVJMLCBKU1Zh
bHVlJiBmdW5jdGlvbikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBKU1ZhbHVl
IHJldHJpZXZlQ2FsbGVyKENhbGxGcmFtZSosIEpTRnVuY3Rpb24qKSBjb25zdDsKKyAgICAgICAg
SlNfRVhQT1JURURfU1lNQk9MIHZvaWQgcmV0cmlldmVMYXN0Q2FsbGVyKENhbGxGcmFtZSosIGlu
dCYgbGluZU51bWJlciwgaW50cHRyX3QmIHNvdXJjZUlELCBVU3RyaW5nJiBzb3VyY2VVUkwsIEpT
VmFsdWUmIGZ1bmN0aW9uKSBjb25zdDsKICAgICAgICAgCiAgICAgICAgIHZvaWQgZ2V0QXJndW1l
bnRzRGF0YShDYWxsRnJhbWUqLCBKU0Z1bmN0aW9uKiYsIHB0cmRpZmZfdCYgZmlyc3RQYXJhbWV0
ZXJJbmRleCwgUmVnaXN0ZXIqJiBhcmd2LCBpbnQmIGFyZ2MpOwogICAgICAgICAKSW5kZXg6IEph
dmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9KU05vZGVMaXN0LmMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNj
cmlwdENvcmUvQVBJL3Rlc3RzL0pTTm9kZUxpc3QuYwkocmV2aXNpb24gNjE3MjIpCisrKyBKYXZh
U2NyaXB0Q29yZS9BUEkvdGVzdHMvSlNOb2RlTGlzdC5jCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2
ICsyMyw4IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCisjaW5jbHVkZSAiY29uZmlnLmgiCisK
ICNpbmNsdWRlICJKU05vZGUuaCIKICNpbmNsdWRlICJKU05vZGVMaXN0LmgiCiAjaW5jbHVkZSAi
SlNPYmplY3RSZWYuaCIKSW5kZXg6IEphdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9KU05vZGUuYwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvSlNOb2RlLmMJKHJldmlzaW9u
IDYxNzIyKQorKysgSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0pTTm9kZS5jCSh3b3JraW5nIGNv
cHkpCkBAIC0yMyw2ICsyMyw4IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisKICNpbmNsdWRlICJKU05vZGUuaCIKICNpbmNsdWRlICJKU05vZGVMaXN0Lmgi
CiAjaW5jbHVkZSAiSlNPYmplY3RSZWYuaCIKSW5kZXg6IEphdmFTY3JpcHRDb3JlL0FQSS90ZXN0
cy90ZXN0YXBpLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3Rh
cGkuYwkocmV2aXNpb24gNjE3MjIpCisrKyBKYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFw
aS5jCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2ICsyMyw4IEBACiAgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAq
LwogCisjaW5jbHVkZSAiY29uZmlnLmgiCisKICNpbmNsdWRlICJKYXZhU2NyaXB0Q29yZS5oIgog
I2luY2x1ZGUgIkpTQmFzZVByaXZhdGUuaCIKICNpbmNsdWRlICJKU0NvbnRleHRSZWZQcml2YXRl
LmgiCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvbWluaWRvbS5jCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIEphdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9taW5pZG9tLmMJKHJldmlzaW9uIDYxNzIyKQor
KysgSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL21pbmlkb20uYwkod29ya2luZyBjb3B5KQpAQCAt
MjQsNiArMjQsOCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAorI2luY2x1ZGUgImNvbmZpZy5o
IgorCiAjaW5jbHVkZSAiSlNDb250ZXh0UmVmLmgiCiAjaW5jbHVkZSAiSlNOb2RlLmgiCiAjaW5j
bHVkZSAiSlNPYmplY3RSZWYuaCIKSW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDYxNzIyKQorKysg
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTI2IEBA
CisyMDEwLTA2LTE3ICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBKU19F
WFBPUlRFRF9TWU1CT0wgdG8gZXhwb3J0IEpTQ29yZSBzeW1ib2xzIG5lZWRlZCBieSBvdGhlciBX
ZWJLaXQgbGlicmFyaWVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9Mjc1NTEKKworICAgICAgICAqIEFQSS90ZXN0cy9KU05vZGUuYzoKKyAgICAgICAg
KiBBUEkvdGVzdHMvSlNOb2RlTGlzdC5jOgorICAgICAgICAqIEFQSS90ZXN0cy9taW5pZG9tLmM6
CisgICAgICAgICogQVBJL3Rlc3RzL3Rlc3RhcGkuYzoKKyAgICAgICAgKiBieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBjb25maWcuaDoKKyAgICAgICAgKiBkZWJ1
Z2dlci9EZWJ1Z2dlci5oOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmg6
CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKiBwY3JlL3Bj
cmUuaDoKKyAgICAgICAgKiBwcm9maWxlci9Qcm9maWxlci5oOgorICAgICAgICAqIHJ1bnRpbWUv
QXJnTGlzdC5oOgorICAgICAgICAqIHJ1bnRpbWUvQ2FsbERhdGEuaDoKKyAgICAgICAgKiBydW50
aW1lL0NvbGxlY3Rvci5jcHA6CisgICAgICAgICogcnVudGltZS9Db2xsZWN0b3IuaDoKKyAgICAg
ICAgKiBydW50aW1lL0NvbGxlY3RvckhlYXBJdGVyYXRvci5oOgorICAgICAgICAqIHJ1bnRpbWUv
Q29tcGxldGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvQ29uc3RydWN0RGF0YS5oOgorICAgICAg
ICAqIHJ1bnRpbWUvRGF0ZUluc3RhbmNlLmg6CisgICAgICAgICogcnVudGltZS9FcnJvci5oOgor
ICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oOgorICAgICAgICAqIHJ1bnRpbWUv
RnVuY3Rpb25Db25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvSWRlbnRpZmllci5oOgor
ICAgICAgICAqIHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5oOgorICAgICAgICAqIHJ1bnRp
bWUvSW50ZXJuYWxGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5oOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNCeXRlQXJyYXkuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5o
OgorICAgICAgICAoSlNDOjpKU0NlbGw6OnZwdHIpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnNl
dFZQdHIpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmlzU3RyaW5nKToKKyAgICAgICAgKiBydW50
aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5oOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbERhdGE6Oik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6SlNHbG9iYWxPYmplY3REYXRh
OjpKU0dsb2JhbE9iamVjdERhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvSlNMb2NrLmg6CisgICAg
ICAgIChKU0M6OkpTTG9jazo6KToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAg
ICAgIChKU0M6OkpTT2JqZWN0Ojpwcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdCk6
CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RGdW5jdGlvbik6CisgICAgICAgICog
cnVudGltZS9KU09iamVjdFdpdGhHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pT
U3RyaW5nLmg6CisgICAgICAgIChKU0M6OkpTU3RyaW5nOjp2YWx1ZSk6CisgICAgICAgICogcnVu
dGltZS9KU1ZhbHVlLmg6CisgICAgICAgICogcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0Lmg6Cisg
ICAgICAgIChKU0M6OkpTVmFyaWFibGVPYmplY3Q6OnN5bWJvbFRhYmxlKToKKyAgICAgICAgKiBy
dW50aW1lL0pTV3JhcHBlck9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvTG9va3VwLmg6Cisg
ICAgICAgICogcnVudGltZS9NYXJrU3RhY2suaDoKKyAgICAgICAgKiBydW50aW1lL09iamVjdFBy
b3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmg6CisgICAg
ICAgICogcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oOgorICAgICAgICAqIHJ1bnRpbWUvUHJv
cGVydHlTbG90Lmg6CisgICAgICAgICogcnVudGltZS9Sb3BlSW1wbC5oOgorICAgICAgICAqIHJ1
bnRpbWUvU21hbGxTdHJpbmdzLmg6CisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuaDoK
KyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5oOgorICAgICAgICAqIHJ1bnRpbWUvVGltZW91
dENoZWNrZXIuaDoKKyAgICAgICAgKiBydW50aW1lL1VTdHJpbmcuaDoKKyAgICAgICAgKEpTQzo6
VVN0cmluZzo6VVN0cmluZyk6CisgICAgICAgIChKU0M6OlVTdHJpbmc6OmlzTnVsbCk6CisgICAg
ICAgIChKU0M6OlVTdHJpbmc6On5VU3RyaW5nKToKKyAgICAgICAgKEpTQzo6VVN0cmluZzo6b3Bl
cmF0b3I9KToKKyAgICAgICAgKiB3c2NyaXB0OgorICAgICAgICAqIHd0Zi9Bc3NlcnRpb25zLmg6
CisgICAgICAgICogd3RmL0J5dGVBcnJheS5oOgorICAgICAgICAqIHd0Zi9DdXJyZW50VGltZS5o
OgorICAgICAgICAoV1RGOjpjdXJyZW50VGltZU1TKToKKyAgICAgICAgKFdURjo6Z2V0TG9jYWxU
aW1lKToKKyAgICAgICAgKiB3dGYvRGF0ZU1hdGguaDoKKyAgICAgICAgKiB3dGYvRmFzdE1hbGxv
Yy5oOgorICAgICAgICAoV1RGOjpUcnlNYWxsb2NSZXR1cm5WYWx1ZTo6VHJ5TWFsbG9jUmV0dXJu
VmFsdWUpOgorICAgICAgICAoV1RGOjpUcnlNYWxsb2NSZXR1cm5WYWx1ZTo6flRyeU1hbGxvY1Jl
dHVyblZhbHVlKToKKyAgICAgICAgKFdURjo6VHJ5TWFsbG9jUmV0dXJuVmFsdWU6Om9wZXJhdG9y
IFBvc3NpYmx5TnVsbDxUPik6CisgICAgICAgIChXVEY6OlRyeU1hbGxvY1JldHVyblZhbHVlOjpn
ZXRWYWx1ZSk6CisgICAgICAgIChXVEY6OkludGVybmFsOjopOgorICAgICAgICAoV1RGOjpJbnRl
cm5hbDo6ZmFzdE1hbGxvY01hdGNoVmFsaWRhdGlvblR5cGUpOgorICAgICAgICAoV1RGOjpJbnRl
cm5hbDo6ZmFzdE1hbGxvY01hdGNoVmFsaWRhdGlvblZhbHVlKToKKyAgICAgICAgKFdURjo6SW50
ZXJuYWw6OnNldEZhc3RNYWxsb2NNYXRjaFZhbGlkYXRpb25UeXBlKToKKyAgICAgICAgKFdURjo6
ZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVNYWxsb2MpOgorICAgICAgICAoV1RGOjpmYXN0TWFsbG9j
TWF0Y2hWYWxpZGF0ZUZyZWUpOgorICAgICAgICAqIHd0Zi9NYWluVGhyZWFkLmg6CisgICAgICAg
ICogd3RmL1JhbmRvbU51bWJlci5oOgorICAgICAgICAqIHd0Zi9SZWZDb3VudGVkTGVha0NvdW50
ZXIuaDoKKyAgICAgICAgKFdURjo6KToKKyAgICAgICAgKiB3dGYvVGhyZWFkU3BlY2lmaWMuaDoK
KyAgICAgICAgKiB3dGYvVGhyZWFkaW5nLmg6CisgICAgICAgICogd3RmL1RocmVhZGluZ1ByaW1p
dGl2ZXMuaDoKKyAgICAgICAgKiB3dGYvV1RGVGhyZWFkRGF0YS5oOgorICAgICAgICAqIHd0Zi9k
dG9hLmg6CisgICAgICAgICogd3RmL3RleHQvQXRvbWljU3RyaW5nLmg6CisgICAgICAgIChXZWJD
b3JlOjpBdG9taWNTdHJpbmc6OkF0b21pY1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpBdG9t
aWNTdHJpbmc6OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkF0
b21pY1N0cmluZzo6fkF0b21pY1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNTdHJp
bmc6OmltcGwpOgorICAgICAgICAoV2ViQ29yZTo6QXRvbWljU3RyaW5nOjpvcGVyYXRvcj0pOgor
ICAgICAgICAqIHd0Zi90ZXh0L0NTdHJpbmcuaDoKKyAgICAgICAgKFdURjo6Q1N0cmluZzo6fkNT
dHJpbmcpOgorICAgICAgICAoV1RGOjpDU3RyaW5nOjpkYXRhKToKKyAgICAgICAgKiB3dGYvdGV4
dC9TdHJpbmdJbXBsLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHJpbmdJbXBsOjpjaGFyYWN0ZXJz
KToKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdTdGF0aWNzLmNwcDoKKyAgICAgICAgKiB3dGYv
dGV4dC9XVEZTdHJpbmcuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0cmluZzo6U3RyaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0cmluZzo6flN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTdHJp
bmc6OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0cmluZzo6
aXNFbXB0eSk6CisgICAgICAgIChXZWJDb3JlOjpTdHJpbmc6OmltcGwpOgorICAgICAgICAoV2Vi
Q29yZTo6U3RyaW5nOjpvcGVyYXRvcj0pOgorICAgICAgICAqIHd0Zi91bmljb2RlL0NvbGxhdG9y
Lmg6CisgICAgICAgIChXVEY6Oik6CisgICAgICAgICogd3RmL3VuaWNvZGUvVVRGOC5oOgorCiAy
MDEwLTA2LTIzICBLd2FuZyBZdWwgU2VvICA8c2t5dWxAY29tcGFueTEwMC5uZXQ+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgT2xpdmVyIEh1bnQuCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9wY3JlL3Bj
cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9wY3JlL3BjcmUuaAkocmV2aXNpb24g
NjE3MjIpCisrKyBKYXZhU2NyaXB0Q29yZS9wY3JlL3BjcmUuaAkod29ya2luZyBjb3B5KQpAQCAt
NTUsMTQgKzU1LDE0IEBACiBjb25zdCBpbnQgSlNSZWdFeHBFcnJvck5vTWVtb3J5ID0gLTM7CiBj
b25zdCBpbnQgSlNSZWdFeHBFcnJvckludGVybmFsID0gLTQ7CiAKLUpTUmVnRXhwKiBqc1JlZ0V4
cENvbXBpbGUoY29uc3QgVUNoYXIqIHBhdHRlcm4sIGludCBwYXR0ZXJuTGVuZ3RoLAorSlNfRVhQ
T1JURURfU1lNQk9MIEpTUmVnRXhwKiBqc1JlZ0V4cENvbXBpbGUoY29uc3QgVUNoYXIqIHBhdHRl
cm4sIGludCBwYXR0ZXJuTGVuZ3RoLAogICAgIEpTUmVnRXhwSWdub3JlQ2FzZU9wdGlvbiwgSlNS
ZWdFeHBNdWx0aWxpbmVPcHRpb24sCiAgICAgdW5zaWduZWQqIG51bVN1YnBhdHRlcm5zLCBjb25z
dCBjaGFyKiogZXJyb3JNZXNzYWdlKTsKIAotaW50IGpzUmVnRXhwRXhlY3V0ZShjb25zdCBKU1Jl
Z0V4cCosCitKU19FWFBPUlRFRF9TWU1CT0wgaW50IGpzUmVnRXhwRXhlY3V0ZShjb25zdCBKU1Jl
Z0V4cCosCiAgICAgY29uc3QgVUNoYXIqIHN1YmplY3QsIGludCBzdWJqZWN0TGVuZ3RoLCBpbnQg
c3RhcnRPZmZzZXQsCiAgICAgaW50KiBvZmZzZXRzVmVjdG9yLCBpbnQgb2Zmc2V0c1ZlY3Rvckxl
bmd0aCk7CiAKLXZvaWQganNSZWdFeHBGcmVlKEpTUmVnRXhwKik7CitKU19FWFBPUlRFRF9TWU1C
T0wgdm9pZCBqc1JlZ0V4cEZyZWUoSlNSZWdFeHAqKTsKIAogI2VuZGlmCkluZGV4OiBKYXZhU2Ny
aXB0Q29yZS93c2NyaXB0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3dzY3JpcHQJKHJl
dmlzaW9uIDYxNzIyKQorKysgSmF2YVNjcmlwdENvcmUvd3NjcmlwdAkod29ya2luZyBjb3B5KQpA
QCAtNzUsNiArNzUsNyBAQAogZGVmIGJ1aWxkKGJsZCk6CiAgICAgaW1wb3J0IE9wdGlvbnMKIAor
ICAgIGJsZC5lbnYuTElCRElSID0gb3V0cHV0X2RpcgogICAgIGZ1bGxfZGlycyA9IGdldF9kaXJz
X2Zvcl9mZWF0dXJlcyhqc2NvcmVfZGlyLCBmZWF0dXJlcz1bYnVpbGRfcG9ydF0sIGRpcnM9anNj
b3JlX2RpcnMpCiAKICAgICBpbmNsdWRlcyA9IGNvbW1vbl9pbmNsdWRlcyArIGZ1bGxfZGlycwpA
QCAtODMsOSArODQsMTAgQEAKIAogICAgICMgMS4gQSBzaW1wbGUgcHJvZ3JhbQogICAgIGpzY29y
ZSA9IGJsZC5uZXdfdGFza19nZW4oCi0gICAgICAgIGZlYXR1cmVzID0gJ2N4eCBjc3RhdGljbGli
JywKKyAgICAgICAgZmVhdHVyZXMgPSAnY3h4IGNzaGxpYiBpbXBsaWInLAogICAgICAgICBpbmNs
dWRlcyA9ICcuIC4uIGFzc2VtYmxlciBEZXJpdmVkU291cmNlcyBGb3J3YXJkaW5nSGVhZGVycyAn
ICsgJyAnLmpvaW4oaW5jbHVkZXMpLAogICAgICAgICBzb3VyY2UgPSBzb3VyY2VzLAorICAgICAg
ICBkZWZpbmVzID0gWydCVUlMRElOR19KYXZhU2NyaXB0Q29yZSddLAogICAgICAgICB0YXJnZXQg
PSAnanNjb3JlJywKICAgICAgICAgdXNlbGliID0gJ1dYIElDVSAnICsgZ2V0X2NvbmZpZygpLAog
ICAgICAgICB1c2VsaWJfbG9jYWwgPSAnJywKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3Byb2ZpbGVy
L1Byb2ZpbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmls
ZXIuaAkocmV2aXNpb24gNjE3MjIpCisrKyBKYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSwxMSArNTEsMTEgQEAKICAgICAgICAgICAgIHJldHVy
biAmc19zaGFyZWRFbmFibGVkUHJvZmlsZXJSZWZlcmVuY2U7CiAgICAgICAgIH0KIAotICAgICAg
ICBzdGF0aWMgUHJvZmlsZXIqIHByb2ZpbGVyKCk7IAorICAgICAgICBKU19FWFBPUlRFRF9TWU1C
T0wgc3RhdGljIFByb2ZpbGVyKiBwcm9maWxlcigpOyAKICAgICAgICAgc3RhdGljIENhbGxJZGVu
dGlmaWVyIGNyZWF0ZUNhbGxJZGVudGlmaWVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSwgY29u
c3QgVVN0cmluZyYgc291cmNlVVJMLCBpbnQgbGluZU51bWJlcik7CiAKLSAgICAgICAgdm9pZCBz
dGFydFByb2ZpbGluZyhFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJiB0aXRsZSk7Ci0gICAgICAg
IFBhc3NSZWZQdHI8UHJvZmlsZT4gc3RvcFByb2ZpbGluZyhFeGVjU3RhdGUqLCBjb25zdCBVU3Ry
aW5nJiB0aXRsZSk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIHN0YXJ0UHJvZmls
aW5nKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmIHRpdGxlKTsKKyAgICAgICAgSlNfRVhQT1JU
RURfU1lNQk9MIFBhc3NSZWZQdHI8UHJvZmlsZT4gc3RvcFByb2ZpbGluZyhFeGVjU3RhdGUqLCBj
b25zdCBVU3RyaW5nJiB0aXRsZSk7CiAKICAgICAgICAgdm9pZCB3aWxsRXhlY3V0ZShFeGVjU3Rh
dGUqLCBKU1ZhbHVlIGZ1bmN0aW9uKTsKICAgICAgICAgdm9pZCB3aWxsRXhlY3V0ZShFeGVjU3Rh
dGUqLCBjb25zdCBVU3RyaW5nJiBzb3VyY2VVUkwsIGludCBzdGFydGluZ0xpbmVOdW1iZXIpOwpJ
bmRleDogSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5oCShyZXZp
c2lvbiA2MTcyMikKKysrIEphdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1l
LmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDEwICs1MSwxMCBAQAogICAgICAgICBKU0dsb2JhbE9i
amVjdCogZHluYW1pY0dsb2JhbE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbEZyYW1lLT5k
eW5hbWljR2xvYmFsT2JqZWN0KCk7IH0KICAgICAgICAgY29uc3QgU2NvcGVDaGFpbk5vZGUqIHNj
b3BlQ2hhaW4oKSBjb25zdCB7IHJldHVybiBtX2NhbGxGcmFtZS0+c2NvcGVDaGFpbigpOyB9CiAg
ICAgICAgIGNvbnN0IFVTdHJpbmcqIGZ1bmN0aW9uTmFtZSgpIGNvbnN0OwotICAgICAgICBVU3Ry
aW5nIGNhbGN1bGF0ZWRGdW5jdGlvbk5hbWUoKSBjb25zdDsKLSAgICAgICAgVHlwZSB0eXBlKCkg
Y29uc3Q7Ci0gICAgICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0KCkgY29uc3Q7Ci0gICAgICAgIEpT
VmFsdWUgZXZhbHVhdGUoY29uc3QgVVN0cmluZyYsIEpTVmFsdWUmIGV4Y2VwdGlvbikgY29uc3Q7
CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBVU3RyaW5nIGNhbGN1bGF0ZWRGdW5jdGlvbk5h
bWUoKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIFR5cGUgdHlwZSgpIGNvbnN0
OworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgSlNPYmplY3QqIHRoaXNPYmplY3QoKSBjb25z
dDsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIEpTVmFsdWUgZXZhbHVhdGUoY29uc3QgVVN0
cmluZyYsIEpTVmFsdWUmIGV4Y2VwdGlvbikgY29uc3Q7CiAgICAgICAgIEpTVmFsdWUgZXhjZXB0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9leGNlcHRpb247IH0KIAogICAgIHByaXZhdGU6CkluZGV4
OiBKYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmgJKHJldmlzaW9uIDYxNzIyKQorKysgSmF2YVNj
cmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTAgKzM2
LDEwIEBACiAKICAgICBjbGFzcyBEZWJ1Z2dlciB7CiAgICAgcHVibGljOgotICAgICAgICB2aXJ0
dWFsIH5EZWJ1Z2dlcigpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCB+RGVi
dWdnZXIoKTsKIAotICAgICAgICB2b2lkIGF0dGFjaChKU0dsb2JhbE9iamVjdCopOwotICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGV0YWNoKEpTR2xvYmFsT2JqZWN0Kik7CisgICAgICAgIEpTX0VYUE9S
VEVEX1NZTUJPTCB2b2lkIGF0dGFjaChKU0dsb2JhbE9iamVjdCopOworICAgICAgICBKU19FWFBP
UlRFRF9TWU1CT0wgdmlydHVhbCB2b2lkIGRldGFjaChKU0dsb2JhbE9iamVjdCopOwogCiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VQYXJzZWQoRXhlY1N0YXRlKiwgY29uc3QgU291cmNlQ29k
ZSYsIGludCBlcnJvckxpbmVOdW1iZXIsIGNvbnN0IFVTdHJpbmcmIGVycm9yTWVzc2FnZSkgPSAw
OwogICAgICAgICB2aXJ0dWFsIHZvaWQgZXhjZXB0aW9uKGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1l
JiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyLCBib29sIGhhc0hhbmRsZXIpID0g
MDsKQEAgLTUxLDcgKzUxLDcgQEAKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEV4ZWN1dGVQcm9n
cmFtKGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5l
TnVtYmVyKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFjaEJyZWFrcG9pbnQoY29u
c3QgRGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIp
ID0gMDsKIAotICAgICAgICB2b2lkIHJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKEpTR2xvYmFsRGF0
YSopOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCByZWNvbXBpbGVBbGxKU0Z1bmN0
aW9ucyhKU0dsb2JhbERhdGEqKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIEhhc2hTZXQ8SlNH
bG9iYWxPYmplY3QqPiBtX2dsb2JhbE9iamVjdHM7CkluZGV4OiBXZWJLaXQvY2YvV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jZi9X
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAJKHJldmlzaW9uIDYxNzIyKQor
KysgV2ViS2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzksMTQgKzM5LDEyIEBACiAKICNpZiBkZWZpbmVkKFdJTjMyKSB8fCBk
ZWZpbmVkKF9XSU4zMikKICNpZiBkZWZpbmVkKEJVSUxESU5HX0phdmFTY3JpcHRDb3JlKSB8fCBk
ZWZpbmVkKEJVSUxESU5HX1dURikKLSNkZWZpbmUgSlNfRVhQT1JUREFUQSBfX2RlY2xzcGVjKGRs
bGV4cG9ydCkKKyNkZWZpbmUgSlNfRVhQT1JURURfU1lNQk9MIF9fZGVjbHNwZWMoZGxsZXhwb3J0
KQogI2Vsc2UKLSNkZWZpbmUgSlNfRVhQT1JUREFUQSBfX2RlY2xzcGVjKGRsbGltcG9ydCkKKyNk
ZWZpbmUgSlNfRVhQT1JURURfU1lNQk9MIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQogI2VuZGlmCi0j
ZGVmaW5lIEpTX0VYUE9SVENMQVNTIEpTX0VYUE9SVERBVEEKICNlbHNlCi0jZGVmaW5lIEpTX0VY
UE9SVERBVEEKLSNkZWZpbmUgSlNfRVhQT1JUQ0xBU1MKKyNkZWZpbmUgSlNfRVhQT1JURURfU1lN
Qk9MCiAjZW5kaWYKIAogI2luY2x1ZGUgIldlYkluc3BlY3RvckNsaWVudC5oIgpJbmRleDogV2Vi
S2l0L2NmL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2YvQ2hhbmdlTG9nCShyZXZp
c2lvbiA2MTcyMikKKysrIFdlYktpdC9jZi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxMiBAQAorMjAxMC0wNi0xNyAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZp
ZXJzLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVc2UgSlNfRVhQT1JURURfU1lNQk9MIHRvIGV4cG9ydCBKU0NvcmUgc3ltYm9scyBuZWVkZWQg
Ynkgb3RoZXIgV2ViS2l0IGxpYnJhcmllcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTI3NTUxCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JDbGllbnRDRi5jcHA6CisKIDIwMTAtMDYtMTQgIElseWEgVGlraG9ub3Zza3kgIDxs
b2lzbG9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4u
CkluZGV4OiBXZWJLaXQvd3gvd3NjcmlwdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd3gvd3Njcmlw
dAkocmV2aXNpb24gNjE3MjIpCisrKyBXZWJLaXQvd3gvd3NjcmlwdAkod29ya2luZyBjb3B5KQpA
QCAtNjYsNyArNjYsNyBAQAogICAgIAogZGVmIHByZV9idWlsZChibGQpOgogICAgICIiIgotICAg
IFRoZSB3eFdlYktpdCBsaWJyYXJ5IHNob3VsZCBiZSByZWJ1aWx0IGlmIGpzY29yZSBvciB3ZWJj
b3JlIGNoYW5nZXMsCisgICAgVGhlIHd4V2ViS2l0IGxpYnJhcnkgc2hvdWxkIGJlIHJlYnVpbHQg
aWYgd2ViY29yZSBjaGFuZ2VzLAogICAgIHNvIHdlIG1ha2UgdGhvc2Ugc3RhdGljIGxpYnMgYXMg
ZGVwZW5kZW5jaWVzLgogICAgICIiIgogICAgIApAQCAtNzQsMTMgKzc0LDEwIEBACiAgICAgaWYg
c3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ3dpbicpOgogICAgICAgICBleHQgPSAnLmxpYicKICAg
ICAKLSAgICBsaWJqc2NvcmUgPSBvcy5wYXRoLmpvaW4ob3V0cHV0X2RpciwgJ2xpYmpzY29yZSVz
JyAlIGV4dCkKICAgICBsaWJ3ZWJjb3JlID0gb3MucGF0aC5qb2luKG91dHB1dF9kaXIsICdsaWJ3
ZWJjb3JlJXMnICUgZXh0KQogICAgIAotICAgIGFzc2VydCBvcy5wYXRoLmV4aXN0cyhsaWJqc2Nv
cmUpCiAgICAgYXNzZXJ0IG9zLnBhdGguZXhpc3RzKGxpYndlYmNvcmUpCiAgICAgCi0gICAgYmxk
LmVudi5DWFhERVBTX0pTQ09SRSA9IFV0aWxzLmhfZmlsZShsaWJqc2NvcmUpCiAgICAgYmxkLmVu
di5DWFhERVBTX1dFQkNPUkUgPSBVdGlscy5oX2ZpbGUobGlid2ViY29yZSkKICAgICAKIGRlZiBi
dWlsZChibGQpOgpJbmRleDogV2ViS2l0L21hYy9XZWJLaXRQcmVmaXguaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvbWFjL1dlYktpdFByZWZpeC5oCShyZXZpc2lvbiA2MTcyMikKKysrIFdlYktpdC9t
YWMvV2ViS2l0UHJlZml4LmgJKHdvcmtpbmcgY29weSkKQEAgLTcwLDYgKzcwLDggQEAKICNpbXBv
cnQgPENvY29hL0NvY29hLmg+CiAjZW5kaWYKIAorI2RlZmluZSBKU19FWFBPUlRFRF9TWU1CT0wK
KwogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogCiAjaW5jbHVkZSA8V2ViQ29yZS9FbXB0eVBy
b3RvY29sRGVmaW5pdGlvbnMuaD4KQEAgLTg5LDYgKzkxLDQgQEAKICN1bmRlZiB0cnkKICN1bmRl
ZiBjYXRjaAogCi0jZGVmaW5lIEpTX0VYUE9SVERBVEEKLSNkZWZpbmUgSlNfRVhQT1JUQ0xBU1MK
ICNkZWZpbmUgV0VCS0lUX0VYUE9SVERBVEEKSW5kZXg6IEphdmFTY3JpcHRHbHVlL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0R2x1ZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDYxNzIy
KQorKysgSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTIgQEAKKzIwMTAtMDYtMTcgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNl
IEpTX0VYUE9SVEVEX1NZTUJPTCB0byBleHBvcnQgSlNDb3JlIHN5bWJvbHMgbmVlZGVkIGJ5IG90
aGVyIFdlYktpdCBsaWJyYXJpZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yNzU1MQorCisgICAgICAgICogY29uZmlnLmg6CisKIDIwMTAtMDYtMDIg
IEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IE9saXZlciBIdW50LgpJbmRleDogSmF2YVNjcmlwdEdsdWUvY29uZmlnLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSmF2YVNjcmlwdEdsdWUvY29uZmlnLmgJKHJldmlzaW9uIDYxNzIyKQorKysg
SmF2YVNjcmlwdEdsdWUvY29uZmlnLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3LDUgKzE3LDQgQEAK
IC8qIFVzaW5nIFY4IGltcGxpZXMgbm90IHVzaW5nIEpTQyBhbmQgdmljZSB2ZXJzYSAqLwogI2Rl
ZmluZSBXVEZfVVNFX0pTQyAhV1RGX1VTRV9WOAogCi0jZGVmaW5lIEpTX0VYUE9SVERBVEEKLSNk
ZWZpbmUgSlNfRVhQT1JUQ0xBU1MKKyNkZWZpbmUgSlNfRVhQT1JURURfU1lNQk9MCkluZGV4OiBX
ZWJDb3JlL2NvbmZpZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY29uZmlnLmgJKHJldmlzaW9u
IDYxNzIyKQorKysgV2ViQ29yZS9jb25maWcuaAkod29ya2luZyBjb3B5KQpAQCAtMjksMjEgKzI5
LDE5IEBACiAKICNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KIAotI2lmICFQTEFURk9STShDSFJP
TUlVTSkgJiYgT1MoV0lORE9XUykgJiYgIWRlZmluZWQoQlVJTERJTkdfV1hfXykgJiYgIUNPTVBJ
TEVSKEdDQykKKyNpZiAhUExBVEZPUk0oQ0hST01JVU0pICYmIE9TKFdJTkRPV1MpICYmICFDT01Q
SUxFUihHQ0MpCiAjaWYgZGVmaW5lZChCVUlMRElOR19KYXZhU2NyaXB0Q29yZSkgfHwgZGVmaW5l
ZChCVUlMRElOR19XVEYpCi0jZGVmaW5lIEpTX0VYUE9SVERBVEEgX19kZWNsc3BlYyhkbGxleHBv
cnQpCisjZGVmaW5lIEpTX0VYUE9SVEVEX1NZTUJPTCBfX2RlY2xzcGVjKGRsbGV4cG9ydCkKICNl
bHNlCi0jZGVmaW5lIEpTX0VYUE9SVERBVEEgX19kZWNsc3BlYyhkbGxpbXBvcnQpCisjZGVmaW5l
IEpTX0VYUE9SVEVEX1NZTUJPTCBfX2RlY2xzcGVjKGRsbGltcG9ydCkKICNlbmRpZgogI2lmIGRl
ZmluZWQoQlVJTERJTkdfV2ViQ29yZSkgfHwgZGVmaW5lZChCVUlMRElOR19XZWJLaXQpCiAjZGVm
aW5lIFdFQktJVF9FWFBPUlREQVRBIF9fZGVjbHNwZWMoZGxsZXhwb3J0KQogI2Vsc2UKICNkZWZp
bmUgV0VCS0lUX0VYUE9SVERBVEEgX19kZWNsc3BlYyhkbGxpbXBvcnQpCiAjZW5kaWYKLSNkZWZp
bmUgSlNfRVhQT1JUQ0xBU1MgSlNfRVhQT1JUREFUQQogI2Vsc2UKLSNkZWZpbmUgSlNfRVhQT1JU
REFUQQotI2RlZmluZSBKU19FWFBPUlRDTEFTUworI2RlZmluZSBKU19FWFBPUlRFRF9TWU1CT0wK
ICNkZWZpbmUgV0VCS0lUX0VYUE9SVERBVEEKICNlbmRpZgogCkluZGV4OiBXZWJDb3JlL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gNjE3MjIpCisr
KyBXZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDEw
LTA2LTE3ICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBKU19FWFBPUlRF
RF9TWU1CT0wgdG8gZXhwb3J0IEpTQ29yZSBzeW1ib2xzIG5lZWRlZCBieSBvdGhlciBXZWJLaXQg
bGlicmFyaWVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9Mjc1NTEKKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQXJyYXlCdWZmZXJWaWV3Q3VzdG9t
LmNwcDoKKyAgICAgICAgKiBjb25maWcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvZ3RrMmRy
YXdpbmcuYzoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvTG9nZ2luZ01hYy5tbToKKyAgICAgICAg
KiBwbGF0Zm9ybS93aW5jZS9TaGFyZWRUaW1lcldpbmNlLmNwcDoKKyAgICAgICAgKiBzdmcvZ3Jh
cGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmg6CisKIDIwMTAtMDYtMjMgIEt3YW5nIFl1
bCBTZW8gIDxza3l1bEBjb21wYW55MTAwLm5ldD4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW50
IFRhbXVyYS4KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNp
b24gNjE3MjIpCisrKyBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOTAwMiw3ICsyOTAwMiw3IEBACiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxy
ZW5kZXJpbmdcU1ZHVGV4dExheW91dFV0aWxpdGllcy5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0K
LQkJIAk8RmlsZQ0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5ccmVuZGVyaW5nXFNW
R1RleHRRdWVyeS5jcHAiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpAQCAtMzMyNTYsMTUgKzMzMjU2
LDE1IEBACiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXENvbGxlY3Rpb25UeXBlLmgiDQogCQkJ
CT4NCiAJCQk8L0ZpbGU+DQotIAkJCTxGaWxlDQotIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxc
Q1NTUHJlbG9hZFNjYW5uZXIuY3BwIg0KLSAJCQkJPg0KLSAJCQk8L0ZpbGU+DQotIAkJCTxGaWxl
DQotIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcQ1NTUHJlbG9hZFNjYW5uZXIuaCINCi0gCQkJ
CT4NCi0gCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxD
U1NQcmVsb2FkU2Nhbm5lci5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXENTU1ByZWxvYWRTY2FubmVyLmgiDQorCQkJCT4NCisJ
CQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXERhdGFHcmlk
Q29sdW1uLmNwcCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCkBAIC0zMzM3Niw1NSArMzMzNzYsNyBA
QAogCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxGb3JtRGF0YUxpc3QuaCINCiAJCQkJPg0KIAkJ
CTwvRmlsZT4NCi0gICAgICAgICAgICA8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxc
SFRNTERvY3VtZW50UGFyc2VyLmNwcCINCi0JCQkJPg0KLSAgICAgICAgICAgIDwvRmlsZT4NCi0g
ICAgICAgICAgICA8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcSFRNTERvY3VtZW50
UGFyc2VyLmgiDQotCQkJCT4NCi0gICAgICAgICAgICA8L0ZpbGU+DQotICAgICAgICAgICAgPEZp
bGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXEhUTUxFbnRpdHlQYXJzZXIuY3BwIg0KLQkJ
CQk+DQotCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxI
VE1MRW50aXR5UGFyc2VyLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJ
UmVsYXRpdmVQYXRoPSIuLlxodG1sXEhUTUxUb2tlbml6ZXIuY3BwIg0KLQkJCQk+DQotCQkJPC9G
aWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxIVE1MVG9rZW5pemVy
LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIu
LlxodG1sXEhUTUxQcmVsb2FkU2Nhbm5lci5jcHAiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJ
PEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXEhUTUxQcmVsb2FkU2Nhbm5lci5oIg0K
LQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRt
bFxIVE1MU2NyaXB0UnVubmVyLmNwcCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0K
LQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcSFRNTFNjcmlwdFJ1bm5lci5oIg0KLQkJCQk+DQot
CQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxIVE1MVHJl
ZUJ1aWxkZXIuY3BwIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0
aXZlUGF0aD0iLi5caHRtbFxIVE1MVHJlZUJ1aWxkZXIuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4N
Ci0JCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcSFRNTEFsbENvbGxlY3Rpb24u
Y3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KQEAgLTM0NDY1LDYgKzM0NDE3LDE0IEBACiAJCQkJ
Pg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcSFRN
TERvY3VtZW50UGFyc2VyLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcSFRNTERvY3VtZW50UGFyc2VyLmgiDQorCQkJCT4NCisJ
CQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXEhUTUxFbGVt
ZW50LmNwcCINCiAJCQkJPg0KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCkBAIC0zNDU4MSw2ICsz
NDU0MSwxNCBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxodG1sXEhUTUxFbnRpdHlQYXJzZXIuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0K
KwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxIVE1MRW50aXR5UGFyc2VyLmgi
DQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxo
dG1sXEhUTUxGaWVsZFNldEVsZW1lbnQuY3BwIg0KIAkJCQk+DQogCQkJCTxGaWxlQ29uZmlndXJh
dGlvbg0KQEAgLTM1NDM2LDEwICszNTQwNCwxMCBAQAogCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRt
bFxIVE1MSW5wdXRFbGVtZW50LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQotICAgICAgICAgICAg
PEZpbGUNCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcSFRNTElucHV0U3Ry
ZWFtLmgiDQogCQkJCT4NCi0gICAgICAgICAgICA8L0ZpbGU+DQorCQkJPC9GaWxlPg0KIAkJCTxG
aWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxIVE1MSXNJbmRleEVsZW1lbnQuY3BwIg0K
IAkJCQk+DQpAQCAtMzY1MzcsMTkgKzM2NTA1LDExIEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJ
CQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcTGVnYWN5SFRNTFRyZWVCdWlsZGVy
LmNwcCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXGh0bWxcTGVnYWN5SFRNTFRyZWVCdWlsZGVyLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQot
CQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXEhUTUxQYXJzZXJFcnJvckNvZGVz
LmNwcCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXGh0bWxcSFRNTFBhcnNlclNjaGVkdWxlci5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0
bWxcSFRNTFBhcnNlckVycm9yQ29kZXMuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8Rmls
ZQ0KQEAgLTM2NTU3LDcgKzM2NTE3LDcgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxl
DQotCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxIVE1MUGFyc2VyRXJyb3JDb2Rlcy5oIg0KKwkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcSFRNTFBhcnNlclNjaGVkdWxlci5oIg0KIAkJCQk+DQog
CQkJPC9GaWxlPg0KIAkJCTxGaWxlDQpAQCAtMzY3MjksNiArMzY2ODksMTQgQEAKIAkJCQk+DQog
CQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxIVE1MUHJl
bG9hZFNjYW5uZXIuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJl
bGF0aXZlUGF0aD0iLi5caHRtbFxIVE1MUHJlbG9hZFNjYW5uZXIuaCINCisJCQkJPg0KKwkJCTwv
RmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcSFRNTFByb2dyZXNz
RWxlbWVudC5jcHAiDQogCQkJCT4NCiAJCQkJPEZpbGVDb25maWd1cmF0aW9uDQpAQCAtMzY4OTcs
NiArMzY4NjUsMTQgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0
aXZlUGF0aD0iLi5caHRtbFxIVE1MU2NyaXB0UnVubmVyLmNwcCINCisJCQkJPg0KKwkJCTwvRmls
ZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcSFRNTFNjcmlwdFJ1bm5l
ci5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0i
Li5caHRtbFxIVE1MU2VsZWN0RWxlbWVudC5jcHAiDQogCQkJCT4NCiAJCQkJPEZpbGVDb25maWd1
cmF0aW9uDQpAQCAtMzc1NzcsMTQgKzM3NTUzLDIyIEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJ
CQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcTGVnYWN5SFRNTERvY3VtZW50UGFy
c2VyLmNwcCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXEhUTUxUb2tlbml6ZXIuY3BwIg0K
IAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRt
bFxMZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXIuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1s
XEhUTUxUb2tlbml6ZXIuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcSFRNTFRyZWVCdWlsZGVyLmNwcCINCisJCQkJPg0KKwkJCTwv
RmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcSFRNTFRyZWVCdWls
ZGVyLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRo
PSIuLlxodG1sXEhUTUxVTGlzdEVsZW1lbnQuY3BwIg0KIAkJCQk+DQogCQkJCTxGaWxlQ29uZmln
dXJhdGlvbg0KQEAgLTM3NzI5LDEwICszNzcxMywyMiBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQog
CQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXE1lZGlhRXJyb3IuaCINCisJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxodG1sXExlZ2FjeUhUTUxEb2N1bWVudFBhcnNlci5jcHAiDQogCQkJ
CT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXExl
Z2FjeUhUTUxEb2N1bWVudFBhcnNlci5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxl
DQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxMZWdhY3lIVE1MVHJlZUJ1aWxkZXIuY3BwIg0K
KwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRt
bFxMZWdhY3lIVE1MVHJlZUJ1aWxkZXIuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8Rmls
ZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcTGVnYWN5UHJlbG9hZFNjYW5uZXIuY3BwIg0K
IAkJCQk+DQogCQkJPC9GaWxlPg0KQEAgLTM3NzQxLDYgKzM3NzM3LDEwIEBACiAJCQkJPg0KIAkJ
CTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcTWVkaWFFcnJv
ci5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0i
Li5caHRtbFxTdGVwUmFuZ2UuY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KQEAgLTQwNjU2LDEx
MCArNDA2NTYsNiBAQAogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJl
bGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNXZWJLaXRDU1NNYXRyaXhDdXN0b20uY3BwIg0K
LQkJCQkJPg0KLQkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQkJTmFtZT0iRGVidWd8V2lu
MzIiDQotCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQotCQkJCQkJPg0KLQkJCQkJCTxU
b29sDQotCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkJLz4NCi0JCQkJCTwv
RmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCQlOYW1l
PSJSZWxlYXNlfFdpbjMyIg0KLQkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJ
CT4NCi0JCQkJCQk8VG9vbA0KLQkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJ
CS8+DQotCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQkJPEZpbGVDb25maWd1cmF0aW9u
DQotCQkJCQkJTmFtZT0iRGVidWdfSW50ZXJuYWx8V2luMzIiDQotCQkJCQkJRXhjbHVkZWRGcm9t
QnVpbGQ9InRydWUiDQotCQkJCQkJPg0KLQkJCQkJCTxUb29sDQotCQkJCQkJCU5hbWU9IlZDQ0xD
b21waWxlclRvb2wiDQotCQkJCQkJLz4NCi0JCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJ
CQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb3xXaW4zMiINCi0J
CQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJCQk+DQotCQkJCQkJPFRvb2wNCi0J
CQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCQkvPg0KLQkJCQkJPC9GaWxlQ29u
ZmlndXJhdGlvbj4NCi0JCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJCU5hbWU9IlJlbGVh
c2VfQ2Fpcm98V2luMzIiDQotCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQotCQkJCQkJ
Pg0KLQkJCQkJCTxUb29sDQotCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkJ
Lz4NCi0JCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24N
Ci0JCQkJCQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIiDQotCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9
InRydWUiDQotCQkJCQkJPg0KLQkJCQkJCTxUb29sDQotCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxl
clRvb2wiDQotCQkJCQkJLz4NCi0JCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTwvRmls
ZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNXZWJL
aXRQb2ludEN1c3RvbS5jcHAiDQotCQkJCQk+DQotCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0J
CQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIN
Ci0JCQkJCQk+DQotCQkJCQkJPFRvb2wNCi0JCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIN
Ci0JCQkJCQkvPg0KLQkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJCTxGaWxlQ29uZmln
dXJhdGlvbg0KLQkJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJCQkJRXhjbHVkZWRGcm9t
QnVpbGQ9InRydWUiDQotCQkJCQkJPg0KLQkJCQkJCTxUb29sDQotCQkJCQkJCU5hbWU9IlZDQ0xD
b21waWxlclRvb2wiDQotCQkJCQkJLz4NCi0JCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJ
CQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCQlOYW1lPSJEZWJ1Z19JbnRlcm5hbHxXaW4zMiIN
Ci0JCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJCQk+DQotCQkJCQkJPFRvb2wN
Ci0JCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCQkvPg0KLQkJCQkJPC9GaWxl
Q29uZmlndXJhdGlvbj4NCi0JCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJCU5hbWU9IkRl
YnVnX0NhaXJvfFdpbjMyIg0KLQkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJ
CT4NCi0JCQkJCQk8VG9vbA0KLQkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJ
CS8+DQotCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQkJPEZpbGVDb25maWd1cmF0aW9u
DQotCQkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb3xXaW4zMiINCi0JCQkJCQlFeGNsdWRlZEZyb21C
dWlsZD0idHJ1ZSINCi0JCQkJCQk+DQotCQkJCQkJPFRvb2wNCi0JCQkJCQkJTmFtZT0iVkNDTENv
bXBpbGVyVG9vbCINCi0JCQkJCQkvPg0KLQkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJ
CTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiINCi0JCQkJ
CQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJCQk+DQotCQkJCQkJPFRvb2wNCi0JCQkJ
CQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCQkvPg0KLQkJCQkJPC9GaWxlQ29uZmln
dXJhdGlvbj4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KIAkJCQkJUmVsYXRpdmVQYXRoPSIk
KFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTSURC
QW55LmNwcCINCiAJCQkJCT4NCiAJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KQEAgLTQxMTQ4LDgg
KzQxMDQ0LDEyIEBACiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVs
YXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRT
b3VyY2VzXEpTSURCS2V5UmFuZ2UuY3BwIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91
dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTSURCRXZlbnQuaCIN
CiAJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIk
KFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTSURC
SW5kZXhSZXF1ZXN0LmNwcCINCisJCQkJCT4NCiAJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KIAkJ
CQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KIAkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0K
QEAgLTQxMjAwLDExICs0MTEwMCwxMSBAQAogCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KIAkJ
CQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0
RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNJREJLZXlSYW5nZS5oIg0K
KwkJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUp
XERlcml2ZWRTb3VyY2VzXEpTSURCSW5kZXhSZXF1ZXN0LmgiDQogCQkJCQk+DQotCQkJCTwvRmls
ZT4gICAgICAgIA0KKwkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9
IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNJ
REJPYmplY3RTdG9yZVJlcXVlc3QuY3BwIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91
dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTSURCS2V5UmFuZ2Uu
Y3BwIg0KIAkJCQkJPg0KIAkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQogCQkJCQkJTmFtZT0iRGVi
dWd8V2luMzIiDQpAQCAtNDEyNTYsMTEgKzQxMTU2LDExIEBACiAJCQkJCTwvRmlsZUNvbmZpZ3Vy
YXRpb24+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iJChX
ZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0lEQkV2
ZW50LmgiDQorCQkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9q
ZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNJREJLZXlSYW5nZS5oIg0KIAkJCQkJPg0KIAkJCQk8
L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGly
KVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNJREJJbmRleFJlcXVlc3QuY3Bw
Ig0KKwkJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5h
bWUpXERlcml2ZWRTb3VyY2VzXEpTSURCT2JqZWN0U3RvcmVSZXF1ZXN0LmNwcCINCiAJCQkJCT4N
CiAJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KIAkJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KQEAg
LTQxMzEyLDEwICs0MTIxMiw2IEBACiAJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQogCQkJCTwv
RmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIp
XG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0lEQkluZGV4UmVxdWVzdC5oIg0K
LQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQogCQkJCQlSZWxhdGl2ZVBhdGg9IiQo
V2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNJREJP
YmplY3RTdG9yZVJlcXVlc3QuY3BwIg0KIAkJCQkJPg0KIAkJCQkJPEZpbGVDb25maWd1cmF0aW9u
DQpAQCAtNDM1NjQsNiArNDM0NjAsMTEwIEBACiAJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQog
CQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3Nc
anNcSlNXZWJLaXRDU1NNYXRyaXhDdXN0b20uY3BwIg0KKwkJCQkJPg0KKwkJCQkJPEZpbGVDb25m
aWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQorCQkJCQkJRXhjbHVkZWRGcm9t
QnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xD
b21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJ
CQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KKwkJCQkJ
CUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJ
CQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1
cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWdfSW50
ZXJuYWx8V2luMzIiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0K
KwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4N
CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJ
CQkJCQlOYW1lPSJEZWJ1Z19DYWlyb3xXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0i
dHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVy
VG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxl
Q29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm98V2luMzIiDQorCQkJCQkJ
RXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJ
CU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3Vy
YXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z19BbGx8
V2luMzIiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJ
CTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJ
CTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJl
bGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNXZWJLaXRQb2ludEN1c3RvbS5jcHAiDQorCQkJ
CQk+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIN
CisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wN
CisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxl
Q29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJl
bGVhc2V8V2luMzIiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0K
KwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4N
CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJ
CQkJCQlOYW1lPSJEZWJ1Z19JbnRlcm5hbHxXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWls
ZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBp
bGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxG
aWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnX0NhaXJvfFdpbjMyIg0KKwkJCQkJ
CUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJ
CQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1
cmF0aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZV9D
YWlyb3xXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQor
CQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0K
KwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJ
CQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1
ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9v
bCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPC9GaWxlPg0K
KwkJCQk8RmlsZQ0KIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU1dlYlNvY2tl
dEN1c3RvbS5jcHAiDQogCQkJCQk+DQogCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCkBAIC00NjM3
OSw3ICs0NjM3OSw3IEBACiAJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN0b3JhZ2Vc
SURCS2V5UmFuZ2UuaCINCiAJCQkJPg0KLQkJCTwvRmlsZT4gICAgICANCisJCQk8L0ZpbGU+DQog
CQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdG9yYWdlXElEQk9iamVjdFN0b3JlLmgi
DQogCQkJCT4NCkBAIC00NjY0MiwyMiArNDY2NDIsNiBAQAogCQkJPC9GaWxlPg0KIAkJPC9GaWx0
ZXI+DQogCQk8RmlsdGVyDQotCQkJTmFtZT0ic3RyaW5ncyINCi0JCQk+DQotCQkJPEZpbGUNCi0J
CQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxwcml2YXRlXEphdmFT
Y3JpcHRDb3JlXEF0b21pY1N0cmluZy5jcHAiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZp
bGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxwcml2YXRl
XEphdmFTY3JpcHRDb3JlXFN0cmluZ0ltcGwuY3BwIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJ
CTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVccHJp
dmF0ZVxKYXZhU2NyaXB0Q29yZVxXVEZTdHJpbmcuY3BwIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0K
LQkJPC9GaWx0ZXI+DQotCQk8RmlsdGVyDQogCQkJTmFtZT0iYnJpZGdlIg0KIAkJCT4NCiAJCQk8
RmlsZQ0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3RrL2d0azJkcmF3aW5nLmMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ndGsvZ3RrMmRyYXdpbmcuYwkocmV2aXNpb24gNjE3MjIp
CisrKyBXZWJDb3JlL3BsYXRmb3JtL2d0ay9ndGsyZHJhd2luZy5jCSh3b3JraW5nIGNvcHkpCkBA
IC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSA8Z2RrL2dka3ByaXZhdGUuaD4KICNpbmNsdWRlICJn
dGtkcmF3aW5nLmgiCiAKKyNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBc3NlcnRpb25z
LmgiCiAKICNpbmNsdWRlIDxtYXRoLmg+CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2dn
aW5nTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbWFjL0xvZ2dpbmdNYWMu
bW0JKHJldmlzaW9uIDYxNzIyKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9nZ2luZ01hYy5t
bQkod29ya2luZyBjb3B5KQpAQCAtMjMsNiArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8K
IAorI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS93aW5jZS9TaGFyZWRUaW1lcldpbmNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3dpbmNlL1NoYXJlZFRpbWVyV2lu
Y2UuY3BwCShyZXZpc2lvbiA2MTcyMikKKysrIFdlYkNvcmUvcGxhdGZvcm0vd2luY2UvU2hhcmVk
VGltZXJXaW5jZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRl
IDx3aW5kb3dzLmg+CiAKIG5hbWVzcGFjZSBKU0MgewotSlNfRVhQT1JUREFUQSBleHRlcm4gdm9p
ZCogZ19zdGFja0Jhc2U7CitKU19FWFBPUlRFRF9TWU1CT0wgZXh0ZXJuIHZvaWQqIGdfc3RhY2tC
YXNlOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQXJyYXlCdWZmZXJWaWV3Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQXJyYXlCdWZmZXJWaWV3Q3VzdG9tLmNwcAkocmV2aXNpb24gNjE3MjIpCisrKyBX
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXJyYXlCdWZmZXJWaWV3Q3VzdG9tLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjcsNyArMjcsNiBAQAogCiAjaWYgRU5BQkxFKDNEX0NBTlZBUykKIAotI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJWaWV3LmgiCiAjaW5jbHVkZSAi
SlNJbnQ4QXJyYXkuaCIKICNpbmNsdWRlICJKU1VpbnQ4QXJyYXkuaCIKSW5kZXg6IFdlYkNvcmUv
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oCShyZXZpc2lvbiA2
MTcyMikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yMCw4ICsyMCw2IEBACiAjaWZuZGVmIFNWR0ZpbHRlckJ1aWxk
ZXJfaAogI2RlZmluZSBTVkdGaWx0ZXJCdWlsZGVyX2gKIAotI2luY2x1ZGUgImNvbmZpZy5oIgot
CiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCiAjaW5jbHVkZSAiQXRvbWljU3Ry
aW5nSGFzaC5oIgogI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgpJbmRleDogV2ViS2l0VG9vbHMv
d3gvYnVpbGQvc2V0dGluZ3MucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvd3gvYnVpbGQv
c2V0dGluZ3MucHkJKHJldmlzaW9uIDYxNzIzKQorKysgV2ViS2l0VG9vbHMvd3gvYnVpbGQvc2V0
dGluZ3MucHkJKHdvcmtpbmcgY29weSkKQEAgLTI3MSw3ICsyNzEsNyBAQAogICAgIGlmIGJ1aWxk
X3BvcnQgPT0gInd4IjoKICAgICAgICAgdXBkYXRlX3d4X2RlcHMoY29uZiwgd2tfcm9vdCwgbXN2
Y192ZXJzaW9uKQogICAgIAotICAgICAgICBjb25mLmVudi5hcHBlbmRfdmFsdWUoJ0NYWERFRklO
RVMnLCBbJ0JVSUxESU5HX1dYX189MScsICdKU19OT19FWFBPUlQnXSkKKyAgICAgICAgY29uZi5l
bnYuYXBwZW5kX3ZhbHVlKCdDWFhERUZJTkVTJywgWydCVUlMRElOR19XWF9fPTEnXSkKIAogICAg
ICAgICBjb25mLmVudlsnTElCX1dYV0VCS0lUJ10gPSBbJ3d4d2Via2l0J10KICAgICAgICAgY29u
Zi5lbnZbJ0NYWERFRklORVNfV1hXRUJLSVQnXSA9IFsnV1hVU0lOR0RMTF9XRUJLSVQnXQpAQCAt
Mjg3LDcgKzI4Nyw3IEBACiAgICAgICAgICAgICBjb25mLmVudlsnTElCX1dYJ10gPSB3eGxpYnMK
ICAgICAgICAgICAgIGNvbmYuZW52WydMSUJQQVRIX1dYJ10gPSB3eGxpYnBhdGhzCiAKLSAgICBj
b25mLmVudlsnTElCX0pTQ09SRSddID0gW2xpYnByZWZpeCArICdqc2NvcmUnXQorICAgIGNvbmYu
ZW52WydMSUJfSlNDT1JFJ10gPSBbJ2pzY29yZSddCiAgICAgY29uZi5lbnZbJ0xJQl9XRUJDT1JF
J10gPSBbbGlicHJlZml4ICsgJ3dlYmNvcmUnXQogCiAgICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0
c3dpdGgoJ2RhcndpbicpOgpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vY29uZmlnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vY29uZmlnLmgJKHJldmlzaW9uIDYxNzIyKQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vY29uZmlnLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDExICs0NCwxMSBA
QAogCiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CiAKLS8vIEpTX0VYUE9SVERBVEEgaXMgbmVl
ZGVkIHRvIGlubHVjZGUgd3RmL1dURlN0cmluZy5oLgorLy8gSlNfRVhQT1JURURfU1lNQk9MIGlz
IG5lZWRlZCB0byBpbmx1Y2RlIHd0Zi9XVEZTdHJpbmcuaC4KICNpZiBPUyhXSU5ET1dTKSAmJiAh
Q09NUElMRVIoR0NDKQotI2RlZmluZSBKU19FWFBPUlREQVRBIF9fZGVjbHNwZWMoZGxsaW1wb3J0
KQorI2RlZmluZSBKU19FWFBPUlRFRF9TWU1CT0wgX19kZWNsc3BlYyhkbGxpbXBvcnQpCiAjZWxz
ZQotI2RlZmluZSBKU19FWFBPUlREQVRBCisjZGVmaW5lIEpTX0VYUE9SVEVEX1NZTUJPTAogI2Vu
ZGlmCiAKICNlbmRpZiAvLyBjb25maWdfaApJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvY29uZmlnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY29u
ZmlnLmgJKHJldmlzaW9uIDYxNzIyKQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY29u
ZmlnLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDIwICsyNiwyMCBAQAogCiAjaW5jbHVkZSA8d3Rm
L1BsYXRmb3JtLmg+CiAKKyNpZiBPUyhXSU5ET1dTKSAmJiAhQ09NUElMRVIoR0NDKQorI2RlZmlu
ZSBKU19FWFBPUlRFRF9TWU1CT0wgX19kZWNsc3BlYyhkbGxpbXBvcnQpCisjZGVmaW5lIFdFQktJ
VF9FWFBPUlREQVRBIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQorI2Vsc2UKKyNkZWZpbmUgSlNfRVhQ
T1JURURfU1lNQk9MCisjZGVmaW5lIFdFQktJVF9FWFBPUlREQVRBCisjZW5kaWYKKwogI2lmZGVm
IF9fY3BsdXNwbHVzCiAjdW5kZWYgbmV3CiAjdW5kZWYgZGVsZXRlCiAjaW5jbHVkZSA8d3RmL0Zh
c3RNYWxsb2MuaD4KICNlbmRpZgogCi0jaWYgT1MoV0lORE9XUykgJiYgIUNPTVBJTEVSKEdDQykK
LSNkZWZpbmUgSlNfRVhQT1JUREFUQSBfX2RlY2xzcGVjKGRsbGltcG9ydCkKLSNkZWZpbmUgV0VC
S0lUX0VYUE9SVERBVEEgX19kZWNsc3BlYyhkbGxpbXBvcnQpCi0jZWxzZQotI2RlZmluZSBKU19F
WFBPUlREQVRBCi0jZGVmaW5lIFdFQktJVF9FWFBPUlREQVRBCi0jZW5kaWYKLQogI2lmIFBMQVRG
T1JNKFdJTikKICNkZWZpbmUgV1RGX1BMQVRGT1JNX0NGIDEgCiAjaWYgZGVmaW5lZChXSU5fQ0FJ
Uk8pCkluZGV4OiBXZWJLaXRUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9v
bHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2MTcyMykKKysrIFdlYktpdFRvb2xzL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDEwLTA2LTE3ICBLZXZpbiBPbGxpdmll
ciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFVzZSBKU19FWFBPUlRFRF9TWU1CT0wgdG8gZXhwb3J0IEpT
Q29yZSBzeW1ib2xzIG5lZWRlZCBieSBvdGhlciBXZWJLaXQgbGlicmFyaWVzLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc1NTEKKworICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL2NvbmZpZy5oOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL2NvbmZpZy5oOgorICAgICAgICAqIHd4L2J1aWxkL3NldHRpbmdzLnB5OgorCiAyMDEwLTA2
LTIzICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29tPgogCiAgICAgICAg
IFt3eF0gQnVpbGQgZml4LCBhZGRpbmcgbmV3IExheW91dFRlc3RDb250cm9sbGVyIG1ldGhvZHMg
YW5kIGVuYWJsaW5nIFNWR19GT1JFSUdOX09CSkVDVC4KSW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiA2MTcyMikKKysrIFdl
YktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTAtMDYt
MTcgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIEpTX0VYUE9SVEVEX1NZ
TUJPTCB0byBleHBvcnQgSlNDb3JlIHN5bWJvbHMgbmVlZGVkIGJ5IG90aGVyIFdlYktpdCBsaWJy
YXJpZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
NzU1MQorCisgICAgICAgICogV2ViS2l0MlByZWZpeC5oOgorCiAyMDEwLTA2LTIzICBBbmRlcnMg
Q2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFu
IEJlcm5zdGVpbi4KSW5kZXg6IFdlYktpdDIvV2ViS2l0MlByZWZpeC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdDIvV2ViS2l0MlByZWZpeC5oCShyZXZpc2lvbiA2MTcyMikKKysrIFdlYktpdDIvV2Vi
S2l0MlByZWZpeC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw5IEBACiAKICNpbmNsdWRl
IDx3dGYvUGxhdGZvcm0uaD4KICNpbmNsdWRlIDx3dGYvRGlzYWxsb3dDVHlwZS5oPgorCisjZGVm
aW5lIEpTX0VYUE9SVEVEX1NZTUJPTAorCiAjaWZkZWYgX19jcGx1c3BsdXMKICNpbmNsdWRlIDx3
dGYvRmFzdE1hbGxvYy5oPgogI2VuZGlmCkBAIC00Miw4ICs0NSw2IEBACiAjZGVmaW5lIFdURl9V
U0VfSlNDIDEKICNkZWZpbmUgV1RGX1VTRV9WOCAwCiAKLSNkZWZpbmUgSlNfRVhQT1JUREFUQQot
I2RlZmluZSBKU19FWFBPUlRDTEFTUwogI2RlZmluZSBXRUJLSVRfRVhQT1JUREFUQQogCiAjZWxp
ZiBkZWZpbmVkKFdJTjMyKSB8fCBkZWZpbmVkKF9XSU4zMikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61720</attachid>
            <date>2010-07-15 14:26:12 -0700</date>
            <delta_ts>2010-08-28 17:34:07 -0700</delta_ts>
            <desc>One more time, with hopefully Win and Qt fixes</desc>
            <filename>jscore_exports9.patch</filename>
            <type>text/plain</type>
            <size>208781</size>
            <attacher name="Kevin Ollivier">kevino</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkocmV2aXNpb24gNjM0NjEpCisrKyBK
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03MSwy
MSArNzEsMjEgQEAKIAogICAgICAgICBzdGF0aWMgdm9pZCBkdW1wU3RhdGlzdGljcygpOwogCi0g
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gYWRkUHJvcGVydHlUcmFuc2l0aW9u
KFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0
cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBzaXplX3QmIG9mZnNldCk7Ci0gICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gYWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlz
dGluZ1N0cnVjdHVyZShTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBvZmZz
ZXQpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0
dXJlPiBhZGRQcm9wZXJ0eVRyYW5zaXRpb24oU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUs
IHNpemVfdCYgb2Zmc2V0KTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHN0YXRpYyBQYXNz
UmVmUHRyPFN0cnVjdHVyZT4gYWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVy
ZShTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0
dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBvZmZzZXQpOwogICAgICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbihT
dHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHNpemVfdCYgb2Zmc2V0
KTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjaGFuZ2VQcm90b3R5cGVU
cmFuc2l0aW9uKFN0cnVjdHVyZSosIEpTVmFsdWUgcHJvdG90eXBlKTsKLSAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8U3RydWN0dXJlPiBkZXNwZWNpZnlGdW5jdGlvblRyYW5zaXRpb24oU3RydWN0
dXJlKiwgY29uc3QgSWRlbnRpZmllciYpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgc3Rh
dGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjaGFuZ2VQcm90b3R5cGVUcmFuc2l0aW9uKFN0cnVj
dHVyZSosIEpTVmFsdWUgcHJvdG90eXBlKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHN0
YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gZGVzcGVjaWZ5RnVuY3Rpb25UcmFuc2l0aW9uKFN0
cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXImKTsKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8
U3RydWN0dXJlPiBnZXR0ZXJTZXR0ZXJUcmFuc2l0aW9uKFN0cnVjdHVyZSopOwogICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHRvQ2FjaGVhYmxlRGljdGlvbmFyeVRyYW5zaXRp
b24oU3RydWN0dXJlKik7CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gdG9V
bmNhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKFN0cnVjdHVyZSopOwogCiAgICAgICAgIFBh
c3NSZWZQdHI8U3RydWN0dXJlPiBmbGF0dGVuRGljdGlvbmFyeVN0cnVjdHVyZShKU09iamVjdCop
OwogCi0gICAgICAgIH5TdHJ1Y3R1cmUoKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIH5T
dHJ1Y3R1cmUoKTsKIAogICAgICAgICAvLyBUaGVzZSBzaG91bGQgYmUgdXNlZCB3aXRoIGNhdXRp
b24uICAKLSAgICAgICAgc2l6ZV90IGFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNw
ZWNpZmljVmFsdWUpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgc2l6ZV90IGFkZFByb3Bl
cnR5V2l0aG91dFRyYW5zaXRpb24oY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNp
Z25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpOwogICAgICAgICBzaXplX3Qg
cmVtb3ZlUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUpOwogICAgICAgICB2b2lkIHNldFByb3RvdHlwZVdpdGhvdXRUcmFuc2l0aW9uKEpTVmFs
dWUgcHJvdG90eXBlKSB7IG1fcHJvdG90eXBlID0gcHJvdG90eXBlOyB9CiAgICAgICAgIApAQCAt
MTA2LDcgKzEwNiw3IEBACiAgICAgICAgIGJvb2wgaXNVc2luZ0lubGluZVN0b3JhZ2UoKSBjb25z
dDsKIAogICAgICAgICBzaXplX3QgZ2V0KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7
Ci0gICAgICAgIHNpemVfdCBnZXQoY29uc3QgVVN0cmluZzo6UmVwKiByZXAsIHVuc2lnbmVkJiBh
dHRyaWJ1dGVzLCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVlKTsKKyAgICAgICAgSlNfRVhQT1JURURf
U1lNQk9MIHNpemVfdCBnZXQoY29uc3QgVVN0cmluZzo6UmVwKiByZXAsIHVuc2lnbmVkJiBhdHRy
aWJ1dGVzLCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVlKTsKICAgICAgICAgc2l6ZV90IGdldChjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzLCBKU0NlbGwq
JiBzcGVjaWZpY1ZhbHVlKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoIXByb3BlcnR5
TmFtZS5pc051bGwoKSk7CkBAIC0xMTYsNyArMTE2LDcgQEAKICAgICAgICAgewogICAgICAgICAg
ICAgcmV0dXJuIG1fc3BlY2lmaWNWYWx1ZUluUHJldmlvdXMgPT0gc3BlY2lmaWNWYWx1ZTsKICAg
ICAgICAgfQotICAgICAgICBib29sIGhhc1RyYW5zaXRpb24oVVN0cmluZzo6UmVwKiwgdW5zaWdu
ZWQgYXR0cmlidXRlcyk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBib29sIGhhc1RyYW5z
aXRpb24oVVN0cmluZzo6UmVwKiwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAgICAgIGJvb2wg
aGFzVHJhbnNpdGlvbihjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0
dHJpYnV0ZXMpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBoYXNUcmFuc2l0aW9uKHBy
b3BlcnR5TmFtZS5fdXN0cmluZy5yZXAoKSwgYXR0cmlidXRlcyk7CkBAIC0xMzIsNyArMTMyLDcg
QEAKICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJv
cGVydHlUYWJsZSA/ICFtX3Byb3BlcnR5VGFibGUtPmtleUNvdW50IDogbV9vZmZzZXQgPT0gbm9P
ZmZzZXQ7IH0KIAotICAgICAgICB2b2lkIGRlc3BlY2lmeURpY3Rpb25hcnlGdW5jdGlvbihjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wg
dm9pZCBkZXNwZWNpZnlEaWN0aW9uYXJ5RnVuY3Rpb24oY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lKTsKICAgICAgICAgdm9pZCBkaXNhYmxlU3BlY2lmaWNGdW5jdGlvblRyYWNraW5nKCkg
eyBtX3NwZWNpZmljRnVuY3Rpb25UaHJhc2hDb3VudCA9IG1heFNwZWNpZmljRnVuY3Rpb25UaHJh
c2hDb3VudDsgfQogCiAgICAgICAgIHZvaWQgc2V0RW51bWVyYXRpb25DYWNoZShKU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yKiBlbnVtZXJhdGlvbkNhY2hlKTsgLy8gRGVmaW5lZCBpbiBKU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yLmguCkBAIC0xNDIsNyArMTQyLDcgQEAKICAgICAgICAgCiAgICAgcHJpdmF0
ZToKIAotICAgICAgICBTdHJ1Y3R1cmUoSlNWYWx1ZSBwcm90b3R5cGUsIGNvbnN0IFR5cGVJbmZv
JiwgdW5zaWduZWQgYW5vbnltb3VzU2xvdENvdW50KTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lN
Qk9MIFN0cnVjdHVyZShKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8mLCB1bnNpZ25l
ZCBhbm9ueW1vdXNTbG90Q291bnQpOwogICAgICAgICAKICAgICAgICAgdHlwZWRlZiBlbnVtIHsg
CiAgICAgICAgICAgICBOb25lRGljdGlvbmFyeUtpbmQgPSAwLApAQCAtMTY2LDcgKzE2Niw3IEBA
CiAgICAgICAgIHZvaWQgZGVzcGVjaWZ5QWxsRnVuY3Rpb25zKCk7CiAKICAgICAgICAgUHJvcGVy
dHlNYXBIYXNoVGFibGUqIGNvcHlQcm9wZXJ0eVRhYmxlKCk7Ci0gICAgICAgIHZvaWQgbWF0ZXJp
YWxpemVQcm9wZXJ0eU1hcCgpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBtYXRl
cmlhbGl6ZVByb3BlcnR5TWFwKCk7CiAgICAgICAgIHZvaWQgbWF0ZXJpYWxpemVQcm9wZXJ0eU1h
cElmTmVjZXNzYXJ5KCkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKG1fcHJvcGVydHlUYWJs
ZSB8fCAhbV9wcmV2aW91cykgICAgICAgICAgICAgCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0
cmluZy5oCShyZXZpc2lvbiA2MzQ2MSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJp
bmcuaAkod29ya2luZyBjb3B5KQpAQCAtNjIsNyArNjIsNyBAQAogICAgIHR5cGVkZWYgdm9pZCAo
KkpTU3RyaW5nRmluYWxpemVyQ2FsbGJhY2spKEpTU3RyaW5nKiwgdm9pZCogY29udGV4dCk7CiAg
ICAgSlNTdHJpbmcqIGpzU3RyaW5nV2l0aEZpbmFsaXplcihFeGVjU3RhdGUqLCBjb25zdCBVU3Ry
aW5nJiwgSlNTdHJpbmdGaW5hbGl6ZXJDYWxsYmFjayBjYWxsYmFjaywgdm9pZCogY29udGV4dCk7
CiAKLSAgICBjbGFzcyBKU19FWFBPUlRDTEFTUyBKU1N0cmluZyA6IHB1YmxpYyBKU0NlbGwgewor
ICAgIGNsYXNzIEpTU3RyaW5nIDogcHVibGljIEpTQ2VsbCB7CiAgICAgcHVibGljOgogICAgICAg
ICBmcmllbmQgY2xhc3MgSklUOwogICAgICAgICBmcmllbmQgY2xhc3MgSlNHbG9iYWxEYXRhOwpA
QCAtMzIxLDcgKzMyMSw3IEBACiAgICAgICAgICAgICAgICAgbV9vdGhlci5tX2ZpbmFsaXplckNh
bGxiYWNrKHRoaXMsIG1fb3RoZXIubV9maW5hbGl6ZXJDb250ZXh0KTsKICAgICAgICAgfQogCi0g
ICAgICAgIGNvbnN0IFVTdHJpbmcmIHZhbHVlKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKKyAgICAg
ICAgSlNfRVhQT1JURURfU1lNQk9MIGNvbnN0IFVTdHJpbmcmIHZhbHVlKEV4ZWNTdGF0ZSogZXhl
YykgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAgaWYgKGlzUm9wZSgpKQogICAgICAgICAg
ICAgICAgIHJlc29sdmVSb3BlKGV4ZWMpOwpAQCAtMzU1LDcgKzM1NSw3IEBACiAgICAgICAgIHsK
ICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgcmVzb2x2ZVJvcGUoRXhlY1N0YXRlKikgY29uc3Q7
CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIHJlc29sdmVSb3BlKEV4ZWNTdGF0ZSop
IGNvbnN0OwogCiAgICAgICAgIHZvaWQgYXBwZW5kU3RyaW5nSW5Db25zdHJ1Y3QodW5zaWduZWQm
IGluZGV4LCBjb25zdCBVU3RyaW5nJiBzdHJpbmcpCiAgICAgICAgIHsKQEAgLTM5MywxOSArMzkz
LDE5IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIEpTVmFs
dWUgdG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkgY29uc3Q7
Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBnZXRQcmltaXRpdmVOdW1iZXIoRXhlY1N0YXRlKiwgZG91
YmxlJiBudW1iZXIsIEpTVmFsdWUmIHZhbHVlKTsKLSAgICAgICAgdmlydHVhbCBib29sIHRvQm9v
bGVhbihFeGVjU3RhdGUqKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCBkb3VibGUgdG9OdW1iZXIo
RXhlY1N0YXRlKikgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgSlNPYmplY3QqIHRvT2JqZWN0KEV4
ZWNTdGF0ZSopIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIFVTdHJpbmcgdG9TdHJpbmcoRXhlY1N0
YXRlKikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIEpTVmFsdWUg
dG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkgY29uc3Q7Cisg
ICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIGJvb2wgZ2V0UHJpbWl0aXZlTnVtYmVy
KEV4ZWNTdGF0ZSosIGRvdWJsZSYgbnVtYmVyLCBKU1ZhbHVlJiB2YWx1ZSk7CisgICAgICAgIEpT
X0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIGJvb2wgdG9Cb29sZWFuKEV4ZWNTdGF0ZSopIGNvbnN0
OworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCBkb3VibGUgdG9OdW1iZXIoRXhl
Y1N0YXRlKikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIEpTT2Jq
ZWN0KiB0b09iamVjdChFeGVjU3RhdGUqKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JURURfU1lN
Qk9MIHZpcnR1YWwgVVN0cmluZyB0b1N0cmluZyhFeGVjU3RhdGUqKSBjb25zdDsKIAotICAgICAg
ICB2aXJ0dWFsIEpTT2JqZWN0KiB0b1RoaXNPYmplY3QoRXhlY1N0YXRlKikgY29uc3Q7CisgICAg
ICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIEpTT2JqZWN0KiB0b1RoaXNPYmplY3QoRXhl
Y1N0YXRlKikgY29uc3Q7CiAKICAgICAgICAgLy8gQWN0dWFsbHkgZ2V0UHJvcGVydHlTbG90LCBu
b3QgZ2V0T3duUHJvcGVydHlTbG90IChzZWUgSlNDZWxsKS4KLSAgICAgICAgdmlydHVhbCBib29s
IGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7
Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRl
KiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOworICAgICAgICBKU19F
WFBPUlRFRF9TWU1CT0wgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUq
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgICAg
ICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVj
U3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgICAgICBK
U19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKICAg
ICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfbWF4SW50ZXJuYWxSb3BlTGVuZ3RoID0gMzsK
IApJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2aXNpb24gNjM0NjEpCisrKyBK
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTc0LDI2
ICs3NCwyNiBAQAogICAgICAgICBmcmllbmQgY2xhc3MgQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6
ZXI7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKU0Nl
bGw7Ci0gICAgICAgIGZyaWVuZCB2b2lkIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSwgSlNPYmplY3QqIHRoaXNPYmosIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KTsKKyAgICAgICAg
ZnJpZW5kIEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSwgSlNPYmplY3QqIHRoaXNPYmos
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KTsKIAog
ICAgIHB1YmxpYzoKICAgICAgICAgZXhwbGljaXQgSlNPYmplY3QoTm9uTnVsbFBhc3NSZWZQdHI8
U3RydWN0dXJlPik7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIG1hcmtDaGlsZHJlbihNYXJrU3Rh
Y2smKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgdm9pZCBtYXJrQ2hpbGRy
ZW4oTWFya1N0YWNrJik7CiAgICAgICAgIEFMV0FZU19JTkxJTkUgdm9pZCBtYXJrQ2hpbGRyZW5E
aXJlY3QoTWFya1N0YWNrJiBtYXJrU3RhY2spOwogCiAgICAgICAgIC8vIFRoZSBpbmxpbmUgdmly
dHVhbCBkZXN0cnVjdG9yIGNhbm5vdCBiZSB0aGUgZmlyc3QgdmlydHVhbCBmdW5jdGlvbiBkZWNs
YXJlZAogICAgICAgICAvLyBpbiB0aGUgY2xhc3MgYXMgaXQgcmVzdWx0cyBpbiB0aGUgdnRhYmxl
IGJlaW5nIGdlbmVyYXRlZCBhcyBhIHdlYWsgc3ltYm9sCiAgICAgICAgIHZpcnR1YWwgfkpTT2Jq
ZWN0KCk7CiAKLSAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUoKSBjb25zdDsKKyAgICAgICAgSlNf
RVhQT1JURURfU1lNQk9MIEpTVmFsdWUgcHJvdG90eXBlKCkgY29uc3Q7CiAgICAgICAgIHZvaWQg
c2V0UHJvdG90eXBlKEpTVmFsdWUgcHJvdG90eXBlKTsKICAgICAgICAgYm9vbCBzZXRQcm90b3R5
cGVXaXRoQ3ljbGVDaGVjayhKU1ZhbHVlIHByb3RvdHlwZSk7CiAgICAgICAgIAogICAgICAgICB2
b2lkIHNldFN0cnVjdHVyZShOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+KTsKICAgICAgICAg
U3RydWN0dXJlKiBpbmhlcml0b3JJRCgpOwogCi0gICAgICAgIHZpcnR1YWwgVVN0cmluZyBjbGFz
c05hbWUoKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgVVN0cmlu
ZyBjbGFzc05hbWUoKSBjb25zdDsKIAogICAgICAgICBKU1ZhbHVlIGdldChFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpIGNvbnN0OwogICAgICAgICBKU1ZhbHVlIGdl
dChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpIGNvbnN0OwpAQCAtMTAyLDQ1ICsx
MDIsNDUgQEAKICAgICAgICAgYm9vbCBnZXRQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgdW5zaWdu
ZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgYm9vbCBnZXRQcm9wZXJ0
eURlc2NyaXB0b3IoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eURlc2NyaXB0b3ImKTsKIAotICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90Jik7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0
YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgdmly
dHVhbCBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJP
TCB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIEpTX0VYUE9SVEVE
X1NZTUJPTCB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIHVuc2ln
bmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZ
TUJPTCB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSosIGNv
bnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIAotICAgICAgICB2aXJ0dWFs
IHZvaWQgcHV0KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwdXQo
RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlKTsKKyAgICAg
ICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgdm9pZCBwdXQoRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
KTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgdm9pZCBwdXQoRXhlY1N0YXRl
KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlKTsKIAotICAgICAgICB2aXJ0
dWFsIHZvaWQgcHV0V2l0aEF0dHJpYnV0ZXMoSlNHbG9iYWxEYXRhKiwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBib29s
IGNoZWNrUmVhZE9ubHksIFB1dFByb3BlcnR5U2xvdCYgc2xvdCk7Ci0gICAgICAgIHZpcnR1YWwg
dm9pZCBwdXRXaXRoQXR0cmlidXRlcyhKU0dsb2JhbERhdGEqLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwotICAgICAg
ICB2aXJ0dWFsIHZvaWQgcHV0V2l0aEF0dHJpYnV0ZXMoSlNHbG9iYWxEYXRhKiwgdW5zaWduZWQg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKLSAgICAg
ICAgdmlydHVhbCB2b2lkIHB1dFdpdGhBdHRyaWJ1dGVzKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcywg
Ym9vbCBjaGVja1JlYWRPbmx5LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpOwotICAgICAgICB2aXJ0
dWFsIHZvaWQgcHV0V2l0aEF0dHJpYnV0ZXMoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKLSAgICAg
ICAgdmlydHVhbCB2b2lkIHB1dFdpdGhBdHRyaWJ1dGVzKEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAgICAg
IEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIHZvaWQgcHV0V2l0aEF0dHJpYnV0ZXMoSlNHbG9i
YWxEYXRhKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzLCBib29sIGNoZWNrUmVhZE9ubHksIFB1dFByb3BlcnR5U2xvdCYg
c2xvdCk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIHZvaWQgcHV0V2l0aEF0
dHJpYnV0ZXMoSlNHbG9iYWxEYXRhKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgSlNfRVhQT1JURURf
U1lNQk9MIHZpcnR1YWwgdm9pZCBwdXRXaXRoQXR0cmlidXRlcyhKU0dsb2JhbERhdGEqLCB1bnNp
Z25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwor
ICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCB2b2lkIHB1dFdpdGhBdHRyaWJ1dGVz
KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgYm9vbCBjaGVja1JlYWRPbmx5LCBQdXRQcm9wZXJ0eVNs
b3QmIHNsb3QpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCB2b2lkIHB1dFdp
dGhBdHRyaWJ1dGVzKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAgICAgIEpTX0VYUE9SVEVE
X1NZTUJPTCB2aXJ0dWFsIHZvaWQgcHV0V2l0aEF0dHJpYnV0ZXMoRXhlY1N0YXRlKiwgdW5zaWdu
ZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKIAog
ICAgICAgICBib29sIHByb3BlcnR5SXNFbnVtZXJhYmxlKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSkgY29uc3Q7CiAKLSAgICAgICAgYm9vbCBoYXNQcm9wZXJ0eShF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpIGNvbnN0OwotICAgICAg
ICBib29sIGhhc1Byb3BlcnR5KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSkgY29u
c3Q7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBib29sIGhhc1Byb3BlcnR5KEV4ZWNTdGF0
ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkgY29uc3Q7CisgICAgICAgIEpTX0VY
UE9SVEVEX1NZTUJPTCBib29sIGhhc1Byb3BlcnR5KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3Bl
cnR5TmFtZSkgY29uc3Q7CiAgICAgICAgIGJvb2wgaGFzT3duUHJvcGVydHkoRXhlY1N0YXRlKiwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKSBjb25zdDsKIAotICAgICAgICB2aXJ0dWFs
IGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lKTsKLSAgICAgICAgdmlydHVhbCBib29sIGRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSos
IHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0
dWFsIGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgYm9vbCBkZWxl
dGVQcm9wZXJ0eShFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwogCi0gICAgICAg
IHZpcnR1YWwgSlNWYWx1ZSBkZWZhdWx0VmFsdWUoRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0
aXZlVHlwZSkgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIEpTVmFs
dWUgZGVmYXVsdFZhbHVlKEV4ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpIGNvbnN0
OwogCi0gICAgICAgIHZpcnR1YWwgYm9vbCBoYXNJbnN0YW5jZShFeGVjU3RhdGUqLCBKU1ZhbHVl
LCBKU1ZhbHVlIHByb3RvdHlwZVByb3BlcnR5KTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9M
IHZpcnR1YWwgYm9vbCBoYXNJbnN0YW5jZShFeGVjU3RhdGUqLCBKU1ZhbHVlLCBKU1ZhbHVlIHBy
b3RvdHlwZVByb3BlcnR5KTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJvcGVydHlOYW1l
cyhFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSBtb2RlID0g
RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBnZXRPd25Q
cm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25N
b2RlIG1vZGUgPSBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICAgICAgSlNfRVhQT1JU
RURfU1lNQk9MIHZpcnR1YWwgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlIG1vZGUgPSBFeGNsdWRlRG9udEVudW1Qcm9w
ZXJ0aWVzKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgdm9pZCBnZXRPd25Q
cm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25N
b2RlIG1vZGUgPSBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKIAogICAgICAgICB2aXJ0dWFs
IEpTVmFsdWUgdG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSA9
IE5vUHJlZmVyZW5jZSkgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBnZXRQcmltaXRpdmVO
dW1iZXIoRXhlY1N0YXRlKiwgZG91YmxlJiBudW1iZXIsIEpTVmFsdWUmIHZhbHVlKTsKLSAgICAg
ICAgdmlydHVhbCBib29sIHRvQm9vbGVhbihFeGVjU3RhdGUqKSBjb25zdDsKLSAgICAgICAgdmly
dHVhbCBkb3VibGUgdG9OdW1iZXIoRXhlY1N0YXRlKikgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwg
VVN0cmluZyB0b1N0cmluZyhFeGVjU3RhdGUqKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCBKU09i
amVjdCogdG9PYmplY3QoRXhlY1N0YXRlKikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZ
TUJPTCB2aXJ0dWFsIGJvb2wgZ2V0UHJpbWl0aXZlTnVtYmVyKEV4ZWNTdGF0ZSosIGRvdWJsZSYg
bnVtYmVyLCBKU1ZhbHVlJiB2YWx1ZSk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0
dWFsIGJvb2wgdG9Cb29sZWFuKEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICBKU19FWFBPUlRF
RF9TWU1CT0wgdmlydHVhbCBkb3VibGUgdG9OdW1iZXIoRXhlY1N0YXRlKikgY29uc3Q7CisgICAg
ICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIFVTdHJpbmcgdG9TdHJpbmcoRXhlY1N0YXRl
KikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIEpTT2JqZWN0KiB0
b09iamVjdChFeGVjU3RhdGUqKSBjb25zdDsKIAotICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiB0
b1RoaXNPYmplY3QoRXhlY1N0YXRlKikgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgSlNPYmplY3Qq
IHVud3JhcHBlZE9iamVjdCgpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCBK
U09iamVjdCogdG9UaGlzT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICBKU19FWFBP
UlRFRF9TWU1CT0wgdmlydHVhbCBKU09iamVjdCogdW53cmFwcGVkT2JqZWN0KCk7CiAKICAgICAg
ICAgYm9vbCBnZXRQcm9wZXJ0eVNwZWNpZmljVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQ2VsbComIHNwZWNpZmljRnVuY3Rpb24pIGNvbnN0
OwogCkBAIC0xNzUsMTYgKzE3NSwxNiBAQAogICAgICAgICBib29sIGhhc0N1c3RvbVByb3BlcnRp
ZXMoKSB7IHJldHVybiAhbV9zdHJ1Y3R1cmUtPmlzRW1wdHkoKTsgfQogICAgICAgICBib29sIGhh
c0dldHRlclNldHRlclByb3BlcnRpZXMoKSB7IHJldHVybiBtX3N0cnVjdHVyZS0+aGFzR2V0dGVy
U2V0dGVyUHJvcGVydGllcygpOyB9CiAKLSAgICAgICAgdm9pZCBwdXREaXJlY3QoY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyLCBib29s
IGNoZWNrUmVhZE9ubHksIFB1dFByb3BlcnR5U2xvdCYgc2xvdCk7Ci0gICAgICAgIHZvaWQgcHV0
RGlyZWN0KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5z
aWduZWQgYXR0ciA9IDApOwotICAgICAgICB2b2lkIHB1dERpcmVjdChjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgICAg
ICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBwdXREaXJlY3QoY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyLCBib29sIGNoZWNrUmVhZE9u
bHksIFB1dFByb3BlcnR5U2xvdCYgc2xvdCk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2
b2lkIHB1dERpcmVjdChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFs
dWUsIHVuc2lnbmVkIGF0dHIgPSAwKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZvaWQg
cHV0RGlyZWN0KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwg
UHV0UHJvcGVydHlTbG90Jik7CiAKLSAgICAgICAgdm9pZCBwdXREaXJlY3RGdW5jdGlvbihjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQ2VsbCogdmFsdWUsIHVuc2lnbmVkIGF0dHIg
PSAwKTsKLSAgICAgICAgdm9pZCBwdXREaXJlY3RGdW5jdGlvbihjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIEpTQ2VsbCogdmFsdWUsIHVuc2lnbmVkIGF0dHIsIGJvb2wgY2hlY2tSZWFk
T25seSwgUHV0UHJvcGVydHlTbG90JiBzbG90KTsKLSAgICAgICAgdm9pZCBwdXREaXJlY3RGdW5j
dGlvbihFeGVjU3RhdGUqIGV4ZWMsIEludGVybmFsRnVuY3Rpb24qIGZ1bmN0aW9uLCB1bnNpZ25l
ZCBhdHRyID0gMCk7Ci0gICAgICAgIHZvaWQgcHV0RGlyZWN0RnVuY3Rpb24oRXhlY1N0YXRlKiBl
eGVjLCBKU0Z1bmN0aW9uKiBmdW5jdGlvbiwgdW5zaWduZWQgYXR0ciA9IDApOworICAgICAgICBK
U19FWFBPUlRFRF9TWU1CT0wgdm9pZCBwdXREaXJlY3RGdW5jdGlvbihjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIEpTQ2VsbCogdmFsdWUsIHVuc2lnbmVkIGF0dHIgPSAwKTsKKyAgICAg
ICAgSlNfRVhQT1JURURfU1lNQk9MIHZvaWQgcHV0RGlyZWN0RnVuY3Rpb24oY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBKU0NlbGwqIHZhbHVlLCB1bnNpZ25lZCBhdHRyLCBib29sIGNo
ZWNrUmVhZE9ubHksIFB1dFByb3BlcnR5U2xvdCYgc2xvdCk7CisgICAgICAgIEpTX0VYUE9SVEVE
X1NZTUJPTCB2b2lkIHB1dERpcmVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSW50ZXJuYWxG
dW5jdGlvbiogZnVuY3Rpb24sIHVuc2lnbmVkIGF0dHIgPSAwKTsKKyAgICAgICAgSlNfRVhQT1JU
RURfU1lNQk9MIHZvaWQgcHV0RGlyZWN0RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU0Z1bmN0
aW9uKiBmdW5jdGlvbiwgdW5zaWduZWQgYXR0ciA9IDApOwogCi0gICAgICAgIHZvaWQgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24oY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyID0gMCk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJP
TCB2b2lkIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0ciA9IDApOwogICAgICAgICB2b2lk
IHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBKU0NlbGwqIHZhbHVlLCB1bnNpZ25lZCBhdHRyID0gMCk7CiAgICAgICAgIHZv
aWQgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihFeGVjU3RhdGUqIGV4ZWMsIElu
dGVybmFsRnVuY3Rpb24qIGZ1bmN0aW9uLCB1bnNpZ25lZCBhdHRyID0gMCk7CiAgICAgICAgIHZv
aWQgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpT
RnVuY3Rpb24qIGZ1bmN0aW9uLCB1bnNpZ25lZCBhdHRyID0gMCk7CkBAIC0xOTMsMTMgKzE5Mywx
MyBAQAogICAgICAgICBKU1ZhbHVlIGdldERpcmVjdE9mZnNldChzaXplX3Qgb2Zmc2V0KSBjb25z
dCB7IHJldHVybiBKU1ZhbHVlOjpkZWNvZGUocHJvcGVydHlTdG9yYWdlKClbb2Zmc2V0XSk7IH0K
ICAgICAgICAgdm9pZCBwdXREaXJlY3RPZmZzZXQoc2l6ZV90IG9mZnNldCwgSlNWYWx1ZSB2YWx1
ZSkgeyBwcm9wZXJ0eVN0b3JhZ2UoKVtvZmZzZXRdID0gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsg
fQogCi0gICAgICAgIHZvaWQgZmlsbEdldHRlclByb3BlcnR5U2xvdChQcm9wZXJ0eVNsb3QmLCBK
U1ZhbHVlKiBsb2NhdGlvbik7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIGZpbGxH
ZXR0ZXJQcm9wZXJ0eVNsb3QoUHJvcGVydHlTbG90JiwgSlNWYWx1ZSogbG9jYXRpb24pOwogCi0g
ICAgICAgIHZpcnR1YWwgdm9pZCBkZWZpbmVHZXR0ZXIoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBKU09iamVjdCogZ2V0dGVyRnVuY3Rpb24sIHVuc2lnbmVkIGF0
dHJpYnV0ZXMgPSAwKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRlZmluZVNldHRlcihFeGVjU3Rh
dGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBzZXR0ZXJGdW5j
dGlvbiwgdW5zaWduZWQgYXR0cmlidXRlcyA9IDApOwotICAgICAgICB2aXJ0dWFsIEpTVmFsdWUg
bG9va3VwR2V0dGVyKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7
Ci0gICAgICAgIHZpcnR1YWwgSlNWYWx1ZSBsb29rdXBTZXR0ZXIoRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKLSAgICAgICAgdmlydHVhbCBib29sIGRlZmluZU93
blByb3BlcnR5KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CisgICAgICAgIEpTX0VYUE9SVEVE
X1NZTUJPTCB2aXJ0dWFsIHZvaWQgZGVmaW5lR2V0dGVyKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgSlNPYmplY3QqIGdldHRlckZ1bmN0aW9uLCB1bnNpZ25lZCBh
dHRyaWJ1dGVzID0gMCk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIHZvaWQg
ZGVmaW5lU2V0dGVyKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
SlNPYmplY3QqIHNldHRlckZ1bmN0aW9uLCB1bnNpZ25lZCBhdHRyaWJ1dGVzID0gMCk7CisgICAg
ICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIEpTVmFsdWUgbG9va3VwR2V0dGVyKEV4ZWNT
dGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CisgICAgICAgIEpTX0VYUE9S
VEVEX1NZTUJPTCB2aXJ0dWFsIEpTVmFsdWUgbG9va3VwU2V0dGVyKEV4ZWNTdGF0ZSosIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2
aXJ0dWFsIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsK
IAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNHbG9iYWxPYmplY3QoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNWYXJpYWJsZU9iamVjdCgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CkBAIC0yMDgsNyArMjA4LDcgQEAKIAogICAgICAgICB2aXJ0dWFsIENv
bXBsVHlwZSBleGNlcHRpb25UeXBlKCkgY29uc3QgeyByZXR1cm4gVGhyb3c7IH0KIAotICAgICAg
ICB2b2lkIGFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKHNpemVfdCBvbGRTaXplLCBzaXplX3QgbmV3
U2l6ZSk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIGFsbG9jYXRlUHJvcGVydHlT
dG9yYWdlKHNpemVfdCBvbGRTaXplLCBzaXplX3QgbmV3U2l6ZSk7CiAgICAgICAgIHZvaWQgYWxs
b2NhdGVQcm9wZXJ0eVN0b3JhZ2VJbmxpbmUoc2l6ZV90IG9sZFNpemUsIHNpemVfdCBuZXdTaXpl
KTsKICAgICAgICAgYm9vbCBpc1VzaW5nSW5saW5lU3RvcmFnZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c3RydWN0dXJlLT5pc1VzaW5nSW5saW5lU3RvcmFnZSgpOyB9CiAKQEAgLTI2NSw3ICsyNjUsNyBA
QAogICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SlNWYWx1ZSo+KCZwcm9wZXJ0
eVN0b3JhZ2UoKVtvZmZzZXRdKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgcHV0RGlyZWN0
SW50ZXJuYWwoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1
bnNpZ25lZCBhdHRyLCBib29sIGNoZWNrUmVhZE9ubHksIFB1dFByb3BlcnR5U2xvdCYgc2xvdCwg
SlNDZWxsKik7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIHB1dERpcmVjdEludGVy
bmFsKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWdu
ZWQgYXR0ciwgYm9vbCBjaGVja1JlYWRPbmx5LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTQ2Vs
bCopOwogICAgICAgICB2b2lkIHB1dERpcmVjdEludGVybmFsKEpTR2xvYmFsRGF0YSYsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0ciwg
Ym9vbCBjaGVja1JlYWRPbmx5LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpOwogICAgICAgICB2b2lk
IHB1dERpcmVjdEludGVybmFsKEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0ciA9IDApOwogCkBAIC0zMTIsNyAr
MzEyLDcgQEAKICAgICBtX3N0cnVjdHVyZS0+ZGVyZWYoKTsKIH0KIAotaW5saW5lIEpTVmFsdWUg
SlNPYmplY3Q6OnByb3RvdHlwZSgpIGNvbnN0CitKU19FWFBPUlRFRF9TWU1CT0wgaW5saW5lIEpT
VmFsdWUgSlNPYmplY3Q6OnByb3RvdHlwZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc3RydWN0
dXJlLT5zdG9yZWRQcm90b3R5cGUoKTsKIH0KQEAgLTM5Miw3ICszOTIsNyBAQAogLy8gSXQgbWF5
IHNlZW0gY3JhenkgdG8gaW5saW5lIGEgZnVuY3Rpb24gdGhpcyBsYXJnZSwgZXNwZWNpYWxseSBh
IHZpcnR1YWwgZnVuY3Rpb24sCiAvLyBidXQgaXQgbWFrZXMgYSBiaWcgZGlmZmVyZW5jZSB0byBw
cm9wZXJ0eSBsb29rdXAgdGhhdCBkZXJpdmVkIGNsYXNzZXMgY2FuIGlubGluZSB0aGVpcgogLy8g
YmFzZSBjbGFzcyBjYWxsIHRvIHRoaXMuCi1BTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6Omdl
dE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorSlNfRVhQT1JURURfU1lNQk9MIEFMV0FZU19J
TkxJTkUgYm9vbCBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAg
ICAgcmV0dXJuIGlubGluZUdldE93blByb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOwogfQpAQCAtNTc3LDcgKzU3Nyw3IEBACiAgICAgcHV0RGlyZWN0SW50ZXJuYWwocHJvcGVy
dHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgZmFsc2UsIHNsb3QsIGdldEpTRnVuY3Rpb24oZ2xv
YmFsRGF0YSwgdmFsdWUpKTsKIH0KIAotaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdChj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0
dHJpYnV0ZXMsIGJvb2wgY2hlY2tSZWFkT25seSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorSlNf
RVhQT1JURURfU1lNQk9MIGlubGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3QoY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVz
LCBib29sIGNoZWNrUmVhZE9ubHksIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBBU1NF
UlQodmFsdWUpOwogICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVhcDo6aGVhcCh2
YWx1ZSkgPT0gSGVhcDo6aGVhcCh0aGlzKSk7CkBAIC01ODUsMjkgKzU4NSwyOSBAQAogICAgIHB1
dERpcmVjdEludGVybmFsKHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIGNoZWNrUmVh
ZE9ubHksIHNsb3QsIDApOwogfQogCi1pbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0KGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0
cmlidXRlcykKK0pTX0VYUE9SVEVEX1NZTUJPTCBpbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0RGly
ZWN0KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWdu
ZWQgYXR0cmlidXRlcykKIHsKICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICBwdXREaXJl
Y3RJbnRlcm5hbChwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzLCBmYWxzZSwgc2xvdCwg
MCk7CiB9CiAKLWlubGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3QoY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCitK
U19FWFBPUlRFRF9TWU1CT0wgaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdChjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYg
c2xvdCkKIHsKICAgICBwdXREaXJlY3RJbnRlcm5hbChwcm9wZXJ0eU5hbWUsIHZhbHVlLCAwLCBm
YWxzZSwgc2xvdCwgMCk7CiB9CiAKLWlubGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RGdW5j
dGlvbihjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQ2VsbCogdmFsdWUsIHVuc2ln
bmVkIGF0dHJpYnV0ZXMsIGJvb2wgY2hlY2tSZWFkT25seSwgUHV0UHJvcGVydHlTbG90JiBzbG90
KQorSlNfRVhQT1JURURfU1lNQk9MIGlubGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RGdW5j
dGlvbihjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQ2VsbCogdmFsdWUsIHVuc2ln
bmVkIGF0dHJpYnV0ZXMsIGJvb2wgY2hlY2tSZWFkT25seSwgUHV0UHJvcGVydHlTbG90JiBzbG90
KQogewogICAgIHB1dERpcmVjdEludGVybmFsKHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0
ZXMsIGNoZWNrUmVhZE9ubHksIHNsb3QsIHZhbHVlKTsKIH0KIAotaW5saW5lIHZvaWQgSlNPYmpl
Y3Q6OnB1dERpcmVjdEZ1bmN0aW9uKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlND
ZWxsKiB2YWx1ZSwgdW5zaWduZWQgYXR0cikKK0pTX0VYUE9SVEVEX1NZTUJPTCBpbmxpbmUgdm9p
ZCBKU09iamVjdDo6cHV0RGlyZWN0RnVuY3Rpb24oY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBKU0NlbGwqIHZhbHVlLCB1bnNpZ25lZCBhdHRyKQogewogICAgIFB1dFByb3BlcnR5U2xv
dCBzbG90OwogICAgIHB1dERpcmVjdEludGVybmFsKHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHIs
IGZhbHNlLCBzbG90LCB2YWx1ZSk7CiB9CiAKLWlubGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbihjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCitKU19FWFBPUlRFRF9TWU1CT0wgaW5saW5l
IHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKIHsK
ICAgICBzaXplX3QgY3VycmVudENhcGFjaXR5ID0gbV9zdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFn
ZUNhcGFjaXR5KCk7CiAgICAgc2l6ZV90IG9mZnNldCA9IG1fc3RydWN0dXJlLT5hZGRQcm9wZXJ0
eVdpdGhvdXRUcmFuc2l0aW9uKHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgMCk7CkluZGV4OiBK
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaAkocmV2aXNpb24gNjM0NjEp
CisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaAkod29ya2luZyBj
b3B5KQpAQCAtNDMsMTAgKzQzLDEwIEBACiAgICAgY2xhc3MgTm9kZTsKICAgICBzdHJ1Y3QgSW5z
dHJ1Y3Rpb247CiAgICAgCi0gICAgSlNWYWx1ZSBjcmVhdGVJbnRlcnJ1cHRlZEV4ZWN1dGlvbkV4
Y2VwdGlvbihKU0dsb2JhbERhdGEqKTsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgSlNWYWx1ZSBj
cmVhdGVJbnRlcnJ1cHRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihKU0dsb2JhbERhdGEqKTsKICAgICBK
U1ZhbHVlIGNyZWF0ZVRlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oSlNHbG9iYWxEYXRhKik7
Ci0gICAgSlNPYmplY3QqIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihFeGVjU3RhdGUqKTsKLSAg
ICBKU09iamVjdCogY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKEpTR2xvYmFsT2JqZWN0Kik7Cisg
ICAgSlNfRVhQT1JURURfU1lNQk9MIEpTT2JqZWN0KiBjcmVhdGVTdGFja092ZXJmbG93RXJyb3Io
RXhlY1N0YXRlKik7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIEpTT2JqZWN0KiBjcmVhdGVTdGFj
a092ZXJmbG93RXJyb3IoSlNHbG9iYWxPYmplY3QqKTsKICAgICBKU1ZhbHVlIGNyZWF0ZVVuZGVm
aW5lZFZhcmlhYmxlRXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIHVuc2lnbmVk
IGJ5dGVjb2RlT2Zmc2V0LCBDb2RlQmxvY2sqKTsKICAgICBKU05vdEFuT2JqZWN0RXJyb3JTdHVi
KiBjcmVhdGVOb3RBbk9iamVjdEVycm9yU3R1YihFeGVjU3RhdGUqLCBib29sIGlzTnVsbCk7CiAg
ICAgSlNPYmplY3QqIGNyZWF0ZUludmFsaWRQYXJhbUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IGNo
YXIqIG9wLCBKU1ZhbHVlLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgQ29kZUJsb2NrKik7Cklu
ZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAkocmV2aXNpb24gNjM0NjEpCisrKyBK
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDQs
MTQgKzQ0LDE0IEBACiAgICAgICAgIHR5cGVkZWYgSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0IEJh
c2U7CiAKICAgICBwdWJsaWM6Ci0gICAgICAgIEpTRnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9i
YWxPYmplY3QqLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBpbnQgbGVuZ3RoLCBjb25z
dCBJZGVudGlmaWVyJiwgTmF0aXZlRnVuY3Rpb24pOworICAgICAgICBKU19FWFBPUlRFRF9TWU1C
T0wgSlNGdW5jdGlvbihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIE5vbk51bGxQYXNzUmVm
UHRyPFN0cnVjdHVyZT4sIGludCBsZW5ndGgsIGNvbnN0IElkZW50aWZpZXImLCBOYXRpdmVGdW5j
dGlvbik7CiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgSlNGdW5jdGlvbihFeGVjU3RhdGUqLCBK
U0dsb2JhbE9iamVjdCosIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIGludCBsZW5ndGgs
IGNvbnN0IElkZW50aWZpZXImLCBQYXNzUmVmUHRyPE5hdGl2ZUV4ZWN1dGFibGU+KTsKICNlbmRp
ZgogICAgICAgICBKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSosIE5vbk51bGxQYXNzUmVmUHRyPEZ1bmN0
aW9uRXhlY3V0YWJsZT4sIFNjb3BlQ2hhaW5Ob2RlKik7CiAgICAgICAgIHZpcnR1YWwgfkpTRnVu
Y3Rpb24oKTsKIAotICAgICAgICBjb25zdCBVU3RyaW5nJiBuYW1lKEV4ZWNTdGF0ZSopOworICAg
ICAgICBKU19FWFBPUlRFRF9TWU1CT0wgY29uc3QgVVN0cmluZyYgbmFtZShFeGVjU3RhdGUqKTsK
ICAgICAgICAgY29uc3QgVVN0cmluZyBkaXNwbGF5TmFtZShFeGVjU3RhdGUqKTsKICAgICAgICAg
Y29uc3QgVVN0cmluZyBjYWxjdWxhdGVkRGlzcGxheU5hbWUoRXhlY1N0YXRlKik7CiAKQEAgLTcy
LDcgKzcyLDcgQEAKICAgICAgICAgaW5saW5lIGJvb2wgaXNIb3N0RnVuY3Rpb24oKSBjb25zdDsK
ICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBqc0V4ZWN1dGFibGUoKSBjb25zdDsKIAotICAg
ICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSBjb25zdCBDbGFzc0luZm8gaW5mbzsKKyAgICAgICAg
c3RhdGljIEpTX0VYUE9SVEVEX1NZTUJPTCBjb25zdCBDbGFzc0luZm8gaW5mbzsKIAogICAgICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU1ZhbHVlIHBy
b3RvdHlwZSkgCiAgICAgICAgIHsgCkBAIC05MCw3ICs5MCw3IEBACiAgICAgcHJpdmF0ZToKICAg
ICAgICAgSlNGdW5jdGlvbihOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+KTsKIAotICAgICAg
ICBib29sIGlzSG9zdEZ1bmN0aW9uTm9uSW5saW5lKCkgY29uc3Q7CisgICAgICAgIEpTX0VYUE9S
VEVEX1NZTUJPTCBib29sIGlzSG9zdEZ1bmN0aW9uTm9uSW5saW5lKCkgY29uc3Q7CiAKICAgICAg
ICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyJiwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVz
Y3JpcHRvciYpOwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5o
CShyZXZpc2lvbiA2MzQ2MSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90
eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAKICAgICAgICAgYm9vbCBtX2hh
c05vUHJvcGVydGllc1dpdGhVSW50MzJOYW1lczsKICAgICB9OwogCi0gICAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqKTsKKyAg
ICBKU19FWFBPUlRFRF9TWU1CT0wgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQ
cm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5k
ZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5oCShyZXZpc2lvbiA2MzQ2MSkKKysrIEphdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQsNyArMTQ0LDcg
QEAKICAgICAgICAgc3RhdGljIHZvaWQgbWFya0xpc3RzKE1hcmtTdGFjayYsIExpc3RTZXQmKTsK
IAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZvaWQgc2xvd0FwcGVuZChKU1ZhbHVlKTsKKyAgICAg
ICAgSlNfRVhQT1JURURfU1lNQk9MIHZvaWQgc2xvd0FwcGVuZChKU1ZhbHVlKTsKICAgICAgICAg
CiAgICAgICAgIFJlZ2lzdGVyKiBtX2J1ZmZlcjsKICAgICAgICAgc2l6ZV90IG1fc2l6ZTsKQEAg
LTIzNCw3ICsyMzQsNyBAQAogICAgICAgICBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IHsg
cmV0dXJuIG1fYXJnczsgfQogICAgICAgICBjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdCB7IHJl
dHVybiBtX2FyZ3MgKyBtX2FyZ0NvdW50OyB9CiAKLSAgICAgICAgdm9pZCBnZXRTbGljZShpbnQg
c3RhcnRJbmRleCwgQXJnTGlzdCYgcmVzdWx0KSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JURURf
U1lNQk9MIHZvaWQgZ2V0U2xpY2UoaW50IHN0YXJ0SW5kZXgsIEFyZ0xpc3QmIHJlc3VsdCkgY29u
c3Q7CiAgICAgcHJpdmF0ZToKICAgICAgICAgSlNWYWx1ZSogbV9hcmdzOwogICAgICAgICBzaXpl
X3QgbV9hcmdDb3VudDsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCShyZXZpc2lvbiA2
MzQ2MSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsNCBAQAorCiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJp
IFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA3LCAy
MDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTU2LDkgKzU3LDkg
QEAKICAgICAgICAgZnJpZW5kIGNsYXNzIFdhbGtlcjsKIAogICAgIHB1YmxpYzoKLSAgICAgICAg
ZXhwbGljaXQgSlNBcnJheShOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+KTsKLSAgICAgICAg
SlNBcnJheShOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCB1bnNpZ25lZCBpbml0aWFsTGVu
Z3RoLCBBcnJheUNyZWF0aW9uTW9kZSk7Ci0gICAgICAgIEpTQXJyYXkoTm9uTnVsbFBhc3NSZWZQ
dHI8U3RydWN0dXJlPiwgY29uc3QgQXJnTGlzdCYgaW5pdGlhbFZhbHVlcyk7CisgICAgICAgIEpT
X0VYUE9SVEVEX1NZTUJPTCBleHBsaWNpdCBKU0FycmF5KE5vbk51bGxQYXNzUmVmUHRyPFN0cnVj
dHVyZT4pOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgSlNBcnJheShOb25OdWxsUGFzc1Jl
ZlB0cjxTdHJ1Y3R1cmU+LCB1bnNpZ25lZCBpbml0aWFsTGVuZ3RoLCBBcnJheUNyZWF0aW9uTW9k
ZSk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBKU0FycmF5KE5vbk51bGxQYXNzUmVmUHRy
PFN0cnVjdHVyZT4sIGNvbnN0IEFyZ0xpc3QmIGluaXRpYWxWYWx1ZXMpOwogICAgICAgICB2aXJ0
dWFsIH5KU0FycmF5KCk7CiAKICAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xv
dChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYpOwpAQCAtNjYsMTAgKzY3LDEwIEBACiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVz
Y3JpcHRvciYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcHV0KEV4ZWNTdGF0ZSosIHVuc2lnbmVk
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSk7IC8vIEZJWE1FOiBNYWtlIHByb3RlY3RlZCBhbmQgYWRk
IHNldEl0ZW0uCiAKLSAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJbmZv
IGluZm87CisgICAgICAgIHN0YXRpYyBKU19FWFBPUlRFRF9TWU1CT0wgY29uc3QgQ2xhc3NJbmZv
IGluZm87CiAKICAgICAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9zdG9y
YWdlLT5tX2xlbmd0aDsgfQotICAgICAgICB2b2lkIHNldExlbmd0aCh1bnNpZ25lZCk7IC8vIE9L
IHRvIHVzZSBvbiBuZXcgYXJyYXlzLCBidXQgbm90IGlmIGl0IG1pZ2h0IGJlIGEgUmVnRXhwTWF0
Y2hBcnJheS4KKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZvaWQgc2V0TGVuZ3RoKHVuc2ln
bmVkKTsgLy8gT0sgdG8gdXNlIG9uIG5ldyBhcnJheXMsIGJ1dCBub3QgaWYgaXQgbWlnaHQgYmUg
YSBSZWdFeHBNYXRjaEFycmF5LgogCiAgICAgICAgIHZvaWQgc29ydChFeGVjU3RhdGUqKTsKICAg
ICAgICAgdm9pZCBzb3J0KEV4ZWNTdGF0ZSosIEpTVmFsdWUgY29tcGFyZUZ1bmN0aW9uLCBDYWxs
VHlwZSwgY29uc3QgQ2FsbERhdGEmKTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
ZXJuYWxGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
ZXJuYWxGdW5jdGlvbi5oCShyZXZpc2lvbiA2MzQ2MSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50ZXJuYWxGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAg
ICAgY2xhc3MgSW50ZXJuYWxGdW5jdGlvbiA6IHB1YmxpYyBKU09iamVjdFdpdGhHbG9iYWxPYmpl
Y3QgewogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCBjb25zdCBDbGFzc0luZm8qIGNsYXNz
SW5mbygpIGNvbnN0OyAKLSAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJ
bmZvIGluZm87CisgICAgICAgIHN0YXRpYyBKU19FWFBPUlRFRF9TWU1CT0wgY29uc3QgQ2xhc3NJ
bmZvIGluZm87CiAKICAgICAgICAgY29uc3QgVVN0cmluZyYgbmFtZShFeGVjU3RhdGUqKTsKICAg
ICAgICAgY29uc3QgVVN0cmluZyBkaXNwbGF5TmFtZShFeGVjU3RhdGUqKTsKQEAgLTUxLDcgKzUx
LDcgQEAKICAgICAgICAgLy8gT25seSB1c2VkIHRvIGFsbG93IHVzIHRvIGRldGVybWluZSB0aGUg
SlNGdW5jdGlvbiB2cHRyCiAgICAgICAgIEludGVybmFsRnVuY3Rpb24oTm9uTnVsbFBhc3NSZWZQ
dHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUpOwogCi0gICAgICAgIEludGVybmFsRnVuY3Rpb24oSlNH
bG9iYWxEYXRhKiwgSlNHbG9iYWxPYmplY3QqLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+
LCBjb25zdCBJZGVudGlmaWVyJik7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBJbnRlcm5h
bEZ1bmN0aW9uKEpTR2xvYmFsRGF0YSosIEpTR2xvYmFsT2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQ
dHI8U3RydWN0dXJlPiwgY29uc3QgSWRlbnRpZmllciYpOwogCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgdmlydHVhbCBDYWxsVHlwZSBnZXRDYWxsRGF0YShDYWxsRGF0YSYpID0gMDsKSW5kZXg6IEph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCShyZXZpc2lvbiA2MzQ2MSkKKysrIEphdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw5ICs1NCw5
IEBACiAgICAgICAgIAogICAgICAgICBjb25zdCBjaGFyKiBhc2NpaSgpIGNvbnN0IHsgcmV0dXJu
IF91c3RyaW5nLmFzY2lpKCk7IH0KICAgICAgICAgCi0gICAgICAgIHN0YXRpYyBJZGVudGlmaWVy
IGZyb20oRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCB5KTsKLSAgICAgICAgc3RhdGljIElkZW50
aWZpZXIgZnJvbShFeGVjU3RhdGUqIGV4ZWMsIGludCB5KTsKLSAgICAgICAgc3RhdGljIElkZW50
aWZpZXIgZnJvbShFeGVjU3RhdGUqIGV4ZWMsIGRvdWJsZSB5KTsKKyAgICAgICAgSlNfRVhQT1JU
RURfU1lNQk9MIHN0YXRpYyBJZGVudGlmaWVyIGZyb20oRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25l
ZCB5KTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHN0YXRpYyBJZGVudGlmaWVyIGZyb20o
RXhlY1N0YXRlKiBleGVjLCBpbnQgeSk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0
aWMgSWRlbnRpZmllciBmcm9tKEV4ZWNTdGF0ZSogZXhlYywgZG91YmxlIHkpOwogICAgICAgICBz
dGF0aWMgSWRlbnRpZmllciBmcm9tKEpTR2xvYmFsRGF0YSosIHVuc2lnbmVkIHkpOwogICAgICAg
ICBzdGF0aWMgSWRlbnRpZmllciBmcm9tKEpTR2xvYmFsRGF0YSosIGludCB5KTsKICAgICAgICAg
c3RhdGljIElkZW50aWZpZXIgZnJvbShKU0dsb2JhbERhdGEqLCBkb3VibGUgeSk7CkBAIC03Niwx
MiArNzYsMTIgQEAKICAgICAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJZGVudGlm
aWVyJiwgY29uc3QgY2hhciopOwogICAgICAgICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IElkZW50aWZpZXImLCBjb25zdCBjaGFyKik7CiAgICAgCi0gICAgICAgIHN0YXRpYyBib29sIGVx
dWFsKGNvbnN0IFVTdHJpbmc6OlJlcCosIGNvbnN0IGNoYXIqKTsKKyAgICAgICAgSlNfRVhQT1JU
RURfU1lNQk9MIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFVTdHJpbmc6OlJlcCosIGNvbnN0IGNo
YXIqKTsKICAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgVVN0cmluZzo6UmVwKiwgY29u
c3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOwogICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChj
b25zdCBVU3RyaW5nOjpSZXAqIGEsIGNvbnN0IFVTdHJpbmc6OlJlcCogYikgeyByZXR1cm4gOjpl
cXVhbChhLCBiKTsgfQogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFVTdHJpbmc6OlJlcD4g
YWRkKEV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIqKTsgLy8gT25seSB0byBiZSB1c2VkIHdpdGggc3Ry
aW5nIGxpdGVyYWxzLgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxVU3RyaW5nOjpSZXA+IGFk
ZChKU0dsb2JhbERhdGEqLCBjb25zdCBjaGFyKik7IC8vIE9ubHkgdG8gYmUgdXNlZCB3aXRoIHN0
cmluZyBsaXRlcmFscy4KKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHN0YXRpYyBQYXNzUmVm
UHRyPFVTdHJpbmc6OlJlcD4gYWRkKEV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIqKTsgLy8gT25seSB0
byBiZSB1c2VkIHdpdGggc3RyaW5nIGxpdGVyYWxzLgorICAgICAgICBKU19FWFBPUlRFRF9TWU1C
T0wgc3RhdGljIFBhc3NSZWZQdHI8VVN0cmluZzo6UmVwPiBhZGQoSlNHbG9iYWxEYXRhKiwgY29u
c3QgY2hhciopOyAvLyBPbmx5IHRvIGJlIHVzZWQgd2l0aCBzdHJpbmcgbGl0ZXJhbHMuCiAKICAg
ICBwcml2YXRlOgogICAgICAgICBVU3RyaW5nIF91c3RyaW5nOwpAQCAtMTExLDEwICsxMTEsMTAg
QEAKICAgICAgICAgICAgIHJldHVybiBhZGRTbG93Q2FzZShnbG9iYWxEYXRhLCByKTsKICAgICAg
ICAgfQogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFVTdHJpbmc6OlJlcD4gYWRkU2xvd0Nh
c2UoRXhlY1N0YXRlKiwgVVN0cmluZzo6UmVwKiByKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lN
Qk9MIHN0YXRpYyBQYXNzUmVmUHRyPFVTdHJpbmc6OlJlcD4gYWRkU2xvd0Nhc2UoRXhlY1N0YXRl
KiwgVVN0cmluZzo6UmVwKiByKTsKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8VVN0cmluZzo6
UmVwPiBhZGRTbG93Q2FzZShKU0dsb2JhbERhdGEqLCBVU3RyaW5nOjpSZXAqIHIpOwogCi0gICAg
ICAgIHN0YXRpYyB2b2lkIGNoZWNrQ3VycmVudElkZW50aWZpZXJUYWJsZShFeGVjU3RhdGUqKTsK
KyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHN0YXRpYyB2b2lkIGNoZWNrQ3VycmVudElkZW50
aWZpZXJUYWJsZShFeGVjU3RhdGUqKTsKICAgICAgICAgc3RhdGljIHZvaWQgY2hlY2tDdXJyZW50
SWRlbnRpZmllclRhYmxlKEpTR2xvYmFsRGF0YSopOwogICAgIH07CiAgICAgCkluZGV4OiBKYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgJKHJldmlzaW9uIDYzNDYxKQorKysgSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjksMjAg
KzI5LDIwIEBACiAgICAgY2xhc3MgU3RyaW5nT2JqZWN0IDogcHVibGljIEpTV3JhcHBlck9iamVj
dCB7CiAgICAgcHVibGljOgogICAgICAgICBTdHJpbmdPYmplY3QoRXhlY1N0YXRlKiwgTm9uTnVs
bFBhc3NSZWZQdHI8U3RydWN0dXJlPik7Ci0gICAgICAgIFN0cmluZ09iamVjdChFeGVjU3RhdGUq
LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBjb25zdCBVU3RyaW5nJik7CisgICAgICAg
IEpTX0VYUE9SVEVEX1NZTUJPTCBTdHJpbmdPYmplY3QoRXhlY1N0YXRlKiwgTm9uTnVsbFBhc3NS
ZWZQdHI8U3RydWN0dXJlPiwgY29uc3QgVVN0cmluZyYpOwogCiAgICAgICAgIHN0YXRpYyBTdHJp
bmdPYmplY3QqIGNyZWF0ZShFeGVjU3RhdGUqLCBKU1N0cmluZyopOwogCi0gICAgICAgIHZpcnR1
YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgdmlydHVhbCBib29sIGdldE93
blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYpOwotICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICAg
ICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhl
Y1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsK
KyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNs
b3QoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAg
ICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYp
OwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBwdXQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwotICAgICAg
ICB2aXJ0dWFsIGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGdldE93blByb3BlcnR5TmFt
ZXMoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSA9
IEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wg
dmlydHVhbCB2b2lkIHB1dChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgICAgIEpTX0VYUE9SVEVE
X1NZTUJPTCB2aXJ0dWFsIGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1
YWwgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5
JiwgRW51bWVyYXRpb25Nb2RlIG1vZGUgPSBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKIAog
ICAgICAgICB2aXJ0dWFsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3QgeyByZXR1
cm4gJmluZm87IH0KLSAgICAgICAgc3RhdGljIGNvbnN0IEpTX0VYUE9SVERBVEEgQ2xhc3NJbmZv
IGluZm87CisgICAgICAgIHN0YXRpYyBjb25zdCBKU19FWFBPUlRFRF9TWU1CT0wgQ2xhc3NJbmZv
IGluZm87CiAKICAgICAgICAgSlNTdHJpbmcqIGludGVybmFsVmFsdWUoKSBjb25zdCB7IHJldHVy
biBhc1N0cmluZyhKU1dyYXBwZXJPYmplY3Q6OmludGVybmFsVmFsdWUoKSk7fQogCkluZGV4OiBK
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJheS5oCShyZXZpc2lvbiA2MzQ2MSkKKysrIEphdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtNzMsOCAr
NzMsOCBAQAogICAgICAgICAgICAgICAgIHNldEluZGV4KGksIGJ5dGVWYWx1ZSk7CiAgICAgICAg
IH0KIAotICAgICAgICBKU0J5dGVBcnJheShFeGVjU3RhdGUqIGV4ZWMsIE5vbk51bGxQYXNzUmVm
UHRyPFN0cnVjdHVyZT4sIFdURjo6Qnl0ZUFycmF5KiBzdG9yYWdlLCBjb25zdCBKU0M6OkNsYXNz
SW5mbyogPSAmc19kZWZhdWx0SW5mbyk7Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVj
dHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTVmFsdWUgcHJvdG90eXBlKTsKKyAgICAgICAgSlNfRVhQ
T1JURURfU1lNQk9MIEpTQnl0ZUFycmF5KEV4ZWNTdGF0ZSogZXhlYywgTm9uTnVsbFBhc3NSZWZQ
dHI8U3RydWN0dXJlPiwgV1RGOjpCeXRlQXJyYXkqIHN0b3JhZ2UsIGNvbnN0IEpTQzo6Q2xhc3NJ
bmZvKiA9ICZzX2RlZmF1bHRJbmZvKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHN0YXRp
YyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTVmFsdWUgcHJvdG90eXBl
KTsKICAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlND
OjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpQ
cm9wZXJ0eVNsb3QmKTsKICAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChK
U0M6OkV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3Qm
KTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oCShyZXZp
c2lvbiA2MzQ2MSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC00NCwxNCArNDQsMTQgQEAKICAgICAgICAgZnJpZW5kIGNsYXNz
IEpJVDsKIAogICAgIHB1YmxpYzoKLSAgICAgICAgU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlKCkg
Y29uc3QgeyByZXR1cm4gKmQtPnN5bWJvbFRhYmxlOyB9CisgICAgICAgIEpTX0VYUE9SVEVEX1NZ
TUJPTCBTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUoKSBjb25zdCB7IHJldHVybiAqZC0+c3ltYm9s
VGFibGU7IH0KIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcHV0V2l0aEF0dHJpYnV0ZXMoRXhlY1N0
YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpID0g
MDsKIAotICAgICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiwgY29u
c3QgSWRlbnRpZmllciYpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1l
cyhFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSBtb2RlID0g
RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2
aXJ0dWFsIGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYp
OworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCB2b2lkIGdldE93blByb3BlcnR5
TmFtZXMoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUgbW9k
ZSA9IEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwogICAgICAgICAKLSAgICAgICAgdmlydHVh
bCBib29sIGlzVmFyaWFibGVPYmplY3QoKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JURURfU1lN
Qk9MIHZpcnR1YWwgYm9vbCBpc1ZhcmlhYmxlT2JqZWN0KCkgY29uc3Q7CiAgICAgICAgIHZpcnR1
YWwgYm9vbCBpc0R5bmFtaWNTY29wZShib29sJiByZXF1aXJlc0R5bmFtaWNDaGVja3MpIGNvbnN0
ID0gMDsKIAogICAgICAgICBSZWdpc3RlciYgcmVnaXN0ZXJBdChpbnQgaW5kZXgpIGNvbnN0IHsg
cmV0dXJuIGQtPnJlZ2lzdGVyc1tpbmRleF07IH0KQEAgLTkzLDcgKzkzLDcgQEAKICAgICAgICAg
dm9pZCBzZXRSZWdpc3RlcnMoUmVnaXN0ZXIqIHIsIFJlZ2lzdGVyKiByZWdpc3RlckFycmF5KTsK
IAogICAgICAgICBib29sIHN5bWJvbFRhYmxlR2V0KGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0
eVNsb3QmKTsKLSAgICAgICAgYm9vbCBzeW1ib2xUYWJsZUdldChjb25zdCBJZGVudGlmaWVyJiwg
UHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBib29sIHN5
bWJvbFRhYmxlR2V0KGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKICAg
ICAgICAgYm9vbCBzeW1ib2xUYWJsZUdldChjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90
JiwgYm9vbCYgc2xvdElzV3JpdGVhYmxlKTsKICAgICAgICAgYm9vbCBzeW1ib2xUYWJsZVB1dChj
b25zdCBJZGVudGlmaWVyJiwgSlNWYWx1ZSk7CiAgICAgICAgIGJvb2wgc3ltYm9sVGFibGVQdXRX
aXRoQXR0cmlidXRlcyhjb25zdCBJZGVudGlmaWVyJiwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmli
dXRlcyk7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uaAkocmV2aXNpb24gNjM0
NjEpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uaAkod29ya2luZyBjb3B5
KQpAQCAtNTUsOCArNTUsOCBAQAogICAgICAgICBKU1ZhbHVlIG1fdmFsdWU7CiAgICAgfTsKIAot
ICAgIENvbXBsZXRpb24gY2hlY2tTeW50YXgoRXhlY1N0YXRlKiwgY29uc3QgU291cmNlQ29kZSYp
OwotICAgIENvbXBsZXRpb24gZXZhbHVhdGUoRXhlY1N0YXRlKiwgU2NvcGVDaGFpbiYsIGNvbnN0
IFNvdXJjZUNvZGUmLCBKU1ZhbHVlIHRoaXNWYWx1ZSA9IEpTVmFsdWUoKSk7CisgICAgSlNfRVhQ
T1JURURfU1lNQk9MIENvbXBsZXRpb24gY2hlY2tTeW50YXgoRXhlY1N0YXRlKiwgY29uc3QgU291
cmNlQ29kZSYpOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBDb21wbGV0aW9uIGV2YWx1YXRlKEV4
ZWNTdGF0ZSosIFNjb3BlQ2hhaW4mLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBKU1ZhbHVlKCkpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApJbmRleDogSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Mb29rdXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0xvb2t1cC5oCShyZXZpc2lvbiA2MzQ2MSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TG9va3VwLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzOSw3ICsxMzksNyBAQAogICAgICAgICAgICAg
ICAgIGNyZWF0ZVRhYmxlKCZleGVjLT5nbG9iYWxEYXRhKCkpOwogICAgICAgICB9CiAKLSAgICAg
ICAgdm9pZCBkZWxldGVUYWJsZSgpIGNvbnN0OworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wg
dm9pZCBkZWxldGVUYWJsZSgpIGNvbnN0OwogCiAgICAgICAgIC8vIEZpbmQgYW4gZW50cnkgaW4g
dGhlIHRhYmxlLCBhbmQgcmV0dXJuIHRoZSBlbnRyeS4KICAgICAgICAgQUxXQVlTX0lOTElORSBj
b25zdCBIYXNoRW50cnkqIGVudHJ5KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgSWRl
bnRpZmllciYgaWRlbnRpZmllcikgY29uc3QKQEAgLTE3NCwxMCArMTc0LDEwIEBACiAgICAgICAg
IH0KIAogICAgICAgICAvLyBDb252ZXJ0IHRoZSBoYXNoIHRhYmxlIGtleXMgdG8gaWRlbnRpZmll
cnMuCi0gICAgICAgIHZvaWQgY3JlYXRlVGFibGUoSlNHbG9iYWxEYXRhKikgY29uc3Q7CisgICAg
ICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIGNyZWF0ZVRhYmxlKEpTR2xvYmFsRGF0YSopIGNv
bnN0OwogICAgIH07CiAKLSAgICB2b2lkIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0
ZSosIGNvbnN0IEhhc2hFbnRyeSosIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgIEpTX0VYUE9SVEVEX1NZTUJP
TCB2b2lkIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSosIGNvbnN0IEhhc2hFbnRy
eSosIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYpOwogCiAgICAgLyoqCiAgICAgICogVGhpcyBtZXRob2QgZG9lcyBpdCBh
bGwgKGxvb2tpbmcgaW4gdGhlIGhhc2h0YWJsZSwgY2hlY2tpbmcgZm9yIGZ1bmN0aW9uCkluZGV4
OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHJldmlzaW9uIDYzNDYxKQorKysgSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NlbGwuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsOCArNDgsOCBAQAogICAg
ICAgICBmcmllbmQgY2xhc3MgSlNHbG9iYWxEYXRhOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAg
ZXhwbGljaXQgSlNDZWxsKFN0cnVjdHVyZSopOwotICAgICAgICB2aXJ0dWFsIH5KU0NlbGwoKTsK
KyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIGV4cGxpY2l0IEpTQ2VsbChTdHJ1Y3R1cmUqKTsK
KyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgfkpTQ2VsbCgpOwogCiAgICAgcHVi
bGljOgogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZUR1bW15U3Ry
dWN0dXJlKCkKQEAgLTYxLDM5ICs2MSwzOSBAQAogI2lmIFVTRShKU1ZBTFVFMzIpCiAgICAgICAg
IGJvb2wgaXNOdW1iZXIoKSBjb25zdDsKICNlbmRpZgotICAgICAgICBib29sIGlzU3RyaW5nKCkg
Y29uc3Q7Ci0gICAgICAgIGJvb2wgaXNPYmplY3QoKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCBi
b29sIGlzR2V0dGVyU2V0dGVyKCkgY29uc3Q7Ci0gICAgICAgIGJvb2wgaW5oZXJpdHMoY29uc3Qg
Q2xhc3NJbmZvKikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBib29sIGlzU3Ry
aW5nKCkgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBib29sIGlzT2JqZWN0KCkg
Y29uc3Q7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIGJvb2wgaXNHZXR0ZXJT
ZXR0ZXIoKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIGJvb2wgaW5oZXJpdHMo
Y29uc3QgQ2xhc3NJbmZvKikgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0FQSVZhbHVl
V3JhcHBlcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBp
c1Byb3BlcnR5TmFtZUl0ZXJhdG9yKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgICAg
ICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSgpIGNvbnN0OwogCiAgICAgICAgIC8vIEV4dHJhY3Rpbmcg
dGhlIHZhbHVlLgotICAgICAgICBib29sIGdldFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIFVTdHJp
bmcmKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIGJvb2wgZ2V0U3RyaW5nKEV4
ZWNTdGF0ZSogZXhlYywgVVN0cmluZyYpIGNvbnN0OwogICAgICAgICBVU3RyaW5nIGdldFN0cmlu
ZyhFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0OyAvLyBudWxsIHN0cmluZyBpZiBub3QgYSBzdHJpbmcK
LSAgICAgICAgSlNPYmplY3QqIGdldE9iamVjdCgpOyAvLyBOVUxMIGlmIG5vdCBhbiBvYmplY3QK
LSAgICAgICAgY29uc3QgSlNPYmplY3QqIGdldE9iamVjdCgpIGNvbnN0OyAvLyBOVUxMIGlmIG5v
dCBhbiBvYmplY3QKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIEpTT2JqZWN0KiBnZXRPYmpl
Y3QoKTsgLy8gTlVMTCBpZiBub3QgYW4gb2JqZWN0CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJP
TCBjb25zdCBKU09iamVjdCogZ2V0T2JqZWN0KCkgY29uc3Q7IC8vIE5VTEwgaWYgbm90IGFuIG9i
amVjdAogICAgICAgICAKLSAgICAgICAgdmlydHVhbCBDYWxsVHlwZSBnZXRDYWxsRGF0YShDYWxs
RGF0YSYpOwotICAgICAgICB2aXJ0dWFsIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShD
b25zdHJ1Y3REYXRhJik7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIENhbGxU
eXBlIGdldENhbGxEYXRhKENhbGxEYXRhJik7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2
aXJ0dWFsIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShDb25zdHJ1Y3REYXRhJik7CiAK
ICAgICAgICAgLy8gRXh0cmFjdGluZyBpbnRlZ2VyIHZhbHVlcy4KICAgICAgICAgLy8gRklYTUU6
IHJlbW92ZSB0aGVzZSBtZXRob2RzLCBjYW4gY2hlY2sgaXNOdW1iZXJDZWxsIGluIEpTVmFsdWUg
JiYgdGhlbiBjYWxsIGFzTnVtYmVyQ2VsbDo6Ki4KLSAgICAgICAgdmlydHVhbCBib29sIGdldFVJ
bnQzMih1aW50MzJfdCYpIGNvbnN0OworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVh
bCBib29sIGdldFVJbnQzMih1aW50MzJfdCYpIGNvbnN0OwogCiAgICAgICAgIC8vIEJhc2ljIGNv
bnZlcnNpb25zLgotICAgICAgICB2aXJ0dWFsIEpTVmFsdWUgdG9QcmltaXRpdmUoRXhlY1N0YXRl
KiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBn
ZXRQcmltaXRpdmVOdW1iZXIoRXhlY1N0YXRlKiwgZG91YmxlJiBudW1iZXIsIEpTVmFsdWUmKTsK
LSAgICAgICAgdmlydHVhbCBib29sIHRvQm9vbGVhbihFeGVjU3RhdGUqKSBjb25zdDsKLSAgICAg
ICAgdmlydHVhbCBkb3VibGUgdG9OdW1iZXIoRXhlY1N0YXRlKikgY29uc3Q7Ci0gICAgICAgIHZp
cnR1YWwgVVN0cmluZyB0b1N0cmluZyhFeGVjU3RhdGUqKSBjb25zdDsKLSAgICAgICAgdmlydHVh
bCBKU09iamVjdCogdG9PYmplY3QoRXhlY1N0YXRlKikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9S
VEVEX1NZTUJPTCB2aXJ0dWFsIEpTVmFsdWUgdG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgUHJlZmVy
cmVkUHJpbWl0aXZlVHlwZSkgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0
dWFsIGJvb2wgZ2V0UHJpbWl0aXZlTnVtYmVyKEV4ZWNTdGF0ZSosIGRvdWJsZSYgbnVtYmVyLCBK
U1ZhbHVlJik7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIGJvb2wgdG9Cb29s
ZWFuKEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVh
bCBkb3VibGUgdG9OdW1iZXIoRXhlY1N0YXRlKikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVEVE
X1NZTUJPTCB2aXJ0dWFsIFVTdHJpbmcgdG9TdHJpbmcoRXhlY1N0YXRlKikgY29uc3Q7CisgICAg
ICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2aXJ0dWFsIEpTT2JqZWN0KiB0b09iamVjdChFeGVjU3Rh
dGUqKSBjb25zdDsKIAogICAgICAgICAvLyBHYXJiYWdlIGNvbGxlY3Rpb24uCi0gICAgICAgIHZv
aWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIEV4ZWNTdGF0ZSopOwotICAgICAgICB2b2lkKiBvcGVy
YXRvciBuZXcoc2l6ZV90LCBKU0dsb2JhbERhdGEqKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lN
Qk9MIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIEV4ZWNTdGF0ZSopOworICAgICAgICBKU19F
WFBPUlRFRF9TWU1CT0wgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgSlNHbG9iYWxEYXRhKik7
CiAgICAgICAgIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQqIHBsYWNlbWVudE5ld0Rl
c3RpbmF0aW9uKSB7IHJldHVybiBwbGFjZW1lbnROZXdEZXN0aW5hdGlvbjsgfQogCiAgICAgICAg
IHZpcnR1YWwgdm9pZCBtYXJrQ2hpbGRyZW4oTWFya1N0YWNrJik7CkBAIC0xMDIsMTYgKzEwMiwx
NiBAQAogI2VuZGlmCiAKICAgICAgICAgLy8gT2JqZWN0IG9wZXJhdGlvbnMsIHdpdGggdGhlIHRv
T2JqZWN0IG9wZXJhdGlvbiBpbmNsdWRlZC4KLSAgICAgICAgdmlydHVhbCBjb25zdCBDbGFzc0lu
Zm8qIGNsYXNzSW5mbygpIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIHZvaWQgcHV0KEV4ZWNTdGF0
ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlT
bG90Jik7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwdXQoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlKTsKLSAgICAgICAgdmlydHVhbCBib29sIGRlbGV0ZVByb3BlcnR5
KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7Ci0gICAgICAgIHZp
cnR1YWwgYm9vbCBkZWxldGVQcm9wZXJ0eShFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5h
bWUpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCBjb25zdCBDbGFzc0luZm8q
IGNsYXNzSW5mbygpIGNvbnN0OworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCB2
b2lkIHB1dChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVh
bCB2b2lkIHB1dChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUpOwor
ICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCBib29sIGRlbGV0ZVByb3BlcnR5KEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CisgICAgICAgIEpTX0VY
UE9SVEVEX1NZTUJPTCB2aXJ0dWFsIGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiwgdW5z
aWduZWQgcHJvcGVydHlOYW1lKTsKIAotICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiB0b1RoaXNP
YmplY3QoRXhlY1N0YXRlKikgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgSlNWYWx1ZSBnZXRKU051
bWJlcigpOwotICAgICAgICB2b2lkKiB2cHRyKCkgeyByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZCoqPih0aGlzKTsgfQotICAgICAgICB2b2lkIHNldFZQdHIodm9pZCogdnB0cikgeyAqcmVp
bnRlcnByZXRfY2FzdDx2b2lkKio+KHRoaXMpID0gdnB0cjsgfQorICAgICAgICBKU19FWFBPUlRF
RF9TWU1CT0wgdmlydHVhbCBKU09iamVjdCogdG9UaGlzT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0
OworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCBKU1ZhbHVlIGdldEpTTnVtYmVy
KCk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkKiB2cHRyKCkgeyByZXR1cm4gKnJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPih0aGlzKTsgfQorICAgICAgICBKU19FWFBPUlRFRF9TWU1C
T0wgdm9pZCBzZXRWUHRyKHZvaWQqIHZwdHIpIHsgKnJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPih0
aGlzKSA9IHZwdHI7IH0KIAogICAgICAgICAvLyBGSVhNRTogUmVuYW1lIGdldE93blByb3BlcnR5
U2xvdCB0byB2aXJ0dWFsR2V0T3duUHJvcGVydHlTbG90LCBhbmQKICAgICAgICAgLy8gZmFzdEdl
dE93blByb3BlcnR5U2xvdCB0byBnZXRPd25Qcm9wZXJ0eVNsb3QuIENhbGxlcnMgc2hvdWxkIGFs
d2F5cwpAQCAtMTI0LDggKzEyNCw4IEBACiAKICAgICBwcml2YXRlOgogICAgICAgICAvLyBCYXNl
IGltcGxlbWVudGF0aW9uOyBmb3Igbm9uLW9iamVjdCBjbGFzc2VzIGltcGxlbWVudHMgZ2V0UHJv
cGVydHlTbG90LgotICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNT
dGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0g
ICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgdW5zaWdu
ZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lN
Qk9MIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgSlNfRVhQT1JU
RURfU1lNQk9MIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgdW5z
aWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgCiAgICAgICAgIFN0
cnVjdHVyZSogbV9zdHJ1Y3R1cmU7CiAgICAgfTsKQEAgLTE1MSw3ICsxNTEsNyBAQAogICAgICAg
ICByZXR1cm4gbV9zdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IE9iamVjdFR5cGU7CiAg
ICAgfQogCi0gICAgaW5saW5lIGJvb2wgSlNDZWxsOjppc1N0cmluZygpIGNvbnN0CisgICAgSlNf
RVhQT1JURURfU1lNQk9MIGlubGluZSBib29sIEpTQ2VsbDo6aXNTdHJpbmcoKSBjb25zdAogICAg
IHsKICAgICAgICAgcmV0dXJuIG1fc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBTdHJp
bmdUeXBlOwogICAgIH0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaAkocmV2aXNpb24gNjM0
NjEpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCSh3b3JraW5nIGNvcHkpCkBA
IC03Nyw4ICs3Nyw4IEBACiAgICAgICAgICAgICB1bmxvY2sobV9sb2NrQmVoYXZpb3IpOyAKICAg
ICAgICAgfQogICAgICAgICAKLSAgICAgICAgc3RhdGljIHZvaWQgbG9jayhKU0xvY2tCZWhhdmlv
cik7Ci0gICAgICAgIHN0YXRpYyB2b2lkIHVubG9jayhKU0xvY2tCZWhhdmlvcik7CisgICAgICAg
IEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0aWMgdm9pZCBsb2NrKEpTTG9ja0JlaGF2aW9yKTsKKyAg
ICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHN0YXRpYyB2b2lkIHVubG9jayhKU0xvY2tCZWhhdmlv
cik7CiAgICAgICAgIHN0YXRpYyB2b2lkIGxvY2soRXhlY1N0YXRlKik7CiAgICAgICAgIHN0YXRp
YyB2b2lkIHVubG9jayhFeGVjU3RhdGUqKTsKIApAQCAtODcsNyArODcsNyBAQAogCiAgICAgICAg
IEpTTG9ja0JlaGF2aW9yIG1fbG9ja0JlaGF2aW9yOwogCi0gICAgICAgIGNsYXNzIERyb3BBbGxM
b2NrcyA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CisgICAgICAgIGNsYXNzIEpTX0VYUE9SVEVEX1NZ
TUJPTCBEcm9wQWxsTG9ja3MgOiBwdWJsaWMgTm9uY29weWFibGUgewogICAgICAgICBwdWJsaWM6
CiAgICAgICAgICAgICBEcm9wQWxsTG9ja3MoRXhlY1N0YXRlKiBleGVjKTsKICAgICAgICAgICAg
IERyb3BBbGxMb2NrcyhKU0xvY2tCZWhhdmlvcik7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3BlcnR5U2xvdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UHJvcGVydHlTbG90LmgJKHJldmlzaW9uIDYzNDYxKQorKysgSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm9wZXJ0eVNsb3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjQzLDcgKzI0Myw3IEBACiAgICAg
ICAgICAgICByZXR1cm4gbV9nZXRWYWx1ZTsKICAgICAgICAgfQogICAgIHByaXZhdGU6Ci0gICAg
ICAgIEpTVmFsdWUgZnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKikgY29uc3Q7CisgICAgICAgIEpT
X0VYUE9SVEVEX1NZTUJPTCBKU1ZhbHVlIGZ1bmN0aW9uR2V0dGVyKEV4ZWNTdGF0ZSopIGNvbnN0
OwogCiAgICAgICAgIEdldFZhbHVlRnVuYyBtX2dldFZhbHVlOwogICAgICAgICBHZXRJbmRleFZh
bHVlRnVuYyBtX2dldEluZGV4VmFsdWU7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1
bmN0aW9uQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Z1bmN0aW9uQ29uc3RydWN0b3IuaAkocmV2aXNpb24gNjM0NjEpCisrKyBKYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyAr
MzYsNyBAQAogICAgICAgICB2aXJ0dWFsIENhbGxUeXBlIGdldENhbGxEYXRhKENhbGxEYXRhJik7
CiAgICAgfTsKIAotICAgIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqLCBj
b25zdCBBcmdMaXN0JiwgY29uc3QgSWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBVU3Ry
aW5nJiBzb3VyY2VVUkwsIGludCBsaW5lTnVtYmVyKTsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wg
SlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSosIGNvbnN0IEFyZ0xpc3QmLCBj
b25zdCBJZGVudGlmaWVyJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFVTdHJpbmcmIHNvdXJjZVVSTCwg
aW50IGxpbmVOdW1iZXIpOwogICAgIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3Rh
dGUqLCBjb25zdCBBcmdMaXN0Jik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5oCShyZXZpc2lvbiA2MzQ2MSkKKysrIEphdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTY1LDggKzY1
LDggQEAKICAgICAgICAgSlNTdHJpbmcqKiBzaW5nbGVDaGFyYWN0ZXJTdHJpbmdzKCkgeyByZXR1
cm4gbV9zaW5nbGVDaGFyYWN0ZXJTdHJpbmdzLmRhdGEoKTsgfQogI2VuZGlmCiAgICAgcHJpdmF0
ZToKLSAgICAgICAgdm9pZCBjcmVhdGVFbXB0eVN0cmluZyhKU0dsb2JhbERhdGEqKTsKLSAgICAg
ICAgdm9pZCBjcmVhdGVTaW5nbGVDaGFyYWN0ZXJTdHJpbmcoSlNHbG9iYWxEYXRhKiwgdW5zaWdu
ZWQgY2hhcik7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIGNyZWF0ZUVtcHR5U3Ry
aW5nKEpTR2xvYmFsRGF0YSopOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBjcmVh
dGVTaW5nbGVDaGFyYWN0ZXJTdHJpbmcoSlNHbG9iYWxEYXRhKiwgdW5zaWduZWQgY2hhcik7CiAK
ICAgICAgICAgSlNTdHJpbmcqIG1fZW1wdHlTdHJpbmc7CiAgICAgICAgIEZpeGVkQXJyYXk8SlNT
dHJpbmcqLCAweDEwMD4gbV9zaW5nbGVDaGFyYWN0ZXJTdHJpbmdzOwpJbmRleDogSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuaAkocmV2aXNpb24gNjM0NjEpCisrKyBK
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmgJKHdvcmtpbmcgY29weSkK
QEAgLTY5LDcgKzY5LDcgQEAKICAgICAgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKCkgeyBy
ZXR1cm4gbV9nbG9iYWxEYXRhOyB9CiAKICAgICAgICAgdm9pZCBhZGQoY29uc3QgSWRlbnRpZmll
ciYgaWRlbnRpZmllcikgeyBhZGQoaWRlbnRpZmllci51c3RyaW5nKCkucmVwKCkpOyB9Ci0gICAg
ICAgIHZvaWQgYWRkKFVTdHJpbmc6OlJlcCopOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wg
dm9pZCBhZGQoVVN0cmluZzo6UmVwKik7CiAgICAgICAgIHZvaWQgYWRkS25vd25VbmlxdWUoVVN0
cmluZzo6UmVwKiBpZGVudGlmaWVyKSB7IG1fZGF0YS0+cHJvcGVydHlOYW1lVmVjdG9yKCkuYXBw
ZW5kKElkZW50aWZpZXIobV9nbG9iYWxEYXRhLCBpZGVudGlmaWVyKSk7IH0KIAogICAgICAgICBJ
ZGVudGlmaWVyJiBvcGVyYXRvcltdKHVuc2lnbmVkIGkpIHsgcmV0dXJuIG1fZGF0YS0+cHJvcGVy
dHlOYW1lVmVjdG9yKClbaV07IH0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3Iu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgJKHJldmlzaW9u
IDYzNDYxKQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oCSh3b3JraW5nIGNvcHkp
CkBAIC00NSwxMiArNDUsMTIgQEAKICAgICBKU09iamVjdCogY3JlYXRlVHlwZUVycm9yKEpTR2xv
YmFsT2JqZWN0KiwgY29uc3QgVVN0cmluZyYpOwogICAgIEpTT2JqZWN0KiBjcmVhdGVVUklFcnJv
cihKU0dsb2JhbE9iamVjdCosIGNvbnN0IFVTdHJpbmcmKTsKICAgICAvLyBFeGVjU3RhdGUgd3Jh
cHBlcnMuCi0gICAgSlNPYmplY3QqIGNyZWF0ZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJp
bmcmKTsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgSlNPYmplY3QqIGNyZWF0ZUVycm9yKEV4ZWNT
dGF0ZSosIGNvbnN0IFVTdHJpbmcmKTsKICAgICBKU09iamVjdCogY3JlYXRlRXZhbEVycm9yKEV4
ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmKTsKICAgICBKU09iamVjdCogY3JlYXRlUmFuZ2VFcnJv
cihFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJik7Ci0gICAgSlNPYmplY3QqIGNyZWF0ZVJlZmVy
ZW5jZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmKTsKLSAgICBKU09iamVjdCogY3Jl
YXRlU3ludGF4RXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYpOwotICAgIEpTT2JqZWN0
KiBjcmVhdGVUeXBlRXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYpOworICAgIEpTX0VY
UE9SVEVEX1NZTUJPTCBKU09iamVjdCogY3JlYXRlUmVmZXJlbmNlRXJyb3IoRXhlY1N0YXRlKiwg
Y29uc3QgVVN0cmluZyYpOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBKU09iamVjdCogY3JlYXRl
U3ludGF4RXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYpOworICAgIEpTX0VYUE9SVEVE
X1NZTUJPTCBKU09iamVjdCogY3JlYXRlVHlwZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJp
bmcmKTsKICAgICBKU09iamVjdCogY3JlYXRlVVJJRXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgVVN0
cmluZyYpOwogCiAgICAgLy8gTWV0aG9kcyB0byBhZGQgCkBAIC02MiwxMiArNjIsMTIgQEAKICAg
ICBKU09iamVjdCogYWRkRXJyb3JJbmZvKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiBlcnJvciwgaW50
IGxpbmUsIGNvbnN0IFNvdXJjZUNvZGUmLCBpbnQgZGl2b3RQb2ludCwgaW50IHN0YXJ0T2Zmc2V0
LCBpbnQgZW5kT2Zmc2V0LCBib29sIHdpdGhDYXJldCA9IHRydWUpOwogCiAgICAgLy8gTWV0aG9k
cyB0byB0aHJvdyBFcnJvcnMuCi0gICAgSlNWYWx1ZSB0aHJvd0Vycm9yKEV4ZWNTdGF0ZSosIEpT
VmFsdWUpOwotICAgIEpTT2JqZWN0KiB0aHJvd0Vycm9yKEV4ZWNTdGF0ZSosIEpTT2JqZWN0Kik7
CisgICAgSlNfRVhQT1JURURfU1lNQk9MIEpTVmFsdWUgdGhyb3dFcnJvcihFeGVjU3RhdGUqLCBK
U1ZhbHVlKTsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgSlNPYmplY3QqIHRocm93RXJyb3IoRXhl
Y1N0YXRlKiwgSlNPYmplY3QqKTsKIAogICAgIC8vIENvbnZlbmllbmNlIHdyYXBwZXJzLCBjcmVh
dGUgYW4gdGhyb3cgYW4gZXhjZXB0aW9uIHdpdGggYSBkZWZhdWx0IG1lc3NhZ2UuCi0gICAgSlNP
YmplY3QqIHRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSopOwotICAgIEpTT2JqZWN0KiB0aHJvd1N5
bnRheEVycm9yKEV4ZWNTdGF0ZSopOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBKU09iamVjdCog
dGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRlKik7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIEpTT2Jq
ZWN0KiB0aHJvd1N5bnRheEVycm9yKEV4ZWNTdGF0ZSopOwogCiAgICAgLy8gQ29udmVuaWVuY2Ug
d3JhcHBlcnMsIHdyYXAgcmVzdWx0IGFzIGFuIEVuY29kZWRKU1ZhbHVlLgogICAgIGlubGluZSBF
bmNvZGVkSlNWYWx1ZSB0aHJvd1ZNRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGVycm9y
KSB7IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFcnJvcihleGVjLCBlcnJvcikpOyB9Cklu
ZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuaAkocmV2aXNpb24gNjM0NjEpCisrKyBKYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsMTkgKzQ4LDE5
IEBACiAgICAgICAgIHR5cGVkZWYgVVN0cmluZ0ltcGwgUmVwOwogICAgIAogICAgIHB1YmxpYzoK
LSAgICAgICAgVVN0cmluZygpIHt9Ci0gICAgICAgIFVTdHJpbmcoY29uc3QgY2hhciopOyAvLyBD
b25zdHJ1Y3RvciBmb3IgbnVsbC10ZXJtaW5hdGVkIHN0cmluZy4KLSAgICAgICAgVVN0cmluZyhj
b25zdCBjaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICAgICAgVVN0cmluZyhjb25zdCBVQ2hh
ciosIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgICAgIFVTdHJpbmcoY29uc3QgVmVjdG9yPFVDaGFy
PiYgYnVmZmVyKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIFVTdHJpbmcoKSB7fQorICAg
ICAgICBKU19FWFBPUlRFRF9TWU1CT0wgVVN0cmluZyhjb25zdCBjaGFyKik7IC8vIENvbnN0cnVj
dG9yIGZvciBudWxsLXRlcm1pbmF0ZWQgc3RyaW5nLgorICAgICAgICBKU19FWFBPUlRFRF9TWU1C
T0wgVVN0cmluZyhjb25zdCBjaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICAgICAgSlNfRVhQ
T1JURURfU1lNQk9MIFVTdHJpbmcoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOworICAg
ICAgICBKU19FWFBPUlRFRF9TWU1CT0wgVVN0cmluZyhjb25zdCBWZWN0b3I8VUNoYXI+JiBidWZm
ZXIpOwogCi0gICAgICAgIFVTdHJpbmcoY29uc3QgVVN0cmluZyYgcykKKyAgICAgICAgSlNfRVhQ
T1JURURfU1lNQk9MIFVTdHJpbmcoY29uc3QgVVN0cmluZyYgcykKICAgICAgICAgICAgIDogbV9y
ZXAocy5tX3JlcCkKICAgICAgICAgewogICAgICAgICB9CiAKICAgICAgICAgLy8gU3BlY2lhbCBj
b25zdHJ1Y3RvciBmb3IgY2FzZXMgd2hlcmUgd2Ugb3ZlcndyaXRlIGFuIG9iamVjdCBpbiBwbGFj
ZS4KLSAgICAgICAgVVN0cmluZyhQbGFjZW1lbnROZXdBZG9wdFR5cGUpCisgICAgICAgIEpTX0VY
UE9SVEVEX1NZTUJPTCBVU3RyaW5nKFBsYWNlbWVudE5ld0Fkb3B0VHlwZSkKICAgICAgICAgICAg
IDogbV9yZXAoUGxhY2VtZW50TmV3QWRvcHQpCiAgICAgICAgIHsKICAgICAgICAgfQpAQCAtNzEs
MTUgKzcxLDE1IEBACiAgICAgICAgICAgICByZXR1cm4gUmVwOjphZG9wdCh2ZWN0b3IpOwogICAg
ICAgICB9CiAKLSAgICAgICAgc3RhdGljIFVTdHJpbmcgZnJvbShpbnQpOwotICAgICAgICBzdGF0
aWMgVVN0cmluZyBmcm9tKGxvbmcgbG9uZyk7Ci0gICAgICAgIHN0YXRpYyBVU3RyaW5nIGZyb20o
dW5zaWduZWQpOwotICAgICAgICBzdGF0aWMgVVN0cmluZyBmcm9tKGxvbmcpOwotICAgICAgICBz
dGF0aWMgVVN0cmluZyBmcm9tKGRvdWJsZSk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBz
dGF0aWMgVVN0cmluZyBmcm9tKGludCk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0
aWMgVVN0cmluZyBmcm9tKGxvbmcgbG9uZyk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBz
dGF0aWMgVVN0cmluZyBmcm9tKHVuc2lnbmVkKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9M
IHN0YXRpYyBVU3RyaW5nIGZyb20obG9uZyk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBz
dGF0aWMgVVN0cmluZyBmcm9tKGRvdWJsZSk7CiAKICAgICAgICAgLy8gTk9URTogVGhpcyBtZXRo
b2Qgc2hvdWxkIG9ubHkgYmUgdXNlZCBmb3IgKmRlYnVnZ2luZyogcHVycG9zZXMgYXMgaXQKICAg
ICAgICAgLy8gaXMgbmVpdGhlciBVbmljb2RlIHNhZmUgbm9yIGZyZWUgZnJvbSBzaWRlIGVmZmVj
dHMgbm9yIHRocmVhZC1zYWZlLgotICAgICAgICBjaGFyKiBhc2NpaSgpIGNvbnN0OworICAgICAg
ICBKU19FWFBPUlRFRF9TWU1CT0wgY2hhciogYXNjaWkoKSBjb25zdDsKIAogICAgICAgICAvKioK
ICAgICAgICAgICogQ29udmVydCB0aGUgc3RyaW5nIHRvIFVURi04LCBhc3N1bWluZyBpdCBpcyBV
VEYtMTYgZW5jb2RlZC4KQEAgLTg5LDcgKzg5LDcgQEAKICAgICAgICAgICogZ3VhcmFudGVlZCB0
byBiZSBvdGhlcndpc2UgdmFsaWQuCiAgICAgICAgICAqIEluIHN0cmljdCBtb2RlLCBlcnJvciBp
cyByZXR1cm5lZCBhcyBudWxsIENTdHJpbmcuCiAgICAgICAgICAqLwotICAgICAgICBDU3RyaW5n
IFVURjhTdHJpbmcoYm9vbCBzdHJpY3QgPSBmYWxzZSkgY29uc3Q7CisgICAgICAgIEpTX0VYUE9S
VEVEX1NZTUJPTCBDU3RyaW5nIFVURjhTdHJpbmcoYm9vbCBzdHJpY3QgPSBmYWxzZSkgY29uc3Q7
CiAKICAgICAgICAgY29uc3QgVUNoYXIqIGRhdGEoKSBjb25zdAogICAgICAgICB7CkBAIC0xMDUs
NyArMTA1LDcgQEAKICAgICAgICAgICAgIHJldHVybiBtX3JlcC0+bGVuZ3RoKCk7CiAgICAgICAg
IH0KIAotICAgICAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuICFtX3JlcDsgfQorICAg
ICAgICBKU19FWFBPUlRFRF9TWU1CT0wgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhbV9y
ZXA7IH0KICAgICAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1fcmVwIHx8ICFt
X3JlcC0+bGVuZ3RoKCk7IH0KIAogICAgICAgICBib29sIGlzOEJpdCgpIGNvbnN0OwpAQCAtMTE2
LDkgKzExNiw5IEBACiAgICAgICAgIGRvdWJsZSB0b0RvdWJsZShib29sIHRvbGVyYXRlVHJhaWxp
bmdKdW5rKSBjb25zdDsKICAgICAgICAgZG91YmxlIHRvRG91YmxlKCkgY29uc3Q7CiAKLSAgICAg
ICAgdWludDMyX3QgdG9VSW50MzIoYm9vbCogb2sgPSAwKSBjb25zdDsKLSAgICAgICAgdWludDMy
X3QgdG9VSW50MzIoYm9vbCogb2ssIGJvb2wgdG9sZXJhdGVFbXB0eVN0cmluZykgY29uc3Q7Ci0g
ICAgICAgIHVpbnQzMl90IHRvU3RyaWN0VUludDMyKGJvb2wqIG9rID0gMCkgY29uc3Q7CisgICAg
ICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB1aW50MzJfdCB0b1VJbnQzMihib29sKiBvayA9IDApIGNv
bnN0OworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdWludDMyX3QgdG9VSW50MzIoYm9vbCog
b2ssIGJvb2wgdG9sZXJhdGVFbXB0eVN0cmluZykgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVEVE
X1NZTUJPTCB1aW50MzJfdCB0b1N0cmljdFVJbnQzMihib29sKiBvayA9IDApIGNvbnN0OwogCiAg
ICAgICAgIHVuc2lnbmVkIHRvQXJyYXlJbmRleChib29sKiBvayA9IDApIGNvbnN0OwogCkBAIC0x
MjgsNyArMTI4LDcgQEAKICAgICAgICAgdW5zaWduZWQgcmZpbmQoY29uc3QgVVN0cmluZyYgZiwg
dW5zaWduZWQgcG9zKSBjb25zdDsKICAgICAgICAgdW5zaWduZWQgcmZpbmQoVUNoYXIsIHVuc2ln
bmVkIHBvcykgY29uc3Q7CiAKLSAgICAgICAgVVN0cmluZyBzdWJzdHIodW5zaWduZWQgcG9zID0g
MCwgdW5zaWduZWQgbGVuID0gMHhGRkZGRkZGRikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVEVE
X1NZTUJPTCBVU3RyaW5nIHN1YnN0cih1bnNpZ25lZCBwb3MgPSAwLCB1bnNpZ25lZCBsZW4gPSAw
eEZGRkZGRkZGKSBjb25zdDsKIAogICAgICAgICBzdGF0aWMgY29uc3QgVVN0cmluZyYgbnVsbCgp
IHsgcmV0dXJuICpzX251bGxVU3RyaW5nOyB9CiAKQEAgLTE0Niw3ICsxNDYsMTIgQEAKICAgICAg
ICAgICAgIHJldHVybiBtX3JlcC0+Y29zdCgpOwogICAgICAgICB9CiAKLSAgICAgICAgQUxXQVlT
X0lOTElORSB+VVN0cmluZygpIHsgfQorICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgQUxXQVlT
X0lOTElORSB+VVN0cmluZygpIHsgfQorICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgVVN0cmlu
ZyYgb3BlcmF0b3I9KGNvbnN0IFVTdHJpbmcmIHMpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1f
cmVwID0gcy5tX3JlcDsKKyAgICAgICAgICAgIHJldHVybiAqdGhpczsKKyAgICAgICAgfQogICAg
IHByaXZhdGU6CiAgICAgICAgIFJlZlB0cjxSZXA+IG1fcmVwOwogCkluZGV4OiBKYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5jZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRGF0ZUluc3RhbmNlLmgJKHJldmlzaW9uIDYzNDYxKQorKysgSmF2YVNjcmlwdENv
cmUvcnVudGltZS9EYXRlSW5zdGFuY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTMgKzMxLDEz
IEBACiAKICAgICBjbGFzcyBEYXRlSW5zdGFuY2UgOiBwdWJsaWMgSlNXcmFwcGVyT2JqZWN0IHsK
ICAgICBwdWJsaWM6Ci0gICAgICAgIERhdGVJbnN0YW5jZShFeGVjU3RhdGUqLCBkb3VibGUpOwot
ICAgICAgICBEYXRlSW5zdGFuY2UoRXhlY1N0YXRlKiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0
dXJlPiwgZG91YmxlKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIERhdGVJbnN0YW5jZShF
eGVjU3RhdGUqLCBkb3VibGUpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgRGF0ZUluc3Rh
bmNlKEV4ZWNTdGF0ZSosIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIGRvdWJsZSk7CiAg
ICAgICAgIGV4cGxpY2l0IERhdGVJbnN0YW5jZShFeGVjU3RhdGUqLCBOb25OdWxsUGFzc1JlZlB0
cjxTdHJ1Y3R1cmU+KTsKIAogICAgICAgICBkb3VibGUgaW50ZXJuYWxOdW1iZXIoKSBjb25zdCB7
IHJldHVybiBpbnRlcm5hbFZhbHVlKCkudW5jaGVja2VkR2V0TnVtYmVyKCk7IH0KIAotICAgICAg
ICBzdGF0aWMgSlNfRVhQT1JUREFUQSBjb25zdCBDbGFzc0luZm8gaW5mbzsKKyAgICAgICAgc3Rh
dGljIEpTX0VYUE9SVEVEX1NZTUJPTCBjb25zdCBDbGFzc0luZm8gaW5mbzsKIAogICAgICAgICBj
b25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29yaWFuRGF0ZVRpbWUoRXhlY1N0YXRlKiBleGVj
KSBjb25zdAogICAgICAgICB7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JvcGVJbXBs
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9Sb3BlSW1wbC5oCShyZXZp
c2lvbiA2MzQ2MSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvUm9wZUltcGwuaAkod29ya2lu
ZyBjb3B5KQpAQCAtODMsNyArODMsNyBAQAogICAgIHsKICAgICB9CiAKLSAgICB2b2lkIGRlc3Ry
dWN0Tm9uUmVjdXJzaXZlKCk7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIHZvaWQgZGVzdHJ1Y3RO
b25SZWN1cnNpdmUoKTsKICAgICB2b2lkIGRlcmVmRmliZXJzTm9uUmVjdXJzaXZlKFZlY3RvcjxS
b3BlSW1wbCosIDMyPiYgd29ya1F1ZXVlKTsKIAogICAgIGJvb2wgaGFzT25lUmVmKCkgeyByZXR1
cm4gKG1fcmVmQ291bnRBbmRGbGFncyAmIHNfcmVmQ291bnRNYXNrKSA9PSBzX3JlZkNvdW50SW5j
cmVtZW50OyB9CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgJKHJldmlz
aW9uIDYzNDYxKQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAkod29y
a2luZyBjb3B5KQpAQCAtMTA0LDcgKzEwNCw3IEBACiAgICAgICAgIC8vIHRoZSBvcmlnaW5hbCBB
UEkuCiAgICAgICAgIGVudW0gR2xvYmFsRGF0YVR5cGUgeyBEZWZhdWx0LCBBUElDb250ZXh0R3Jv
dXAsIEFQSVNoYXJlZCB9OwogCi0gICAgICAgIHN0cnVjdCBDbGllbnREYXRhIHsKKyAgICAgICAg
c3RydWN0IEpTX0VYUE9SVEVEX1NZTUJPTCBDbGllbnREYXRhIHsKICAgICAgICAgICAgIHZpcnR1
YWwgfkNsaWVudERhdGEoKSA9IDA7CiAgICAgICAgIH07CiAKQEAgLTExMiwxMCArMTEyLDEwIEBA
CiAgICAgICAgIHN0YXRpYyBib29sIHNoYXJlZEluc3RhbmNlRXhpc3RzKCk7CiAgICAgICAgIHN0
YXRpYyBKU0dsb2JhbERhdGEmIHNoYXJlZEluc3RhbmNlKCk7CiAKLSAgICAgICAgc3RhdGljIFBh
c3NSZWZQdHI8SlNHbG9iYWxEYXRhPiBjcmVhdGUoVGhyZWFkU3RhY2tUeXBlKTsKLSAgICAgICAg
c3RhdGljIFBhc3NSZWZQdHI8SlNHbG9iYWxEYXRhPiBjcmVhdGVMZWFrZWQoVGhyZWFkU3RhY2tU
eXBlKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHN0YXRpYyBQYXNzUmVmUHRyPEpTR2xv
YmFsRGF0YT4gY3JlYXRlKFRocmVhZFN0YWNrVHlwZSk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZ
TUJPTCBzdGF0aWMgUGFzc1JlZlB0cjxKU0dsb2JhbERhdGE+IGNyZWF0ZUxlYWtlZChUaHJlYWRT
dGFja1R5cGUpOwogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxKU0dsb2JhbERhdGE+IGNyZWF0
ZUNvbnRleHRHcm91cChUaHJlYWRTdGFja1R5cGUpOwotICAgICAgICB+SlNHbG9iYWxEYXRhKCk7
CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB+SlNHbG9iYWxEYXRhKCk7CiAKICNpZiBFTkFC
TEUoSlNDX01VTFRJUExFX1RIUkVBRFMpCiAgICAgICAgIC8vIFdpbGwgc3RhcnQgdHJhY2tpbmcg
dGhyZWFkcyB0aGF0IHVzZSB0aGUgaGVhcCwgd2hpY2ggaXMgcmVzb3VyY2UtaGVhdnkuCkBAIC0x
NTEsMTAgKzE1MSwxMCBAQAogI2VuZGlmCiAKICAgICAgICAgc3RhdGljIHZvaWQgc3RvcmVWUHRy
cygpOwotICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSB2b2lkKiBqc0FycmF5VlB0cjsKLSAg
ICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgdm9pZCoganNCeXRlQXJyYXlWUHRyOwotICAgICAg
ICBzdGF0aWMgSlNfRVhQT1JUREFUQSB2b2lkKiBqc1N0cmluZ1ZQdHI7Ci0gICAgICAgIHN0YXRp
YyBKU19FWFBPUlREQVRBIHZvaWQqIGpzRnVuY3Rpb25WUHRyOworICAgICAgICBzdGF0aWMgSlNf
RVhQT1JURURfU1lNQk9MIHZvaWQqIGpzQXJyYXlWUHRyOworICAgICAgICBzdGF0aWMgSlNfRVhQ
T1JURURfU1lNQk9MIHZvaWQqIGpzQnl0ZUFycmF5VlB0cjsKKyAgICAgICAgc3RhdGljIEpTX0VY
UE9SVEVEX1NZTUJPTCB2b2lkKiBqc1N0cmluZ1ZQdHI7CisgICAgICAgIHN0YXRpYyBKU19FWFBP
UlRFRF9TWU1CT0wgdm9pZCoganNGdW5jdGlvblZQdHI7CiAKICAgICAgICAgSWRlbnRpZmllclRh
YmxlKiBpZGVudGlmaWVyVGFibGU7CiAgICAgICAgIENvbW1vbklkZW50aWZpZXJzKiBwcm9wZXJ0
eU5hbWVzOwpAQCAtMjI2LDExICsyMjYsMTEgQEAKICAgICAgICAgQ2FjaGVkVHJhbnNjZW5kZW50
YWxGdW5jdGlvbjxzaW4+IGNhY2hlZFNpbjsKICAgICAgICAgV1RGOjpUaHJlYWRTcGVjaWZpYzxj
aGFyKj4gc3RhY2tHdWFyZHM7CiAKLSAgICAgICAgdm9pZCByZXNldERhdGVDYWNoZSgpOworICAg
ICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCByZXNldERhdGVDYWNoZSgpOwogCi0gICAgICAg
IHZvaWQgc3RhcnRTYW1wbGluZygpOwotICAgICAgICB2b2lkIHN0b3BTYW1wbGluZygpOwotICAg
ICAgICB2b2lkIGR1bXBTYW1wbGVEYXRhKEV4ZWNTdGF0ZSogZXhlYyk7CisgICAgICAgIEpTX0VY
UE9SVEVEX1NZTUJPTCB2b2lkIHN0YXJ0U2FtcGxpbmcoKTsKKyAgICAgICAgSlNfRVhQT1JURURf
U1lNQk9MIHZvaWQgc3RvcFNhbXBsaW5nKCk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2
b2lkIGR1bXBTYW1wbGVEYXRhKEV4ZWNTdGF0ZSogZXhlYyk7CiAgICAgICAgIFJlZ0V4cENhY2hl
KiByZWdFeHBDYWNoZSgpIHsgcmV0dXJuIG1fcmVnRXhwQ2FjaGU7IH0KICAgICBwcml2YXRlOgog
ICAgICAgICBKU0dsb2JhbERhdGEoR2xvYmFsRGF0YVR5cGUsIFRocmVhZFN0YWNrVHlwZSk7Cklu
ZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RpbWVvdXRDaGVja2VyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9UaW1lb3V0Q2hlY2tlci5oCShyZXZpc2lvbiA2MzQ2
MSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGltZW91dENoZWNrZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtNTYsOSArNTYsOSBAQAogICAgICAgICAgICAgLS1tX3N0YXJ0Q291bnQ7CiAgICAg
ICAgIH0KIAotICAgICAgICB2b2lkIHJlc2V0KCk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJP
TCB2b2lkIHJlc2V0KCk7CiAKLSAgICAgICAgYm9vbCBkaWRUaW1lT3V0KEV4ZWNTdGF0ZSopOwor
ICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgYm9vbCBkaWRUaW1lT3V0KEV4ZWNTdGF0ZSopOwog
CiAgICAgcHJpdmF0ZToKICAgICAgICAgdW5zaWduZWQgbV90aW1lb3V0SW50ZXJ2YWw7CkluZGV4
OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbGxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db2xsZWN0b3IuY3BwCShyZXZpc2lvbiA2MzQ2MSkKKysrIEph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29sbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUw
LDcgKzQ1MCw3IEBACiB9CiAKICNpZiBPUyhXSU5DRSkKLUpTX0VYUE9SVERBVEEgdm9pZCogZ19z
dGFja0Jhc2UgPSAwOworSlNfRVhQT1JURURfU1lNQk9MIHZvaWQqIGdfc3RhY2tCYXNlID0gMDsK
IAogaW5saW5lIGJvb2wgaXNQYWdlV3JpdGFibGUodm9pZCogcGFnZSkKIHsKSW5kZXg6IEphdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDYzNDYxKQorKysgSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC02
Nyw3ICs2Nyw3IEBACiAgICAgICAgICAgICAvLyBKU1ZhcmlhYmxlT2JqZWN0RGF0YSogdG8gSlNH
bG9iYWxPYmplY3REYXRhKi4KICAgICAgICAgICAgIHR5cGVkZWYgdm9pZCAoKkRlc3RydWN0b3Ip
KHZvaWQqKTsKIAotICAgICAgICAgICAgSlNHbG9iYWxPYmplY3REYXRhKERlc3RydWN0b3IgZGVz
dHJ1Y3RvcikKKyAgICAgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBKU0dsb2JhbE9iamVjdERh
dGEoRGVzdHJ1Y3RvciBkZXN0cnVjdG9yKQogICAgICAgICAgICAgICAgIDogSlNWYXJpYWJsZU9i
amVjdERhdGEoJnN5bWJvbFRhYmxlLCAwKQogICAgICAgICAgICAgICAgICwgZGVzdHJ1Y3Rvcihk
ZXN0cnVjdG9yKQogICAgICAgICAgICAgICAgICwgcmVnaXN0ZXJBcnJheVNpemUoMCkKQEAgLTE1
OSw3ICsxNTksNyBAQAogICAgICAgICB9OwogCiAgICAgcHVibGljOgotICAgICAgICB2b2lkKiBv
cGVyYXRvciBuZXcoc2l6ZV90LCBKU0dsb2JhbERhdGEqKTsKKyAgICAgICAgSlNfRVhQT1JURURf
U1lNQk9MIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIEpTR2xvYmFsRGF0YSopOwogICAgICAg
ICAKICAgICAgICAgZXhwbGljaXQgSlNHbG9iYWxPYmplY3QoKQogICAgICAgICAgICAgOiBKU1Zh
cmlhYmxlT2JqZWN0KEpTR2xvYmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoanNOdWxsKCkpLCBu
ZXcgSlNHbG9iYWxPYmplY3REYXRhKGRlc3Ryb3lKU0dsb2JhbE9iamVjdERhdGEpKQpAQCAtMTg3
LDE4ICsxODcsMTggQEAKICAgICAgICAgfQogCiAgICAgcHVibGljOgotICAgICAgICB2aXJ0dWFs
IH5KU0dsb2JhbE9iamVjdCgpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCB+
SlNHbG9iYWxPYmplY3QoKTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgbWFya0NoaWxkcmVuKE1h
cmtTdGFjayYpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCB2b2lkIG1hcmtD
aGlsZHJlbihNYXJrU3RhY2smKTsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKICAg
ICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgICAgIHZpcnR1YWwg
Ym9vbCBoYXNPd25Qcm9wZXJ0eUZvcldyaXRlKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXIm
KTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHB1dChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVy
JiwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwdXRX
aXRoQXR0cmlidXRlcyhFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgICAgICBKU19FWFBPUlRF
RF9TWU1CT0wgdmlydHVhbCB2b2lkIHB1dChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwg
SlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2
aXJ0dWFsIHZvaWQgcHV0V2l0aEF0dHJpYnV0ZXMoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKIAot
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGVmaW5lR2V0dGVyKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgSlNPYmplY3QqIGdldHRlckZ1bmMsIHVuc2lnbmVkIGF0dHJp
YnV0ZXMpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGVmaW5lU2V0dGVyKEV4ZWNTdGF0ZSosIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNPYmplY3QqIHNldHRlckZ1bmMsIHVuc2ln
bmVkIGF0dHJpYnV0ZXMpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCB2b2lk
IGRlZmluZUdldHRlcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IEpTT2JqZWN0KiBnZXR0ZXJGdW5jLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgSlNf
RVhQT1JURURfU1lNQk9MIHZpcnR1YWwgdm9pZCBkZWZpbmVTZXR0ZXIoRXhlY1N0YXRlKiwgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU09iamVjdCogc2V0dGVyRnVuYywgdW5zaWdu
ZWQgYXR0cmlidXRlcyk7CiAKICAgICAgICAgLy8gTGlua2VkIGxpc3Qgb2YgYWxsIGdsb2JhbCBv
YmplY3RzIHRoYXQgdXNlIHRoZSBzYW1lIEpTR2xvYmFsRGF0YS4KICAgICAgICAgSlNHbG9iYWxP
YmplY3QqJiBoZWFkKCkgeyByZXR1cm4gZCgpLT5nbG9iYWxEYXRhLT5oZWFkOyB9CkBAIC0yNjIs
MTMgKzI2MiwxMyBAQAogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0dsb2JhbE9iamVjdCgpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KIAotICAgICAgICB2aXJ0dWFsIEV4ZWNTdGF0ZSogZ2xvYmFs
RXhlYygpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCBFeGVjU3RhdGUqIGds
b2JhbEV4ZWMoKTsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSW50ZXJydXB0U2NyaXB0
KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBhbGxvd3NB
Y2Nlc3NGcm9tKGNvbnN0IEpTR2xvYmFsT2JqZWN0KikgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQog
Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBpc0R5bmFtaWNTY29wZShib29sJiByZXF1aXJlc0R5bmFt
aWNDaGVja3MpIGNvbnN0OworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCBib29s
IGlzRHluYW1pY1Njb3BlKGJvb2wmIHJlcXVpcmVzRHluYW1pY0NoZWNrcykgY29uc3Q7CiAKICAg
ICAgICAgSGFzaFNldDxHbG9iYWxDb2RlQmxvY2sqPiYgY29kZUJsb2NrcygpIHsgcmV0dXJuIGQo
KS0+Y29kZUJsb2NrczsgfQogCkBAIC0zMTUsMTAgKzMxNSwxMCBAQAogICAgICAgICB2b2lkIGFk
ZFN0YXRpY0dsb2JhbHMoR2xvYmFsUHJvcGVydHlJbmZvKiwgaW50IGNvdW50KTsKIAogICAgIHBy
aXZhdGU6Ci0gICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3lKU0dsb2JhbE9iamVjdERhdGEodm9p
ZCopOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgc3RhdGljIHZvaWQgZGVzdHJveUpTR2xv
YmFsT2JqZWN0RGF0YSh2b2lkKik7CiAKICAgICAgICAgLy8gRklYTUU6IEZvbGQgcmVzZXQgaW50
byBpbml0LgotICAgICAgICB2b2lkIGluaXQoSlNPYmplY3QqIHRoaXNWYWx1ZSk7CisgICAgICAg
IEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIGluaXQoSlNPYmplY3QqIHRoaXNWYWx1ZSk7CiAgICAg
ICAgIHZvaWQgcmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUpOwogCiAgICAgICAgIHZvaWQgc2V0UmVn
aXN0ZXJzKFJlZ2lzdGVyKiByZWdpc3RlcnMsIFJlZ2lzdGVyKiByZWdpc3RlckFycmF5LCBzaXpl
X3QgY291bnQpOwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2xsZWN0b3JIZWFwSXRl
cmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbGxlY3Rvckhl
YXBJdGVyYXRvci5oCShyZXZpc2lvbiA2MzQ2MSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29sbGVjdG9ySGVhcEl0ZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDYgQEAK
ICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJD
b2xsZWN0b3IuaCIKIAogI2lmbmRlZiBDb2xsZWN0b3JIZWFwSXRlcmF0b3JfaApJbmRleDogSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdFdpdGhHbG9iYWxPYmplY3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0V2l0aEdsb2JhbE9iamVjdC5oCShy
ZXZpc2lvbiA2MzQ2MSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RXaXRoR2xv
YmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDEwICszOSwxMCBAQAogICAgICAgICBy
ZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUocHJvdG8sIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVj
dHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50KTsKICAgICB9CiAKLSAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KCkgY29uc3Q7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoKSBjb25zdDsKIAogcHJvdGVjdGVkOgotICAgIEpTT2Jq
ZWN0V2l0aEdsb2JhbE9iamVjdChKU0dsb2JhbE9iamVjdCosIE5vbk51bGxQYXNzUmVmUHRyPFN0
cnVjdHVyZT4pOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBKU09iamVjdFdpdGhHbG9iYWxPYmpl
Y3QoSlNHbG9iYWxPYmplY3QqLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+KTsKIAogICAg
IEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdChOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0
cnVjdHVyZSkKICAgICAgICAgOiBKU09iamVjdChzdHJ1Y3R1cmUpCkluZGV4OiBKYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTVmFsdWUuaAkocmV2aXNpb24gNjM0NjEpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsOSArNTUsOSBAQAogICAgIHR5cGVkZWYg
dm9pZCogRW5jb2RlZEpTVmFsdWU7CiAjZW5kaWYKIAotICAgIGRvdWJsZSBub25JbmxpbmVOYU4o
KTsKLSAgICBpbnQzMl90IHRvSW50MzJTbG93Q2FzZShkb3VibGUsIGJvb2wmIG9rKTsKLSAgICB1
aW50MzJfdCB0b1VJbnQzMlNsb3dDYXNlKGRvdWJsZSwgYm9vbCYgb2spOworICAgIEpTX0VYUE9S
VEVEX1NZTUJPTCBkb3VibGUgbm9uSW5saW5lTmFOKCk7CisgICAgSlNfRVhQT1JURURfU1lNQk9M
IGludDMyX3QgdG9JbnQzMlNsb3dDYXNlKGRvdWJsZSwgYm9vbCYgb2spOworICAgIEpTX0VYUE9S
VEVEX1NZTUJPTCB1aW50MzJfdCB0b1VJbnQzMlNsb3dDYXNlKGRvdWJsZSwgYm9vbCYgb2spOwog
CiAgICAgY2xhc3MgSlNWYWx1ZSB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKU0ltbWVkaWF0ZTsK
QEAgLTIwMCw3ICsyMDAsNyBAQAogCiAgICAgICAgIGJvb2wgaXNDZWxsKCkgY29uc3Q7CiAgICAg
ICAgIEpTQ2VsbCogYXNDZWxsKCkgY29uc3Q7Ci0gICAgICAgIGJvb2wgaXNWYWxpZENhbGxlZSgp
OworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgYm9vbCBpc1ZhbGlkQ2FsbGVlKCk7CiAKICNp
Zm5kZWYgTkRFQlVHCiAgICAgICAgIGNoYXIqIGRlc2NyaXB0aW9uKCk7CkBAIC0yMTEsOCArMjEx
LDggQEAKICAgICAgICAgSlNWYWx1ZShIYXNoVGFibGVEZWxldGVkVmFsdWVUYWcpOwogCiAgICAg
ICAgIGlubGluZSBjb25zdCBKU1ZhbHVlIGFzVmFsdWUoKSBjb25zdCB7IHJldHVybiAqdGhpczsg
fQotICAgICAgICBKU09iamVjdCogdG9PYmplY3RTbG93Q2FzZShFeGVjU3RhdGUqKSBjb25zdDsK
LSAgICAgICAgSlNPYmplY3QqIHRvVGhpc09iamVjdFNsb3dDYXNlKEV4ZWNTdGF0ZSopIGNvbnN0
OworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgSlNPYmplY3QqIHRvT2JqZWN0U2xvd0Nhc2Uo
RXhlY1N0YXRlKikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBKU09iamVjdCog
dG9UaGlzT2JqZWN0U2xvd0Nhc2UoRXhlY1N0YXRlKikgY29uc3Q7CiAKICAgICAgICAgSlNPYmpl
Y3QqIHN5bnRoZXNpemVQcm90b3R5cGUoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgICAgIEpTT2Jq
ZWN0KiBzeW50aGVzaXplT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0OwpJbmRleDogSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5oCShyZXZpc2lvbiA2MzQ2MSkKKysr
IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ2LDggKzQ2LDggQEAKICAgICAgICAgSlNWYWx1ZSB2YWx1ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdmFsdWU7IH0KICAgICAgICAgSlNWYWx1ZSBnZXR0ZXIoKSBjb25zdDsKICAgICAgICAg
SlNWYWx1ZSBzZXR0ZXIoKSBjb25zdDsKLSAgICAgICAgdm9pZCBzZXRVbmRlZmluZWQoKTsKLSAg
ICAgICAgdm9pZCBzZXREZXNjcmlwdG9yKEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0
ZXMpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBzZXRVbmRlZmluZWQoKTsKKyAg
ICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZvaWQgc2V0RGVzY3JpcHRvcihKU1ZhbHVlIHZhbHVl
LCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKICAgICAgICAgdm9pZCBzZXRBY2Nlc3NvckRlc2NyaXB0
b3IoSlNWYWx1ZSBnZXR0ZXIsIEpTVmFsdWUgc2V0dGVyLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsK
ICAgICAgICAgdm9pZCBzZXRXcml0YWJsZShib29sKTsKICAgICAgICAgdm9pZCBzZXRFbnVtZXJh
YmxlKGJvb2wpOwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2xsZWN0b3IuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbGxlY3Rvci5oCShyZXZpc2lvbiA2
MzQ2MSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29sbGVjdG9yLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTc1LDEzICs3NSwxMyBAQAogICAgIHB1YmxpYzoKICAgICAgICAgY2xhc3MgVGhyZWFk
OwogCi0gICAgICAgIHZvaWQgZGVzdHJveSgpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wg
dm9pZCBkZXN0cm95KCk7CiAKICAgICAgICAgdm9pZCogYWxsb2NhdGVOdW1iZXIoc2l6ZV90KTsK
LSAgICAgICAgdm9pZCogYWxsb2NhdGUoc2l6ZV90KTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lN
Qk9MIHZvaWQqIGFsbG9jYXRlKHNpemVfdCk7CiAKLSAgICAgICAgYm9vbCBpc0J1c3koKTsgLy8g
dHJ1ZSBpZiBhbiBhbGxvY2F0aW9uIG9yIGNvbGxlY3Rpb24gaXMgaW4gcHJvZ3Jlc3MKLSAgICAg
ICAgdm9pZCBjb2xsZWN0QWxsR2FyYmFnZSgpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wg
Ym9vbCBpc0J1c3koKTsgLy8gdHJ1ZSBpZiBhbiBhbGxvY2F0aW9uIG9yIGNvbGxlY3Rpb24gaXMg
aW4gcHJvZ3Jlc3MKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZvaWQgY29sbGVjdEFsbEdh
cmJhZ2UoKTsKIAogICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG1pbkV4dHJhQ29zdCA9IDI1
NjsKICAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhFeHRyYUNvc3QgPSAxMDI0ICogMTAy
NDsKQEAgLTk0LDEyICs5NCwxMiBAQAogICAgICAgICAgICAgc2l6ZV90IGZyZWU7CiAgICAgICAg
IH07CiAgICAgICAgIFN0YXRpc3RpY3Mgc3RhdGlzdGljcygpIGNvbnN0OwotICAgICAgICBzaXpl
X3Qgc2l6ZSgpIGNvbnN0OworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgc2l6ZV90IHNpemUo
KSBjb25zdDsKIAotICAgICAgICB2b2lkIHByb3RlY3QoSlNWYWx1ZSk7CisgICAgICAgIEpTX0VY
UE9SVEVEX1NZTUJPTCB2b2lkIHByb3RlY3QoSlNWYWx1ZSk7CiAgICAgICAgIC8vIFJldHVybnMg
dHJ1ZSBpZiB0aGUgdmFsdWUgaXMgbm8gbG9uZ2VyIHByb3RlY3RlZCBieSBhbnkgcHJvdGVjdCBw
b2ludGVycwogICAgICAgICAvLyAodGhvdWdoIGl0IG1heSBzdGlsbCBiZSBhbGl2ZSBkdWUgdG8g
aGVhcC9zdGFjayByZWZlcmVuY2VzKS4KLSAgICAgICAgYm9vbCB1bnByb3RlY3QoSlNWYWx1ZSk7
CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBib29sIHVucHJvdGVjdChKU1ZhbHVlKTsKIAog
ICAgICAgICBzdGF0aWMgSGVhcCogaGVhcChKU1ZhbHVlKTsgLy8gMCBmb3IgaW1tZWRpYXRlIHZh
bHVlcwogICAgICAgICBzdGF0aWMgSGVhcCogaGVhcChKU0NlbGwqKTsKQEAgLTE0Niw3ICsxNDYs
NyBAQAogICAgICAgICB2b2lkIGNsZWFyTWFya0JpdHMoQ29sbGVjdG9yQmxvY2sqKTsKICAgICAg
ICAgc2l6ZV90IG1hcmtlZENlbGxzKHNpemVfdCBzdGFydEJsb2NrID0gMCwgc2l6ZV90IHN0YXJ0
Q2VsbCA9IDApIGNvbnN0OwogCi0gICAgICAgIHZvaWQgcmVjb3JkRXh0cmFDb3N0KHNpemVfdCk7
CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIHJlY29yZEV4dHJhQ29zdChzaXplX3Qp
OwogCiAgICAgICAgIHZvaWQgYWRkVG9TdGF0aXN0aWNzKFN0YXRpc3RpY3MmKSBjb25zdDsKIApJ
bmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dyYXBwZXJPYmplY3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9iamVjdC5oCShyZXZpc2lvbiA2
MzQ2MSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAKICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IEFub255bW91c1Nsb3RDb3VudCA9IDEgKyBKU09iamVjdDo6QW5vbnltb3VzU2xvdENvdW50Owog
CiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCB2b2lkIG1hcmtDaGlsZHJlbihNYXJrU3Rh
Y2smKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHZpcnR1YWwgdm9pZCBtYXJrQ2hpbGRy
ZW4oTWFya1N0YWNrJik7CiAgICAgICAgIAogICAgICAgICBKU1ZhbHVlIG1faW50ZXJuYWxWYWx1
ZTsKICAgICB9OwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWxsRGF0YS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FsbERhdGEuaAkocmV2aXNpb24gNjM0
NjEpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhbGxEYXRhLmgJKHdvcmtpbmcgY29weSkK
QEAgLTU4LDcgKzU4LDcgQEAKICAgICAgICAgfSBqczsKICAgICB9OwogCi0gICAgSlNWYWx1ZSBj
YWxsKEV4ZWNTdGF0ZSosIEpTVmFsdWUgZnVuY3Rpb25PYmplY3QsIENhbGxUeXBlLCBjb25zdCBD
YWxsRGF0YSYsIEpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0Jik7CisgICAgSlNfRVhQ
T1JURURfU1lNQk9MIEpTVmFsdWUgY2FsbChFeGVjU3RhdGUqLCBKU1ZhbHVlIGZ1bmN0aW9uT2Jq
ZWN0LCBDYWxsVHlwZSwgY29uc3QgQ2FsbERhdGEmLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3Qg
QXJnTGlzdCYpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApJbmRleDogSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db25zdHJ1Y3REYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db25zdHJ1Y3REYXRhLmgJKHJldmlzaW9uIDYzNDYxKQorKysgSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db25zdHJ1Y3REYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDcgKzU3LDcgQEAK
ICAgICAgICAgfSBqczsKICAgICB9OwogCi0gICAgSlNPYmplY3QqIGNvbnN0cnVjdChFeGVjU3Rh
dGUqLCBKU1ZhbHVlIGNvbnN0cnVjdG9yLCBDb25zdHJ1Y3RUeXBlLCBjb25zdCBDb25zdHJ1Y3RE
YXRhJiwgY29uc3QgQXJnTGlzdCYpOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBKU09iamVjdCog
Y29uc3RydWN0KEV4ZWNTdGF0ZSosIEpTVmFsdWUgY29uc3RydWN0b3IsIENvbnN0cnVjdFR5cGUs
IGNvbnN0IENvbnN0cnVjdERhdGEmLCBjb25zdCBBcmdMaXN0Jik7CiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwogCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcmtTdGFjay5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFya1N0YWNrLmgJKHJldmlzaW9uIDYzNDYx
KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXJrU3RhY2suaAkod29ya2luZyBjb3B5KQpA
QCAtODUsOCArODUsOCBAQAogICAgICAgICAgICAgTWFya1NldFByb3BlcnRpZXMgbV9wcm9wZXJ0
aWVzOwogICAgICAgICB9OwogCi0gICAgICAgIHN0YXRpYyB2b2lkKiBhbGxvY2F0ZVN0YWNrKHNp
emVfdCBzaXplKTsKLSAgICAgICAgc3RhdGljIHZvaWQgcmVsZWFzZVN0YWNrKHZvaWQqIGFkZHIs
IHNpemVfdCBzaXplKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHN0YXRpYyB2b2lkKiBh
bGxvY2F0ZVN0YWNrKHNpemVfdCBzaXplKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIHN0
YXRpYyB2b2lkIHJlbGVhc2VTdGFjayh2b2lkKiBhZGRyLCBzaXplX3Qgc2l6ZSk7CiAKICAgICAg
ICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVBhZ2VzaXplKCk7CiAgICAgICAgIHN0YXRpYyBzaXpl
X3QgcGFnZVNpemUoKQpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhy
ZWFkaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXpl
VGhyZWFkaW5nLmgJKHJldmlzaW9uIDYzNDYxKQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bml0aWFsaXplVGhyZWFkaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDkgKzMxLDkgQEAKIAog
bmFtZXNwYWNlIEpTQyB7CiAKLSAgICAvLyBUaGlzIGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVkIGZy
b20gdGhlIG1haW4gdGhyZWFkLiBJdCBpcyBzYWZlIHRvIGNhbGwgaXQgcmVwZWF0ZWRseS4KLSAg
ICAvLyBEYXJ3aW4gaXMgYW4gZXhjZXB0aW9uIHRvIHRoaXMgcnVsZTogaXQgaXMgT0sgdG8gY2Fs
bCB0aGlzIGZ1bmN0aW9uIGZyb20gYW55IHRocmVhZCwgZXZlbiByZWVudHJhbnRseS4KLSAgICB2
b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKTsKKy8vIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSBjYWxs
ZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQuIEl0IGlzIHNhZmUgdG8gY2FsbCBpdCByZXBlYXRlZGx5
LgorLy8gRGFyd2luIGlzIGFuIGV4Y2VwdGlvbiB0byB0aGlzIHJ1bGU6IGl0IGlzIE9LIHRvIGNh
bGwgdGhpcyBmdW5jdGlvbiBmcm9tIGFueSB0aHJlYWQsIGV2ZW4gcmVlbnRyYW50bHkuCitKU19F
WFBPUlRFRF9TWU1CT0wgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nKCk7CiAKIH0KIApJbmRleDog
SmF2YVNjcmlwdENvcmUvY29uZmlnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvY29u
ZmlnLmgJKHJldmlzaW9uIDYzNDYxKQorKysgSmF2YVNjcmlwdENvcmUvY29uZmlnLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI5LDI3ICsyOSwyOCBAQAogCiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+
CiAKLSNpZiAhUExBVEZPUk0oQ0hST01JVU0pICYmIE9TKFdJTkRPV1MpICYmICFkZWZpbmVkKEJV
SUxESU5HX1dYX18pICYmICFDT01QSUxFUihHQ0MpCisjaWYgIVBMQVRGT1JNKENIUk9NSVVNKSAm
JiBPUyhXSU5ET1dTKSAmJiAhQ09NUElMRVIoR0NDKQogI2lmIGRlZmluZWQoQlVJTERJTkdfSmF2
YVNjcmlwdENvcmUpIHx8IGRlZmluZWQoQlVJTERJTkdfV1RGKQotI2RlZmluZSBKU19FWFBPUlRE
QVRBIF9fZGVjbHNwZWMoZGxsZXhwb3J0KQorI2RlZmluZSBKU19FWFBPUlRFRF9TWU1CT0wgX19k
ZWNsc3BlYyhkbGxleHBvcnQpCiAjZWxzZQotI2RlZmluZSBKU19FWFBPUlREQVRBIF9fZGVjbHNw
ZWMoZGxsaW1wb3J0KQorI2RlZmluZSBKU19FWFBPUlRFRF9TWU1CT0wgX19kZWNsc3BlYyhkbGxp
bXBvcnQpCiAjZW5kaWYKLSNkZWZpbmUgSlNfRVhQT1JUQ0xBU1MgSlNfRVhQT1JUREFUQQorI2Vs
aWYgZGVmaW5lZChfX0dOVUNfXykgJiYgIWRlZmluZWQoX19DQ19BUk0pICYmICFkZWZpbmVkKF9f
QVJNQ0NfXykKKyNkZWZpbmUgSlNfRVhQT1JURURfU1lNQk9MIF9fYXR0cmlidXRlX18oKHZpc2li
aWxpdHkoImRlZmF1bHQiKSkpCiAjZWxzZQotI2RlZmluZSBKU19FWFBPUlREQVRBCi0jZGVmaW5l
IEpTX0VYUE9SVENMQVNTCisjZGVmaW5lIEpTX0VYUE9SVEVEX1NZTUJPTAogI2VuZGlmCiAKICNp
ZiBPUyhXSU5ET1dTKQogCi0vLyBJZiB3ZSBkb24ndCBkZWZpbmUgdGhlc2UsIHRoZXkgZ2V0IGRl
ZmluZWQgaW4gd2luZGVmLmguIAotLy8gV2Ugd2FudCB0byB1c2Ugc3RkOjptaW4gYW5kIHN0ZDo6
bWF4CisvKiBJZiB3ZSBkb24ndCBkZWZpbmUgdGhlc2UsIHRoZXkgZ2V0IGRlZmluZWQgaW4gd2lu
ZGVmLmguIAorICogV2Ugd2FudCB0byB1c2Ugc3RkOjptaW4gYW5kIHN0ZDo6bWF4CisgKi8KICNk
ZWZpbmUgbWF4IG1heAogI2RlZmluZSBtaW4gbWluCiAKICNpZiAhQ09NUElMRVIoTVNWQzdfT1Jf
TE9XRVIpICYmICFPUyhXSU5DRSkKLS8vIFdlIG5lZWQgdG8gZGVmaW5lIHRoaXMgYmVmb3JlIHRo
ZSBmaXJzdCAjaW5jbHVkZSBvZiBzdGRsaWIuaCBvciBpdCB3b24ndCBjb250YWluIHJhbmRfcy4K
Ky8qIFdlIG5lZWQgdG8gZGVmaW5lIHRoaXMgYmVmb3JlIHRoZSBmaXJzdCAjaW5jbHVkZSBvZiBz
dGRsaWIuaCBvciBpdCB3b24ndCBjb250YWluIHJhbmRfcy4gKi8KICNpZm5kZWYgX0NSVF9SQU5E
X1MKICNkZWZpbmUgX0NSVF9SQU5EX1MKICNlbmRpZgpAQCAtNzIsMTMgKzczLDIwIEBACiAjaW5j
bHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNlbmRpZgogCi0vLyB0aGlzIGJyZWFrcyBjb21waWxh
dGlvbiBvZiA8UUZvbnREYXRhYmFzZT4sIGF0IGxlYXN0LCBzbyB0dXJuIGl0IG9mZiBmb3Igbm93
Ci0vLyBBbHNvIGdlbmVyYXRlcyBlcnJvcnMgb24gd3ggb24gV2luZG93cywgYmVjYXVzZSB0aGVz
ZSBmdW5jdGlvbnMKLS8vIGFyZSB1c2VkIGZyb20gd3ggaGVhZGVycy4gCisvKiB0aGlzIGJyZWFr
cyBjb21waWxhdGlvbiBvZiA8UUZvbnREYXRhYmFzZT4sIGF0IGxlYXN0LCBzbyB0dXJuIGl0IG9m
ZiBmb3Igbm93CisgKiAgQWxzbyBnZW5lcmF0ZXMgZXJyb3JzIG9uIHd4IG9uIFdpbmRvd3MsIGJl
Y2F1c2UgdGhlc2UgZnVuY3Rpb25zCisgKiAgYXJlIHVzZWQgZnJvbSB3eCBoZWFkZXJzLgorICov
IAogI2lmICFQTEFURk9STShRVCkgJiYgIVBMQVRGT1JNKFdYKQogI2luY2x1ZGUgPHd0Zi9EaXNh
bGxvd0NUeXBlLmg+CiAjZW5kaWYKIAorLy8gT24gTVNXLCB3eCBoZWFkZXJzIG5lZWQgdG8gYmUg
aW5jbHVkZWQgYmVmb3JlIHdpbmRvd3MuaCBpcy4KKy8vIFRoZSBvbmx5IHdheSB3ZSBjYW4gYWx3
YXlzIGVuc3VyZSB0aGlzIGlzIGlmIHdlIGluY2x1ZGUgd3ggaGVyZS4KKyNpZiBQTEFURk9STShX
WCkKKyNpbmNsdWRlIDx3eC9kZWZzLmg+CisjZW5kaWYKKwogI2lmIENPTVBJTEVSKE1TVkMpCiAj
ZGVmaW5lIFNLSVBfU1RBVElDX0NPTlNUUlVDVE9SU19PTl9NU1ZDIDEKICNlbHNlCkluZGV4OiBK
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBKYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAkocmV2
aXNpb24gNjM0NjEpCisrKyBKYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtOTAsNyArOTAsNyBAQAogICAgICAgICB0eXBlZGVm
IERlY2xhcmF0aW9uU3RhY2tzOjpWYXJTdGFjayBWYXJTdGFjazsKICAgICAgICAgdHlwZWRlZiBE
ZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFjayBGdW5jdGlvblN0YWNrOwogCi0gICAgICAg
IHN0YXRpYyB2b2lkIHNldER1bXBzR2VuZXJhdGVkQ29kZShib29sIGR1bXBzR2VuZXJhdGVkQ29k
ZSk7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0aWMgdm9pZCBzZXREdW1wc0dlbmVy
YXRlZENvZGUoYm9vbCBkdW1wc0dlbmVyYXRlZENvZGUpOwogICAgICAgICBzdGF0aWMgYm9vbCBk
dW1wc0dlbmVyYXRlZENvZGUoKTsKIAogICAgICAgICBCeXRlY29kZUdlbmVyYXRvcihQcm9ncmFt
Tm9kZSosIGNvbnN0IERlYnVnZ2VyKiwgY29uc3QgU2NvcGVDaGFpbiYsIFN5bWJvbFRhYmxlKiwg
UHJvZ3JhbUNvZGVCbG9jayopOwpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL1JhbmRvbU51bWJl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9SYW5kb21OdW1iZXIuaAkocmV2
aXNpb24gNjM0NjEpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvUmFuZG9tTnVtYmVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI4LDkgKzI4LDkgQEAKIAogbmFtZXNwYWNlIFdURiB7CiAKLSAgICAvLyBS
ZXR1cm5zIGEgcHNldWRvLXJhbmRvbSBudW1iZXIgaW4gdGhlIHJhbmdlIFswLCAxKSwgYXR0ZW1w
dHMgdG8gYmUKLSAgICAvLyBjcnlwdG9ncmFwaGljYWxseSBzZWN1cmUgaWYgcG9zc2libGUgb24g
dGhlIHRhcmdldCBwbGF0Zm9ybQotICAgIGRvdWJsZSByYW5kb21OdW1iZXIoKTsKKy8vIFJldHVy
bnMgYSBwc2V1ZG8tcmFuZG9tIG51bWJlciBpbiB0aGUgcmFuZ2UgWzAsIDEpLCBhdHRlbXB0cyB0
byBiZQorLy8gY3J5cHRvZ3JhcGhpY2FsbHkgc2VjdXJlIGlmIHBvc3NpYmxlIG9uIHRoZSB0YXJn
ZXQgcGxhdGZvcm0KK0pTX0VYUE9SVEVEX1NZTUJPTCBkb3VibGUgcmFuZG9tTnVtYmVyKCk7CiAK
IH0KIApJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaAko
cmV2aXNpb24gNjM0NjEpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvUmVmQ291bnRlZExlYWtDb3Vu
dGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDIyICsyNiwyMiBAQAogCiBuYW1lc3BhY2UgV1RG
IHsKICAgICAKLSAgICBzdHJ1Y3QgUmVmQ291bnRlZExlYWtDb3VudGVyIHsKLSAgICAgICAgc3Rh
dGljIHZvaWQgc3VwcHJlc3NNZXNzYWdlcyhjb25zdCBjaGFyKik7Ci0gICAgICAgIHN0YXRpYyB2
b2lkIGNhbmNlbE1lc3NhZ2VTdXBwcmVzc2lvbihjb25zdCBjaGFyKik7CitzdHJ1Y3QgSlNfRVhQ
T1JURURfU1lNQk9MIFJlZkNvdW50ZWRMZWFrQ291bnRlciB7CisgICAgc3RhdGljIHZvaWQgc3Vw
cHJlc3NNZXNzYWdlcyhjb25zdCBjaGFyKik7CisgICAgc3RhdGljIHZvaWQgY2FuY2VsTWVzc2Fn
ZVN1cHByZXNzaW9uKGNvbnN0IGNoYXIqKTsKICAgICAgICAgCi0gICAgICAgIGV4cGxpY2l0IFJl
ZkNvdW50ZWRMZWFrQ291bnRlcihjb25zdCBjaGFyKiBkZXNjcmlwdGlvbik7Ci0gICAgICAgIH5S
ZWZDb3VudGVkTGVha0NvdW50ZXIoKTsKKyAgICBleHBsaWNpdCBSZWZDb3VudGVkTGVha0NvdW50
ZXIoY29uc3QgY2hhciogZGVzY3JpcHRpb24pOworICAgIH5SZWZDb3VudGVkTGVha0NvdW50ZXIo
KTsKIAotICAgICAgICB2b2lkIGluY3JlbWVudCgpOwotICAgICAgICB2b2lkIGRlY3JlbWVudCgp
OworICAgIHZvaWQgaW5jcmVtZW50KCk7CisgICAgdm9pZCBkZWNyZW1lbnQoKTsKIAogI2lmbmRl
ZiBOREVCVUcKLSAgICBwcml2YXRlOgotICAgICAgICB2b2xhdGlsZSBpbnQgbV9jb3VudDsKLSAg
ICAgICAgY29uc3QgY2hhciogbV9kZXNjcmlwdGlvbjsKK3ByaXZhdGU6CisgICAgdm9sYXRpbGUg
aW50IG1fY291bnQ7CisgICAgY29uc3QgY2hhciogbV9kZXNjcmlwdGlvbjsKICNlbmRpZgotICAg
IH07Cit9OwogCiB9ICAvLyBuYW1lc3BhY2UgV1RGCiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0
Zi90ZXh0L0NTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9D
U3RyaW5nLmgJKHJldmlzaW9uIDYzNDYxKQorKysgSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvQ1N0
cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC01MiwxMiArNTIsMTMgQEAKIGNsYXNzIENTdHJpbmcg
ewogcHVibGljOgogICAgIENTdHJpbmcoKSB7IH0KLSAgICBDU3RyaW5nKGNvbnN0IGNoYXIqKTsK
LSAgICBDU3RyaW5nKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIEpTX0VYUE9S
VEVEX1NZTUJPTCBDU3RyaW5nKGNvbnN0IGNoYXIqKTsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wg
Q1N0cmluZyhjb25zdCBjaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBDU3RyaW5nKENTdHJp
bmdCdWZmZXIqIGJ1ZmZlcikgOiBtX2J1ZmZlcihidWZmZXIpIHsgfQotICAgIHN0YXRpYyBDU3Ry
aW5nIG5ld1VuaW5pdGlhbGl6ZWQoc2l6ZV90IGxlbmd0aCwgY2hhciomIGNoYXJhY3RlckJ1ZmZl
cik7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIHN0YXRpYyBDU3RyaW5nIG5ld1VuaW5pdGlhbGl6
ZWQoc2l6ZV90IGxlbmd0aCwgY2hhciomIGNoYXJhY3RlckJ1ZmZlcik7CiAKLSAgICBjb25zdCBj
aGFyKiBkYXRhKCkgY29uc3QKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgfkNTdHJpbmcoKSB7IH0K
KyAgICBKU19FWFBPUlRFRF9TWU1CT0wgY29uc3QgY2hhciogZGF0YSgpIGNvbnN0CiAgICAgewog
ICAgICAgICByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+ZGF0YSgpIDogMDsKICAgICB9CkBA
IC03Nyw3ICs3OCw3IEBACiAgICAgUmVmUHRyPENTdHJpbmdCdWZmZXI+IG1fYnVmZmVyOwogfTsK
IAotYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTdHJpbmcmIGEsIGNvbnN0IENTdHJpbmcmIGIpOwor
SlNfRVhQT1JURURfU1lNQk9MIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDU3RyaW5nJiBhLCBjb25z
dCBDU3RyaW5nJiBiKTsKIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgQ1N0cmluZyYgYSwg
Y29uc3QgQ1N0cmluZyYgYikgeyByZXR1cm4gIShhID09IGIpOyB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdURgpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nU3RhdGljcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nU3RhdGljcy5jcHAJKHJl
dmlzaW9uIDYzNDYxKQorKysgSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nU3RhdGljcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDEzICs0OSwxMyBAQAogICAgIHJldHVybiAmZW1wdHlT
dHJpbmc7CiB9CiAKLUpTX0VYUE9SVERBVEEgREVGSU5FX0dMT0JBTChBdG9taWNTdHJpbmcsIG51
bGxBdG9tKQotSlNfRVhQT1JUREFUQSBERUZJTkVfR0xPQkFMKEF0b21pY1N0cmluZywgZW1wdHlB
dG9tLCAiIikKLUpTX0VYUE9SVERBVEEgREVGSU5FX0dMT0JBTChBdG9taWNTdHJpbmcsIHRleHRB
dG9tLCAiI3RleHQiKQotSlNfRVhQT1JUREFUQSBERUZJTkVfR0xPQkFMKEF0b21pY1N0cmluZywg
Y29tbWVudEF0b20sICIjY29tbWVudCIpCi1KU19FWFBPUlREQVRBIERFRklORV9HTE9CQUwoQXRv
bWljU3RyaW5nLCBzdGFyQXRvbSwgIioiKQotSlNfRVhQT1JUREFUQSBERUZJTkVfR0xPQkFMKEF0
b21pY1N0cmluZywgeG1sQXRvbSwgInhtbCIpCi1KU19FWFBPUlREQVRBIERFRklORV9HTE9CQUwo
QXRvbWljU3RyaW5nLCB4bWxuc0F0b20sICJ4bWxucyIpCitKU19FWFBPUlRFRF9TWU1CT0wgREVG
SU5FX0dMT0JBTChBdG9taWNTdHJpbmcsIG51bGxBdG9tKQorSlNfRVhQT1JURURfU1lNQk9MIERF
RklORV9HTE9CQUwoQXRvbWljU3RyaW5nLCBlbXB0eUF0b20sICIiKQorSlNfRVhQT1JURURfU1lN
Qk9MIERFRklORV9HTE9CQUwoQXRvbWljU3RyaW5nLCB0ZXh0QXRvbSwgIiN0ZXh0IikKK0pTX0VY
UE9SVEVEX1NZTUJPTCBERUZJTkVfR0xPQkFMKEF0b21pY1N0cmluZywgY29tbWVudEF0b20sICIj
Y29tbWVudCIpCitKU19FWFBPUlRFRF9TWU1CT0wgREVGSU5FX0dMT0JBTChBdG9taWNTdHJpbmcs
IHN0YXJBdG9tLCAiKiIpCitKU19FWFBPUlRFRF9TWU1CT0wgREVGSU5FX0dMT0JBTChBdG9taWNT
dHJpbmcsIHhtbEF0b20sICJ4bWwiKQorSlNfRVhQT1JURURfU1lNQk9MIERFRklORV9HTE9CQUwo
QXRvbWljU3RyaW5nLCB4bWxuc0F0b20sICJ4bWxucyIpCiAKIHZvaWQgQXRvbWljU3RyaW5nOjpp
bml0KCkKIHsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5oCShyZXZp
c2lvbiA2MzQ2MSkKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5oCSh3
b3JraW5nIGNvcHkpCkBAIC00MCwyNyArNDAsMzEgQEAKIAogY2xhc3MgQXRvbWljU3RyaW5nIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBpbml0KCk7CisgICAgSlNfRVhQT1JURURfU1lNQk9M
IHN0YXRpYyB2b2lkIGluaXQoKTsKIAotICAgIEF0b21pY1N0cmluZygpIHsgfQotICAgIEF0b21p
Y1N0cmluZyhjb25zdCBjaGFyKiBzKSA6IG1fc3RyaW5nKGFkZChzKSkgeyB9CisgICAgSlNfRVhQ
T1JURURfU1lNQk9MIEF0b21pY1N0cmluZygpIHsgfQorICAgIC8vIGNvcHkgY29uc3RydWN0b3Ig
bmVlZHMgdG8gYmUgZXhwbGljaXRseSBkZWZpbmVkIHNvIHdlIGNhbiBzcGVjaWZ5IHByb3BlciBk
bGwgbGlua2FnZQorICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBBdG9taWNTdHJpbmcoY29uc3QgQXRv
bWljU3RyaW5nJiBzKSA6IG1fc3RyaW5nKHMubV9zdHJpbmcpIHsgfQorICAgIEpTX0VYUE9SVEVE
X1NZTUJPTCBBdG9taWNTdHJpbmcoY29uc3QgY2hhciogcykgOiBtX3N0cmluZyhhZGQocykpIHsg
fQogICAgIEF0b21pY1N0cmluZyhjb25zdCBVQ2hhciogcywgdW5zaWduZWQgbGVuZ3RoKSA6IG1f
c3RyaW5nKGFkZChzLCBsZW5ndGgpKSB7IH0KICAgICBBdG9taWNTdHJpbmcoY29uc3QgVUNoYXIq
IHMsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgZXhpc3RpbmdIYXNoKSA6IG1fc3RyaW5nKGFk
ZChzLCBsZW5ndGgsIGV4aXN0aW5nSGFzaCkpIHsgfQogICAgIEF0b21pY1N0cmluZyhjb25zdCBV
Q2hhciogcykgOiBtX3N0cmluZyhhZGQocykpIHsgfQogICAgIEFUT01JQ1NUUklOR19DT05WRVJT
SU9OIEF0b21pY1N0cmluZyhTdHJpbmdJbXBsKiBpbXApIDogbV9zdHJpbmcoYWRkKGltcCkpIHsg
fQogICAgIEF0b21pY1N0cmluZyhBdG9taWNTdHJpbmdJbXBsKiBpbXApIDogbV9zdHJpbmcoaW1w
KSB7IH0KLSAgICBBVE9NSUNTVFJJTkdfQ09OVkVSU0lPTiBBdG9taWNTdHJpbmcoY29uc3QgU3Ry
aW5nJiBzKSA6IG1fc3RyaW5nKGFkZChzLmltcGwoKSkpIHsgfQorICAgIEpTX0VYUE9SVEVEX1NZ
TUJPTCBBVE9NSUNTVFJJTkdfQ09OVkVSU0lPTiBBdG9taWNTdHJpbmcoY29uc3QgU3RyaW5nJiBz
KSA6IG1fc3RyaW5nKGFkZChzLmltcGwoKSkpIHsgfQogCiAgICAgLy8gSGFzaCB0YWJsZSBkZWxl
dGVkIHZhbHVlcywgd2hpY2ggYXJlIG9ubHkgY29uc3RydWN0ZWQgYW5kIG5ldmVyIGNvcGllZCBv
ciBkZXN0cm95ZWQuCi0gICAgQXRvbWljU3RyaW5nKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVl
VHlwZSkgOiBtX3N0cmluZyhXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkgeyB9Ci0gICAgYm9v
bCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmlzSGFz
aFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgQXRvbWljU3Ry
aW5nKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkgOiBtX3N0cmluZyhXVEY6Okhhc2hU
YWJsZURlbGV0ZWRWYWx1ZSkgeyB9CisgICAgSlNfRVhQT1JURURfU1lNQk9MIGJvb2wgaXNIYXNo
VGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5pc0hhc2hUYWJsZURl
bGV0ZWRWYWx1ZSgpOyB9CiAKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nSW1wbCogZmluZChjb25z
dCBVQ2hhciogcywgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBleGlzdGluZ0hhc2gpOworICAg
IEpTX0VYUE9SVEVEX1NZTUJPTCB+QXRvbWljU3RyaW5nKCkgeyB9CiAKKyAgICBKU19FWFBPUlRF
RF9TWU1CT0wgc3RhdGljIEF0b21pY1N0cmluZ0ltcGwqIGZpbmQoY29uc3QgVUNoYXIqIHMsIHVu
c2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgZXhpc3RpbmdIYXNoKTsKKwogICAgIG9wZXJhdG9yIGNv
bnN0IFN0cmluZyYoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfQogICAgIGNvbnN0IFN0cmlu
ZyYgc3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH07CiAKLSAgICBBdG9taWNTdHJp
bmdJbXBsKiBpbXBsKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXRvbWljU3RyaW5nSW1w
bCAqPihtX3N0cmluZy5pbXBsKCkpOyB9CisgICAgSlNfRVhQT1JURURfU1lNQk9MIEF0b21pY1N0
cmluZ0ltcGwqIGltcGwoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxBdG9taWNTdHJpbmdJ
bXBsICo+KG1fc3RyaW5nLmltcGwoKSk7IH0KICAgICAKICAgICBjb25zdCBVQ2hhciogY2hhcmFj
dGVycygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmNoYXJhY3RlcnMoKTsgfQogICAgIHVuc2ln
bmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmxlbmd0aCgpOyB9CkBAIC04NCw3
ICs4OCw3IEBACiAgICAgYm9vbCBlbmRzV2l0aChjb25zdCBTdHJpbmcmIHMsIGJvb2wgY2FzZVNl
bnNpdGl2ZSA9IHRydWUpIGNvbnN0CiAgICAgICAgIHsgcmV0dXJuIG1fc3RyaW5nLmVuZHNXaXRo
KHMsIGNhc2VTZW5zaXRpdmUpOyB9CiAgICAgCi0gICAgQXRvbWljU3RyaW5nIGxvd2VyKCkgY29u
c3Q7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIEF0b21pY1N0cmluZyBsb3dlcigpIGNvbnN0Owog
ICAgIEF0b21pY1N0cmluZyB1cHBlcigpIGNvbnN0IHsgcmV0dXJuIEF0b21pY1N0cmluZyhpbXBs
KCktPnVwcGVyKCkpOyB9CiAgICAgCiAgICAgaW50IHRvSW50KGJvb2wqIG9rID0gMCkgY29uc3Qg
eyByZXR1cm4gbV9zdHJpbmcudG9JbnQob2spOyB9CkBAIC0xMTAsMjQgKzExNCwzMiBAQAogICAg
IG9wZXJhdG9yIFFTdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfQogI2VuZGlmCiAK
KyAgICBKU19FWFBPUlRFRF9TWU1CT0wgaW5saW5lIEF0b21pY1N0cmluZyYgb3BlcmF0b3I9KGNv
bnN0IEF0b21pY1N0cmluZyYgYSkgCisgICAgeyAKKyAgICAgICAgaWYgKHRoaXMgIT0gJmEpCisg
ICAgICAgICAgICBtX3N0cmluZyA9IGEubV9zdHJpbmc7IAorICAgICAgICAKKyAgICAgICAgcmV0
dXJuICp0aGlzOyAKKyAgICB9CisKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fc3RyaW5nOwogICAg
IAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChjb25zdCBjaGFyKik7Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRkKGNvbnN0IFVDaGFyKiwgdW5zaWdu
ZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGQoY29uc3Qg
VUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIGV4aXN0aW5nSGFzaCk7Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRkKGNvbnN0IFVDaGFyKik7CisgICAgSlNfRVhQ
T1JURURfU1lNQk9MIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChjb25zdCBjaGFy
Kik7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+
IGFkZChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgSlNfRVhQT1JURURfU1lN
Qk9MIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChjb25zdCBVQ2hhciosIHVuc2ln
bmVkIGxlbmd0aCwgdW5zaWduZWQgZXhpc3RpbmdIYXNoKTsKKyAgICBKU19FWFBPUlRFRF9TWU1C
T0wgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRkKGNvbnN0IFVDaGFyKik7CiAgICAg
QUxXQVlTX0lOTElORSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChTdHJpbmdJbXBsKiByKQog
ICAgIHsKICAgICAgICAgaWYgKCFyIHx8IHItPmlzQXRvbWljKCkpCiAgICAgICAgICAgICByZXR1
cm4gcjsKICAgICAgICAgcmV0dXJuIGFkZFNsb3dDYXNlKHIpOwogICAgIH0KLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGRTbG93Q2FzZShTdHJpbmdJbXBsKik7CisgICAgSlNf
RVhQT1JURURfU1lNQk9MIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZFNsb3dDYXNl
KFN0cmluZ0ltcGwqKTsKIH07CiAKIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgQXRvbWlj
U3RyaW5nJiBhLCBjb25zdCBBdG9taWNTdHJpbmcmIGIpIHsgcmV0dXJuIGEuaW1wbCgpID09IGIu
aW1wbCgpOyB9Ci1ib29sIG9wZXJhdG9yPT0oY29uc3QgQXRvbWljU3RyaW5nJiBhLCBjb25zdCBj
aGFyKiBiKTsKK0pTX0VYUE9SVEVEX1NZTUJPTCBib29sIG9wZXJhdG9yPT0oY29uc3QgQXRvbWlj
U3RyaW5nJiBhLCBjb25zdCBjaGFyKiBiKTsKIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3Qg
QXRvbWljU3RyaW5nJiBhLCBjb25zdCBTdHJpbmcmIGIpIHsgcmV0dXJuIGVxdWFsKGEuaW1wbCgp
LCBiLmltcGwoKSk7IH0KIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgY2hhciogYSwgY29u
c3QgQXRvbWljU3RyaW5nJiBiKSB7IHJldHVybiBiID09IGE7IH0KIGlubGluZSBib29sIG9wZXJh
dG9yPT0oY29uc3QgU3RyaW5nJiBhLCBjb25zdCBBdG9taWNTdHJpbmcmIGIpIHsgcmV0dXJuIGVx
dWFsKGEuaW1wbCgpLCBiLmltcGwoKSk7IH0KQEAgLTE0NywxMyArMTU5LDEzIEBACiAvLyBEZWZp
bmUgZXh0ZXJuYWwgZ2xvYmFsIHZhcmlhYmxlcyBmb3IgdGhlIGNvbW1vbmx5IHVzZWQgYXRvbWlj
IHN0cmluZ3MuCiAvLyBUaGVzZSBhcmUgb25seSB1c2FibGUgZnJvbSB0aGUgbWFpbiB0aHJlYWQu
CiAjaWZuZGVmIEFUT01JQ1NUUklOR19ISURFX0dMT0JBTFMKLSAgICBleHRlcm4gY29uc3QgSlNf
RVhQT1JUREFUQSBBdG9taWNTdHJpbmcgbnVsbEF0b207Ci0gICAgZXh0ZXJuIGNvbnN0IEpTX0VY
UE9SVERBVEEgQXRvbWljU3RyaW5nIGVtcHR5QXRvbTsKLSAgICBleHRlcm4gY29uc3QgSlNfRVhQ
T1JUREFUQSBBdG9taWNTdHJpbmcgdGV4dEF0b207Ci0gICAgZXh0ZXJuIGNvbnN0IEpTX0VYUE9S
VERBVEEgQXRvbWljU3RyaW5nIGNvbW1lbnRBdG9tOwotICAgIGV4dGVybiBjb25zdCBKU19FWFBP
UlREQVRBIEF0b21pY1N0cmluZyBzdGFyQXRvbTsKLSAgICBleHRlcm4gY29uc3QgSlNfRVhQT1JU
REFUQSBBdG9taWNTdHJpbmcgeG1sQXRvbTsKLSAgICBleHRlcm4gY29uc3QgSlNfRVhQT1JUREFU
QSBBdG9taWNTdHJpbmcgeG1sbnNBdG9tOworZXh0ZXJuIGNvbnN0IEpTX0VYUE9SVEVEX1NZTUJP
TCBBdG9taWNTdHJpbmcgbnVsbEF0b207CitleHRlcm4gY29uc3QgSlNfRVhQT1JURURfU1lNQk9M
IEF0b21pY1N0cmluZyBlbXB0eUF0b207CitleHRlcm4gY29uc3QgSlNfRVhQT1JURURfU1lNQk9M
IEF0b21pY1N0cmluZyB0ZXh0QXRvbTsKK2V4dGVybiBjb25zdCBKU19FWFBPUlRFRF9TWU1CT0wg
QXRvbWljU3RyaW5nIGNvbW1lbnRBdG9tOworZXh0ZXJuIGNvbnN0IEpTX0VYUE9SVEVEX1NZTUJP
TCBBdG9taWNTdHJpbmcgc3RhckF0b207CitleHRlcm4gY29uc3QgSlNfRVhQT1JURURfU1lNQk9M
IEF0b21pY1N0cmluZyB4bWxBdG9tOworZXh0ZXJuIGNvbnN0IEpTX0VYUE9SVEVEX1NZTUJPTCBB
dG9taWNTdHJpbmcgeG1sbnNBdG9tOwogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEphdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5oCShyZXZpc2lvbiA2MzQ2MSkKKysr
IEphdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC02
NSwzNCArNjUsMzUgQEAKIC8vIERlY2xhcmF0aW9ucyBvZiBzdHJpbmcgb3BlcmF0aW9ucwogCiBi
b29sIGNoYXJhY3RlcnNBcmVBbGxBU0NJSShjb25zdCBVQ2hhciosIHNpemVfdCk7Ci1pbnQgY2hh
cmFjdGVyc1RvSW50U3RyaWN0KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDAsIGlu
dCBiYXNlID0gMTApOwotdW5zaWduZWQgY2hhcmFjdGVyc1RvVUludFN0cmljdChjb25zdCBVQ2hh
ciosIHNpemVfdCwgYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKTsKK0pTX0VYUE9SVEVEX1NZ
TUJPTCBpbnQgY2hhcmFjdGVyc1RvSW50U3RyaWN0KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29s
KiBvayA9IDAsIGludCBiYXNlID0gMTApOworSlNfRVhQT1JURURfU1lNQk9MIHVuc2lnbmVkIGNo
YXJhY3RlcnNUb1VJbnRTdHJpY3QoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gMCwg
aW50IGJhc2UgPSAxMCk7CiBpbnQ2NF90IGNoYXJhY3RlcnNUb0ludDY0U3RyaWN0KGNvbnN0IFVD
aGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApOwogdWludDY0X3QgY2hh
cmFjdGVyc1RvVUludDY0U3RyaWN0KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDAs
IGludCBiYXNlID0gMTApOwogaW50cHRyX3QgY2hhcmFjdGVyc1RvSW50UHRyU3RyaWN0KGNvbnN0
IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApOwogCi1pbnQgY2hh
cmFjdGVyc1RvSW50KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDApOyAvLyBpZ25v
cmVzIHRyYWlsaW5nIGdhcmJhZ2UKK0pTX0VYUE9SVEVEX1NZTUJPTCBpbnQgY2hhcmFjdGVyc1Rv
SW50KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDApOyAvLyBpZ25vcmVzIHRyYWls
aW5nIGdhcmJhZ2UKIHVuc2lnbmVkIGNoYXJhY3RlcnNUb1VJbnQoY29uc3QgVUNoYXIqLCBzaXpl
X3QsIGJvb2wqIG9rID0gMCk7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQogaW50NjRfdCBj
aGFyYWN0ZXJzVG9JbnQ2NChjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSAwKTsgLy8g
aWdub3JlcyB0cmFpbGluZyBnYXJiYWdlCiB1aW50NjRfdCBjaGFyYWN0ZXJzVG9VSW50NjQoY29u
c3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gMCk7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2Fy
YmFnZQogaW50cHRyX3QgY2hhcmFjdGVyc1RvSW50UHRyKGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBi
b29sKiBvayA9IDApOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKIAotZG91YmxlIGNoYXJh
Y3RlcnNUb0RvdWJsZShjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSAwKTsKLWZsb2F0
IGNoYXJhY3RlcnNUb0Zsb2F0KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDApOwor
SlNfRVhQT1JURURfU1lNQk9MIGRvdWJsZSBjaGFyYWN0ZXJzVG9Eb3VibGUoY29uc3QgVUNoYXIq
LCBzaXplX3QsIGJvb2wqIG9rID0gMCk7CitKU19FWFBPUlRFRF9TWU1CT0wgZmxvYXQgY2hhcmFj
dGVyc1RvRmxvYXQoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gMCk7CiAKIGludCBm
aW5kKGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBVQ2hhciwgaW50IHN0YXJ0UG9zaXRpb24gPSAwKTsK
IGludCByZXZlcnNlRmluZChjb25zdCBVQ2hhciosIHNpemVfdCwgVUNoYXIsIGludCBzdGFydFBv
c2l0aW9uID0gLTEpOwogCiBjbGFzcyBTdHJpbmcgewogcHVibGljOgotICAgIFN0cmluZygpIHsg
fSAvLyBnaXZlcyBudWxsIHN0cmluZywgZGlzdGluZ3Vpc2hhYmxlIGZyb20gYW4gZW1wdHkgc3Ry
aW5nCisgICAgSlNfRVhQT1JURURfU1lNQk9MIFN0cmluZygpIHsgfSAvLyBnaXZlcyBudWxsIHN0
cmluZywgZGlzdGluZ3Vpc2hhYmxlIGZyb20gYW4gZW1wdHkgc3RyaW5nCisgICAgSlNfRVhQT1JU
RURfU1lNQk9MIH5TdHJpbmcoKSB7IH0KICAgICBTdHJpbmcoY29uc3QgVUNoYXIqIHN0ciwgdW5z
aWduZWQgbGVuKQogICAgIHsKICAgICAgICAgaWYgKCFzdHIpCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIG1faW1wbCA9IFN0cmluZ0ltcGw6OmNyZWF0ZShzdHIsIGxlbik7CiAgICAgfQot
ICAgIFN0cmluZyhjb25zdCBjaGFyKiBzdHIpCisgICAgSlNfRVhQT1JURURfU1lNQk9MIFN0cmlu
Zyhjb25zdCBjaGFyKiBzdHIpCiAgICAgewogICAgICAgICBpZiAoIXN0cikKICAgICAgICAgICAg
IHJldHVybjsKQEAgLTEwNCwxNiArMTA1LDE4IEBACiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIG1faW1wbCA9IFN0cmluZ0ltcGw6OmNyZWF0ZShzdHIsIGxlbmd0aCk7CiAgICAgfQotICAg
IFN0cmluZyhjb25zdCBVQ2hhciopOyAvLyBTcGVjaWZpY2FsbHkgZm9yIG51bGwgdGVybWluYXRl
ZCBVVEYtMTYKLSAgICBTdHJpbmcoU3RyaW5nSW1wbCogaSkgOiBtX2ltcGwoaSkgeyB9Ci0gICAg
U3RyaW5nKFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gaSkgOiBtX2ltcGwoaSkgeyB9CisgICAgSlNf
RVhQT1JURURfU1lNQk9MIFN0cmluZyhjb25zdCBVQ2hhciopOyAvLyBTcGVjaWZpY2FsbHkgZm9y
IG51bGwgdGVybWluYXRlZCBVVEYtMTYKKyAgICAvLyBjb3B5IGNvbnN0cnVjdG9yIG5lZWRzIHRv
IGJlIGV4cGxpY2l0bHkgZGVmaW5lZCBzbyB3ZSBjYW4gc3BlY2lmeSBwcm9wZXIgZGxsIGxpbmth
Z2UKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyKSA6IG1f
aW1wbChzdHIubV9pbXBsKSB7IH0KKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgU3RyaW5nKFN0cmlu
Z0ltcGwqIGkpIDogbV9pbXBsKGkpIHsgfQorICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBTdHJpbmco
UGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBpKSA6IG1faW1wbChpKSB7IH0KICAgICBTdHJpbmcoUmVm
UHRyPFN0cmluZ0ltcGw+IGkpIDogbV9pbXBsKGkpIHsgfQogCiAgICAgdm9pZCBzd2FwKFN0cmlu
ZyYgbykgeyBtX2ltcGwuc3dhcChvLm1faW1wbCk7IH0KIAogICAgIC8vIEhhc2ggdGFibGUgZGVs
ZXRlZCB2YWx1ZXMsIHdoaWNoIGFyZSBvbmx5IGNvbnN0cnVjdGVkIGFuZCBuZXZlciBjb3BpZWQg
b3IgZGVzdHJveWVkLgogICAgIFN0cmluZyhXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUp
IDogbV9pbXBsKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKSB7IH0KLSAgICBib29sIGlzSGFz
aFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9pbXBsLmlzSGFzaFRhYmxlRGVs
ZXRlZFZhbHVlKCk7IH0KKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgYm9vbCBpc0hhc2hUYWJsZURl
bGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1wbC5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1
ZSgpOyB9CiAKICAgICBzdGF0aWMgU3RyaW5nIGFkb3B0KFN0cmluZ0J1ZmZlciYgYnVmZmVyKSB7
IHJldHVybiBTdHJpbmdJbXBsOjphZG9wdChidWZmZXIpOyB9CiAgICAgc3RhdGljIFN0cmluZyBh
ZG9wdChWZWN0b3I8VUNoYXI+JiB2ZWN0b3IpIHsgcmV0dXJuIFN0cmluZ0ltcGw6OmFkb3B0KHZl
Y3Rvcik7IH0KQEAgLTEzMiw3ICsxMzUsNyBAQAogICAgICAgICByZXR1cm4gbV9pbXBsLT5jaGFy
YWN0ZXJzKCk7CiAgICAgfQogCi0gICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnNXaXRoTnVsbFRl
cm1pbmF0aW9uKCk7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIGNvbnN0IFVDaGFyKiBjaGFyYWN0
ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpOwogICAgIAogICAgIFVDaGFyIG9wZXJhdG9yW10odW5z
aWduZWQgaSkgY29uc3QgLy8gaWYgaSA+PSBsZW5ndGgoKSwgcmV0dXJucyAwCiAgICAgewpAQCAt
MTQwLDcgKzE0Myw3IEBACiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgcmV0dXJuIG1f
aW1wbC0+Y2hhcmFjdGVycygpW2ldOwogICAgIH0KLSAgICBVQ2hhcjMyIGNoYXJhY3RlclN0YXJ0
aW5nQXQodW5zaWduZWQpIGNvbnN0OyAvLyBEaXR0by4KKyAgICBKU19FWFBPUlRFRF9TWU1CT0wg
VUNoYXIzMiBjaGFyYWN0ZXJTdGFydGluZ0F0KHVuc2lnbmVkKSBjb25zdDsgLy8gRGl0dG8uCiAg
ICAgCiAgICAgYm9vbCBjb250YWlucyhVQ2hhciBjKSBjb25zdCB7IHJldHVybiBmaW5kKGMpICE9
IC0xOyB9CiAgICAgYm9vbCBjb250YWlucyhjb25zdCBjaGFyKiBzdHIsIGJvb2wgY2FzZVNlbnNp
dGl2ZSA9IHRydWUpIGNvbnN0IHsgcmV0dXJuIGZpbmQoc3RyLCAwLCBjYXNlU2Vuc2l0aXZlKSAh
PSAtMTsgfQpAQCAtMTY1LDExICsxNjgsMTEgQEAKICAgICBib29sIGVuZHNXaXRoKGNvbnN0IFN0
cmluZyYgcywgYm9vbCBjYXNlU2Vuc2l0aXZlID0gdHJ1ZSkgY29uc3QKICAgICAgICAgeyByZXR1
cm4gbV9pbXBsID8gbV9pbXBsLT5lbmRzV2l0aChzLmltcGwoKSwgY2FzZVNlbnNpdGl2ZSkgOiBz
LmlzRW1wdHkoKTsgfQogCi0gICAgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9p
ZCBhcHBlbmQoY2hhcik7Ci0gICAgdm9pZCBhcHBlbmQoVUNoYXIpOwotICAgIHZvaWQgYXBwZW5k
KGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICB2b2lkIGluc2VydChjb25zdCBT
dHJpbmcmLCB1bnNpZ25lZCBwb3MpOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIGFwcGVu
ZChjb25zdCBTdHJpbmcmKTsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBhcHBlbmQoY2hh
cik7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIHZvaWQgYXBwZW5kKFVDaGFyKTsKKyAgICBKU19F
WFBPUlRFRF9TWU1CT0wgdm9pZCBhcHBlbmQoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgp
OworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIGluc2VydChjb25zdCBTdHJpbmcmLCB1bnNp
Z25lZCBwb3MpOwogICAgIHZvaWQgaW5zZXJ0KGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3Ro
LCB1bnNpZ25lZCBwb3MpOwogCiAgICAgU3RyaW5nJiByZXBsYWNlKFVDaGFyIGEsIFVDaGFyIGIp
IHsgaWYgKG1faW1wbCkgbV9pbXBsID0gbV9pbXBsLT5yZXBsYWNlKGEsIGIpOyByZXR1cm4gKnRo
aXM7IH0KQEAgLTE4MSw3NSArMTg0LDc1IEBACiAgICAgdm9pZCBtYWtlVXBwZXIoKSB7IGlmICht
X2ltcGwpIG1faW1wbCA9IG1faW1wbC0+dXBwZXIoKTsgfQogICAgIHZvaWQgbWFrZVNlY3VyZShV
Q2hhciBhQ2hhcikgeyBpZiAobV9pbXBsKSBtX2ltcGwgPSBtX2ltcGwtPnNlY3VyZShhQ2hhcik7
IH0KIAotICAgIHZvaWQgdHJ1bmNhdGUodW5zaWduZWQgbGVuKTsKLSAgICB2b2lkIHJlbW92ZSh1
bnNpZ25lZCBwb3MsIGludCBsZW4gPSAxKTsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCB0
cnVuY2F0ZSh1bnNpZ25lZCBsZW4pOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIHJlbW92
ZSh1bnNpZ25lZCBwb3MsIGludCBsZW4gPSAxKTsKIAotICAgIFN0cmluZyBzdWJzdHJpbmcodW5z
aWduZWQgcG9zLCB1bnNpZ25lZCBsZW4gPSBVSU5UX01BWCkgY29uc3Q7CisgICAgSlNfRVhQT1JU
RURfU1lNQk9MIFN0cmluZyBzdWJzdHJpbmcodW5zaWduZWQgcG9zLCB1bnNpZ25lZCBsZW4gPSBV
SU5UX01BWCkgY29uc3Q7CiAgICAgU3RyaW5nIGxlZnQodW5zaWduZWQgbGVuKSBjb25zdCB7IHJl
dHVybiBzdWJzdHJpbmcoMCwgbGVuKTsgfQogICAgIFN0cmluZyByaWdodCh1bnNpZ25lZCBsZW4p
IGNvbnN0IHsgcmV0dXJuIHN1YnN0cmluZyhsZW5ndGgoKSAtIGxlbiwgbGVuKTsgfQogCiAgICAg
Ly8gUmV0dXJucyBhIGxvd2VyY2FzZS91cHBlcmNhc2UgdmVyc2lvbiBvZiB0aGUgc3RyaW5nCi0g
ICAgU3RyaW5nIGxvd2VyKCkgY29uc3Q7Ci0gICAgU3RyaW5nIHVwcGVyKCkgY29uc3Q7CisgICAg
SlNfRVhQT1JURURfU1lNQk9MIFN0cmluZyBsb3dlcigpIGNvbnN0OworICAgIEpTX0VYUE9SVEVE
X1NZTUJPTCBTdHJpbmcgdXBwZXIoKSBjb25zdDsKIAotICAgIFN0cmluZyBzdHJpcFdoaXRlU3Bh
Y2UoKSBjb25zdDsKLSAgICBTdHJpbmcgc2ltcGxpZnlXaGl0ZVNwYWNlKCkgY29uc3Q7CisgICAg
SlNfRVhQT1JURURfU1lNQk9MIFN0cmluZyBzdHJpcFdoaXRlU3BhY2UoKSBjb25zdDsKKyAgICBK
U19FWFBPUlRFRF9TWU1CT0wgU3RyaW5nIHNpbXBsaWZ5V2hpdGVTcGFjZSgpIGNvbnN0OwogCi0g
ICAgU3RyaW5nIHJlbW92ZUNoYXJhY3RlcnMoQ2hhcmFjdGVyTWF0Y2hGdW5jdGlvblB0cikgY29u
c3Q7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIFN0cmluZyByZW1vdmVDaGFyYWN0ZXJzKENoYXJh
Y3Rlck1hdGNoRnVuY3Rpb25QdHIpIGNvbnN0OwogCiAgICAgLy8gUmV0dXJuIHRoZSBzdHJpbmcg
d2l0aCBjYXNlIGZvbGRlZCBmb3IgY2FzZSBpbnNlbnNpdGl2ZSBjb21wYXJpc29uLgotICAgIFN0
cmluZyBmb2xkQ2FzZSgpIGNvbnN0OworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBTdHJpbmcgZm9s
ZENhc2UoKSBjb25zdDsKIAogICAgIHN0YXRpYyBTdHJpbmcgbnVtYmVyKHNob3J0KTsKLSAgICBz
dGF0aWMgU3RyaW5nIG51bWJlcih1bnNpZ25lZCBzaG9ydCk7Ci0gICAgc3RhdGljIFN0cmluZyBu
dW1iZXIoaW50KTsKLSAgICBzdGF0aWMgU3RyaW5nIG51bWJlcih1bnNpZ25lZCk7Ci0gICAgc3Rh
dGljIFN0cmluZyBudW1iZXIobG9uZyk7Ci0gICAgc3RhdGljIFN0cmluZyBudW1iZXIodW5zaWdu
ZWQgbG9uZyk7Ci0gICAgc3RhdGljIFN0cmluZyBudW1iZXIobG9uZyBsb25nKTsKLSAgICBzdGF0
aWMgU3RyaW5nIG51bWJlcih1bnNpZ25lZCBsb25nIGxvbmcpOwotICAgIHN0YXRpYyBTdHJpbmcg
bnVtYmVyKGRvdWJsZSk7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIHN0YXRpYyBTdHJpbmcgbnVt
YmVyKHVuc2lnbmVkIHNob3J0KTsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgc3RhdGljIFN0cmlu
ZyBudW1iZXIoaW50KTsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgc3RhdGljIFN0cmluZyBudW1i
ZXIodW5zaWduZWQpOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0aWMgU3RyaW5nIG51bWJl
cihsb25nKTsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgc3RhdGljIFN0cmluZyBudW1iZXIodW5z
aWduZWQgbG9uZyk7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIHN0YXRpYyBTdHJpbmcgbnVtYmVy
KGxvbmcgbG9uZyk7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIHN0YXRpYyBTdHJpbmcgbnVtYmVy
KHVuc2lnbmVkIGxvbmcgbG9uZyk7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIHN0YXRpYyBTdHJp
bmcgbnVtYmVyKGRvdWJsZSk7CiAgICAgCi0gICAgc3RhdGljIFN0cmluZyBmb3JtYXQoY29uc3Qg
Y2hhciAqLCAuLi4pIFdURl9BVFRSSUJVVEVfUFJJTlRGKDEsIDIpOworICAgIEpTX0VYUE9SVEVE
X1NZTUJPTCBzdGF0aWMgU3RyaW5nIGZvcm1hdChjb25zdCBjaGFyICosIC4uLikgV1RGX0FUVFJJ
QlVURV9QUklOVEYoMSwgMik7CiAKICAgICAvLyBSZXR1cm5zIGFuIHVuaW5pdGlhbGl6ZWQgc3Ry
aW5nLiBUaGUgY2hhcmFjdGVycyBuZWVkcyB0byBiZSB3cml0dGVuCiAgICAgLy8gaW50byB0aGUg
YnVmZmVyIHJldHVybmVkIGluIGRhdGEgYmVmb3JlIHRoZSByZXR1cm5lZCBzdHJpbmcgaXMgdXNl
ZC4KICAgICAvLyBGYWlsdXJlIHRvIGRvIHRoaXMgd2lsbCBoYXZlIHVucHJlZGljdGFibGUgcmVz
dWx0cy4KICAgICBzdGF0aWMgU3RyaW5nIGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVu
Z3RoLCBVQ2hhciomIGRhdGEpIHsgcmV0dXJuIFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6
ZWQobGVuZ3RoLCBkYXRhKTsgfQogCi0gICAgdm9pZCBzcGxpdChjb25zdCBTdHJpbmcmIHNlcGFy
YXRvciwgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkgY29uc3Q7Ci0gICAgdm9pZCBzcGxpdChjb25z
dCBTdHJpbmcmIHNlcGFyYXRvciwgYm9vbCBhbGxvd0VtcHR5RW50cmllcywgVmVjdG9yPFN0cmlu
Zz4mIHJlc3VsdCkgY29uc3Q7Ci0gICAgdm9pZCBzcGxpdChVQ2hhciBzZXBhcmF0b3IsIFZlY3Rv
cjxTdHJpbmc+JiByZXN1bHQpIGNvbnN0OwotICAgIHZvaWQgc3BsaXQoVUNoYXIgc2VwYXJhdG9y
LCBib29sIGFsbG93RW1wdHlFbnRyaWVzLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KSBjb25zdDsK
KyAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBzcGxpdChjb25zdCBTdHJpbmcmIHNlcGFyYXRv
ciwgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkgY29uc3Q7CisgICAgSlNfRVhQT1JURURfU1lNQk9M
IHZvaWQgc3BsaXQoY29uc3QgU3RyaW5nJiBzZXBhcmF0b3IsIGJvb2wgYWxsb3dFbXB0eUVudHJp
ZXMsIFZlY3RvcjxTdHJpbmc+JiByZXN1bHQpIGNvbnN0OworICAgIEpTX0VYUE9SVEVEX1NZTUJP
TCB2b2lkIHNwbGl0KFVDaGFyIHNlcGFyYXRvciwgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkgY29u
c3Q7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIHZvaWQgc3BsaXQoVUNoYXIgc2VwYXJhdG9yLCBi
b29sIGFsbG93RW1wdHlFbnRyaWVzLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KSBjb25zdDsKIAot
ICAgIGludCB0b0ludFN0cmljdChib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApIGNvbnN0Owot
ICAgIHVuc2lnbmVkIHRvVUludFN0cmljdChib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApIGNv
bnN0OworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBpbnQgdG9JbnRTdHJpY3QoYm9vbCogb2sgPSAw
LCBpbnQgYmFzZSA9IDEwKSBjb25zdDsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgdW5zaWduZWQg
dG9VSW50U3RyaWN0KGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCkgY29uc3Q7CiAgICAgaW50
NjRfdCB0b0ludDY0U3RyaWN0KGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCkgY29uc3Q7CiAg
ICAgdWludDY0X3QgdG9VSW50NjRTdHJpY3QoYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKSBj
b25zdDsKICAgICBpbnRwdHJfdCB0b0ludFB0clN0cmljdChib29sKiBvayA9IDAsIGludCBiYXNl
ID0gMTApIGNvbnN0OwogCi0gICAgaW50IHRvSW50KGJvb2wqIG9rID0gMCkgY29uc3Q7Ci0gICAg
dW5zaWduZWQgdG9VSW50KGJvb2wqIG9rID0gMCkgY29uc3Q7CisgICAgSlNfRVhQT1JURURfU1lN
Qk9MIGludCB0b0ludChib29sKiBvayA9IDApIGNvbnN0OworICAgIEpTX0VYUE9SVEVEX1NZTUJP
TCB1bnNpZ25lZCB0b1VJbnQoYm9vbCogb2sgPSAwKSBjb25zdDsKICAgICBpbnQ2NF90IHRvSW50
NjQoYm9vbCogb2sgPSAwKSBjb25zdDsKLSAgICB1aW50NjRfdCB0b1VJbnQ2NChib29sKiBvayA9
IDApIGNvbnN0OwotICAgIGludHB0cl90IHRvSW50UHRyKGJvb2wqIG9rID0gMCkgY29uc3Q7Ci0g
ICAgZG91YmxlIHRvRG91YmxlKGJvb2wqIG9rID0gMCkgY29uc3Q7Ci0gICAgZmxvYXQgdG9GbG9h
dChib29sKiBvayA9IDApIGNvbnN0OworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB1aW50NjRfdCB0
b1VJbnQ2NChib29sKiBvayA9IDApIGNvbnN0OworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBpbnRw
dHJfdCB0b0ludFB0cihib29sKiBvayA9IDApIGNvbnN0OworICAgIEpTX0VYUE9SVEVEX1NZTUJP
TCBkb3VibGUgdG9Eb3VibGUoYm9vbCogb2sgPSAwKSBjb25zdDsKKyAgICBKU19FWFBPUlRFRF9T
WU1CT0wgZmxvYXQgdG9GbG9hdChib29sKiBvayA9IDApIGNvbnN0OwogCiAgICAgYm9vbCBwZXJj
ZW50YWdlKGludCYgcGVyY2VudGFnZSkgY29uc3Q7CiAKICAgICAvLyBSZXR1cm5zIGEgU3RyaW5n
SW1wbCBzdWl0YWJsZSBmb3IgdXNlIG9uIGFub3RoZXIgdGhyZWFkLgotICAgIFN0cmluZyBjcm9z
c1RocmVhZFN0cmluZygpIGNvbnN0OworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBTdHJpbmcgY3Jv
c3NUaHJlYWRTdHJpbmcoKSBjb25zdDsKICAgICAvLyBNYWtlcyBhIGRlZXAgY29weS4gSGVscGZ1
bCBvbmx5IGlmIHlvdSBuZWVkIHRvIHVzZSBhIFN0cmluZyBvbiBhbm90aGVyIHRocmVhZAogICAg
IC8vICh1c2UgY3Jvc3NUaHJlYWRTdHJpbmcgaWYgdGhlIG1ldGhvZCBjYWxsIGRvZXNuJ3QgbmVl
ZCB0byBiZSB0aHJlYWRzYWZlKS4KICAgICAvLyBTaW5jZSB0aGUgdW5kZXJseWluZyBTdHJpbmdJ
bXBsIG9iamVjdHMgYXJlIGltbXV0YWJsZSwgdGhlcmUncyBubyBvdGhlciByZWFzb24KICAgICAv
LyB0byBldmVyIHByZWZlciBjb3B5KCkgb3ZlciBwbGFpbiBvbGQgYXNzaWdubWVudC4KLSAgICBT
dHJpbmcgdGhyZWFkc2FmZUNvcHkoKSBjb25zdDsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgU3Ry
aW5nIHRocmVhZHNhZmVDb3B5KCkgY29uc3Q7CiAKICAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsg
cmV0dXJuICFtX2ltcGw7IH0KLSAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNFbXB0eSgpIGNvbnN0
IHsgcmV0dXJuICFtX2ltcGwgfHwgIW1faW1wbC0+bGVuZ3RoKCk7IH0KKyAgICBKU19FWFBPUlRF
RF9TWU1CT0wgQUxXQVlTX0lOTElORSBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9p
bXBsIHx8ICFtX2ltcGwtPmxlbmd0aCgpOyB9CiAKLSAgICBTdHJpbmdJbXBsKiBpbXBsKCkgY29u
c3QgeyByZXR1cm4gbV9pbXBsLmdldCgpOyB9CisgICAgSlNfRVhQT1JURURfU1lNQk9MIFN0cmlu
Z0ltcGwqIGltcGwoKSBjb25zdCB7IHJldHVybiBtX2ltcGwuZ2V0KCk7IH0KIAogI2lmIFBMQVRG
T1JNKENGKQogICAgIFN0cmluZyhDRlN0cmluZ1JlZik7CkBAIC0yNzEsOCArMjc0LDggQEAKICNl
bmRpZgogCiAjaWYgUExBVEZPUk0oV1gpCi0gICAgU3RyaW5nKGNvbnN0IHd4U3RyaW5nJik7Ci0g
ICAgb3BlcmF0b3Igd3hTdHJpbmcoKSBjb25zdDsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgU3Ry
aW5nKGNvbnN0IHd4U3RyaW5nJik7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIG9wZXJhdG9yIHd4
U3RyaW5nKCkgY29uc3Q7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKEhBSUtVKQpAQCAtMjgwLDIy
ICsyODMsMzAgQEAKICAgICBvcGVyYXRvciBCU3RyaW5nKCkgY29uc3Q7CiAjZW5kaWYKIAotICAg
IFZlY3RvcjxjaGFyPiBhc2NpaSgpIGNvbnN0OworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBWZWN0
b3I8Y2hhcj4gYXNjaWkoKSBjb25zdDsKIAotICAgIENTdHJpbmcgbGF0aW4xKCkgY29uc3Q7Ci0g
ICAgQ1N0cmluZyB1dGY4KCkgY29uc3Q7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIENTdHJpbmcg
bGF0aW4xKCkgY29uc3Q7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIENTdHJpbmcgdXRmOCgpIGNv
bnN0OwogCi0gICAgc3RhdGljIFN0cmluZyBmcm9tVVRGOChjb25zdCBjaGFyKiwgc2l6ZV90KTsK
LSAgICBzdGF0aWMgU3RyaW5nIGZyb21VVEY4KGNvbnN0IGNoYXIqKTsKKyAgICBKU19FWFBPUlRF
RF9TWU1CT0wgc3RhdGljIFN0cmluZyBmcm9tVVRGOChjb25zdCBjaGFyKiwgc2l6ZV90KTsKKyAg
ICBKU19FWFBPUlRFRF9TWU1CT0wgc3RhdGljIFN0cmluZyBmcm9tVVRGOChjb25zdCBjaGFyKik7
CiAKICAgICAvLyBUcmllcyB0byBjb252ZXJ0IHRoZSBwYXNzZWQgaW4gc3RyaW5nIHRvIFVURi04
LCBidXQgd2lsbCBmYWxsIGJhY2sgdG8gTGF0aW4tMSBpZiB0aGUgc3RyaW5nIGlzIG5vdCB2YWxp
ZCBVVEYtOC4KLSAgICBzdGF0aWMgU3RyaW5nIGZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNrKGNv
bnN0IGNoYXIqLCBzaXplX3QpOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0aWMgU3RyaW5n
IGZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNrKGNvbnN0IGNoYXIqLCBzaXplX3QpOwogICAgIAog
ICAgIC8vIERldGVybWluZXMgdGhlIHdyaXRpbmcgZGlyZWN0aW9uIHVzaW5nIHRoZSBVbmljb2Rl
IEJpZGkgQWxnb3JpdGhtIHJ1bGVzIFAyIGFuZCBQMy4KICAgICBXVEY6OlVuaWNvZGU6OkRpcmVj
dGlvbiBkZWZhdWx0V3JpdGluZ0RpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1f
aW1wbC0+ZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oKSA6IFdURjo6VW5pY29kZTo6TGVmdFRvUmln
aHQ7IH0KIAogICAgIGJvb2wgY29udGFpbnNPbmx5QVNDSUkoKSBjb25zdCB7IHJldHVybiBjaGFy
YWN0ZXJzQXJlQWxsQVNDSUkoY2hhcmFjdGVycygpLCBsZW5ndGgoKSk7IH0KIAorICAgIC8vIG9w
ZXJhdG9yPSBuZWVkcyB0byBiZSBleHBsaWNpdGx5IGRlZmluZWQgdG8gc3BlY2lmeSBkbGwgbGlu
a2FnZQorICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBpbmxpbmUgU3RyaW5nJiBvcGVyYXRvcj0oY29u
c3QgU3RyaW5nJiBhKSAKKyAgICB7CisgICAgICAgIGlmICh0aGlzICE9ICZhKQorICAgICAgICAg
ICAgbV9pbXBsID0gYS5tX2ltcGw7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKIHBy
aXZhdGU6CiAgICAgUmVmUHRyPFN0cmluZ0ltcGw+IG1faW1wbDsKIH07CkBAIC0zMDUsOSArMzE2
LDkgQEAKIFFEYXRhU3RyZWFtJiBvcGVyYXRvcj4+KFFEYXRhU3RyZWFtJiBzdHJlYW0sIFN0cmlu
ZyYgc3RyKTsKICNlbmRpZgogCi1TdHJpbmcgb3BlcmF0b3IrKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYpOwotU3RyaW5nIG9wZXJhdG9yKyhjb25zdCBTdHJpbmcmLCBjb25zdCBjaGFyKik7
Ci1TdHJpbmcgb3BlcmF0b3IrKGNvbnN0IGNoYXIqLCBjb25zdCBTdHJpbmcmKTsKK0pTX0VYUE9S
VEVEX1NZTUJPTCBTdHJpbmcgb3BlcmF0b3IrKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYp
OworSlNfRVhQT1JURURfU1lNQk9MIFN0cmluZyBvcGVyYXRvcisoY29uc3QgU3RyaW5nJiwgY29u
c3QgY2hhciopOworSlNfRVhQT1JURURfU1lNQk9MIFN0cmluZyBvcGVyYXRvcisoY29uc3QgY2hh
ciosIGNvbnN0IFN0cmluZyYpOwogCiBpbmxpbmUgU3RyaW5nJiBvcGVyYXRvcis9KFN0cmluZyYg
YSwgY29uc3QgU3RyaW5nJiBiKSB7IGEuYXBwZW5kKGIpOyByZXR1cm4gYTsgfQogCkBAIC0zNTEs
NyArMzYyLDcgQEAKICAgICByZXR1cm4gIShvcmVkICYgMHhGRjgwKTsKIH0KIAotaW50IGNvZGVQ
b2ludENvbXBhcmUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7CitKU19FWFBPUlRFRF9T
WU1CT0wgaW50IGNvZGVQb2ludENvbXBhcmUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7
CiAKIGlubGluZSBpbnQgZmluZChjb25zdCBVQ2hhciogY2hhcmFjdGVycywgc2l6ZV90IGxlbmd0
aCwgVUNoYXIgY2hhcmFjdGVyLCBpbnQgc3RhcnRQb3NpdGlvbikKIHsKSW5kZXg6IEphdmFTY3Jp
cHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgJKHJldmlzaW9uIDYzNDYxKQorKysgSmF2YVNjcmlwdENv
cmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDUsMTEgKzE0NSwx
MSBAQAogICAgIH0KIAogcHVibGljOgotICAgIH5TdHJpbmdJbXBsKCk7CisgICAgSlNfRVhQT1JU
RURfU1lNQk9MIH5TdHJpbmdJbXBsKCk7CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJ
bXBsPiBjcmVhdGUoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFN0cmluZ0ltcGw+IGNyZWF0ZShjb25zdCBjaGFyKiwgdW5zaWduZWQgbGVuZ3Ro
KTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBjcmVhdGUoY29uc3QgY2hhciop
OworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBj
cmVhdGUoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIEpTX0VYUE9SVEVEX1NZ
TUJPTCBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBjcmVhdGUoY29uc3QgY2hhciosIHVu
c2lnbmVkIGxlbmd0aCk7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIHN0YXRpYyBQYXNzUmVmUHRy
PFN0cmluZ0ltcGw+IGNyZWF0ZShjb25zdCBjaGFyKik7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8
U3RyaW5nSW1wbD4gY3JlYXRlKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoLCBQYXNzUmVm
UHRyPFNoYXJlZFVDaGFyPiBzaGFyZWRCdWZmZXIpOwogICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5F
IFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gY3JlYXRlKFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVw
LCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKICAgICB7CkBAIC0xNjMsNyArMTYz
LDcgQEAKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdHJpbmdJbXBsKHJlcC0+bV9kYXRh
ICsgb2Zmc2V0LCBsZW5ndGgsIG93bmVyUmVwKSk7CiAgICAgfQogCi0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8U3RyaW5nSW1wbD4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgsIFVD
aGFyKiYgZGF0YSk7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIHN0YXRpYyBQYXNzUmVmUHRyPFN0
cmluZ0ltcGw+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoLCBVQ2hhciomIGRh
dGEpOwogICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gdHJ5
Q3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgsIFVDaGFyKiYgb3V0cHV0KQogICAg
IHsKICAgICAgICAgaWYgKCFsZW5ndGgpIHsKQEAgLTE5NywxMCArMTk3LDEwIEBACiAgICAgICAg
IH0KICAgICAgICAgcmV0dXJuIGVtcHR5KCk7CiAgICAgfQotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFN0cmluZ0ltcGw+IGFkb3B0KFN0cmluZ0J1ZmZlciYpOworICAgIEpTX0VYUE9SVEVEX1NZTUJP
TCBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZG9wdChTdHJpbmdCdWZmZXImKTsKIAog
ICAgIFNoYXJlZFVDaGFyKiBzaGFyZWRCdWZmZXIoKTsKLSAgICBjb25zdCBVQ2hhciogY2hhcmFj
dGVycygpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQorICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBj
b25zdCBVQ2hhciogY2hhcmFjdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQogCiAgICAg
c2l6ZV90IGNvc3QoKQogICAgIHsKQEAgLTI0Niw3ICsyNDYsNyBAQAogICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBkZXJlZigpIHsgbV9yZWZDb3VudEFuZEZsYWdzIC09IHNfcmVmQ291bnRJbmNyZW1l
bnQ7IGlmICghKG1fcmVmQ291bnRBbmRGbGFncyAmIChzX3JlZkNvdW50TWFzayB8IHNfcmVmQ291
bnRGbGFnU3RhdGljKSkpIGRlbGV0ZSB0aGlzOyB9CiAgICAgQUxXQVlTX0lOTElORSBib29sIGhh
c09uZVJlZigpIGNvbnN0IHsgcmV0dXJuIChtX3JlZkNvdW50QW5kRmxhZ3MgJiAoc19yZWZDb3Vu
dE1hc2sgfCBzX3JlZkNvdW50RmxhZ1N0YXRpYykpID09IHNfcmVmQ291bnRJbmNyZW1lbnQ7IH0K
IAotICAgIHN0YXRpYyBTdHJpbmdJbXBsKiBlbXB0eSgpOworICAgIEpTX0VYUE9SVEVEX1NZTUJP
TCBzdGF0aWMgU3RyaW5nSW1wbCogZW1wdHkoKTsKIAogICAgIHN0YXRpYyB2b2lkIGNvcHlDaGFy
cyhVQ2hhciogZGVzdGluYXRpb24sIGNvbnN0IFVDaGFyKiBzb3VyY2UsIHVuc2lnbmVkIG51bUNo
YXJhY3RlcnMpCiAgICAgewpAQCAtMjY0LDEyICsyNjQsMTIgQEAKICAgICAvLyBTaW5jZSBTdHJp
bmdJbXBsIG9iamVjdHMgYXJlIGltbXV0YWJsZSwgdGhlcmUncyBubyBvdGhlciByZWFzb24gdG8g
bWFrZSBhIGNvcHkuCiAgICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiB0aHJlYWRzYWZlQ29weSgp
IGNvbnN0OwogCi0gICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBzdWJzdHJpbmcodW5zaWduZWQg
cG9zLCB1bnNpZ25lZCBsZW4gPSBVSU5UX01BWCk7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIFBh
c3NSZWZQdHI8U3RyaW5nSW1wbD4gc3Vic3RyaW5nKHVuc2lnbmVkIHBvcywgdW5zaWduZWQgbGVu
ID0gVUlOVF9NQVgpOwogCiAgICAgVUNoYXIgb3BlcmF0b3JbXSh1bnNpZ25lZCBpKSB7IEFTU0VS
VChpIDwgbV9sZW5ndGgpOyByZXR1cm4gbV9kYXRhW2ldOyB9CiAgICAgVUNoYXIzMiBjaGFyYWN0
ZXJTdGFydGluZ0F0KHVuc2lnbmVkKTsKIAotICAgIGJvb2wgY29udGFpbnNPbmx5V2hpdGVzcGFj
ZSgpOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBib29sIGNvbnRhaW5zT25seVdoaXRlc3BhY2Uo
KTsKIAogICAgIGludCB0b0ludFN0cmljdChib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApOwog
ICAgIHVuc2lnbmVkIHRvVUludFN0cmljdChib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApOwpA
QCAtMjc3LDcgKzI3Nyw3IEBACiAgICAgdWludDY0X3QgdG9VSW50NjRTdHJpY3QoYm9vbCogb2sg
PSAwLCBpbnQgYmFzZSA9IDEwKTsKICAgICBpbnRwdHJfdCB0b0ludFB0clN0cmljdChib29sKiBv
ayA9IDAsIGludCBiYXNlID0gMTApOwogCi0gICAgaW50IHRvSW50KGJvb2wqIG9rID0gMCk7IC8v
IGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQorICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBpbnQgdG9J
bnQoYm9vbCogb2sgPSAwKTsgLy8gaWdub3JlcyB0cmFpbGluZyBnYXJiYWdlCiAgICAgdW5zaWdu
ZWQgdG9VSW50KGJvb2wqIG9rID0gMCk7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQogICAg
IGludDY0X3QgdG9JbnQ2NChib29sKiBvayA9IDApOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJh
Z2UKICAgICB1aW50NjRfdCB0b1VJbnQ2NChib29sKiBvayA9IDApOyAvLyBpZ25vcmVzIHRyYWls
aW5nIGdhcmJhZ2UKQEAgLTI4NiwzNSArMjg2LDM1IEBACiAgICAgZG91YmxlIHRvRG91YmxlKGJv
b2wqIG9rID0gMCk7CiAgICAgZmxvYXQgdG9GbG9hdChib29sKiBvayA9IDApOwogCi0gICAgUGFz
c1JlZlB0cjxTdHJpbmdJbXBsPiBsb3dlcigpOwotICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4g
dXBwZXIoKTsKLSAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHNlY3VyZShVQ2hhciBhQ2hhcik7
CisgICAgSlNfRVhQT1JURURfU1lNQk9MIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gbG93ZXIoKTsK
KyAgICBKU19FWFBPUlRFRF9TWU1CT0wgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiB1cHBlcigpOwor
ICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHNlY3VyZShVQ2hh
ciBhQ2hhcik7CiAgICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBmb2xkQ2FzZSgpOwogCiAgICAg
UGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBzdHJpcFdoaXRlU3BhY2UoKTsKLSAgICBQYXNzUmVmUHRy
PFN0cmluZ0ltcGw+IHNpbXBsaWZ5V2hpdGVTcGFjZSgpOworICAgIEpTX0VYUE9SVEVEX1NZTUJP
TCBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHNpbXBsaWZ5V2hpdGVTcGFjZSgpOwogCiAgICAgUGFz
c1JlZlB0cjxTdHJpbmdJbXBsPiByZW1vdmVDaGFyYWN0ZXJzKENoYXJhY3Rlck1hdGNoRnVuY3Rp
b25QdHIpOwogCi0gICAgaW50IGZpbmQoY29uc3QgY2hhciosIGludCBpbmRleCA9IDAsIGJvb2wg
Y2FzZVNlbnNpdGl2ZSA9IHRydWUpOwotICAgIGludCBmaW5kKFVDaGFyLCBpbnQgaW5kZXggPSAw
KTsKLSAgICBpbnQgZmluZChDaGFyYWN0ZXJNYXRjaEZ1bmN0aW9uUHRyLCBpbnQgaW5kZXggPSAw
KTsKLSAgICBpbnQgZmluZChTdHJpbmdJbXBsKiwgaW50IGluZGV4LCBib29sIGNhc2VTZW5zaXRp
dmUgPSB0cnVlKTsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgaW50IGZpbmQoY29uc3QgY2hhcios
IGludCBpbmRleCA9IDAsIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IHRydWUpOworICAgIEpTX0VYUE9S
VEVEX1NZTUJPTCBpbnQgZmluZChVQ2hhciwgaW50IGluZGV4ID0gMCk7CisgICAgSlNfRVhQT1JU
RURfU1lNQk9MIGludCBmaW5kKENoYXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIsIGludCBpbmRleCA9
IDApOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBpbnQgZmluZChTdHJpbmdJbXBsKiwgaW50IGlu
ZGV4LCBib29sIGNhc2VTZW5zaXRpdmUgPSB0cnVlKTsKIAotICAgIGludCByZXZlcnNlRmluZChV
Q2hhciwgaW50IGluZGV4KTsKLSAgICBpbnQgcmV2ZXJzZUZpbmQoU3RyaW5nSW1wbCosIGludCBp
bmRleCwgYm9vbCBjYXNlU2Vuc2l0aXZlID0gdHJ1ZSk7CisgICAgSlNfRVhQT1JURURfU1lNQk9M
IGludCByZXZlcnNlRmluZChVQ2hhciwgaW50IGluZGV4KTsKKyAgICBKU19FWFBPUlRFRF9TWU1C
T0wgaW50IHJldmVyc2VGaW5kKFN0cmluZ0ltcGwqLCBpbnQgaW5kZXgsIGJvb2wgY2FzZVNlbnNp
dGl2ZSA9IHRydWUpOwogICAgIAogICAgIGJvb2wgc3RhcnRzV2l0aChTdHJpbmdJbXBsKiBzdHIs
IGJvb2wgY2FzZVNlbnNpdGl2ZSA9IHRydWUpIHsgcmV0dXJuIHJldmVyc2VGaW5kKHN0ciwgMCwg
Y2FzZVNlbnNpdGl2ZSkgPT0gMDsgfQotICAgIGJvb2wgZW5kc1dpdGgoU3RyaW5nSW1wbCosIGJv
b2wgY2FzZVNlbnNpdGl2ZSA9IHRydWUpOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBib29sIGVu
ZHNXaXRoKFN0cmluZ0ltcGwqLCBib29sIGNhc2VTZW5zaXRpdmUgPSB0cnVlKTsKIAotICAgIFBh
c3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwbGFjZShVQ2hhciwgVUNoYXIpOwotICAgIFBhc3NSZWZQ
dHI8U3RyaW5nSW1wbD4gcmVwbGFjZShVQ2hhciwgU3RyaW5nSW1wbCopOwotICAgIFBhc3NSZWZQ
dHI8U3RyaW5nSW1wbD4gcmVwbGFjZShTdHJpbmdJbXBsKiwgU3RyaW5nSW1wbCopOwotICAgIFBh
c3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwbGFjZSh1bnNpZ25lZCBpbmRleCwgdW5zaWduZWQgbGVu
LCBTdHJpbmdJbXBsKik7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIFBhc3NSZWZQdHI8U3RyaW5n
SW1wbD4gcmVwbGFjZShVQ2hhciwgVUNoYXIpOworICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBQYXNz
UmVmUHRyPFN0cmluZ0ltcGw+IHJlcGxhY2UoVUNoYXIsIFN0cmluZ0ltcGwqKTsKKyAgICBKU19F
WFBPUlRFRF9TWU1CT0wgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXBsYWNlKFN0cmluZ0ltcGwq
LCBTdHJpbmdJbXBsKik7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIFBhc3NSZWZQdHI8U3RyaW5n
SW1wbD4gcmVwbGFjZSh1bnNpZ25lZCBpbmRleCwgdW5zaWduZWQgbGVuLCBTdHJpbmdJbXBsKik7
CiAKICAgICBWZWN0b3I8Y2hhcj4gYXNjaWkoKTsKIAotICAgIFdURjo6VW5pY29kZTo6RGlyZWN0
aW9uIGRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKCk7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIFdU
Rjo6VW5pY29kZTo6RGlyZWN0aW9uIGRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKCk7CiAKICNpZiBQ
TEFURk9STShDRikKICAgICBDRlN0cmluZ1JlZiBjcmVhdGVDRlN0cmluZygpOwpAQCAtMzI3LDcg
KzMyNyw3IEBACiAgICAgLy8gVGhpcyBudW1iZXIgbXVzdCBiZSBhdCBsZWFzdCAyIHRvIGF2b2lk
IHNoYXJpbmcgZW1wdHksIG51bGwgYXMgd2VsbCBhcyAxIGNoYXJhY3RlciBzdHJpbmdzIGZyb20g
U21hbGxTdHJpbmdzLgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2NvcHlDaGFyc0lubGlu
ZUN1dE9mZiA9IDIwOwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gY3JlYXRl
U3RyaXBwaW5nTnVsbENoYXJhY3RlcnNTbG93Q2FzZShjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxl
bmd0aCk7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0lt
cGw+IGNyZWF0ZVN0cmlwcGluZ051bGxDaGFyYWN0ZXJzU2xvd0Nhc2UoY29uc3QgVUNoYXIqLCB1
bnNpZ25lZCBsZW5ndGgpOwogICAgIAogICAgIEJ1ZmZlck93bmVyc2hpcCBidWZmZXJPd25lcnNo
aXAoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxCdWZmZXJPd25lcnNoaXA+KG1fcmVmQ291
bnRBbmRGbGFncyAmIHNfcmVmQ291bnRNYXNrQnVmZmVyT3duZXJzaGlwKTsgfQogICAgIGJvb2wg
aXNTdGF0aWMoKSBjb25zdCB7IHJldHVybiBtX3JlZkNvdW50QW5kRmxhZ3MgJiBzX3JlZkNvdW50
RmxhZ1N0YXRpYzsgfQpAQCAtMzQwLDE3ICszNDAsMTcgQEAKICAgICBtdXRhYmxlIHVuc2lnbmVk
IG1faGFzaDsKIH07CiAKLWJvb2wgZXF1YWwoY29uc3QgU3RyaW5nSW1wbCosIGNvbnN0IFN0cmlu
Z0ltcGwqKTsKLWJvb2wgZXF1YWwoY29uc3QgU3RyaW5nSW1wbCosIGNvbnN0IGNoYXIqKTsKK0pT
X0VYUE9SVEVEX1NZTUJPTCBib29sIGVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqLCBjb25zdCBTdHJp
bmdJbXBsKik7CitKU19FWFBPUlRFRF9TWU1CT0wgYm9vbCBlcXVhbChjb25zdCBTdHJpbmdJbXBs
KiwgY29uc3QgY2hhciopOwogaW5saW5lIGJvb2wgZXF1YWwoY29uc3QgY2hhciogYSwgU3RyaW5n
SW1wbCogYikgeyByZXR1cm4gZXF1YWwoYiwgYSk7IH0KIAotYm9vbCBlcXVhbElnbm9yaW5nQ2Fz
ZShTdHJpbmdJbXBsKiwgU3RyaW5nSW1wbCopOwotYm9vbCBlcXVhbElnbm9yaW5nQ2FzZShTdHJp
bmdJbXBsKiwgY29uc3QgY2hhciopOworSlNfRVhQT1JURURfU1lNQk9MIGJvb2wgZXF1YWxJZ25v
cmluZ0Nhc2UoU3RyaW5nSW1wbCosIFN0cmluZ0ltcGwqKTsKK0pTX0VYUE9SVEVEX1NZTUJPTCBi
b29sIGVxdWFsSWdub3JpbmdDYXNlKFN0cmluZ0ltcGwqLCBjb25zdCBjaGFyKik7CiBpbmxpbmUg
Ym9vbCBlcXVhbElnbm9yaW5nQ2FzZShjb25zdCBjaGFyKiBhLCBTdHJpbmdJbXBsKiBiKSB7IHJl
dHVybiBlcXVhbElnbm9yaW5nQ2FzZShiLCBhKTsgfQotYm9vbCBlcXVhbElnbm9yaW5nQ2FzZShj
b25zdCBVQ2hhciogYSwgY29uc3QgY2hhciogYiwgdW5zaWduZWQgbGVuZ3RoKTsKK0pTX0VYUE9S
VEVEX1NZTUJPTCBib29sIGVxdWFsSWdub3JpbmdDYXNlKGNvbnN0IFVDaGFyKiBhLCBjb25zdCBj
aGFyKiBiLCB1bnNpZ25lZCBsZW5ndGgpOwogaW5saW5lIGJvb2wgZXF1YWxJZ25vcmluZ0Nhc2Uo
Y29uc3QgY2hhciogYSwgY29uc3QgVUNoYXIqIGIsIHVuc2lnbmVkIGxlbmd0aCkgeyByZXR1cm4g
ZXF1YWxJZ25vcmluZ0Nhc2UoYiwgYSwgbGVuZ3RoKTsgfQogCi1ib29sIGVxdWFsSWdub3JpbmdO
dWxsaXR5KFN0cmluZ0ltcGwqLCBTdHJpbmdJbXBsKik7CitKU19FWFBPUlRFRF9TWU1CT0wgYm9v
bCBlcXVhbElnbm9yaW5nTnVsbGl0eShTdHJpbmdJbXBsKiwgU3RyaW5nSW1wbCopOwogCiBpbnQg
Y29kZVBvaW50Q29tcGFyZShjb25zdCBTdHJpbmdJbXBsKiwgY29uc3QgU3RyaW5nSW1wbCopOwog
CkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvQnl0ZUFycmF5LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2
YVNjcmlwdENvcmUvd3RmL0J5dGVBcnJheS5oCShyZXZpc2lvbiA2MzQ2MSkKKysrIEphdmFTY3Jp
cHRDb3JlL3d0Zi9CeXRlQXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtNzgsNyArNzgsNyBAQAog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Qnl0
ZUFycmF5PiBjcmVhdGUoc2l6ZV90IHNpemUpOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wg
c3RhdGljIFBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBjcmVhdGUoc2l6ZV90IHNpemUpOwogCiAgICAg
cHJpdmF0ZToKICAgICAgICAgQnl0ZUFycmF5KHNpemVfdCBzaXplKQpJbmRleDogSmF2YVNjcmlw
dENvcmUvd3RmL1RocmVhZGluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9U
aHJlYWRpbmcuaAkocmV2aXNpb24gNjM0NjEpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFk
aW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTg0LDI2ICs4NCwyNiBAQAogLy8gVGhpcyBmdW5jdGlv
biBtdXN0IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4gSXQgaXMgc2FmZSB0byBjYWxs
IGl0IHJlcGVhdGVkbHkuCiAvLyBEYXJ3aW4gaXMgYW4gZXhjZXB0aW9uIHRvIHRoaXMgcnVsZTog
aXQgaXMgT0sgdG8gY2FsbCBpdCBmcm9tIGFueSB0aHJlYWQsIHRoZSBvbmx5IAogLy8gcmVxdWly
ZW1lbnQgaXMgdGhhdCB0aGUgY2FsbHMgYXJlIG5vdCByZWVudHJhbnQuCi12b2lkIGluaXRpYWxp
emVUaHJlYWRpbmcoKTsKK0pTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIGluaXRpYWxpemVUaHJlYWRp
bmcoKTsKIAogLy8gUmV0dXJucyAwIGlmIHRocmVhZCBjcmVhdGlvbiBmYWlsZWQuCiAvLyBUaGUg
dGhyZWFkIG5hbWUgbXVzdCBiZSBhIGxpdGVyYWwgc2luY2Ugb24gc29tZSBwbGF0Zm9ybXMgaXQn
cyBwYXNzZWQgaW4gdG8gdGhlIHRocmVhZC4KLVRocmVhZElkZW50aWZpZXIgY3JlYXRlVGhyZWFk
KFRocmVhZEZ1bmN0aW9uLCB2b2lkKiwgY29uc3QgY2hhciogdGhyZWFkTmFtZSk7CitKU19FWFBP
UlRFRF9TWU1CT0wgVGhyZWFkSWRlbnRpZmllciBjcmVhdGVUaHJlYWQoVGhyZWFkRnVuY3Rpb24s
IHZvaWQqLCBjb25zdCBjaGFyKiB0aHJlYWROYW1lKTsKIAogLy8gSW50ZXJuYWwgcGxhdGZvcm0t
c3BlY2lmaWMgY3JlYXRlVGhyZWFkIGltcGxlbWVudGF0aW9uLgotVGhyZWFkSWRlbnRpZmllciBj
cmVhdGVUaHJlYWRJbnRlcm5hbChUaHJlYWRGdW5jdGlvbiwgdm9pZCosIGNvbnN0IGNoYXIqIHRo
cmVhZE5hbWUpOworSlNfRVhQT1JURURfU1lNQk9MIFRocmVhZElkZW50aWZpZXIgY3JlYXRlVGhy
ZWFkSW50ZXJuYWwoVGhyZWFkRnVuY3Rpb24sIHZvaWQqLCBjb25zdCBjaGFyKiB0aHJlYWROYW1l
KTsKIAogLy8gQ2FsbGVkIGluIHRoZSB0aHJlYWQgZHVyaW5nIGluaXRpYWxpemF0aW9uLgogLy8g
SGVscGZ1bCBmb3IgcGxhdGZvcm1zIHdoZXJlIHRoZSB0aHJlYWQgbmFtZSBtdXN0IGJlIHNldCBm
cm9tIHdpdGhpbiB0aGUgdGhyZWFkLgogdm9pZCBpbml0aWFsaXplQ3VycmVudFRocmVhZEludGVy
bmFsKGNvbnN0IGNoYXIqIHRocmVhZE5hbWUpOwogCi1UaHJlYWRJZGVudGlmaWVyIGN1cnJlbnRU
aHJlYWQoKTsKLWludCB3YWl0Rm9yVGhyZWFkQ29tcGxldGlvbihUaHJlYWRJZGVudGlmaWVyLCB2
b2lkKiopOwotdm9pZCBkZXRhY2hUaHJlYWQoVGhyZWFkSWRlbnRpZmllcik7CitKU19FWFBPUlRF
RF9TWU1CT0wgVGhyZWFkSWRlbnRpZmllciBjdXJyZW50VGhyZWFkKCk7CitKU19FWFBPUlRFRF9T
WU1CT0wgaW50IHdhaXRGb3JUaHJlYWRDb21wbGV0aW9uKFRocmVhZElkZW50aWZpZXIsIHZvaWQq
Kik7CitKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBkZXRhY2hUaHJlYWQoVGhyZWFkSWRlbnRpZmll
cik7CiAKIAotdm9pZCBsb2NrQXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljTXV0ZXgoKTsKLXZv
aWQgdW5sb2NrQXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljTXV0ZXgoKTsKK0pTX0VYUE9SVEVE
X1NZTUJPTCB2b2lkIGxvY2tBdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleCgpOworSlNf
RVhQT1JURURfU1lNQk9MIHZvaWQgdW5sb2NrQXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljTXV0
ZXgoKTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9N
YWluVGhyZWFkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL01haW5UaHJlYWQu
aAkocmV2aXNpb24gNjM0NjEpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvTWFpblRocmVhZC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zOCwxNSArMzgsMTUgQEAKIHR5cGVkZWYgdm9pZCBNYWluVGhyZWFk
RnVuY3Rpb24odm9pZCopOwogCiAvLyBNdXN0IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVh
ZC4KLXZvaWQgaW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKK0pTX0VYUE9SVEVEX1NZTUJPTCB2b2lk
IGluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAKLXZvaWQgY2FsbE9uTWFpblRocmVhZChNYWluVGhy
ZWFkRnVuY3Rpb24qLCB2b2lkKiBjb250ZXh0KTsKK0pTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIGNh
bGxPbk1haW5UaHJlYWQoTWFpblRocmVhZEZ1bmN0aW9uKiwgdm9pZCogY29udGV4dCk7CiB2b2lk
IGNhbGxPbk1haW5UaHJlYWRBbmRXYWl0KE1haW5UaHJlYWRGdW5jdGlvbiosIHZvaWQqIGNvbnRl
eHQpOwogdm9pZCBjYW5jZWxDYWxsT25NYWluVGhyZWFkKE1haW5UaHJlYWRGdW5jdGlvbiosIHZv
aWQqIGNvbnRleHQpOwogCi12b2lkIHNldE1haW5UaHJlYWRDYWxsYmFja3NQYXVzZWQoYm9vbCBw
YXVzZWQpOworSlNfRVhQT1JURURfU1lNQk9MIHZvaWQgc2V0TWFpblRocmVhZENhbGxiYWNrc1Bh
dXNlZChib29sIHBhdXNlZCk7CiAKLWJvb2wgaXNNYWluVGhyZWFkKCk7CitKU19FWFBPUlRFRF9T
WU1CT0wgYm9vbCBpc01haW5UaHJlYWQoKTsKIAogLy8gTk9URTogdGhlc2UgZnVuY3Rpb25zIGFy
ZSBpbnRlcm5hbCB0byB0aGUgY2FsbE9uTWFpblRocmVhZCBpbXBsZW1lbnRhdGlvbi4KIHZvaWQg
aW5pdGlhbGl6ZU1haW5UaHJlYWRQbGF0Zm9ybSgpOwpJbmRleDogSmF2YVNjcmlwdENvcmUvd3Rm
L0Rpc2FsbG93Q1R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvRGlzYWxs
b3dDVHlwZS5oCShyZXZpc2lvbiA2MzQ2MSkKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9EaXNhbGxv
d0NUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDEyICsyOSwxMyBAQAogI2lmbmRlZiBXVEZf
RGlzYWxsb3dDVHlwZV9oCiAjZGVmaW5lIFdURl9EaXNhbGxvd0NUeXBlX2gKIAotLy8gVGhlIGJl
aGF2aW9yIG9mIG1hbnkgb2YgdGhlIGZ1bmN0aW9ucyBpbiB0aGUgPGN0eXBlLmg+IGhlYWRlciBp
cyBkZXBlbmRlbnQKLS8vIG9uIHRoZSBjdXJyZW50IGxvY2FsZS4gQnV0IGFsbW9zdCBhbGwgdXNl
cyBvZiB0aGVzZSBmdW5jdGlvbnMgYXJlIGZvcgotLy8gbG9jYWxlLWluZGVwZW5kZW50LCBBU0NJ
SS1zcGVjaWZpYyBwdXJwb3Nlcy4gSW4gV2ViS2l0IGNvZGUgd2UgdXNlIG91ciBvd24KLS8vIEFT
Q0lJLXNwZWNpZmljIGZ1bmN0aW9ucyBpbnN0ZWFkLiBUaGlzIGhlYWRlciBtYWtlcyBzdXJlIHdl
IGdldCBhIGNvbXBpbGUtdGltZQotLy8gZXJyb3IgaWYgd2UgdXNlIG9uZSBvZiB0aGUgPGN0eXBl
Lmg+IGZ1bmN0aW9ucyBieSBhY2NpZGVudC4KLQorLyogCisgKiBUaGUgYmVoYXZpb3Igb2YgbWFu
eSBvZiB0aGUgZnVuY3Rpb25zIGluIHRoZSA8Y3R5cGUuaD4gaGVhZGVyIGlzIGRlcGVuZGVudAor
ICogb24gdGhlIGN1cnJlbnQgbG9jYWxlLiBCdXQgYWxtb3N0IGFsbCB1c2VzIG9mIHRoZXNlIGZ1
bmN0aW9ucyBhcmUgZm9yCisgKiBsb2NhbGUtaW5kZXBlbmRlbnQsIEFTQ0lJLXNwZWNpZmljIHB1
cnBvc2VzLiBJbiBXZWJLaXQgY29kZSB3ZSB1c2Ugb3VyIG93bgorICogQVNDSUktc3BlY2lmaWMg
ZnVuY3Rpb25zIGluc3RlYWQuIFRoaXMgaGVhZGVyIG1ha2VzIHN1cmUgd2UgZ2V0IGEgY29tcGls
ZS10aW1lCisgKiBlcnJvciBpZiB3ZSB1c2Ugb25lIG9mIHRoZSA8Y3R5cGUuaD4gZnVuY3Rpb25z
IGJ5IGFjY2lkZW50LgorICovCiAjaW5jbHVkZSA8Y3R5cGUuaD4KIAogI3VuZGVmIGlzYWxudW0K
SW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9GYXN0TWFsbG9jLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2
YVNjcmlwdENvcmUvd3RmL0Zhc3RNYWxsb2MuaAkocmV2aXNpb24gNjM0NjEpCisrKyBKYXZhU2Ny
aXB0Q29yZS93dGYvRmFzdE1hbGxvYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxNTMgKzI4LDE1
MyBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyBjYWxsIENS
QVNIKCkgaWYgYW4gYWxsb2NhdGlvbiBmYWlscy4KLSAgICB2b2lkKiBmYXN0TWFsbG9jKHNpemVf
dCk7Ci0gICAgdm9pZCogZmFzdFplcm9lZE1hbGxvYyhzaXplX3QpOwotICAgIHZvaWQqIGZhc3RD
YWxsb2Moc2l6ZV90IG51bUVsZW1lbnRzLCBzaXplX3QgZWxlbWVudFNpemUpOwotICAgIHZvaWQq
IGZhc3RSZWFsbG9jKHZvaWQqLCBzaXplX3QpOwotICAgIGNoYXIqIGZhc3RTdHJEdXAoY29uc3Qg
Y2hhciopOwotICAgIHNpemVfdCBmYXN0TWFsbG9jU2l6ZShjb25zdCB2b2lkKik7CisvLyBUaGVz
ZSBmdW5jdGlvbnMgY2FsbCBDUkFTSCgpIGlmIGFuIGFsbG9jYXRpb24gZmFpbHMuCitKU19FWFBP
UlRFRF9TWU1CT0wgdm9pZCogZmFzdE1hbGxvYyhzaXplX3QpOworSlNfRVhQT1JURURfU1lNQk9M
IHZvaWQqIGZhc3RaZXJvZWRNYWxsb2Moc2l6ZV90KTsKK0pTX0VYUE9SVEVEX1NZTUJPTCB2b2lk
KiBmYXN0Q2FsbG9jKHNpemVfdCBudW1FbGVtZW50cywgc2l6ZV90IGVsZW1lbnRTaXplKTsKK0pT
X0VYUE9SVEVEX1NZTUJPTCB2b2lkKiBmYXN0UmVhbGxvYyh2b2lkKiwgc2l6ZV90KTsKK0pTX0VY
UE9SVEVEX1NZTUJPTCBjaGFyKiBmYXN0U3RyRHVwKGNvbnN0IGNoYXIqKTsKK0pTX0VYUE9SVEVE
X1NZTUJPTCBzaXplX3QgZmFzdE1hbGxvY1NpemUoY29uc3Qgdm9pZCopOwogCi0gICAgc3RydWN0
IFRyeU1hbGxvY1JldHVyblZhbHVlIHsKLSAgICAgICAgVHJ5TWFsbG9jUmV0dXJuVmFsdWUodm9p
ZCogZGF0YSkKLSAgICAgICAgICAgIDogbV9kYXRhKGRhdGEpCi0gICAgICAgIHsKLSAgICAgICAg
fQotICAgICAgICBUcnlNYWxsb2NSZXR1cm5WYWx1ZShjb25zdCBUcnlNYWxsb2NSZXR1cm5WYWx1
ZSYgc291cmNlKQotICAgICAgICAgICAgOiBtX2RhdGEoc291cmNlLm1fZGF0YSkKLSAgICAgICAg
ewotICAgICAgICAgICAgc291cmNlLm1fZGF0YSA9IDA7Ci0gICAgICAgIH0KLSAgICAgICAgflRy
eU1hbGxvY1JldHVyblZhbHVlKCkgeyBBU1NFUlQoIW1fZGF0YSk7IH0KLSAgICAgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+IGJvb2wgZ2V0VmFsdWUoVCYgZGF0YSkgV0FSTl9VTlVTRURfUkVUVVJO
OwotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gb3BlcmF0b3IgUG9zc2libHlOdWxsPFQ+
KCkKLSAgICAgICAgeyAKLSAgICAgICAgICAgIFQgdmFsdWU7IAotICAgICAgICAgICAgZ2V0VmFs
dWUodmFsdWUpOyAKLSAgICAgICAgICAgIHJldHVybiBQb3NzaWJseU51bGw8VD4odmFsdWUpOwot
ICAgICAgICB9IAotICAgIHByaXZhdGU6Ci0gICAgICAgIG11dGFibGUgdm9pZCogbV9kYXRhOwot
ICAgIH07Ci0gICAgCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGJvb2wgVHJ5TWFsbG9jUmV0
dXJuVmFsdWU6OmdldFZhbHVlKFQmIGRhdGEpCitzdHJ1Y3QgVHJ5TWFsbG9jUmV0dXJuVmFsdWUg
eworICAgIFRyeU1hbGxvY1JldHVyblZhbHVlKHZvaWQqIGRhdGEpCisgICAgICAgIDogbV9kYXRh
KGRhdGEpCiAgICAgewotICAgICAgICB1bmlvbiB1IHsgdm9pZCogZGF0YTsgVCB0YXJnZXQ7IH0g
cmVzOwotICAgICAgICByZXMuZGF0YSA9IG1fZGF0YTsKLSAgICAgICAgZGF0YSA9IHJlcy50YXJn
ZXQ7Ci0gICAgICAgIGJvb2wgcmV0dXJuVmFsdWUgPSAhIW1fZGF0YTsKLSAgICAgICAgbV9kYXRh
ID0gMDsKLSAgICAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogICAgIH0KKyAgICBUcnlNYWxsb2NS
ZXR1cm5WYWx1ZShjb25zdCBUcnlNYWxsb2NSZXR1cm5WYWx1ZSYgc291cmNlKQorICAgICAgICA6
IG1fZGF0YShzb3VyY2UubV9kYXRhKQorICAgIHsKKyAgICAgICAgc291cmNlLm1fZGF0YSA9IDA7
CisgICAgfQorICAgIH5UcnlNYWxsb2NSZXR1cm5WYWx1ZSgpIHsgQVNTRVJUKCFtX2RhdGEpOyB9
CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGJvb2wgZ2V0VmFsdWUoVCYgZGF0YSkgV0FSTl9V
TlVTRURfUkVUVVJOOworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBvcGVyYXRvciBQb3NzaWJs
eU51bGw8VD4oKQorICAgIHsgCisgICAgICAgIFQgdmFsdWU7IAorICAgICAgICBnZXRWYWx1ZSh2
YWx1ZSk7IAorICAgICAgICByZXR1cm4gUG9zc2libHlOdWxsPFQ+KHZhbHVlKTsKKyAgICB9IAor
cHJpdmF0ZToKKyAgICBtdXRhYmxlIHZvaWQqIG1fZGF0YTsKK307CiAKLSAgICBUcnlNYWxsb2NS
ZXR1cm5WYWx1ZSB0cnlGYXN0TWFsbG9jKHNpemVfdCBuKTsKLSAgICBUcnlNYWxsb2NSZXR1cm5W
YWx1ZSB0cnlGYXN0WmVyb2VkTWFsbG9jKHNpemVfdCBuKTsKLSAgICBUcnlNYWxsb2NSZXR1cm5W
YWx1ZSB0cnlGYXN0Q2FsbG9jKHNpemVfdCBuX2VsZW1lbnRzLCBzaXplX3QgZWxlbWVudF9zaXpl
KTsKLSAgICBUcnlNYWxsb2NSZXR1cm5WYWx1ZSB0cnlGYXN0UmVhbGxvYyh2b2lkKiBwLCBzaXpl
X3Qgbik7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gYm9vbCBUcnlNYWxsb2NSZXR1cm5WYWx1ZTo6
Z2V0VmFsdWUoVCYgZGF0YSkKK3sKKyAgICB1bmlvbiB1IHsgdm9pZCogZGF0YTsgVCB0YXJnZXQ7
IH0gcmVzOworICAgIHJlcy5kYXRhID0gbV9kYXRhOworICAgIGRhdGEgPSByZXMudGFyZ2V0Owor
ICAgIGJvb2wgcmV0dXJuVmFsdWUgPSAhIW1fZGF0YTsKKyAgICBtX2RhdGEgPSAwOworICAgIHJl
dHVybiByZXR1cm5WYWx1ZTsKK30KIAotICAgIHZvaWQgZmFzdEZyZWUodm9pZCopOworSlNfRVhQ
T1JURURfU1lNQk9MIFRyeU1hbGxvY1JldHVyblZhbHVlIHRyeUZhc3RNYWxsb2Moc2l6ZV90IG4p
OworSlNfRVhQT1JURURfU1lNQk9MIFRyeU1hbGxvY1JldHVyblZhbHVlIHRyeUZhc3RaZXJvZWRN
YWxsb2Moc2l6ZV90IG4pOworSlNfRVhQT1JURURfU1lNQk9MIFRyeU1hbGxvY1JldHVyblZhbHVl
IHRyeUZhc3RDYWxsb2Moc2l6ZV90IG5fZWxlbWVudHMsIHNpemVfdCBlbGVtZW50X3NpemUpOwor
SlNfRVhQT1JURURfU1lNQk9MIFRyeU1hbGxvY1JldHVyblZhbHVlIHRyeUZhc3RSZWFsbG9jKHZv
aWQqIHAsIHNpemVfdCBuKTsKIAorSlNfRVhQT1JURURfU1lNQk9MIHZvaWQgZmFzdEZyZWUodm9p
ZCopOworCiAjaWZuZGVmIE5ERUJVRyAgICAKLSAgICB2b2lkIGZhc3RNYWxsb2NGb3JiaWQoKTsK
LSAgICB2b2lkIGZhc3RNYWxsb2NBbGxvdygpOwordm9pZCBmYXN0TWFsbG9jRm9yYmlkKCk7Cit2
b2lkIGZhc3RNYWxsb2NBbGxvdygpOwogI2VuZGlmCiAKLSAgICB2b2lkIHJlbGVhc2VGYXN0TWFs
bG9jRnJlZU1lbW9yeSgpOwotICAgIAotICAgIHN0cnVjdCBGYXN0TWFsbG9jU3RhdGlzdGljcyB7
Ci0gICAgICAgIHNpemVfdCByZXNlcnZlZFZNQnl0ZXM7Ci0gICAgICAgIHNpemVfdCBjb21taXR0
ZWRWTUJ5dGVzOwotICAgICAgICBzaXplX3QgZnJlZUxpc3RCeXRlczsKLSAgICB9OwotICAgIEZh
c3RNYWxsb2NTdGF0aXN0aWNzIGZhc3RNYWxsb2NTdGF0aXN0aWNzKCk7Cit2b2lkIHJlbGVhc2VG
YXN0TWFsbG9jRnJlZU1lbW9yeSgpOwogCi0gICAgLy8gVGhpcyBkZWZpbmVzIGEgdHlwZSB3aGlj
aCBob2xkcyBhbiB1bnNpZ25lZCBpbnRlZ2VyIGFuZCBpcyB0aGUgc2FtZQotICAgIC8vIHNpemUg
YXMgdGhlIG1pbmltYWxseSBhbGlnbmVkIG1lbW9yeSBhbGxvY2F0aW9uLgotICAgIHR5cGVkZWYg
dW5zaWduZWQgbG9uZyBsb25nIEFsbG9jQWxpZ25tZW50SW50ZWdlcjsKK3N0cnVjdCBGYXN0TWFs
bG9jU3RhdGlzdGljcyB7CisgICAgc2l6ZV90IHJlc2VydmVkVk1CeXRlczsKKyAgICBzaXplX3Qg
Y29tbWl0dGVkVk1CeXRlczsKKyAgICBzaXplX3QgZnJlZUxpc3RCeXRlczsKK307CitGYXN0TWFs
bG9jU3RhdGlzdGljcyBmYXN0TWFsbG9jU3RhdGlzdGljcygpOwogCi0gICAgbmFtZXNwYWNlIElu
dGVybmFsIHsKLSAgICAgICAgZW51bSBBbGxvY1R5cGUgeyAgICAgICAgICAgICAgICAgICAgLy8g
U3RhcnQgd2l0aCBhbiB1bnVzdWFsIG51bWJlciBpbnN0ZWFkIG9mIHplcm8sIGJlY2F1c2UgemVy
byBpcyBjb21tb24uCi0gICAgICAgICAgICBBbGxvY1R5cGVNYWxsb2MgPSAweDM3NWQ2NzUwLCAg
IC8vIEVuY29tcGFzc2VzIGZhc3RNYWxsb2MsIGZhc3RaZXJvZWRNYWxsb2MsIGZhc3RDYWxsb2Ms
IGZhc3RSZWFsbG9jLgotICAgICAgICAgICAgQWxsb2NUeXBlQ2xhc3NOZXcsICAgICAgICAgICAg
ICAvLyBFbmNvbXBhc3NlcyBjbGFzcyBvcGVyYXRvciBuZXcgZnJvbSBGYXN0QWxsb2NCYXNlLgot
ICAgICAgICAgICAgQWxsb2NUeXBlQ2xhc3NOZXdBcnJheSwgICAgICAgICAvLyBFbmNvbXBhc3Nl
cyBjbGFzcyBvcGVyYXRvciBuZXdbXSBmcm9tIEZhc3RBbGxvY0Jhc2UuCi0gICAgICAgICAgICBB
bGxvY1R5cGVGYXN0TmV3LCAgICAgICAgICAgICAgIC8vIEVuY29tcGFzc2VzIGZhc3ROZXcuCi0g
ICAgICAgICAgICBBbGxvY1R5cGVGYXN0TmV3QXJyYXksICAgICAgICAgIC8vIEVuY29tcGFzc2Vz
IGZhc3ROZXdBcnJheS4KLSAgICAgICAgICAgIEFsbG9jVHlwZU5ldywgICAgICAgICAgICAgICAg
ICAgLy8gRW5jb21wYXNzZXMgZ2xvYmFsIG9wZXJhdG9yIG5ldy4KLSAgICAgICAgICAgIEFsbG9j
VHlwZU5ld0FycmF5ICAgICAgICAgICAgICAgLy8gRW5jb21wYXNzZXMgZ2xvYmFsIG9wZXJhdG9y
IG5ld1tdLgotICAgICAgICB9OwotICAgIH0KKy8vIFRoaXMgZGVmaW5lcyBhIHR5cGUgd2hpY2gg
aG9sZHMgYW4gdW5zaWduZWQgaW50ZWdlciBhbmQgaXMgdGhlIHNhbWUKKy8vIHNpemUgYXMgdGhl
IG1pbmltYWxseSBhbGlnbmVkIG1lbW9yeSBhbGxvY2F0aW9uLgordHlwZWRlZiB1bnNpZ25lZCBs
b25nIGxvbmcgQWxsb2NBbGlnbm1lbnRJbnRlZ2VyOwogCituYW1lc3BhY2UgSW50ZXJuYWwgewor
ZW51bSBBbGxvY1R5cGUgeyAgICAgICAgICAgICAgICAgICAgLy8gU3RhcnQgd2l0aCBhbiB1bnVz
dWFsIG51bWJlciBpbnN0ZWFkIG9mIHplcm8sIGJlY2F1c2UgemVybyBpcyBjb21tb24uCisgICAg
QWxsb2NUeXBlTWFsbG9jID0gMHgzNzVkNjc1MCwgICAvLyBFbmNvbXBhc3NlcyBmYXN0TWFsbG9j
LCBmYXN0WmVyb2VkTWFsbG9jLCBmYXN0Q2FsbG9jLCBmYXN0UmVhbGxvYy4KKyAgICBBbGxvY1R5
cGVDbGFzc05ldywgICAgICAgICAgICAgIC8vIEVuY29tcGFzc2VzIGNsYXNzIG9wZXJhdG9yIG5l
dyBmcm9tIEZhc3RBbGxvY0Jhc2UuCisgICAgQWxsb2NUeXBlQ2xhc3NOZXdBcnJheSwgICAgICAg
ICAvLyBFbmNvbXBhc3NlcyBjbGFzcyBvcGVyYXRvciBuZXdbXSBmcm9tIEZhc3RBbGxvY0Jhc2Uu
CisgICAgQWxsb2NUeXBlRmFzdE5ldywgICAgICAgICAgICAgICAvLyBFbmNvbXBhc3NlcyBmYXN0
TmV3LgorICAgIEFsbG9jVHlwZUZhc3ROZXdBcnJheSwgICAgICAgICAgLy8gRW5jb21wYXNzZXMg
ZmFzdE5ld0FycmF5LgorICAgIEFsbG9jVHlwZU5ldywgICAgICAgICAgICAgICAgICAgLy8gRW5j
b21wYXNzZXMgZ2xvYmFsIG9wZXJhdG9yIG5ldy4KKyAgICBBbGxvY1R5cGVOZXdBcnJheSAgICAg
ICAgICAgICAgIC8vIEVuY29tcGFzc2VzIGdsb2JhbCBvcGVyYXRvciBuZXdbXS4KK307Cit9CisK
ICNpZiBFTkFCTEUoRkFTVF9NQUxMT0NfTUFUQ0hfVkFMSURBVElPTikKIAotICAgIC8vIE1hbGxv
YyB2YWxpZGF0aW9uIGlzIGEgc2NoZW1lIHdoZXJlYnkgYSB0YWcgaXMgYXR0YWNoZWQgdG8gYW4K
LSAgICAvLyBhbGxvY2F0aW9uIHdoaWNoIGlkZW50aWZpZXMgaG93IGl0IHdhcyBvcmlnaW5hbGx5
IGFsbG9jYXRlZC4KLSAgICAvLyBUaGlzIGFsbG93cyB1cyB0byB2ZXJpZnkgdGhhdCB0aGUgZnJl
ZWluZyBvcGVyYXRpb24gbWF0Y2hlcyB0aGUKLSAgICAvLyBhbGxvY2F0aW9uIG9wZXJhdGlvbi4g
SWYgbWVtb3J5IGlzIGFsbG9jYXRlZCB3aXRoIG9wZXJhdG9yIG5ld1tdCi0gICAgLy8gYnV0IGZy
ZWVkIHdpdGggZnJlZSBvciBkZWxldGUsIHRoaXMgc3lzdGVtIHdvdWxkIGRldGVjdCB0aGF0Lgot
ICAgIC8vIEluIHRoZSBpbXBsZW1lbnRhdGlvbiBoZXJlLCB0aGUgdGFnIGlzIGFuIGludGVnZXIg
cHJlcGVuZGVkIHRvCi0gICAgLy8gdGhlIGFsbG9jYXRpb24gbWVtb3J5IHdoaWNoIGlzIGFzc2ln
bmVkIG9uZSBvZiB0aGUgQWxsb2NUeXBlCi0gICAgLy8gZW51bWVyYXRpb24gdmFsdWVzLiBBbiBh
bHRlcm5hdGl2ZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzCi0gICAgLy8gc2NoZW1lIGNvdWxkIHN0
b3JlIHRoZSB0YWcgc29tZXdoZXJlIGVsc2Ugb3IgaWdub3JlIGl0LgotICAgIC8vIFVzZXJzIG9m
IEZhc3RNYWxsb2MgZG9uJ3QgbmVlZCB0byBrbm93IG9yIGNhcmUgaG93IHRoaXMgdGFnZ2luZwot
ICAgIC8vIGlzIGltcGxlbWVudGVkLgorLy8gTWFsbG9jIHZhbGlkYXRpb24gaXMgYSBzY2hlbWUg
d2hlcmVieSBhIHRhZyBpcyBhdHRhY2hlZCB0byBhbgorLy8gYWxsb2NhdGlvbiB3aGljaCBpZGVu
dGlmaWVzIGhvdyBpdCB3YXMgb3JpZ2luYWxseSBhbGxvY2F0ZWQuCisvLyBUaGlzIGFsbG93cyB1
cyB0byB2ZXJpZnkgdGhhdCB0aGUgZnJlZWluZyBvcGVyYXRpb24gbWF0Y2hlcyB0aGUKKy8vIGFs
bG9jYXRpb24gb3BlcmF0aW9uLiBJZiBtZW1vcnkgaXMgYWxsb2NhdGVkIHdpdGggb3BlcmF0b3Ig
bmV3W10KKy8vIGJ1dCBmcmVlZCB3aXRoIGZyZWUgb3IgZGVsZXRlLCB0aGlzIHN5c3RlbSB3b3Vs
ZCBkZXRlY3QgdGhhdC4KKy8vIEluIHRoZSBpbXBsZW1lbnRhdGlvbiBoZXJlLCB0aGUgdGFnIGlz
IGFuIGludGVnZXIgcHJlcGVuZGVkIHRvCisvLyB0aGUgYWxsb2NhdGlvbiBtZW1vcnkgd2hpY2gg
aXMgYXNzaWduZWQgb25lIG9mIHRoZSBBbGxvY1R5cGUKKy8vIGVudW1lcmF0aW9uIHZhbHVlcy4g
QW4gYWx0ZXJuYXRpdmUgaW1wbGVtZW50YXRpb24gb2YgdGhpcworLy8gc2NoZW1lIGNvdWxkIHN0
b3JlIHRoZSB0YWcgc29tZXdoZXJlIGVsc2Ugb3IgaWdub3JlIGl0LgorLy8gVXNlcnMgb2YgRmFz
dE1hbGxvYyBkb24ndCBuZWVkIHRvIGtub3cgb3IgY2FyZSBob3cgdGhpcyB0YWdnaW5nCisvLyBp
cyBpbXBsZW1lbnRlZC4KIAotICAgIG5hbWVzcGFjZSBJbnRlcm5hbCB7CituYW1lc3BhY2UgSW50
ZXJuYWwgewogCi0gICAgICAgIC8vIFJldHVybiB0aGUgQWxsb2NUeXBlIHRhZyBhc3NvY2lhdGVk
IHdpdGggdGhlIGFsbG9jYXRlZCBibG9jayBwLgotICAgICAgICBpbmxpbmUgQWxsb2NUeXBlIGZh
c3RNYWxsb2NNYXRjaFZhbGlkYXRpb25UeXBlKGNvbnN0IHZvaWQqIHApCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnN0IEFsbG9jQWxpZ25tZW50SW50ZWdlciogdHlwZSA9IHN0YXRpY19jYXN0
PGNvbnN0IEFsbG9jQWxpZ25tZW50SW50ZWdlcio+KHApIC0gMTsKLSAgICAgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxBbGxvY1R5cGU+KCp0eXBlKTsKLSAgICAgICAgfQorLy8gUmV0dXJuIHRo
ZSBBbGxvY1R5cGUgdGFnIGFzc29jaWF0ZWQgd2l0aCB0aGUgYWxsb2NhdGVkIGJsb2NrIHAuCitp
bmxpbmUgQWxsb2NUeXBlIGZhc3RNYWxsb2NNYXRjaFZhbGlkYXRpb25UeXBlKGNvbnN0IHZvaWQq
IHApCit7CisgICAgY29uc3QgQWxsb2NBbGlnbm1lbnRJbnRlZ2VyKiB0eXBlID0gc3RhdGljX2Nh
c3Q8Y29uc3QgQWxsb2NBbGlnbm1lbnRJbnRlZ2VyKj4ocCkgLSAxOworICAgIHJldHVybiBzdGF0
aWNfY2FzdDxBbGxvY1R5cGU+KCp0eXBlKTsKK30KIAotICAgICAgICAvLyBSZXR1cm4gdGhlIGFk
ZHJlc3Mgb2YgdGhlIEFsbG9jVHlwZSB0YWcgYXNzb2NpYXRlZCB3aXRoIHRoZSBhbGxvY2F0ZWQg
YmxvY2sgcC4KLSAgICAgICAgaW5saW5lIEFsbG9jQWxpZ25tZW50SW50ZWdlciogZmFzdE1hbGxv
Y01hdGNoVmFsaWRhdGlvblZhbHVlKHZvaWQqIHApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PEFsbG9jQWxpZ25tZW50SW50ZWdlcio+KHN0YXRpY19jYXN0
PGNoYXIqPihwKSAtIHNpemVvZihBbGxvY0FsaWdubWVudEludGVnZXIpKTsKLSAgICAgICAgfQor
Ly8gUmV0dXJuIHRoZSBhZGRyZXNzIG9mIHRoZSBBbGxvY1R5cGUgdGFnIGFzc29jaWF0ZWQgd2l0
aCB0aGUgYWxsb2NhdGVkIGJsb2NrIHAuCitpbmxpbmUgQWxsb2NBbGlnbm1lbnRJbnRlZ2VyKiBm
YXN0TWFsbG9jTWF0Y2hWYWxpZGF0aW9uVmFsdWUodm9pZCogcCkKK3sKKyAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxBbGxvY0FsaWdubWVudEludGVnZXIqPihzdGF0aWNfY2FzdDxjaGFyKj4o
cCkgLSBzaXplb2YoQWxsb2NBbGlnbm1lbnRJbnRlZ2VyKSk7Cit9CiAKLSAgICAgICAgLy8gU2V0
IHRoZSBBbGxvY1R5cGUgdGFnIHRvIGJlIGFzc29jaWFnZWQgd2l0aCB0aGUgYWxsb2NhdGVkIGJs
b2NrIHAuCi0gICAgICAgIGlubGluZSB2b2lkIHNldEZhc3RNYWxsb2NNYXRjaFZhbGlkYXRpb25U
eXBlKHZvaWQqIHAsIEFsbG9jVHlwZSBhbGxvY1R5cGUpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IEFsbG9jQWxpZ25tZW50SW50ZWdlciogdHlwZSA9IHN0YXRpY19jYXN0PEFsbG9jQWxpZ25tZW50
SW50ZWdlcio+KHApIC0gMTsKLSAgICAgICAgICAgICp0eXBlID0gc3RhdGljX2Nhc3Q8QWxsb2NB
bGlnbm1lbnRJbnRlZ2VyPihhbGxvY1R5cGUpOwotICAgICAgICB9CisvLyBTZXQgdGhlIEFsbG9j
VHlwZSB0YWcgdG8gYmUgYXNzb2NpYWdlZCB3aXRoIHRoZSBhbGxvY2F0ZWQgYmxvY2sgcC4KK2lu
bGluZSB2b2lkIHNldEZhc3RNYWxsb2NNYXRjaFZhbGlkYXRpb25UeXBlKHZvaWQqIHAsIEFsbG9j
VHlwZSBhbGxvY1R5cGUpCit7CisgICAgQWxsb2NBbGlnbm1lbnRJbnRlZ2VyKiB0eXBlID0gc3Rh
dGljX2Nhc3Q8QWxsb2NBbGlnbm1lbnRJbnRlZ2VyKj4ocCkgLSAxOworICAgICp0eXBlID0gc3Rh
dGljX2Nhc3Q8QWxsb2NBbGlnbm1lbnRJbnRlZ2VyPihhbGxvY1R5cGUpOworfQogCi0gICAgICAg
IC8vIEhhbmRsZSBhIGRldGVjdGVkIGFsbG9jL2ZyZWUgbWlzbWF0Y2guIEJ5IGRlZmF1bHQgdGhp
cyBjYWxscyBDUkFTSCgpLgotICAgICAgICB2b2lkIGZhc3RNYWxsb2NNYXRjaEZhaWxlZCh2b2lk
KiBwKTsKKy8vIEhhbmRsZSBhIGRldGVjdGVkIGFsbG9jL2ZyZWUgbWlzbWF0Y2guIEJ5IGRlZmF1
bHQgdGhpcyBjYWxscyBDUkFTSCgpLgordm9pZCBmYXN0TWFsbG9jTWF0Y2hGYWlsZWQodm9pZCog
cCk7CiAKLSAgICB9IC8vIG5hbWVzcGFjZSBJbnRlcm5hbAorfSAvLyBuYW1lc3BhY2UgSW50ZXJu
YWwKIAotICAgIC8vIFRoaXMgaXMgYSBoaWdoZXIgbGV2ZWwgZnVuY3Rpb24gd2hpY2ggaXMgdXNl
ZCBieSBGYXN0TWFsbG9jLXVzaW5nIGNvZGUuCi0gICAgaW5saW5lIHZvaWQgZmFzdE1hbGxvY01h
dGNoVmFsaWRhdGVNYWxsb2Modm9pZCogcCwgSW50ZXJuYWw6OkFsbG9jVHlwZSBhbGxvY1R5cGUp
Ci0gICAgewotICAgICAgICBpZiAoIXApCi0gICAgICAgICAgICByZXR1cm47CisvLyBUaGlzIGlz
IGEgaGlnaGVyIGxldmVsIGZ1bmN0aW9uIHdoaWNoIGlzIHVzZWQgYnkgRmFzdE1hbGxvYy11c2lu
ZyBjb2RlLgoraW5saW5lIHZvaWQgZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVNYWxsb2Modm9pZCog
cCwgSW50ZXJuYWw6OkFsbG9jVHlwZSBhbGxvY1R5cGUpCit7CisgICAgaWYgKCFwKQorICAgICAg
ICByZXR1cm47CiAKLSAgICAgICAgSW50ZXJuYWw6OnNldEZhc3RNYWxsb2NNYXRjaFZhbGlkYXRp
b25UeXBlKHAsIGFsbG9jVHlwZSk7Ci0gICAgfQorICAgIEludGVybmFsOjpzZXRGYXN0TWFsbG9j
TWF0Y2hWYWxpZGF0aW9uVHlwZShwLCBhbGxvY1R5cGUpOworfQogCi0gICAgLy8gVGhpcyBpcyBh
IGhpZ2hlciBsZXZlbCBmdW5jdGlvbiB3aGljaCBpcyB1c2VkIGJ5IEZhc3RNYWxsb2MtdXNpbmcg
Y29kZS4KLSAgICBpbmxpbmUgdm9pZCBmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZUZyZWUodm9pZCog
cCwgSW50ZXJuYWw6OkFsbG9jVHlwZSBhbGxvY1R5cGUpCi0gICAgewotICAgICAgICBpZiAoIXAp
Ci0gICAgICAgICAgICByZXR1cm47CisvLyBUaGlzIGlzIGEgaGlnaGVyIGxldmVsIGZ1bmN0aW9u
IHdoaWNoIGlzIHVzZWQgYnkgRmFzdE1hbGxvYy11c2luZyBjb2RlLgoraW5saW5lIHZvaWQgZmFz
dE1hbGxvY01hdGNoVmFsaWRhdGVGcmVlKHZvaWQqIHAsIEludGVybmFsOjpBbGxvY1R5cGUgYWxs
b2NUeXBlKQoreworICAgIGlmICghcCkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmIChJ
bnRlcm5hbDo6ZmFzdE1hbGxvY01hdGNoVmFsaWRhdGlvblR5cGUocCkgIT0gYWxsb2NUeXBlKQot
ICAgICAgICAgICAgSW50ZXJuYWw6OmZhc3RNYWxsb2NNYXRjaEZhaWxlZChwKTsKLSAgICAgICAg
SW50ZXJuYWw6OnNldEZhc3RNYWxsb2NNYXRjaFZhbGlkYXRpb25UeXBlKHAsIEludGVybmFsOjpB
bGxvY1R5cGVNYWxsb2MpOyAgLy8gU2V0IGl0IHRvIHRoaXMgc28gdGhhdCBmYXN0RnJlZSB0aGlu
a3MgaXQncyBPSy4KLSAgICB9CisgICAgaWYgKEludGVybmFsOjpmYXN0TWFsbG9jTWF0Y2hWYWxp
ZGF0aW9uVHlwZShwKSAhPSBhbGxvY1R5cGUpCisgICAgICAgIEludGVybmFsOjpmYXN0TWFsbG9j
TWF0Y2hGYWlsZWQocCk7CisgICAgSW50ZXJuYWw6OnNldEZhc3RNYWxsb2NNYXRjaFZhbGlkYXRp
b25UeXBlKHAsIEludGVybmFsOjpBbGxvY1R5cGVNYWxsb2MpOyAgLy8gU2V0IGl0IHRvIHRoaXMg
c28gdGhhdCBmYXN0RnJlZSB0aGlua3MgaXQncyBPSy4KK30KIAogI2Vsc2UKIAotICAgIGlubGlu
ZSB2b2lkIGZhc3RNYWxsb2NNYXRjaFZhbGlkYXRlTWFsbG9jKHZvaWQqLCBJbnRlcm5hbDo6QWxs
b2NUeXBlKQotICAgIHsKLSAgICB9CitpbmxpbmUgdm9pZCBmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0
ZU1hbGxvYyh2b2lkKiwgSW50ZXJuYWw6OkFsbG9jVHlwZSkKK3sKK30KIAotICAgIGlubGluZSB2
b2lkIGZhc3RNYWxsb2NNYXRjaFZhbGlkYXRlRnJlZSh2b2lkKiwgSW50ZXJuYWw6OkFsbG9jVHlw
ZSkKLSAgICB7Ci0gICAgfQoraW5saW5lIHZvaWQgZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVGcmVl
KHZvaWQqLCBJbnRlcm5hbDo6QWxsb2NUeXBlKQoreworfQogCiAjZW5kaWYKIApJbmRleDogSmF2
YVNjcmlwdENvcmUvd3RmL1RocmVhZFNwZWNpZmljLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlw
dENvcmUvd3RmL1RocmVhZFNwZWNpZmljLmgJKHJldmlzaW9uIDYzNDYxKQorKysgSmF2YVNjcmlw
dENvcmUvd3RmL1RocmVhZFNwZWNpZmljLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzMSw4ICsyMzEs
OCBAQAogLy8gMikgV2UgZG8gbm90IG5lZWQgdG8gaG9sZCBtYW55IGluc3RhbmNlcyBvZiBUaHJl
YWRTcGVjaWZpYzw+IGRhdGEuIFRoaXMgZml4ZWQgbnVtYmVyIHNob3VsZCBiZSBmYXIgZW5vdWdo
LgogY29uc3QgaW50IGtNYXhUbHNLZXlTaXplID0gMjU2OwogCi1sb25nJiB0bHNLZXlDb3VudCgp
OwotRFdPUkQqIHRsc0tleXMoKTsKK0pTX0VYUE9SVEVEX1NZTUJPTCBsb25nJiB0bHNLZXlDb3Vu
dCgpOworSlNfRVhQT1JURURfU1lNQk9MIERXT1JEKiB0bHNLZXlzKCk7CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+CiBpbmxpbmUgVGhyZWFkU3BlY2lmaWM8VD46OlRocmVhZFNwZWNpZmljKCkKSW5k
ZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9XVEZUaHJlYWREYXRhLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2
YVNjcmlwdENvcmUvd3RmL1dURlRocmVhZERhdGEuaAkocmV2aXNpb24gNjM0NjEpCisrKyBKYXZh
U2NyaXB0Q29yZS93dGYvV1RGVGhyZWFkRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC04NCw4ICs4
NCw4IEBACiAKIGNsYXNzIFdURlRocmVhZERhdGEgOiBwdWJsaWMgTm9uY29weWFibGUgewogcHVi
bGljOgotICAgIFdURlRocmVhZERhdGEoKTsKLSAgICB+V1RGVGhyZWFkRGF0YSgpOworICAgIEpT
X0VYUE9SVEVEX1NZTUJPTCBXVEZUaHJlYWREYXRhKCk7CisgICAgSlNfRVhQT1JURURfU1lNQk9M
IH5XVEZUaHJlYWREYXRhKCk7CiAKICAgICBXZWJDb3JlOjpBdG9taWNTdHJpbmdUYWJsZSogYXRv
bWljU3RyaW5nVGFibGUoKQogICAgIHsKQEAgLTEyNyw5ICsxMjcsOSBAQAogI2VuZGlmCiAKICNp
ZiBXVEZUSFJFQUREQVRBX01VTFRJVEhSRUFERUQKLSAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSBU
aHJlYWRTcGVjaWZpYzxXVEZUaHJlYWREYXRhPiogc3RhdGljRGF0YTsKKyAgICBzdGF0aWMgSlNf
RVhQT1JURURfU1lNQk9MIFRocmVhZFNwZWNpZmljPFdURlRocmVhZERhdGE+KiBzdGF0aWNEYXRh
OwogI2Vsc2UKLSAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSBXVEZUaHJlYWREYXRhKiBzdGF0aWNE
YXRhOworICAgIHN0YXRpYyBKU19FWFBPUlRFRF9TWU1CT0wgV1RGVGhyZWFkRGF0YSogc3RhdGlj
RGF0YTsKICNlbmRpZgogICAgIGZyaWVuZCBXVEZUaHJlYWREYXRhJiB3dGZUaHJlYWREYXRhKCk7
CiAgICAgZnJpZW5kIGNsYXNzIFdlYkNvcmU6OkF0b21pY1N0cmluZ1RhYmxlOwpJbmRleDogSmF2
YVNjcmlwdENvcmUvd3RmL0RhdGVNYXRoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUv
d3RmL0RhdGVNYXRoLmgJKHJldmlzaW9uIDYzNDYxKQorKysgSmF2YVNjcmlwdENvcmUvd3RmL0Rh
dGVNYXRoLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAKIGludCBlcXVpdmFsZW50
WWVhckZvckRTVChpbnQgeWVhcik7CiAKIC8vIE5vdCByZWFsbHkgbWF0aCByZWxhdGVkLCBidXQg
dGhpcyBpcyBjdXJyZW50bHkgdGhlIG9ubHkgc2hhcmVkIHBsYWNlIHRvIHB1dCB0aGVzZS4gIAot
ZG91YmxlIHBhcnNlRGF0ZUZyb21OdWxsVGVybWluYXRlZENoYXJhY3RlcnMoY29uc3QgY2hhciog
ZGF0ZVN0cmluZyk7CitKU19FWFBPUlRFRF9TWU1CT0wgZG91YmxlIHBhcnNlRGF0ZUZyb21OdWxs
VGVybWluYXRlZENoYXJhY3RlcnMoY29uc3QgY2hhciogZGF0ZVN0cmluZyk7CiBkb3VibGUgdGlt
ZUNsaXAoZG91YmxlKTsKIAogaW5saW5lIGRvdWJsZSBqc0N1cnJlbnRUaW1lKCkKQEAgLTc3LDEx
ICs3NywxMSBAQAogY29uc3QgZG91YmxlIG1zUGVyTW9udGggPSAyNTkyMDAwMDAwLjA7CiAKIC8v
IFJldHVybnMgdGhlIG51bWJlciBvZiBkYXlzIGZyb20gMTk3MC0wMS0wMSB0byB0aGUgc3BlY2lm
aWVkIGRhdGUuCi1kb3VibGUgZGF0ZVRvRGF5c0Zyb20xOTcwKGludCB5ZWFyLCBpbnQgbW9udGgs
IGludCBkYXkpOwotaW50IG1zVG9ZZWFyKGRvdWJsZSBtcyk7Ci1pbnQgZGF5SW5ZZWFyKGRvdWJs
ZSBtcywgaW50IHllYXIpOwotaW50IG1vbnRoRnJvbURheUluWWVhcihpbnQgZGF5SW5ZZWFyLCBi
b29sIGxlYXBZZWFyKTsKLWludCBkYXlJbk1vbnRoRnJvbURheUluWWVhcihpbnQgZGF5SW5ZZWFy
LCBib29sIGxlYXBZZWFyKTsKK0pTX0VYUE9SVEVEX1NZTUJPTCBkb3VibGUgZGF0ZVRvRGF5c0Zy
b20xOTcwKGludCB5ZWFyLCBpbnQgbW9udGgsIGludCBkYXkpOworSlNfRVhQT1JURURfU1lNQk9M
IGludCBtc1RvWWVhcihkb3VibGUgbXMpOworSlNfRVhQT1JURURfU1lNQk9MIGludCBkYXlJblll
YXIoZG91YmxlIG1zLCBpbnQgeWVhcik7CitKU19FWFBPUlRFRF9TWU1CT0wgaW50IG1vbnRoRnJv
bURheUluWWVhcihpbnQgZGF5SW5ZZWFyLCBib29sIGxlYXBZZWFyKTsKK0pTX0VYUE9SVEVEX1NZ
TUJPTCBpbnQgZGF5SW5Nb250aEZyb21EYXlJblllYXIoaW50IGRheUluWWVhciwgYm9vbCBsZWFw
WWVhcik7CiAKIH0gLy8gbmFtZXNwYWNlIFdURgogCkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYv
dW5pY29kZS9Db2xsYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi91bmlj
b2RlL0NvbGxhdG9yLmgJKHJldmlzaW9uIDYzNDYxKQorKysgSmF2YVNjcmlwdENvcmUvd3RmL3Vu
aWNvZGUvQ29sbGF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzksMjcgKzM5LDI3IEBACiAKIG5h
bWVzcGFjZSBXVEYgewogCi0gICAgY2xhc3MgQ29sbGF0b3IgOiBwdWJsaWMgTm9uY29weWFibGUg
ewotICAgIHB1YmxpYzoKLSAgICAgICAgZW51bSBSZXN1bHQgeyBFcXVhbCA9IDAsIEdyZWF0ZXIg
PSAxLCBMZXNzID0gLTEgfTsKK2NsYXNzIEpTX0VYUE9SVEVEX1NZTUJPTCBDb2xsYXRvciA6IHB1
YmxpYyBOb25jb3B5YWJsZSB7CitwdWJsaWM6CisgICAgZW51bSBSZXN1bHQgeyBFcXVhbCA9IDAs
IEdyZWF0ZXIgPSAxLCBMZXNzID0gLTEgfTsKIAotICAgICAgICBDb2xsYXRvcihjb25zdCBjaGFy
KiBsb2NhbGUpOyAvLyBQYXJzaW5nIGlzIGxlbmllbnQ7IGUuZy4gbGFuZ3VhZ2UgaWRlbnRpZmll
cnMgKHN1Y2ggYXMgImVuLVVTIikgYXJlIGFjY2VwdGVkLCB0b28uCi0gICAgICAgIH5Db2xsYXRv
cigpOwotICAgICAgICB2b2lkIHNldE9yZGVyTG93ZXJGaXJzdChib29sKTsKKyAgICBDb2xsYXRv
cihjb25zdCBjaGFyKiBsb2NhbGUpOyAvLyBQYXJzaW5nIGlzIGxlbmllbnQ7IGUuZy4gbGFuZ3Vh
Z2UgaWRlbnRpZmllcnMgKHN1Y2ggYXMgImVuLVVTIikgYXJlIGFjY2VwdGVkLCB0b28uCisgICAg
fkNvbGxhdG9yKCk7CisgICAgdm9pZCBzZXRPcmRlckxvd2VyRmlyc3QoYm9vbCk7CiAKLSAgICAg
ICAgc3RhdGljIFBhc3NPd25QdHI8Q29sbGF0b3I+IHVzZXJEZWZhdWx0KCk7CisgICAgc3RhdGlj
IFBhc3NPd25QdHI8Q29sbGF0b3I+IHVzZXJEZWZhdWx0KCk7CiAKLSAgICAgICAgUmVzdWx0IGNv
bGxhdGUoY29uc3QgOjpVQ2hhciosIHNpemVfdCwgY29uc3QgOjpVQ2hhciosIHNpemVfdCkgY29u
c3Q7CisgICAgUmVzdWx0IGNvbGxhdGUoY29uc3QgOjpVQ2hhciosIHNpemVfdCwgY29uc3QgOjpV
Q2hhciosIHNpemVfdCkgY29uc3Q7CiAKLSAgICBwcml2YXRlOgorcHJpdmF0ZToKICNpZiBVU0Uo
SUNVX1VOSUNPREUpICYmICFVQ09ORklHX05PX0NPTExBVElPTgotICAgICAgICB2b2lkIGNyZWF0
ZUNvbGxhdG9yKCkgY29uc3Q7Ci0gICAgICAgIHZvaWQgcmVsZWFzZUNvbGxhdG9yKCk7Ci0gICAg
ICAgIG11dGFibGUgVUNvbGxhdG9yKiBtX2NvbGxhdG9yOworICAgIHZvaWQgY3JlYXRlQ29sbGF0
b3IoKSBjb25zdDsKKyAgICB2b2lkIHJlbGVhc2VDb2xsYXRvcigpOworICAgIG11dGFibGUgVUNv
bGxhdG9yKiBtX2NvbGxhdG9yOwogI2VuZGlmCi0gICAgICAgIGNoYXIqIG1fbG9jYWxlOwotICAg
ICAgICBib29sIG1fbG93ZXJGaXJzdDsKLSAgICB9OworICAgIGNoYXIqIG1fbG9jYWxlOworICAg
IGJvb2wgbV9sb3dlckZpcnN0OworfTsKIH0KIAogdXNpbmcgV1RGOjpDb2xsYXRvcjsKSW5kZXg6
IEphdmFTY3JpcHRDb3JlL3d0Zi91bmljb2RlL1VURjguaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0Q29yZS93dGYvdW5pY29kZS9VVEY4LmgJKHJldmlzaW9uIDYzNDYxKQorKysgSmF2YVNjcmlw
dENvcmUvd3RmL3VuaWNvZGUvVVRGOC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBA
CiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqKiBzb3VyY2VTdGFydCwgY29uc3QgY2hh
ciogc291cmNlRW5kLCAKICAgICAgICAgICAgICAgICAgICAgVUNoYXIqKiB0YXJnZXRTdGFydCwg
VUNoYXIqIHRhcmdldEVuZCwgYm9vbCBzdHJpY3QgPSB0cnVlKTsKIAotICAgIENvbnZlcnNpb25S
ZXN1bHQgY29udmVydFVURjE2VG9VVEY4KAorICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBDb252ZXJz
aW9uUmVzdWx0IGNvbnZlcnRVVEYxNlRvVVRGOCgKICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VUNoYXIqKiBzb3VyY2VTdGFydCwgY29uc3QgVUNoYXIqIHNvdXJjZUVuZCwgCiAgICAgICAgICAg
ICAgICAgICAgIGNoYXIqKiB0YXJnZXRTdGFydCwgY2hhciogdGFyZ2V0RW5kLCBib29sIHN0cmlj
dCA9IHRydWUpOwogICB9CkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvQ3VycmVudFRpbWUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvQ3VycmVudFRpbWUuaAkocmV2aXNpb24g
NjM0NjEpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvQ3VycmVudFRpbWUuaAkod29ya2luZyBjb3B5
KQpAQCAtMzYsMjcgKzM2LDI3IEBACiAKIG5hbWVzcGFjZSBXVEYgewogCi0gICAgLy8gUmV0dXJu
cyB0aGUgY3VycmVudCBVVEMgdGltZSBpbiBzZWNvbmRzLCBjb3VudGVkIGZyb20gSmFudWFyeSAx
LCAxOTcwLgotICAgIC8vIFByZWNpc2lvbiB2YXJpZXMgZGVwZW5kaW5nIG9uIHBsYXRmb3JtIGJ1
dCBpcyB1c3VhbGx5IGFzIGdvb2Qgb3IgYmV0dGVyIAotICAgIC8vIHRoYW4gYSBtaWxsaXNlY29u
ZC4KLSAgICBkb3VibGUgY3VycmVudFRpbWUoKTsKKy8vIFJldHVybnMgdGhlIGN1cnJlbnQgVVRD
IHRpbWUgaW4gc2Vjb25kcywgY291bnRlZCBmcm9tIEphbnVhcnkgMSwgMTk3MC4KKy8vIFByZWNp
c2lvbiB2YXJpZXMgZGVwZW5kaW5nIG9uIHBsYXRmb3JtIGJ1dCBpcyB1c3VhbGx5IGFzIGdvb2Qg
b3IgYmV0dGVyIAorLy8gdGhhbiBhIG1pbGxpc2Vjb25kLgorSlNfRVhQT1JURURfU1lNQk9MIGRv
dWJsZSBjdXJyZW50VGltZSgpOwogCi0gICAgLy8gU2FtZSB0aGluZywgaW4gbWlsbGlzZWNvbmRz
LgotICAgIGlubGluZSBkb3VibGUgY3VycmVudFRpbWVNUygpCi0gICAgewotICAgICAgICByZXR1
cm4gY3VycmVudFRpbWUoKSAqIDEwMDAuMDsgCi0gICAgfQorLy8gU2FtZSB0aGluZywgaW4gbWls
bGlzZWNvbmRzLgoraW5saW5lIGRvdWJsZSBjdXJyZW50VGltZU1TKCkKK3sKKyAgICByZXR1cm4g
Y3VycmVudFRpbWUoKSAqIDEwMDAuMDsgCit9CiAKLSAgICBpbmxpbmUgdm9pZCBnZXRMb2NhbFRp
bWUoY29uc3QgdGltZV90KiBsb2NhbFRpbWUsIHN0cnVjdCB0bSogbG9jYWxUTSkKLSAgICB7Ci0g
ICAgI2lmIENPTVBJTEVSKE1TVkM3X09SX0xPV0VSKSB8fCBDT01QSUxFUihNSU5HVykgfHwgT1Mo
V0lOQ0UpCi0gICAgICAgICpsb2NhbFRNID0gKmxvY2FsdGltZShsb2NhbFRpbWUpOwotICAgICNl
bGlmIENPTVBJTEVSKE1TVkMpCi0gICAgICAgIGxvY2FsdGltZV9zKGxvY2FsVE0sIGxvY2FsVGlt
ZSk7Ci0gICAgI2Vsc2UKLSAgICAgICAgbG9jYWx0aW1lX3IobG9jYWxUaW1lLCBsb2NhbFRNKTsK
LSAgICAjZW5kaWYKLSAgICB9CitpbmxpbmUgdm9pZCBnZXRMb2NhbFRpbWUoY29uc3QgdGltZV90
KiBsb2NhbFRpbWUsIHN0cnVjdCB0bSogbG9jYWxUTSkKK3sKKyNpZiBDT01QSUxFUihNU1ZDN19P
Ul9MT1dFUikgfHwgQ09NUElMRVIoTUlOR1cpIHx8IE9TKFdJTkNFKQorICAgICpsb2NhbFRNID0g
KmxvY2FsdGltZShsb2NhbFRpbWUpOworI2VsaWYgQ09NUElMRVIoTVNWQykKKyAgICBsb2NhbHRp
bWVfcyhsb2NhbFRNLCBsb2NhbFRpbWUpOworI2Vsc2UKKyAgICBsb2NhbHRpbWVfcihsb2NhbFRp
bWUsIGxvY2FsVE0pOworI2VuZGlmCit9CiAKIH0gLy8gbmFtZXNwYWNlIFdURgogCkluZGV4OiBK
YXZhU2NyaXB0Q29yZS93dGYvTUQ1LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3Rm
L01ENS5oCShyZXZpc2lvbiA2MzQ2MSkKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9NRDUuaAkod29y
a2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotY2xhc3Mg
TUQ1IHsKK2NsYXNzIEpTX0VYUE9SVEVEX1NZTUJPTCBNRDUgewogcHVibGljOgogICAgIE1ENSgp
OwogCkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvZHRvYS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL3d0Zi9kdG9hLmgJKHJldmlzaW9uIDYzNDYxKQorKysgSmF2YVNjcmlwdENvcmUv
d3RmL2R0b2EuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQAogLy8gZHRvYSgpIGZv
ciBFQ01BLTI2MiAnVG9TdHJpbmcgQXBwbGllZCB0byB0aGUgTnVtYmVyIFR5cGUuJwogLy8gVGhl
ICpyZXN1bHRMZW5ndGggd2lsbCBoYXZlIHRoZSBsZW5ndGggb2YgdGhlIHJlc3VsdGFudCBzdHJp
bmcgaW4gYnVmZXIuCiAvLyBUaGUgcmVzdWx0YW50IHN0cmluZyBpc24ndCB0ZXJtaW5hdGVkIGJ5
IDAuCi12b2lkIGRvdWJsZVRvU3RyaW5nSW5KYXZhU2NyaXB0Rm9ybWF0KGRvdWJsZSwgRHRvYUJ1
ZmZlciwgdW5zaWduZWQqIHJlc3VsdExlbmd0aCk7CitKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBk
b3VibGVUb1N0cmluZ0luSmF2YVNjcmlwdEZvcm1hdChkb3VibGUsIER0b2FCdWZmZXIsIHVuc2ln
bmVkKiByZXN1bHRMZW5ndGgpOwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIApJbmRleDogSmF2YVNj
cmlwdENvcmUvd3RmL0Fzc2VydGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93
dGYvQXNzZXJ0aW9ucy5oCShyZXZpc2lvbiA2MzQ2MSkKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9B
c3NlcnRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0MSwxMyArMTQxLDEzIEBACiAgICAgV1RG
TG9nQ2hhbm5lbFN0YXRlIHN0YXRlOwogfSBXVEZMb2dDaGFubmVsOwogCi12b2lkIFdURlJlcG9y
dEFzc2VydGlvbkZhaWx1cmUoY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIq
IGZ1bmN0aW9uLCBjb25zdCBjaGFyKiBhc3NlcnRpb24pOwotdm9pZCBXVEZSZXBvcnRBc3NlcnRp
b25GYWlsdXJlV2l0aE1lc3NhZ2UoY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNo
YXIqIGZ1bmN0aW9uLCBjb25zdCBjaGFyKiBhc3NlcnRpb24sIGNvbnN0IGNoYXIqIGZvcm1hdCwg
Li4uKSBXVEZfQVRUUklCVVRFX1BSSU5URig1LCA2KTsKLXZvaWQgV1RGUmVwb3J0QXJndW1lbnRB
c3NlcnRpb25GYWlsdXJlKGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiBm
dW5jdGlvbiwgY29uc3QgY2hhciogYXJnTmFtZSwgY29uc3QgY2hhciogYXNzZXJ0aW9uKTsKLXZv
aWQgV1RGUmVwb3J0RmF0YWxFcnJvcihjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3Qg
Y2hhciogZnVuY3Rpb24sIGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKSBXVEZfQVRUUklCVVRFX1BS
SU5URig0LCA1KTsKLXZvaWQgV1RGUmVwb3J0RXJyb3IoY29uc3QgY2hhciogZmlsZSwgaW50IGxp
bmUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uLCBjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikgV1RGX0FU
VFJJQlVURV9QUklOVEYoNCwgNSk7Ci12b2lkIFdURkxvZyhXVEZMb2dDaGFubmVsKiBjaGFubmVs
LCBjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikgV1RGX0FUVFJJQlVURV9QUklOVEYoMiwgMyk7Ci12
b2lkIFdURkxvZ1ZlcmJvc2UoY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIq
IGZ1bmN0aW9uLCBXVEZMb2dDaGFubmVsKiBjaGFubmVsLCBjb25zdCBjaGFyKiBmb3JtYXQsIC4u
LikgV1RGX0FUVFJJQlVURV9QUklOVEYoNSwgNik7CitKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBX
VEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25z
dCBjaGFyKiBmdW5jdGlvbiwgY29uc3QgY2hhciogYXNzZXJ0aW9uKTsKK0pTX0VYUE9SVEVEX1NZ
TUJPTCB2b2lkIFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmVXaXRoTWVzc2FnZShjb25zdCBjaGFy
KiBmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciogZnVuY3Rpb24sIGNvbnN0IGNoYXIqIGFzc2Vy
dGlvbiwgY29uc3QgY2hhciogZm9ybWF0LCAuLi4pIFdURl9BVFRSSUJVVEVfUFJJTlRGKDUsIDYp
OworSlNfRVhQT1JURURfU1lNQk9MIHZvaWQgV1RGUmVwb3J0QXJndW1lbnRBc3NlcnRpb25GYWls
dXJlKGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiBmdW5jdGlvbiwgY29u
c3QgY2hhciogYXJnTmFtZSwgY29uc3QgY2hhciogYXNzZXJ0aW9uKTsKK0pTX0VYUE9SVEVEX1NZ
TUJPTCB2b2lkIFdURlJlcG9ydEZhdGFsRXJyb3IoY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUs
IGNvbnN0IGNoYXIqIGZ1bmN0aW9uLCBjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikgV1RGX0FUVFJJ
QlVURV9QUklOVEYoNCwgNSk7CitKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBXVEZSZXBvcnRFcnJv
cihjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciogZnVuY3Rpb24sIGNvbnN0
IGNoYXIqIGZvcm1hdCwgLi4uKSBXVEZfQVRUUklCVVRFX1BSSU5URig0LCA1KTsKK0pTX0VYUE9S
VEVEX1NZTUJPTCB2b2lkIFdURkxvZyhXVEZMb2dDaGFubmVsKiBjaGFubmVsLCBjb25zdCBjaGFy
KiBmb3JtYXQsIC4uLikgV1RGX0FUVFJJQlVURV9QUklOVEYoMiwgMyk7CitKU19FWFBPUlRFRF9T
WU1CT0wgdm9pZCBXVEZMb2dWZXJib3NlKGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25z
dCBjaGFyKiBmdW5jdGlvbiwgV1RGTG9nQ2hhbm5lbCogY2hhbm5lbCwgY29uc3QgY2hhciogZm9y
bWF0LCAuLi4pIFdURl9BVFRSSUJVVEVfUFJJTlRGKDUsIDYpOwogCiAjaWZkZWYgX19jcGx1c3Bs
dXMKIH0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaAkocmV2
aXNpb24gNjM0NjEpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsMTIgKzEwMCwxMiBAQAogICAgIAogY2xhc3MgTXV0ZXgg
OiBwdWJsaWMgTm9uY29weWFibGUgewogcHVibGljOgotICAgIE11dGV4KCk7Ci0gICAgfk11dGV4
KCk7CisgICAgSlNfRVhQT1JURURfU1lNQk9MIE11dGV4KCk7CisgICAgSlNfRVhQT1JURURfU1lN
Qk9MIH5NdXRleCgpOwogCi0gICAgdm9pZCBsb2NrKCk7Ci0gICAgYm9vbCB0cnlMb2NrKCk7Ci0g
ICAgdm9pZCB1bmxvY2soKTsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBsb2NrKCk7Cisg
ICAgSlNfRVhQT1JURURfU1lNQk9MIGJvb2wgdHJ5TG9jaygpOworICAgIEpTX0VYUE9SVEVEX1NZ
TUJPTCB2b2lkIHVubG9jaygpOwogCiBwdWJsaWM6CiAgICAgUGxhdGZvcm1NdXRleCYgaW1wbCgp
IHsgcmV0dXJuIG1fbXV0ZXg7IH0KQEAgLTEzNCwxNSArMTM0LDE1IEBACiAKIGNsYXNzIFRocmVh
ZENvbmRpdGlvbiA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiBwdWJsaWM6Ci0gICAgVGhyZWFkQ29u
ZGl0aW9uKCk7Ci0gICAgflRocmVhZENvbmRpdGlvbigpOworICAgIEpTX0VYUE9SVEVEX1NZTUJP
TCBUaHJlYWRDb25kaXRpb24oKTsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgflRocmVhZENvbmRp
dGlvbigpOwogICAgIAotICAgIHZvaWQgd2FpdChNdXRleCYgbXV0ZXgpOworICAgIEpTX0VYUE9S
VEVEX1NZTUJPTCB2b2lkIHdhaXQoTXV0ZXgmIG11dGV4KTsKICAgICAvLyBSZXR1cm5zIHRydWUg
aWYgdGhlIGNvbmRpdGlvbiB3YXMgc2lnbmFsZWQgYmVmb3JlIGFic29sdXRlVGltZSwgZmFsc2Ug
aWYgdGhlIGFic29sdXRlVGltZSB3YXMgcmVhY2hlZCBvciBpcyBpbiB0aGUgcGFzdC4KICAgICAv
LyBUaGUgYWJzb2x1dGVUaW1lIGlzIGluIHNlY29uZHMsIHN0YXJ0aW5nIG9uIEphbnVhcnkgMSwg
MTk3MC4gVGhlIHRpbWUgaXMgYXNzdW1lZCB0byB1c2UgdGhlIHNhbWUgdGltZSB6b25lIGFzIFdU
Rjo6Y3VycmVudFRpbWUoKS4KLSAgICBib29sIHRpbWVkV2FpdChNdXRleCYsIGRvdWJsZSBhYnNv
bHV0ZVRpbWUpOwotICAgIHZvaWQgc2lnbmFsKCk7Ci0gICAgdm9pZCBicm9hZGNhc3QoKTsKKyAg
ICBKU19FWFBPUlRFRF9TWU1CT0wgYm9vbCB0aW1lZFdhaXQoTXV0ZXgmLCBkb3VibGUgYWJzb2x1
dGVUaW1lKTsKKyAgICBKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBzaWduYWwoKTsKKyAgICBKU19F
WFBPUlRFRF9TWU1CT0wgdm9pZCBicm9hZGNhc3QoKTsKICAgICAKIHByaXZhdGU6CiAgICAgUGxh
dGZvcm1Db25kaXRpb24gbV9jb25kaXRpb247CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmgJKHJldmlzaW9uIDYzNDYxKQorKysgSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDggKzEwMCw4IEBA
CiAgICAgICAgIEpTVmFsdWUgZXhlY3V0ZShFdmFsRXhlY3V0YWJsZSogZXZhbE5vZGUsIENhbGxG
cmFtZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmosIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWlu
LCBKU1ZhbHVlKiBleGNlcHRpb24pOwogCiAgICAgICAgIEpTVmFsdWUgcmV0cmlldmVBcmd1bWVu
dHMoQ2FsbEZyYW1lKiwgSlNGdW5jdGlvbiopIGNvbnN0OwotICAgICAgICBKU1ZhbHVlIHJldHJp
ZXZlQ2FsbGVyKENhbGxGcmFtZSosIEpTRnVuY3Rpb24qKSBjb25zdDsKLSAgICAgICAgdm9pZCBy
ZXRyaWV2ZUxhc3RDYWxsZXIoQ2FsbEZyYW1lKiwgaW50JiBsaW5lTnVtYmVyLCBpbnRwdHJfdCYg
c291cmNlSUQsIFVTdHJpbmcmIHNvdXJjZVVSTCwgSlNWYWx1ZSYgZnVuY3Rpb24pIGNvbnN0Owor
ICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgSlNWYWx1ZSByZXRyaWV2ZUNhbGxlcihDYWxsRnJh
bWUqLCBKU0Z1bmN0aW9uKikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lk
IHJldHJpZXZlTGFzdENhbGxlcihDYWxsRnJhbWUqLCBpbnQmIGxpbmVOdW1iZXIsIGludHB0cl90
JiBzb3VyY2VJRCwgVVN0cmluZyYgc291cmNlVVJMLCBKU1ZhbHVlJiBmdW5jdGlvbikgY29uc3Q7
CiAgICAgICAgIAogICAgICAgICB2b2lkIGdldEFyZ3VtZW50c0RhdGEoQ2FsbEZyYW1lKiwgSlNG
dW5jdGlvbiomLCBwdHJkaWZmX3QmIGZpcnN0UGFyYW1ldGVySW5kZXgsIFJlZ2lzdGVyKiYgYXJn
diwgaW50JiBhcmdjKTsKICAgICAgICAgCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMv
SlNOb2RlTGlzdC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9KU05v
ZGVMaXN0LmMJKHJldmlzaW9uIDYzNDYxKQorKysgSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0pT
Tm9kZUxpc3QuYwkod29ya2luZyBjb3B5KQpAQCAtMjMsNiArMjMsOCBAQAogICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCiAgKi8KIAorI2luY2x1ZGUgIlRlc3REZWZpbmVzLmgiCisKICNpbmNsdWRlICJKU05vZGUu
aCIKICNpbmNsdWRlICJKU05vZGVMaXN0LmgiCiAjaW5jbHVkZSAiSlNPYmplY3RSZWYuaCIKSW5k
ZXg6IEphdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9KU05vZGUuYwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZh
U2NyaXB0Q29yZS9BUEkvdGVzdHMvSlNOb2RlLmMJKHJldmlzaW9uIDYzNDYxKQorKysgSmF2YVNj
cmlwdENvcmUvQVBJL3Rlc3RzL0pTTm9kZS5jCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2ICsyMyw4
IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCisjaW5jbHVkZSAiVGVzdERlZmluZXMuaCIKKwog
I2luY2x1ZGUgIkpTTm9kZS5oIgogI2luY2x1ZGUgIkpTTm9kZUxpc3QuaCIKICNpbmNsdWRlICJK
U09iamVjdFJlZi5oIgpJbmRleDogSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL1Rlc3REZWZpbmVz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL1Rlc3REZWZpbmVzLmgJ
KHJldmlzaW9uIDApCisrKyBKYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvVGVzdERlZmluZXMuaAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBB
cHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisKKyBTZXRzIGRlZmlu
ZXMgbmVlZGVkIHRoYXQgYXJlIHR5cGljYWxseSBzZXQgdmlhIGNvbmZpZy5oLCB3aGljaCB3ZSBj
YW4ndAorIGluY2x1ZGUgaGVyZS4KKyAqLworCisjaWYgZGVmaW5lZChXSU4zMikgfHwgZGVmaW5l
ZChfV0lOMzIpICYmICFkZWZpbmVkKF9fR05VQ19fKQorI2RlZmluZSBKU19FWFBPUlRFRF9TWU1C
T0wgX19kZWNsc3BlYyhkbGxpbXBvcnQpCisjZWxpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAhZGVm
aW5lZChfX0NDX0FSTSkgJiYgIWRlZmluZWQoX19BUk1DQ19fKQorI2RlZmluZSBKU19FWFBPUlRF
RF9TWU1CT0wgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkKKyNlbHNlCisj
ZGVmaW5lIEpTX0VYUE9SVEVEX1NZTUJPTAorI2VuZGlmCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9B
UEkvdGVzdHMvdGVzdGFwaS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0FQSS90ZXN0
cy90ZXN0YXBpLmMJKHJldmlzaW9uIDYzNDYxKQorKysgSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3Rz
L3Rlc3RhcGkuYwkod29ya2luZyBjb3B5KQpAQCAtMjMsNiArMjMsOCBAQAogICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCiAgKi8KIAorI2luY2x1ZGUgIlRlc3REZWZpbmVzLmgiCisKICNpbmNsdWRlICJKYXZhU2Ny
aXB0Q29yZS5oIgogI2luY2x1ZGUgIkpTQmFzZVByaXZhdGUuaCIKICNpbmNsdWRlICJKU0NvbnRl
eHRSZWZQcml2YXRlLmgiCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvbWluaWRvbS5j
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9taW5pZG9tLmMJKHJldmlz
aW9uIDYzNDYxKQorKysgSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL21pbmlkb20uYwkod29ya2lu
ZyBjb3B5KQpAQCAtMjQsNiArMjQsOCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAorI2luY2x1
ZGUgIlRlc3REZWZpbmVzLmgiCisKICNpbmNsdWRlICJKU0NvbnRleHRSZWYuaCIKICNpbmNsdWRl
ICJKU05vZGUuaCIKICNpbmNsdWRlICJKU09iamVjdFJlZi5oIgpJbmRleDogSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL2pzYy9qc2MudmNwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9qc2MvanNjLnZjcHJvagkocmV2aXNp
b24gNjM0NjEpCisrKyBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovanNjL2pz
Yy52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTMyNiwyMSArMzI2LDkgQEAKIAk8L1JlZmVyZW5j
ZXM+DQogCTxGaWxlcz4NCiAJCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1
dERpcilcaW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlXEF0b21pY1N0cmluZy5jcHAiDQot
CQkJPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCiAJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXGpzYy5j
cHAiDQogCQkJPg0KIAkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9IiQoV2Vi
S2l0T3V0cHV0RGlyKVxpbmNsdWRlXHByaXZhdGVcSmF2YVNjcmlwdENvcmVcU3RyaW5nSW1wbC5j
cHAiDQotCQkJPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9IiQoV2Vi
S2l0T3V0cHV0RGlyKVxpbmNsdWRlXHByaXZhdGVcSmF2YVNjcmlwdENvcmVcV1RGU3RyaW5nLmNw
cCINCi0JCQk+DQotCQk8L0ZpbGU+DQogCTwvRmlsZXM+DQogCTxHbG9iYWxzPg0KIAk8L0dsb2Jh
bHM+DQpJbmRleDogSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gNjM0NjEpCisrKyBKYXZhU2NyaXB0Q29yZS9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMzMgQEAKKzIwMTAtMDctMTUgIEtl
dmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIEpTX0VYUE9SVEVEX1NZTUJPTCB0
byBleHBvcnQgSlNDb3JlIHN5bWJvbHMgbmVlZGVkIGJ5IG90aGVyIFdlYktpdCBsaWJyYXJpZXMu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzU1MQor
CisKKyAgICAgICAgKiBBUEkvdGVzdHMvSlNOb2RlLmM6CisgICAgICAgICogQVBJL3Rlc3RzL0pT
Tm9kZUxpc3QuYzoKKyAgICAgICAgKiBBUEkvdGVzdHMvVGVzdERlZmluZXMuaDogQWRkZWQuCisg
ICAgICAgICogQVBJL3Rlc3RzL21pbmlkb20uYzoKKyAgICAgICAgKiBBUEkvdGVzdHMvdGVzdGFw
aS5jOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9qc2MvanNjLnZjcHJvajoKKyAg
ICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBjb25m
aWcuaDoKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlci5oOgorICAgICAgICAqIGRlYnVnZ2Vy
L0RlYnVnZ2VyQ2FsbEZyYW1lLmg6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
aDoKKyAgICAgICAgKiBwY3JlL3BjcmUuaDoKKyAgICAgICAgKiBwcm9maWxlci9Qcm9maWxlci5o
OgorICAgICAgICAqIHJ1bnRpbWUvQXJnTGlzdC5oOgorICAgICAgICAqIHJ1bnRpbWUvQ2FsbERh
dGEuaDoKKyAgICAgICAgKiBydW50aW1lL0NvbGxlY3Rvci5jcHA6CisgICAgICAgICogcnVudGlt
ZS9Db2xsZWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL0NvbGxlY3RvckhlYXBJdGVyYXRvci5o
OgorICAgICAgICAqIHJ1bnRpbWUvQ29tcGxldGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvQ29u
c3RydWN0RGF0YS5oOgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZUluc3RhbmNlLmg6CisgICAgICAg
ICogcnVudGltZS9FcnJvci5oOgorICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5o
OgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1
bnRpbWUvSWRlbnRpZmllci5oOgorICAgICAgICAqIHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGlu
Zy5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1
bnRpbWUvSlNBcnJheS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNCeXRlQXJyYXkuaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTQ2VsbC5oOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnZwdHIpOgorICAg
ICAgICAoSlNDOjpKU0NlbGw6OnNldFZQdHIpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmlzU3Ry
aW5nKToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1l
L0pTR2xvYmFsRGF0YS5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbERhdGE6Oik6CisgICAgICAg
ICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVj
dDo6SlNHbG9iYWxPYmplY3REYXRhOjpKU0dsb2JhbE9iamVjdERhdGEpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNMb2NrLmg6CisgICAgICAgIChKU0M6OkpTTG9jazo6KToKKyAgICAgICAgKiBydW50
aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpwcm90b3R5cGUpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6
SlNPYmplY3Q6OnB1dERpcmVjdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RG
dW5jdGlvbik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbik6CisgICAgICAgICogcnVudGltZS9KU09iamVjdFdpdGhHbG9iYWxPYmplY3QuaDoKKyAg
ICAgICAgKiBydW50aW1lL0pTU3RyaW5nLmg6CisgICAgICAgIChKU0M6OkpTU3RyaW5nOjp2YWx1
ZSk6CisgICAgICAgICogcnVudGltZS9KU1ZhbHVlLmg6CisgICAgICAgICogcnVudGltZS9KU1Zh
cmlhYmxlT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTVmFyaWFibGVPYmplY3Q6OnN5bWJvbFRh
YmxlKToKKyAgICAgICAgKiBydW50aW1lL0pTV3JhcHBlck9iamVjdC5oOgorICAgICAgICAqIHJ1
bnRpbWUvTG9va3VwLmg6CisgICAgICAgICogcnVudGltZS9NYXJrU3RhY2suaDoKKyAgICAgICAg
KiBydW50aW1lL09iamVjdFByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlE
ZXNjcmlwdG9yLmg6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oOgorICAg
ICAgICAqIHJ1bnRpbWUvUHJvcGVydHlTbG90Lmg6CisgICAgICAgICogcnVudGltZS9Sb3BlSW1w
bC5oOgorICAgICAgICAqIHJ1bnRpbWUvU21hbGxTdHJpbmdzLmg6CisgICAgICAgICogcnVudGlt
ZS9TdHJpbmdPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5oOgorICAgICAg
ICAqIHJ1bnRpbWUvVGltZW91dENoZWNrZXIuaDoKKyAgICAgICAgKiBydW50aW1lL1VTdHJpbmcu
aDoKKyAgICAgICAgKEpTQzo6VVN0cmluZzo6VVN0cmluZyk6CisgICAgICAgIChKU0M6OlVTdHJp
bmc6OmlzTnVsbCk6CisgICAgICAgIChKU0M6OlVTdHJpbmc6On5VU3RyaW5nKToKKyAgICAgICAg
KEpTQzo6VVN0cmluZzo6b3BlcmF0b3I9KToKKyAgICAgICAgKiB3c2NyaXB0OgorICAgICAgICAq
IHd0Zi9Bc3NlcnRpb25zLmg6CisgICAgICAgICogd3RmL0J5dGVBcnJheS5oOgorICAgICAgICAq
IHd0Zi9DdXJyZW50VGltZS5oOgorICAgICAgICAoV1RGOjpjdXJyZW50VGltZU1TKToKKyAgICAg
ICAgKFdURjo6Z2V0TG9jYWxUaW1lKToKKyAgICAgICAgKiB3dGYvRGF0ZU1hdGguaDoKKyAgICAg
ICAgKiB3dGYvRGlzYWxsb3dDVHlwZS5oOgorICAgICAgICAqIHd0Zi9GYXN0TWFsbG9jLmg6Cisg
ICAgICAgIChXVEY6OlRyeU1hbGxvY1JldHVyblZhbHVlOjpUcnlNYWxsb2NSZXR1cm5WYWx1ZSk6
CisgICAgICAgIChXVEY6OlRyeU1hbGxvY1JldHVyblZhbHVlOjp+VHJ5TWFsbG9jUmV0dXJuVmFs
dWUpOgorICAgICAgICAoV1RGOjpUcnlNYWxsb2NSZXR1cm5WYWx1ZTo6b3BlcmF0b3IgUG9zc2li
bHlOdWxsPFQ+KToKKyAgICAgICAgKFdURjo6VHJ5TWFsbG9jUmV0dXJuVmFsdWU6OmdldFZhbHVl
KToKKyAgICAgICAgKFdURjo6SW50ZXJuYWw6Oik6CisgICAgICAgIChXVEY6OkludGVybmFsOjpm
YXN0TWFsbG9jTWF0Y2hWYWxpZGF0aW9uVHlwZSk6CisgICAgICAgIChXVEY6OkludGVybmFsOjpm
YXN0TWFsbG9jTWF0Y2hWYWxpZGF0aW9uVmFsdWUpOgorICAgICAgICAoV1RGOjpJbnRlcm5hbDo6
c2V0RmFzdE1hbGxvY01hdGNoVmFsaWRhdGlvblR5cGUpOgorICAgICAgICAoV1RGOjpmYXN0TWFs
bG9jTWF0Y2hWYWxpZGF0ZU1hbGxvYyk6CisgICAgICAgIChXVEY6OmZhc3RNYWxsb2NNYXRjaFZh
bGlkYXRlRnJlZSk6CisgICAgICAgICogd3RmL01ENS5oOgorICAgICAgICAoV1RGOjopOgorICAg
ICAgICAqIHd0Zi9NYWluVGhyZWFkLmg6CisgICAgICAgICogd3RmL1JhbmRvbU51bWJlci5oOgor
ICAgICAgICAqIHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaDoKKyAgICAgICAgKFdURjo6KToK
KyAgICAgICAgKiB3dGYvVGhyZWFkU3BlY2lmaWMuaDoKKyAgICAgICAgKiB3dGYvVGhyZWFkaW5n
Lmg6CisgICAgICAgICogd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaDoKKyAgICAgICAgKiB3dGYv
V1RGVGhyZWFkRGF0YS5oOgorICAgICAgICAqIHd0Zi9kdG9hLmg6CisgICAgICAgICogd3RmL3Rl
eHQvQXRvbWljU3RyaW5nLmg6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNTdHJpbmc6OkF0b21p
Y1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNTdHJpbmc6OmlzSGFzaFRhYmxlRGVs
ZXRlZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkF0b21pY1N0cmluZzo6fkF0b21pY1N0cmlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNTdHJpbmc6OmltcGwpOgorICAgICAgICAoV2Vi
Q29yZTo6QXRvbWljU3RyaW5nOjpvcGVyYXRvcj0pOgorICAgICAgICAqIHd0Zi90ZXh0L0NTdHJp
bmcuaDoKKyAgICAgICAgKFdURjo6Q1N0cmluZzo6fkNTdHJpbmcpOgorICAgICAgICAoV1RGOjpD
U3RyaW5nOjpkYXRhKToKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmg6CisgICAgICAg
IChXZWJDb3JlOjpTdHJpbmdJbXBsOjpjaGFyYWN0ZXJzKToKKyAgICAgICAgKiB3dGYvdGV4dC9T
dHJpbmdTdGF0aWNzLmNwcDoKKyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlN0cmluZzo6U3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlN0cmluZzo6
flN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTdHJpbmc6OmlzSGFzaFRhYmxlRGVsZXRlZFZh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0cmluZzo6aXNFbXB0eSk6CisgICAgICAgIChXZWJD
b3JlOjpTdHJpbmc6OmltcGwpOgorICAgICAgICAoV2ViQ29yZTo6U3RyaW5nOjpvcGVyYXRvcj0p
OgorICAgICAgICAqIHd0Zi91bmljb2RlL0NvbGxhdG9yLmg6CisgICAgICAgIChXVEY6Oik6Cisg
ICAgICAgICogd3RmL3VuaWNvZGUvVVRGOC5oOgorCiAyMDEwLTA3LTE1ICBPbGl2ZXIgSHVudCAg
PG9saXZlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmYgR2FyZW4uCklu
ZGV4OiBKYXZhU2NyaXB0Q29yZS9wY3JlL3BjcmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9wY3JlL3BjcmUuaAkocmV2aXNpb24gNjM0NjEpCisrKyBKYXZhU2NyaXB0Q29yZS9wY3Jl
L3BjcmUuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsMTQgKzU1LDE0IEBACiBjb25zdCBpbnQgSlNS
ZWdFeHBFcnJvck5vTWVtb3J5ID0gLTM7CiBjb25zdCBpbnQgSlNSZWdFeHBFcnJvckludGVybmFs
ID0gLTQ7CiAKLUpTUmVnRXhwKiBqc1JlZ0V4cENvbXBpbGUoY29uc3QgVUNoYXIqIHBhdHRlcm4s
IGludCBwYXR0ZXJuTGVuZ3RoLAorSlNfRVhQT1JURURfU1lNQk9MIEpTUmVnRXhwKiBqc1JlZ0V4
cENvbXBpbGUoY29uc3QgVUNoYXIqIHBhdHRlcm4sIGludCBwYXR0ZXJuTGVuZ3RoLAogICAgIEpT
UmVnRXhwSWdub3JlQ2FzZU9wdGlvbiwgSlNSZWdFeHBNdWx0aWxpbmVPcHRpb24sCiAgICAgdW5z
aWduZWQqIG51bVN1YnBhdHRlcm5zLCBjb25zdCBjaGFyKiogZXJyb3JNZXNzYWdlKTsKIAotaW50
IGpzUmVnRXhwRXhlY3V0ZShjb25zdCBKU1JlZ0V4cCosCitKU19FWFBPUlRFRF9TWU1CT0wgaW50
IGpzUmVnRXhwRXhlY3V0ZShjb25zdCBKU1JlZ0V4cCosCiAgICAgY29uc3QgVUNoYXIqIHN1Ympl
Y3QsIGludCBzdWJqZWN0TGVuZ3RoLCBpbnQgc3RhcnRPZmZzZXQsCiAgICAgaW50KiBvZmZzZXRz
VmVjdG9yLCBpbnQgb2Zmc2V0c1ZlY3Rvckxlbmd0aCk7CiAKLXZvaWQganNSZWdFeHBGcmVlKEpT
UmVnRXhwKik7CitKU19FWFBPUlRFRF9TWU1CT0wgdm9pZCBqc1JlZ0V4cEZyZWUoSlNSZWdFeHAq
KTsKIAogI2VuZGlmCkluZGV4OiBKYXZhU2NyaXB0Q29yZS93c2NyaXB0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEphdmFTY3JpcHRDb3JlL3dzY3JpcHQJKHJldmlzaW9uIDYzNDYxKQorKysgSmF2YVNjcmlwdENv
cmUvd3NjcmlwdAkod29ya2luZyBjb3B5KQpAQCAtNzUsNiArNzUsNyBAQAogZGVmIGJ1aWxkKGJs
ZCk6CiAgICAgaW1wb3J0IE9wdGlvbnMKIAorICAgIGJsZC5lbnYuTElCRElSID0gb3V0cHV0X2Rp
cgogICAgIGZ1bGxfZGlycyA9IGdldF9kaXJzX2Zvcl9mZWF0dXJlcyhqc2NvcmVfZGlyLCBmZWF0
dXJlcz1bYnVpbGRfcG9ydF0sIGRpcnM9anNjb3JlX2RpcnMpCiAKICAgICBpbmNsdWRlcyA9IGNv
bW1vbl9pbmNsdWRlcyArIGZ1bGxfZGlycwpAQCAtODMsOSArODQsMTAgQEAKIAogICAgICMgMS4g
QSBzaW1wbGUgcHJvZ3JhbQogICAgIGpzY29yZSA9IGJsZC5uZXdfdGFza19nZW4oCi0gICAgICAg
IGZlYXR1cmVzID0gJ2N4eCBjc3RhdGljbGliJywKKyAgICAgICAgZmVhdHVyZXMgPSAnY3h4IGNz
aGxpYiBpbXBsaWInLAogICAgICAgICBpbmNsdWRlcyA9ICcuIC4uIGFzc2VtYmxlciBEZXJpdmVk
U291cmNlcyBGb3J3YXJkaW5nSGVhZGVycyAnICsgJyAnLmpvaW4oaW5jbHVkZXMpLAogICAgICAg
ICBzb3VyY2UgPSBzb3VyY2VzLAorICAgICAgICBkZWZpbmVzID0gWydCVUlMRElOR19KYXZhU2Ny
aXB0Q29yZSddLAogICAgICAgICB0YXJnZXQgPSAnanNjb3JlJywKICAgICAgICAgdXNlbGliID0g
J1dYIElDVSAnICsgZ2V0X2NvbmZpZygpLAogICAgICAgICB1c2VsaWJfbG9jYWwgPSAnJywKSW5k
ZXg6IEphdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2
YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXIuaAkocmV2aXNpb24gNjM0NjEpCisrKyBKYXZh
U2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSwxMSAr
NTEsMTEgQEAKICAgICAgICAgICAgIHJldHVybiAmc19zaGFyZWRFbmFibGVkUHJvZmlsZXJSZWZl
cmVuY2U7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgUHJvZmlsZXIqIHByb2ZpbGVyKCk7
IAorICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgc3RhdGljIFByb2ZpbGVyKiBwcm9maWxlcigp
OyAKICAgICAgICAgc3RhdGljIENhbGxJZGVudGlmaWVyIGNyZWF0ZUNhbGxJZGVudGlmaWVyKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSwgY29uc3QgVVN0cmluZyYgc291cmNlVVJMLCBpbnQgbGlu
ZU51bWJlcik7CiAKLSAgICAgICAgdm9pZCBzdGFydFByb2ZpbGluZyhFeGVjU3RhdGUqLCBjb25z
dCBVU3RyaW5nJiB0aXRsZSk7Ci0gICAgICAgIFBhc3NSZWZQdHI8UHJvZmlsZT4gc3RvcFByb2Zp
bGluZyhFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJiB0aXRsZSk7CisgICAgICAgIEpTX0VYUE9S
VEVEX1NZTUJPTCB2b2lkIHN0YXJ0UHJvZmlsaW5nKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcm
IHRpdGxlKTsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9MIFBhc3NSZWZQdHI8UHJvZmlsZT4g
c3RvcFByb2ZpbGluZyhFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJiB0aXRsZSk7CiAKICAgICAg
ICAgdm9pZCB3aWxsRXhlY3V0ZShFeGVjU3RhdGUqLCBKU1ZhbHVlIGZ1bmN0aW9uKTsKICAgICAg
ICAgdm9pZCB3aWxsRXhlY3V0ZShFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJiBzb3VyY2VVUkws
IGludCBzdGFydGluZ0xpbmVOdW1iZXIpOwpJbmRleDogSmF2YVNjcmlwdENvcmUvZGVidWdnZXIv
RGVidWdnZXJDYWxsRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9kZWJ1Z2dl
ci9EZWJ1Z2dlckNhbGxGcmFtZS5oCShyZXZpc2lvbiA2MzQ2MSkKKysrIEphdmFTY3JpcHRDb3Jl
L2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDEwICs1
MSwxMCBAQAogICAgICAgICBKU0dsb2JhbE9iamVjdCogZHluYW1pY0dsb2JhbE9iamVjdCgpIGNv
bnN0IHsgcmV0dXJuIG1fY2FsbEZyYW1lLT5keW5hbWljR2xvYmFsT2JqZWN0KCk7IH0KICAgICAg
ICAgY29uc3QgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW4oKSBjb25zdCB7IHJldHVybiBtX2Nh
bGxGcmFtZS0+c2NvcGVDaGFpbigpOyB9CiAgICAgICAgIGNvbnN0IFVTdHJpbmcqIGZ1bmN0aW9u
TmFtZSgpIGNvbnN0OwotICAgICAgICBVU3RyaW5nIGNhbGN1bGF0ZWRGdW5jdGlvbk5hbWUoKSBj
b25zdDsKLSAgICAgICAgVHlwZSB0eXBlKCkgY29uc3Q7Ci0gICAgICAgIEpTT2JqZWN0KiB0aGlz
T2JqZWN0KCkgY29uc3Q7Ci0gICAgICAgIEpTVmFsdWUgZXZhbHVhdGUoY29uc3QgVVN0cmluZyYs
IEpTVmFsdWUmIGV4Y2VwdGlvbikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCBV
U3RyaW5nIGNhbGN1bGF0ZWRGdW5jdGlvbk5hbWUoKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JU
RURfU1lNQk9MIFR5cGUgdHlwZSgpIGNvbnN0OworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wg
SlNPYmplY3QqIHRoaXNPYmplY3QoKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JURURfU1lNQk9M
IEpTVmFsdWUgZXZhbHVhdGUoY29uc3QgVVN0cmluZyYsIEpTVmFsdWUmIGV4Y2VwdGlvbikgY29u
c3Q7CiAgICAgICAgIEpTVmFsdWUgZXhjZXB0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9leGNlcHRp
b247IH0KIAogICAgIHByaXZhdGU6CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1
Z2dlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmgJ
KHJldmlzaW9uIDYzNDYxKQorKysgSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtMzYsMTAgKzM2LDEwIEBACiAKICAgICBjbGFzcyBEZWJ1Z2dlciB7
CiAgICAgcHVibGljOgotICAgICAgICB2aXJ0dWFsIH5EZWJ1Z2dlcigpOworICAgICAgICBKU19F
WFBPUlRFRF9TWU1CT0wgdmlydHVhbCB+RGVidWdnZXIoKTsKIAotICAgICAgICB2b2lkIGF0dGFj
aChKU0dsb2JhbE9iamVjdCopOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoKEpTR2xvYmFs
T2JqZWN0Kik7CisgICAgICAgIEpTX0VYUE9SVEVEX1NZTUJPTCB2b2lkIGF0dGFjaChKU0dsb2Jh
bE9iamVjdCopOworICAgICAgICBKU19FWFBPUlRFRF9TWU1CT0wgdmlydHVhbCB2b2lkIGRldGFj
aChKU0dsb2JhbE9iamVjdCopOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VQYXJzZWQo
RXhlY1N0YXRlKiwgY29uc3QgU291cmNlQ29kZSYsIGludCBlcnJvckxpbmVOdW1iZXIsIGNvbnN0
IFVTdHJpbmcmIGVycm9yTWVzc2FnZSkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZXhjZXB0
aW9uKGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5l
TnVtYmVyLCBib29sIGhhc0hhbmRsZXIpID0gMDsKQEAgLTUxLDcgKzUxLDcgQEAKICAgICAgICAg
dmlydHVhbCB2b2lkIGRpZEV4ZWN1dGVQcm9ncmFtKGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiwg
aW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyKSA9IDA7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWFjaEJyZWFrcG9pbnQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJf
dCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpID0gMDsKIAotICAgICAgICB2b2lkIHJlY29tcGls
ZUFsbEpTRnVuY3Rpb25zKEpTR2xvYmFsRGF0YSopOworICAgICAgICBKU19FWFBPUlRFRF9TWU1C
T0wgdm9pZCByZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucyhKU0dsb2JhbERhdGEqKTsKIAogICAgIHBy
aXZhdGU6CiAgICAgICAgIEhhc2hTZXQ8SlNHbG9iYWxPYmplY3QqPiBtX2dsb2JhbE9iamVjdHM7
CkluZGV4OiBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUXRQbGF0Zm9ybVBsdWdpbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1F0UGxhdGZvcm1QbHVnaW4uY3Bw
CShyZXZpc2lvbiA2MzQ2MSkKKysrIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RdFBsYXRmb3Jt
UGx1Z2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc1LDMgKzE3NSw1IEBACiB9CiAKIH0KKwor
I2luY2x1ZGUgIm1vY19RdFBsYXRmb3JtUGx1Z2luLmNwcCIKSW5kZXg6IFdlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9RdEZhbGxiYWNrV2ViUG9wdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9RdEZhbGxiYWNrV2ViUG9wdXAuY3BwCShyZXZpc2lvbiA2MzQ2MSkK
KysrIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RdEZhbGxiYWNrV2ViUG9wdXAuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNDcsNCArMjQ3LDYgQEAKIAogfQogCisjaW5jbHVkZSAibW9jX1F0RmFs
bGJhY2tXZWJQb3B1cC5jcHAiCisKICNlbmRpZiAvLyBRVF9OT19DT01CT0JPWApJbmRleDogV2Vi
S2l0L3F0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZp
c2lvbiA2MzQ2MSkKKysrIFdlYktpdC9xdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxMyBAQAorMjAxMC0wNy0xNSAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZp
ZXJzLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVc2UgSlNfRVhQT1JURURfU1lNQk9MIHRvIGV4cG9ydCBKU0NvcmUgc3ltYm9scyBuZWVkZWQg
Ynkgb3RoZXIgV2ViS2l0IGxpYnJhcmllcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTI3NTUxCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9RdEZh
bGxiYWNrV2ViUG9wdXAuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1F0UGxhdGZvcm1Q
bHVnaW4uY3BwOgorCiAyMDEwLTA3LTE0ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBXZWJLaXQvY2YvV2ViQ29y
ZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9j
Zi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAJKHJldmlzaW9uIDYzNDYx
KQorKysgV2ViS2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzksMTQgKzM5LDEyIEBACiAKICNpZiBkZWZpbmVkKFdJTjMyKSB8
fCBkZWZpbmVkKF9XSU4zMikKICNpZiBkZWZpbmVkKEJVSUxESU5HX0phdmFTY3JpcHRDb3JlKSB8
fCBkZWZpbmVkKEJVSUxESU5HX1dURikKLSNkZWZpbmUgSlNfRVhQT1JUREFUQSBfX2RlY2xzcGVj
KGRsbGV4cG9ydCkKKyNkZWZpbmUgSlNfRVhQT1JURURfU1lNQk9MIF9fZGVjbHNwZWMoZGxsZXhw
b3J0KQogI2Vsc2UKLSNkZWZpbmUgSlNfRVhQT1JUREFUQSBfX2RlY2xzcGVjKGRsbGltcG9ydCkK
KyNkZWZpbmUgSlNfRVhQT1JURURfU1lNQk9MIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQogI2VuZGlm
Ci0jZGVmaW5lIEpTX0VYUE9SVENMQVNTIEpTX0VYUE9SVERBVEEKICNlbHNlCi0jZGVmaW5lIEpT
X0VYUE9SVERBVEEKLSNkZWZpbmUgSlNfRVhQT1JUQ0xBU1MKKyNkZWZpbmUgSlNfRVhQT1JURURf
U1lNQk9MCiAjZW5kaWYKIAogI2luY2x1ZGUgIldlYkluc3BlY3RvckNsaWVudC5oIgpJbmRleDog
V2ViS2l0L2NmL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2YvQ2hhbmdlTG9nCShy
ZXZpc2lvbiA2MzQ2MSkKKysrIFdlYktpdC9jZi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxMiBAQAorMjAxMC0wNy0xNSAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xs
aXZpZXJzLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBVc2UgSlNfRVhQT1JURURfU1lNQk9MIHRvIGV4cG9ydCBKU0NvcmUgc3ltYm9scyBuZWVk
ZWQgYnkgb3RoZXIgV2ViS2l0IGxpYnJhcmllcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NTUxCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JDbGllbnRDRi5jcHA6CisKIDIwMTAtMDYtMTQgIElseWEgVGlraG9ub3Zza3kg
IDxsb2lzbG9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRt
YW4uCkluZGV4OiBXZWJLaXQvd3gvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93eC9D
aGFuZ2VMb2cJKHJldmlzaW9uIDYzNDYxKQorKysgV2ViS2l0L3d4L0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDEwLTA3LTE1ICBLZXZpbiBPbGxpdmllciAgPGtl
dmlub0B0aGVvbGxpdmllcnMuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFVzZSBKU19FWFBPUlRFRF9TWU1CT0wgdG8gZXhwb3J0IEpTQ29yZSBz
eW1ib2xzIG5lZWRlZCBieSBvdGhlciBXZWJLaXQgbGlicmFyaWVzLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc1NTEKKworICAgICAgICAqIHdzY3Jp
cHQ6CisKIDIwMTAtMDctMTQgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IFdlYktpdC93eC93c2NyaXB0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC93eC93c2NyaXB0CShyZXZpc2lvbiA2MzQ2MSkKKysrIFdlYktpdC93
eC93c2NyaXB0CSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBACiAgICAgCiBkZWYgcHJl
X2J1aWxkKGJsZCk6CiAgICAgIiIiCi0gICAgVGhlIHd4V2ViS2l0IGxpYnJhcnkgc2hvdWxkIGJl
IHJlYnVpbHQgaWYganNjb3JlIG9yIHdlYmNvcmUgY2hhbmdlcywKKyAgICBUaGUgd3hXZWJLaXQg
bGlicmFyeSBzaG91bGQgYmUgcmVidWlsdCBpZiB3ZWJjb3JlIGNoYW5nZXMsCiAgICAgc28gd2Ug
bWFrZSB0aG9zZSBzdGF0aWMgbGlicyBhcyBkZXBlbmRlbmNpZXMuCiAgICAgIiIiCiAgICAgCkBA
IC03NCwxMyArNzQsMTAgQEAKICAgICBpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnd2luJyk6
CiAgICAgICAgIGV4dCA9ICcubGliJwogICAgIAotICAgIGxpYmpzY29yZSA9IG9zLnBhdGguam9p
bihvdXRwdXRfZGlyLCAnbGlianNjb3JlJXMnICUgZXh0KQogICAgIGxpYndlYmNvcmUgPSBvcy5w
YXRoLmpvaW4ob3V0cHV0X2RpciwgJ2xpYndlYmNvcmUlcycgJSBleHQpCiAgICAgCi0gICAgYXNz
ZXJ0IG9zLnBhdGguZXhpc3RzKGxpYmpzY29yZSkKICAgICBhc3NlcnQgb3MucGF0aC5leGlzdHMo
bGlid2ViY29yZSkKICAgICAKLSAgICBibGQuZW52LkNYWERFUFNfSlNDT1JFID0gVXRpbHMuaF9m
aWxlKGxpYmpzY29yZSkKICAgICBibGQuZW52LkNYWERFUFNfV0VCQ09SRSA9IFV0aWxzLmhfZmls
ZShsaWJ3ZWJjb3JlKQogICAgIAogZGVmIGJ1aWxkKGJsZCk6CkluZGV4OiBXZWJLaXQvbWFjL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gNjM0
NjEpCisrKyBXZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEy
IEBACisyMDEwLTA3LTE1ICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBK
U19FWFBPUlRFRF9TWU1CT0wgdG8gZXhwb3J0IEpTQ29yZSBzeW1ib2xzIG5lZWRlZCBieSBvdGhl
ciBXZWJLaXQgbGlicmFyaWVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9Mjc1NTEKKworICAgICAgICAqIFdlYktpdFByZWZpeC5oOgorCiAyMDEwLTA3
LTE1ICBEYW5pZWwgQmF0ZXMgIDxkYmF0ZXNAcmltLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBEYXJpbiBBZGxlci4KSW5kZXg6IFdlYktpdC9tYWMvV2ViS2l0UHJlZml4LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L21hYy9XZWJLaXRQcmVmaXguaAkocmV2aXNpb24gNjM0NjEpCisrKyBXZWJL
aXQvbWFjL1dlYktpdFByZWZpeC5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCw2ICs3MCw4IEBACiAj
aW1wb3J0IDxDb2NvYS9Db2NvYS5oPgogI2VuZGlmCiAKKyNkZWZpbmUgSlNfRVhQT1JURURfU1lN
Qk9MCisKICNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KIAogI2luY2x1ZGUgPFdlYkNvcmUvRW1w
dHlQcm90b2NvbERlZmluaXRpb25zLmg+CkBAIC04OSw2ICs5MSw0IEBACiAjdW5kZWYgdHJ5CiAj
dW5kZWYgY2F0Y2gKIAotI2RlZmluZSBKU19FWFBPUlREQVRBCi0jZGVmaW5lIEpTX0VYUE9SVENM
QVNTCiAjZGVmaW5lIFdFQktJVF9FWFBPUlREQVRBCkluZGV4OiBKYXZhU2NyaXB0R2x1ZS9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nCShyZXZpc2lvbiA2
MzQ2MSkKKysrIEphdmFTY3JpcHRHbHVlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDEyIEBACisyMDEwLTA3LTE1ICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVvbGxpdmll
cnMuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFVzZSBKU19FWFBPUlRFRF9TWU1CT0wgdG8gZXhwb3J0IEpTQ29yZSBzeW1ib2xzIG5lZWRlZCBi
eSBvdGhlciBXZWJLaXQgbGlicmFyaWVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Mjc1NTEKKworICAgICAgICAqIGNvbmZpZy5oOgorCiAyMDEwLTA3
LTAxICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgTWFjaWVqIFN0YWNob3dpYWsuCkluZGV4OiBKYXZhU2NyaXB0R2x1ZS9jb25maWcuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKYXZhU2NyaXB0R2x1ZS9jb25maWcuaAkocmV2aXNpb24gNjM0NjEpCisrKyBK
YXZhU2NyaXB0R2x1ZS9jb25maWcuaAkod29ya2luZyBjb3B5KQpAQCAtMTcsNSArMTcsNCBAQAog
LyogVXNpbmcgVjggaW1wbGllcyBub3QgdXNpbmcgSlNDIGFuZCB2aWNlIHZlcnNhICovCiAjZGVm
aW5lIFdURl9VU0VfSlNDICFXVEZfVVNFX1Y4CiAKLSNkZWZpbmUgSlNfRVhQT1JUREFUQQotI2Rl
ZmluZSBKU19FWFBPUlRDTEFTUworI2RlZmluZSBKU19FWFBPUlRFRF9TWU1CT0wKSW5kZXg6IFdl
YkNvcmUvY29uZmlnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jb25maWcuaAkocmV2aXNpb24g
NjM0NjEpCisrKyBXZWJDb3JlL2NvbmZpZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwyMSArMjks
MTkgQEAKIAogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogCi0jaWYgIVBMQVRGT1JNKENIUk9N
SVVNKSAmJiBPUyhXSU5ET1dTKSAmJiAhZGVmaW5lZChCVUlMRElOR19XWF9fKSAmJiAhQ09NUElM
RVIoR0NDKQorI2lmICFQTEFURk9STShDSFJPTUlVTSkgJiYgT1MoV0lORE9XUykgJiYgIUNPTVBJ
TEVSKEdDQykKICNpZiBkZWZpbmVkKEJVSUxESU5HX0phdmFTY3JpcHRDb3JlKSB8fCBkZWZpbmVk
KEJVSUxESU5HX1dURikKLSNkZWZpbmUgSlNfRVhQT1JUREFUQSBfX2RlY2xzcGVjKGRsbGV4cG9y
dCkKKyNkZWZpbmUgSlNfRVhQT1JURURfU1lNQk9MIF9fZGVjbHNwZWMoZGxsZXhwb3J0KQogI2Vs
c2UKLSNkZWZpbmUgSlNfRVhQT1JUREFUQSBfX2RlY2xzcGVjKGRsbGltcG9ydCkKKyNkZWZpbmUg
SlNfRVhQT1JURURfU1lNQk9MIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQogI2VuZGlmCiAjaWYgZGVm
aW5lZChCVUlMRElOR19XZWJDb3JlKSB8fCBkZWZpbmVkKEJVSUxESU5HX1dlYktpdCkKICNkZWZp
bmUgV0VCS0lUX0VYUE9SVERBVEEgX19kZWNsc3BlYyhkbGxleHBvcnQpCiAjZWxzZQogI2RlZmlu
ZSBXRUJLSVRfRVhQT1JUREFUQSBfX2RlY2xzcGVjKGRsbGltcG9ydCkKICNlbmRpZgotI2RlZmlu
ZSBKU19FWFBPUlRDTEFTUyBKU19FWFBPUlREQVRBCiAjZWxzZQotI2RlZmluZSBKU19FWFBPUlRE
QVRBCi0jZGVmaW5lIEpTX0VYUE9SVENMQVNTCisjZGVmaW5lIEpTX0VYUE9SVEVEX1NZTUJPTAog
I2RlZmluZSBXRUJLSVRfRVhQT1JUREFUQQogI2VuZGlmCiAKSW5kZXg6IFdlYkNvcmUvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA2MzQ2MSkKKysr
IFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTAt
MDctMTUgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIEpTX0VYUE9SVEVE
X1NZTUJPTCB0byBleHBvcnQgSlNDb3JlIHN5bWJvbHMgbmVlZGVkIGJ5IG90aGVyIFdlYktpdCBs
aWJyYXJpZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yNzU1MQorCisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNBcnJheUJ1ZmZlclZpZXdDdXN0b20uY3BwOgorICAgICAgICAq
IGNvbmZpZy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3d4L0ZvbnRQbGF0Zm9ybURh
dGFXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZv
cm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvZ3RrMmRyYXdpbmcuYzoKKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMvTG9nZ2luZ01hYy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW5jZS9T
aGFyZWRUaW1lcldpbmNlLmNwcDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
aWx0ZXJCdWlsZGVyLmg6CisKIDIwMTAtMDctMTUgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29n
bGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5hdGUgQ2hhcGluLgpJbmRleDogV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiA2MzQ2MSkKKysrIFdlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTMzNDUsNiAr
MzM0NSwxMTggQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZl
UGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNl
c1xKU0RPTU1pbWVUeXBlLmNwcCINCisJCQkJPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJ
CQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQor
CQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJ
CQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24N
CisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1
ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIN
CisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJh
dGlvbg0KKwkJCQkJTmFtZT0iRGVidWdfSW50ZXJuYWx8V2luMzIiDQorCQkJCQlFeGNsdWRlZEZy
b21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENv
bXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxG
aWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWdfQ2Fpcm98V2luMzIiDQorCQkJCQlF
eGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFt
ZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+
DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb3xXaW4z
MiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wN
CisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29u
ZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z19B
bGx8V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJ
CTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwv
RmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZl
UGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNl
c1xKU0RPTU1pbWVUeXBlLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJ
UmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2
ZWRTb3VyY2VzXEpTRE9NTWltZVR5cGVBcnJheS5jcHAiDQorCQkJCT4NCisJCQkJPEZpbGVDb25m
aWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1
aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGls
ZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVD
b25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KKwkJCQkJRXhjbHVkZWRG
cm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xD
b21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8
RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnX0ludGVybmFsfFdpbjMyIg0KKwkJ
CQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJ
CU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0
aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnX0NhaXJvfFdp
bjMyIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9v
bA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVD
b25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVh
c2VfQ2Fpcm98V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4N
CisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQor
CQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJ
TmFtZT0iRGVidWdfQWxsfFdpbjMyIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQor
CQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJ
CQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0K
KwkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlc
RGVyaXZlZFNvdXJjZXNcSlNET01NaW1lVHlwZUFycmF5LmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+
DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQo
UHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRE9NUGFyc2VyLmNwcCINCiAJCQkJPg0KIAkJ
CQk8RmlsZUNvbmZpZ3VyYXRpb24NCkBAIC0zNDAxLDYgKzM1MTMsMTE4IEBACiAJCQkJPg0KIAkJ
CTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGly
KVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNET01QbHVnaW4uY3BwIg0KKwkJ
CQk+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQor
CQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJ
CQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3Vy
YXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4z
MiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wN
CisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29u
ZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z19J
bnRlcm5hbHxXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0K
KwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJ
CQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlO
YW1lPSJEZWJ1Z19DYWlyb3xXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0K
KwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJ
CQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9u
DQorCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvfFdpbjMyIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVp
bGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxl
clRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiINCisJCQkJCUV4Y2x1ZGVk
RnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NM
Q29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQk8
L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilc
b2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRE9NUGx1Z2luLmgiDQorCQkJCT4N
CisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1
dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRE9NUGx1Z2luQXJyYXku
Y3BwIg0KKwkJCQk+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8
V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxU
b29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmls
ZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVs
ZWFzZXxXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJ
CQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJ
PC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1l
PSJEZWJ1Z19JbnRlcm5hbHxXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0K
KwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJ
CQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9u
DQorCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb3xXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxk
PSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJU
b29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25m
aWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvfFdpbjMyIg0KKwkJCQkJRXhjbHVk
ZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZD
Q0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJ
CQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiINCisJCQkJ
CUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlO
YW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlv
bj4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91
dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRE9NUGx1Z2luQXJy
YXkuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9
IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNE
T01TZWxlY3Rpb24uY3BwIg0KIAkJCQk+DQogCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KQEAgLTkx
NzMsMTE4ICs5Mzk3LDYgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJl
bGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVk
U291cmNlc1xKU0RPTU1pbWVUeXBlLmNwcCINCi0JCQkJPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRp
b24NCi0JCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRy
dWUiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wi
DQotCQkJCQkvPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3Vy
YXRpb24NCi0JCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJCQlFeGNsdWRlZEZyb21CdWls
ZD0idHJ1ZSINCi0JCQkJCT4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVy
VG9vbCINCi0JCQkJCS8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29u
ZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iRGVidWdfSW50ZXJuYWx8V2luMzIiDQotCQkJCQlFeGNs
dWRlZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJCT4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0i
VkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCS8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQot
CQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iRGVidWdfQ2Fpcm98V2luMzIiDQot
CQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJCT4NCi0JCQkJCTxUb29sDQotCQkJ
CQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCS8+DQotCQkJCTwvRmlsZUNvbmZpZ3Vy
YXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUmVsZWFzZV9DYWly
b3xXaW4zMiINCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJPg0KLQkJCQkJ
PFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJLz4NCi0JCQkJPC9G
aWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJE
ZWJ1Z19BbGx8V2luMzIiDQotCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJCT4N
Ci0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCS8+DQot
CQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJl
bGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVk
U291cmNlc1xKU0RPTU1pbWVUeXBlLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUN
Ci0JCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUp
XERlcml2ZWRTb3VyY2VzXEpTRE9NTWltZVR5cGVBcnJheS5jcHAiDQotCQkJCT4NCi0JCQkJPEZp
bGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQkJCUV4Y2x1ZGVk
RnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0NM
Q29tcGlsZXJUb29sIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJ
PEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCQkJRXhj
bHVkZWRGcm9tQnVpbGQ9InRydWUiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9
IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkvPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0K
LQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IkRlYnVnX0ludGVybmFsfFdpbjMy
Ig0KLQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0K
LQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkvPg0KLQkJCQk8L0ZpbGVDb25m
aWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IkRlYnVnX0Nh
aXJvfFdpbjMyIg0KLQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQotCQkJCQk+DQotCQkJ
CQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkvPg0KLQkJCQk8
L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9
IlJlbGVhc2VfQ2Fpcm98V2luMzIiDQotCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCi0J
CQkJCT4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJ
CS8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0K
LQkJCQkJTmFtZT0iRGVidWdfQWxsfFdpbjMyIg0KLQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRy
dWUiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wi
DQotCQkJCQkvPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCTwvRmlsZT4NCi0JCQk8
RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0
TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNET01NaW1lVHlwZUFycmF5LmgiDQotCQkJCT4NCi0JCQk8
L0ZpbGU+DQotCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilc
b2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTTW91c2VFdmVudC5jcHAiDQogCQkJ
CT4NCiAJCQkJPEZpbGVDb25maWd1cmF0aW9uDQpAQCAtMTAxMjUsMTE4ICsxMDIzNyw2IEBACiAJ
CQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0
T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNET01QbHVnaW4u
Y3BwIg0KLQkJCQk+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iRGVidWd8
V2luMzIiDQotCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJCT4NCi0JCQkJCTxU
b29sDQotCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCS8+DQotCQkJCTwvRmls
ZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUmVs
ZWFzZXxXaW4zMiINCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJPg0KLQkJ
CQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJLz4NCi0JCQkJ
PC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1l
PSJEZWJ1Z19JbnRlcm5hbHxXaW4zMiINCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0K
LQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJ
CQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9u
DQotCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb3xXaW4zMiINCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxk
PSJ0cnVlIg0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJU
b29sIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25m
aWd1cmF0aW9uDQotCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvfFdpbjMyIg0KLQkJCQkJRXhjbHVk
ZWRGcm9tQnVpbGQ9InRydWUiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZD
Q0xDb21waWxlclRvb2wiDQotCQkJCQkvPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJ
CQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiINCi0JCQkJ
CUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlO
YW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlv
bj4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91
dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRE9NUGx1Z2luLmgi
DQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKFdl
YktpdE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRE9NUGx1
Z2luQXJyYXkuY3BwIg0KLQkJCQk+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFt
ZT0iRGVidWd8V2luMzIiDQotCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJCT4N
Ci0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCS8+DQot
CQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJ
TmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KLQkJ
CQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJ
Lz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQot
CQkJCQlOYW1lPSJEZWJ1Z19JbnRlcm5hbHxXaW4zMiINCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxk
PSJ0cnVlIg0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJU
b29sIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25m
aWd1cmF0aW9uDQotCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb3xXaW4zMiINCi0JCQkJCUV4Y2x1ZGVk
RnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0NM
Q29tcGlsZXJUb29sIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJ
PEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvfFdpbjMyIg0KLQkJ
CQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJ
CU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkvPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0
aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4z
MiINCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJPg0KLQkJCQkJPFRvb2wN
Ci0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29u
ZmlndXJhdGlvbj4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIk
KFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRE9N
UGx1Z2luQXJyYXkuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KIAkJCQlSZWxh
dGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNv
dXJjZXNcSlNQb3BTdGF0ZUV2ZW50LmNwcCINCiAJCQkJPg0KIAkJCQk8RmlsZUNvbmZpZ3VyYXRp
b24NCkBAIC0yMDcyNCwyMyArMjA3MjQsMTMgQEAKIAkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0
T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNca2pzX25hdmlnYXRv
ci5sdXQuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBh
dGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNc
TWF0aE1MRWxlbWVudEZhY3RvcnkuY3BwIg0KLQkJCQk+DQorCQkJPEZpbGU+DQogCQkJPC9GaWxl
Pg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwk
KFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xNYXRoTUxFbGVtZW50RmFjdG9yeS5oIg0KKwkJ
CQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVy
aXZlZFNvdXJjZXNcUmVtb3RlSW5zcGVjdG9yRnJvbnRlbmQyLmgiDQogCQkJCT4NCiAJCQk8L0Zp
bGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2Jq
XCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXE1hdGhNTE5hbWVzLmNwcCINCi0JCQkJPg0K
LQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0
RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcTWF0aE1MTmFtZXMuaCINCi0J
CQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0
T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcU1ZHRWxlbWVudEZh
Y3RvcnkuY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KQEAgLTIwNzUyLDIzICsyMDc0MiwxMiBA
QAogCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1l
KVxEZXJpdmVkU291cmNlc1xTVkdOYW1lcy5jcHAiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQotCQkJ
PEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVj
dE5hbWUpXERlcml2ZWRTb3VyY2VzXFNWR05hbWVzLmgiDQotCQkJCT4NCisJCQk8RmlsZT4NCiAJ
CQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERp
cilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXFVzZXJBZ2VudFN0eWxlU2hlZXRz
LmgiDQotCQkJCT4NCisJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQo
UHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXFJlbW90ZUluc3BlY3RvckZyb250ZW5kLmgiCQkJ
Pg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0
cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcUmVtb3RlSW5zcGVjdG9y
RnJvbnRlbmQuY3BwIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0
aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291
cmNlc1xSZW1vdGVJbnNwZWN0b3JGcm9udGVuZC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJ
CTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2pl
Y3ROYW1lKVxEZXJpdmVkU291cmNlc1xXTUxFbGVtZW50RmFjdG9yeS5jcHAiDQogCQkJCT4NCiAJ
CQkJPEZpbGVDb25maWd1cmF0aW9uDQpAQCAtMjIzOTcsMTkgKzIyMzc2LDE5IEBACiAJCQkJPg0K
IAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcUGVyZm9y
bWFuY2UuY3BwIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcUGFnZUdyb3VwTG9hZERlZmVy
cmVyLmNwcCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXHBhZ2VcUGVyZm9ybWFuY2UuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwYWdlXFBh
Z2VHcm91cExvYWREZWZlcnJlci5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQot
CQkJCVJlbGF0aXZlUGF0aD0iLi5ccGFnZVxQYWdlR3JvdXBMb2FkRGVmZXJyZXIuY3BwIg0KKwkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcUGVyZm9ybWFuY2UuY3BwIg0KIAkJCQk+DQogCQkJPC9G
aWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGFnZVxQYWdlR3JvdXBMb2Fk
RGVmZXJyZXIuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwYWdlXFBlcmZvcm1hbmNlLmgiDQog
CQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCkBAIC0zMjQwMSw2ICszMjM4MCwxNCBAQAog
CQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21c
RGF0YXNldERPTVN0cmluZ01hcC5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUN
CisJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cRGF0YXNldERPTVN0cmluZ01hcC5oIg0KKwkJCQk+
DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXERlY29k
ZWREYXRhRG9jdW1lbnRQYXJzZXIuY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KQEAgLTMyNDM3
LDE0ICszMjQyNCw2IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXGRvbVxEYXRhc2V0RE9NU3RyaW5nTWFwLmNwcCINCi0JCQkJPg0KLQkJCTwv
RmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxEYXRhc2V0RE9NU3Ry
aW5nTWFwLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxkb21cRG9jdW1lbnQuY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KQEAgLTM2NzI5
LDYgKzM2NzA4LDE0IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXGh0bWxcSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwIg0KKwkJCQk+DQorCQkJ
PC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxIVE1MQ29uc3Ry
dWN0aW9uU2l0ZS5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0
aXZlUGF0aD0iLi5caHRtbFxIVE1MRGF0YUdyaWRDZWxsRWxlbWVudC5jcHAiDQogCQkJCT4NCiAJ
CQkJPEZpbGVDb25maWd1cmF0aW9uDQpAQCAtMzcyNDksMTUgKzM3MjM2LDE1IEBACiAJCQkJPg0K
IAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcSFRNTEVs
ZW1lbnRTdGFjay5jcHAiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxIVE1MRWxlbWVudHNB
bGxJbk9uZS5jcHAiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRp
dmVQYXRoPSIuLlxodG1sXEhUTUxFbGVtZW50U3RhY2suaCINCisJCQkJUmVsYXRpdmVQYXRoPSIu
LlxodG1sXEhUTUxFbGVtZW50U3RhY2suY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxG
aWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxIVE1MRWxlbWVudHNBbGxJbk9uZS5jcHAi
DQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxIVE1MRWxlbWVudFN0YWNrLmgiDQogCQkJCT4N
CiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCkBAIC00MDQwMSwxNCArNDAzODgsNiBAQAogCQkJCT4N
CiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXEhUTUxD
b25zdHJ1Y3Rpb25TaXRlLmNwcCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcSFRNTENvbnN0cnVjdGlvblNpdGUuaCINCi0JCQkJPg0K
LQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcSFRNTFVM
aXN0RWxlbWVudC5jcHAiDQogCQkJCT4NCiAJCQkJPEZpbGVDb25maWd1cmF0aW9uDQpAQCAtNDIz
OTIsNyArNDIzNzEsNyBAQAogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNET01TdHJpbmdNYXBDdXN0b20uY3BwIg0K
KwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU0RPTU1pbWVUeXBlQXJyYXlDdXN0
b20uY3BwIg0KIAkJCQkJPg0KIAkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQogCQkJCQkJTmFtZT0i
RGVidWd8V2luMzIiDQpAQCAtNDI0NDQsMTIgKzQyNDIzLDggQEAKIAkJCQkJPC9GaWxlQ29uZmln
dXJhdGlvbj4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIu
LlxiaW5kaW5nc1xqc1xKU0RPTVN0cmluZ01hcEN1c3RvbS5oIg0KKwkJCQkJUmVsYXRpdmVQYXRo
PSIuLlxiaW5kaW5nc1xqc1xKU0RPTVBsdWdpbkFycmF5Q3VzdG9tLmNwcCINCiAJCQkJCT4NCi0J
CQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xq
c1xKU0RPTVdpbmRvd0Jhc2UuY3BwIg0KLQkJCQkJPg0KIAkJCQkJPEZpbGVDb25maWd1cmF0aW9u
DQogCQkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQogCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRy
dWUiDQpAQCAtNDI1MDAsMTIgKzQyNDc1LDggQEAKIAkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4N
CiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5n
c1xqc1xKU0RPTVdpbmRvd0Jhc2UuaCINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3Nc
anNcSlNET01QbHVnaW5DdXN0b20uY3BwIg0KIAkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxG
aWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTRE9NV2luZG93Q3VzdG9t
LmNwcCINCi0JCQkJCT4NCiAJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KIAkJCQkJCU5hbWU9IkRl
YnVnfFdpbjMyIg0KIAkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KQEAgLTQyNTU2LDEy
ICs0MjUyNyw4IEBACiAJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQogCQkJCTwvRmlsZT4NCiAJ
CQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNET01XaW5kb3dD
dXN0b20uaCINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNET01TdHJpbmdN
YXBDdXN0b20uY3BwIg0KIAkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTRE9NV2luZG93U2hlbGwuY3BwIg0KLQkJCQkJ
Pg0KIAkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQogCQkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQog
CQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQpAQCAtNDI2MTIsMTEgKzQyNTc5LDExIEBA
CiAJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0J
CQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNET01XaW5kb3dTaGVsbC5oIg0KKwkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU0RPTVN0cmluZ01hcEN1c3RvbS5oIg0K
IAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XGJpbmRpbmdzXGpzXEpTRE9NV3JhcHBlci5jcHAiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJp
bmRpbmdzXGpzXEpTRE9NV2luZG93QmFzZS5jcHAiDQogCQkJCQk+DQogCQkJCQk8RmlsZUNvbmZp
Z3VyYXRpb24NCiAJCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCkBAIC00MjY2OCwxMSArNDI2MzUs
MTEgQEAKIAkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8Rmls
ZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU0RPTVdyYXBwZXIuaCINCisJ
CQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNET01XaW5kb3dCYXNlLmgiDQogCQkJ
CQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmlu
ZGluZ3NcanNcSlNFbGVtZW50Q3VzdG9tLmNwcCINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmlu
ZGluZ3NcanNcSlNET01XaW5kb3dDdXN0b20uY3BwIg0KIAkJCQkJPg0KIAkJCQkJPEZpbGVDb25m
aWd1cmF0aW9uDQogCQkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQpAQCAtNDI3MjQsNiArNDI2OTEs
NyBAQAogCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxl
DQorDQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTRGV2aWNlT3JpZW50YXRp
b25FdmVudEN1c3RvbS5jcHAiDQogCQkJCQk+DQogCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCkBA
IC00Mjc3Niw3ICs0Mjc0NCw3IEBACiAJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQogCQkJCTwv
RmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNF
dmVudEN1c3RvbS5jcHAiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTRXZl
bnRDdXN0b20uY3BwIgkNCiAJCQkJCT4NCiAJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KIAkJCQkJ
CU5hbWU9IkRlYnVnfFdpbjMyIg0KQEAgLTQyODI4LDggKzQyNzk2LDEyIEBACiAJCQkJCTwvRmls
ZUNvbmZpZ3VyYXRpb24+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZl
UGF0aD0iLi5cYmluZGluZ3NcanNcSlNFdmVudExpc3RlbmVyLmNwcCINCisJCQkJCVJlbGF0aXZl
UGF0aD0iLi5cYmluZGluZ3NcanNcSlNET01XaW5kb3dTaGVsbC5oIg0KIAkJCQkJPg0KKwkJCQk8
L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpT
RE9NV3JhcHBlci5jcHAiDQorCQkJCQk+DQogCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCiAJCQkJ
CQlOYW1lPSJEZWJ1Z3xXaW4zMiINCiAJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCkBA
IC00Mjg4MCwxMSArNDI4NTIsMTEgQEAKIAkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCiAJCQkJ
PC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xK
U0V2ZW50TGlzdGVuZXIuaCINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNE
T01XcmFwcGVyLmgiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJl
bGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNFdmVudFNvdXJjZUN1c3RvbS5jcHAiDQorCQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTRWxlbWVudEN1c3RvbS5jcHAiDQogCQkJ
CQk+DQogCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCiAJCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIN
CkBAIC00MjkzNiw3ICs0MjkwOCw3IEBACiAJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQogCQkJ
CTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNc
SlNFdmVudFRhcmdldC5jcHAiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpT
RXZlbnRDdXN0b20uY3BwIg0KIAkJCQkJPg0KIAkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQogCQkJ
CQkJTmFtZT0iRGVidWd8V2luMzIiDQpAQCAtNDI5ODgsMTIgKzQyOTYwLDggQEAKIAkJCQkJPC9G
aWxlQ29uZmlndXJhdGlvbj4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRp
dmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU0V2ZW50VGFyZ2V0LmgiDQorCQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGJpbmRpbmdzXGpzXEpTRXZlbnRMaXN0ZW5lci5jcHAiDQogCQkJCQk+DQotCQkJCTwv
RmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNF
eGNlcHRpb25CYXNlLmNwcCINCi0JCQkJCT4NCiAJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KIAkJ
CQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KIAkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0K
QEAgLTQzMDQ0LDExICs0MzAxMiwxMSBAQAogCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KIAkJ
CQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpz
XEpTRXhjZXB0aW9uQmFzZS5oIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xK
U0V2ZW50TGlzdGVuZXIuaCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcCIN
CisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNFdmVudFNvdXJjZUN1c3RvbS5j
cHAiDQogCQkJCQk+DQogCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCiAJCQkJCQlOYW1lPSJEZWJ1
Z3xXaW4zMiINCkBAIC00MzEwMCw3ICs0MzA2OCw3IEBACiAJCQkJCTwvRmlsZUNvbmZpZ3VyYXRp
b24+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmlu
ZGluZ3NcanNcSlNIaXN0b3J5Q3VzdG9tLmNwcCINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmlu
ZGluZ3NcanNcSlNFdmVudFRhcmdldC5jcHAiDQogCQkJCQk+DQogCQkJCQk8RmlsZUNvbmZpZ3Vy
YXRpb24NCiAJCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCkBAIC00MzE1Miw4ICs0MzEyMCwxMiBA
QAogCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQot
CQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTSFRNTEFsbENvbGxlY3Rpb25DdXN0
b20uY3BwIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU0V2ZW50VGFyZ2V0
LmgiDQogCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0
aD0iLi5cYmluZGluZ3NcanNcSlNFeGNlcHRpb25CYXNlLmNwcCINCisJCQkJCT4NCiAJCQkJCTxG
aWxlQ29uZmlndXJhdGlvbg0KIAkJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KIAkJCQkJCUV4Y2x1
ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KQEAgLTQzMjA0LDggKzQzMTc2LDEyIEBACiAJCQkJCTwvRmls
ZUNvbmZpZ3VyYXRpb24+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZl
UGF0aD0iLi5cYmluZGluZ3NcanNcSlNIVE1MQXBwbGV0RWxlbWVudEN1c3RvbS5jcHAiDQorCQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTRXhjZXB0aW9uQmFzZS5oIg0KIAkJCQkJ
Pg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRp
bmdzXGpzXEpTR2VvbG9jYXRpb25DdXN0b20uY3BwIg0KKwkJCQkJPg0KIAkJCQkJPEZpbGVDb25m
aWd1cmF0aW9uDQogCQkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQogCQkJCQkJRXhjbHVkZWRGcm9t
QnVpbGQ9InRydWUiDQpAQCAtNDMyNTYsNyArNDMyMzIsNyBAQAogCQkJCQk8L0ZpbGVDb25maWd1
cmF0aW9uPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XGJpbmRpbmdzXGpzXEpTSFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwIg0KKwkJCQkJUmVsYXRp
dmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU0hpc3RvcnlDdXN0b20uY3BwIg0KIAkJCQkJPg0KIAkJ
CQkJPEZpbGVDb25maWd1cmF0aW9uDQogCQkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQpAQCAtNDMz
MDgsNyArNDMyODQsNyBAQAogCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KIAkJCQk8L0ZpbGU+
DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTSFRNTENv
bGxlY3Rpb25DdXN0b20uY3BwIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xK
U0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcCINCiAJCQkJCT4NCiAJCQkJCTxGaWxlQ29uZmln
dXJhdGlvbg0KIAkJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KQEAgLTQzMzYwLDcgKzQzMzM2LDcg
QEAKIAkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0K
LQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU0hUTUxEYXRhR3JpZEVsZW1lbnRD
dXN0b20uY3BwIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU0hUTUxBcHBs
ZXRFbGVtZW50Q3VzdG9tLmNwcCINCiAJCQkJCT4NCiAJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0K
IAkJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KQEAgLTQzNDEyLDcgKzQzMzg4LDcgQEAKIAkJCQkJ
PC9GaWxlQ29uZmlndXJhdGlvbj4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVs
YXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAiDQorCQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTSFRNTENhbnZhc0VsZW1lbnRDdXN0b20u
Y3BwIg0KIAkJCQkJPg0KIAkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQogCQkJCQkJTmFtZT0iRGVi
dWd8V2luMzIiDQpAQCAtNDM0NjQsNyArNDM0NDAsNyBAQAogCQkJCQk8L0ZpbGVDb25maWd1cmF0
aW9uPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJp
bmRpbmdzXGpzXEpTSFRNTEVsZW1lbnRDdXN0b20uY3BwIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIu
LlxiaW5kaW5nc1xqc1xKU0hUTUxDb2xsZWN0aW9uQ3VzdG9tLmNwcCINCiAJCQkJCT4NCiAJCQkJ
CTxGaWxlQ29uZmlndXJhdGlvbg0KIAkJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KQEAgLTQzNTE2
LDcgKzQzNDkyLDcgQEAKIAkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCiAJCQkJPC9GaWxlPg0K
IAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU0hUTUxFbWJl
ZEVsZW1lbnRDdXN0b20uY3BwIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xK
U0hUTUxEYXRhR3JpZEVsZW1lbnRDdXN0b20uY3BwIg0KIAkJCQkJPg0KIAkJCQkJPEZpbGVDb25m
aWd1cmF0aW9uDQogCQkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQpAQCAtNDM1NjgsNyArNDM1NDQs
NyBAQAogCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxl
DQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTSFRNTEZvcm1FbGVtZW50Q3Vz
dG9tLmNwcCINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNIVE1MRG9jdW1l
bnRDdXN0b20uY3BwIg0KIAkJCQkJPg0KIAkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQogCQkJCQkJ
TmFtZT0iRGVidWd8V2luMzIiDQpAQCAtNDM2MjAsNyArNDM1OTYsNyBAQAogCQkJCQk8L0ZpbGVD
b25maWd1cmF0aW9uPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGJpbmRpbmdzXGpzXEpTSFRNTEZyYW1lRWxlbWVudEN1c3RvbS5jcHAiDQorCQkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTSFRNTEVsZW1lbnRDdXN0b20uY3BwIg0KIAkJ
CQkJPg0KIAkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQogCQkJCQkJTmFtZT0iRGVidWd8V2luMzIi
DQpAQCAtNDM2NzIsNyArNDM2NDgsNyBAQAogCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KIAkJ
CQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpz
XEpTSFRNTEZyYW1lU2V0RWxlbWVudEN1c3RvbS5jcHAiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XGJpbmRpbmdzXGpzXEpTSFRNTEVtYmVkRWxlbWVudEN1c3RvbS5jcHAiDQogCQkJCQk+DQogCQkJ
CQk8RmlsZUNvbmZpZ3VyYXRpb24NCiAJCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCkBAIC00Mzcy
NCw3ICs0MzcwMCw3IEBACiAJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQogCQkJCTwvRmlsZT4N
CiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNIVE1MSW5w
dXRFbGVtZW50Q3VzdG9tLmNwcCINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNc
SlNIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwIg0KIAkJCQkJPg0KIAkJCQkJPEZpbGVDb25maWd1
cmF0aW9uDQogCQkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQpAQCAtNDM3NzYsMTIgKzQzNzUyLDgg
QEAKIAkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0K
LQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU0hUTUxJbnB1dEVsZW1lbnRDdXN0
b20uaCINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNIVE1MRnJhbWVFbGVt
ZW50Q3VzdG9tLmNwcCINCiAJCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU0hUTUxPYmplY3RFbGVtZW50Q3VzdG9tLmNw
cCINCi0JCQkJCT4NCiAJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KIAkJCQkJCU5hbWU9IkRlYnVn
fFdpbjMyIg0KIAkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KQEAgLTQzODMyLDcgKzQz
ODA0LDcgQEAKIAkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8
RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU0hUTUxPcHRpb25zQ29s
bGVjdGlvbkN1c3RvbS5jcHAiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpT
SFRNTEZyYW1lU2V0RWxlbWVudEN1c3RvbS5jcHAiDQogCQkJCQk+DQogCQkJCQk8RmlsZUNvbmZp
Z3VyYXRpb24NCiAJCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCkBAIC00Mzg4NCw3ICs0Mzg1Niw3
IEBACiAJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUN
Ci0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNIVE1MU2VsZWN0RWxlbWVudEN1
c3RvbS5jcHAiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTSFRNTElucHV0
RWxlbWVudEN1c3RvbS5jcHAiDQogCQkJCQk+DQogCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCiAJ
CQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCkBAIC00MzkzNiwxMSArNDM5MDgsMTEgQEAKIAkJCQkJ
PC9GaWxlQ29uZmlndXJhdGlvbj4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVs
YXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU0hUTUxTZWxlY3RFbGVtZW50Q3VzdG9tLmgiDQor
CQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTSFRNTElucHV0RWxlbWVudEN1c3Rv
bS5oIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBh
dGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNc
SlNJREJBbnkuY3BwIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU0hUTUxP
YmplY3RFbGVtZW50Q3VzdG9tLmNwcCINCiAJCQkJCT4NCiAJCQkJCTxGaWxlQ29uZmlndXJhdGlv
bg0KIAkJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KQEAgLTQzOTkyLDEyICs0Mzk2NCw4IEBACiAJ
CQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJ
CVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJp
dmVkU291cmNlc1xKU0lEQkFueS5oIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xq
c1xKU0hUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAiDQogCQkJCQk+DQotCQkJCTwvRmls
ZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNJREJB
bnlDdXN0b20uY3BwIg0KLQkJCQkJPg0KIAkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQogCQkJCQkJ
TmFtZT0iRGVidWd8V2luMzIiDQogCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQpAQCAt
NDQwNDgsNyArNDQwMTYsNiBAQAogCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KIAkJCQk8L0Zp
bGU+DQogCQkJCTxGaWxlDQotCQkJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilc
b2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTSURCS2V5LmNwcCINCiAJCQkJCQk+
DQogCQkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQogCQkJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0K
QEAgLTQ0MjY0LDExICs0NDIzMSwxMSBAQAogCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KIAkJ
CQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0
RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNJREJEYXRhYmFzZS5oIg0K
KwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU0hUTUxTZWxlY3RFbGVtZW50Q3Vz
dG9tLmgiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZl
UGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNl
c1xKU0lEQkRhdGFiYXNlRXJyb3IuY3BwIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91
dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTSURCQW55LmNwcCIN
CiAJCQkJCT4NCiAJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KIAkJCQkJCU5hbWU9IkRlYnVnfFdp
bjMyIg0KQEAgLTQ0MzIwLDExICs0NDI4NywxMSBAQAogCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9u
Pg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0
T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNJREJEYXRhYmFz
ZUVycm9yLmgiDQorCQkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQ
cm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNJREJBbnkuaCINCiAJCQkJCT4NCiAJCQkJPC9G
aWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilc
b2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTSURCRGF0YWJhc2VFeGNlcHRpb24u
Y3BwIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU0lEQkFueUN1c3RvbS5j
cHAiDQogCQkJCQk+DQogCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCiAJCQkJCQlOYW1lPSJEZWJ1
Z3xXaW4zMiINCkBAIC00NDM3NiwxMiArNDQzNDMsOCBAQAogCQkJCQk8L0ZpbGVDb25maWd1cmF0
aW9uPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9IiQoV2Vi
S2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNJREJEYXRh
YmFzZUV4Y2VwdGlvbi5oIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilc
b2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTSURCRGF0YWJhc2UuY3BwIg0KIAkJ
CQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9IiQoV2Vi
S2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNJREJEYXRh
YmFzZVJlcXVlc3QuY3BwIg0KLQkJCQkJPg0KIAkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQogCQkJ
CQkJTmFtZT0iRGVidWd8V2luMzIiDQogCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQpA
QCAtNDQ0MzIsMTEgKzQ0Mzk1LDExIEBACiAJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQogCQkJ
CTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXRE
aXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0lEQkRhdGFiYXNlUmVxdWVz
dC5oIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVj
dE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTSURCRGF0YWJhc2UuaCINCiAJCQkJCT4NCiAJCQkJPC9G
aWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilc
b2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTSURCRXJyb3JFdmVudC5jcHAiDQor
CQkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlc
RGVyaXZlZFNvdXJjZXNcSlNJREJEYXRhYmFzZUVycm9yLmNwcCINCiAJCQkJCT4NCiAJCQkJCTxG
aWxlQ29uZmlndXJhdGlvbg0KIAkJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KQEAgLTQ0NDg4LDE2
ICs0NDQ1MSwxMiBAQAogCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KIAkJCQk8L0ZpbGU+DQog
CQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQ
cm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNJREJFcnJvckV2ZW50LmgiDQorCQkJCQlSZWxh
dGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNv
dXJjZXNcSlNJREJEYXRhYmFzZUVycm9yLmgiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJ
PEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2pl
Y3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0lEQkV2ZW50LmgiDQorCQkJCQlSZWxhdGl2ZVBhdGg9
IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNJ
REJEYXRhYmFzZUV4Y2VwdGlvbi5jcHAiDQogCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZp
bGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3RO
YW1lKVxEZXJpdmVkU291cmNlc1xKU0lEQkluZGV4UmVxdWVzdC5jcHAiDQotCQkJCQk+DQogCQkJ
CQk8RmlsZUNvbmZpZ3VyYXRpb24NCiAJCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCiAJCQkJCQlF
eGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCkBAIC00NDU0OCwxMSArNDQ1MDcsMTEgQEAKIAkJCQkJ
PC9GaWxlQ29uZmlndXJhdGlvbj4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVs
YXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRT
b3VyY2VzXEpTSURCSW5kZXhSZXF1ZXN0LmgiDQorCQkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0
T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNJREJEYXRhYmFz
ZUV4Y2VwdGlvbi5oIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlS
ZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZl
ZFNvdXJjZXNcSlNJREJLZXlSYW5nZS5jcHAiDQorCQkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0
T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNJREJEYXRhYmFz
ZVJlcXVlc3QuY3BwIg0KIAkJCQkJPg0KIAkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQogCQkJCQkJ
TmFtZT0iRGVidWd8V2luMzIiDQpAQCAtNDQ2MDQsMTEgKzQ0NTYzLDExIEBACiAJCQkJCTwvRmls
ZUNvbmZpZ3VyYXRpb24+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZl
UGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNl
c1xKU0lEQktleVJhbmdlLmgiDQorCQkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGly
KVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNJREJEYXRhYmFzZVJlcXVlc3Qu
aCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRo
PSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpT
SURCT2JqZWN0U3RvcmVSZXF1ZXN0LmNwcCINCisJCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRP
dXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0lEQkVycm9yRXZl
bnQuY3BwIg0KIAkJCQkJPg0KIAkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQogCQkJCQkJTmFtZT0i
RGVidWd8V2luMzIiDQpAQCAtNDQ2NjAsOCArNDQ2MTksMTYgQEAKIAkJCQkJPC9GaWxlQ29uZmln
dXJhdGlvbj4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIk
KFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTSURC
T2JqZWN0U3RvcmVSZXF1ZXN0LmNwcCINCisJCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRw
dXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0lEQkVycm9yRXZlbnQu
aCINCiAJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRo
PSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpT
SURCRXZlbnQuaCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVs
YXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRT
b3VyY2VzXEpTSURCSW5kZXhSZXF1ZXN0LmNwcCINCisJCQkJCT4NCiAJCQkJCTxGaWxlQ29uZmln
dXJhdGlvbg0KIAkJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KIAkJCQkJCUV4Y2x1ZGVkRnJvbUJ1
aWxkPSJ0cnVlIg0KQEAgLTQ0NzEyLDExICs0NDY3OSwxMSBAQAogCQkJCQk8L0ZpbGVDb25maWd1
cmF0aW9uPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9IiQo
V2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNJREJP
YmplY3RTdG9yZVJlcXVlc3QuaCINCisJCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXRE
aXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0lEQkluZGV4UmVxdWVzdC5o
Ig0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9
IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNJ
REJSZXF1ZXN0LmNwcCINCisJCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9i
alwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0lEQktleVJhbmdlLmNwcCINCiAJCQkJ
CT4NCiAJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KIAkJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0K
QEAgLTQ0NzY4LDExICs0NDczNSwxMSBAQAogCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KIAkJ
CQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0
RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNJREJSZXF1ZXN0LmgiDQor
CQkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlc
RGVyaXZlZFNvdXJjZXNcSlNJREJLZXlSYW5nZS5oIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQog
CQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQ
cm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNJREJTdWNjZXNzRXZlbnQuY3BwIg0KKwkJCQkJ
UmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2
ZWRTb3VyY2VzXEpTSURCT2JqZWN0U3RvcmVSZXF1ZXN0LmNwcCINCiAJCQkJCT4NCiAJCQkJCTxG
aWxlQ29uZmlndXJhdGlvbg0KIAkJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KQEAgLTQ0ODI0LDEy
ICs0NDc5MSw4IEBACiAJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQogCQkJCTwvRmlsZT4NCiAJ
CQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFBy
b2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0lEQlN1Y2Nlc3NFdmVudC5oIg0KKwkJCQkJUmVs
YXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRT
b3VyY2VzXEpTSURCT2JqZWN0U3RvcmVSZXF1ZXN0LmNwcCINCiAJCQkJCT4NCi0JCQkJPC9GaWxl
Pg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU0ltYWdl
Q29uc3RydWN0b3IuY3BwIg0KLQkJCQkJPg0KIAkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQogCQkJ
CQkJTmFtZT0iRGVidWd8V2luMzIiDQogCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQpA
QCAtNDQ4ODAsMTEgKzQ0ODQzLDExIEBACiAJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQogCQkJ
CTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNc
SlNJbWFnZUNvbnN0cnVjdG9yLmgiDQorCQkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0
RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNJREJPYmplY3RTdG9yZVJl
cXVlc3QuaCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRp
dmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU0ltYWdlRGF0YUN1c3RvbS5jcHAiDQorCQkJCQlSZWxh
dGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNv
dXJjZXNcSlNJREJSZXF1ZXN0LmNwcCINCiAJCQkJCT4NCiAJCQkJCTxGaWxlQ29uZmlndXJhdGlv
bg0KIAkJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KQEAgLTQ0OTM2LDggKzQ0ODk5LDEyIEBACiAJ
CQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJ
CVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJp
dmVkU291cmNlc1xKU0luZGV4ZWREYXRhYmFzZXJlcXVlc3QuY3BwIg0KKwkJCQkJUmVsYXRpdmVQ
YXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2Vz
XEpTSURCUmVxdWVzdC5oIg0KIAkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJ
CQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVy
aXZlZFNvdXJjZXNcSlNJREJTdWNjZXNzRXZlbnQuY3BwIg0KKwkJCQkJPg0KIAkJCQkJPEZpbGVD
b25maWd1cmF0aW9uDQogCQkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQogCQkJCQkJRXhjbHVkZWRG
cm9tQnVpbGQ9InRydWUiDQpAQCAtNDQ5ODgsMTEgKzQ0OTU1LDExIEBACiAJCQkJCTwvRmlsZUNv
bmZpZ3VyYXRpb24+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0
aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xK
U0luZGV4ZWREYXRhYmFzZVJlcXVlc3QuaCINCisJCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRP
dXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0lEQlN1Y2Nlc3NF
dmVudC5oIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcCINCisJ
CQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNJbWFnZUNvbnN0cnVjdG9yLmNwcCIN
CiAJCQkJCT4NCiAJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KIAkJCQkJCU5hbWU9IkRlYnVnfFdp
bjMyIg0KQEAgLTQ1MDQ0LDggKzQ1MDExLDEyIEBACiAJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+
DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGlu
Z3NcanNcSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwIg0KKwkJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxiaW5kaW5nc1xqc1xKU0ltYWdlQ29uc3RydWN0b3IuaCINCiAJCQkJCT4NCisJCQkJ
PC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xK
U0ltYWdlRGF0YUN1c3RvbS5jcHAiDQorCQkJCQk+DQogCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24N
CiAJCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCiAJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1
ZSINCkBAIC00NTA5Niw3ICs0NTA2Nyw3IEBACiAJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQog
CQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3Nc
anNcSlNKYXZhU2NyaXB0Q2FsbEZyYW1lQ3VzdG9tLmNwcCINCisJCQkJCVJlbGF0aXZlUGF0aD0i
JChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0lu
ZGV4ZWREYXRhYmFzZXJlcXVlc3QuY3BwIg0KIAkJCQkJPg0KIAkJCQkJPEZpbGVDb25maWd1cmF0
aW9uDQogCQkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQpAQCAtNDUxNDgsOCArNDUxMTksMTIgQEAK
IAkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU0xhenlFdmVudExpc3RlbmVyLmNwcCIN
CisJCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1l
KVxEZXJpdmVkU291cmNlc1xKU0luZGV4ZWREYXRhYmFzZVJlcXVlc3QuaCINCiAJCQkJCT4NCisJ
CQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xq
c1xKU0luamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAiDQorCQkJCQk+DQogCQkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24NCiAJCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCiAJCQkJCQlFeGNsdWRlZEZy
b21CdWlsZD0idHJ1ZSINCkBAIC00NTIwMCwxMiArNDUxNzUsOCBAQAogCQkJCQk8L0ZpbGVDb25m
aWd1cmF0aW9uPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXGJpbmRpbmdzXGpzXEpTTGF6eUV2ZW50TGlzdGVuZXIuaCINCisJCQkJCVJlbGF0aXZlUGF0
aD0iLi5cYmluZGluZ3NcanNcSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwIg0KIAkJ
CQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJp
bmRpbmdzXGpzXEpTTG9jYXRpb25DdXN0b20uY3BwIg0KLQkJCQkJPg0KIAkJCQkJPEZpbGVDb25m
aWd1cmF0aW9uDQogCQkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQogCQkJCQkJRXhjbHVkZWRGcm9t
QnVpbGQ9InRydWUiDQpAQCAtNDUyNTYsNyArNDUyMjcsNyBAQAogCQkJCQk8L0ZpbGVDb25maWd1
cmF0aW9uPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XGJpbmRpbmdzXGpzXEpTTWFpblRocmVhZEV4ZWNTdGF0ZS5jcHAiDQorCQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGJpbmRpbmdzXGpzXEpTSmF2YVNjcmlwdENhbGxGcmFtZUN1c3RvbS5jcHAiDQogCQkJ
CQk+DQogCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCiAJCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIN
CkBAIC00NTMwOCwxMiArNDUyNzksOCBAQAogCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KIAkJ
CQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpz
XEpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5n
c1xqc1xKU0xhenlFdmVudExpc3RlbmVyLmNwcCINCiAJCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJ
CQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU01lc3NhZ2VDaGFu
bmVsQ3VzdG9tLmNwcCINCi0JCQkJCT4NCiAJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KIAkJCQkJ
CU5hbWU9IkRlYnVnfFdpbjMyIg0KIAkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KQEAg
LTQ1MzY0LDggKzQ1MzMxLDEyIEBACiAJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQogCQkJCTwv
RmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNN
ZXNzYWdlRXZlbnRDdXN0b20uY3BwIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xq
c1xKU0xhenlFdmVudExpc3RlbmVyLmgiDQogCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZp
bGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNMb2NhdGlvbkN1c3RvbS5j
cHAiDQorCQkJCQk+DQogCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCiAJCQkJCQlOYW1lPSJEZWJ1
Z3xXaW4zMiINCiAJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCkBAIC00NTQxNiw3ICs0
NTM4Nyw3IEBACiAJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQogCQkJCTwvRmlsZT4NCiAJCQkJ
PEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNNZXNzYWdlUG9ydEN1
c3RvbS5jcHAiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTTWFpblRocmVh
ZEV4ZWNTdGF0ZS5jcHAiDQogCQkJCQk+DQogCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCiAJCQkJ
CQlOYW1lPSJEZWJ1Z3xXaW4zMiINCkBAIC00NTQ2OCwxMSArNDU0MzksMTEgQEAKIAkJCQkJPC9G
aWxlQ29uZmlndXJhdGlvbj4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRp
dmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU01lc3NhZ2VQb3J0Q3VzdG9tLmgiDQorCQkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIg0KIAkJCQkJ
Pg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRp
bmdzXGpzXEpTRE9NTWltZVR5cGVBcnJheUN1c3RvbS5jcHAiDQorCQkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXGJpbmRpbmdzXGpzXEpTTWVzc2FnZUNoYW5uZWxDdXN0b20uY3BwIg0KIAkJCQkJPg0KIAkJ
CQkJPEZpbGVDb25maWd1cmF0aW9uDQogCQkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQpAQCAtNDU1
MjQsNyArNDU0OTUsNyBAQAogCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KIAkJCQk8L0ZpbGU+
DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTTmFtZWRO
b2RlTWFwQ3VzdG9tLmNwcCINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNN
ZXNzYWdlRXZlbnRDdXN0b20uY3BwIg0KIAkJCQkJPg0KIAkJCQkJPEZpbGVDb25maWd1cmF0aW9u
DQogCQkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQpAQCAtNDU1NzYsNyArNDU1NDcsNyBAQAogCQkJ
CQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTTmF2aWdhdG9yQ3VzdG9tLmNwcCINCisJCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHAiDQog
CQkJCQk+DQogCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCiAJCQkJCQlOYW1lPSJEZWJ1Z3xXaW4z
MiINCkBAIC00NTYyOCw4ICs0NTU5OSwxMiBAQAogCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0K
IAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdz
XGpzXEpTTm9kZUN1c3RvbS5jcHAiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpz
XEpTTWVzc2FnZVBvcnRDdXN0b20uaCINCiAJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8Rmls
ZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU05hbWVkTm9kZU1hcEN1c3Rv
bS5jcHAiDQorCQkJCQk+DQogCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCiAJCQkJCQlOYW1lPSJE
ZWJ1Z3xXaW4zMiINCiAJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCkBAIC00NTY4MCwx
MiArNDU2NTUsOCBAQAogCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KIAkJCQk8L0ZpbGU+DQog
CQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTTm9kZUN1c3Rv
bS5oIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU05hdmlnYXRvckN1c3Rv
bS5jcHAiDQogCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZl
UGF0aD0iLi5cYmluZGluZ3NcanNcSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmNwcCINCi0JCQkJCT4N
CiAJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KIAkJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KIAkJ
CQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KQEAgLTQ1NzM2LDEyICs0NTcwNyw4IEBACiAJ
CQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmgiDQor
CQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTTm9kZUN1c3RvbS5jcHAiDQogCQkJ
CQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmlu
ZGluZ3NcanNcSlNOb2RlRmlsdGVyQ3VzdG9tLmNwcCINCi0JCQkJCT4NCiAJCQkJCTxGaWxlQ29u
ZmlndXJhdGlvbg0KIAkJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KIAkJCQkJCUV4Y2x1ZGVkRnJv
bUJ1aWxkPSJ0cnVlIg0KQEAgLTQ1NzkyLDggKzQ1NzU5LDEyIEBACiAJCQkJCTwvRmlsZUNvbmZp
Z3VyYXRpb24+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0i
Li5cYmluZGluZ3NcanNcSlNOb2RlSXRlcmF0b3JDdXN0b20uY3BwIg0KKwkJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxiaW5kaW5nc1xqc1xKU05vZGVDdXN0b20uaCINCiAJCQkJCT4NCisJCQkJPC9GaWxl
Pg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU05vZGVG
aWx0ZXJDb25kaXRpb24uY3BwIg0KKwkJCQkJPg0KIAkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQog
CQkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQogCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUi
DQpAQCAtNDU4NDQsOCArNDU4MTUsMTIgQEAKIAkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCiAJ
CQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xq
c1xKU05vZGVMaXN0Q3VzdG9tLmNwcCINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3Nc
anNcSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmgiDQogCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJ
PEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNOb2RlRmlsdGVyQ3Vz
dG9tLmNwcCINCisJCQkJCT4NCiAJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KIAkJCQkJCU5hbWU9
IkRlYnVnfFdpbjMyIg0KIAkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KQEAgLTQ1ODk2
LDcgKzQ1ODcxLDcgQEAKIAkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCiAJCQkJPC9GaWxlPg0K
IAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU09wdGlvbkNv
bnN0cnVjdG9yLmNwcCINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNOb2Rl
SXRlcmF0b3JDdXN0b20uY3BwIg0KIAkJCQkJPg0KIAkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQog
CQkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQpAQCAtNDU5NDgsMTIgKzQ1OTIzLDggQEAKIAkJCQkJ
PC9GaWxlQ29uZmlndXJhdGlvbj4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVs
YXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU09wdGlvbkNvbnN0cnVjdG9yLmgiDQorCQkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTTm9kZUxpc3RDdXN0b20uY3BwIg0KIAkJCQkJ
Pg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRp
bmdzXGpzXEpTRE9NUGx1Z2luQXJyYXlDdXN0b20uY3BwIg0KLQkJCQkJPg0KIAkJCQkJPEZpbGVD
b25maWd1cmF0aW9uDQogCQkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQogCQkJCQkJRXhjbHVkZWRG
cm9tQnVpbGQ9InRydWUiDQpAQCAtNDYwMDQsNyArNDU5NzUsNyBAQAogCQkJCQk8L0ZpbGVDb25m
aWd1cmF0aW9uPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXGJpbmRpbmdzXGpzXEpTRE9NUGx1Z2luQ3VzdG9tLmNwcCINCisJCQkJCVJlbGF0aXZlUGF0
aD0iLi5cYmluZGluZ3NcanNcSlNPcHRpb25Db25zdHJ1Y3Rvci5jcHAiDQogCQkJCQk+DQogCQkJ
CQk8RmlsZUNvbmZpZ3VyYXRpb24NCiAJCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCkBAIC00NjA1
Niw2ICs0NjAyNywxMCBAQAogCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KIAkJCQk8L0ZpbGU+
DQogCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTT3B0aW9u
Q29uc3RydWN0b3IuaCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KIAkJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3Bw
Ig0KIAkJCQkJPg0KIAkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQpAQCAtNDgyMjEsMjcgKzQ4MTk2
LDI3IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXHBsdWdpbnNcbnBhcGkuY3BwIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsdWdpbnNcRE9N
UGx1Z2luLmNwcCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXHBsdWdpbnNcbnBmdW5jdGlvbnMuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxw
bHVnaW5zXERPTVBsdWdpbi5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJ
CVJlbGF0aXZlUGF0aD0iLi5ccGx1Z2luc1xET01QbHVnaW4uY3BwIg0KKwkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXHBsdWdpbnNcRE9NUGx1Z2luQXJyYXkuY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0K
IAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGx1Z2luc1xET01QbHVnaW4uaCINCisJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxwbHVnaW5zXERPTVBsdWdpbkFycmF5LmgiDQogCQkJCT4NCiAJ
CQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxwbHVnaW5zXERPTVBs
dWdpbkFycmF5LmNwcCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbHVnaW5zXG5wYXBpLmNwcCIN
CiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBs
dWdpbnNcRE9NUGx1Z2luQXJyYXkuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbHVnaW5zXG5w
ZnVuY3Rpb25zLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCkBAIC01MDIyMiwy
MiArNTAxOTcsNiBAQAogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQogCQk8RmlsdGVyDQotCQkJ
TmFtZT0ic3RyaW5ncyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKFdl
YktpdE91dHB1dERpcilcaW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlXEF0b21pY1N0cmlu
Zy5jcHAiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRo
PSIkKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlXFN0cmlu
Z0ltcGwuY3BwIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZl
UGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVccHJpdmF0ZVxKYXZhU2NyaXB0Q29yZVxX
VEZTdHJpbmcuY3BwIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCQk8Rmls
dGVyDQogCQkJTmFtZT0iYnJpZGdlIg0KIAkJCT4NCiAJCQk8RmlsZQ0KSW5kZXg6IFdlYkNvcmUv
cGxhdGZvcm0vZ3RrL2d0azJkcmF3aW5nLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvZ3RrMmRyYXdpbmcuYwkocmV2aXNpb24gNjM0NjEpCisrKyBXZWJDb3JlL3BsYXRmb3Jt
L2d0ay9ndGsyZHJhd2luZy5jCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5j
bHVkZSA8Z2RrL2dka3ByaXZhdGUuaD4KICNpbmNsdWRlICJndGtkcmF3aW5nLmgiCiAKKyNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBc3NlcnRpb25zLmgiCiAjaW5jbHVkZSAiR3RrVmVy
c2lvbmluZy5oIgogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2dnaW5nTWFjLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbWFjL0xvZ2dpbmdNYWMubW0JKHJldmlzaW9u
IDYzNDYxKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9nZ2luZ01hYy5tbQkod29ya2luZyBj
b3B5KQpAQCAtMjMsNiArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAorI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpJ
bmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93eC9Gb250UGxhdGZvcm1EYXRhV3guY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd3gvRm9udFBsYXRmb3Jt
RGF0YVd4LmNwcAkocmV2aXNpb24gNjM0NjEpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3d4L0ZvbnRQbGF0Zm9ybURhdGFXeC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxLDIzICs4MSwy
MyBAQAogLy8gdGhpcyBpcyBhIG1vb3QgaXNzdWUgb24gTGludXggYW5kIE1hYyBhcyB0aGV5IG9u
bHkgYWNjZXB0IHRoZSBwb2ludCBhcmd1bWVudC4gU28sCiAvLyB3ZSB1c2UgdGhlIHBpeGVsIHNp
emUgY29uc3RydWN0b3Igb24gV2luZG93cywgYnV0IHdlIHVzZSBwb2ludCBzaXplIG9uIExpbnV4
IGFuZCBNYWMuCiAjaWYgX19XWE1TV19fCi0gICAgbV9mb250ID0gbmV3IEZvbnRIb2xkZXIobmV3
IHd4Rm9udCggICB3eFNpemUoMCwgLWRlc2MuY29tcHV0ZWRQaXhlbFNpemUoKSksIAorICAgIG1f
Zm9udCA9IGFkb3B0UmVmKG5ldyBGb250SG9sZGVyKG5ldyB3eEZvbnQoICAgd3hTaXplKDAsIC1k
ZXNjLmNvbXB1dGVkUGl4ZWxTaXplKCkpLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZm9udEZhbWlseVRvV3hGb250RmFtaWx5KGRlc2MuZ2VuZXJpY0ZhbWlseSgpKSwgCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0YWxpY1RvV3hGb250U3R5bGUoZGVzYy5pdGFs
aWMoKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHRUb1d4Rm9u
dFdlaWdodChkZXNjLndlaWdodCgpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbWlseS5zdHJpbmcoKQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICAgICAgICAgICk7
IAorICAgICAgICAgICAgICAgICAgICAgICAgKSk7IAogI2Vsc2UKLSAgICBtX2ZvbnQgPSBuZXcg
Rm9udEhvbGRlcihuZXcgd3hGb250KCAgIGRlc2MuY29tcHV0ZWRQaXhlbFNpemUoKSwgCisgICAg
bV9mb250ID0gYWRvcHRSZWYobmV3IEZvbnRIb2xkZXIobmV3IHd4Rm9udCggICBkZXNjLmNvbXB1
dGVkUGl4ZWxTaXplKCksIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250RmFt
aWx5VG9XeEZvbnRGYW1pbHkoZGVzYy5nZW5lcmljRmFtaWx5KCkpLCAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaXRhbGljVG9XeEZvbnRTdHlsZShkZXNjLml0YWxpYygpKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFdlaWdodFRvV3hGb250V2VpZ2h0KGRl
c2Mud2VpZ2h0KCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFtaWx5LnN0cmluZygpCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAgICAgICAgICAgKTsgCisgICAgICAg
ICAgICAgICAgICAgICAgICApKTsgCiAjZW5kaWYKICNpZiBPUyhEQVJXSU4pICYmICFkZWZpbmVk
KHd4T1NYX1VTRV9DT1JFX1RFWFQpCiAjaWYgd3hDSEVDS19WRVJTSU9OKDIsOSwwKQpJbmRleDog
V2ViQ29yZS9wbGF0Zm9ybS93aW5jZS9TaGFyZWRUaW1lcldpbmNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BsYXRmb3JtL3dpbmNlL1NoYXJlZFRpbWVyV2luY2UuY3BwCShyZXZpc2lvbiA2
MzQ2MSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vd2luY2UvU2hhcmVkVGltZXJXaW5jZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlIDx3aW5kb3dzLmg+CiAKIG5h
bWVzcGFjZSBKU0MgewotSlNfRVhQT1JUREFUQSBleHRlcm4gdm9pZCogZ19zdGFja0Jhc2U7CitK
U19FWFBPUlRFRF9TWU1CT0wgZXh0ZXJuIHZvaWQqIGdfc3RhY2tCYXNlOwogfQogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXJyYXlCdWZmZXJWaWV3
Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXJyYXlCdWZm
ZXJWaWV3Q3VzdG9tLmNwcAkocmV2aXNpb24gNjM0NjEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQXJyYXlCdWZmZXJWaWV3Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcs
NiBAQAogCiAjaWYgRU5BQkxFKDNEX0NBTlZBUykKIAotI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIkpTQXJyYXlCdWZmZXJWaWV3LmgiCiAjaW5jbHVkZSAiSlNJbnQ4QXJyYXkuaCIKICNp
bmNsdWRlICJKU1VpbnQ4QXJyYXkuaCIKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvU1ZHRmlsdGVyQnVpbGRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oCShyZXZpc2lvbiA2MzQ2MSkKKysrIFdlYkNvcmUv
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yMCw4ICsyMCw2IEBACiAjaWZuZGVmIFNWR0ZpbHRlckJ1aWxkZXJfaAogI2RlZmluZSBTVkdG
aWx0ZXJCdWlsZGVyX2gKIAotI2luY2x1ZGUgImNvbmZpZy5oIgotCiAjaWYgRU5BQkxFKFNWRykg
JiYgRU5BQkxFKEZJTFRFUlMpCiAjaW5jbHVkZSAiQXRvbWljU3RyaW5nSGFzaC5oIgogI2luY2x1
ZGUgIkZpbHRlckVmZmVjdC5oIgpJbmRleDogV2ViS2l0VG9vbHMvd3gvYnVpbGQvc2V0dGluZ3Mu
cHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvd3gvYnVpbGQvc2V0dGluZ3MucHkJKHJldmlz
aW9uIDYzNDYxKQorKysgV2ViS2l0VG9vbHMvd3gvYnVpbGQvc2V0dGluZ3MucHkJKHdvcmtpbmcg
Y29weSkKQEAgLTI4Miw3ICsyODIsNyBAQAogICAgIGlmIGJ1aWxkX3BvcnQgPT0gInd4IjoKICAg
ICAgICAgdXBkYXRlX3d4X2RlcHMoY29uZiwgd2tfcm9vdCwgbXN2Y192ZXJzaW9uKQogICAgIAot
ICAgICAgICBjb25mLmVudi5hcHBlbmRfdmFsdWUoJ0NYWERFRklORVMnLCBbJ0JVSUxESU5HX1dY
X189MScsICdKU19OT19FWFBPUlQnXSkKKyAgICAgICAgY29uZi5lbnYuYXBwZW5kX3ZhbHVlKCdD
WFhERUZJTkVTJywgWydCVUlMRElOR19XWF9fPTEnXSkKIAogICAgICAgICBjb25mLmVudlsnTElC
X1dYV0VCS0lUJ10gPSBbJ3d4d2Via2l0J10KICAgICAgICAgY29uZi5lbnZbJ0NYWERFRklORVNf
V1hXRUJLSVQnXSA9IFsnV1hVU0lOR0RMTF9XRUJLSVQnXQpAQCAtMjk4LDcgKzI5OCw3IEBACiAg
ICAgICAgICAgICBjb25mLmVudlsnTElCX1dYJ10gPSB3eGxpYnMKICAgICAgICAgICAgIGNvbmYu
ZW52WydMSUJQQVRIX1dYJ10gPSB3eGxpYnBhdGhzCiAKLSAgICBjb25mLmVudlsnTElCX0pTQ09S
RSddID0gW2xpYnByZWZpeCArICdqc2NvcmUnXQorICAgIGNvbmYuZW52WydMSUJfSlNDT1JFJ10g
PSBbJ2pzY29yZSddCiAgICAgY29uZi5lbnZbJ0xJQl9XRUJDT1JFJ10gPSBbbGlicHJlZml4ICsg
J3dlYmNvcmUnXQogCiAgICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2RhcndpbicpOgpJ
bmRleDogV2ViS2l0VG9vbHMvV2ViS2l0QVBJVGVzdC9UZXN0RGVmaW5lcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdFRvb2xzL1dlYktpdEFQSVRlc3QvVGVzdERlZmluZXMuaAkocmV2aXNpb24gMCkK
KysrIFdlYktpdFRvb2xzL1dlYktpdEFQSVRlc3QvVGVzdERlZmluZXMuaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+
CisKKyNpZiBPUyhXSU5ET1dTKSAmJiAhQ09NUElMRVIoR0NDKQorI2RlZmluZSBKU19FWFBPUlRF
RF9TWU1CT0wgX19kZWNsc3BlYyhkbGxpbXBvcnQpCisjZGVmaW5lIFdFQktJVF9FWFBPUlREQVRB
IF9fZGVjbHNwZWMoZGxsaW1wb3J0KQorI2Vsc2UKKyNkZWZpbmUgSlNfRVhQT1JURURfU1lNQk9M
CisjZGVmaW5lIFdFQktJVF9FWFBPUlREQVRBCisjZW5kaWYKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCkluZGV4OiBXZWJLaXRUb29scy9XZWJLaXRBUElUZXN0L21haW4uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdFRvb2xzL1dlYktpdEFQSVRlc3QvbWFpbi5jcHAJKHJldmlzaW9uIDYzNDYx
KQorKysgV2ViS2l0VG9vbHMvV2ViS2l0QVBJVGVzdC9tYWluLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjIsNiArMjIsOCBAQAogICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAorI2luY2x1ZGUgIlRlc3REZWZpbmVzLmgi
CisKICNpbmNsdWRlICJUZXN0c0NvbnRyb2xsZXIuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYktp
dEFQSVRlc3Q7CkluZGV4OiBXZWJLaXRUb29scy9XZWJLaXRBUElUZXN0L1Rlc3RzQ29udHJvbGxl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvV2ViS2l0QVBJVGVzdC9UZXN0c0NvbnRy
b2xsZXIuY3BwCShyZXZpc2lvbiA2MzQ2MSkKKysrIFdlYktpdFRvb2xzL1dlYktpdEFQSVRlc3Qv
VGVzdHNDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIsNiArMjIsOCBAQAogICog
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAorI2luY2x1ZGUgIlRlc3REZWZpbmVzLmgiCisKICNpbmNsdWRlICJUZXN0c0Nv
bnRyb2xsZXIuaCIKIAogI2luY2x1ZGUgIlRlc3QuaCIKSW5kZXg6IFdlYktpdFRvb2xzL1dlYktp
dEFQSVRlc3QvSG9zdFdpbmRvdy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1dlYktpdEFQ
SVRlc3QvSG9zdFdpbmRvdy5oCShyZXZpc2lvbiA2MzQ2MSkKKysrIFdlYktpdFRvb2xzL1dlYktp
dEFQSVRlc3QvSG9zdFdpbmRvdy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw4IEBACiAj
aWZuZGVmIEhvc3RXaW5kb3dfaAogI2RlZmluZSBIb3N0V2luZG93X2gKIAorI2luY2x1ZGUgIlRl
c3REZWZpbmVzLmgiCisKICNpbmNsdWRlIDx3aW5kb3dzLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+CiAKSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2NvbmZpZy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2NvbmZpZy5oCShyZXZpc2lv
biA2MzQ2MSkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2NvbmZpZy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNiwyMCArMjYsMjAgQEAKIAogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgog
CisjaWYgT1MoV0lORE9XUykgJiYgIUNPTVBJTEVSKEdDQykKKyNkZWZpbmUgSlNfRVhQT1JURURf
U1lNQk9MIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQorI2RlZmluZSBXRUJLSVRfRVhQT1JUREFUQSBf
X2RlY2xzcGVjKGRsbGltcG9ydCkKKyNlbHNlCisjZGVmaW5lIEpTX0VYUE9SVEVEX1NZTUJPTAor
I2RlZmluZSBXRUJLSVRfRVhQT1JUREFUQQorI2VuZGlmCisKICNpZmRlZiBfX2NwbHVzcGx1cwog
I3VuZGVmIG5ldwogI3VuZGVmIGRlbGV0ZQogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAj
ZW5kaWYKIAotI2lmIE9TKFdJTkRPV1MpICYmICFDT01QSUxFUihHQ0MpCi0jZGVmaW5lIEpTX0VY
UE9SVERBVEEgX19kZWNsc3BlYyhkbGxpbXBvcnQpCi0jZGVmaW5lIFdFQktJVF9FWFBPUlREQVRB
IF9fZGVjbHNwZWMoZGxsaW1wb3J0KQotI2Vsc2UKLSNkZWZpbmUgSlNfRVhQT1JUREFUQQotI2Rl
ZmluZSBXRUJLSVRfRVhQT1JUREFUQQotI2VuZGlmCi0KICNpZiBQTEFURk9STShXSU4pCiAjZGVm
aW5lIFdURl9QTEFURk9STV9DRiAxIAogI2lmIGRlZmluZWQoV0lOX0NBSVJPKQpJbmRleDogV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2cvSW1hZ2VEaWZmQ0cuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2NnL0ltYWdlRGlmZkNHLmNwcAkocmV2aXNpb24g
NjM0NjEpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jZy9JbWFnZURpZmZDRy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDggQEAKIAogI2RlZmluZSBtaW4gbWluCiAKKyNp
bmNsdWRlICIuLi9jb25maWcuaCIKKwogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8d3Rm
L1BsYXRmb3JtLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgpJbmRleDogV2ViS2l0VG9v
bHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkocmV2aXNp
b24gNjM0NjEpCisrKyBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxOCBAQAorMjAxMC0wNy0xNSAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZp
ZXJzLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVc2UgSlNfRVhQT1JURURfU1lNQk9MIHRvIGV4cG9ydCBKU0NvcmUgc3ltYm9scyBuZWVkZWQg
Ynkgb3RoZXIgV2ViS2l0IGxpYnJhcmllcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTI3NTUxCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jZy9J
bWFnZURpZmZDRy5jcHA6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY29uZmlnLmg6CisgICAg
ICAgICogV2ViS2l0QVBJVGVzdC9Ib3N0V2luZG93Lmg6CisgICAgICAgICogV2ViS2l0QVBJVGVz
dC9UZXN0RGVmaW5lcy5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJLaXRBUElUZXN0L1Rlc3RzQ29u
dHJvbGxlci5jcHA6CisgICAgICAgICogV2ViS2l0QVBJVGVzdC9tYWluLmNwcDoKKyAgICAgICAg
KiB3eC9idWlsZC9zZXR0aW5ncy5weToKKwogMjAxMC0wNy0xNSAgQnJhZHkgRWlkc29uICA8YmVp
ZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KSW5kZXg6
IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9nCShyZXZp
c2lvbiA2MzQ2MSkKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTIgQEAKKzIwMTAtMDctMTUgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVy
cy5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VXNlIEpTX0VYUE9SVEVEX1NZTUJPTCB0byBleHBvcnQgSlNDb3JlIHN5bWJvbHMgbmVlZGVkIGJ5
IG90aGVyIFdlYktpdCBsaWJyYXJpZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yNzU1MQorCisgICAgICAgICogV2ViS2l0MlByZWZpeC5oOgorCiAy
MDEwLTA3LTE1ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgQW5kZXJzIENhcmxzc29uLgpJbmRleDogV2ViS2l0Mi9XZWJLaXQyUHJlZml4LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0Mi9XZWJLaXQyUHJlZml4LmgJKHJldmlzaW9uIDYzNDYxKQorKysg
V2ViS2l0Mi9XZWJLaXQyUHJlZml4LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDkgQEAK
IAogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogI2luY2x1ZGUgPHd0Zi9EaXNhbGxvd0NUeXBl
Lmg+CisKKyNkZWZpbmUgSlNfRVhQT1JURURfU1lNQk9MCisKICNpZmRlZiBfX2NwbHVzcGx1cwog
I2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjZW5kaWYKQEAgLTQ3LDggKzUwLDYgQEAKICNk
ZWZpbmUgV1RGX1VTRV9KU0MgMQogI2RlZmluZSBXVEZfVVNFX1Y4IDAKIAotI2RlZmluZSBKU19F
WFBPUlREQVRBCi0jZGVmaW5lIEpTX0VYUE9SVENMQVNTCiAjZGVmaW5lIFdFQktJVF9FWFBPUlRE
QVRBCiAKICNlbGlmIGRlZmluZWQoV0lOMzIpIHx8IGRlZmluZWQoX1dJTjMyKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65843</attachid>
            <date>2010-08-28 17:34:07 -0700</date>
            <delta_ts>2010-08-29 17:10:41 -0700</delta_ts>
            <desc>One step at a time, this time updating symbols first</desc>
            <filename>jscore_exports10.patch</filename>
            <type>text/plain</type>
            <size>105240</size>
            <attacher name="Kevin Ollivier">kevino</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkocmV2aXNpb24gNjYzMTUpCisrKyBK
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03MSwy
MSArNzEsMjEgQEAKIAogICAgICAgICBzdGF0aWMgdm9pZCBkdW1wU3RhdGlzdGljcygpOwogCi0g
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gYWRkUHJvcGVydHlUcmFuc2l0aW9u
KFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0
cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBzaXplX3QmIG9mZnNldCk7Ci0gICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gYWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlz
dGluZ1N0cnVjdHVyZShTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBvZmZz
ZXQpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1
cmU+IGFkZFByb3BlcnR5VHJhbnNpdGlvbihTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwg
c2l6ZV90JiBvZmZzZXQpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1Jl
ZlB0cjxTdHJ1Y3R1cmU+IGFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUo
U3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRy
aWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUsIHNpemVfdCYgb2Zmc2V0KTsKICAgICAgICAg
c3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiByZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oU3Ry
dWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBzaXplX3QmIG9mZnNldCk7
Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY2hhbmdlUHJvdG90eXBlVHJh
bnNpdGlvbihTdHJ1Y3R1cmUqLCBKU1ZhbHVlIHByb3RvdHlwZSk7Ci0gICAgICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFN0cnVjdHVyZT4gZGVzcGVjaWZ5RnVuY3Rpb25UcmFuc2l0aW9uKFN0cnVjdHVy
ZSosIGNvbnN0IElkZW50aWZpZXImKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjaGFuZ2VQcm90b3R5cGVUcmFuc2l0aW9uKFN0cnVjdHVy
ZSosIEpTVmFsdWUgcHJvdG90eXBlKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IFBhc3NSZWZQdHI8U3RydWN0dXJlPiBkZXNwZWNpZnlGdW5jdGlvblRyYW5zaXRpb24oU3RydWN0
dXJlKiwgY29uc3QgSWRlbnRpZmllciYpOwogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1
Y3R1cmU+IGdldHRlclNldHRlclRyYW5zaXRpb24oU3RydWN0dXJlKik7CiAgICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gdG9DYWNoZWFibGVEaWN0aW9uYXJ5VHJhbnNpdGlvbihT
dHJ1Y3R1cmUqKTsKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiB0b1VuY2Fj
aGVhYmxlRGljdGlvbmFyeVRyYW5zaXRpb24oU3RydWN0dXJlKik7CiAKICAgICAgICAgUGFzc1Jl
ZlB0cjxTdHJ1Y3R1cmU+IGZsYXR0ZW5EaWN0aW9uYXJ5U3RydWN0dXJlKEpTT2JqZWN0Kik7CiAK
LSAgICAgICAgflN0cnVjdHVyZSgpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB+U3RydWN0
dXJlKCk7CiAKICAgICAgICAgLy8gVGhlc2Ugc2hvdWxkIGJlIHVzZWQgd2l0aCBjYXV0aW9uLiAg
Ci0gICAgICAgIHNpemVfdCBhZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZp
Y1ZhbHVlKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGFkZFByb3BlcnR5V2l0
aG91dFRyYW5zaXRpb24oY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBh
dHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpOwogICAgICAgICBzaXplX3QgcmVtb3Zl
UHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUp
OwogICAgICAgICB2b2lkIHNldFByb3RvdHlwZVdpdGhvdXRUcmFuc2l0aW9uKEpTVmFsdWUgcHJv
dG90eXBlKSB7IG1fcHJvdG90eXBlID0gcHJvdG90eXBlOyB9CiAgICAgICAgIApAQCAtMTA2LDcg
KzEwNiw3IEBACiAgICAgICAgIGJvb2wgaXNVc2luZ0lubGluZVN0b3JhZ2UoKSBjb25zdDsKIAog
ICAgICAgICBzaXplX3QgZ2V0KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7Ci0gICAg
ICAgIHNpemVfdCBnZXQoY29uc3QgU3RyaW5nSW1wbCogcmVwLCB1bnNpZ25lZCYgYXR0cmlidXRl
cywgSlNDZWxsKiYgc3BlY2lmaWNWYWx1ZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHNp
emVfdCBnZXQoY29uc3QgU3RyaW5nSW1wbCogcmVwLCB1bnNpZ25lZCYgYXR0cmlidXRlcywgSlND
ZWxsKiYgc3BlY2lmaWNWYWx1ZSk7CiAgICAgICAgIHNpemVfdCBnZXQoY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcywgSlNDZWxsKiYgc3BlY2lmaWNW
YWx1ZSkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKCFwcm9wZXJ0eU5hbWUuaXNOdWxs
KCkpOwpAQCAtMTE2LDcgKzExNiw3IEBACiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBt
X3NwZWNpZmljVmFsdWVJblByZXZpb3VzID09IHNwZWNpZmljVmFsdWU7CiAgICAgICAgIH0KLSAg
ICAgICAgYm9vbCBoYXNUcmFuc2l0aW9uKFN0cmluZ0ltcGwqLCB1bnNpZ25lZCBhdHRyaWJ1dGVz
KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBoYXNUcmFuc2l0aW9uKFN0cmluZ0lt
cGwqLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKICAgICAgICAgYm9vbCBoYXNUcmFuc2l0aW9uKGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcykKICAgICAg
ICAgewogICAgICAgICAgICAgcmV0dXJuIGhhc1RyYW5zaXRpb24ocHJvcGVydHlOYW1lLmltcGwo
KSwgYXR0cmlidXRlcyk7CkBAIC0xMzIsNyArMTMyLDcgQEAKICAgICAgICAgCiAgICAgICAgIGJv
b2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydHlUYWJsZSA/ICFtX3Byb3BlcnR5
VGFibGUtPmtleUNvdW50IDogbV9vZmZzZXQgPT0gbm9PZmZzZXQ7IH0KIAotICAgICAgICB2b2lk
IGRlc3BlY2lmeURpY3Rpb25hcnlGdW5jdGlvbihjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGRlc3BlY2lmeURpY3Rpb25hcnlG
dW5jdGlvbihjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOwogICAgICAgICB2b2lkIGRp
c2FibGVTcGVjaWZpY0Z1bmN0aW9uVHJhY2tpbmcoKSB7IG1fc3BlY2lmaWNGdW5jdGlvblRocmFz
aENvdW50ID0gbWF4U3BlY2lmaWNGdW5jdGlvblRocmFzaENvdW50OyB9CiAKICAgICAgICAgdm9p
ZCBzZXRFbnVtZXJhdGlvbkNhY2hlKEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIGVudW1lcmF0aW9u
Q2FjaGUpOyAvLyBEZWZpbmVkIGluIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaC4KQEAgLTE0Miw3
ICsxNDIsNyBAQAogICAgICAgICAKICAgICBwcml2YXRlOgogCi0gICAgICAgIFN0cnVjdHVyZShK
U1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8mLCB1bnNpZ25lZCBhbm9ueW1vdXNTbG90
Q291bnQpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBTdHJ1Y3R1cmUoSlNWYWx1ZSBwcm90
b3R5cGUsIGNvbnN0IFR5cGVJbmZvJiwgdW5zaWduZWQgYW5vbnltb3VzU2xvdENvdW50KTsKICAg
ICAgICAgCiAgICAgICAgIHR5cGVkZWYgZW51bSB7IAogICAgICAgICAgICAgTm9uZURpY3Rpb25h
cnlLaW5kID0gMCwKQEAgLTE2Niw3ICsxNjYsNyBAQAogICAgICAgICB2b2lkIGRlc3BlY2lmeUFs
bEZ1bmN0aW9ucygpOwogCiAgICAgICAgIFByb3BlcnR5TWFwSGFzaFRhYmxlKiBjb3B5UHJvcGVy
dHlUYWJsZSgpOwotICAgICAgICB2b2lkIG1hdGVyaWFsaXplUHJvcGVydHlNYXAoKTsKKyAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBtYXRlcmlhbGl6ZVByb3BlcnR5TWFwKCk7CiAgICAg
ICAgIHZvaWQgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KCkKICAgICAgICAgewog
ICAgICAgICAgICAgaWYgKG1fcHJvcGVydHlUYWJsZSB8fCAhbV9wcmV2aW91cykgICAgICAgICAg
ICAgCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCShyZXZpc2lvbiA2NjMxNSkKKysr
IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtNjIs
NyArNjIsNyBAQAogICAgIHR5cGVkZWYgdm9pZCAoKkpTU3RyaW5nRmluYWxpemVyQ2FsbGJhY2sp
KEpTU3RyaW5nKiwgdm9pZCogY29udGV4dCk7CiAgICAgSlNTdHJpbmcqIGpzU3RyaW5nV2l0aEZp
bmFsaXplcihFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJiwgSlNTdHJpbmdGaW5hbGl6ZXJDYWxs
YmFjayBjYWxsYmFjaywgdm9pZCogY29udGV4dCk7CiAKLSAgICBjbGFzcyBKU19FWFBPUlRDTEFT
UyBKU1N0cmluZyA6IHB1YmxpYyBKU0NlbGwgeworICAgIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRF
IEpTU3RyaW5nIDogcHVibGljIEpTQ2VsbCB7CiAgICAgcHVibGljOgogICAgICAgICBmcmllbmQg
Y2xhc3MgSklUOwogICAgICAgICBmcmllbmQgY2xhc3MgSlNHbG9iYWxEYXRhOwpJbmRleDogSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2aXNpb24gNjYzMTUpCisrKyBKYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTcwLDExICs3MCwxMSBAQAog
ICAgIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUqIFByb3BlcnR5U3RvcmFnZTsKICAgICB0eXBlZGVm
IGNvbnN0IEVuY29kZWRKU1ZhbHVlKiBDb25zdFByb3BlcnR5U3RvcmFnZTsKIAotICAgIGNsYXNz
IEpTT2JqZWN0IDogcHVibGljIEpTQ2VsbCB7CisgICAgY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUg
SlNPYmplY3QgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEJhdGNoZWRU
cmFuc2l0aW9uT3B0aW1pemVyOwogICAgICAgICBmcmllbmQgY2xhc3MgSklUOwogICAgICAgICBm
cmllbmQgY2xhc3MgSlNDZWxsOwotICAgICAgICBmcmllbmQgdm9pZCBzZXRVcFN0YXRpY0Z1bmN0
aW9uU2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEhhc2hFbnRyeSogZW50cnksIEpTT2JqZWN0
KiB0aGlzT2JqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYg
c2xvdCk7CisgICAgICAgIGZyaWVuZCBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldFVwU3RhdGlj
RnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSwgSlNP
YmplY3QqIHRoaXNPYmosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90JiBzbG90KTsKIAogICAgIHB1YmxpYzoKICAgICAgICAgZXhwbGljaXQgSlNPYmplY3QoTm9u
TnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPik7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4Y2VwdGlvbkhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4Y2VwdGlvbkhlbHBlcnMuaAkocmV2aXNpb24gNjYzMTUpCisrKyBKYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsMTAgKzQzLDEw
IEBACiAgICAgY2xhc3MgTm9kZTsKICAgICBzdHJ1Y3QgSW5zdHJ1Y3Rpb247CiAgICAgCi0gICAg
SlNWYWx1ZSBjcmVhdGVJbnRlcnJ1cHRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihKU0dsb2JhbERhdGEq
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIGNyZWF0ZUludGVycnVwdGVkRXhlY3V0
aW9uRXhjZXB0aW9uKEpTR2xvYmFsRGF0YSopOwogICAgIEpTVmFsdWUgY3JlYXRlVGVybWluYXRl
ZEV4ZWN1dGlvbkV4Y2VwdGlvbihKU0dsb2JhbERhdGEqKTsKLSAgICBKU09iamVjdCogY3JlYXRl
U3RhY2tPdmVyZmxvd0Vycm9yKEV4ZWNTdGF0ZSopOwotICAgIEpTT2JqZWN0KiBjcmVhdGVTdGFj
a092ZXJmbG93RXJyb3IoSlNHbG9iYWxPYmplY3QqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBK
U09iamVjdCogY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKEV4ZWNTdGF0ZSopOworICAgIEpTX0VY
UE9SVF9QUklWQVRFIEpTT2JqZWN0KiBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoSlNHbG9iYWxP
YmplY3QqKTsKICAgICBKU1ZhbHVlIGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoRXhlY1N0
YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBDb2RlQmxv
Y2sqKTsKICAgICBKU05vdEFuT2JqZWN0RXJyb3JTdHViKiBjcmVhdGVOb3RBbk9iamVjdEVycm9y
U3R1YihFeGVjU3RhdGUqLCBib29sIGlzTnVsbCk7CiAgICAgSlNPYmplY3QqIGNyZWF0ZUludmFs
aWRQYXJhbUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIqIG9wLCBKU1ZhbHVlLCB1bnNpZ25l
ZCBieXRlY29kZU9mZnNldCwgQ29kZUJsb2NrKik7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RnVuY3Rpb24uaAkocmV2aXNpb24gNjYzMTUpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDQsMTQgKzQ0LDE0IEBACiAgICAgICAgIHR5
cGVkZWYgSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0IEJhc2U7CiAKICAgICBwdWJsaWM6Ci0gICAg
ICAgIEpTRnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBOb25OdWxsUGFzc1Jl
ZlB0cjxTdHJ1Y3R1cmU+LCBpbnQgbGVuZ3RoLCBjb25zdCBJZGVudGlmaWVyJiwgTmF0aXZlRnVu
Y3Rpb24pOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSos
IEpTR2xvYmFsT2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgaW50IGxlbmd0
aCwgY29uc3QgSWRlbnRpZmllciYsIE5hdGl2ZUZ1bmN0aW9uKTsKICNpZiBFTkFCTEUoSklUKQog
ICAgICAgICBKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgTm9uTnVsbFBh
c3NSZWZQdHI8U3RydWN0dXJlPiwgaW50IGxlbmd0aCwgY29uc3QgSWRlbnRpZmllciYsIFBhc3NS
ZWZQdHI8TmF0aXZlRXhlY3V0YWJsZT4pOwogI2VuZGlmCiAgICAgICAgIEpTRnVuY3Rpb24oRXhl
Y1N0YXRlKiwgTm9uTnVsbFBhc3NSZWZQdHI8RnVuY3Rpb25FeGVjdXRhYmxlPiwgU2NvcGVDaGFp
bk5vZGUqKTsKICAgICAgICAgdmlydHVhbCB+SlNGdW5jdGlvbigpOwogCi0gICAgICAgIGNvbnN0
IFVTdHJpbmcmIG5hbWUoRXhlY1N0YXRlKik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGNv
bnN0IFVTdHJpbmcmIG5hbWUoRXhlY1N0YXRlKik7CiAgICAgICAgIGNvbnN0IFVTdHJpbmcgZGlz
cGxheU5hbWUoRXhlY1N0YXRlKik7CiAgICAgICAgIGNvbnN0IFVTdHJpbmcgY2FsY3VsYXRlZERp
c3BsYXlOYW1lKEV4ZWNTdGF0ZSopOwogCkBAIC05MCw3ICs5MCw3IEBACiAgICAgcHJpdmF0ZToK
ICAgICAgICAgSlNGdW5jdGlvbihOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+KTsKIAotICAg
ICAgICBib29sIGlzSG9zdEZ1bmN0aW9uTm9uSW5saW5lKCkgY29uc3Q7CisgICAgICAgIEpTX0VY
UE9SVF9QUklWQVRFIGJvb2wgaXNIb3N0RnVuY3Rpb25Ob25JbmxpbmUoKSBjb25zdDsKIAogICAg
ICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElk
ZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgdmlydHVhbCBib29sIGdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlE
ZXNjcmlwdG9yJik7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlw
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBl
LmgJKHJldmlzaW9uIDY2MzE1KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90
b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQAogICAgICAgICBib29sIG1f
aGFzTm9Qcm9wZXJ0aWVzV2l0aFVJbnQzMk5hbWVzOwogICAgIH07CiAKLSAgICBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSopOwor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0
UHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCklu
ZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuaAkocmV2aXNpb24gNjYzMTUpCisrKyBKYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ0LDcgKzE0NCw3
IEBACiAgICAgICAgIHN0YXRpYyB2b2lkIG1hcmtMaXN0cyhNYXJrU3RhY2smLCBMaXN0U2V0Jik7
CiAKICAgICBwcml2YXRlOgotICAgICAgICB2b2lkIHNsb3dBcHBlbmQoSlNWYWx1ZSk7CisgICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2xvd0FwcGVuZChKU1ZhbHVlKTsKICAgICAgICAg
CiAgICAgICAgIFJlZ2lzdGVyKiBtX2J1ZmZlcjsKICAgICAgICAgc2l6ZV90IG1fc2l6ZTsKQEAg
LTIzNCw3ICsyMzQsNyBAQAogICAgICAgICBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IHsg
cmV0dXJuIG1fYXJnczsgfQogICAgICAgICBjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdCB7IHJl
dHVybiBtX2FyZ3MgKyBtX2FyZ0NvdW50OyB9CiAKLSAgICAgICAgdm9pZCBnZXRTbGljZShpbnQg
c3RhcnRJbmRleCwgQXJnTGlzdCYgcmVzdWx0KSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgdm9pZCBnZXRTbGljZShpbnQgc3RhcnRJbmRleCwgQXJnTGlzdCYgcmVzdWx0KSBjb25z
dDsKICAgICBwcml2YXRlOgogICAgICAgICBKU1ZhbHVlKiBtX2FyZ3M7CiAgICAgICAgIHNpemVf
dCBtX2FyZ0NvdW50OwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgJKHJldmlzaW9uIDY2
MzE1KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgJKHdvcmtpbmcgY29weSkK
QEAgLTU3LDcgKzU3LDcgQEAKIAogICAgIGVudW0gQXJyYXlDcmVhdGlvbk1vZGUgeyBDcmVhdGVD
b21wYWN0LCBDcmVhdGVJbml0aWFsaXplZCB9OwogCi0gICAgY2xhc3MgSlNBcnJheSA6IHB1Ymxp
YyBKU09iamVjdCB7CisgICAgY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgSlNBcnJheSA6IHB1Ymxp
YyBKU09iamVjdCB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAgICAgIGZyaWVuZCBj
bGFzcyBXYWxrZXI7CiAKQEAgLTc1LDcgKzc1LDcgQEAKICAgICAgICAgdmlydHVhbCBib29sIGdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJv
cGVydHlEZXNjcmlwdG9yJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwdXQoRXhlY1N0YXRlKiwg
dW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlKTsgLy8gRklYTUU6IE1ha2UgcHJvdGVjdGVk
IGFuZCBhZGQgc2V0SXRlbS4KIAotICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSBjb25zdCBD
bGFzc0luZm8gaW5mbzsKKyAgICAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBpbmZvOwogICAg
ICAgICAKICAgICAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9zdG9yYWdl
LT5tX2xlbmd0aDsgfQogICAgICAgICB2b2lkIHNldExlbmd0aCh1bnNpZ25lZCk7IC8vIE9LIHRv
IHVzZSBvbiBuZXcgYXJyYXlzLCBidXQgbm90IGlmIGl0IG1pZ2h0IGJlIGEgUmVnRXhwTWF0Y2hB
cnJheS4KSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCShy
ZXZpc2lvbiA2NjMxNSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlv
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxMCArMzEsMTAgQEAKIAogICAgIGNsYXNzIEZ1bmN0
aW9uUHJvdG90eXBlOwogCi0gICAgY2xhc3MgSW50ZXJuYWxGdW5jdGlvbiA6IHB1YmxpYyBKU09i
amVjdFdpdGhHbG9iYWxPYmplY3QgeworICAgIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEludGVy
bmFsRnVuY3Rpb24gOiBwdWJsaWMgSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0IHsKICAgICBwdWJs
aWM6CiAgICAgICAgIHZpcnR1YWwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8oKSBjb25zdDsg
Ci0gICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNzSW5mbyBpbmZvOworICAg
ICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIGluZm87CiAKICAgICAgICAgY29uc3QgVVN0cmlu
ZyYgbmFtZShFeGVjU3RhdGUqKTsKICAgICAgICAgY29uc3QgVVN0cmluZyBkaXNwbGF5TmFtZShF
eGVjU3RhdGUqKTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCShyZXZpc2lv
biA2NjMxNSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCSh3b3JraW5n
IGNvcHkpCkBAIC01MywxNSArNTMsMTUgQEAKICAgICAgICAgCiAgICAgICAgIENTdHJpbmcgYXNj
aWkoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5hc2NpaSgpOyB9CiAgICAgICAgIAotICAgICAg
ICBzdGF0aWMgSWRlbnRpZmllciBmcm9tKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgeSk7Ci0g
ICAgICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb20oRXhlY1N0YXRlKiBleGVjLCBpbnQgeSk7Ci0g
ICAgICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb20oRXhlY1N0YXRlKiBleGVjLCBkb3VibGUgeSk7
CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBJZGVudGlmaWVyIGZyb20oRXhlY1N0
YXRlKiBleGVjLCB1bnNpZ25lZCB5KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IElkZW50aWZpZXIgZnJvbShFeGVjU3RhdGUqIGV4ZWMsIGludCB5KTsKKyAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIElkZW50aWZpZXIgZnJvbShFeGVjU3RhdGUqIGV4ZWMsIGRvdWJs
ZSB5KTsKICAgICAgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbShKU0dsb2JhbERhdGEqLCB1bnNp
Z25lZCB5KTsKICAgICAgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbShKU0dsb2JhbERhdGEqLCBp
bnQgeSk7CiAgICAgICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb20oSlNHbG9iYWxEYXRhKiwgZG91
YmxlIHkpOwogCi0gICAgICAgIHN0YXRpYyB1aW50MzJfdCB0b1VJbnQzMihjb25zdCBVU3RyaW5n
JiwgYm9vbCYgb2spOwotICAgICAgICB1aW50MzJfdCB0b1VJbnQzMihib29sJiBvaykgY29uc3Qg
eyByZXR1cm4gdG9VSW50MzIobV9zdHJpbmcsIG9rKTsgfQorICAgICAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgdWludDMyX3QgdG9VSW50MzIoY29uc3QgVVN0cmluZyYsIGJvb2wmIG9rKTsK
KyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdWludDMyX3QgdG9VSW50MzIoYm9vbCYgb2spIGNv
bnN0IHsgcmV0dXJuIHRvVUludDMyKG1fc3RyaW5nLCBvayk7IH0KICAgICAgICAgdW5zaWduZWQg
dG9BcnJheUluZGV4KGJvb2wmIG9rKSBjb25zdDsKIAogICAgICAgICBib29sIGlzTnVsbCgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RyaW5nLmlzTnVsbCgpOyB9CkBAIC03MywxMiArNzMsMTIgQEAKICAg
ICAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgY2hh
ciopOwogICAgICAgICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KGNvbnN0IElkZW50aWZpZXImLCBj
b25zdCBjaGFyKik7CiAgICAgCi0gICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFN0cmlu
Z0ltcGwqLCBjb25zdCBjaGFyKik7Ci0gICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFN0
cmluZ0ltcGwqLCBjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgICAgIHN0YXRp
YyBib29sIGVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqIGEsIGNvbnN0IFN0cmluZ0ltcGwqIGIpIHsg
cmV0dXJuIDo6ZXF1YWwoYSwgYik7IH0KKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IGJvb2wgZXF1YWwoY29uc3QgU3RyaW5nSW1wbCosIGNvbnN0IGNoYXIqKTsKKyAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgU3RyaW5nSW1wbCosIGNvbnN0
IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIGJvb2wgZXF1YWwoY29uc3QgU3RyaW5nSW1wbCogYSwgY29uc3QgU3RyaW5nSW1wbCogYikg
eyByZXR1cm4gOjplcXVhbChhLCBiKTsgfQogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0
cmluZ0ltcGw+IGFkZChFeGVjU3RhdGUqLCBjb25zdCBjaGFyKik7IC8vIE9ubHkgdG8gYmUgdXNl
ZCB3aXRoIHN0cmluZyBsaXRlcmFscy4KLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5n
SW1wbD4gYWRkKEpTR2xvYmFsRGF0YSosIGNvbnN0IGNoYXIqKTsgLy8gT25seSB0byBiZSB1c2Vk
IHdpdGggc3RyaW5nIGxpdGVyYWxzLgorICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
UGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGQoRXhlY1N0YXRlKiwgY29uc3QgY2hhciopOyAvLyBP
bmx5IHRvIGJlIHVzZWQgd2l0aCBzdHJpbmcgbGl0ZXJhbHMuCisgICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChKU0dsb2JhbERhdGEqLCBj
b25zdCBjaGFyKik7IC8vIE9ubHkgdG8gYmUgdXNlZCB3aXRoIHN0cmluZyBsaXRlcmFscy4KIAog
ICAgIHByaXZhdGU6CiAgICAgICAgIFVTdHJpbmcgbV9zdHJpbmc7CkBAIC0xMDgsMTAgKzEwOCwx
MCBAQAogICAgICAgICAgICAgcmV0dXJuIGFkZFNsb3dDYXNlKGdsb2JhbERhdGEsIHIpOwogICAg
ICAgICB9CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRkU2xvd0Nh
c2UoRXhlY1N0YXRlKiwgU3RyaW5nSW1wbCogcik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZFNsb3dDYXNlKEV4ZWNTdGF0ZSosIFN0
cmluZ0ltcGwqIHIpOwogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGRT
bG93Q2FzZShKU0dsb2JhbERhdGEqLCBTdHJpbmdJbXBsKiByKTsKIAotICAgICAgICBzdGF0aWMg
dm9pZCBjaGVja0N1cnJlbnRJZGVudGlmaWVyVGFibGUoRXhlY1N0YXRlKik7CisgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGNoZWNrQ3VycmVudElkZW50aWZpZXJUYWJsZShF
eGVjU3RhdGUqKTsKICAgICAgICAgc3RhdGljIHZvaWQgY2hlY2tDdXJyZW50SWRlbnRpZmllclRh
YmxlKEpTR2xvYmFsRGF0YSopOwogICAgIH07CiAgICAgCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cmluZ09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaW5nT2JqZWN0LmgJKHJldmlzaW9uIDY2MzE1KQorKysgSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogCiBu
YW1lc3BhY2UgSlNDIHsKIAotICAgIGNsYXNzIFN0cmluZ09iamVjdCA6IHB1YmxpYyBKU1dyYXBw
ZXJPYmplY3QgeworICAgIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIFN0cmluZ09iamVjdCA6IHB1
YmxpYyBKU1dyYXBwZXJPYmplY3QgewogICAgIHB1YmxpYzoKICAgICAgICAgU3RyaW5nT2JqZWN0
KEV4ZWNTdGF0ZSosIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4pOwogICAgICAgICBTdHJp
bmdPYmplY3QoRXhlY1N0YXRlKiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgY29uc3Qg
VVN0cmluZyYpOwpAQCAtNDIsNyArNDIsNyBAQAogICAgICAgICB2aXJ0dWFsIHZvaWQgZ2V0T3du
UHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9u
TW9kZSBtb2RlID0gRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CiAKICAgICAgICAgdmlydHVh
bCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZpbmZvOyB9Ci0g
ICAgICAgIHN0YXRpYyBjb25zdCBKU19FWFBPUlREQVRBIENsYXNzSW5mbyBpbmZvOworICAgICAg
ICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIGluZm87CiAKICAgICAgICAgSlNTdHJpbmcqIGludGVy
bmFsVmFsdWUoKSBjb25zdCB7IHJldHVybiBhc1N0cmluZyhKU1dyYXBwZXJPYmplY3Q6OmludGVy
bmFsVmFsdWUoKSk7fQogCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJheS5oCShy
ZXZpc2lvbiA2NjMxNSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuaAko
d29ya2luZyBjb3B5KQpAQCAtNjYsOCArNjYsOCBAQAogICAgICAgICAgICAgICAgIHNldEluZGV4
KGksIGJ5dGVWYWx1ZSk7CiAgICAgICAgIH0KIAotICAgICAgICBKU0J5dGVBcnJheShFeGVjU3Rh
dGUqIGV4ZWMsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIFdURjo6Qnl0ZUFycmF5KiBz
dG9yYWdlLCBjb25zdCBKU0M6OkNsYXNzSW5mbyogPSAmc19kZWZhdWx0SW5mbyk7Ci0gICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTVmFsdWUgcHJv
dG90eXBlKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNCeXRlQXJyYXkoRXhlY1N0YXRl
KiBleGVjLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBXVEY6OkJ5dGVBcnJheSogc3Rv
cmFnZSwgY29uc3QgSlNDOjpDbGFzc0luZm8qID0gJnNfZGVmYXVsdEluZm8pOworICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVj
dHVyZShKU1ZhbHVlIHByb3RvdHlwZSk7CiAKICAgICAgICAgdmlydHVhbCBib29sIGdldE93blBy
b3BlcnR5U2xvdChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3du
UHJvcGVydHlTbG90KEpTQzo6RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU0M6
OlByb3BlcnR5U2xvdCYpOwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9HQ0hhbmRsZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvR0NIYW5kbGUuaAkocmV2aXNp
b24gNjYzMTUpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dDSGFuZGxlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTY3LDcgKzY3LDcgQEAKICAgICAgICAgQVNTRVJUKGlzUHRyKCkpOwogICAgIH0K
IAotICAgIFdlYWtHQ0hhbmRsZVBvb2wqIHBvb2woKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBX
ZWFrR0NIYW5kbGVQb29sKiBwb29sKCk7CiAKIHByaXZhdGU6CiAgICAgdWludHB0cl90IGdldE5l
eHRJbkZyZWVMaXN0KCkKQEAgLTk2LDcgKzk2LDcgQEAKICAgICBXZWFrR0NIYW5kbGVQb29sKCk7
CiAKICAgICBXZWFrR0NIYW5kbGUqIGFsbG9jYXRlKEpTQ2VsbCogY2VsbCk7Ci0gICAgdm9pZCBm
cmVlKFdlYWtHQ0hhbmRsZSopOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZnJlZShXZWFr
R0NIYW5kbGUqKTsKIAogICAgIGJvb2wgaXNGdWxsKCkKICAgICB7CkluZGV4OiBKYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAkocmV2aXNpb24gNjYzMTUpCisrKyBKYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAt
NDAsNyArNDAsNyBAQAogCiAgICAgY2xhc3MgUmVnaXN0ZXI7CiAKLSAgICBjbGFzcyBKU1Zhcmlh
YmxlT2JqZWN0IDogcHVibGljIEpTT2JqZWN0IHsKKyAgICBjbGFzcyBKU19FWFBPUlRfUFJJVkFU
RSBKU1ZhcmlhYmxlT2JqZWN0IDogcHVibGljIEpTT2JqZWN0IHsKICAgICAgICAgZnJpZW5kIGNs
YXNzIEpJVDsKIAogICAgIHB1YmxpYzoKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
cGxldGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlv
bi5oCShyZXZpc2lvbiA2NjMxNSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlv
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw4ICs1NSw4IEBACiAgICAgICAgIEpTVmFsdWUgbV92
YWx1ZTsKICAgICB9OwogCi0gICAgQ29tcGxldGlvbiBjaGVja1N5bnRheChFeGVjU3RhdGUqLCBj
b25zdCBTb3VyY2VDb2RlJik7Ci0gICAgQ29tcGxldGlvbiBldmFsdWF0ZShFeGVjU3RhdGUqLCBT
Y29wZUNoYWluJiwgY29uc3QgU291cmNlQ29kZSYsIEpTVmFsdWUgdGhpc1ZhbHVlID0gSlNWYWx1
ZSgpKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBDb21wbGV0aW9uIGNoZWNrU3ludGF4KEV4ZWNT
dGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBDb21wbGV0
aW9uIGV2YWx1YXRlKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW4mLCBjb25zdCBTb3VyY2VDb2RlJiwg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBKU1ZhbHVlKCkpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApJ
bmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCShyZXZpc2lvbiA2NjMxNSkKKysrIEphdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTG9va3VwLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzOSw3ICsxMzksNyBA
QAogICAgICAgICAgICAgICAgIGNyZWF0ZVRhYmxlKCZleGVjLT5nbG9iYWxEYXRhKCkpOwogICAg
ICAgICB9CiAKLSAgICAgICAgdm9pZCBkZWxldGVUYWJsZSgpIGNvbnN0OworICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSB2b2lkIGRlbGV0ZVRhYmxlKCkgY29uc3Q7CiAKICAgICAgICAgLy8gRmlu
ZCBhbiBlbnRyeSBpbiB0aGUgdGFibGUsIGFuZCByZXR1cm4gdGhlIGVudHJ5LgogICAgICAgICBB
TFdBWVNfSU5MSU5FIGNvbnN0IEhhc2hFbnRyeSogZW50cnkoSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSBjb25zdApAQCAtMTc0LDEwICsxNzQs
MTAgQEAKICAgICAgICAgfQogCiAgICAgICAgIC8vIENvbnZlcnQgdGhlIGhhc2ggdGFibGUga2V5
cyB0byBpZGVudGlmaWVycy4KLSAgICAgICAgdm9pZCBjcmVhdGVUYWJsZShKU0dsb2JhbERhdGEq
KSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBjcmVhdGVUYWJsZShKU0ds
b2JhbERhdGEqKSBjb25zdDsKICAgICB9OwogCi0gICAgdm9pZCBzZXRVcFN0YXRpY0Z1bmN0aW9u
U2xvdChFeGVjU3RhdGUqLCBjb25zdCBIYXNoRW50cnkqLCBKU09iamVjdCogdGhpc09iamVjdCwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICBKU19F
WFBPUlRfUFJJVkFURSB2b2lkIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSosIGNv
bnN0IEhhc2hFbnRyeSosIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogCiAgICAgLyoqCiAgICAgICogVGhpcyBtZXRo
b2QgZG9lcyBpdCBhbGwgKGxvb2tpbmcgaW4gdGhlIGhhc2h0YWJsZSwgY2hlY2tpbmcgZm9yIGZ1
bmN0aW9uCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHJldmlzaW9uIDY2MzE1KQorKysg
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiAr
MjYsNyBAQAogI2luY2x1ZGUgIkNhbGxEYXRhLmgiCiAjaW5jbHVkZSAiQ29uc3RydWN0RGF0YS5o
IgogI2luY2x1ZGUgIkNvbGxlY3Rvci5oIgorI2luY2x1ZGUgIkpTQmFzZS5oIgogI2luY2x1ZGUg
IkpTSW1tZWRpYXRlLmgiCiAjaW5jbHVkZSAiSlNWYWx1ZS5oIgogI2luY2x1ZGUgIk1hcmtTdGFj
ay5oIgpAQCAtNDgsOCArNDksOCBAQAogICAgICAgICBmcmllbmQgY2xhc3MgSlNHbG9iYWxEYXRh
OwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgZXhwbGljaXQgSlNDZWxsKFN0cnVjdHVyZSopOwot
ICAgICAgICB2aXJ0dWFsIH5KU0NlbGwoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgZXhw
bGljaXQgSlNDZWxsKFN0cnVjdHVyZSopOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0
dWFsIH5KU0NlbGwoKTsKIAogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8
U3RydWN0dXJlPiBjcmVhdGVEdW1teVN0cnVjdHVyZSgpCkBAIC02MSwzOSArNjIsMzkgQEAKICNp
ZiBVU0UoSlNWQUxVRTMyKQogICAgICAgICBib29sIGlzTnVtYmVyKCkgY29uc3Q7CiAjZW5kaWYK
LSAgICAgICAgYm9vbCBpc1N0cmluZygpIGNvbnN0OwotICAgICAgICBib29sIGlzT2JqZWN0KCkg
Y29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBpc0dldHRlclNldHRlcigpIGNvbnN0OwotICAg
ICAgICBib29sIGluaGVyaXRzKGNvbnN0IENsYXNzSW5mbyopIGNvbnN0OworICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSBib29sIGlzU3RyaW5nKCkgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIGJvb2wgaXNPYmplY3QoKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
dmlydHVhbCBib29sIGlzR2V0dGVyU2V0dGVyKCkgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIGJvb2wgaW5oZXJpdHMoY29uc3QgQ2xhc3NJbmZvKikgY29uc3Q7CiAgICAgICAgIHZp
cnR1YWwgYm9vbCBpc0FQSVZhbHVlV3JhcHBlcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgICAgIHZpcnR1YWwgYm9vbCBpc1Byb3BlcnR5TmFtZUl0ZXJhdG9yKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KIAogICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSgpIGNvbnN0OwogCiAg
ICAgICAgIC8vIEV4dHJhY3RpbmcgdGhlIHZhbHVlLgotICAgICAgICBib29sIGdldFN0cmluZyhF
eGVjU3RhdGUqIGV4ZWMsIFVTdHJpbmcmKSBjb25zdDsKLSAgICAgICAgVVN0cmluZyBnZXRTdHJp
bmcoRXhlY1N0YXRlKiBleGVjKSBjb25zdDsgLy8gbnVsbCBzdHJpbmcgaWYgbm90IGEgc3RyaW5n
Ci0gICAgICAgIEpTT2JqZWN0KiBnZXRPYmplY3QoKTsgLy8gTlVMTCBpZiBub3QgYW4gb2JqZWN0
Ci0gICAgICAgIGNvbnN0IEpTT2JqZWN0KiBnZXRPYmplY3QoKSBjb25zdDsgLy8gTlVMTCBpZiBu
b3QgYW4gb2JqZWN0CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgZ2V0U3RyaW5nKEV4
ZWNTdGF0ZSogZXhlYywgVVN0cmluZyYpIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSBVU3RyaW5nIGdldFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0OyAvLyBudWxsIHN0cmlu
ZyBpZiBub3QgYSBzdHJpbmcKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIGdl
dE9iamVjdCgpOyAvLyBOVUxMIGlmIG5vdCBhbiBvYmplY3QKKyAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgY29uc3QgSlNPYmplY3QqIGdldE9iamVjdCgpIGNvbnN0OyAvLyBOVUxMIGlmIG5vdCBh
biBvYmplY3QKICAgICAgICAgCi0gICAgICAgIHZpcnR1YWwgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEo
Q2FsbERhdGEmKTsKLSAgICAgICAgdmlydHVhbCBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERh
dGEoQ29uc3RydWN0RGF0YSYpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIENh
bGxUeXBlIGdldENhbGxEYXRhKENhbGxEYXRhJik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IHZpcnR1YWwgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKENvbnN0cnVjdERhdGEmKTsK
IAogICAgICAgICAvLyBFeHRyYWN0aW5nIGludGVnZXIgdmFsdWVzLgogICAgICAgICAvLyBGSVhN
RTogcmVtb3ZlIHRoZXNlIG1ldGhvZHMsIGNhbiBjaGVjayBpc051bWJlckNlbGwgaW4gSlNWYWx1
ZSAmJiB0aGVuIGNhbGwgYXNOdW1iZXJDZWxsOjoqLgotICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0
VUludDMyKHVpbnQzMl90JikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1
YWwgYm9vbCBnZXRVSW50MzIodWludDMyX3QmKSBjb25zdDsKIAogICAgICAgICAvLyBCYXNpYyBj
b252ZXJzaW9ucy4KLSAgICAgICAgdmlydHVhbCBKU1ZhbHVlIHRvUHJpbWl0aXZlKEV4ZWNTdGF0
ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIGJvb2wg
Z2V0UHJpbWl0aXZlTnVtYmVyKEV4ZWNTdGF0ZSosIGRvdWJsZSYgbnVtYmVyLCBKU1ZhbHVlJik7
Ci0gICAgICAgIHZpcnR1YWwgYm9vbCB0b0Jvb2xlYW4oRXhlY1N0YXRlKikgY29uc3Q7Ci0gICAg
ICAgIHZpcnR1YWwgZG91YmxlIHRvTnVtYmVyKEV4ZWNTdGF0ZSopIGNvbnN0OwotICAgICAgICB2
aXJ0dWFsIFVTdHJpbmcgdG9TdHJpbmcoRXhlY1N0YXRlKikgY29uc3Q7Ci0gICAgICAgIHZpcnR1
YWwgSlNPYmplY3QqIHRvT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICBKU19FWFBP
UlRfUFJJVkFURSB2aXJ0dWFsIEpTVmFsdWUgdG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgUHJlZmVy
cmVkUHJpbWl0aXZlVHlwZSkgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1
YWwgYm9vbCBnZXRQcmltaXRpdmVOdW1iZXIoRXhlY1N0YXRlKiwgZG91YmxlJiBudW1iZXIsIEpT
VmFsdWUmKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCBib29sIHRvQm9vbGVh
bihFeGVjU3RhdGUqKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCBk
b3VibGUgdG9OdW1iZXIoRXhlY1N0YXRlKikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZpcnR1YWwgVVN0cmluZyB0b1N0cmluZyhFeGVjU3RhdGUqKSBjb25zdDsKKyAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCBKU09iamVjdCogdG9PYmplY3QoRXhlY1N0YXRlKikg
Y29uc3Q7CiAKICAgICAgICAgLy8gR2FyYmFnZSBjb2xsZWN0aW9uLgotICAgICAgICB2b2lkKiBv
cGVyYXRvciBuZXcoc2l6ZV90LCBFeGVjU3RhdGUqKTsKLSAgICAgICAgdm9pZCogb3BlcmF0b3Ig
bmV3KHNpemVfdCwgSlNHbG9iYWxEYXRhKik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZv
aWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIEV4ZWNTdGF0ZSopOworICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBKU0dsb2JhbERhdGEqKTsKICAgICAg
ICAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcGxhY2VtZW50TmV3RGVzdGluYXRp
b24pIHsgcmV0dXJuIHBsYWNlbWVudE5ld0Rlc3RpbmF0aW9uOyB9CiAKICAgICAgICAgdmlydHVh
bCB2b2lkIG1hcmtDaGlsZHJlbihNYXJrU3RhY2smKTsKQEAgLTEwMiwxNiArMTAzLDE2IEBACiAj
ZW5kaWYKIAogICAgICAgICAvLyBPYmplY3Qgb3BlcmF0aW9ucywgd2l0aCB0aGUgdG9PYmplY3Qg
b3BlcmF0aW9uIGluY2x1ZGVkLgotICAgICAgICB2aXJ0dWFsIGNvbnN0IENsYXNzSW5mbyogY2xh
c3NJbmZvKCkgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwdXQoRXhlY1N0YXRlKiwgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsK
LSAgICAgICAgdmlydHVhbCB2b2lkIHB1dChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUpOwotICAgICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0
YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKLSAgICAgICAgdmlydHVhbCBi
b29sIGRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7Cisg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0lu
Zm8oKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCB2b2lkIHB1dChF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFBy
b3BlcnR5U2xvdCYpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIHZvaWQgcHV0
KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSk7CisgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgYm9vbCBkZWxldGVQcm9wZXJ0eShFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSB2aXJ0dWFsIGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVy
dHlOYW1lKTsKIAotICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiB0b1RoaXNPYmplY3QoRXhlY1N0
YXRlKikgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgSlNWYWx1ZSBnZXRKU051bWJlcigpOwotICAg
ICAgICB2b2lkKiB2cHRyKCkgeyByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPih0aGlz
KTsgfQotICAgICAgICB2b2lkIHNldFZQdHIodm9pZCogdnB0cikgeyAqcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKio+KHRoaXMpID0gdnB0cjsgfQorICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0
dWFsIEpTT2JqZWN0KiB0b1RoaXNPYmplY3QoRXhlY1N0YXRlKikgY29uc3Q7CisgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgSlNWYWx1ZSBnZXRKU051bWJlcigpOworICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSB2b2lkKiB2cHRyKCkgeyByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZCoqPih0aGlzKTsgfQorICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldFZQdHIo
dm9pZCogdnB0cikgeyAqcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KHRoaXMpID0gdnB0cjsgfQog
CiAgICAgICAgIC8vIEZJWE1FOiBSZW5hbWUgZ2V0T3duUHJvcGVydHlTbG90IHRvIHZpcnR1YWxH
ZXRPd25Qcm9wZXJ0eVNsb3QsIGFuZAogICAgICAgICAvLyBmYXN0R2V0T3duUHJvcGVydHlTbG90
IHRvIGdldE93blByb3BlcnR5U2xvdC4gQ2FsbGVycyBzaG91bGQgYWx3YXlzCkBAIC0xMjQsOCAr
MTI1LDggQEAKIAogICAgIHByaXZhdGU6CiAgICAgICAgIC8vIEJhc2UgaW1wbGVtZW50YXRpb247
IGZvciBub24tb2JqZWN0IGNsYXNzZXMgaW1wbGVtZW50cyBnZXRQcm9wZXJ0eVNsb3QuCi0gICAg
ICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgdmlydHVhbCBi
b29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIGJvb2wg
Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwg
Ym9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgCiAgICAgICAgIFN0cnVjdHVyZSogbV9zdHJ1Y3R1
cmU7CiAgICAgfTsKQEAgLTE1MSw3ICsxNTIsNyBAQAogICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1
cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IE9iamVjdFR5cGU7CiAgICAgfQogCi0gICAgaW5saW5l
IGJvb2wgSlNDZWxsOjppc1N0cmluZygpIGNvbnN0CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgaW5s
aW5lIGJvb2wgSlNDZWxsOjppc1N0cmluZygpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4g
bV9zdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IFN0cmluZ1R5cGU7CiAgICAgfQpJbmRl
eDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCShyZXZpc2lvbiA2NjMxNSkKKysrIEphdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNMb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTc5LDggKzc5LDggQEAKICAg
ICAgICAgICAgIHVubG9jayhtX2xvY2tCZWhhdmlvcik7IAogICAgICAgICB9CiAgICAgICAgIAot
ICAgICAgICBzdGF0aWMgdm9pZCBsb2NrKEpTTG9ja0JlaGF2aW9yKTsKLSAgICAgICAgc3RhdGlj
IHZvaWQgdW5sb2NrKEpTTG9ja0JlaGF2aW9yKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIHZvaWQgbG9jayhKU0xvY2tCZWhhdmlvcik7CisgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyB2b2lkIHVubG9jayhKU0xvY2tCZWhhdmlvcik7CiAgICAgICAgIHN0YXRpYyB2
b2lkIGxvY2soRXhlY1N0YXRlKik7CiAgICAgICAgIHN0YXRpYyB2b2lkIHVubG9jayhFeGVjU3Rh
dGUqKTsKIApAQCAtODksNyArODksNyBAQAogCiAgICAgICAgIEpTTG9ja0JlaGF2aW9yIG1fbG9j
a0JlaGF2aW9yOwogCi0gICAgICAgIGNsYXNzIERyb3BBbGxMb2NrcyA6IHB1YmxpYyBOb25jb3B5
YWJsZSB7CisgICAgICAgIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIERyb3BBbGxMb2NrcyA6IHB1
YmxpYyBOb25jb3B5YWJsZSB7CiAgICAgICAgIHB1YmxpYzoKICAgICAgICAgICAgIERyb3BBbGxM
b2NrcyhFeGVjU3RhdGUqIGV4ZWMpOwogICAgICAgICAgICAgRHJvcEFsbExvY2tzKEpTTG9ja0Jl
aGF2aW9yKTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAkocmV2aXNp
b24gNjYzMTUpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNDMsNyArMjQzLDcgQEAKICAgICAgICAgICAgIHJldHVybiBtX2dldFZh
bHVlOwogICAgICAgICB9CiAgICAgcHJpdmF0ZToKLSAgICAgICAgSlNWYWx1ZSBmdW5jdGlvbkdl
dHRlcihFeGVjU3RhdGUqKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1
ZSBmdW5jdGlvbkdldHRlcihFeGVjU3RhdGUqKSBjb25zdDsKIAogICAgICAgICBHZXRWYWx1ZUZ1
bmMgbV9nZXRWYWx1ZTsKICAgICAgICAgR2V0SW5kZXhWYWx1ZUZ1bmMgbV9nZXRJbmRleFZhbHVl
OwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgJ
KHJldmlzaW9uIDY2MzE1KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0
cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAKICAgICAgICAgdmlydHVh
bCBDYWxsVHlwZSBnZXRDYWxsRGF0YShDYWxsRGF0YSYpOwogICAgIH07CiAKLSAgICBKU09iamVj
dCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiwgY29uc3QgQXJnTGlzdCYsIGNvbnN0IElk
ZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwgY29uc3QgVVN0cmluZyYgc291cmNlVVJMLCBpbnQgbGlu
ZU51bWJlcik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0
aW9uKEV4ZWNTdGF0ZSosIGNvbnN0IEFyZ0xpc3QmLCBjb25zdCBJZGVudGlmaWVyJiBmdW5jdGlv
bk5hbWUsIGNvbnN0IFVTdHJpbmcmIHNvdXJjZVVSTCwgaW50IGxpbmVOdW1iZXIpOwogICAgIEpT
T2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqLCBjb25zdCBBcmdMaXN0Jik7CiAK
IH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0
cmluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5n
cy5oCShyZXZpc2lvbiA2NjMxNSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJp
bmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTY1LDggKzY1LDggQEAKICAgICAgICAgSlNTdHJpbmcq
KiBzaW5nbGVDaGFyYWN0ZXJTdHJpbmdzKCkgeyByZXR1cm4gbV9zaW5nbGVDaGFyYWN0ZXJTdHJp
bmdzLmRhdGEoKTsgfQogI2VuZGlmCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCBjcmVhdGVF
bXB0eVN0cmluZyhKU0dsb2JhbERhdGEqKTsKLSAgICAgICAgdm9pZCBjcmVhdGVTaW5nbGVDaGFy
YWN0ZXJTdHJpbmcoSlNHbG9iYWxEYXRhKiwgdW5zaWduZWQgY2hhcik7CisgICAgICAgIEpTX0VY
UE9SVF9QUklWQVRFIHZvaWQgY3JlYXRlRW1wdHlTdHJpbmcoSlNHbG9iYWxEYXRhKik7CisgICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgY3JlYXRlU2luZ2xlQ2hhcmFjdGVyU3RyaW5nKEpT
R2xvYmFsRGF0YSosIHVuc2lnbmVkIGNoYXIpOwogCiAgICAgICAgIEpTU3RyaW5nKiBtX2VtcHR5
U3RyaW5nOwogICAgICAgICBGaXhlZEFycmF5PEpTU3RyaW5nKiwgMHgxMDA+IG1fc2luZ2xlQ2hh
cmFjdGVyU3RyaW5nczsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1l
QXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFt
ZUFycmF5LmgJKHJldmlzaW9uIDY2MzE1KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9w
ZXJ0eU5hbWVBcnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCw4ICs2OCw4IEBACiAKICAgICAg
ICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKCkgeyByZXR1cm4gbV9nbG9iYWxEYXRhOyB9CiAK
LSAgICAgICAgdm9pZCBhZGQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikgeyBhZGQoaWRl
bnRpZmllci5pbXBsKCkpOyB9Ci0gICAgICAgIHZvaWQgYWRkKFN0cmluZ0ltcGwqKTsKKyAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBhZGQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmll
cikgeyBhZGQoaWRlbnRpZmllci5pbXBsKCkpOyB9CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IHZvaWQgYWRkKFN0cmluZ0ltcGwqKTsKICAgICAgICAgdm9pZCBhZGRLbm93blVuaXF1ZShTdHJp
bmdJbXBsKiBpZGVudGlmaWVyKSB7IG1fZGF0YS0+cHJvcGVydHlOYW1lVmVjdG9yKCkuYXBwZW5k
KElkZW50aWZpZXIobV9nbG9iYWxEYXRhLCBpZGVudGlmaWVyKSk7IH0KIAogICAgICAgICBJZGVu
dGlmaWVyJiBvcGVyYXRvcltdKHVuc2lnbmVkIGkpIHsgcmV0dXJuIG1fZGF0YS0+cHJvcGVydHlO
YW1lVmVjdG9yKClbaV07IH0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgJKHJldmlzaW9uIDY2
MzE1KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oCSh3b3JraW5nIGNvcHkpCkBA
IC00NSwxMiArNDUsMTIgQEAKICAgICBKU09iamVjdCogY3JlYXRlVHlwZUVycm9yKEpTR2xvYmFs
T2JqZWN0KiwgY29uc3QgVVN0cmluZyYpOwogICAgIEpTT2JqZWN0KiBjcmVhdGVVUklFcnJvcihK
U0dsb2JhbE9iamVjdCosIGNvbnN0IFVTdHJpbmcmKTsKICAgICAvLyBFeGVjU3RhdGUgd3JhcHBl
cnMuCi0gICAgSlNPYmplY3QqIGNyZWF0ZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcm
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogY3JlYXRlRXJyb3IoRXhlY1N0YXRl
KiwgY29uc3QgVVN0cmluZyYpOwogICAgIEpTT2JqZWN0KiBjcmVhdGVFdmFsRXJyb3IoRXhlY1N0
YXRlKiwgY29uc3QgVVN0cmluZyYpOwotICAgIEpTT2JqZWN0KiBjcmVhdGVSYW5nZUVycm9yKEV4
ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmKTsKLSAgICBKU09iamVjdCogY3JlYXRlUmVmZXJlbmNl
RXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYpOwotICAgIEpTT2JqZWN0KiBjcmVhdGVT
eW50YXhFcnJvcihFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJik7Ci0gICAgSlNPYmplY3QqIGNy
ZWF0ZVR5cGVFcnJvcihFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJik7CisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgSlNPYmplY3QqIGNyZWF0ZVJhbmdlRXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgVVN0
cmluZyYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBjcmVhdGVSZWZlcmVuY2VF
cnJvcihFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
SlNPYmplY3QqIGNyZWF0ZVN5bnRheEVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmKTsK
KyAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogY3JlYXRlVHlwZUVycm9yKEV4ZWNTdGF0
ZSosIGNvbnN0IFVTdHJpbmcmKTsKICAgICBKU09iamVjdCogY3JlYXRlVVJJRXJyb3IoRXhlY1N0
YXRlKiwgY29uc3QgVVN0cmluZyYpOwogCiAgICAgLy8gTWV0aG9kcyB0byBhZGQgCkBAIC02Miwx
MiArNjIsMTIgQEAKICAgICBKU09iamVjdCogYWRkRXJyb3JJbmZvKEV4ZWNTdGF0ZSosIEpTT2Jq
ZWN0KiBlcnJvciwgaW50IGxpbmUsIGNvbnN0IFNvdXJjZUNvZGUmLCBpbnQgZGl2b3RQb2ludCwg
aW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0LCBib29sIHdpdGhDYXJldCA9IHRydWUpOwog
CiAgICAgLy8gTWV0aG9kcyB0byB0aHJvdyBFcnJvcnMuCi0gICAgSlNWYWx1ZSB0aHJvd0Vycm9y
KEV4ZWNTdGF0ZSosIEpTVmFsdWUpOwotICAgIEpTT2JqZWN0KiB0aHJvd0Vycm9yKEV4ZWNTdGF0
ZSosIEpTT2JqZWN0Kik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSB0aHJvd0Vycm9y
KEV4ZWNTdGF0ZSosIEpTVmFsdWUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0
aHJvd0Vycm9yKEV4ZWNTdGF0ZSosIEpTT2JqZWN0Kik7CiAKICAgICAvLyBDb252ZW5pZW5jZSB3
cmFwcGVycywgY3JlYXRlIGFuIHRocm93IGFuIGV4Y2VwdGlvbiB3aXRoIGEgZGVmYXVsdCBtZXNz
YWdlLgotICAgIEpTT2JqZWN0KiB0aHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqKTsKLSAgICBKU09i
amVjdCogdGhyb3dTeW50YXhFcnJvcihFeGVjU3RhdGUqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSBKU09iamVjdCogdGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRlKik7CisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgSlNPYmplY3QqIHRocm93U3ludGF4RXJyb3IoRXhlY1N0YXRlKik7CiAKICAgICAvLyBD
b252ZW5pZW5jZSB3cmFwcGVycywgd3JhcCByZXN1bHQgYXMgYW4gRW5jb2RlZEpTVmFsdWUuCiAg
ICAgaW5saW5lIEVuY29kZWRKU1ZhbHVlIHRocm93Vk1FcnJvcihFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgZXJyb3IpIHsgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0Vycm9yKGV4ZWMsIGVy
cm9yKSk7IH0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZy5oCShyZXZpc2lvbiA2NjMxNSkK
KysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
MCwyNCArMzAsMjQgQEAKIGNsYXNzIFVTdHJpbmcgewogcHVibGljOgogICAgIC8vIENvbnN0cnVj
dCBhIG51bGwgc3RyaW5nLCBkaXN0aW5ndWlzaGFibGUgZnJvbSBhbiBlbXB0eSBzdHJpbmcuCi0g
ICAgVVN0cmluZygpIHsgfQorICAgIEpTX0VYUE9SVF9QUklWQVRFIFVTdHJpbmcoKSB7IH0KIAog
ICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyB3aXRoIFVURi0xNiBkYXRhLgotICAgIFVTdHJpbmco
Y29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgVVN0cmluZyhjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3Ro
KTsKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyB3aXRoIFVURi0xNiBkYXRhLCBmcm9tIGEg
bnVsbC10ZXJtaW5hdGVkIHNvdXJjZS4KLSAgICBVU3RyaW5nKGNvbnN0IFVDaGFyKik7CisgICAg
SlNfRVhQT1JUX1BSSVZBVEUgVVN0cmluZyhjb25zdCBVQ2hhciopOwogCiAgICAgLy8gQ29uc3Ry
dWN0IGEgc3RyaW5nIHdpdGggbGF0aW4xIGRhdGEuCi0gICAgVVN0cmluZyhjb25zdCBjaGFyKiBj
aGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIFVTdHJp
bmcoY29uc3QgY2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKIAogICAgIC8vIENv
bnN0cnVjdCBhIHN0cmluZyB3aXRoIGxhdGluMSBkYXRhLCBmcm9tIGEgbnVsbC10ZXJtaW5hdGVk
IHNvdXJjZS4KLSAgICBVU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOworICAgIEpTX0VY
UE9SVF9QUklWQVRFIFVTdHJpbmcoY29uc3QgY2hhciogY2hhcmFjdGVycyk7CiAKICAgICAvLyBD
b25zdHJ1Y3QgYSBzdHJpbmcgcmVmZXJlbmNpbmcgYW4gZXhpc3RpbmcgU3RyaW5nSW1wbC4KLSAg
ICBVU3RyaW5nKFN0cmluZ0ltcGwqIGltcGwpIDogbV9pbXBsKGltcGwpIHsgfQotICAgIFVTdHJp
bmcoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBpbXBsKSA6IG1faW1wbChpbXBsKSB7IH0KLSAgICBV
U3RyaW5nKFJlZlB0cjxTdHJpbmdJbXBsPiBpbXBsKSA6IG1faW1wbChpbXBsKSB7IH0KKyAgICBK
U19FWFBPUlRfUFJJVkFURSBVU3RyaW5nKFN0cmluZ0ltcGwqIGltcGwpIDogbV9pbXBsKGltcGwp
IHsgfQorICAgIEpTX0VYUE9SVF9QUklWQVRFIFVTdHJpbmcoUGFzc1JlZlB0cjxTdHJpbmdJbXBs
PiBpbXBsKSA6IG1faW1wbChpbXBsKSB7IH0KKyAgICBKU19FWFBPUlRfUFJJVkFURSBVU3RyaW5n
KFJlZlB0cjxTdHJpbmdJbXBsPiBpbXBsKSA6IG1faW1wbChpbXBsKSB7IH0KIAogICAgIC8vIElu
bGluZSB0aGUgZGVzdHJ1Y3Rvci4KICAgICBBTFdBWVNfSU5MSU5FIH5VU3RyaW5nKCkgeyB9CkBA
IC03Niw5ICs3Niw5IEBACiAgICAgICAgIHJldHVybiBtX2ltcGwtPmNoYXJhY3RlcnMoKTsKICAg
ICB9CiAKLSAgICBDU3RyaW5nIGFzY2lpKCkgY29uc3Q7Ci0gICAgQ1N0cmluZyBsYXRpbjEoKSBj
b25zdDsKLSAgICBDU3RyaW5nIHV0ZjgoYm9vbCBzdHJpY3QgPSBmYWxzZSkgY29uc3Q7CisgICAg
SlNfRVhQT1JUX1BSSVZBVEUgQ1N0cmluZyBhc2NpaSgpIGNvbnN0OworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIENTdHJpbmcgbGF0aW4xKCkgY29uc3Q7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgQ1N0
cmluZyB1dGY4KGJvb2wgc3RyaWN0ID0gZmFsc2UpIGNvbnN0OwogCiAgICAgVUNoYXIgb3BlcmF0
b3JbXSh1bnNpZ25lZCBpbmRleCkgY29uc3QKICAgICB7CkBAIC04NywxMSArODcsMTEgQEAKICAg
ICAgICAgcmV0dXJuIG1faW1wbC0+Y2hhcmFjdGVycygpW2luZGV4XTsKICAgICB9CiAKLSAgICBz
dGF0aWMgVVN0cmluZyBudW1iZXIoaW50KTsKLSAgICBzdGF0aWMgVVN0cmluZyBudW1iZXIodW5z
aWduZWQpOwotICAgIHN0YXRpYyBVU3RyaW5nIG51bWJlcihsb25nKTsKLSAgICBzdGF0aWMgVVN0
cmluZyBudW1iZXIobG9uZyBsb25nKTsKLSAgICBzdGF0aWMgVVN0cmluZyBudW1iZXIoZG91Ymxl
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgVVN0cmluZyBudW1iZXIoaW50KTsKKyAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgVVN0cmluZyBudW1iZXIodW5zaWduZWQpOworICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBVU3RyaW5nIG51bWJlcihsb25nKTsKKyAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgVVN0cmluZyBudW1iZXIobG9uZyBsb25nKTsKKyAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgVVN0cmluZyBudW1iZXIoZG91YmxlKTsKIAogICAgIC8vIEZp
bmQgYSBzaW5nbGUgY2hhcmFjdGVyIG9yIHN0cmluZywgYWxzbyB3aXRoIG1hdGNoIGZ1bmN0aW9u
ICYgbGF0aW4xIGZvcm1zLgogICAgIHNpemVfdCBmaW5kKFVDaGFyIGMsIHVuc2lnbmVkIHN0YXJ0
ID0gMCkgY29uc3QKQEAgLTEwNyw3ICsxMDcsNyBAQAogICAgIHNpemVfdCByZXZlcnNlRmluZChj
b25zdCBVU3RyaW5nJiBzdHIsIHVuc2lnbmVkIHN0YXJ0ID0gVUlOVF9NQVgpIGNvbnN0CiAgICAg
ICAgIHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+cmV2ZXJzZUZpbmQoc3RyLmltcGwoKSwgc3Rh
cnQpIDogbm90Rm91bmQ7IH0KIAotICAgIFVTdHJpbmcgc3Vic3RyaW5nU2hhcmluZ0ltcGwodW5z
aWduZWQgcG9zLCB1bnNpZ25lZCBsZW4gPSBVSU5UX01BWCkgY29uc3Q7CisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgVVN0cmluZyBzdWJzdHJpbmdTaGFyaW5nSW1wbCh1bnNpZ25lZCBwb3MsIHVuc2ln
bmVkIGxlbiA9IFVJTlRfTUFYKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBSZWZQdHI8U3RyaW5n
SW1wbD4gbV9pbXBsOwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5jZS5oCShy
ZXZpc2lvbiA2NjMxNSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMxLDggKzMxLDggQEAKIAogICAgIGNsYXNzIERhdGVJbnN0YW5j
ZSA6IHB1YmxpYyBKU1dyYXBwZXJPYmplY3QgewogICAgIHB1YmxpYzoKLSAgICAgICAgRGF0ZUlu
c3RhbmNlKEV4ZWNTdGF0ZSosIGRvdWJsZSk7Ci0gICAgICAgIERhdGVJbnN0YW5jZShFeGVjU3Rh
dGUqLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBkb3VibGUpOworICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSBEYXRlSW5zdGFuY2UoRXhlY1N0YXRlKiwgZG91YmxlKTsKKyAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgRGF0ZUluc3RhbmNlKEV4ZWNTdGF0ZSosIE5vbk51bGxQYXNzUmVm
UHRyPFN0cnVjdHVyZT4sIGRvdWJsZSk7CiAgICAgICAgIGV4cGxpY2l0IERhdGVJbnN0YW5jZShF
eGVjU3RhdGUqLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+KTsKIAogICAgICAgICBkb3Vi
bGUgaW50ZXJuYWxOdW1iZXIoKSBjb25zdCB7IHJldHVybiBpbnRlcm5hbFZhbHVlKCkudW5jaGVj
a2VkR2V0TnVtYmVyKCk7IH0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvUm9wZUltcGwu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JvcGVJbXBsLmgJKHJldmlz
aW9uIDY2MzE1KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9Sb3BlSW1wbC5oCSh3b3JraW5n
IGNvcHkpCkBAIC04Myw3ICs4Myw3IEBACiAgICAgewogICAgIH0KIAotICAgIHZvaWQgZGVzdHJ1
Y3ROb25SZWN1cnNpdmUoKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGRlc3RydWN0Tm9u
UmVjdXJzaXZlKCk7CiAgICAgdm9pZCBkZXJlZkZpYmVyc05vblJlY3Vyc2l2ZShWZWN0b3I8Um9w
ZUltcGwqLCAzMj4mIHdvcmtRdWV1ZSk7CiAKICAgICBib29sIGhhc09uZVJlZigpIHsgcmV0dXJu
IChtX3JlZkNvdW50QW5kRmxhZ3MgJiBzX3JlZkNvdW50TWFzaykgPT0gc19yZWZDb3VudEluY3Jl
bWVudDsgfQpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCShyZXZpc2lv
biA2NjMxNSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEwNSw3ICsxMDUsNyBAQAogICAgICAgICAvLyB0aGUgb3JpZ2luYWwgQVBJ
LgogICAgICAgICBlbnVtIEdsb2JhbERhdGFUeXBlIHsgRGVmYXVsdCwgQVBJQ29udGV4dEdyb3Vw
LCBBUElTaGFyZWQgfTsKIAotICAgICAgICBzdHJ1Y3QgQ2xpZW50RGF0YSB7CisgICAgICAgIHN0
cnVjdCBKU19FWFBPUlRfUFJJVkFURSBDbGllbnREYXRhIHsKICAgICAgICAgICAgIHZpcnR1YWwg
fkNsaWVudERhdGEoKSA9IDA7CiAgICAgICAgIH07CiAKQEAgLTExMywxMCArMTEzLDEwIEBACiAg
ICAgICAgIHN0YXRpYyBib29sIHNoYXJlZEluc3RhbmNlRXhpc3RzKCk7CiAgICAgICAgIHN0YXRp
YyBKU0dsb2JhbERhdGEmIHNoYXJlZEluc3RhbmNlKCk7CiAKLSAgICAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8SlNHbG9iYWxEYXRhPiBjcmVhdGUoVGhyZWFkU3RhY2tUeXBlKTsKLSAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8SlNHbG9iYWxEYXRhPiBjcmVhdGVMZWFrZWQoVGhyZWFkU3RhY2tUeXBl
KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8SlNHbG9iYWxE
YXRhPiBjcmVhdGUoVGhyZWFkU3RhY2tUeXBlKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIFBhc3NSZWZQdHI8SlNHbG9iYWxEYXRhPiBjcmVhdGVMZWFrZWQoVGhyZWFkU3RhY2tU
eXBlKTsKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SlNHbG9iYWxEYXRhPiBjcmVhdGVDb250
ZXh0R3JvdXAoVGhyZWFkU3RhY2tUeXBlKTsKLSAgICAgICAgfkpTR2xvYmFsRGF0YSgpOworICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSB+SlNHbG9iYWxEYXRhKCk7CiAKICNpZiBFTkFCTEUoSlND
X01VTFRJUExFX1RIUkVBRFMpCiAgICAgICAgIC8vIFdpbGwgc3RhcnQgdHJhY2tpbmcgdGhyZWFk
cyB0aGF0IHVzZSB0aGUgaGVhcCwgd2hpY2ggaXMgcmVzb3VyY2UtaGVhdnkuCkBAIC0yMjksMTEg
KzIyOSwxMSBAQAogICAgICAgICBDYWNoZWRUcmFuc2NlbmRlbnRhbEZ1bmN0aW9uPHNpbj4gY2Fj
aGVkU2luOwogICAgICAgICBXVEY6OlRocmVhZFNwZWNpZmljPGNoYXIqPiBzdGFja0d1YXJkczsK
IAotICAgICAgICB2b2lkIHJlc2V0RGF0ZUNhY2hlKCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQgcmVzZXREYXRlQ2FjaGUoKTsKIAotICAgICAgICB2b2lkIHN0YXJ0U2FtcGxpbmco
KTsKLSAgICAgICAgdm9pZCBzdG9wU2FtcGxpbmcoKTsKLSAgICAgICAgdm9pZCBkdW1wU2FtcGxl
RGF0YShFeGVjU3RhdGUqIGV4ZWMpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHN0
YXJ0U2FtcGxpbmcoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzdG9wU2FtcGxp
bmcoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkdW1wU2FtcGxlRGF0YShFeGVj
U3RhdGUqIGV4ZWMpOwogICAgICAgICBSZWdFeHBDYWNoZSogcmVnRXhwQ2FjaGUoKSB7IHJldHVy
biBtX3JlZ0V4cENhY2hlOyB9CiAgICAgcHJpdmF0ZToKICAgICAgICAgSlNHbG9iYWxEYXRhKEds
b2JhbERhdGFUeXBlLCBUaHJlYWRTdGFja1R5cGUpOwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UaW1lb3V0Q2hlY2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVGltZW91dENoZWNrZXIuaAkocmV2aXNpb24gNjYzMTUpCisrKyBKYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1RpbWVvdXRDaGVja2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDkgKzU3LDkgQEAK
ICAgICAgICAgICAgIC0tbV9zdGFydENvdW50OwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBy
ZXNldCgpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHJlc2V0KCk7CiAKLSAgICAg
ICAgYm9vbCBkaWRUaW1lT3V0KEV4ZWNTdGF0ZSopOworICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSBib29sIGRpZFRpbWVPdXQoRXhlY1N0YXRlKik7CiAKICAgICBwcml2YXRlOgogICAgICAgICB1
bnNpZ25lZCBtX3RpbWVvdXRJbnRlcnZhbDsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDY2MzE1KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBACiAKICAg
ICB0eXBlZGVmIFZlY3RvcjxFeGVjU3RhdGUqLCAxNj4gRXhlY1N0YXRlU3RhY2s7CiAgICAgCi0g
ICAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNWYXJpYWJsZU9iamVjdCB7CisgICAg
Y2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNWYXJpYWJs
ZU9iamVjdCB7CiAgICAgcHJvdGVjdGVkOgogICAgICAgICB1c2luZyBKU1ZhcmlhYmxlT2JqZWN0
OjpKU1ZhcmlhYmxlT2JqZWN0RGF0YTsKICAgICAgICAgdHlwZWRlZiBIYXNoU2V0PFJlZlB0cjxP
cGFxdWVKU1dlYWtPYmplY3RNYXA+ID4gV2Vha01hcFNldDsKSW5kZXg6IEphdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdFdpdGhHbG9iYWxPYmplY3QuaAkocmV2aXNpb24gNjYz
MTUpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0V2l0aEdsb2JhbE9iamVjdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMCArMzksMTAgQEAKICAgICAgICAgcmV0dXJuIFN0cnVj
dHVyZTo6Y3JlYXRlKHByb3RvLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyks
IEFub255bW91c1Nsb3RDb3VudCk7CiAgICAgfQogCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCgpIGNvbnN0OworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QoKSBjb25zdDsKIAogcHJvdGVjdGVkOgotICAgIEpTT2JqZWN0V2l0aEdsb2Jh
bE9iamVjdChKU0dsb2JhbE9iamVjdCosIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4pOwor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdChKU0dsb2JhbE9i
amVjdCosIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4pOwogCiAgICAgSlNPYmplY3RXaXRo
R2xvYmFsT2JqZWN0KE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlKQogICAg
ICAgICA6IEpTT2JqZWN0KHN0cnVjdHVyZSkKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5o
CShyZXZpc2lvbiA2NjMxNSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC01NSw5ICs1NSw5IEBACiAgICAgdHlwZWRlZiB2b2lkKiBFbmNvZGVk
SlNWYWx1ZTsKICNlbmRpZgogCi0gICAgZG91YmxlIG5vbklubGluZU5hTigpOwotICAgIGludDMy
X3QgdG9JbnQzMlNsb3dDYXNlKGRvdWJsZSwgYm9vbCYgb2spOwotICAgIHVpbnQzMl90IHRvVUlu
dDMyU2xvd0Nhc2UoZG91YmxlLCBib29sJiBvayk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgZG91
YmxlIG5vbklubGluZU5hTigpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIGludDMyX3QgdG9JbnQz
MlNsb3dDYXNlKGRvdWJsZSwgYm9vbCYgb2spOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHVpbnQz
Ml90IHRvVUludDMyU2xvd0Nhc2UoZG91YmxlLCBib29sJiBvayk7CiAKICAgICBjbGFzcyBKU1Zh
bHVlIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpTSW1tZWRpYXRlOwpAQCAtMjAwLDcgKzIwMCw3
IEBACiAKICAgICAgICAgYm9vbCBpc0NlbGwoKSBjb25zdDsKICAgICAgICAgSlNDZWxsKiBhc0Nl
bGwoKSBjb25zdDsKLSAgICAgICAgYm9vbCBpc1ZhbGlkQ2FsbGVlKCk7CisgICAgICAgIEpTX0VY
UE9SVF9QUklWQVRFIGJvb2wgaXNWYWxpZENhbGxlZSgpOwogCiAjaWZuZGVmIE5ERUJVRwogICAg
ICAgICBjaGFyKiBkZXNjcmlwdGlvbigpOwpAQCAtMjExLDEwICsyMTEsMTAgQEAKICAgICAgICAg
SlNWYWx1ZShIYXNoVGFibGVEZWxldGVkVmFsdWVUYWcpOwogCiAgICAgICAgIGlubGluZSBjb25z
dCBKU1ZhbHVlIGFzVmFsdWUoKSBjb25zdCB7IHJldHVybiAqdGhpczsgfQotICAgICAgICBKU09i
amVjdCogdG9PYmplY3RTbG93Q2FzZShFeGVjU3RhdGUqKSBjb25zdDsKLSAgICAgICAgSlNPYmpl
Y3QqIHRvVGhpc09iamVjdFNsb3dDYXNlKEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSBKU09iamVjdCogdG9PYmplY3RTbG93Q2FzZShFeGVjU3RhdGUqKSBjb25z
dDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRvVGhpc09iamVjdFNsb3dD
YXNlKEV4ZWNTdGF0ZSopIGNvbnN0OwogCi0gICAgICAgIEpTT2JqZWN0KiBzeW50aGVzaXplUHJv
dG90eXBlKEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBKU09i
amVjdCogc3ludGhlc2l6ZVByb3RvdHlwZShFeGVjU3RhdGUqKSBjb25zdDsKICAgICAgICAgSlNP
YmplY3QqIHN5bnRoZXNpemVPYmplY3QoRXhlY1N0YXRlKikgY29uc3Q7CiAKICNpZiBVU0UoSlNW
QUxVRTMyXzY0KQpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0
b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5RGVzY3Jp
cHRvci5oCShyZXZpc2lvbiA2NjMxNSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVy
dHlEZXNjcmlwdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDggKzQ2LDggQEAKICAgICAgICAg
SlNWYWx1ZSB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KICAgICAgICAgSlNWYWx1
ZSBnZXR0ZXIoKSBjb25zdDsKICAgICAgICAgSlNWYWx1ZSBzZXR0ZXIoKSBjb25zdDsKLSAgICAg
ICAgdm9pZCBzZXRVbmRlZmluZWQoKTsKLSAgICAgICAgdm9pZCBzZXREZXNjcmlwdG9yKEpTVmFs
dWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSB2b2lkIHNldFVuZGVmaW5lZCgpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNl
dERlc2NyaXB0b3IoSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAgICAg
IHZvaWQgc2V0QWNjZXNzb3JEZXNjcmlwdG9yKEpTVmFsdWUgZ2V0dGVyLCBKU1ZhbHVlIHNldHRl
ciwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAgICAgIHZvaWQgc2V0V3JpdGFibGUoYm9vbCk7
CiAgICAgICAgIHZvaWQgc2V0RW51bWVyYWJsZShib29sKTsKSW5kZXg6IEphdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29sbGVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db2xsZWN0b3IuaAkocmV2aXNpb24gNjYzMTUpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbGxlY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC05MSwxMyArOTEsMTMgQEAKICAgICBwdWJs
aWM6CiAgICAgICAgIGNsYXNzIFRocmVhZDsKIAotICAgICAgICB2b2lkIGRlc3Ryb3koKTsKKyAg
ICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkZXN0cm95KCk7CiAKICAgICAgICAgdm9pZCog
YWxsb2NhdGVOdW1iZXIoc2l6ZV90KTsKLSAgICAgICAgdm9pZCogYWxsb2NhdGUoc2l6ZV90KTsK
KyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCogYWxsb2NhdGUoc2l6ZV90KTsKIAotICAg
ICAgICBib29sIGlzQnVzeSgpOyAvLyB0cnVlIGlmIGFuIGFsbG9jYXRpb24gb3IgY29sbGVjdGlv
biBpcyBpbiBwcm9ncmVzcwotICAgICAgICB2b2lkIGNvbGxlY3RBbGxHYXJiYWdlKCk7CisgICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNCdXN5KCk7IC8vIHRydWUgaWYgYW4gYWxsb2Nh
dGlvbiBvciBjb2xsZWN0aW9uIGlzIGluIHByb2dyZXNzCisgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQgY29sbGVjdEFsbEdhcmJhZ2UoKTsKICAgICAgICAgdm9pZCBzZXRBY3Rpdml0eUNh
bGxiYWNrKFBhc3NPd25QdHI8R0NBY3Rpdml0eUNhbGxiYWNrPik7CiAKICAgICAgICAgc3RhdGlj
IGNvbnN0IHNpemVfdCBtaW5FeHRyYUNvc3QgPSAyNTY7CkBAIC0xMTEsMTIgKzExMSwxMiBAQAog
ICAgICAgICAgICAgc2l6ZV90IGZyZWU7CiAgICAgICAgIH07CiAgICAgICAgIFN0YXRpc3RpY3Mg
c3RhdGlzdGljcygpIGNvbnN0OwotICAgICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0OworICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSBzaXplX3Qgc2l6ZSgpIGNvbnN0OwogCi0gICAgICAgIHZvaWQg
cHJvdGVjdChKU1ZhbHVlKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBwcm90ZWN0
KEpTVmFsdWUpOwogICAgICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIHZhbHVlIGlzIG5vIGxv
bmdlciBwcm90ZWN0ZWQgYnkgYW55IHByb3RlY3QgcG9pbnRlcnMKICAgICAgICAgLy8gKHRob3Vn
aCBpdCBtYXkgc3RpbGwgYmUgYWxpdmUgZHVlIHRvIGhlYXAvc3RhY2sgcmVmZXJlbmNlcykuCi0g
ICAgICAgIGJvb2wgdW5wcm90ZWN0KEpTVmFsdWUpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSBib29sIHVucHJvdGVjdChKU1ZhbHVlKTsKIAogICAgICAgICBzdGF0aWMgSGVhcCogaGVhcChK
U1ZhbHVlKTsgLy8gMCBmb3IgaW1tZWRpYXRlIHZhbHVlcwogICAgICAgICBzdGF0aWMgSGVhcCog
aGVhcChKU0NlbGwqKTsKQEAgLTEzMyw3ICsxMzMsNyBAQAogICAgICAgICBzdGF0aWMgYm9vbCBj
aGVja01hcmtDZWxsKGNvbnN0IEpTQ2VsbCopOwogICAgICAgICBzdGF0aWMgdm9pZCBtYXJrQ2Vs
bChKU0NlbGwqKTsKIAotICAgICAgICBXZWFrR0NIYW5kbGUqIGFkZFdlYWtHQ0hhbmRsZShKU0Nl
bGwqKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgV2Vha0dDSGFuZGxlKiBhZGRXZWFrR0NI
YW5kbGUoSlNDZWxsKik7CiAKICAgICAgICAgdm9pZCBtYXJrQ29uc2VydmF0aXZlbHkoTWFya1N0
YWNrJiwgdm9pZCogc3RhcnQsIHZvaWQqIGVuZCk7CiAKQEAgLTE2NSw3ICsxNjUsNyBAQAogICAg
ICAgICB2b2lkIGNsZWFyTWFya0JpdHMoQ29sbGVjdG9yQmxvY2sqKTsKICAgICAgICAgc2l6ZV90
IG1hcmtlZENlbGxzKHNpemVfdCBzdGFydEJsb2NrID0gMCwgc2l6ZV90IHN0YXJ0Q2VsbCA9IDAp
IGNvbnN0OwogCi0gICAgICAgIHZvaWQgcmVjb3JkRXh0cmFDb3N0KHNpemVfdCk7CisgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVjb3JkRXh0cmFDb3N0KHNpemVfdCk7CiAKICAgICAg
ICAgdm9pZCBhZGRUb1N0YXRpc3RpY3MoU3RhdGlzdGljcyYpIGNvbnN0OwogCkluZGV4OiBKYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmgJKHJldmlzaW9uIDY2MzE1KQorKysg
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dyYXBwZXJPYmplY3QuaAkod29ya2luZyBjb3B5KQpA
QCAtMjgsNyArMjgsNyBAQAogCiAgICAgLy8gVGhpcyBjbGFzcyBpcyB1c2VkIGFzIGEgYmFzZSBm
b3IgY2xhc3NlcyBzdWNoIGFzIFN0cmluZywKICAgICAvLyBOdW1iZXIsIEJvb2xlYW4gYW5kIERh
dGUgd2hpY2ggYXJlIHdyYXBwZXJzIGZvciBwcmltaXRpdmUgdHlwZXMuCi0gICAgY2xhc3MgSlNX
cmFwcGVyT2JqZWN0IDogcHVibGljIEpTT2JqZWN0IHsKKyAgICBjbGFzcyBKU19FWFBPUlRfUFJJ
VkFURSBKU1dyYXBwZXJPYmplY3QgOiBwdWJsaWMgSlNPYmplY3QgewogICAgIHByb3RlY3RlZDoK
ICAgICAgICAgZXhwbGljaXQgSlNXcmFwcGVyT2JqZWN0KE5vbk51bGxQYXNzUmVmUHRyPFN0cnVj
dHVyZT4pOwogCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhbGxEYXRhLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWxsRGF0YS5oCShyZXZpc2lvbiA2NjMx
NSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FsbERhdGEuaAkod29ya2luZyBjb3B5KQpA
QCAtNTgsNyArNTgsNyBAQAogICAgICAgICB9IGpzOwogICAgIH07CiAKLSAgICBKU1ZhbHVlIGNh
bGwoRXhlY1N0YXRlKiwgSlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwgQ2FsbFR5cGUsIGNvbnN0IENh
bGxEYXRhJiwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3QmKTsKKyAgICBKU19FWFBP
UlRfUFJJVkFURSBKU1ZhbHVlIGNhbGwoRXhlY1N0YXRlKiwgSlNWYWx1ZSBmdW5jdGlvbk9iamVj
dCwgQ2FsbFR5cGUsIGNvbnN0IENhbGxEYXRhJiwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEFy
Z0xpc3QmKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29uc3RydWN0RGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29uc3RydWN0RGF0YS5oCShyZXZpc2lvbiA2NjMxNSkKKysrIEphdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29uc3RydWN0RGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw3ICs1Nyw3IEBACiAg
ICAgICAgIH0ganM7CiAgICAgfTsKIAotICAgIEpTT2JqZWN0KiBjb25zdHJ1Y3QoRXhlY1N0YXRl
KiwgSlNWYWx1ZSBjb25zdHJ1Y3RvciwgQ29uc3RydWN0VHlwZSwgY29uc3QgQ29uc3RydWN0RGF0
YSYsIGNvbnN0IEFyZ0xpc3QmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogY29u
c3RydWN0KEV4ZWNTdGF0ZSosIEpTVmFsdWUgY29uc3RydWN0b3IsIENvbnN0cnVjdFR5cGUsIGNv
bnN0IENvbnN0cnVjdERhdGEmLCBjb25zdCBBcmdMaXN0Jik7CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwogCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcmtTdGFjay5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFya1N0YWNrLmgJKHJldmlzaW9uIDY2MzE1KQor
KysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXJrU3RhY2suaAkod29ya2luZyBjb3B5KQpAQCAt
ODUsOCArODUsOCBAQAogICAgICAgICAgICAgTWFya1NldFByb3BlcnRpZXMgbV9wcm9wZXJ0aWVz
OwogICAgICAgICB9OwogCi0gICAgICAgIHN0YXRpYyB2b2lkKiBhbGxvY2F0ZVN0YWNrKHNpemVf
dCBzaXplKTsKLSAgICAgICAgc3RhdGljIHZvaWQgcmVsZWFzZVN0YWNrKHZvaWQqIGFkZHIsIHNp
emVfdCBzaXplKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQqIGFsbG9j
YXRlU3RhY2soc2l6ZV90IHNpemUpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
dm9pZCByZWxlYXNlU3RhY2sodm9pZCogYWRkciwgc2l6ZV90IHNpemUpOwogCiAgICAgICAgIHN0
YXRpYyB2b2lkIGluaXRpYWxpemVQYWdlc2l6ZSgpOwogICAgICAgICBzdGF0aWMgc2l6ZV90IHBh
Z2VTaXplKCkKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGlu
Zy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVh
ZGluZy5oCShyZXZpc2lvbiA2NjMxNSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlh
bGl6ZVRocmVhZGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAKICAgICAv
LyBUaGlzIGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVkIGZyb20gdGhlIG1haW4gdGhyZWFkLiBJdCBp
cyBzYWZlIHRvIGNhbGwgaXQgcmVwZWF0ZWRseS4KICAgICAvLyBEYXJ3aW4gaXMgYW4gZXhjZXB0
aW9uIHRvIHRoaXMgcnVsZTogaXQgaXMgT0sgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIGZyb20gYW55
IHRocmVhZCwgZXZlbiByZWVudHJhbnRseS4KLSAgICB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmco
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKTsKIAog
fQogCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9jb25maWcuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0Q29yZS9jb25maWcuaAkocmV2aXNpb24gNjYzMTUpCisrKyBKYXZhU2NyaXB0Q29yZS9jb25m
aWcuaAkod29ya2luZyBjb3B5KQpAQCAtMjksMTggKzI5LDIxIEBACiAKICNpbmNsdWRlIDx3dGYv
UGxhdGZvcm0uaD4KIAotI2lmICFQTEFURk9STShDSFJPTUlVTSkgJiYgT1MoV0lORE9XUykgJiYg
IWRlZmluZWQoQlVJTERJTkdfV1hfXykgJiYgIUNPTVBJTEVSKEdDQykKKyNpZiAhUExBVEZPUk0o
Q0hST01JVU0pICYmIE9TKFdJTkRPV1MpICYmICFDT01QSUxFUihHQ0MpCiAjaWYgZGVmaW5lZChC
VUlMRElOR19KYXZhU2NyaXB0Q29yZSkgfHwgZGVmaW5lZChCVUlMRElOR19XVEYpCiAjZGVmaW5l
IEpTX0VYUE9SVERBVEEgX19kZWNsc3BlYyhkbGxleHBvcnQpCiAjZWxzZQogI2RlZmluZSBKU19F
WFBPUlREQVRBIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQogI2VuZGlmCi0jZGVmaW5lIEpTX0VYUE9S
VENMQVNTIEpTX0VYUE9SVERBVEEKKyNlbGlmIGRlZmluZWQoX19HTlVDX18pICYmICFkZWZpbmVk
KF9fQ0NfQVJNKSAmJiAhZGVmaW5lZChfX0FSTUNDX18pCisjZGVmaW5lIEpTX0VYUE9SVERBVEEg
X19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkKICNlbHNlCiAjZGVmaW5lIEpT
X0VYUE9SVERBVEEKLSNkZWZpbmUgSlNfRVhQT1JUQ0xBU1MKICNlbmRpZgogCisjZGVmaW5lIEpT
X0VYUE9SVENMQVNTIEpTX0VYUE9SVERBVEEKKyNkZWZpbmUgSlNfRVhQT1JUX1BSSVZBVEUgSlNf
RVhQT1JUREFUQQorCiAjaWYgT1MoV0lORE9XUykKIAogLy8gSWYgd2UgZG9uJ3QgZGVmaW5lIHRo
ZXNlLCB0aGV5IGdldCBkZWZpbmVkIGluIHdpbmRlZi5oLiAKSW5kZXg6IEphdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCShyZXZpc2lvbiA2NjMxNSkK
KysrIEphdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC05MCw3ICs5MCw3IEBACiAgICAgICAgIHR5cGVkZWYgRGVjbGFyYXRpb25T
dGFja3M6OlZhclN0YWNrIFZhclN0YWNrOwogICAgICAgICB0eXBlZGVmIERlY2xhcmF0aW9uU3Rh
Y2tzOjpGdW5jdGlvblN0YWNrIEZ1bmN0aW9uU3RhY2s7CiAKLSAgICAgICAgc3RhdGljIHZvaWQg
c2V0RHVtcHNHZW5lcmF0ZWRDb2RlKGJvb2wgZHVtcHNHZW5lcmF0ZWRDb2RlKTsKKyAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgc2V0RHVtcHNHZW5lcmF0ZWRDb2RlKGJvb2wg
ZHVtcHNHZW5lcmF0ZWRDb2RlKTsKICAgICAgICAgc3RhdGljIGJvb2wgZHVtcHNHZW5lcmF0ZWRD
b2RlKCk7CiAKICAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoUHJvZ3JhbU5vZGUqLCBjb25zdCBE
ZWJ1Z2dlciosIGNvbnN0IFNjb3BlQ2hhaW4mLCBTeW1ib2xUYWJsZSosIFByb2dyYW1Db2RlQmxv
Y2sqKTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9SYW5kb21OdW1iZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvUmFuZG9tTnVtYmVyLmgJKHJldmlzaW9uIDY2MzE1KQor
KysgSmF2YVNjcmlwdENvcmUvd3RmL1JhbmRvbU51bWJlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
MCw3ICszMCw3IEBACiAKICAgICAvLyBSZXR1cm5zIGEgcHNldWRvLXJhbmRvbSBudW1iZXIgaW4g
dGhlIHJhbmdlIFswLCAxKSwgYXR0ZW1wdHMgdG8gYmUKICAgICAvLyBjcnlwdG9ncmFwaGljYWxs
eSBzZWN1cmUgaWYgcG9zc2libGUgb24gdGhlIHRhcmdldCBwbGF0Zm9ybQotICAgIGRvdWJsZSBy
YW5kb21OdW1iZXIoKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBkb3VibGUgcmFuZG9tTnVtYmVy
KCk7CiAKIH0KIApJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL1JlZkNvdW50ZWRMZWFrQ291bnRl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9SZWZDb3VudGVkTGVha0NvdW50
ZXIuaAkocmV2aXNpb24gNjYzMTUpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvUmVmQ291bnRlZExl
YWtDb3VudGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKIAogbmFtZXNwYWNl
IFdURiB7CiAgICAgCi0gICAgc3RydWN0IFJlZkNvdW50ZWRMZWFrQ291bnRlciB7CisgICAgc3Ry
dWN0IEpTX0VYUE9SVF9QUklWQVRFIFJlZkNvdW50ZWRMZWFrQ291bnRlciB7CiAgICAgICAgIHN0
YXRpYyB2b2lkIHN1cHByZXNzTWVzc2FnZXMoY29uc3QgY2hhciopOwogICAgICAgICBzdGF0aWMg
dm9pZCBjYW5jZWxNZXNzYWdlU3VwcHJlc3Npb24oY29uc3QgY2hhciopOwogICAgICAgICAKSW5k
ZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L0NTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZh
U2NyaXB0Q29yZS93dGYvdGV4dC9DU3RyaW5nLmgJKHJldmlzaW9uIDY2MzE1KQorKysgSmF2YVNj
cmlwdENvcmUvd3RmL3RleHQvQ1N0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3
IEBACiAjaWZuZGVmIENTdHJpbmdfaAogI2RlZmluZSBDU3RyaW5nX2gKIAorI2luY2x1ZGUgIkpT
QmFzZS5oIgogI2luY2x1ZGUgIlBhc3NSZWZQdHIuaCIKICNpbmNsdWRlICJSZWZDb3VudGVkLmgi
CiAjaW5jbHVkZSAiVmVjdG9yLmgiCkBAIC01MiwxMiArNTMsMTMgQEAKIGNsYXNzIENTdHJpbmcg
ewogcHVibGljOgogICAgIENTdHJpbmcoKSB7IH0KLSAgICBDU3RyaW5nKGNvbnN0IGNoYXIqKTsK
LSAgICBDU3RyaW5nKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIEpTX0VYUE9S
VF9QUklWQVRFIENTdHJpbmcoY29uc3QgY2hhciopOworICAgIEpTX0VYUE9SVF9QUklWQVRFIENT
dHJpbmcoY29uc3QgY2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgQ1N0cmluZyhDU3RyaW5n
QnVmZmVyKiBidWZmZXIpIDogbV9idWZmZXIoYnVmZmVyKSB7IH0KLSAgICBzdGF0aWMgQ1N0cmlu
ZyBuZXdVbmluaXRpYWxpemVkKHNpemVfdCBsZW5ndGgsIGNoYXIqJiBjaGFyYWN0ZXJCdWZmZXIp
OworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBDU3RyaW5nIG5ld1VuaW5pdGlhbGl6ZWQo
c2l6ZV90IGxlbmd0aCwgY2hhciomIGNoYXJhY3RlckJ1ZmZlcik7CiAKLSAgICBjb25zdCBjaGFy
KiBkYXRhKCkgY29uc3QKKyAgIEpTX0VYUE9SVF9QUklWQVRFIH5DU3RyaW5nKCkgeyB9CisgICAg
SlNfRVhQT1JUX1BSSVZBVEUgY29uc3QgY2hhciogZGF0YSgpIGNvbnN0CiAgICAgewogICAgICAg
ICByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+ZGF0YSgpIDogMDsKICAgICB9CkBAIC03Nyw3
ICs3OSw3IEBACiAgICAgUmVmUHRyPENTdHJpbmdCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAotYm9v
bCBvcGVyYXRvcj09KGNvbnN0IENTdHJpbmcmIGEsIGNvbnN0IENTdHJpbmcmIGIpOworSlNfRVhQ
T1JUX1BSSVZBVEUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTdHJpbmcmIGEsIGNvbnN0IENTdHJp
bmcmIGIpOwogaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBDU3RyaW5nJiBhLCBjb25zdCBD
U3RyaW5nJiBiKSB7IHJldHVybiAhKGEgPT0gYik7IH0KIAogfSAvLyBuYW1lc3BhY2UgV1RGCklu
ZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9BdG9taWNTdHJpbmcuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBKYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9BdG9taWNTdHJpbmcuaAkocmV2aXNpb24gNjYzMTUp
CisrKyBKYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9BdG9taWNTdHJpbmcuaAkod29ya2luZyBjb3B5
KQpAQCAtMzgsMjcgKzM4LDMxIEBACiAKIGNsYXNzIEF0b21pY1N0cmluZyB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIHZvaWQgaW5pdCgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lk
IGluaXQoKTsKIAotICAgIEF0b21pY1N0cmluZygpIHsgfQotICAgIEF0b21pY1N0cmluZyhjb25z
dCBjaGFyKiBzKSA6IG1fc3RyaW5nKGFkZChzKSkgeyB9CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
QXRvbWljU3RyaW5nKCkgeyB9CisgICAvLyBjb3B5IGNvbnN0cnVjdG9yIG5lZWRzIHRvIGJlIGV4
cGxpY2l0bHkgZGVmaW5lZCBzbyB3ZSBjYW4gc3BlY2lmeSBwcm9wZXIgZGxsIGxpbmthZ2UKKyAg
IEpTX0VYUE9SVF9QUklWQVRFIEF0b21pY1N0cmluZyhjb25zdCBBdG9taWNTdHJpbmcmIHMpIDog
bV9zdHJpbmcocy5tX3N0cmluZykgeyB9CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgQXRvbWljU3Ry
aW5nKGNvbnN0IGNoYXIqIHMpIDogbV9zdHJpbmcoYWRkKHMpKSB7IH0KICAgICBBdG9taWNTdHJp
bmcoY29uc3QgVUNoYXIqIHMsIHVuc2lnbmVkIGxlbmd0aCkgOiBtX3N0cmluZyhhZGQocywgbGVu
Z3RoKSkgeyB9CiAgICAgQXRvbWljU3RyaW5nKGNvbnN0IFVDaGFyKiBzLCB1bnNpZ25lZCBsZW5n
dGgsIHVuc2lnbmVkIGV4aXN0aW5nSGFzaCkgOiBtX3N0cmluZyhhZGQocywgbGVuZ3RoLCBleGlz
dGluZ0hhc2gpKSB7IH0KICAgICBBdG9taWNTdHJpbmcoY29uc3QgVUNoYXIqIHMpIDogbV9zdHJp
bmcoYWRkKHMpKSB7IH0KICAgICBBVE9NSUNTVFJJTkdfQ09OVkVSU0lPTiBBdG9taWNTdHJpbmco
U3RyaW5nSW1wbCogaW1wKSA6IG1fc3RyaW5nKGFkZChpbXApKSB7IH0KICAgICBBdG9taWNTdHJp
bmcoQXRvbWljU3RyaW5nSW1wbCogaW1wKSA6IG1fc3RyaW5nKGltcCkgeyB9Ci0gICAgQVRPTUlD
U1RSSU5HX0NPTlZFUlNJT04gQXRvbWljU3RyaW5nKGNvbnN0IFN0cmluZyYgcykgOiBtX3N0cmlu
ZyhhZGQocy5pbXBsKCkpKSB7IH0KKyAgICBKU19FWFBPUlRfUFJJVkFURSBBVE9NSUNTVFJJTkdf
Q09OVkVSU0lPTiBBdG9taWNTdHJpbmcoY29uc3QgU3RyaW5nJiBzKSA6IG1fc3RyaW5nKGFkZChz
LmltcGwoKSkpIHsgfQogCiAgICAgLy8gSGFzaCB0YWJsZSBkZWxldGVkIHZhbHVlcywgd2hpY2gg
YXJlIG9ubHkgY29uc3RydWN0ZWQgYW5kIG5ldmVyIGNvcGllZCBvciBkZXN0cm95ZWQuCi0gICAg
QXRvbWljU3RyaW5nKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkgOiBtX3N0cmluZyhX
VEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkgeyB9Ci0gICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0
ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVl
KCk7IH0KKyAgICBKU19FWFBPUlRfUFJJVkFURSBBdG9taWNTdHJpbmcoV1RGOjpIYXNoVGFibGVE
ZWxldGVkVmFsdWVUeXBlKSA6IG1fc3RyaW5nKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKSB7
IH0KKyAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkg
Y29uc3QgeyByZXR1cm4gbV9zdHJpbmcuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQogCi0g
ICAgc3RhdGljIEF0b21pY1N0cmluZ0ltcGwqIGZpbmQoY29uc3QgVUNoYXIqIHMsIHVuc2lnbmVk
IGxlbmd0aCwgdW5zaWduZWQgZXhpc3RpbmdIYXNoKTsKKyAgIEpTX0VYUE9SVF9QUklWQVRFIH5B
dG9taWNTdHJpbmcoKSB7IH0KIAorICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBBdG9taWNT
dHJpbmdJbXBsKiBmaW5kKGNvbnN0IFVDaGFyKiBzLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVk
IGV4aXN0aW5nSGFzaCk7CisKICAgICBvcGVyYXRvciBjb25zdCBTdHJpbmcmKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdHJpbmc7IH0KICAgICBjb25zdCBTdHJpbmcmIHN0cmluZygpIGNvbnN0IHsgcmV0
dXJuIG1fc3RyaW5nOyB9OwogCi0gICAgQXRvbWljU3RyaW5nSW1wbCogaW1wbCgpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PEF0b21pY1N0cmluZ0ltcGwgKj4obV9zdHJpbmcuaW1wbCgpKTsg
fQorICAgIEpTX0VYUE9SVF9QUklWQVRFIEF0b21pY1N0cmluZ0ltcGwqIGltcGwoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxBdG9taWNTdHJpbmdJbXBsICo+KG1fc3RyaW5nLmltcGwoKSk7
IH0KICAgICAKICAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycygpIGNvbnN0IHsgcmV0dXJuIG1f
c3RyaW5nLmNoYXJhY3RlcnMoKTsgfQogICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RyaW5nLmxlbmd0aCgpOyB9CkBAIC04Miw3ICs4Niw3IEBACiAgICAgYm9vbCBlbmRz
V2l0aChjb25zdCBTdHJpbmcmIHMsIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IHRydWUpIGNvbnN0CiAg
ICAgICAgIHsgcmV0dXJuIG1fc3RyaW5nLmVuZHNXaXRoKHMsIGNhc2VTZW5zaXRpdmUpOyB9CiAg
ICAgCi0gICAgQXRvbWljU3RyaW5nIGxvd2VyKCkgY29uc3Q7CisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgQXRvbWljU3RyaW5nIGxvd2VyKCkgY29uc3Q7CiAgICAgQXRvbWljU3RyaW5nIHVwcGVyKCkg
Y29uc3QgeyByZXR1cm4gQXRvbWljU3RyaW5nKGltcGwoKS0+dXBwZXIoKSk7IH0KICAgICAKICAg
ICBpbnQgdG9JbnQoYm9vbCogb2sgPSAwKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy50b0ludChv
ayk7IH0KQEAgLTEwOCwyNCArMTEyLDI2IEBACiAgICAgb3BlcmF0b3IgUVN0cmluZygpIGNvbnN0
IHsgcmV0dXJuIG1fc3RyaW5nOyB9CiAjZW5kaWYKIAorICAgSlNfRVhQT1JUX1BSSVZBVEUgaW5s
aW5lIEF0b21pY1N0cmluZyYgb3BlcmF0b3I9KGNvbnN0IEF0b21pY1N0cmluZyYgYSkgeyBpZiAo
dGhpcyAhPSAmYSkgbV9zdHJpbmcgPSBhLm1fc3RyaW5nOyByZXR1cm4gKnRoaXM7IH0KKwogcHJp
dmF0ZToKICAgICBTdHJpbmcgbV9zdHJpbmc7CiAgICAgCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8
U3RyaW5nSW1wbD4gYWRkKGNvbnN0IGNoYXIqKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJp
bmdJbXBsPiBhZGQoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCwg
dW5zaWduZWQgZXhpc3RpbmdIYXNoKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBs
PiBhZGQoY29uc3QgVUNoYXIqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1Jl
ZlB0cjxTdHJpbmdJbXBsPiBhZGQoY29uc3QgY2hhciopOworICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChjb25zdCBVQ2hhciosIHVuc2lnbmVk
IGxlbmd0aCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5n
SW1wbD4gYWRkKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBleGlzdGlu
Z0hhc2gpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0lt
cGw+IGFkZChjb25zdCBVQ2hhciopOwogICAgIEFMV0FZU19JTkxJTkUgUGFzc1JlZlB0cjxTdHJp
bmdJbXBsPiBhZGQoU3RyaW5nSW1wbCogcikKICAgICB7CiAgICAgICAgIGlmICghciB8fCByLT5p
c0F0b21pYygpKQogICAgICAgICAgICAgcmV0dXJuIHI7CiAgICAgICAgIHJldHVybiBhZGRTbG93
Q2FzZShyKTsKICAgICB9Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRkU2xv
d0Nhc2UoU3RyaW5nSW1wbCopOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQYXNzUmVm
UHRyPFN0cmluZ0ltcGw+IGFkZFNsb3dDYXNlKFN0cmluZ0ltcGwqKTsKIH07CiAKIGlubGluZSBi
b29sIG9wZXJhdG9yPT0oY29uc3QgQXRvbWljU3RyaW5nJiBhLCBjb25zdCBBdG9taWNTdHJpbmcm
IGIpIHsgcmV0dXJuIGEuaW1wbCgpID09IGIuaW1wbCgpOyB9Ci1ib29sIG9wZXJhdG9yPT0oY29u
c3QgQXRvbWljU3RyaW5nJiBhLCBjb25zdCBjaGFyKiBiKTsKK0pTX0VYUE9SVF9QUklWQVRFIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBBdG9taWNTdHJpbmcmIGEsIGNvbnN0IGNoYXIqIGIpOwogaW5s
aW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBdG9taWNTdHJpbmcmIGEsIGNvbnN0IFN0cmluZyYg
YikgeyByZXR1cm4gZXF1YWwoYS5pbXBsKCksIGIuaW1wbCgpKTsgfQogaW5saW5lIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBjaGFyKiBhLCBjb25zdCBBdG9taWNTdHJpbmcmIGIpIHsgcmV0dXJuIGIg
PT0gYTsgfQogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHJpbmcmIGEsIGNvbnN0IEF0
b21pY1N0cmluZyYgYikgeyByZXR1cm4gZXF1YWwoYS5pbXBsKCksIGIuaW1wbCgpKTsgfQpJbmRl
eDogSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvV1RGU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2
YVNjcmlwdENvcmUvd3RmL3RleHQvV1RGU3RyaW5nLmgJKHJldmlzaW9uIDY2MzE1KQorKysgSmF2
YVNjcmlwdENvcmUvd3RmL3RleHQvV1RGU3RyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDQy
ICs1Nyw0MiBAQAogLy8gRGVjbGFyYXRpb25zIG9mIHN0cmluZyBvcGVyYXRpb25zCiAKIGJvb2wg
Y2hhcmFjdGVyc0FyZUFsbEFTQ0lJKGNvbnN0IFVDaGFyKiwgc2l6ZV90KTsKLWludCBjaGFyYWN0
ZXJzVG9JbnRTdHJpY3QoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gMCwgaW50IGJh
c2UgPSAxMCk7Ci11bnNpZ25lZCBjaGFyYWN0ZXJzVG9VSW50U3RyaWN0KGNvbnN0IFVDaGFyKiwg
c2l6ZV90LCBib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApOworSlNfRVhQT1JUX1BSSVZBVEUg
aW50IGNoYXJhY3RlcnNUb0ludFN0cmljdChjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sg
PSAwLCBpbnQgYmFzZSA9IDEwKTsKK0pTX0VYUE9SVF9QUklWQVRFIHVuc2lnbmVkIGNoYXJhY3Rl
cnNUb1VJbnRTdHJpY3QoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gMCwgaW50IGJh
c2UgPSAxMCk7CiBpbnQ2NF90IGNoYXJhY3RlcnNUb0ludDY0U3RyaWN0KGNvbnN0IFVDaGFyKiwg
c2l6ZV90LCBib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApOwogdWludDY0X3QgY2hhcmFjdGVy
c1RvVUludDY0U3RyaWN0KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDAsIGludCBi
YXNlID0gMTApOwogaW50cHRyX3QgY2hhcmFjdGVyc1RvSW50UHRyU3RyaWN0KGNvbnN0IFVDaGFy
Kiwgc2l6ZV90LCBib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApOwogCi1pbnQgY2hhcmFjdGVy
c1RvSW50KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDApOyAvLyBpZ25vcmVzIHRy
YWlsaW5nIGdhcmJhZ2UKK0pTX0VYUE9SVF9QUklWQVRFIGludCBjaGFyYWN0ZXJzVG9JbnQoY29u
c3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gMCk7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2Fy
YmFnZQogdW5zaWduZWQgY2hhcmFjdGVyc1RvVUludChjb25zdCBVQ2hhciosIHNpemVfdCwgYm9v
bCogb2sgPSAwKTsgLy8gaWdub3JlcyB0cmFpbGluZyBnYXJiYWdlCiBpbnQ2NF90IGNoYXJhY3Rl
cnNUb0ludDY0KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDApOyAvLyBpZ25vcmVz
IHRyYWlsaW5nIGdhcmJhZ2UKIHVpbnQ2NF90IGNoYXJhY3RlcnNUb1VJbnQ2NChjb25zdCBVQ2hh
ciosIHNpemVfdCwgYm9vbCogb2sgPSAwKTsgLy8gaWdub3JlcyB0cmFpbGluZyBnYXJiYWdlCiBp
bnRwdHJfdCBjaGFyYWN0ZXJzVG9JbnRQdHIoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9r
ID0gMCk7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQogCi1kb3VibGUgY2hhcmFjdGVyc1Rv
RG91YmxlKGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDApOworSlNfRVhQT1JUX1BS
SVZBVEUgZG91YmxlIGNoYXJhY3RlcnNUb0RvdWJsZShjb25zdCBVQ2hhciosIHNpemVfdCwgYm9v
bCogb2sgPSAwKTsKIGZsb2F0IGNoYXJhY3RlcnNUb0Zsb2F0KGNvbnN0IFVDaGFyKiwgc2l6ZV90
LCBib29sKiBvayA9IDApOwogCiBjbGFzcyBTdHJpbmcgewogcHVibGljOgogICAgIC8vIENvbnN0
cnVjdCBhIG51bGwgc3RyaW5nLCBkaXN0aW5ndWlzaGFibGUgZnJvbSBhbiBlbXB0eSBzdHJpbmcu
Ci0gICAgU3RyaW5nKCkgeyB9CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgU3RyaW5nKCkgeyB9CiAK
ICAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBVVEYtMTYgZGF0YS4KLSAgICBTdHJpbmco
Y29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgU3RyaW5nKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgp
OwogCiAgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdpdGggVVRGLTE2IGRhdGEsIGZyb20gYSBu
dWxsLXRlcm1pbmF0ZWQgc291cmNlLgotICAgIFN0cmluZyhjb25zdCBVQ2hhciopOworICAgIEpT
X0VYUE9SVF9QUklWQVRFIFN0cmluZyhjb25zdCBVQ2hhciopOwogCiAgICAgLy8gQ29uc3RydWN0
IGEgc3RyaW5nIHdpdGggbGF0aW4xIGRhdGEuCi0gICAgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJh
Y3RlcnMsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNv
bnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCk7CiAKICAgICAvLyBDb25zdHJ1
Y3QgYSBzdHJpbmcgd2l0aCBsYXRpbjEgZGF0YSwgZnJvbSBhIG51bGwtdGVybWluYXRlZCBzb3Vy
Y2UuCi0gICAgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIFN0cmluZyhjb25zdCBjaGFyKiBjaGFyYWN0ZXJzKTsKIAogICAgIC8vIENvbnN0cnVj
dCBhIHN0cmluZyByZWZlcmVuY2luZyBhbiBleGlzdGluZyBTdHJpbmdJbXBsLgotICAgIFN0cmlu
ZyhTdHJpbmdJbXBsKiBpbXBsKSA6IG1faW1wbChpbXBsKSB7IH0KLSAgICBTdHJpbmcoUGFzc1Jl
ZlB0cjxTdHJpbmdJbXBsPiBpbXBsKSA6IG1faW1wbChpbXBsKSB7IH0KLSAgICBTdHJpbmcoUmVm
UHRyPFN0cmluZ0ltcGw+IGltcGwpIDogbV9pbXBsKGltcGwpIHsgfQorICAgIEpTX0VYUE9SVF9Q
UklWQVRFIFN0cmluZyhTdHJpbmdJbXBsKiBpbXBsKSA6IG1faW1wbChpbXBsKSB7IH0KKyAgICBK
U19FWFBPUlRfUFJJVkFURSBTdHJpbmcoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBpbXBsKSA6IG1f
aW1wbChpbXBsKSB7IH0KKyAgICBKU19FWFBPUlRfUFJJVkFURSBTdHJpbmcoUmVmUHRyPFN0cmlu
Z0ltcGw+IGltcGwpIDogbV9pbXBsKGltcGwpIHsgfQogCiAgICAgLy8gSW5saW5lIHRoZSBkZXN0
cnVjdG9yLgogICAgIEFMV0FZU19JTkxJTkUgflN0cmluZygpIHsgfQpAQCAtMTIyLDkgKzEyMiw5
IEBACiAgICAgICAgIHJldHVybiBtX2ltcGwtPmNoYXJhY3RlcnMoKTsKICAgICB9CiAKLSAgICBD
U3RyaW5nIGFzY2lpKCkgY29uc3Q7Ci0gICAgQ1N0cmluZyBsYXRpbjEoKSBjb25zdDsKLSAgICBD
U3RyaW5nIHV0ZjgoYm9vbCBzdHJpY3QgPSBmYWxzZSkgY29uc3Q7CisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgQ1N0cmluZyBhc2NpaSgpIGNvbnN0OworICAgIEpTX0VYUE9SVF9QUklWQVRFIENTdHJp
bmcgbGF0aW4xKCkgY29uc3Q7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgQ1N0cmluZyB1dGY4KGJv
b2wgc3RyaWN0ID0gZmFsc2UpIGNvbnN0OwogCiAgICAgVUNoYXIgb3BlcmF0b3JbXSh1bnNpZ25l
ZCBpbmRleCkgY29uc3QKICAgICB7CkBAIC0xMzMsMTUgKzEzMywxNSBAQAogICAgICAgICByZXR1
cm4gbV9pbXBsLT5jaGFyYWN0ZXJzKClbaW5kZXhdOwogICAgIH0KIAotICAgIHN0YXRpYyBTdHJp
bmcgbnVtYmVyKHNob3J0KTsKLSAgICBzdGF0aWMgU3RyaW5nIG51bWJlcih1bnNpZ25lZCBzaG9y
dCk7Ci0gICAgc3RhdGljIFN0cmluZyBudW1iZXIoaW50KTsKLSAgICBzdGF0aWMgU3RyaW5nIG51
bWJlcih1bnNpZ25lZCk7Ci0gICAgc3RhdGljIFN0cmluZyBudW1iZXIobG9uZyk7Ci0gICAgc3Rh
dGljIFN0cmluZyBudW1iZXIodW5zaWduZWQgbG9uZyk7Ci0gICAgc3RhdGljIFN0cmluZyBudW1i
ZXIobG9uZyBsb25nKTsKLSAgICBzdGF0aWMgU3RyaW5nIG51bWJlcih1bnNpZ25lZCBsb25nIGxv
bmcpOwotICAgIHN0YXRpYyBTdHJpbmcgbnVtYmVyKGRvdWJsZSk7CisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIFN0cmluZyBudW1iZXIoc2hvcnQpOworICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBTdHJpbmcgbnVtYmVyKHVuc2lnbmVkIHNob3J0KTsKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgU3RyaW5nIG51bWJlcihpbnQpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBTdHJpbmcgbnVtYmVyKHVuc2lnbmVkKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgU3RyaW5nIG51bWJlcihsb25nKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3Ry
aW5nIG51bWJlcih1bnNpZ25lZCBsb25nKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
U3RyaW5nIG51bWJlcihsb25nIGxvbmcpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBT
dHJpbmcgbnVtYmVyKHVuc2lnbmVkIGxvbmcgbG9uZyk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIFN0cmluZyBudW1iZXIoZG91YmxlKTsKIAogICAgIC8vIEZpbmQgYSBzaW5nbGUgY2hh
cmFjdGVyIG9yIHN0cmluZywgYWxzbyB3aXRoIG1hdGNoIGZ1bmN0aW9uICYgbGF0aW4xIGZvcm1z
LgogICAgIHNpemVfdCBmaW5kKFVDaGFyIGMsIHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29uc3QKQEAg
LTE2MCw5ICsxNjAsOSBAQAogICAgICAgICB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPnJldmVy
c2VGaW5kKHN0ci5pbXBsKCksIHN0YXJ0KSA6IG5vdEZvdW5kOyB9CiAKICAgICAvLyBDYXNlIGlu
c2Vuc2l0aXZlIHN0cmluZyBtYXRjaGluZy4KLSAgICBzaXplX3QgZmluZElnbm9yaW5nQ2FzZShj
b25zdCBjaGFyKiBzdHIsIHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29uc3QKKyAgICBKU19FWFBPUlRf
UFJJVkFURSBzaXplX3QgZmluZElnbm9yaW5nQ2FzZShjb25zdCBjaGFyKiBzdHIsIHVuc2lnbmVk
IHN0YXJ0ID0gMCkgY29uc3QKICAgICAgICAgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5k
SWdub3JpbmdDYXNlKHN0ciwgc3RhcnQpIDogbm90Rm91bmQ7IH0KLSAgICBzaXplX3QgZmluZEln
bm9yaW5nQ2FzZShjb25zdCBTdHJpbmcmIHN0ciwgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdAor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHNpemVfdCBmaW5kSWdub3JpbmdDYXNlKGNvbnN0IFN0cmlu
ZyYgc3RyLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0CiAgICAgICAgIHsgcmV0dXJuIG1faW1w
bCA/IG1faW1wbC0+ZmluZElnbm9yaW5nQ2FzZShzdHIuaW1wbCgpLCBzdGFydCkgOiBub3RGb3Vu
ZDsgfQogICAgIHNpemVfdCByZXZlcnNlRmluZElnbm9yaW5nQ2FzZShjb25zdCBTdHJpbmcmIHN0
ciwgdW5zaWduZWQgc3RhcnQgPSBVSU5UX01BWCkgY29uc3QKICAgICAgICAgeyByZXR1cm4gbV9p
bXBsID8gbV9pbXBsLT5yZXZlcnNlRmluZElnbm9yaW5nQ2FzZShzdHIuaW1wbCgpLCBzdGFydCkg
OiBub3RGb3VuZDsgfQpAQCAtMTc1LDkgKzE3NSw5IEBACiAgICAgc2l6ZV90IHJldmVyc2VGaW5k
KGNvbnN0IFN0cmluZyYgc3RyLCB1bnNpZ25lZCBzdGFydCwgYm9vbCBjYXNlU2Vuc2l0aXZlKSBj
b25zdAogICAgICAgICB7IHJldHVybiBjYXNlU2Vuc2l0aXZlID8gcmV2ZXJzZUZpbmQoc3RyLCBz
dGFydCkgOiByZXZlcnNlRmluZElnbm9yaW5nQ2FzZShzdHIsIHN0YXJ0KTsgfQogCi0gICAgY29u
c3QgVUNoYXIqIGNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCk7CisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCk7CiAg
ICAgCi0gICAgVUNoYXIzMiBjaGFyYWN0ZXJTdGFydGluZ0F0KHVuc2lnbmVkKSBjb25zdDsgLy8g
RGl0dG8uCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgVUNoYXIzMiBjaGFyYWN0ZXJTdGFydGluZ0F0
KHVuc2lnbmVkKSBjb25zdDsgLy8gRGl0dG8uCiAgICAgCiAgICAgYm9vbCBjb250YWlucyhVQ2hh
ciBjKSBjb25zdCB7IHJldHVybiBmaW5kKGMpICE9IG5vdEZvdW5kOyB9CiAgICAgYm9vbCBjb250
YWlucyhjb25zdCBjaGFyKiBzdHIsIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IHRydWUpIGNvbnN0IHsg
cmV0dXJuIGZpbmQoc3RyLCAwLCBjYXNlU2Vuc2l0aXZlKSAhPSBub3RGb3VuZDsgfQpAQCAtMTg4
LDExICsxODgsMTEgQEAKICAgICBib29sIGVuZHNXaXRoKGNvbnN0IFN0cmluZyYgcywgYm9vbCBj
YXNlU2Vuc2l0aXZlID0gdHJ1ZSkgY29uc3QKICAgICAgICAgeyByZXR1cm4gbV9pbXBsID8gbV9p
bXBsLT5lbmRzV2l0aChzLmltcGwoKSwgY2FzZVNlbnNpdGl2ZSkgOiBzLmlzRW1wdHkoKTsgfQog
Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBhcHBlbmQoY2hhcik7
Ci0gICAgdm9pZCBhcHBlbmQoVUNoYXIpOwotICAgIHZvaWQgYXBwZW5kKGNvbnN0IFVDaGFyKiwg
dW5zaWduZWQgbGVuZ3RoKTsKLSAgICB2b2lkIGluc2VydChjb25zdCBTdHJpbmcmLCB1bnNpZ25l
ZCBwb3MpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYp
OworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgYXBwZW5kKGNoYXIpOworICAgIEpTX0VYUE9S
VF9QUklWQVRFIHZvaWQgYXBwZW5kKFVDaGFyKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lk
IGFwcGVuZChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgdm9pZCBpbnNlcnQoY29uc3QgU3RyaW5nJiwgdW5zaWduZWQgcG9zKTsKICAgICB2b2lk
IGluc2VydChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgcG9zKTsKIAog
ICAgIFN0cmluZyYgcmVwbGFjZShVQ2hhciBhLCBVQ2hhciBiKSB7IGlmIChtX2ltcGwpIG1faW1w
bCA9IG1faW1wbC0+cmVwbGFjZShhLCBiKTsgcmV0dXJuICp0aGlzOyB9CkBAIC0yMDQsMzAgKzIw
NCwzMCBAQAogICAgIHZvaWQgbWFrZVVwcGVyKCkgeyBpZiAobV9pbXBsKSBtX2ltcGwgPSBtX2lt
cGwtPnVwcGVyKCk7IH0KICAgICB2b2lkIG1ha2VTZWN1cmUoVUNoYXIgYUNoYXIpIHsgaWYgKG1f
aW1wbCkgbV9pbXBsID0gbV9pbXBsLT5zZWN1cmUoYUNoYXIpOyB9CiAKLSAgICB2b2lkIHRydW5j
YXRlKHVuc2lnbmVkIGxlbik7Ci0gICAgdm9pZCByZW1vdmUodW5zaWduZWQgcG9zLCBpbnQgbGVu
ID0gMSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCB0cnVuY2F0ZSh1bnNpZ25lZCBsZW4p
OworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVtb3ZlKHVuc2lnbmVkIHBvcywgaW50IGxl
biA9IDEpOwogCi0gICAgU3RyaW5nIHN1YnN0cmluZyh1bnNpZ25lZCBwb3MsIHVuc2lnbmVkIGxl
biA9IFVJTlRfTUFYKSBjb25zdDsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBTdHJpbmcgc3Vic3Ry
aW5nKHVuc2lnbmVkIHBvcywgdW5zaWduZWQgbGVuID0gVUlOVF9NQVgpIGNvbnN0OwogICAgIFN0
cmluZyBzdWJzdHJpbmdTaGFyaW5nSW1wbCh1bnNpZ25lZCBwb3MsIHVuc2lnbmVkIGxlbiA9IFVJ
TlRfTUFYKSBjb25zdDsKICAgICBTdHJpbmcgbGVmdCh1bnNpZ25lZCBsZW4pIGNvbnN0IHsgcmV0
dXJuIHN1YnN0cmluZygwLCBsZW4pOyB9CiAgICAgU3RyaW5nIHJpZ2h0KHVuc2lnbmVkIGxlbikg
Y29uc3QgeyByZXR1cm4gc3Vic3RyaW5nKGxlbmd0aCgpIC0gbGVuLCBsZW4pOyB9CiAKICAgICAv
LyBSZXR1cm5zIGEgbG93ZXJjYXNlL3VwcGVyY2FzZSB2ZXJzaW9uIG9mIHRoZSBzdHJpbmcKLSAg
ICBTdHJpbmcgbG93ZXIoKSBjb25zdDsKLSAgICBTdHJpbmcgdXBwZXIoKSBjb25zdDsKKyAgICBK
U19FWFBPUlRfUFJJVkFURSBTdHJpbmcgbG93ZXIoKSBjb25zdDsKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSBTdHJpbmcgdXBwZXIoKSBjb25zdDsKIAotICAgIFN0cmluZyBzdHJpcFdoaXRlU3BhY2Uo
KSBjb25zdDsKLSAgICBTdHJpbmcgc2ltcGxpZnlXaGl0ZVNwYWNlKCkgY29uc3Q7CisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nIHN0cmlwV2hpdGVTcGFjZSgpIGNvbnN0OworICAgIEpTX0VY
UE9SVF9QUklWQVRFIFN0cmluZyBzaW1wbGlmeVdoaXRlU3BhY2UoKSBjb25zdDsKIAotICAgIFN0
cmluZyByZW1vdmVDaGFyYWN0ZXJzKENoYXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIpIGNvbnN0Owor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0cmluZyByZW1vdmVDaGFyYWN0ZXJzKENoYXJhY3Rlck1h
dGNoRnVuY3Rpb25QdHIpIGNvbnN0OwogCiAgICAgLy8gUmV0dXJuIHRoZSBzdHJpbmcgd2l0aCBj
YXNlIGZvbGRlZCBmb3IgY2FzZSBpbnNlbnNpdGl2ZSBjb21wYXJpc29uLgotICAgIFN0cmluZyBm
b2xkQ2FzZSgpIGNvbnN0OworICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0cmluZyBmb2xkQ2FzZSgp
IGNvbnN0OwogCiAjaWYgIVBMQVRGT1JNKFFUKQotICAgIHN0YXRpYyBTdHJpbmcgZm9ybWF0KGNv
bnN0IGNoYXIgKiwgLi4uKSBXVEZfQVRUUklCVVRFX1BSSU5URigxLCAyKTsKKyAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgU3RyaW5nIGZvcm1hdChjb25zdCBjaGFyICosIC4uLikgV1RGX0FU
VFJJQlVURV9QUklOVEYoMSwgMik7CiAjZWxzZQotICAgIHN0YXRpYyBTdHJpbmcgZm9ybWF0KGNv
bnN0IGNoYXIgKiwgLi4uKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RyaW5nIGZv
cm1hdChjb25zdCBjaGFyICosIC4uLik7CiAjZW5kaWYKIAogICAgIC8vIFJldHVybnMgYW4gdW5p
bml0aWFsaXplZCBzdHJpbmcuIFRoZSBjaGFyYWN0ZXJzIG5lZWRzIHRvIGJlIHdyaXR0ZW4KQEAg
LTIzNSwzNCArMjM1LDM0IEBACiAgICAgLy8gRmFpbHVyZSB0byBkbyB0aGlzIHdpbGwgaGF2ZSB1
bnByZWRpY3RhYmxlIHJlc3VsdHMuCiAgICAgc3RhdGljIFN0cmluZyBjcmVhdGVVbmluaXRpYWxp
emVkKHVuc2lnbmVkIGxlbmd0aCwgVUNoYXIqJiBkYXRhKSB7IHJldHVybiBTdHJpbmdJbXBsOjpj
cmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCwgZGF0YSk7IH0KIAotICAgIHZvaWQgc3BsaXQoY29u
c3QgU3RyaW5nJiBzZXBhcmF0b3IsIFZlY3RvcjxTdHJpbmc+JiByZXN1bHQpIGNvbnN0OwotICAg
IHZvaWQgc3BsaXQoY29uc3QgU3RyaW5nJiBzZXBhcmF0b3IsIGJvb2wgYWxsb3dFbXB0eUVudHJp
ZXMsIFZlY3RvcjxTdHJpbmc+JiByZXN1bHQpIGNvbnN0OwotICAgIHZvaWQgc3BsaXQoVUNoYXIg
c2VwYXJhdG9yLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KSBjb25zdDsKLSAgICB2b2lkIHNwbGl0
KFVDaGFyIHNlcGFyYXRvciwgYm9vbCBhbGxvd0VtcHR5RW50cmllcywgVmVjdG9yPFN0cmluZz4m
IHJlc3VsdCkgY29uc3Q7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzcGxpdChjb25zdCBT
dHJpbmcmIHNlcGFyYXRvciwgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkgY29uc3Q7CisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgdm9pZCBzcGxpdChjb25zdCBTdHJpbmcmIHNlcGFyYXRvciwgYm9vbCBh
bGxvd0VtcHR5RW50cmllcywgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkgY29uc3Q7CisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgdm9pZCBzcGxpdChVQ2hhciBzZXBhcmF0b3IsIFZlY3RvcjxTdHJpbmc+
JiByZXN1bHQpIGNvbnN0OworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc3BsaXQoVUNoYXIg
c2VwYXJhdG9yLCBib29sIGFsbG93RW1wdHlFbnRyaWVzLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0
KSBjb25zdDsKIAotICAgIGludCB0b0ludFN0cmljdChib29sKiBvayA9IDAsIGludCBiYXNlID0g
MTApIGNvbnN0OwotICAgIHVuc2lnbmVkIHRvVUludFN0cmljdChib29sKiBvayA9IDAsIGludCBi
YXNlID0gMTApIGNvbnN0OwotICAgIGludDY0X3QgdG9JbnQ2NFN0cmljdChib29sKiBvayA9IDAs
IGludCBiYXNlID0gMTApIGNvbnN0OwotICAgIHVpbnQ2NF90IHRvVUludDY0U3RyaWN0KGJvb2wq
IG9rID0gMCwgaW50IGJhc2UgPSAxMCkgY29uc3Q7Ci0gICAgaW50cHRyX3QgdG9JbnRQdHJTdHJp
Y3QoYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKSBjb25zdDsKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSBpbnQgdG9JbnRTdHJpY3QoYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKSBjb25zdDsK
KyAgICBKU19FWFBPUlRfUFJJVkFURSB1bnNpZ25lZCB0b1VJbnRTdHJpY3QoYm9vbCogb2sgPSAw
LCBpbnQgYmFzZSA9IDEwKSBjb25zdDsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBpbnQ2NF90IHRv
SW50NjRTdHJpY3QoYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKSBjb25zdDsKKyAgICBKU19F
WFBPUlRfUFJJVkFURSB1aW50NjRfdCB0b1VJbnQ2NFN0cmljdChib29sKiBvayA9IDAsIGludCBi
YXNlID0gMTApIGNvbnN0OworICAgIEpTX0VYUE9SVF9QUklWQVRFIGludHB0cl90IHRvSW50UHRy
U3RyaWN0KGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCkgY29uc3Q7CiAKLSAgICBpbnQgdG9J
bnQoYm9vbCogb2sgPSAwKSBjb25zdDsKLSAgICB1bnNpZ25lZCB0b1VJbnQoYm9vbCogb2sgPSAw
KSBjb25zdDsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBpbnQgdG9JbnQoYm9vbCogb2sgPSAwKSBj
b25zdDsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB1bnNpZ25lZCB0b1VJbnQoYm9vbCogb2sgPSAw
KSBjb25zdDsKICAgICBpbnQ2NF90IHRvSW50NjQoYm9vbCogb2sgPSAwKSBjb25zdDsKLSAgICB1
aW50NjRfdCB0b1VJbnQ2NChib29sKiBvayA9IDApIGNvbnN0OwotICAgIGludHB0cl90IHRvSW50
UHRyKGJvb2wqIG9rID0gMCkgY29uc3Q7Ci0gICAgZG91YmxlIHRvRG91YmxlKGJvb2wqIG9rID0g
MCkgY29uc3Q7Ci0gICAgZmxvYXQgdG9GbG9hdChib29sKiBvayA9IDApIGNvbnN0OworICAgIEpT
X0VYUE9SVF9QUklWQVRFIHVpbnQ2NF90IHRvVUludDY0KGJvb2wqIG9rID0gMCkgY29uc3Q7Cisg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgaW50cHRyX3QgdG9JbnRQdHIoYm9vbCogb2sgPSAwKSBjb25z
dDsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBkb3VibGUgdG9Eb3VibGUoYm9vbCogb2sgPSAwKSBj
b25zdDsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBmbG9hdCB0b0Zsb2F0KGJvb2wqIG9rID0gMCkg
Y29uc3Q7CiAKICAgICBib29sIHBlcmNlbnRhZ2UoaW50JiBwZXJjZW50YWdlKSBjb25zdDsKIAog
ICAgIC8vIFJldHVybnMgYSBTdHJpbmdJbXBsIHN1aXRhYmxlIGZvciB1c2Ugb24gYW5vdGhlciB0
aHJlYWQuCi0gICAgU3RyaW5nIGNyb3NzVGhyZWFkU3RyaW5nKCkgY29uc3Q7CisgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgU3RyaW5nIGNyb3NzVGhyZWFkU3RyaW5nKCkgY29uc3Q7CiAgICAgLy8gTWFr
ZXMgYSBkZWVwIGNvcHkuIEhlbHBmdWwgb25seSBpZiB5b3UgbmVlZCB0byB1c2UgYSBTdHJpbmcg
b24gYW5vdGhlciB0aHJlYWQKICAgICAvLyAodXNlIGNyb3NzVGhyZWFkU3RyaW5nIGlmIHRoZSBt
ZXRob2QgY2FsbCBkb2Vzbid0IG5lZWQgdG8gYmUgdGhyZWFkc2FmZSkuCiAgICAgLy8gU2luY2Ug
dGhlIHVuZGVybHlpbmcgU3RyaW5nSW1wbCBvYmplY3RzIGFyZSBpbW11dGFibGUsIHRoZXJlJ3Mg
bm8gb3RoZXIgcmVhc29uCiAgICAgLy8gdG8gZXZlciBwcmVmZXIgY29weSgpIG92ZXIgcGxhaW4g
b2xkIGFzc2lnbm1lbnQuCi0gICAgU3RyaW5nIHRocmVhZHNhZmVDb3B5KCkgY29uc3Q7CisgICAg
SlNfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHRocmVhZHNhZmVDb3B5KCkgY29uc3Q7CiAKICNpZiBQ
TEFURk9STShDRikKICAgICBTdHJpbmcoQ0ZTdHJpbmdSZWYpOwpAQCAtMjg0LDggKzI4NCw4IEBA
CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKFdYKQotICAgIFN0cmluZyhjb25zdCB3eFN0cmluZyYp
OwotICAgIG9wZXJhdG9yIHd4U3RyaW5nKCkgY29uc3Q7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
U3RyaW5nKGNvbnN0IHd4U3RyaW5nJik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgb3BlcmF0b3Ig
d3hTdHJpbmcoKSBjb25zdDsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSEFJS1UpCkBAIC0yOTMs
MTEgKzI5MywxMSBAQAogICAgIG9wZXJhdG9yIEJTdHJpbmcoKSBjb25zdDsKICNlbmRpZgogCi0g
ICAgc3RhdGljIFN0cmluZyBmcm9tVVRGOChjb25zdCBjaGFyKiwgc2l6ZV90KTsKLSAgICBzdGF0
aWMgU3RyaW5nIGZyb21VVEY4KGNvbnN0IGNoYXIqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgU3RyaW5nIGZyb21VVEY4KGNvbnN0IGNoYXIqLCBzaXplX3QpOworICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBTdHJpbmcgZnJvbVVURjgoY29uc3QgY2hhciopOwogCiAgICAgLy8g
VHJpZXMgdG8gY29udmVydCB0aGUgcGFzc2VkIGluIHN0cmluZyB0byBVVEYtOCwgYnV0IHdpbGwg
ZmFsbCBiYWNrIHRvIExhdGluLTEgaWYgdGhlIHN0cmluZyBpcyBub3QgdmFsaWQgVVRGLTguCi0g
ICAgc3RhdGljIFN0cmluZyBmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjayhjb25zdCBjaGFyKiwg
c2l6ZV90KTsKKyAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJpbmcgZnJvbVVURjhXaXRo
TGF0aW4xRmFsbGJhY2soY29uc3QgY2hhciosIHNpemVfdCk7CiAgICAgCiAgICAgLy8gRGV0ZXJt
aW5lcyB0aGUgd3JpdGluZyBkaXJlY3Rpb24gdXNpbmcgdGhlIFVuaWNvZGUgQmlkaSBBbGdvcml0
aG0gcnVsZXMgUDIgYW5kIFAzLgogICAgIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIGRlZmF1bHRX
cml0aW5nRGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5kZWZhdWx0
V3JpdGluZ0RpcmVjdGlvbigpIDogV1RGOjpVbmljb2RlOjpMZWZ0VG9SaWdodDsgfQpAQCAtMzA2
LDcgKzMwNiw3IEBACiAKICAgICAvLyBIYXNoIHRhYmxlIGRlbGV0ZWQgdmFsdWVzLCB3aGljaCBh
cmUgb25seSBjb25zdHJ1Y3RlZCBhbmQgbmV2ZXIgY29waWVkIG9yIGRlc3Ryb3llZC4KICAgICBT
dHJpbmcoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKSA6IG1faW1wbChXVEY6Okhhc2hU
YWJsZURlbGV0ZWRWYWx1ZSkgeyB9Ci0gICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgp
IGNvbnN0IHsgcmV0dXJuIG1faW1wbC5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9CisgICAg
SlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsg
cmV0dXJuIG1faW1wbC5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9CiAKIHByaXZhdGU6CiAg
ICAgUmVmUHRyPFN0cmluZ0ltcGw+IG1faW1wbDsKQEAgLTMxNyw5ICszMTcsOSBAQAogUURhdGFT
dHJlYW0mIG9wZXJhdG9yPj4oUURhdGFTdHJlYW0mIHN0cmVhbSwgU3RyaW5nJiBzdHIpOwogI2Vu
ZGlmCiAKLVN0cmluZyBvcGVyYXRvcisoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7Ci1T
dHJpbmcgb3BlcmF0b3IrKGNvbnN0IFN0cmluZyYsIGNvbnN0IGNoYXIqKTsKLVN0cmluZyBvcGVy
YXRvcisoY29uc3QgY2hhciosIGNvbnN0IFN0cmluZyYpOworSlNfRVhQT1JUX1BSSVZBVEUgU3Ry
aW5nIG9wZXJhdG9yKyhjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKK0pTX0VYUE9SVF9Q
UklWQVRFIFN0cmluZyBvcGVyYXRvcisoY29uc3QgU3RyaW5nJiwgY29uc3QgY2hhciopOworSlNf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nIG9wZXJhdG9yKyhjb25zdCBjaGFyKiwgY29uc3QgU3RyaW5n
Jik7CiAKIGlubGluZSBTdHJpbmcmIG9wZXJhdG9yKz0oU3RyaW5nJiBhLCBjb25zdCBTdHJpbmcm
IGIpIHsgYS5hcHBlbmQoYik7IHJldHVybiBhOyB9CiAKQEAgLTM2Myw3ICszNjMsNyBAQAogICAg
IHJldHVybiAhKG9yZWQgJiAweEZGODApOwogfQogCi1pbnQgY29kZVBvaW50Q29tcGFyZShjb25z
dCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKK0pTX0VYUE9SVF9QUklWQVRFIGludCBjb2RlUG9p
bnRDb21wYXJlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOwogCiBpbmxpbmUgc2l6ZV90
IGZpbmQoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgVUNoYXIgbWF0
Y2hDaGFyYWN0ZXIsIHVuc2lnbmVkIGluZGV4ID0gMCkKIHsKSW5kZXg6IEphdmFTY3JpcHRDb3Jl
L3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYv
dGV4dC9TdHJpbmdJbXBsLmgJKHJldmlzaW9uIDY2MzE1KQorKysgSmF2YVNjcmlwdENvcmUvd3Rm
L3RleHQvU3RyaW5nSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzksMTEgKzEzOSwxMSBAQAog
ICAgIH0KIAogcHVibGljOgotICAgIH5TdHJpbmdJbXBsKCk7CisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgflN0cmluZ0ltcGwoKTsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGNy
ZWF0ZShjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8U3RyaW5nSW1wbD4gY3JlYXRlKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOwotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGNyZWF0ZShjb25zdCBjaGFyKik7CisgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gY3JlYXRlKGNv
bnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBjcmVhdGUoY29uc3QgY2hhciosIHVuc2lnbmVkIGxl
bmd0aCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1w
bD4gY3JlYXRlKGNvbnN0IGNoYXIqKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBs
PiBjcmVhdGUoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgsIFBhc3NSZWZQdHI8U2hhcmVk
VUNoYXI+IHNoYXJlZEJ1ZmZlcik7CiAgICAgc3RhdGljIEFMV0FZU19JTkxJTkUgUGFzc1JlZlB0
cjxTdHJpbmdJbXBsPiBjcmVhdGUoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXAsIHVuc2lnbmVk
IG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQogICAgIHsKQEAgLTE1Nyw3ICsxNTcsNyBAQAogICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0cmluZ0ltcGwocmVwLT5tX2RhdGEgKyBvZmZzZXQs
IGxlbmd0aCwgb3duZXJSZXApKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJp
bmdJbXBsPiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCwgVUNoYXIqJiBkYXRh
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBj
cmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCwgVUNoYXIqJiBkYXRhKTsKICAgICBz
dGF0aWMgQUxXQVlTX0lOTElORSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHRyeUNyZWF0ZVVuaW5p
dGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoLCBVQ2hhciomIG91dHB1dCkKICAgICB7CiAgICAgICAg
IGlmICghbGVuZ3RoKSB7CkBAIC0xOTEsMTAgKzE5MSwxMCBAQAogICAgICAgICB9CiAgICAgICAg
IHJldHVybiBlbXB0eSgpOwogICAgIH0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBs
PiBhZG9wdChTdHJpbmdCdWZmZXImKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFz
c1JlZlB0cjxTdHJpbmdJbXBsPiBhZG9wdChTdHJpbmdCdWZmZXImKTsKIAogICAgIFNoYXJlZFVD
aGFyKiBzaGFyZWRCdWZmZXIoKTsKLSAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycygpIGNvbnN0
IHsgcmV0dXJuIG1fZGF0YTsgfQorICAgIEpTX0VYUE9SVF9QUklWQVRFIGNvbnN0IFVDaGFyKiBj
aGFyYWN0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CiAKICAgICBzaXplX3QgY29zdCgp
CiAgICAgewpAQCAtMjQwLDcgKzI0MCw3IEBACiAgICAgQUxXQVlTX0lOTElORSB2b2lkIGRlcmVm
KCkgeyBtX3JlZkNvdW50QW5kRmxhZ3MgLT0gc19yZWZDb3VudEluY3JlbWVudDsgaWYgKCEobV9y
ZWZDb3VudEFuZEZsYWdzICYgKHNfcmVmQ291bnRNYXNrIHwgc19yZWZDb3VudEZsYWdTdGF0aWMp
KSkgZGVsZXRlIHRoaXM7IH0KICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaGFzT25lUmVmKCkgY29u
c3QgeyByZXR1cm4gKG1fcmVmQ291bnRBbmRGbGFncyAmIChzX3JlZkNvdW50TWFzayB8IHNfcmVm
Q291bnRGbGFnU3RhdGljKSkgPT0gc19yZWZDb3VudEluY3JlbWVudDsgfQogCi0gICAgc3RhdGlj
IFN0cmluZ0ltcGwqIGVtcHR5KCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cmlu
Z0ltcGwqIGVtcHR5KCk7CiAKICAgICBzdGF0aWMgdm9pZCBjb3B5Q2hhcnMoVUNoYXIqIGRlc3Rp
bmF0aW9uLCBjb25zdCBVQ2hhciogc291cmNlLCB1bnNpZ25lZCBudW1DaGFyYWN0ZXJzKQogICAg
IHsKQEAgLTI1OCwxMiArMjU4LDEyIEBACiAgICAgLy8gU2luY2UgU3RyaW5nSW1wbCBvYmplY3Rz
IGFyZSBpbW11dGFibGUsIHRoZXJlJ3Mgbm8gb3RoZXIgcmVhc29uIHRvIG1ha2UgYSBjb3B5Lgog
ICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gdGhyZWFkc2FmZUNvcHkoKSBjb25zdDsKIAotICAg
IFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gc3Vic3RyaW5nKHVuc2lnbmVkIHBvcywgdW5zaWduZWQg
bGVuID0gVUlOVF9NQVgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8U3RyaW5n
SW1wbD4gc3Vic3RyaW5nKHVuc2lnbmVkIHBvcywgdW5zaWduZWQgbGVuID0gVUlOVF9NQVgpOwog
CiAgICAgVUNoYXIgb3BlcmF0b3JbXSh1bnNpZ25lZCBpKSB7IEFTU0VSVChpIDwgbV9sZW5ndGgp
OyByZXR1cm4gbV9kYXRhW2ldOyB9CiAgICAgVUNoYXIzMiBjaGFyYWN0ZXJTdGFydGluZ0F0KHVu
c2lnbmVkKTsKIAotICAgIGJvb2wgY29udGFpbnNPbmx5V2hpdGVzcGFjZSgpOworICAgIEpTX0VY
UE9SVF9QUklWQVRFIGJvb2wgY29udGFpbnNPbmx5V2hpdGVzcGFjZSgpOwogCiAgICAgaW50IHRv
SW50U3RyaWN0KGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCk7CiAgICAgdW5zaWduZWQgdG9V
SW50U3RyaWN0KGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCk7CkBAIC0yNzEsNyArMjcxLDcg
QEAKICAgICB1aW50NjRfdCB0b1VJbnQ2NFN0cmljdChib29sKiBvayA9IDAsIGludCBiYXNlID0g
MTApOwogICAgIGludHB0cl90IHRvSW50UHRyU3RyaWN0KGJvb2wqIG9rID0gMCwgaW50IGJhc2Ug
PSAxMCk7CiAKLSAgICBpbnQgdG9JbnQoYm9vbCogb2sgPSAwKTsgLy8gaWdub3JlcyB0cmFpbGlu
ZyBnYXJiYWdlCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgaW50IHRvSW50KGJvb2wqIG9rID0gMCk7
IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQogICAgIHVuc2lnbmVkIHRvVUludChib29sKiBv
ayA9IDApOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKICAgICBpbnQ2NF90IHRvSW50NjQo
Ym9vbCogb2sgPSAwKTsgLy8gaWdub3JlcyB0cmFpbGluZyBnYXJiYWdlCiAgICAgdWludDY0X3Qg
dG9VSW50NjQoYm9vbCogb2sgPSAwKTsgLy8gaWdub3JlcyB0cmFpbGluZyBnYXJiYWdlCkBAIC0y
ODAsMzYgKzI4MCwzNiBAQAogICAgIGRvdWJsZSB0b0RvdWJsZShib29sKiBvayA9IDApOwogICAg
IGZsb2F0IHRvRmxvYXQoYm9vbCogb2sgPSAwKTsKIAotICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1w
bD4gbG93ZXIoKTsKLSAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHVwcGVyKCk7Ci0gICAgUGFz
c1JlZlB0cjxTdHJpbmdJbXBsPiBzZWN1cmUoVUNoYXIgYUNoYXIpOworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gbG93ZXIoKTsKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHVwcGVyKCk7CisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBzZWN1cmUoVUNoYXIgYUNoYXIpOwogICAgIFBhc3NS
ZWZQdHI8U3RyaW5nSW1wbD4gZm9sZENhc2UoKTsKIAogICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1w
bD4gc3RyaXBXaGl0ZVNwYWNlKCk7Ci0gICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBzaW1wbGlm
eVdoaXRlU3BhY2UoKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBQYXNzUmVmUHRyPFN0cmluZ0lt
cGw+IHNpbXBsaWZ5V2hpdGVTcGFjZSgpOwogCiAgICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBy
ZW1vdmVDaGFyYWN0ZXJzKENoYXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIpOwogCi0gICAgc2l6ZV90
IGZpbmQoVUNoYXIsIHVuc2lnbmVkIGluZGV4ID0gMCk7Ci0gICAgc2l6ZV90IGZpbmQoQ2hhcmFj
dGVyTWF0Y2hGdW5jdGlvblB0ciwgdW5zaWduZWQgaW5kZXggPSAwKTsKLSAgICBzaXplX3QgZmlu
ZChjb25zdCBjaGFyKiwgdW5zaWduZWQgaW5kZXggPSAwKTsKLSAgICBzaXplX3QgZmluZChTdHJp
bmdJbXBsKiwgdW5zaWduZWQgaW5kZXggPSAwKTsKLSAgICBzaXplX3QgZmluZElnbm9yaW5nQ2Fz
ZShjb25zdCBjaGFyKiwgdW5zaWduZWQgaW5kZXggPSAwKTsKLSAgICBzaXplX3QgZmluZElnbm9y
aW5nQ2FzZShTdHJpbmdJbXBsKiwgdW5zaWduZWQgaW5kZXggPSAwKTsKKyAgICBKU19FWFBPUlRf
UFJJVkFURSBzaXplX3QgZmluZChVQ2hhciwgdW5zaWduZWQgaW5kZXggPSAwKTsKKyAgICBKU19F
WFBPUlRfUFJJVkFURSBzaXplX3QgZmluZChDaGFyYWN0ZXJNYXRjaEZ1bmN0aW9uUHRyLCB1bnNp
Z25lZCBpbmRleCA9IDApOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHNpemVfdCBmaW5kKGNvbnN0
IGNoYXIqLCB1bnNpZ25lZCBpbmRleCA9IDApOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHNpemVf
dCBmaW5kKFN0cmluZ0ltcGwqLCB1bnNpZ25lZCBpbmRleCA9IDApOworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHNpemVfdCBmaW5kSWdub3JpbmdDYXNlKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCBpbmRl
eCA9IDApOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHNpemVfdCBmaW5kSWdub3JpbmdDYXNlKFN0
cmluZ0ltcGwqLCB1bnNpZ25lZCBpbmRleCA9IDApOwogCi0gICAgc2l6ZV90IHJldmVyc2VGaW5k
KFVDaGFyLCB1bnNpZ25lZCBpbmRleCA9IFVJTlRfTUFYKTsKLSAgICBzaXplX3QgcmV2ZXJzZUZp
bmQoU3RyaW5nSW1wbCosIHVuc2lnbmVkIGluZGV4ID0gVUlOVF9NQVgpOwotICAgIHNpemVfdCBy
ZXZlcnNlRmluZElnbm9yaW5nQ2FzZShTdHJpbmdJbXBsKiwgdW5zaWduZWQgaW5kZXggPSBVSU5U
X01BWCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IHJldmVyc2VGaW5kKFVDaGFyLCB1
bnNpZ25lZCBpbmRleCA9IFVJTlRfTUFYKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzaXplX3Qg
cmV2ZXJzZUZpbmQoU3RyaW5nSW1wbCosIHVuc2lnbmVkIGluZGV4ID0gVUlOVF9NQVgpOworICAg
IEpTX0VYUE9SVF9QUklWQVRFIHNpemVfdCByZXZlcnNlRmluZElnbm9yaW5nQ2FzZShTdHJpbmdJ
bXBsKiwgdW5zaWduZWQgaW5kZXggPSBVSU5UX01BWCk7CiAKICAgICBib29sIHN0YXJ0c1dpdGgo
U3RyaW5nSW1wbCogc3RyLCBib29sIGNhc2VTZW5zaXRpdmUgPSB0cnVlKSB7IHJldHVybiAoY2Fz
ZVNlbnNpdGl2ZSA/IHJldmVyc2VGaW5kKHN0ciwgMCkgOiByZXZlcnNlRmluZElnbm9yaW5nQ2Fz
ZShzdHIsIDApKSA9PSAwOyB9Ci0gICAgYm9vbCBlbmRzV2l0aChTdHJpbmdJbXBsKiwgYm9vbCBj
YXNlU2Vuc2l0aXZlID0gdHJ1ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBlbmRzV2l0
aChTdHJpbmdJbXBsKiwgYm9vbCBjYXNlU2Vuc2l0aXZlID0gdHJ1ZSk7CiAKLSAgICBQYXNzUmVm
UHRyPFN0cmluZ0ltcGw+IHJlcGxhY2UoVUNoYXIsIFVDaGFyKTsKLSAgICBQYXNzUmVmUHRyPFN0
cmluZ0ltcGw+IHJlcGxhY2UoVUNoYXIsIFN0cmluZ0ltcGwqKTsKLSAgICBQYXNzUmVmUHRyPFN0
cmluZ0ltcGw+IHJlcGxhY2UoU3RyaW5nSW1wbCosIFN0cmluZ0ltcGwqKTsKLSAgICBQYXNzUmVm
UHRyPFN0cmluZ0ltcGw+IHJlcGxhY2UodW5zaWduZWQgaW5kZXgsIHVuc2lnbmVkIGxlbiwgU3Ry
aW5nSW1wbCopOworICAgIEpTX0VYUE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4g
cmVwbGFjZShVQ2hhciwgVUNoYXIpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8
U3RyaW5nSW1wbD4gcmVwbGFjZShVQ2hhciwgU3RyaW5nSW1wbCopOworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwbGFjZShTdHJpbmdJbXBsKiwgU3RyaW5n
SW1wbCopOworICAgIEpTX0VYUE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVw
bGFjZSh1bnNpZ25lZCBpbmRleCwgdW5zaWduZWQgbGVuLCBTdHJpbmdJbXBsKik7CiAKLSAgICBX
VEY6OlVuaWNvZGU6OkRpcmVjdGlvbiBkZWZhdWx0V3JpdGluZ0RpcmVjdGlvbigpOworICAgIEpT
X0VYUE9SVF9QUklWQVRFIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIGRlZmF1bHRXcml0aW5nRGly
ZWN0aW9uKCk7CiAKICNpZiBQTEFURk9STShDRikKICAgICBDRlN0cmluZ1JlZiBjcmVhdGVDRlN0
cmluZygpOwpAQCAtMzIyLDcgKzMyMiw3IEBACiAgICAgLy8gVGhpcyBudW1iZXIgbXVzdCBiZSBh
dCBsZWFzdCAyIHRvIGF2b2lkIHNoYXJpbmcgZW1wdHksIG51bGwgYXMgd2VsbCBhcyAxIGNoYXJh
Y3RlciBzdHJpbmdzIGZyb20gU21hbGxTdHJpbmdzLgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBzX2NvcHlDaGFyc0lubGluZUN1dE9mZiA9IDIwOwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8
U3RyaW5nSW1wbD4gY3JlYXRlU3RyaXBwaW5nTnVsbENoYXJhY3RlcnNTbG93Q2FzZShjb25zdCBV
Q2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBh
c3NSZWZQdHI8U3RyaW5nSW1wbD4gY3JlYXRlU3RyaXBwaW5nTnVsbENoYXJhY3RlcnNTbG93Q2Fz
ZShjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgCiAgICAgQnVmZmVyT3duZXJz
aGlwIGJ1ZmZlck93bmVyc2hpcCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEJ1ZmZlck93
bmVyc2hpcD4obV9yZWZDb3VudEFuZEZsYWdzICYgc19yZWZDb3VudE1hc2tCdWZmZXJPd25lcnNo
aXApOyB9CiAgICAgYm9vbCBpc1N0YXRpYygpIGNvbnN0IHsgcmV0dXJuIG1fcmVmQ291bnRBbmRG
bGFncyAmIHNfcmVmQ291bnRGbGFnU3RhdGljOyB9CkBAIC0zMzUsMTcgKzMzNSwxNyBAQAogICAg
IG11dGFibGUgdW5zaWduZWQgbV9oYXNoOwogfTsKIAotYm9vbCBlcXVhbChjb25zdCBTdHJpbmdJ
bXBsKiwgY29uc3QgU3RyaW5nSW1wbCopOwotYm9vbCBlcXVhbChjb25zdCBTdHJpbmdJbXBsKiwg
Y29uc3QgY2hhciopOworSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBlcXVhbChjb25zdCBTdHJpbmdJ
bXBsKiwgY29uc3QgU3RyaW5nSW1wbCopOworSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBlcXVhbChj
b25zdCBTdHJpbmdJbXBsKiwgY29uc3QgY2hhciopOwogaW5saW5lIGJvb2wgZXF1YWwoY29uc3Qg
Y2hhciogYSwgU3RyaW5nSW1wbCogYikgeyByZXR1cm4gZXF1YWwoYiwgYSk7IH0KIAotYm9vbCBl
cXVhbElnbm9yaW5nQ2FzZShTdHJpbmdJbXBsKiwgU3RyaW5nSW1wbCopOwotYm9vbCBlcXVhbEln
bm9yaW5nQ2FzZShTdHJpbmdJbXBsKiwgY29uc3QgY2hhciopOworSlNfRVhQT1JUX1BSSVZBVEUg
Ym9vbCBlcXVhbElnbm9yaW5nQ2FzZShTdHJpbmdJbXBsKiwgU3RyaW5nSW1wbCopOworSlNfRVhQ
T1JUX1BSSVZBVEUgYm9vbCBlcXVhbElnbm9yaW5nQ2FzZShTdHJpbmdJbXBsKiwgY29uc3QgY2hh
ciopOwogaW5saW5lIGJvb2wgZXF1YWxJZ25vcmluZ0Nhc2UoY29uc3QgY2hhciogYSwgU3RyaW5n
SW1wbCogYikgeyByZXR1cm4gZXF1YWxJZ25vcmluZ0Nhc2UoYiwgYSk7IH0KLWJvb2wgZXF1YWxJ
Z25vcmluZ0Nhc2UoY29uc3QgVUNoYXIqIGEsIGNvbnN0IGNoYXIqIGIsIHVuc2lnbmVkIGxlbmd0
aCk7CitKU19FWFBPUlRfUFJJVkFURSBib29sIGVxdWFsSWdub3JpbmdDYXNlKGNvbnN0IFVDaGFy
KiBhLCBjb25zdCBjaGFyKiBiLCB1bnNpZ25lZCBsZW5ndGgpOwogaW5saW5lIGJvb2wgZXF1YWxJ
Z25vcmluZ0Nhc2UoY29uc3QgY2hhciogYSwgY29uc3QgVUNoYXIqIGIsIHVuc2lnbmVkIGxlbmd0
aCkgeyByZXR1cm4gZXF1YWxJZ25vcmluZ0Nhc2UoYiwgYSwgbGVuZ3RoKTsgfQogCi1ib29sIGVx
dWFsSWdub3JpbmdOdWxsaXR5KFN0cmluZ0ltcGwqLCBTdHJpbmdJbXBsKik7CitKU19FWFBPUlRf
UFJJVkFURSBib29sIGVxdWFsSWdub3JpbmdOdWxsaXR5KFN0cmluZ0ltcGwqLCBTdHJpbmdJbXBs
Kik7CiAKIGludCBjb2RlUG9pbnRDb21wYXJlKGNvbnN0IFN0cmluZ0ltcGwqLCBjb25zdCBTdHJp
bmdJbXBsKik7CiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9CeXRlQXJyYXkuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvQnl0ZUFycmF5LmgJKHJldmlzaW9uIDY2MzE1KQor
KysgSmF2YVNjcmlwdENvcmUvd3RmL0J5dGVBcnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC03OCw3
ICs3OCw3IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxCeXRlQXJyYXk+IGNyZWF0ZShzaXplX3Qgc2l6ZSk7CisgICAgICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPEJ5dGVBcnJheT4gY3JlYXRlKHNpemVfdCBzaXpl
KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIEJ5dGVBcnJheShzaXplX3Qgc2l6ZSkKSW5kZXg6
IEphdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS93dGYvVGhyZWFkaW5nLmgJKHJldmlzaW9uIDY2MzE1KQorKysgSmF2YVNjcmlwdENvcmUv
d3RmL1RocmVhZGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC04NCwyNyArODQsMjcgQEAKIC8vIFRo
aXMgZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQuIEl0IGlzIHNh
ZmUgdG8gY2FsbCBpdCByZXBlYXRlZGx5LgogLy8gRGFyd2luIGlzIGFuIGV4Y2VwdGlvbiB0byB0
aGlzIHJ1bGU6IGl0IGlzIE9LIHRvIGNhbGwgaXQgZnJvbSBhbnkgdGhyZWFkLCB0aGUgb25seSAK
IC8vIHJlcXVpcmVtZW50IGlzIHRoYXQgdGhlIGNhbGxzIGFyZSBub3QgcmVlbnRyYW50Lgotdm9p
ZCBpbml0aWFsaXplVGhyZWFkaW5nKCk7CitKU19FWFBPUlRfUFJJVkFURSB2b2lkIGluaXRpYWxp
emVUaHJlYWRpbmcoKTsKIAogLy8gUmV0dXJucyAwIGlmIHRocmVhZCBjcmVhdGlvbiBmYWlsZWQu
CiAvLyBUaGUgdGhyZWFkIG5hbWUgbXVzdCBiZSBhIGxpdGVyYWwgc2luY2Ugb24gc29tZSBwbGF0
Zm9ybXMgaXQncyBwYXNzZWQgaW4gdG8gdGhlIHRocmVhZC4KLVRocmVhZElkZW50aWZpZXIgY3Jl
YXRlVGhyZWFkKFRocmVhZEZ1bmN0aW9uLCB2b2lkKiwgY29uc3QgY2hhciogdGhyZWFkTmFtZSk7
CitKU19FWFBPUlRfUFJJVkFURSBUaHJlYWRJZGVudGlmaWVyIGNyZWF0ZVRocmVhZChUaHJlYWRG
dW5jdGlvbiwgdm9pZCosIGNvbnN0IGNoYXIqIHRocmVhZE5hbWUpOwogCiAvLyBJbnRlcm5hbCBw
bGF0Zm9ybS1zcGVjaWZpYyBjcmVhdGVUaHJlYWQgaW1wbGVtZW50YXRpb24uCi1UaHJlYWRJZGVu
dGlmaWVyIGNyZWF0ZVRocmVhZEludGVybmFsKFRocmVhZEZ1bmN0aW9uLCB2b2lkKiwgY29uc3Qg
Y2hhciogdGhyZWFkTmFtZSk7CitKU19FWFBPUlRfUFJJVkFURSBUaHJlYWRJZGVudGlmaWVyIGNy
ZWF0ZVRocmVhZEludGVybmFsKFRocmVhZEZ1bmN0aW9uLCB2b2lkKiwgY29uc3QgY2hhciogdGhy
ZWFkTmFtZSk7CiAKIC8vIENhbGxlZCBpbiB0aGUgdGhyZWFkIGR1cmluZyBpbml0aWFsaXphdGlv
bi4KIC8vIEhlbHBmdWwgZm9yIHBsYXRmb3JtcyB3aGVyZSB0aGUgdGhyZWFkIG5hbWUgbXVzdCBi
ZSBzZXQgZnJvbSB3aXRoaW4gdGhlIHRocmVhZC4KIHZvaWQgaW5pdGlhbGl6ZUN1cnJlbnRUaHJl
YWRJbnRlcm5hbChjb25zdCBjaGFyKiB0aHJlYWROYW1lKTsKIAotVGhyZWFkSWRlbnRpZmllciBj
dXJyZW50VGhyZWFkKCk7Ci1pbnQgd2FpdEZvclRocmVhZENvbXBsZXRpb24oVGhyZWFkSWRlbnRp
Zmllciwgdm9pZCoqKTsKLXZvaWQgZGV0YWNoVGhyZWFkKFRocmVhZElkZW50aWZpZXIpOworSlNf
RVhQT1JUX1BSSVZBVEUgVGhyZWFkSWRlbnRpZmllciBjdXJyZW50VGhyZWFkKCk7CitKU19FWFBP
UlRfUFJJVkFURSBpbnQgd2FpdEZvclRocmVhZENvbXBsZXRpb24oVGhyZWFkSWRlbnRpZmllciwg
dm9pZCoqKTsKK0pTX0VYUE9SVF9QUklWQVRFIHZvaWQgZGV0YWNoVGhyZWFkKFRocmVhZElkZW50
aWZpZXIpOwogCi12b2lkIHlpZWxkKCk7CitKU19FWFBPUlRfUFJJVkFURSB2b2lkIHlpZWxkKCk7
CiAKLXZvaWQgbG9ja0F0b21pY2FsbHlJbml0aWFsaXplZFN0YXRpY011dGV4KCk7Ci12b2lkIHVu
bG9ja0F0b21pY2FsbHlJbml0aWFsaXplZFN0YXRpY011dGV4KCk7CitKU19FWFBPUlRfUFJJVkFU
RSB2b2lkIGxvY2tBdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleCgpOworSlNfRVhQT1JU
X1BSSVZBVEUgdm9pZCB1bmxvY2tBdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleCgpOwog
CiB9IC8vIG5hbWVzcGFjZSBXVEYKIApJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL01haW5UaHJl
YWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvTWFpblRocmVhZC5oCShyZXZp
c2lvbiA2NjMxNSkKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9NYWluVGhyZWFkLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM4LDE1ICszOCwxNSBAQAogdHlwZWRlZiB2b2lkIE1haW5UaHJlYWRGdW5jdGlv
bih2b2lkKik7CiAKIC8vIE11c3QgYmUgY2FsbGVkIGZyb20gdGhlIG1haW4gdGhyZWFkLgotdm9p
ZCBpbml0aWFsaXplTWFpblRocmVhZCgpOworSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBpbml0aWFs
aXplTWFpblRocmVhZCgpOwogCi12b2lkIGNhbGxPbk1haW5UaHJlYWQoTWFpblRocmVhZEZ1bmN0
aW9uKiwgdm9pZCogY29udGV4dCk7CitKU19FWFBPUlRfUFJJVkFURSB2b2lkIGNhbGxPbk1haW5U
aHJlYWQoTWFpblRocmVhZEZ1bmN0aW9uKiwgdm9pZCogY29udGV4dCk7CiB2b2lkIGNhbGxPbk1h
aW5UaHJlYWRBbmRXYWl0KE1haW5UaHJlYWRGdW5jdGlvbiosIHZvaWQqIGNvbnRleHQpOwogdm9p
ZCBjYW5jZWxDYWxsT25NYWluVGhyZWFkKE1haW5UaHJlYWRGdW5jdGlvbiosIHZvaWQqIGNvbnRl
eHQpOwogCi12b2lkIHNldE1haW5UaHJlYWRDYWxsYmFja3NQYXVzZWQoYm9vbCBwYXVzZWQpOwor
SlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRNYWluVGhyZWFkQ2FsbGJhY2tzUGF1c2VkKGJvb2wg
cGF1c2VkKTsKIAotYm9vbCBpc01haW5UaHJlYWQoKTsKK0pTX0VYUE9SVF9QUklWQVRFIGJvb2wg
aXNNYWluVGhyZWFkKCk7CiAKIC8vIE5PVEU6IHRoZXNlIGZ1bmN0aW9ucyBhcmUgaW50ZXJuYWwg
dG8gdGhlIGNhbGxPbk1haW5UaHJlYWQgaW1wbGVtZW50YXRpb24uCiB2b2lkIGluaXRpYWxpemVN
YWluVGhyZWFkUGxhdGZvcm0oKTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9GYXN0TWFsbG9j
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL0Zhc3RNYWxsb2MuaAkocmV2aXNp
b24gNjYzMTUpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvRmFzdE1hbGxvYy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yOSwxMiArMjksMTIgQEAKIG5hbWVzcGFjZSBXVEYgewogCiAgICAgLy8gVGhlc2Ug
ZnVuY3Rpb25zIGNhbGwgQ1JBU0goKSBpZiBhbiBhbGxvY2F0aW9uIGZhaWxzLgotICAgIHZvaWQq
IGZhc3RNYWxsb2Moc2l6ZV90KTsKLSAgICB2b2lkKiBmYXN0WmVyb2VkTWFsbG9jKHNpemVfdCk7
Ci0gICAgdm9pZCogZmFzdENhbGxvYyhzaXplX3QgbnVtRWxlbWVudHMsIHNpemVfdCBlbGVtZW50
U2l6ZSk7Ci0gICAgdm9pZCogZmFzdFJlYWxsb2Modm9pZCosIHNpemVfdCk7Ci0gICAgY2hhciog
ZmFzdFN0ckR1cChjb25zdCBjaGFyKik7Ci0gICAgc2l6ZV90IGZhc3RNYWxsb2NTaXplKGNvbnN0
IHZvaWQqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkKiBmYXN0TWFsbG9jKHNpemVfdCk7
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCogZmFzdFplcm9lZE1hbGxvYyhzaXplX3QpOwor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQqIGZhc3RDYWxsb2Moc2l6ZV90IG51bUVsZW1lbnRz
LCBzaXplX3QgZWxlbWVudFNpemUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQqIGZhc3RS
ZWFsbG9jKHZvaWQqLCBzaXplX3QpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIGNoYXIqIGZhc3RT
dHJEdXAoY29uc3QgY2hhciopOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHNpemVfdCBmYXN0TWFs
bG9jU2l6ZShjb25zdCB2b2lkKik7CiAKICAgICBzdHJ1Y3QgVHJ5TWFsbG9jUmV0dXJuVmFsdWUg
ewogICAgICAgICBUcnlNYWxsb2NSZXR1cm5WYWx1ZSh2b2lkKiBkYXRhKQpAQCAtNjgsMTIgKzY4
LDEyIEBACiAgICAgICAgIHJldHVybiByZXR1cm5WYWx1ZTsKICAgICB9CiAKLSAgICBUcnlNYWxs
b2NSZXR1cm5WYWx1ZSB0cnlGYXN0TWFsbG9jKHNpemVfdCBuKTsKLSAgICBUcnlNYWxsb2NSZXR1
cm5WYWx1ZSB0cnlGYXN0WmVyb2VkTWFsbG9jKHNpemVfdCBuKTsKLSAgICBUcnlNYWxsb2NSZXR1
cm5WYWx1ZSB0cnlGYXN0Q2FsbG9jKHNpemVfdCBuX2VsZW1lbnRzLCBzaXplX3QgZWxlbWVudF9z
aXplKTsKLSAgICBUcnlNYWxsb2NSZXR1cm5WYWx1ZSB0cnlGYXN0UmVhbGxvYyh2b2lkKiBwLCBz
aXplX3Qgbik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgVHJ5TWFsbG9jUmV0dXJuVmFsdWUgdHJ5
RmFzdE1hbGxvYyhzaXplX3Qgbik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgVHJ5TWFsbG9jUmV0
dXJuVmFsdWUgdHJ5RmFzdFplcm9lZE1hbGxvYyhzaXplX3Qgbik7CisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgVHJ5TWFsbG9jUmV0dXJuVmFsdWUgdHJ5RmFzdENhbGxvYyhzaXplX3Qgbl9lbGVtZW50
cywgc2l6ZV90IGVsZW1lbnRfc2l6ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgVHJ5TWFsbG9j
UmV0dXJuVmFsdWUgdHJ5RmFzdFJlYWxsb2Modm9pZCogcCwgc2l6ZV90IG4pOwogCi0gICAgdm9p
ZCBmYXN0RnJlZSh2b2lkKik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmYXN0RnJlZSh2
b2lkKik7CiAKICNpZm5kZWYgTkRFQlVHICAgIAogICAgIHZvaWQgZmFzdE1hbGxvY0ZvcmJpZCgp
OwpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZFNwZWNpZmljLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZFNwZWNpZmljLmgJKHJldmlzaW9uIDY2MzE1KQor
KysgSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZFNwZWNpZmljLmgJKHdvcmtpbmcgY29weSkKQEAg
LTIzMSw4ICsyMzEsOCBAQAogLy8gMikgV2UgZG8gbm90IG5lZWQgdG8gaG9sZCBtYW55IGluc3Rh
bmNlcyBvZiBUaHJlYWRTcGVjaWZpYzw+IGRhdGEuIFRoaXMgZml4ZWQgbnVtYmVyIHNob3VsZCBi
ZSBmYXIgZW5vdWdoLgogY29uc3QgaW50IGtNYXhUbHNLZXlTaXplID0gMjU2OwogCi1sb25nJiB0
bHNLZXlDb3VudCgpOwotRFdPUkQqIHRsc0tleXMoKTsKK0pTX0VYUE9SVF9QUklWQVRFIGxvbmcm
IHRsc0tleUNvdW50KCk7CitKU19FWFBPUlRfUFJJVkFURSBEV09SRCogdGxzS2V5cygpOwogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgogaW5saW5lIFRocmVhZFNwZWNpZmljPFQ+OjpUaHJlYWRTcGVj
aWZpYygpCkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvV1RGVGhyZWFkRGF0YS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9XVEZUaHJlYWREYXRhLmgJKHJldmlzaW9uIDY2MzE1
KQorKysgSmF2YVNjcmlwdENvcmUvd3RmL1dURlRocmVhZERhdGEuaAkod29ya2luZyBjb3B5KQpA
QCAtNzksOCArNzksOCBAQAogCiBjbGFzcyBXVEZUaHJlYWREYXRhIDogcHVibGljIE5vbmNvcHlh
YmxlIHsKIHB1YmxpYzoKLSAgICBXVEZUaHJlYWREYXRhKCk7Ci0gICAgfldURlRocmVhZERhdGEo
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBXVEZUaHJlYWREYXRhKCk7CisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgfldURlRocmVhZERhdGEoKTsKIAogICAgIEF0b21pY1N0cmluZ1RhYmxlKiBhdG9t
aWNTdHJpbmdUYWJsZSgpCiAgICAgewpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL0RhdGVNYXRo
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL0RhdGVNYXRoLmgJKHJldmlzaW9u
IDY2MzE1KQorKysgSmF2YVNjcmlwdENvcmUvd3RmL0RhdGVNYXRoLmgJKHdvcmtpbmcgY29weSkK
QEAgLTU0LDcgKzU0LDcgQEAKIGludCBlcXVpdmFsZW50WWVhckZvckRTVChpbnQgeWVhcik7CiAK
IC8vIE5vdCByZWFsbHkgbWF0aCByZWxhdGVkLCBidXQgdGhpcyBpcyBjdXJyZW50bHkgdGhlIG9u
bHkgc2hhcmVkIHBsYWNlIHRvIHB1dCB0aGVzZS4gIAotZG91YmxlIHBhcnNlRGF0ZUZyb21OdWxs
VGVybWluYXRlZENoYXJhY3RlcnMoY29uc3QgY2hhciogZGF0ZVN0cmluZyk7CitKU19FWFBPUlRf
UFJJVkFURSBkb3VibGUgcGFyc2VEYXRlRnJvbU51bGxUZXJtaW5hdGVkQ2hhcmFjdGVycyhjb25z
dCBjaGFyKiBkYXRlU3RyaW5nKTsKIGRvdWJsZSB0aW1lQ2xpcChkb3VibGUpOwogCiBpbmxpbmUg
ZG91YmxlIGpzQ3VycmVudFRpbWUoKQpAQCAtNzcsMTEgKzc3LDExIEBACiBjb25zdCBkb3VibGUg
bXNQZXJNb250aCA9IDI1OTIwMDAwMDAuMDsKIAogLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIGRh
eXMgZnJvbSAxOTcwLTAxLTAxIHRvIHRoZSBzcGVjaWZpZWQgZGF0ZS4KLWRvdWJsZSBkYXRlVG9E
YXlzRnJvbTE5NzAoaW50IHllYXIsIGludCBtb250aCwgaW50IGRheSk7Ci1pbnQgbXNUb1llYXIo
ZG91YmxlIG1zKTsKLWludCBkYXlJblllYXIoZG91YmxlIG1zLCBpbnQgeWVhcik7Ci1pbnQgbW9u
dGhGcm9tRGF5SW5ZZWFyKGludCBkYXlJblllYXIsIGJvb2wgbGVhcFllYXIpOwotaW50IGRheUlu
TW9udGhGcm9tRGF5SW5ZZWFyKGludCBkYXlJblllYXIsIGJvb2wgbGVhcFllYXIpOworSlNfRVhQ
T1JUX1BSSVZBVEUgZG91YmxlIGRhdGVUb0RheXNGcm9tMTk3MChpbnQgeWVhciwgaW50IG1vbnRo
LCBpbnQgZGF5KTsKK0pTX0VYUE9SVF9QUklWQVRFIGludCBtc1RvWWVhcihkb3VibGUgbXMpOwor
SlNfRVhQT1JUX1BSSVZBVEUgaW50IGRheUluWWVhcihkb3VibGUgbXMsIGludCB5ZWFyKTsKK0pT
X0VYUE9SVF9QUklWQVRFIGludCBtb250aEZyb21EYXlJblllYXIoaW50IGRheUluWWVhciwgYm9v
bCBsZWFwWWVhcik7CitKU19FWFBPUlRfUFJJVkFURSBpbnQgZGF5SW5Nb250aEZyb21EYXlJblll
YXIoaW50IGRheUluWWVhciwgYm9vbCBsZWFwWWVhcik7CiAKIH0gLy8gbmFtZXNwYWNlIFdURgog
CkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvdW5pY29kZS9Db2xsYXRvci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIEphdmFTY3JpcHRDb3JlL3d0Zi91bmljb2RlL0NvbGxhdG9yLmgJKHJldmlzaW9uIDY2MzE1
KQorKysgSmF2YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUvQ29sbGF0b3IuaAkod29ya2luZyBjb3B5
KQpAQCAtMzksNyArMzksNyBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotICAgIGNsYXNzIENvbGxh
dG9yIDogcHVibGljIE5vbmNvcHlhYmxlIHsKKyAgICBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBD
b2xsYXRvciA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiAgICAgcHVibGljOgogICAgICAgICBlbnVt
IFJlc3VsdCB7IEVxdWFsID0gMCwgR3JlYXRlciA9IDEsIExlc3MgPSAtMSB9OwogCkluZGV4OiBK
YXZhU2NyaXB0Q29yZS93dGYvdW5pY29kZS9VVEY4LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlw
dENvcmUvd3RmL3VuaWNvZGUvVVRGOC5oCShyZXZpc2lvbiA2NjMxNSkKKysrIEphdmFTY3JpcHRD
b3JlL3d0Zi91bmljb2RlL1VURjguaAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQAog
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiogc291cmNlU3RhcnQsIGNvbnN0IGNoYXIq
IHNvdXJjZUVuZCwgCiAgICAgICAgICAgICAgICAgICAgIFVDaGFyKiogdGFyZ2V0U3RhcnQsIFVD
aGFyKiB0YXJnZXRFbmQsIGJvb2wgc3RyaWN0ID0gdHJ1ZSk7CiAKLSAgICBDb252ZXJzaW9uUmVz
dWx0IGNvbnZlcnRVVEYxNlRvVVRGOCgKKyAgICBKU19FWFBPUlRfUFJJVkFURSBDb252ZXJzaW9u
UmVzdWx0IGNvbnZlcnRVVEYxNlRvVVRGOCgKICAgICAgICAgICAgICAgICAgICAgY29uc3QgVUNo
YXIqKiBzb3VyY2VTdGFydCwgY29uc3QgVUNoYXIqIHNvdXJjZUVuZCwgCiAgICAgICAgICAgICAg
ICAgICAgIGNoYXIqKiB0YXJnZXRTdGFydCwgY2hhciogdGFyZ2V0RW5kLCBib29sIHN0cmljdCA9
IHRydWUpOwogICB9CkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvQ3VycmVudFRpbWUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvQ3VycmVudFRpbWUuaAkocmV2aXNpb24gNjYz
MTUpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvQ3VycmVudFRpbWUuaAkod29ya2luZyBjb3B5KQpA
QCAtMzksNyArMzksNyBAQAogICAgIC8vIFJldHVybnMgdGhlIGN1cnJlbnQgVVRDIHRpbWUgaW4g
c2Vjb25kcywgY291bnRlZCBmcm9tIEphbnVhcnkgMSwgMTk3MC4KICAgICAvLyBQcmVjaXNpb24g
dmFyaWVzIGRlcGVuZGluZyBvbiBwbGF0Zm9ybSBidXQgaXMgdXN1YWxseSBhcyBnb29kIG9yIGJl
dHRlciAKICAgICAvLyB0aGFuIGEgbWlsbGlzZWNvbmQuCi0gICAgZG91YmxlIGN1cnJlbnRUaW1l
KCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgZG91YmxlIGN1cnJlbnRUaW1lKCk7CiAKICAgICAv
LyBTYW1lIHRoaW5nLCBpbiBtaWxsaXNlY29uZHMuCiAgICAgaW5saW5lIGRvdWJsZSBjdXJyZW50
VGltZU1TKCkKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9NRDUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
YXZhU2NyaXB0Q29yZS93dGYvTUQ1LmgJKHJldmlzaW9uIDY2MzE1KQorKysgSmF2YVNjcmlwdENv
cmUvd3RmL01ENS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFj
ZSBXVEYgewogCi1jbGFzcyBNRDUgeworY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgTUQ1IHsKIHB1
YmxpYzoKICAgICBNRDUoKTsKIApJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL2R0b2EuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvZHRvYS5oCShyZXZpc2lvbiA2NjMxNSkKKysr
IEphdmFTY3JpcHRDb3JlL3d0Zi9kdG9hLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcg
QEAKIAogLy8gczAwOiBpbnB1dCBzdHJpbmcuIE11c3Qgbm90IGJlIDAgYW5kIG11c3QgYmUgdGVy
bWluYXRlZCBieSAwLgogLy8gc2U6ICpzZSB3aWxsIGhhdmUgdGhlIGxhc3QgY29uc3VtZWQgY2hh
cmFjdGVyIHBvc2l0aW9uICsgMS4KLWRvdWJsZSBzdHJ0b2QoY29uc3QgY2hhciogczAwLCBjaGFy
Kiogc2UpOworSlNfRVhQT1JUX1BSSVZBVEUgZG91YmxlIHN0cnRvZChjb25zdCBjaGFyKiBzMDAs
IGNoYXIqKiBzZSk7CiAKIHR5cGVkZWYgY2hhciBEdG9hQnVmZmVyWzgwXTsKIApAQCAtNDAsNyAr
NDAsNyBAQAogCiAvLyBTaXplID0gODAgZm9yIHNpemVvZihEdG9hQnVmZmVyKSArIHNvbWUgc2ln
biBiaXRzLCBkZWNpbWFsIHBvaW50LCAnZScsIGV4cG9uZW50IGRpZ2l0cy4KIHR5cGVkZWYgVUNo
YXIgTnVtYmVyVG9TdHJpbmdCdWZmZXJbOTZdOwotdW5zaWduZWQgbnVtYmVyVG9TdHJpbmcoZG91
YmxlLCBOdW1iZXJUb1N0cmluZ0J1ZmZlcik7CitKU19FWFBPUlRfUFJJVkFURSB1bnNpZ25lZCBu
dW1iZXJUb1N0cmluZyhkb3VibGUsIE51bWJlclRvU3RyaW5nQnVmZmVyKTsKIAogfSAvLyBuYW1l
c3BhY2UgV1RGCiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9Bc3NlcnRpb25zLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL0Fzc2VydGlvbnMuaAkocmV2aXNpb24gNjYzMTUp
CisrKyBKYXZhU2NyaXB0Q29yZS93dGYvQXNzZXJ0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDEsMTMgKzE0MSwxMyBAQAogICAgIFdURkxvZ0NoYW5uZWxTdGF0ZSBzdGF0ZTsKIH0gV1RGTG9n
Q2hhbm5lbDsKIAotdm9pZCBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKGNvbnN0IGNoYXIqIGZp
bGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiBmdW5jdGlvbiwgY29uc3QgY2hhciogYXNzZXJ0aW9u
KTsKLXZvaWQgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZVdpdGhNZXNzYWdlKGNvbnN0IGNoYXIq
IGZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiBmdW5jdGlvbiwgY29uc3QgY2hhciogYXNzZXJ0
aW9uLCBjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikgV1RGX0FUVFJJQlVURV9QUklOVEYoNSwgNik7
Ci12b2lkIFdURlJlcG9ydEFyZ3VtZW50QXNzZXJ0aW9uRmFpbHVyZShjb25zdCBjaGFyKiBmaWxl
LCBpbnQgbGluZSwgY29uc3QgY2hhciogZnVuY3Rpb24sIGNvbnN0IGNoYXIqIGFyZ05hbWUsIGNv
bnN0IGNoYXIqIGFzc2VydGlvbik7Ci12b2lkIFdURlJlcG9ydEZhdGFsRXJyb3IoY29uc3QgY2hh
ciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uLCBjb25zdCBjaGFyKiBmb3Jt
YXQsIC4uLikgV1RGX0FUVFJJQlVURV9QUklOVEYoNCwgNSk7Ci12b2lkIFdURlJlcG9ydEVycm9y
KGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiBmdW5jdGlvbiwgY29uc3Qg
Y2hhciogZm9ybWF0LCAuLi4pIFdURl9BVFRSSUJVVEVfUFJJTlRGKDQsIDUpOwotdm9pZCBXVEZM
b2coV1RGTG9nQ2hhbm5lbCogY2hhbm5lbCwgY29uc3QgY2hhciogZm9ybWF0LCAuLi4pIFdURl9B
VFRSSUJVVEVfUFJJTlRGKDIsIDMpOwotdm9pZCBXVEZMb2dWZXJib3NlKGNvbnN0IGNoYXIqIGZp
bGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiBmdW5jdGlvbiwgV1RGTG9nQ2hhbm5lbCogY2hhbm5l
bCwgY29uc3QgY2hhciogZm9ybWF0LCAuLi4pIFdURl9BVFRSSUJVVEVfUFJJTlRGKDUsIDYpOwor
SlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKGNvbnN0IGNo
YXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiBmdW5jdGlvbiwgY29uc3QgY2hhciogYXNz
ZXJ0aW9uKTsKK0pTX0VYUE9SVF9QUklWQVRFIHZvaWQgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVy
ZVdpdGhNZXNzYWdlKGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiBmdW5j
dGlvbiwgY29uc3QgY2hhciogYXNzZXJ0aW9uLCBjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikgV1RG
X0FUVFJJQlVURV9QUklOVEYoNSwgNik7CitKU19FWFBPUlRfUFJJVkFURSB2b2lkIFdURlJlcG9y
dEFyZ3VtZW50QXNzZXJ0aW9uRmFpbHVyZShjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29u
c3QgY2hhciogZnVuY3Rpb24sIGNvbnN0IGNoYXIqIGFyZ05hbWUsIGNvbnN0IGNoYXIqIGFzc2Vy
dGlvbik7CitKU19FWFBPUlRfUFJJVkFURSB2b2lkIFdURlJlcG9ydEZhdGFsRXJyb3IoY29uc3Qg
Y2hhciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uLCBjb25zdCBjaGFyKiBm
b3JtYXQsIC4uLikgV1RGX0FUVFJJQlVURV9QUklOVEYoNCwgNSk7CitKU19FWFBPUlRfUFJJVkFU
RSB2b2lkIFdURlJlcG9ydEVycm9yKGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCBj
aGFyKiBmdW5jdGlvbiwgY29uc3QgY2hhciogZm9ybWF0LCAuLi4pIFdURl9BVFRSSUJVVEVfUFJJ
TlRGKDQsIDUpOworSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBXVEZMb2coV1RGTG9nQ2hhbm5lbCog
Y2hhbm5lbCwgY29uc3QgY2hhciogZm9ybWF0LCAuLi4pIFdURl9BVFRSSUJVVEVfUFJJTlRGKDIs
IDMpOworSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBXVEZMb2dWZXJib3NlKGNvbnN0IGNoYXIqIGZp
bGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiBmdW5jdGlvbiwgV1RGTG9nQ2hhbm5lbCogY2hhbm5l
bCwgY29uc3QgY2hhciogZm9ybWF0LCAuLi4pIFdURl9BVFRSSUJVVEVfUFJJTlRGKDUsIDYpOwog
CiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRp
bmdQcmltaXRpdmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGlu
Z1ByaW1pdGl2ZXMuaAkocmV2aXNpb24gNjYzMTUpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvVGhy
ZWFkaW5nUHJpbWl0aXZlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsMTIgKzEwMCwxMiBAQAog
ICAgIAogY2xhc3MgTXV0ZXggOiBwdWJsaWMgTm9uY29weWFibGUgewogcHVibGljOgotICAgIE11
dGV4KCk7Ci0gICAgfk11dGV4KCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgTXV0ZXgoKTsKKyAg
ICBKU19FWFBPUlRfUFJJVkFURSB+TXV0ZXgoKTsKIAotICAgIHZvaWQgbG9jaygpOwotICAgIGJv
b2wgdHJ5TG9jaygpOwotICAgIHZvaWQgdW5sb2NrKCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCBsb2NrKCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCB0cnlMb2NrKCk7CisgICAg
SlNfRVhQT1JUX1BSSVZBVEUgdm9pZCB1bmxvY2soKTsKIAogcHVibGljOgogICAgIFBsYXRmb3Jt
TXV0ZXgmIGltcGwoKSB7IHJldHVybiBtX211dGV4OyB9CkBAIC0xMzQsMTUgKzEzNCwxNSBAQAog
CiBjbGFzcyBUaHJlYWRDb25kaXRpb24gOiBwdWJsaWMgTm9uY29weWFibGUgewogcHVibGljOgot
ICAgIFRocmVhZENvbmRpdGlvbigpOwotICAgIH5UaHJlYWRDb25kaXRpb24oKTsKKyAgICBKU19F
WFBPUlRfUFJJVkFURSBUaHJlYWRDb25kaXRpb24oKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB+
VGhyZWFkQ29uZGl0aW9uKCk7CiAgICAgCi0gICAgdm9pZCB3YWl0KE11dGV4JiBtdXRleCk7Cisg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCB3YWl0KE11dGV4JiBtdXRleCk7CiAgICAgLy8gUmV0
dXJucyB0cnVlIGlmIHRoZSBjb25kaXRpb24gd2FzIHNpZ25hbGVkIGJlZm9yZSBhYnNvbHV0ZVRp
bWUsIGZhbHNlIGlmIHRoZSBhYnNvbHV0ZVRpbWUgd2FzIHJlYWNoZWQgb3IgaXMgaW4gdGhlIHBh
c3QuCiAgICAgLy8gVGhlIGFic29sdXRlVGltZSBpcyBpbiBzZWNvbmRzLCBzdGFydGluZyBvbiBK
YW51YXJ5IDEsIDE5NzAuIFRoZSB0aW1lIGlzIGFzc3VtZWQgdG8gdXNlIHRoZSBzYW1lIHRpbWUg
em9uZSBhcyBXVEY6OmN1cnJlbnRUaW1lKCkuCi0gICAgYm9vbCB0aW1lZFdhaXQoTXV0ZXgmLCBk
b3VibGUgYWJzb2x1dGVUaW1lKTsKLSAgICB2b2lkIHNpZ25hbCgpOwotICAgIHZvaWQgYnJvYWRj
YXN0KCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCB0aW1lZFdhaXQoTXV0ZXgmLCBkb3Vi
bGUgYWJzb2x1dGVUaW1lKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNpZ25hbCgpOwor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgYnJvYWRjYXN0KCk7CiAgICAgCiBwcml2YXRlOgog
ICAgIFBsYXRmb3JtQ29uZGl0aW9uIG1fY29uZGl0aW9uOwpJbmRleDogSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9JbnRlcnByZXRlci5oCShyZXZpc2lvbiA2NjMxNSkKKysrIEphdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw4ICsx
MDAsOCBAQAogICAgICAgICBKU1ZhbHVlIGV4ZWN1dGUoRXZhbEV4ZWN1dGFibGUqIGV2YWxOb2Rl
LCBDYWxsRnJhbWUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqLCBTY29wZUNoYWluTm9kZSogc2Nv
cGVDaGFpbiwgSlNWYWx1ZSogZXhjZXB0aW9uKTsKIAogICAgICAgICBKU1ZhbHVlIHJldHJpZXZl
QXJndW1lbnRzKENhbGxGcmFtZSosIEpTRnVuY3Rpb24qKSBjb25zdDsKLSAgICAgICAgSlNWYWx1
ZSByZXRyaWV2ZUNhbGxlcihDYWxsRnJhbWUqLCBKU0Z1bmN0aW9uKikgY29uc3Q7Ci0gICAgICAg
IHZvaWQgcmV0cmlldmVMYXN0Q2FsbGVyKENhbGxGcmFtZSosIGludCYgbGluZU51bWJlciwgaW50
cHRyX3QmIHNvdXJjZUlELCBVU3RyaW5nJiBzb3VyY2VVUkwsIEpTVmFsdWUmIGZ1bmN0aW9uKSBj
b25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSByZXRyaWV2ZUNhbGxlcihD
YWxsRnJhbWUqLCBKU0Z1bmN0aW9uKikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IHZvaWQgcmV0cmlldmVMYXN0Q2FsbGVyKENhbGxGcmFtZSosIGludCYgbGluZU51bWJlciwgaW50
cHRyX3QmIHNvdXJjZUlELCBVU3RyaW5nJiBzb3VyY2VVUkwsIEpTVmFsdWUmIGZ1bmN0aW9uKSBj
b25zdDsKICAgICAgICAgCiAgICAgICAgIHZvaWQgZ2V0QXJndW1lbnRzRGF0YShDYWxsRnJhbWUq
LCBKU0Z1bmN0aW9uKiYsIHB0cmRpZmZfdCYgZmlyc3RQYXJhbWV0ZXJJbmRleCwgUmVnaXN0ZXIq
JiBhcmd2LCBpbnQmIGFyZ2MpOwogICAgICAgICAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDY2
MzE2KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTA5IEBACisyMDEwLTA4LTI4ICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVvbGxpdmll
cnMuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE1ha2UgaXQgcG9zc2libGUgdG8gYnVpbGQgSmF2YVNjcmlwdENvcmUgYXMgc2hhcmVkIGxpYnJh
cnkgd2l0aG91dCBzeW1ib2wgbGlzdHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yNzU1MQorCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmg6CisgICAgICAgICogY29uZmlnLmg6CisgICAgICAgICogZGVidWdnZXIvRGVi
dWdnZXIuaDoKKyAgICAgICAgKEpTQzo6KToKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlckNh
bGxGcmFtZS5oOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmg6CisgICAgICAg
ICogcGNyZS9wY3JlLmg6CisgICAgICAgICogcHJvZmlsZXIvUHJvZmlsZXIuaDoKKyAgICAgICAg
KiBydW50aW1lL0FyZ0xpc3QuaDoKKyAgICAgICAgKiBydW50aW1lL0NhbGxEYXRhLmg6CisgICAg
ICAgICogcnVudGltZS9Db2xsZWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL0NvbXBsZXRpb24u
aDoKKyAgICAgICAgKiBydW50aW1lL0NvbnN0cnVjdERhdGEuaDoKKyAgICAgICAgKiBydW50aW1l
L0RhdGVJbnN0YW5jZS5oOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3IuaDoKKyAgICAgICAgKiBy
dW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uQ29u
c3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL0dDSGFuZGxlLmg6CisgICAgICAgICogcnVu
dGltZS9JZGVudGlmaWVyLmg6CisgICAgICAgIChKU0M6OklkZW50aWZpZXI6OnRvVUludDMyKToK
KyAgICAgICAgKEpTQzo6SWRlbnRpZmllcjo6ZXF1YWwpOgorICAgICAgICAqIHJ1bnRpbWUvSW5p
dGlhbGl6ZVRocmVhZGluZy5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5o
OgorICAgICAgICAoSlNDOjopOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5oOgorICAgICAg
ICAoSlNDOjopOgorICAgICAgICAqIHJ1bnRpbWUvSlNCeXRlQXJyYXkuaDoKKyAgICAgICAgKiBy
dW50aW1lL0pTQ2VsbC5oOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnZwdHIpOgorICAgICAgICAo
SlNDOjpKU0NlbGw6OnNldFZQdHIpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmlzU3RyaW5nKToK
KyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xv
YmFsRGF0YS5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbERhdGE6Oik6CisgICAgICAgICogcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjopOgorICAgICAgICAqIHJ1bnRp
bWUvSlNMb2NrLmg6CisgICAgICAgIChKU0M6OkpTTG9jazo6KToKKyAgICAgICAgKiBydW50aW1l
L0pTT2JqZWN0Lmg6CisgICAgICAgIChKU0M6Oik6CisgICAgICAgICogcnVudGltZS9KU09iamVj
dFdpdGhHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTU3RyaW5nLmg6CisgICAg
ICAgIChKU0M6Oik6CisgICAgICAgICogcnVudGltZS9KU1ZhbHVlLmg6CisgICAgICAgICogcnVu
dGltZS9KU1ZhcmlhYmxlT2JqZWN0Lmg6CisgICAgICAgIChKU0M6Oik6CisgICAgICAgICogcnVu
dGltZS9KU1dyYXBwZXJPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6KToKKyAgICAgICAgKiBydW50
aW1lL0xvb2t1cC5oOgorICAgICAgICAqIHJ1bnRpbWUvTWFya1N0YWNrLmg6CisgICAgICAgICog
cnVudGltZS9PYmplY3RQcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5RGVz
Y3JpcHRvci5oOgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuaDoKKyAgICAg
ICAgKEpTQzo6UHJvcGVydHlOYW1lQXJyYXk6OmFkZCk6CisgICAgICAgICogcnVudGltZS9Qcm9w
ZXJ0eVNsb3QuaDoKKyAgICAgICAgKiBydW50aW1lL1JvcGVJbXBsLmg6CisgICAgICAgICogcnVu
dGltZS9TbWFsbFN0cmluZ3MuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ09iamVjdC5oOgor
ICAgICAgICAoSlNDOjopOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAg
ICogcnVudGltZS9UaW1lb3V0Q2hlY2tlci5oOgorICAgICAgICAqIHJ1bnRpbWUvVVN0cmluZy5o
OgorICAgICAgICAoSlNDOjpVU3RyaW5nOjpVU3RyaW5nKToKKyAgICAgICAgKiB3c2NyaXB0Ogor
ICAgICAgICAqIHd0Zi9Bc3NlcnRpb25zLmg6CisgICAgICAgICogd3RmL0J5dGVBcnJheS5oOgor
ICAgICAgICAqIHd0Zi9DdXJyZW50VGltZS5oOgorICAgICAgICAqIHd0Zi9EYXRlTWF0aC5oOgor
ICAgICAgICAqIHd0Zi9GYXN0TWFsbG9jLmg6CisgICAgICAgICogd3RmL01ENS5oOgorICAgICAg
ICAoV1RGOjopOgorICAgICAgICAqIHd0Zi9NYWluVGhyZWFkLmg6CisgICAgICAgICogd3RmL1Jh
bmRvbU51bWJlci5oOgorICAgICAgICAqIHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaDoKKyAg
ICAgICAgKFdURjo6KToKKyAgICAgICAgKiB3dGYvVGhyZWFkU3BlY2lmaWMuaDoKKyAgICAgICAg
KiB3dGYvVGhyZWFkaW5nLmg6CisgICAgICAgICogd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaDoK
KyAgICAgICAgKiB3dGYvV1RGVGhyZWFkRGF0YS5oOgorICAgICAgICAqIHd0Zi9kdG9hLmg6Cisg
ICAgICAgICogd3RmL3RleHQvQXRvbWljU3RyaW5nLmg6CisgICAgICAgIChXVEY6OkF0b21pY1N0
cmluZzo6QXRvbWljU3RyaW5nKToKKyAgICAgICAgKFdURjo6QXRvbWljU3RyaW5nOjppc0hhc2hU
YWJsZURlbGV0ZWRWYWx1ZSk6CisgICAgICAgIChXVEY6OkF0b21pY1N0cmluZzo6fkF0b21pY1N0
cmluZyk6CisgICAgICAgIChXVEY6OkF0b21pY1N0cmluZzo6aW1wbCk6CisgICAgICAgIChXVEY6
OkF0b21pY1N0cmluZzo6b3BlcmF0b3I9KToKKyAgICAgICAgKiB3dGYvdGV4dC9DU3RyaW5nLmg6
CisgICAgICAgIChXVEY6OkNTdHJpbmc6On5DU3RyaW5nKToKKyAgICAgICAgKFdURjo6Q1N0cmlu
Zzo6ZGF0YSk6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5oOgorICAgICAgICAoV1RG
OjpTdHJpbmdJbXBsOjpjaGFyYWN0ZXJzKToKKyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcu
aDoKKyAgICAgICAgKFdURjo6U3RyaW5nOjpTdHJpbmcpOgorICAgICAgICAoV1RGOjpTdHJpbmc6
OmZpbmRJZ25vcmluZ0Nhc2UpOgorICAgICAgICAoV1RGOjpTdHJpbmc6OmlzSGFzaFRhYmxlRGVs
ZXRlZFZhbHVlKToKKyAgICAgICAgKiB3dGYvdW5pY29kZS9Db2xsYXRvci5oOgorICAgICAgICAo
V1RGOjopOgorICAgICAgICAqIHd0Zi91bmljb2RlL1VURjguaDoKKwogMjAxMC0wOC0yOCAgUHJh
dGlrIFNvbGFua2kgIDxwc29sYW5raUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
RGFuIEJlcm5zdGVpbi4KSW5kZXg6IEphdmFTY3JpcHRDb3JlL3BjcmUvcGNyZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIEphdmFTY3JpcHRDb3JlL3BjcmUvcGNyZS5oCShyZXZpc2lvbiA2NjMxNSkKKysrIEph
dmFTY3JpcHRDb3JlL3BjcmUvcGNyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSwxNCArNTUsMTQg
QEAKIGNvbnN0IGludCBKU1JlZ0V4cEVycm9yTm9NZW1vcnkgPSAtMzsKIGNvbnN0IGludCBKU1Jl
Z0V4cEVycm9ySW50ZXJuYWwgPSAtNDsKIAotSlNSZWdFeHAqIGpzUmVnRXhwQ29tcGlsZShjb25z
dCBVQ2hhciogcGF0dGVybiwgaW50IHBhdHRlcm5MZW5ndGgsCitKU19FWFBPUlRfUFJJVkFURSBK
U1JlZ0V4cCoganNSZWdFeHBDb21waWxlKGNvbnN0IFVDaGFyKiBwYXR0ZXJuLCBpbnQgcGF0dGVy
bkxlbmd0aCwKICAgICBKU1JlZ0V4cElnbm9yZUNhc2VPcHRpb24sIEpTUmVnRXhwTXVsdGlsaW5l
T3B0aW9uLAogICAgIHVuc2lnbmVkKiBudW1TdWJwYXR0ZXJucywgY29uc3QgY2hhcioqIGVycm9y
TWVzc2FnZSk7CiAKLWludCBqc1JlZ0V4cEV4ZWN1dGUoY29uc3QgSlNSZWdFeHAqLAorSlNfRVhQ
T1JUX1BSSVZBVEUgaW50IGpzUmVnRXhwRXhlY3V0ZShjb25zdCBKU1JlZ0V4cCosCiAgICAgY29u
c3QgVUNoYXIqIHN1YmplY3QsIGludCBzdWJqZWN0TGVuZ3RoLCBpbnQgc3RhcnRPZmZzZXQsCiAg
ICAgaW50KiBvZmZzZXRzVmVjdG9yLCBpbnQgb2Zmc2V0c1ZlY3Rvckxlbmd0aCk7CiAKLXZvaWQg
anNSZWdFeHBGcmVlKEpTUmVnRXhwKik7CitKU19FWFBPUlRfUFJJVkFURSB2b2lkIGpzUmVnRXhw
RnJlZShKU1JlZ0V4cCopOwogCiAjZW5kaWYKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3dzY3JpcHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3NjcmlwdAkocmV2aXNpb24gNjYzMTUpCisr
KyBKYXZhU2NyaXB0Q29yZS93c2NyaXB0CSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw3IEBA
CiBkZWYgYnVpbGQoYmxkKToKICAgICBpbXBvcnQgT3B0aW9ucwogCisgICAgYmxkLmVudi5MSUJE
SVIgPSBvdXRwdXRfZGlyCiAgICAgZnVsbF9kaXJzID0gZ2V0X2RpcnNfZm9yX2ZlYXR1cmVzKGpz
Y29yZV9kaXIsIGZlYXR1cmVzPVtidWlsZF9wb3J0XSwgZGlycz1qc2NvcmVfZGlycykKIAogICAg
IGluY2x1ZGVzID0gY29tbW9uX2luY2x1ZGVzICsgZnVsbF9kaXJzCkBAIC01NSw5ICs1NiwxMCBA
QAogCiAgICAgIyAxLiBBIHNpbXBsZSBwcm9ncmFtCiAgICAganNjb3JlID0gYmxkLm5ld190YXNr
X2dlbigKLSAgICAgICAgZmVhdHVyZXMgPSAnY3h4IGNzdGF0aWNsaWInLAorICAgICAgICBmZWF0
dXJlcyA9ICdjeHggY3NobGliIGltcGxpYicsCiAgICAgICAgIGluY2x1ZGVzID0gJy4gLi4gYXNz
ZW1ibGVyIERlcml2ZWRTb3VyY2VzIEZvcndhcmRpbmdIZWFkZXJzICcgKyAnICcuam9pbihpbmNs
dWRlcyksCiAgICAgICAgIHNvdXJjZSA9IHNvdXJjZXMsCisgICAgICAgIGRlZmluZXMgPSBbJ0JV
SUxESU5HX0phdmFTY3JpcHRDb3JlJ10sCiAgICAgICAgIHRhcmdldCA9ICdqc2NvcmUnLAogICAg
ICAgICB1c2VsaWIgPSAnV1ggSUNVICcgKyBnZXRfY29uZmlnKCksCiAgICAgICAgIHVzZWxpYl9s
b2NhbCA9ICcnLApJbmRleDogSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlci5oCShyZXZpc2lvbiA2
NjMxNSkKKysrIEphdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTUxLDExICs1MSwxMSBAQAogICAgICAgICAgICAgcmV0dXJuICZzX3NoYXJlZEVuYWJs
ZWRQcm9maWxlclJlZmVyZW5jZTsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBQcm9maWxl
ciogcHJvZmlsZXIoKTsgCisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQcm9maWxl
ciogcHJvZmlsZXIoKTsgCiAgICAgICAgIHN0YXRpYyBDYWxsSWRlbnRpZmllciBjcmVhdGVDYWxs
SWRlbnRpZmllcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUsIGNvbnN0IFVTdHJpbmcmIHNvdXJj
ZVVSTCwgaW50IGxpbmVOdW1iZXIpOwogCi0gICAgICAgIHZvaWQgc3RhcnRQcm9maWxpbmcoRXhl
Y1N0YXRlKiwgY29uc3QgVVN0cmluZyYgdGl0bGUpOwotICAgICAgICBQYXNzUmVmUHRyPFByb2Zp
bGU+IHN0b3BQcm9maWxpbmcoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYgdGl0bGUpOworICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHN0YXJ0UHJvZmlsaW5nKEV4ZWNTdGF0ZSosIGNv
bnN0IFVTdHJpbmcmIHRpdGxlKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgUGFzc1JlZlB0
cjxQcm9maWxlPiBzdG9wUHJvZmlsaW5nKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmIHRpdGxl
KTsKIAogICAgICAgICB2b2lkIHdpbGxFeGVjdXRlKEV4ZWNTdGF0ZSosIEpTVmFsdWUgZnVuY3Rp
b24pOwogICAgICAgICB2b2lkIHdpbGxFeGVjdXRlKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcm
IHNvdXJjZVVSTCwgaW50IHN0YXJ0aW5nTGluZU51bWJlcik7CkluZGV4OiBKYXZhU2NyaXB0Q29y
ZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRD
b3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmgJKHJldmlzaW9uIDY2MzE1KQorKysgSmF2
YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuaAkod29ya2luZyBjb3B5KQpA
QCAtNTEsMTAgKzUxLDEwIEBACiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBkeW5hbWljR2xvYmFs
T2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9jYWxsRnJhbWUtPmR5bmFtaWNHbG9iYWxPYmplY3Qo
KTsgfQogICAgICAgICBjb25zdCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbigpIGNvbnN0IHsg
cmV0dXJuIG1fY2FsbEZyYW1lLT5zY29wZUNoYWluKCk7IH0KICAgICAgICAgY29uc3QgVVN0cmlu
ZyogZnVuY3Rpb25OYW1lKCkgY29uc3Q7Ci0gICAgICAgIFVTdHJpbmcgY2FsY3VsYXRlZEZ1bmN0
aW9uTmFtZSgpIGNvbnN0OwotICAgICAgICBUeXBlIHR5cGUoKSBjb25zdDsKLSAgICAgICAgSlNP
YmplY3QqIHRoaXNPYmplY3QoKSBjb25zdDsKLSAgICAgICAgSlNWYWx1ZSBldmFsdWF0ZShjb25z
dCBVU3RyaW5nJiwgSlNWYWx1ZSYgZXhjZXB0aW9uKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgVVN0cmluZyBjYWxjdWxhdGVkRnVuY3Rpb25OYW1lKCkgY29uc3Q7CisgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIFR5cGUgdHlwZSgpIGNvbnN0OworICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSBKU09iamVjdCogdGhpc09iamVjdCgpIGNvbnN0OworICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSBKU1ZhbHVlIGV2YWx1YXRlKGNvbnN0IFVTdHJpbmcmLCBKU1ZhbHVlJiBleGNlcHRp
b24pIGNvbnN0OwogICAgICAgICBKU1ZhbHVlIGV4Y2VwdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
ZXhjZXB0aW9uOyB9CiAKICAgICBwcml2YXRlOgpJbmRleDogSmF2YVNjcmlwdENvcmUvZGVidWdn
ZXIvRGVidWdnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1
Z2dlci5oCShyZXZpc2lvbiA2NjMxNSkKKysrIEphdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVn
Z2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAKICAgICBjbGFzcyBTb3VyY2VD
b2RlOwogICAgIGNsYXNzIFVTdHJpbmc7CiAKLSAgICBjbGFzcyBEZWJ1Z2dlciB7CisgICAgY2xh
c3MgSlNfRVhQT1JUX1BSSVZBVEUgRGVidWdnZXIgewogICAgIHB1YmxpYzoKICAgICAgICAgdmly
dHVhbCB+RGVidWdnZXIoKTsKIApJbmRleDogV2ViS2l0L3d4L0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvd3gvQ2hhbmdlTG9nCShyZXZpc2lvbiA2NjMxNikKKysrIFdlYktpdC93eC9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSwxNCBAQAogMjAxMC0wOC0yOCAgS2V2
aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KIAorICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGJ1aWxk
IEphdmFTY3JpcHRDb3JlIGFzIHNoYXJlZCBsaWJyYXJ5IHdpdGhvdXQgc3ltYm9sIGxpc3RzLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc1NTEKKwor
ICAgICAgICAqIHdzY3JpcHQ6CisKKzIwMTAtMDgtMjggIEtldmluIE9sbGl2aWVyICA8a2V2aW5v
QHRoZW9sbGl2aWVycy5jb20+CisKICAgICAgICAgW3d4XSBCdWlsZCBmaXggYWZ0ZXIgcGFyc2VN
b2RlIC0+IGNvbXBhdGliaWxpdHlNb2RlIHJlbmFtZS4KICAgICAgICAgCiAgICAgICAgICogV2Vi
RnJhbWUuY3BwOgpJbmRleDogV2ViS2l0L3d4L3dzY3JpcHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L3d4L3dzY3JpcHQJKHJldmlzaW9uIDY2MzE1KQorKysgV2ViS2l0L3d4L3dzY3JpcHQJKHdvcmtp
bmcgY29weSkKQEAgLTY4LDcgKzY4LDcgQEAKICAgICAKIGRlZiBwcmVfYnVpbGQoYmxkKToKICAg
ICAiIiIKLSAgICBUaGUgd3hXZWJLaXQgbGlicmFyeSBzaG91bGQgYmUgcmVidWlsdCBpZiBqc2Nv
cmUgb3Igd2ViY29yZSBjaGFuZ2VzLAorICAgIFRoZSB3eFdlYktpdCBsaWJyYXJ5IHNob3VsZCBi
ZSByZWJ1aWx0IGlmIHdlYmNvcmUgY2hhbmdlcywKICAgICBzbyB3ZSBtYWtlIHRob3NlIHN0YXRp
YyBsaWJzIGFzIGRlcGVuZGVuY2llcy4KICAgICAiIiIKICAgICAKQEAgLTc2LDEzICs3NiwxMCBA
QAogICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4nKToKICAgICAgICAgZXh0ID0g
Jy5saWInCiAgICAgCi0gICAgbGlianNjb3JlID0gb3MucGF0aC5qb2luKG91dHB1dF9kaXIsICds
aWJqc2NvcmUlcycgJSBleHQpCiAgICAgbGlid2ViY29yZSA9IG9zLnBhdGguam9pbihvdXRwdXRf
ZGlyLCAnbGlid2ViY29yZSVzJyAlIGV4dCkKICAgICAKLSAgICBhc3NlcnQgb3MucGF0aC5leGlz
dHMobGlianNjb3JlKQogICAgIGFzc2VydCBvcy5wYXRoLmV4aXN0cyhsaWJ3ZWJjb3JlKQogICAg
IAotICAgIGJsZC5lbnYuQ1hYREVQU19KU0NPUkUgPSBVdGlscy5oX2ZpbGUobGlianNjb3JlKQog
ICAgIGJsZC5lbnYuQ1hYREVQU19XRUJDT1JFID0gVXRpbHMuaF9maWxlKGxpYndlYmNvcmUpCiAg
ICAgCiBkZWYgYnVpbGQoYmxkKToKSW5kZXg6IFdlYkNvcmUvY29uZmlnLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9jb25maWcuaAkocmV2aXNpb24gNjYzMTUpCisrKyBXZWJDb3JlL2NvbmZpZy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBACiAKICNpbmNsdWRlIDx3dGYvUGxhdGZv
cm0uaD4KIAotI2lmICFQTEFURk9STShDSFJPTUlVTSkgJiYgT1MoV0lORE9XUykgJiYgIWRlZmlu
ZWQoQlVJTERJTkdfV1hfXykgJiYgIUNPTVBJTEVSKEdDQykKKyNpZiAhUExBVEZPUk0oQ0hST01J
VU0pICYmIE9TKFdJTkRPV1MpICYmICFDT01QSUxFUihHQ0MpCiAjaWYgZGVmaW5lZChCVUlMRElO
R19KYXZhU2NyaXB0Q29yZSkgfHwgZGVmaW5lZChCVUlMRElOR19XVEYpCiAjZGVmaW5lIEpTX0VY
UE9SVERBVEEgX19kZWNsc3BlYyhkbGxleHBvcnQpCiAjZWxzZQpAQCAtNDAsMTMgKzQwLDE0IEBA
CiAjZWxzZQogI2RlZmluZSBXRUJLSVRfRVhQT1JUREFUQSBfX2RlY2xzcGVjKGRsbGltcG9ydCkK
ICNlbmRpZgotI2RlZmluZSBKU19FWFBPUlRDTEFTUyBKU19FWFBPUlREQVRBCiAjZWxzZQogI2Rl
ZmluZSBKU19FWFBPUlREQVRBCi0jZGVmaW5lIEpTX0VYUE9SVENMQVNTCiAjZGVmaW5lIFdFQktJ
VF9FWFBPUlREQVRBCiAjZW5kaWYKIAorI2RlZmluZSBKU19FWFBPUlRDTEFTUyBKU19FWFBPUlRE
QVRBCisjZGVmaW5lIEpTX0VYUE9SVF9QUklWQVRFIEpTX0VYUE9SVERBVEEKKwogI2lmZGVmIF9f
QVBQTEVfXwogI2RlZmluZSBIQVZFX0ZVTkNfVVNMRUVQIDEKICNlbmRpZiAvKiBfX0FQUExFX18g
Ki8KSW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdl
TG9nCShyZXZpc2lvbiA2NjMxNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTIgQEAKKzIwMTAtMDgtMjggIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRo
ZW9sbGl2aWVycy5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTWFrZSBpdCBwb3NzaWJsZSB0byBidWlsZCBKYXZhU2NyaXB0Q29yZSBhcyBzaGFy
ZWQgbGlicmFyeSB3aXRob3V0IHN5bWJvbCBsaXN0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NTUxCisKKyAgICAgICAgKiBjb25maWcuaDoKKwog
MjAxMC0wOC0yNiAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBOaWtvbGFzIFppbW1lcm1hbm4uCkluZGV4OiBXZWJLaXRUb29s
cy93eC9idWlsZC9zZXR0aW5ncy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy93eC9idWls
ZC9zZXR0aW5ncy5weQkocmV2aXNpb24gNjYzMTUpCisrKyBXZWJLaXRUb29scy93eC9idWlsZC9z
ZXR0aW5ncy5weQkod29ya2luZyBjb3B5KQpAQCAtMjg4LDcgKzI4OCw3IEBACiAgICAgaWYgYnVp
bGRfcG9ydCA9PSAid3giOgogICAgICAgICB1cGRhdGVfd3hfZGVwcyhjb25mLCB3a19yb290LCBt
c3ZjX3ZlcnNpb24pCiAgICAgCi0gICAgICAgIGNvbmYuZW52LmFwcGVuZF92YWx1ZSgnQ1hYREVG
SU5FUycsIFsnQlVJTERJTkdfV1hfXz0xJywgJ0pTX05PX0VYUE9SVCddKQorICAgICAgICBjb25m
LmVudi5hcHBlbmRfdmFsdWUoJ0NYWERFRklORVMnLCBbJ0JVSUxESU5HX1dYX189MSddKQogCiAg
ICAgICAgIGlmIGJ1aWxkaW5nX29uX3dpbjMyOgogICAgICAgICAgICAgY29uZi5lbnYuYXBwZW5k
X3ZhbHVlKCdMSUJQQVRIJywgb3MucGF0aC5qb2luKG1zdmNsaWJzX2RpciwgJ2xpYicpKQpAQCAt
MzAwLDYgKzMwMCw4IEBACiAgICAgICAgICAgICBjb25mLmVudlsnQ1BQUEFUSF9XWCddID0gd3hp
bmNsdWRlcwogICAgICAgICAgICAgY29uZi5lbnZbJ0xJQl9XWCddID0gd3hsaWJzCiAgICAgICAg
ICAgICBjb25mLmVudlsnTElCUEFUSF9XWCddID0gd3hsaWJwYXRocworICAgICAgICBlbHNlOgor
ICAgICAgICAgICAgY29uZi5lbnYuYXBwZW5kX3ZhbHVlKCdDWFhGTEFHUycsIFsnLWZ2aXNpYmls
aXR5PWhpZGRlbiddKQogCiAgICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2Rhcndpbicp
OgogICAgICAgICBjb25mLmVudlsnTElCX0lDVSddID0gWydpY3Vjb3JlJ10KSW5kZXg6IFdlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL2NvbmZpZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL2NvbmZpZy5oCShyZXZpc2lvbiA2NjMxNSkKKysrIFdlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL2NvbmZpZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMiArMjYsNiBA
QAogCiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CiAKLSNpZmRlZiBfX2NwbHVzcGx1cwotI3Vu
ZGVmIG5ldwotI3VuZGVmIGRlbGV0ZQotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jZW5k
aWYKLQogI2lmIE9TKFdJTkRPV1MpICYmICFDT01QSUxFUihHQ0MpCiAjZGVmaW5lIEpTX0VYUE9S
VERBVEEgX19kZWNsc3BlYyhkbGxpbXBvcnQpCiAjZGVmaW5lIFdFQktJVF9FWFBPUlREQVRBIF9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQpAQCAtNDAsNiArMzQsMTQgQEAKICNkZWZpbmUgV0VCS0lUX0VY
UE9SVERBVEEKICNlbmRpZgogCisjZGVmaW5lIEpTX0VYUE9SVF9QUklWQVRFIEpTX0VYUE9SVERB
VEEKKworI2lmZGVmIF9fY3BsdXNwbHVzCisjdW5kZWYgbmV3CisjdW5kZWYgZGVsZXRlCisjaW5j
bHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oV0lOKQogI2Rl
ZmluZSBXVEZfUExBVEZPUk1fQ0YgMSAKICNpZiBkZWZpbmVkKFdJTl9DQUlSTykKSW5kZXg6IFdl
YktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDY2MzE2KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsMTUgQEAKIDIwMTAtMDgtMjggIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRo
ZW9sbGl2aWVycy5jb20+CiAKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTWFrZSBpdCBwb3NzaWJsZSB0byBidWlsZCBKYXZhU2NyaXB0Q29yZSBhcyBzaGFy
ZWQgbGlicmFyeSB3aXRob3V0IHN5bWJvbCBsaXN0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NTUxCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9jb25maWcuaDoKKyAgICAgICAgKiB3eC9idWlsZC9zZXR0aW5ncy5weToKKworMjAxMC0wOC0y
OCAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KKwogICAgICAgICBb
d3hdIEJ1aWxkIGZpeCBhZnRlciBkaXJlY3RvcnkgYWRkaXRpb24uCiAKICAgICAgICAgKiB3eC9i
dWlsZC9zZXR0aW5ncy5weToK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65865</attachid>
            <date>2010-08-29 17:10:41 -0700</date>
            <delta_ts>2011-03-06 12:49:11 -0800</delta_ts>
            <desc>Style and build fixes to update last patch</desc>
            <filename>jscore_exports11.patch</filename>
            <type>text/plain</type>
            <size>127200</size>
            <attacher name="Kevin Ollivier">kevino</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkocmV2aXNpb24gNjYzMzkpCisrKyBK
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03MSwy
MSArNzEsMjEgQEAKIAogICAgICAgICBzdGF0aWMgdm9pZCBkdW1wU3RhdGlzdGljcygpOwogCi0g
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gYWRkUHJvcGVydHlUcmFuc2l0aW9u
KFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0
cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBzaXplX3QmIG9mZnNldCk7Ci0gICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gYWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlz
dGluZ1N0cnVjdHVyZShTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBvZmZz
ZXQpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1
cmU+IGFkZFByb3BlcnR5VHJhbnNpdGlvbihTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwg
c2l6ZV90JiBvZmZzZXQpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1Jl
ZlB0cjxTdHJ1Y3R1cmU+IGFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUo
U3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRy
aWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUsIHNpemVfdCYgb2Zmc2V0KTsKICAgICAgICAg
c3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiByZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oU3Ry
dWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBzaXplX3QmIG9mZnNldCk7
Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY2hhbmdlUHJvdG90eXBlVHJh
bnNpdGlvbihTdHJ1Y3R1cmUqLCBKU1ZhbHVlIHByb3RvdHlwZSk7Ci0gICAgICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFN0cnVjdHVyZT4gZGVzcGVjaWZ5RnVuY3Rpb25UcmFuc2l0aW9uKFN0cnVjdHVy
ZSosIGNvbnN0IElkZW50aWZpZXImKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjaGFuZ2VQcm90b3R5cGVUcmFuc2l0aW9uKFN0cnVjdHVy
ZSosIEpTVmFsdWUgcHJvdG90eXBlKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IFBhc3NSZWZQdHI8U3RydWN0dXJlPiBkZXNwZWNpZnlGdW5jdGlvblRyYW5zaXRpb24oU3RydWN0
dXJlKiwgY29uc3QgSWRlbnRpZmllciYpOwogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1
Y3R1cmU+IGdldHRlclNldHRlclRyYW5zaXRpb24oU3RydWN0dXJlKik7CiAgICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gdG9DYWNoZWFibGVEaWN0aW9uYXJ5VHJhbnNpdGlvbihT
dHJ1Y3R1cmUqKTsKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiB0b1VuY2Fj
aGVhYmxlRGljdGlvbmFyeVRyYW5zaXRpb24oU3RydWN0dXJlKik7CiAKICAgICAgICAgUGFzc1Jl
ZlB0cjxTdHJ1Y3R1cmU+IGZsYXR0ZW5EaWN0aW9uYXJ5U3RydWN0dXJlKEpTT2JqZWN0Kik7CiAK
LSAgICAgICAgflN0cnVjdHVyZSgpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB+U3RydWN0
dXJlKCk7CiAKICAgICAgICAgLy8gVGhlc2Ugc2hvdWxkIGJlIHVzZWQgd2l0aCBjYXV0aW9uLiAg
Ci0gICAgICAgIHNpemVfdCBhZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZp
Y1ZhbHVlKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGFkZFByb3BlcnR5V2l0
aG91dFRyYW5zaXRpb24oY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBh
dHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpOwogICAgICAgICBzaXplX3QgcmVtb3Zl
UHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUp
OwogICAgICAgICB2b2lkIHNldFByb3RvdHlwZVdpdGhvdXRUcmFuc2l0aW9uKEpTVmFsdWUgcHJv
dG90eXBlKSB7IG1fcHJvdG90eXBlID0gcHJvdG90eXBlOyB9CiAgICAgICAgIApAQCAtMTA2LDcg
KzEwNiw3IEBACiAgICAgICAgIGJvb2wgaXNVc2luZ0lubGluZVN0b3JhZ2UoKSBjb25zdDsKIAog
ICAgICAgICBzaXplX3QgZ2V0KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7Ci0gICAg
ICAgIHNpemVfdCBnZXQoY29uc3QgU3RyaW5nSW1wbCogcmVwLCB1bnNpZ25lZCYgYXR0cmlidXRl
cywgSlNDZWxsKiYgc3BlY2lmaWNWYWx1ZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHNp
emVfdCBnZXQoY29uc3QgU3RyaW5nSW1wbCogcmVwLCB1bnNpZ25lZCYgYXR0cmlidXRlcywgSlND
ZWxsKiYgc3BlY2lmaWNWYWx1ZSk7CiAgICAgICAgIHNpemVfdCBnZXQoY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcywgSlNDZWxsKiYgc3BlY2lmaWNW
YWx1ZSkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKCFwcm9wZXJ0eU5hbWUuaXNOdWxs
KCkpOwpAQCAtMTE2LDcgKzExNiw3IEBACiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBt
X3NwZWNpZmljVmFsdWVJblByZXZpb3VzID09IHNwZWNpZmljVmFsdWU7CiAgICAgICAgIH0KLSAg
ICAgICAgYm9vbCBoYXNUcmFuc2l0aW9uKFN0cmluZ0ltcGwqLCB1bnNpZ25lZCBhdHRyaWJ1dGVz
KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBoYXNUcmFuc2l0aW9uKFN0cmluZ0lt
cGwqLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKICAgICAgICAgYm9vbCBoYXNUcmFuc2l0aW9uKGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcykKICAgICAg
ICAgewogICAgICAgICAgICAgcmV0dXJuIGhhc1RyYW5zaXRpb24ocHJvcGVydHlOYW1lLmltcGwo
KSwgYXR0cmlidXRlcyk7CkBAIC0xMzIsNyArMTMyLDcgQEAKICAgICAgICAgCiAgICAgICAgIGJv
b2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydHlUYWJsZSA/ICFtX3Byb3BlcnR5
VGFibGUtPmtleUNvdW50IDogbV9vZmZzZXQgPT0gbm9PZmZzZXQ7IH0KIAotICAgICAgICB2b2lk
IGRlc3BlY2lmeURpY3Rpb25hcnlGdW5jdGlvbihjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGRlc3BlY2lmeURpY3Rpb25hcnlG
dW5jdGlvbihjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOwogICAgICAgICB2b2lkIGRp
c2FibGVTcGVjaWZpY0Z1bmN0aW9uVHJhY2tpbmcoKSB7IG1fc3BlY2lmaWNGdW5jdGlvblRocmFz
aENvdW50ID0gbWF4U3BlY2lmaWNGdW5jdGlvblRocmFzaENvdW50OyB9CiAKICAgICAgICAgdm9p
ZCBzZXRFbnVtZXJhdGlvbkNhY2hlKEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIGVudW1lcmF0aW9u
Q2FjaGUpOyAvLyBEZWZpbmVkIGluIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaC4KQEAgLTE0Miw3
ICsxNDIsNyBAQAogICAgICAgICAKICAgICBwcml2YXRlOgogCi0gICAgICAgIFN0cnVjdHVyZShK
U1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8mLCB1bnNpZ25lZCBhbm9ueW1vdXNTbG90
Q291bnQpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBTdHJ1Y3R1cmUoSlNWYWx1ZSBwcm90
b3R5cGUsIGNvbnN0IFR5cGVJbmZvJiwgdW5zaWduZWQgYW5vbnltb3VzU2xvdENvdW50KTsKICAg
ICAgICAgCiAgICAgICAgIHR5cGVkZWYgZW51bSB7IAogICAgICAgICAgICAgTm9uZURpY3Rpb25h
cnlLaW5kID0gMCwKQEAgLTE2Niw3ICsxNjYsNyBAQAogICAgICAgICB2b2lkIGRlc3BlY2lmeUFs
bEZ1bmN0aW9ucygpOwogCiAgICAgICAgIFByb3BlcnR5TWFwSGFzaFRhYmxlKiBjb3B5UHJvcGVy
dHlUYWJsZSgpOwotICAgICAgICB2b2lkIG1hdGVyaWFsaXplUHJvcGVydHlNYXAoKTsKKyAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBtYXRlcmlhbGl6ZVByb3BlcnR5TWFwKCk7CiAgICAg
ICAgIHZvaWQgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KCkKICAgICAgICAgewog
ICAgICAgICAgICAgaWYgKG1fcHJvcGVydHlUYWJsZSB8fCAhbV9wcmV2aW91cykgICAgICAgICAg
ICAgCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCShyZXZpc2lvbiA2NjMzOSkKKysr
IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtNjIs
NyArNjIsNyBAQAogICAgIHR5cGVkZWYgdm9pZCAoKkpTU3RyaW5nRmluYWxpemVyQ2FsbGJhY2sp
KEpTU3RyaW5nKiwgdm9pZCogY29udGV4dCk7CiAgICAgSlNTdHJpbmcqIGpzU3RyaW5nV2l0aEZp
bmFsaXplcihFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJiwgSlNTdHJpbmdGaW5hbGl6ZXJDYWxs
YmFjayBjYWxsYmFjaywgdm9pZCogY29udGV4dCk7CiAKLSAgICBjbGFzcyBKU19FWFBPUlRDTEFT
UyBKU1N0cmluZyA6IHB1YmxpYyBKU0NlbGwgeworICAgIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRF
IEpTU3RyaW5nIDogcHVibGljIEpTQ2VsbCB7CiAgICAgcHVibGljOgogICAgICAgICBmcmllbmQg
Y2xhc3MgSklUOwogICAgICAgICBmcmllbmQgY2xhc3MgSlNHbG9iYWxEYXRhOwpJbmRleDogSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2aXNpb24gNjYzMzkpCisrKyBKYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTcwLDExICs3MCwxMSBAQAog
ICAgIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUqIFByb3BlcnR5U3RvcmFnZTsKICAgICB0eXBlZGVm
IGNvbnN0IEVuY29kZWRKU1ZhbHVlKiBDb25zdFByb3BlcnR5U3RvcmFnZTsKIAotICAgIGNsYXNz
IEpTT2JqZWN0IDogcHVibGljIEpTQ2VsbCB7CisgICAgY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUg
SlNPYmplY3QgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEJhdGNoZWRU
cmFuc2l0aW9uT3B0aW1pemVyOwogICAgICAgICBmcmllbmQgY2xhc3MgSklUOwogICAgICAgICBm
cmllbmQgY2xhc3MgSlNDZWxsOwotICAgICAgICBmcmllbmQgdm9pZCBzZXRVcFN0YXRpY0Z1bmN0
aW9uU2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEhhc2hFbnRyeSogZW50cnksIEpTT2JqZWN0
KiB0aGlzT2JqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYg
c2xvdCk7CisgICAgICAgIGZyaWVuZCBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldFVwU3RhdGlj
RnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSwgSlNP
YmplY3QqIHRoaXNPYmosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90JiBzbG90KTsKIAogICAgIHB1YmxpYzoKICAgICAgICAgZXhwbGljaXQgSlNPYmplY3QoTm9u
TnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPik7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4Y2VwdGlvbkhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4Y2VwdGlvbkhlbHBlcnMuaAkocmV2aXNpb24gNjYzMzkpCisrKyBKYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsMTAgKzQzLDEw
IEBACiAgICAgY2xhc3MgTm9kZTsKICAgICBzdHJ1Y3QgSW5zdHJ1Y3Rpb247CiAgICAgCi0gICAg
SlNWYWx1ZSBjcmVhdGVJbnRlcnJ1cHRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihKU0dsb2JhbERhdGEq
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIGNyZWF0ZUludGVycnVwdGVkRXhlY3V0
aW9uRXhjZXB0aW9uKEpTR2xvYmFsRGF0YSopOwogICAgIEpTVmFsdWUgY3JlYXRlVGVybWluYXRl
ZEV4ZWN1dGlvbkV4Y2VwdGlvbihKU0dsb2JhbERhdGEqKTsKLSAgICBKU09iamVjdCogY3JlYXRl
U3RhY2tPdmVyZmxvd0Vycm9yKEV4ZWNTdGF0ZSopOwotICAgIEpTT2JqZWN0KiBjcmVhdGVTdGFj
a092ZXJmbG93RXJyb3IoSlNHbG9iYWxPYmplY3QqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBK
U09iamVjdCogY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKEV4ZWNTdGF0ZSopOworICAgIEpTX0VY
UE9SVF9QUklWQVRFIEpTT2JqZWN0KiBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoSlNHbG9iYWxP
YmplY3QqKTsKICAgICBKU1ZhbHVlIGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoRXhlY1N0
YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBDb2RlQmxv
Y2sqKTsKICAgICBKU05vdEFuT2JqZWN0RXJyb3JTdHViKiBjcmVhdGVOb3RBbk9iamVjdEVycm9y
U3R1YihFeGVjU3RhdGUqLCBib29sIGlzTnVsbCk7CiAgICAgSlNPYmplY3QqIGNyZWF0ZUludmFs
aWRQYXJhbUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIqIG9wLCBKU1ZhbHVlLCB1bnNpZ25l
ZCBieXRlY29kZU9mZnNldCwgQ29kZUJsb2NrKik7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RnVuY3Rpb24uaAkocmV2aXNpb24gNjYzMzkpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDQsMTQgKzQ0LDE0IEBACiAgICAgICAgIHR5
cGVkZWYgSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0IEJhc2U7CiAKICAgICBwdWJsaWM6Ci0gICAg
ICAgIEpTRnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBOb25OdWxsUGFzc1Jl
ZlB0cjxTdHJ1Y3R1cmU+LCBpbnQgbGVuZ3RoLCBjb25zdCBJZGVudGlmaWVyJiwgTmF0aXZlRnVu
Y3Rpb24pOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSos
IEpTR2xvYmFsT2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgaW50IGxlbmd0
aCwgY29uc3QgSWRlbnRpZmllciYsIE5hdGl2ZUZ1bmN0aW9uKTsKICNpZiBFTkFCTEUoSklUKQog
ICAgICAgICBKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgTm9uTnVsbFBh
c3NSZWZQdHI8U3RydWN0dXJlPiwgaW50IGxlbmd0aCwgY29uc3QgSWRlbnRpZmllciYsIFBhc3NS
ZWZQdHI8TmF0aXZlRXhlY3V0YWJsZT4pOwogI2VuZGlmCiAgICAgICAgIEpTRnVuY3Rpb24oRXhl
Y1N0YXRlKiwgTm9uTnVsbFBhc3NSZWZQdHI8RnVuY3Rpb25FeGVjdXRhYmxlPiwgU2NvcGVDaGFp
bk5vZGUqKTsKICAgICAgICAgdmlydHVhbCB+SlNGdW5jdGlvbigpOwogCi0gICAgICAgIGNvbnN0
IFVTdHJpbmcmIG5hbWUoRXhlY1N0YXRlKik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGNv
bnN0IFVTdHJpbmcmIG5hbWUoRXhlY1N0YXRlKik7CiAgICAgICAgIGNvbnN0IFVTdHJpbmcgZGlz
cGxheU5hbWUoRXhlY1N0YXRlKik7CiAgICAgICAgIGNvbnN0IFVTdHJpbmcgY2FsY3VsYXRlZERp
c3BsYXlOYW1lKEV4ZWNTdGF0ZSopOwogCkBAIC05MCw3ICs5MCw3IEBACiAgICAgcHJpdmF0ZToK
ICAgICAgICAgSlNGdW5jdGlvbihOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+KTsKIAotICAg
ICAgICBib29sIGlzSG9zdEZ1bmN0aW9uTm9uSW5saW5lKCkgY29uc3Q7CisgICAgICAgIEpTX0VY
UE9SVF9QUklWQVRFIGJvb2wgaXNIb3N0RnVuY3Rpb25Ob25JbmxpbmUoKSBjb25zdDsKIAogICAg
ICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElk
ZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgdmlydHVhbCBib29sIGdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlE
ZXNjcmlwdG9yJik7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlw
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBl
LmgJKHJldmlzaW9uIDY2MzM5KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90
b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQAogICAgICAgICBib29sIG1f
aGFzTm9Qcm9wZXJ0aWVzV2l0aFVJbnQzMk5hbWVzOwogICAgIH07CiAKLSAgICBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSopOwor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0
UHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCklu
ZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuaAkocmV2aXNpb24gNjYzMzkpCisrKyBKYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ0LDcgKzE0NCw3
IEBACiAgICAgICAgIHN0YXRpYyB2b2lkIG1hcmtMaXN0cyhNYXJrU3RhY2smLCBMaXN0U2V0Jik7
CiAKICAgICBwcml2YXRlOgotICAgICAgICB2b2lkIHNsb3dBcHBlbmQoSlNWYWx1ZSk7CisgICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2xvd0FwcGVuZChKU1ZhbHVlKTsKICAgICAgICAg
CiAgICAgICAgIFJlZ2lzdGVyKiBtX2J1ZmZlcjsKICAgICAgICAgc2l6ZV90IG1fc2l6ZTsKQEAg
LTIzNCw3ICsyMzQsNyBAQAogICAgICAgICBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IHsg
cmV0dXJuIG1fYXJnczsgfQogICAgICAgICBjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdCB7IHJl
dHVybiBtX2FyZ3MgKyBtX2FyZ0NvdW50OyB9CiAKLSAgICAgICAgdm9pZCBnZXRTbGljZShpbnQg
c3RhcnRJbmRleCwgQXJnTGlzdCYgcmVzdWx0KSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgdm9pZCBnZXRTbGljZShpbnQgc3RhcnRJbmRleCwgQXJnTGlzdCYgcmVzdWx0KSBjb25z
dDsKICAgICBwcml2YXRlOgogICAgICAgICBKU1ZhbHVlKiBtX2FyZ3M7CiAgICAgICAgIHNpemVf
dCBtX2FyZ0NvdW50OwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgJKHJldmlzaW9uIDY2
MzM5KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgJKHdvcmtpbmcgY29weSkK
QEAgLTU3LDcgKzU3LDcgQEAKIAogICAgIGVudW0gQXJyYXlDcmVhdGlvbk1vZGUgeyBDcmVhdGVD
b21wYWN0LCBDcmVhdGVJbml0aWFsaXplZCB9OwogCi0gICAgY2xhc3MgSlNBcnJheSA6IHB1Ymxp
YyBKU09iamVjdCB7CisgICAgY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgSlNBcnJheSA6IHB1Ymxp
YyBKU09iamVjdCB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAgICAgIGZyaWVuZCBj
bGFzcyBXYWxrZXI7CiAKQEAgLTc1LDcgKzc1LDcgQEAKICAgICAgICAgdmlydHVhbCBib29sIGdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJv
cGVydHlEZXNjcmlwdG9yJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwdXQoRXhlY1N0YXRlKiwg
dW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlKTsgLy8gRklYTUU6IE1ha2UgcHJvdGVjdGVk
IGFuZCBhZGQgc2V0SXRlbS4KIAotICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSBjb25zdCBD
bGFzc0luZm8gaW5mbzsKKyAgICAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBpbmZvOwogICAg
ICAgICAKICAgICAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9zdG9yYWdl
LT5tX2xlbmd0aDsgfQogICAgICAgICB2b2lkIHNldExlbmd0aCh1bnNpZ25lZCk7IC8vIE9LIHRv
IHVzZSBvbiBuZXcgYXJyYXlzLCBidXQgbm90IGlmIGl0IG1pZ2h0IGJlIGEgUmVnRXhwTWF0Y2hB
cnJheS4KSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCShy
ZXZpc2lvbiA2NjMzOSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlv
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxMCArMzEsMTAgQEAKIAogICAgIGNsYXNzIEZ1bmN0
aW9uUHJvdG90eXBlOwogCi0gICAgY2xhc3MgSW50ZXJuYWxGdW5jdGlvbiA6IHB1YmxpYyBKU09i
amVjdFdpdGhHbG9iYWxPYmplY3QgeworICAgIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEludGVy
bmFsRnVuY3Rpb24gOiBwdWJsaWMgSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0IHsKICAgICBwdWJs
aWM6CiAgICAgICAgIHZpcnR1YWwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8oKSBjb25zdDsg
Ci0gICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNzSW5mbyBpbmZvOworICAg
ICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIGluZm87CiAKICAgICAgICAgY29uc3QgVVN0cmlu
ZyYgbmFtZShFeGVjU3RhdGUqKTsKICAgICAgICAgY29uc3QgVVN0cmluZyBkaXNwbGF5TmFtZShF
eGVjU3RhdGUqKTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCShyZXZpc2lv
biA2NjMzOSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCSh3b3JraW5n
IGNvcHkpCkBAIC01MywxNSArNTMsMTUgQEAKICAgICAgICAgCiAgICAgICAgIENTdHJpbmcgYXNj
aWkoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5hc2NpaSgpOyB9CiAgICAgICAgIAotICAgICAg
ICBzdGF0aWMgSWRlbnRpZmllciBmcm9tKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgeSk7Ci0g
ICAgICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb20oRXhlY1N0YXRlKiBleGVjLCBpbnQgeSk7Ci0g
ICAgICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb20oRXhlY1N0YXRlKiBleGVjLCBkb3VibGUgeSk7
CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBJZGVudGlmaWVyIGZyb20oRXhlY1N0
YXRlKiBleGVjLCB1bnNpZ25lZCB5KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IElkZW50aWZpZXIgZnJvbShFeGVjU3RhdGUqIGV4ZWMsIGludCB5KTsKKyAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIElkZW50aWZpZXIgZnJvbShFeGVjU3RhdGUqIGV4ZWMsIGRvdWJs
ZSB5KTsKICAgICAgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbShKU0dsb2JhbERhdGEqLCB1bnNp
Z25lZCB5KTsKICAgICAgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbShKU0dsb2JhbERhdGEqLCBp
bnQgeSk7CiAgICAgICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb20oSlNHbG9iYWxEYXRhKiwgZG91
YmxlIHkpOwogCi0gICAgICAgIHN0YXRpYyB1aW50MzJfdCB0b1VJbnQzMihjb25zdCBVU3RyaW5n
JiwgYm9vbCYgb2spOwotICAgICAgICB1aW50MzJfdCB0b1VJbnQzMihib29sJiBvaykgY29uc3Qg
eyByZXR1cm4gdG9VSW50MzIobV9zdHJpbmcsIG9rKTsgfQorICAgICAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgdWludDMyX3QgdG9VSW50MzIoY29uc3QgVVN0cmluZyYsIGJvb2wmIG9rKTsK
KyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdWludDMyX3QgdG9VSW50MzIoYm9vbCYgb2spIGNv
bnN0IHsgcmV0dXJuIHRvVUludDMyKG1fc3RyaW5nLCBvayk7IH0KICAgICAgICAgdW5zaWduZWQg
dG9BcnJheUluZGV4KGJvb2wmIG9rKSBjb25zdDsKIAogICAgICAgICBib29sIGlzTnVsbCgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RyaW5nLmlzTnVsbCgpOyB9CkBAIC03MywxMiArNzMsMTIgQEAKICAg
ICAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgY2hh
ciopOwogICAgICAgICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KGNvbnN0IElkZW50aWZpZXImLCBj
b25zdCBjaGFyKik7CiAgICAgCi0gICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFN0cmlu
Z0ltcGwqLCBjb25zdCBjaGFyKik7Ci0gICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFN0
cmluZ0ltcGwqLCBjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgICAgIHN0YXRp
YyBib29sIGVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqIGEsIGNvbnN0IFN0cmluZ0ltcGwqIGIpIHsg
cmV0dXJuIDo6ZXF1YWwoYSwgYik7IH0KKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IGJvb2wgZXF1YWwoY29uc3QgU3RyaW5nSW1wbCosIGNvbnN0IGNoYXIqKTsKKyAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgU3RyaW5nSW1wbCosIGNvbnN0
IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIGJvb2wgZXF1YWwoY29uc3QgU3RyaW5nSW1wbCogYSwgY29uc3QgU3RyaW5nSW1wbCogYikg
eyByZXR1cm4gOjplcXVhbChhLCBiKTsgfQogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0
cmluZ0ltcGw+IGFkZChFeGVjU3RhdGUqLCBjb25zdCBjaGFyKik7IC8vIE9ubHkgdG8gYmUgdXNl
ZCB3aXRoIHN0cmluZyBsaXRlcmFscy4KLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5n
SW1wbD4gYWRkKEpTR2xvYmFsRGF0YSosIGNvbnN0IGNoYXIqKTsgLy8gT25seSB0byBiZSB1c2Vk
IHdpdGggc3RyaW5nIGxpdGVyYWxzLgorICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
UGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGQoRXhlY1N0YXRlKiwgY29uc3QgY2hhciopOyAvLyBP
bmx5IHRvIGJlIHVzZWQgd2l0aCBzdHJpbmcgbGl0ZXJhbHMuCisgICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChKU0dsb2JhbERhdGEqLCBj
b25zdCBjaGFyKik7IC8vIE9ubHkgdG8gYmUgdXNlZCB3aXRoIHN0cmluZyBsaXRlcmFscy4KIAog
ICAgIHByaXZhdGU6CiAgICAgICAgIFVTdHJpbmcgbV9zdHJpbmc7CkBAIC0xMDgsMTAgKzEwOCwx
MCBAQAogICAgICAgICAgICAgcmV0dXJuIGFkZFNsb3dDYXNlKGdsb2JhbERhdGEsIHIpOwogICAg
ICAgICB9CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRkU2xvd0Nh
c2UoRXhlY1N0YXRlKiwgU3RyaW5nSW1wbCogcik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZFNsb3dDYXNlKEV4ZWNTdGF0ZSosIFN0
cmluZ0ltcGwqIHIpOwogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGRT
bG93Q2FzZShKU0dsb2JhbERhdGEqLCBTdHJpbmdJbXBsKiByKTsKIAotICAgICAgICBzdGF0aWMg
dm9pZCBjaGVja0N1cnJlbnRJZGVudGlmaWVyVGFibGUoRXhlY1N0YXRlKik7CisgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGNoZWNrQ3VycmVudElkZW50aWZpZXJUYWJsZShF
eGVjU3RhdGUqKTsKICAgICAgICAgc3RhdGljIHZvaWQgY2hlY2tDdXJyZW50SWRlbnRpZmllclRh
YmxlKEpTR2xvYmFsRGF0YSopOwogICAgIH07CiAgICAgCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cmluZ09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaW5nT2JqZWN0LmgJKHJldmlzaW9uIDY2MzM5KQorKysgSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNDMgKzI2LDQzIEBACiAK
IG5hbWVzcGFjZSBKU0MgewogCi0gICAgY2xhc3MgU3RyaW5nT2JqZWN0IDogcHVibGljIEpTV3Jh
cHBlck9iamVjdCB7Ci0gICAgcHVibGljOgotICAgICAgICBTdHJpbmdPYmplY3QoRXhlY1N0YXRl
KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPik7Ci0gICAgICAgIFN0cmluZ09iamVjdChF
eGVjU3RhdGUqLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBjb25zdCBVU3RyaW5nJik7
CitjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBTdHJpbmdPYmplY3QgOiBwdWJsaWMgSlNXcmFwcGVy
T2JqZWN0IHsKK3B1YmxpYzoKKyAgICBTdHJpbmdPYmplY3QoRXhlY1N0YXRlKiwgTm9uTnVsbFBh
c3NSZWZQdHI8U3RydWN0dXJlPik7CisgICAgU3RyaW5nT2JqZWN0KEV4ZWNTdGF0ZSosIE5vbk51
bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIGNvbnN0IFVTdHJpbmcmKTsKIAotICAgICAgICBzdGF0
aWMgU3RyaW5nT2JqZWN0KiBjcmVhdGUoRXhlY1N0YXRlKiwgSlNTdHJpbmcqKTsKKyAgICBzdGF0
aWMgU3RyaW5nT2JqZWN0KiBjcmVhdGUoRXhlY1N0YXRlKiwgSlNTdHJpbmcqKTsKIAotICAgICAg
ICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAgIHZpcnR1YWwgYm9v
bCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7
CisgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgIHZpcnR1YWwgYm9v
bCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eVNsb3QmKTsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIAot
ICAgICAgICB2aXJ0dWFsIHZvaWQgcHV0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgdmly
dHVhbCBib29sIGRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlIG1vZGUgPSBFeGNs
dWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICB2aXJ0dWFsIHZvaWQgcHV0KEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmKTsKKyAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiwgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0T3duUHJv
cGVydHlOYW1lcyhFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9k
ZSBtb2RlID0gRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CiAKLSAgICAgICAgdmlydHVhbCBj
b25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZpbmZvOyB9Ci0gICAg
ICAgIHN0YXRpYyBjb25zdCBKU19FWFBPUlREQVRBIENsYXNzSW5mbyBpbmZvOworICAgIHZpcnR1
YWwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8oKSBjb25zdCB7IHJldHVybiAmaW5mbzsgfQor
ICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gaW5mbzsKIAotICAgICAgICBKU1N0cmluZyogaW50
ZXJuYWxWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIGFzU3RyaW5nKEpTV3JhcHBlck9iamVjdDo6aW50
ZXJuYWxWYWx1ZSgpKTt9CisgICAgSlNTdHJpbmcqIGludGVybmFsVmFsdWUoKSBjb25zdCB7IHJl
dHVybiBhc1N0cmluZyhKU1dyYXBwZXJPYmplY3Q6OmludGVybmFsVmFsdWUoKSk7fQogCi0gICAg
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTVmFsdWUg
cHJvdG90eXBlKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVh
dGUocHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255
bW91c1Nsb3RDb3VudCk7Ci0gICAgICAgIH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1
cmU+IGNyZWF0ZVN0cnVjdHVyZShKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0
cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50KTsKKyAgICB9CiAKLSAgICBwcm90ZWN0
ZWQ6Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJy
aWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc01hcmtDaGlsZHJlbiB8IE92ZXJyaWRl
c0dldFByb3BlcnR5TmFtZXMgfCBKU1dyYXBwZXJPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwotICAg
ICAgICBTdHJpbmdPYmplY3QoTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgSlNTdHJpbmcq
KTsKLSAgfTsKK3Byb3RlY3RlZDoKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJl
RmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBPdmVycmlkZXNNYXJrQ2hpbGRy
ZW4gfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlNXcmFwcGVyT2JqZWN0OjpTdHJ1Y3R1
cmVGbGFnczsKKyAgICBTdHJpbmdPYmplY3QoTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwg
SlNTdHJpbmcqKTsKK307CiAKLSAgICBTdHJpbmdPYmplY3QqIGFzU3RyaW5nT2JqZWN0KEpTVmFs
dWUpOworU3RyaW5nT2JqZWN0KiBhc1N0cmluZ09iamVjdChKU1ZhbHVlKTsKIAotICAgIGlubGlu
ZSBTdHJpbmdPYmplY3QqIGFzU3RyaW5nT2JqZWN0KEpTVmFsdWUgdmFsdWUpCi0gICAgewotICAg
ICAgICBBU1NFUlQoYXNPYmplY3QodmFsdWUpLT5pbmhlcml0cygmU3RyaW5nT2JqZWN0OjppbmZv
KSk7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxTdHJpbmdPYmplY3QqPihhc09iamVjdCh2
YWx1ZSkpOwotICAgIH0KK2lubGluZSBTdHJpbmdPYmplY3QqIGFzU3RyaW5nT2JqZWN0KEpTVmFs
dWUgdmFsdWUpCit7CisgICAgQVNTRVJUKGFzT2JqZWN0KHZhbHVlKS0+aW5oZXJpdHMoJlN0cmlu
Z09iamVjdDo6aW5mbykpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxTdHJpbmdPYmplY3QqPihh
c09iamVjdCh2YWx1ZSkpOworfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApJbmRleDogSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuaAkocmV2aXNpb24gNjYzMzkpCisrKyBKYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDggKzY2LDgg
QEAKICAgICAgICAgICAgICAgICBzZXRJbmRleChpLCBieXRlVmFsdWUpOwogICAgICAgICB9CiAK
LSAgICAgICAgSlNCeXRlQXJyYXkoRXhlY1N0YXRlKiBleGVjLCBOb25OdWxsUGFzc1JlZlB0cjxT
dHJ1Y3R1cmU+LCBXVEY6OkJ5dGVBcnJheSogc3RvcmFnZSwgY29uc3QgSlNDOjpDbGFzc0luZm8q
ID0gJnNfZGVmYXVsdEluZm8pOwotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+
IGNyZWF0ZVN0cnVjdHVyZShKU1ZhbHVlIHByb3RvdHlwZSk7CisgICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIEpTQnl0ZUFycmF5KEV4ZWNTdGF0ZSogZXhlYywgTm9uTnVsbFBhc3NSZWZQdHI8U3Ry
dWN0dXJlPiwgV1RGOjpCeXRlQXJyYXkqIHN0b3JhZ2UsIGNvbnN0IEpTQzo6Q2xhc3NJbmZvKiA9
ICZzX2RlZmF1bHRJbmZvKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NS
ZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNWYWx1ZSBwcm90b3R5cGUpOwogCiAg
ICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpFeGVjU3RhdGUqLCBj
b25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsK
ICAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkV4ZWNTdGF0ZSos
IHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKSW5kZXg6IEphdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvR0NIYW5kbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dDSGFuZGxlLmgJKHJldmlzaW9uIDY2MzM5KQorKysgSmF2YVNjcmlwdENvcmUv
cnVudGltZS9HQ0hhbmRsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3ICs2Nyw3IEBACiAgICAg
ICAgIEFTU0VSVChpc1B0cigpKTsKICAgICB9CiAKLSAgICBXZWFrR0NIYW5kbGVQb29sKiBwb29s
KCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgV2Vha0dDSGFuZGxlUG9vbCogcG9vbCgpOwogCiBw
cml2YXRlOgogICAgIHVpbnRwdHJfdCBnZXROZXh0SW5GcmVlTGlzdCgpCkBAIC05Niw3ICs5Niw3
IEBACiAgICAgV2Vha0dDSGFuZGxlUG9vbCgpOwogCiAgICAgV2Vha0dDSGFuZGxlKiBhbGxvY2F0
ZShKU0NlbGwqIGNlbGwpOwotICAgIHZvaWQgZnJlZShXZWFrR0NIYW5kbGUqKTsKKyAgICBKU19F
WFBPUlRfUFJJVkFURSB2b2lkIGZyZWUoV2Vha0dDSGFuZGxlKik7CiAKICAgICBib29sIGlzRnVs
bCgpCiAgICAgewpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCShyZXZpc2lvbiA2NjMzOSkK
KysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgJKHdvcmtpbmcgY29weSkKQEAgLTEz
OSw3ICsxMzksNyBAQAogICAgICAgICAgICAgICAgIGNyZWF0ZVRhYmxlKCZleGVjLT5nbG9iYWxE
YXRhKCkpOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBkZWxldGVUYWJsZSgpIGNvbnN0Owor
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGRlbGV0ZVRhYmxlKCkgY29uc3Q7CiAKICAg
ICAgICAgLy8gRmluZCBhbiBlbnRyeSBpbiB0aGUgdGFibGUsIGFuZCByZXR1cm4gdGhlIGVudHJ5
LgogICAgICAgICBBTFdBWVNfSU5MSU5FIGNvbnN0IEhhc2hFbnRyeSogZW50cnkoSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSBjb25zdApAQCAt
MTc0LDEwICsxNzQsMTAgQEAKICAgICAgICAgfQogCiAgICAgICAgIC8vIENvbnZlcnQgdGhlIGhh
c2ggdGFibGUga2V5cyB0byBpZGVudGlmaWVycy4KLSAgICAgICAgdm9pZCBjcmVhdGVUYWJsZShK
U0dsb2JhbERhdGEqKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBjcmVh
dGVUYWJsZShKU0dsb2JhbERhdGEqKSBjb25zdDsKICAgICB9OwogCi0gICAgdm9pZCBzZXRVcFN0
YXRpY0Z1bmN0aW9uU2xvdChFeGVjU3RhdGUqLCBjb25zdCBIYXNoRW50cnkqLCBKU09iamVjdCog
dGhpc09iamVjdCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4
ZWNTdGF0ZSosIGNvbnN0IEhhc2hFbnRyeSosIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogCiAgICAgLyoqCiAgICAg
ICogVGhpcyBtZXRob2QgZG9lcyBpdCBhbGwgKGxvb2tpbmcgaW4gdGhlIGhhc2h0YWJsZSwgY2hl
Y2tpbmcgZm9yIGZ1bmN0aW9uCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRp
b24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uaAko
cmV2aXNpb24gNjYzMzkpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uaAko
d29ya2luZyBjb3B5KQpAQCAtNTUsOCArNTUsOCBAQAogICAgICAgICBKU1ZhbHVlIG1fdmFsdWU7
CiAgICAgfTsKIAotICAgIENvbXBsZXRpb24gY2hlY2tTeW50YXgoRXhlY1N0YXRlKiwgY29uc3Qg
U291cmNlQ29kZSYpOwotICAgIENvbXBsZXRpb24gZXZhbHVhdGUoRXhlY1N0YXRlKiwgU2NvcGVD
aGFpbiYsIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1ZhbHVlIHRoaXNWYWx1ZSA9IEpTVmFsdWUoKSk7
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgQ29tcGxldGlvbiBjaGVja1N5bnRheChFeGVjU3RhdGUq
LCBjb25zdCBTb3VyY2VDb2RlJik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgQ29tcGxldGlvbiBl
dmFsdWF0ZShFeGVjU3RhdGUqLCBTY29wZUNoYWluJiwgY29uc3QgU291cmNlQ29kZSYsIEpTVmFs
dWUgdGhpc1ZhbHVlID0gSlNWYWx1ZSgpKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5kZXg6
IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oCShyZXZpc2lvbiA2NjMz
OSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC00MCw3ICs0MCw3IEBACiAKICAgICBjbGFzcyBSZWdpc3RlcjsKIAotICAgIGNs
YXNzIEpTVmFyaWFibGVPYmplY3QgOiBwdWJsaWMgSlNPYmplY3QgeworICAgIGNsYXNzIEpTX0VY
UE9SVF9QUklWQVRFIEpTVmFyaWFibGVPYmplY3QgOiBwdWJsaWMgSlNPYmplY3QgewogICAgICAg
ICBmcmllbmQgY2xhc3MgSklUOwogCiAgICAgcHVibGljOgpJbmRleDogSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2VsbC5oCShyZXZpc2lvbiA2NjMzOSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxs
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDggKzQ4LDggQEAKICAgICAgICAgZnJpZW5kIGNsYXNz
IEpTR2xvYmFsRGF0YTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIGV4cGxpY2l0IEpTQ2VsbChT
dHJ1Y3R1cmUqKTsKLSAgICAgICAgdmlydHVhbCB+SlNDZWxsKCk7CisgICAgICAgIEpTX0VYUE9S
VF9QUklWQVRFIGV4cGxpY2l0IEpTQ2VsbChTdHJ1Y3R1cmUqKTsKKyAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgdmlydHVhbCB+SlNDZWxsKCk7CiAKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlRHVtbXlTdHJ1Y3R1cmUoKQpAQCAtNjEsMzkg
KzYxLDM5IEBACiAjaWYgVVNFKEpTVkFMVUUzMikKICAgICAgICAgYm9vbCBpc051bWJlcigpIGNv
bnN0OwogI2VuZGlmCi0gICAgICAgIGJvb2wgaXNTdHJpbmcoKSBjb25zdDsKLSAgICAgICAgYm9v
bCBpc09iamVjdCgpIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNHZXR0ZXJTZXR0ZXIo
KSBjb25zdDsKLSAgICAgICAgYm9vbCBpbmhlcml0cyhjb25zdCBDbGFzc0luZm8qKSBjb25zdDsK
KyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc1N0cmluZygpIGNvbnN0OworICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSBib29sIGlzT2JqZWN0KCkgY29uc3Q7CisgICAgICAgIEpTX0VY
UE9SVF9QUklWQVRFIHZpcnR1YWwgYm9vbCBpc0dldHRlclNldHRlcigpIGNvbnN0OworICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSBib29sIGluaGVyaXRzKGNvbnN0IENsYXNzSW5mbyopIGNvbnN0
OwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNBUElWYWx1ZVdyYXBwZXIoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNQcm9wZXJ0eU5hbWVJdGVyYXRvcigp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUo
KSBjb25zdDsKIAogICAgICAgICAvLyBFeHRyYWN0aW5nIHRoZSB2YWx1ZS4KLSAgICAgICAgYm9v
bCBnZXRTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBVU3RyaW5nJikgY29uc3Q7Ci0gICAgICAgIFVT
dHJpbmcgZ2V0U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykgY29uc3Q7IC8vIG51bGwgc3RyaW5nIGlm
IG5vdCBhIHN0cmluZwotICAgICAgICBKU09iamVjdCogZ2V0T2JqZWN0KCk7IC8vIE5VTEwgaWYg
bm90IGFuIG9iamVjdAotICAgICAgICBjb25zdCBKU09iamVjdCogZ2V0T2JqZWN0KCkgY29uc3Q7
IC8vIE5VTEwgaWYgbm90IGFuIG9iamVjdAorICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29s
IGdldFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIFVTdHJpbmcmKSBjb25zdDsKKyAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgVVN0cmluZyBnZXRTdHJpbmcoRXhlY1N0YXRlKiBleGVjKSBjb25zdDsg
Ly8gbnVsbCBzdHJpbmcgaWYgbm90IGEgc3RyaW5nCisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IEpTT2JqZWN0KiBnZXRPYmplY3QoKTsgLy8gbnVsbCBpZiBub3QgYW4gb2JqZWN0CisgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIGNvbnN0IEpTT2JqZWN0KiBnZXRPYmplY3QoKSBjb25zdDsgLy8g
bnVsbCBpZiBub3QgYW4gb2JqZWN0CiAgICAgICAgIAotICAgICAgICB2aXJ0dWFsIENhbGxUeXBl
IGdldENhbGxEYXRhKENhbGxEYXRhJik7Ci0gICAgICAgIHZpcnR1YWwgQ29uc3RydWN0VHlwZSBn
ZXRDb25zdHJ1Y3REYXRhKENvbnN0cnVjdERhdGEmKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgdmlydHVhbCBDYWxsVHlwZSBnZXRDYWxsRGF0YShDYWxsRGF0YSYpOworICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSB2aXJ0dWFsIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShDb25z
dHJ1Y3REYXRhJik7CiAKICAgICAgICAgLy8gRXh0cmFjdGluZyBpbnRlZ2VyIHZhbHVlcy4KICAg
ICAgICAgLy8gRklYTUU6IHJlbW92ZSB0aGVzZSBtZXRob2RzLCBjYW4gY2hlY2sgaXNOdW1iZXJD
ZWxsIGluIEpTVmFsdWUgJiYgdGhlbiBjYWxsIGFzTnVtYmVyQ2VsbDo6Ki4KLSAgICAgICAgdmly
dHVhbCBib29sIGdldFVJbnQzMih1aW50MzJfdCYpIGNvbnN0OworICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSB2aXJ0dWFsIGJvb2wgZ2V0VUludDMyKHVpbnQzMl90JikgY29uc3Q7CiAKICAgICAg
ICAgLy8gQmFzaWMgY29udmVyc2lvbnMuCi0gICAgICAgIHZpcnR1YWwgSlNWYWx1ZSB0b1ByaW1p
dGl2ZShFeGVjU3RhdGUqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKSBjb25zdDsKLSAgICAgICAg
dmlydHVhbCBib29sIGdldFByaW1pdGl2ZU51bWJlcihFeGVjU3RhdGUqLCBkb3VibGUmIG51bWJl
ciwgSlNWYWx1ZSYpOwotICAgICAgICB2aXJ0dWFsIGJvb2wgdG9Cb29sZWFuKEV4ZWNTdGF0ZSop
IGNvbnN0OwotICAgICAgICB2aXJ0dWFsIGRvdWJsZSB0b051bWJlcihFeGVjU3RhdGUqKSBjb25z
dDsKLSAgICAgICAgdmlydHVhbCBVU3RyaW5nIHRvU3RyaW5nKEV4ZWNTdGF0ZSopIGNvbnN0Owot
ICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiB0b09iamVjdChFeGVjU3RhdGUqKSBjb25zdDsKKyAg
ICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCBKU1ZhbHVlIHRvUHJpbWl0aXZlKEV4ZWNT
dGF0ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpIGNvbnN0OworICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSB2aXJ0dWFsIGJvb2wgZ2V0UHJpbWl0aXZlTnVtYmVyKEV4ZWNTdGF0ZSosIGRvdWJs
ZSYgbnVtYmVyLCBKU1ZhbHVlJik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwg
Ym9vbCB0b0Jvb2xlYW4oRXhlY1N0YXRlKikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZpcnR1YWwgZG91YmxlIHRvTnVtYmVyKEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIFVTdHJpbmcgdG9TdHJpbmcoRXhlY1N0YXRlKikgY29u
c3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgSlNPYmplY3QqIHRvT2JqZWN0
KEV4ZWNTdGF0ZSopIGNvbnN0OwogCiAgICAgICAgIC8vIEdhcmJhZ2UgY29sbGVjdGlvbi4KLSAg
ICAgICAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgRXhlY1N0YXRlKik7Ci0gICAgICAgIHZv
aWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIEpTR2xvYmFsRGF0YSopOworICAgICAgICBKU19FWFBP
UlRfUFJJVkFURSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBFeGVjU3RhdGUqKTsKKyAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgSlNHbG9iYWxE
YXRhKik7CiAgICAgICAgIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQqIHBsYWNlbWVu
dE5ld0Rlc3RpbmF0aW9uKSB7IHJldHVybiBwbGFjZW1lbnROZXdEZXN0aW5hdGlvbjsgfQogCiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBtYXJrQ2hpbGRyZW4oTWFya1N0YWNrJik7CkBAIC0xMDIsMTYg
KzEwMiwxNiBAQAogI2VuZGlmCiAKICAgICAgICAgLy8gT2JqZWN0IG9wZXJhdGlvbnMsIHdpdGgg
dGhlIHRvT2JqZWN0IG9wZXJhdGlvbiBpbmNsdWRlZC4KLSAgICAgICAgdmlydHVhbCBjb25zdCBD
bGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIHZvaWQgcHV0KEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJv
cGVydHlTbG90Jik7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwdXQoRXhlY1N0YXRlKiwgdW5zaWdu
ZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlKTsKLSAgICAgICAgdmlydHVhbCBib29sIGRlbGV0ZVBy
b3BlcnR5KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7Ci0gICAg
ICAgIHZpcnR1YWwgYm9vbCBkZWxldGVQcm9wZXJ0eShFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9w
ZXJ0eU5hbWUpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIGNvbnN0IENsYXNz
SW5mbyogY2xhc3NJbmZvKCkgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1
YWwgdm9pZCBwdXQoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmly
dHVhbCB2b2lkIHB1dChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUp
OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIGJvb2wgZGVsZXRlUHJvcGVydHko
RXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgdmlydHVhbCBib29sIGRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIHVu
c2lnbmVkIHByb3BlcnR5TmFtZSk7CiAKLSAgICAgICAgdmlydHVhbCBKU09iamVjdCogdG9UaGlz
T2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIEpTVmFsdWUgZ2V0SlNO
dW1iZXIoKTsKLSAgICAgICAgdm9pZCogdnB0cigpIHsgcmV0dXJuICpyZWludGVycHJldF9jYXN0
PHZvaWQqKj4odGhpcyk7IH0KLSAgICAgICAgdm9pZCBzZXRWUHRyKHZvaWQqIHZwdHIpIHsgKnJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPih0aGlzKSA9IHZwdHI7IH0KKyAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgdmlydHVhbCBKU09iamVjdCogdG9UaGlzT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0
OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIEpTVmFsdWUgZ2V0SlNOdW1iZXIo
KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCogdnB0cigpIHsgcmV0dXJuICpyZWlu
dGVycHJldF9jYXN0PHZvaWQqKj4odGhpcyk7IH0KKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCBzZXRWUHRyKHZvaWQqIHZwdHIpIHsgKnJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPih0aGlz
KSA9IHZwdHI7IH0KIAogICAgICAgICAvLyBGSVhNRTogUmVuYW1lIGdldE93blByb3BlcnR5U2xv
dCB0byB2aXJ0dWFsR2V0T3duUHJvcGVydHlTbG90LCBhbmQKICAgICAgICAgLy8gZmFzdEdldE93
blByb3BlcnR5U2xvdCB0byBnZXRPd25Qcm9wZXJ0eVNsb3QuIENhbGxlcnMgc2hvdWxkIGFsd2F5
cwpAQCAtMTI0LDggKzEyNCw4IEBACiAKICAgICBwcml2YXRlOgogICAgICAgICAvLyBCYXNlIGlt
cGxlbWVudGF0aW9uOyBmb3Igbm9uLW9iamVjdCBjbGFzc2VzIGltcGxlbWVudHMgZ2V0UHJvcGVy
dHlTbG90LgotICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0
ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAg
ICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgdW5zaWduZWQg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
dmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgICAgICBKU19FWFBPUlRfUFJJ
VkFURSB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIHVuc2lnbmVk
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIAogICAgICAgICBTdHJ1Y3R1
cmUqIG1fc3RydWN0dXJlOwogICAgIH07CkBAIC0xNTEsNyArMTUxLDcgQEAKICAgICAgICAgcmV0
dXJuIG1fc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBPYmplY3RUeXBlOwogICAgIH0K
IAotICAgIGlubGluZSBib29sIEpTQ2VsbDo6aXNTdHJpbmcoKSBjb25zdAorICAgIEpTX0VYUE9S
VF9QUklWQVRFIGlubGluZSBib29sIEpTQ2VsbDo6aXNTdHJpbmcoKSBjb25zdAogICAgIHsKICAg
ICAgICAgcmV0dXJuIG1fc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBTdHJpbmdUeXBl
OwogICAgIH0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaAkocmV2aXNpb24gNjYzMzkpCisr
KyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC03OSw4
ICs3OSw4IEBACiAgICAgICAgICAgICB1bmxvY2sobV9sb2NrQmVoYXZpb3IpOyAKICAgICAgICAg
fQogICAgICAgICAKLSAgICAgICAgc3RhdGljIHZvaWQgbG9jayhKU0xvY2tCZWhhdmlvcik7Ci0g
ICAgICAgIHN0YXRpYyB2b2lkIHVubG9jayhKU0xvY2tCZWhhdmlvcik7CisgICAgICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGxvY2soSlNMb2NrQmVoYXZpb3IpOworICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCB1bmxvY2soSlNMb2NrQmVoYXZpb3IpOwogICAg
ICAgICBzdGF0aWMgdm9pZCBsb2NrKEV4ZWNTdGF0ZSopOwogICAgICAgICBzdGF0aWMgdm9pZCB1
bmxvY2soRXhlY1N0YXRlKik7CiAKQEAgLTg5LDcgKzg5LDcgQEAKIAogICAgICAgICBKU0xvY2tC
ZWhhdmlvciBtX2xvY2tCZWhhdmlvcjsKIAotICAgICAgICBjbGFzcyBEcm9wQWxsTG9ja3MgOiBw
dWJsaWMgTm9uY29weWFibGUgeworICAgICAgICBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBEcm9w
QWxsTG9ja3MgOiBwdWJsaWMgTm9uY29weWFibGUgewogICAgICAgICBwdWJsaWM6CiAgICAgICAg
ICAgICBEcm9wQWxsTG9ja3MoRXhlY1N0YXRlKiBleGVjKTsKICAgICAgICAgICAgIERyb3BBbGxM
b2NrcyhKU0xvY2tCZWhhdmlvcik7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3Bl
cnR5U2xvdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlT
bG90LmgJKHJldmlzaW9uIDY2MzM5KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0
eVNsb3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjQzLDcgKzI0Myw3IEBACiAgICAgICAgICAgICBy
ZXR1cm4gbV9nZXRWYWx1ZTsKICAgICAgICAgfQogICAgIHByaXZhdGU6Ci0gICAgICAgIEpTVmFs
dWUgZnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIEpTVmFsdWUgZnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKikgY29uc3Q7CiAKICAgICAg
ICAgR2V0VmFsdWVGdW5jIG1fZ2V0VmFsdWU7CiAgICAgICAgIEdldEluZGV4VmFsdWVGdW5jIG1f
Z2V0SW5kZXhWYWx1ZTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25z
dHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25D
b25zdHJ1Y3Rvci5oCShyZXZpc2lvbiA2NjMzOSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RnVuY3Rpb25Db25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBACiAg
ICAgICAgIHZpcnR1YWwgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoQ2FsbERhdGEmKTsKICAgICB9Owog
Ci0gICAgSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSosIGNvbnN0IEFyZ0xp
c3QmLCBjb25zdCBJZGVudGlmaWVyJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFVTdHJpbmcmIHNvdXJj
ZVVSTCwgaW50IGxpbmVOdW1iZXIpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBj
b25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqLCBjb25zdCBBcmdMaXN0JiwgY29uc3QgSWRlbnRp
ZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBVU3RyaW5nJiBzb3VyY2VVUkwsIGludCBsaW5lTnVt
YmVyKTsKICAgICBKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiwgY29uc3Qg
QXJnTGlzdCYpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU21hbGxTdHJpbmdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TbWFsbFN0cmluZ3MuaAkocmV2aXNpb24gNjYzMzkpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1NtYWxsU3RyaW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC02NSw4ICs2NSw4IEBACiAgICAg
ICAgIEpTU3RyaW5nKiogc2luZ2xlQ2hhcmFjdGVyU3RyaW5ncygpIHsgcmV0dXJuIG1fc2luZ2xl
Q2hhcmFjdGVyU3RyaW5ncy5kYXRhKCk7IH0KICNlbmRpZgogICAgIHByaXZhdGU6Ci0gICAgICAg
IHZvaWQgY3JlYXRlRW1wdHlTdHJpbmcoSlNHbG9iYWxEYXRhKik7Ci0gICAgICAgIHZvaWQgY3Jl
YXRlU2luZ2xlQ2hhcmFjdGVyU3RyaW5nKEpTR2xvYmFsRGF0YSosIHVuc2lnbmVkIGNoYXIpOwor
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGNyZWF0ZUVtcHR5U3RyaW5nKEpTR2xvYmFs
RGF0YSopOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGNyZWF0ZVNpbmdsZUNoYXJh
Y3RlclN0cmluZyhKU0dsb2JhbERhdGEqLCB1bnNpZ25lZCBjaGFyKTsKIAogICAgICAgICBKU1N0
cmluZyogbV9lbXB0eVN0cmluZzsKICAgICAgICAgRml4ZWRBcnJheTxKU1N0cmluZyosIDB4MTAw
PiBtX3NpbmdsZUNoYXJhY3RlclN0cmluZ3M7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb3BlcnR5TmFtZUFycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm9wZXJ0eU5hbWVBcnJheS5oCShyZXZpc2lvbiA2NjMzOSkKKysrIEphdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtNjgsOCArNjgs
OCBAQAogCiAgICAgICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSgpIHsgcmV0dXJuIG1fZ2xv
YmFsRGF0YTsgfQogCi0gICAgICAgIHZvaWQgYWRkKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZp
ZXIpIHsgYWRkKGlkZW50aWZpZXIuaW1wbCgpKTsgfQotICAgICAgICB2b2lkIGFkZChTdHJpbmdJ
bXBsKik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgYWRkKGNvbnN0IElkZW50aWZp
ZXImIGlkZW50aWZpZXIpIHsgYWRkKGlkZW50aWZpZXIuaW1wbCgpKTsgfQorICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSB2b2lkIGFkZChTdHJpbmdJbXBsKik7CiAgICAgICAgIHZvaWQgYWRkS25v
d25VbmlxdWUoU3RyaW5nSW1wbCogaWRlbnRpZmllcikgeyBtX2RhdGEtPnByb3BlcnR5TmFtZVZl
Y3RvcigpLmFwcGVuZChJZGVudGlmaWVyKG1fZ2xvYmFsRGF0YSwgaWRlbnRpZmllcikpOyB9CiAK
ICAgICAgICAgSWRlbnRpZmllciYgb3BlcmF0b3JbXSh1bnNpZ25lZCBpKSB7IHJldHVybiBtX2Rh
dGEtPnByb3BlcnR5TmFtZVZlY3RvcigpW2ldOyB9CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Vycm9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5o
CShyZXZpc2lvbiA2NjMzOSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaAkod29y
a2luZyBjb3B5KQpAQCAtNDUsMTIgKzQ1LDEyIEBACiAgICAgSlNPYmplY3QqIGNyZWF0ZVR5cGVF
cnJvcihKU0dsb2JhbE9iamVjdCosIGNvbnN0IFVTdHJpbmcmKTsKICAgICBKU09iamVjdCogY3Jl
YXRlVVJJRXJyb3IoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBVU3RyaW5nJik7CiAgICAgLy8gRXhl
Y1N0YXRlIHdyYXBwZXJzLgotICAgIEpTT2JqZWN0KiBjcmVhdGVFcnJvcihFeGVjU3RhdGUqLCBj
b25zdCBVU3RyaW5nJik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIGNyZWF0ZUVy
cm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmKTsKICAgICBKU09iamVjdCogY3JlYXRlRXZh
bEVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmKTsKLSAgICBKU09iamVjdCogY3JlYXRl
UmFuZ2VFcnJvcihFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJik7Ci0gICAgSlNPYmplY3QqIGNy
ZWF0ZVJlZmVyZW5jZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmKTsKLSAgICBKU09i
amVjdCogY3JlYXRlU3ludGF4RXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYpOwotICAg
IEpTT2JqZWN0KiBjcmVhdGVUeXBlRXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYpOwor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBjcmVhdGVSYW5nZUVycm9yKEV4ZWNTdGF0
ZSosIGNvbnN0IFVTdHJpbmcmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogY3Jl
YXRlUmVmZXJlbmNlRXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYpOworICAgIEpTX0VY
UE9SVF9QUklWQVRFIEpTT2JqZWN0KiBjcmVhdGVTeW50YXhFcnJvcihFeGVjU3RhdGUqLCBjb25z
dCBVU3RyaW5nJik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIGNyZWF0ZVR5cGVF
cnJvcihFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJik7CiAgICAgSlNPYmplY3QqIGNyZWF0ZVVS
SUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmKTsKIAogICAgIC8vIE1ldGhvZHMgdG8g
YWRkIApAQCAtNjIsMTIgKzYyLDEyIEBACiAgICAgSlNPYmplY3QqIGFkZEVycm9ySW5mbyhFeGVj
U3RhdGUqLCBKU09iamVjdCogZXJyb3IsIGludCBsaW5lLCBjb25zdCBTb3VyY2VDb2RlJiwgaW50
IGRpdm90UG9pbnQsIGludCBzdGFydE9mZnNldCwgaW50IGVuZE9mZnNldCwgYm9vbCB3aXRoQ2Fy
ZXQgPSB0cnVlKTsKIAogICAgIC8vIE1ldGhvZHMgdG8gdGhyb3cgRXJyb3JzLgotICAgIEpTVmFs
dWUgdGhyb3dFcnJvcihFeGVjU3RhdGUqLCBKU1ZhbHVlKTsKLSAgICBKU09iamVjdCogdGhyb3dF
cnJvcihFeGVjU3RhdGUqLCBKU09iamVjdCopOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFs
dWUgdGhyb3dFcnJvcihFeGVjU3RhdGUqLCBKU1ZhbHVlKTsKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSBKU09iamVjdCogdGhyb3dFcnJvcihFeGVjU3RhdGUqLCBKU09iamVjdCopOwogCiAgICAgLy8g
Q29udmVuaWVuY2Ugd3JhcHBlcnMsIGNyZWF0ZSBhbiB0aHJvdyBhbiBleGNlcHRpb24gd2l0aCBh
IGRlZmF1bHQgbWVzc2FnZS4KLSAgICBKU09iamVjdCogdGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRl
Kik7Ci0gICAgSlNPYmplY3QqIHRocm93U3ludGF4RXJyb3IoRXhlY1N0YXRlKik7CisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSopOworICAg
IEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd1N5bnRheEVycm9yKEV4ZWNTdGF0ZSop
OwogCiAgICAgLy8gQ29udmVuaWVuY2Ugd3JhcHBlcnMsIHdyYXAgcmVzdWx0IGFzIGFuIEVuY29k
ZWRKU1ZhbHVlLgogICAgIGlubGluZSBFbmNvZGVkSlNWYWx1ZSB0aHJvd1ZNRXJyb3IoRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlIGVycm9yKSB7IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dF
cnJvcihleGVjLCBlcnJvcikpOyB9CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJp
bmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuaAkocmV2
aXNpb24gNjYzMzkpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzAsMjQgKzMwLDI0IEBACiBjbGFzcyBVU3RyaW5nIHsKIHB1YmxpYzoKICAg
ICAvLyBDb25zdHJ1Y3QgYSBudWxsIHN0cmluZywgZGlzdGluZ3Vpc2hhYmxlIGZyb20gYW4gZW1w
dHkgc3RyaW5nLgotICAgIFVTdHJpbmcoKSB7IH0KKyAgICBKU19FWFBPUlRfUFJJVkFURSBVU3Ry
aW5nKCkgeyB9CiAKICAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBVVEYtMTYgZGF0YS4K
LSAgICBVU3RyaW5nKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpOwor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIFVTdHJpbmcoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVu
c2lnbmVkIGxlbmd0aCk7CiAKICAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBVVEYtMTYg
ZGF0YSwgZnJvbSBhIG51bGwtdGVybWluYXRlZCBzb3VyY2UuCi0gICAgVVN0cmluZyhjb25zdCBV
Q2hhciopOworICAgIEpTX0VYUE9SVF9QUklWQVRFIFVTdHJpbmcoY29uc3QgVUNoYXIqKTsKIAog
ICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyB3aXRoIGxhdGluMSBkYXRhLgotICAgIFVTdHJpbmco
Y29uc3QgY2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBKU19FWFBPUlRf
UFJJVkFURSBVU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCk7
CiAKICAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBsYXRpbjEgZGF0YSwgZnJvbSBhIG51
bGwtdGVybWluYXRlZCBzb3VyY2UuCi0gICAgVVN0cmluZyhjb25zdCBjaGFyKiBjaGFyYWN0ZXJz
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBVU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMp
OwogCiAgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHJlZmVyZW5jaW5nIGFuIGV4aXN0aW5nIFN0
cmluZ0ltcGwuCi0gICAgVVN0cmluZyhTdHJpbmdJbXBsKiBpbXBsKSA6IG1faW1wbChpbXBsKSB7
IH0KLSAgICBVU3RyaW5nKFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gaW1wbCkgOiBtX2ltcGwoaW1w
bCkgeyB9Ci0gICAgVVN0cmluZyhSZWZQdHI8U3RyaW5nSW1wbD4gaW1wbCkgOiBtX2ltcGwoaW1w
bCkgeyB9CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgVVN0cmluZyhTdHJpbmdJbXBsKiBpbXBsKSA6
IG1faW1wbChpbXBsKSB7IH0KKyAgICBKU19FWFBPUlRfUFJJVkFURSBVU3RyaW5nKFBhc3NSZWZQ
dHI8U3RyaW5nSW1wbD4gaW1wbCkgOiBtX2ltcGwoaW1wbCkgeyB9CisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgVVN0cmluZyhSZWZQdHI8U3RyaW5nSW1wbD4gaW1wbCkgOiBtX2ltcGwoaW1wbCkgeyB9
CiAKICAgICAvLyBJbmxpbmUgdGhlIGRlc3RydWN0b3IuCiAgICAgQUxXQVlTX0lOTElORSB+VVN0
cmluZygpIHsgfQpAQCAtNzYsOSArNzYsOSBAQAogICAgICAgICByZXR1cm4gbV9pbXBsLT5jaGFy
YWN0ZXJzKCk7CiAgICAgfQogCi0gICAgQ1N0cmluZyBhc2NpaSgpIGNvbnN0OwotICAgIENTdHJp
bmcgbGF0aW4xKCkgY29uc3Q7Ci0gICAgQ1N0cmluZyB1dGY4KGJvb2wgc3RyaWN0ID0gZmFsc2Up
IGNvbnN0OworICAgIEpTX0VYUE9SVF9QUklWQVRFIENTdHJpbmcgYXNjaWkoKSBjb25zdDsKKyAg
ICBKU19FWFBPUlRfUFJJVkFURSBDU3RyaW5nIGxhdGluMSgpIGNvbnN0OworICAgIEpTX0VYUE9S
VF9QUklWQVRFIENTdHJpbmcgdXRmOChib29sIHN0cmljdCA9IGZhbHNlKSBjb25zdDsKIAogICAg
IFVDaGFyIG9wZXJhdG9yW10odW5zaWduZWQgaW5kZXgpIGNvbnN0CiAgICAgewpAQCAtODcsMTEg
Kzg3LDExIEBACiAgICAgICAgIHJldHVybiBtX2ltcGwtPmNoYXJhY3RlcnMoKVtpbmRleF07CiAg
ICAgfQogCi0gICAgc3RhdGljIFVTdHJpbmcgbnVtYmVyKGludCk7Ci0gICAgc3RhdGljIFVTdHJp
bmcgbnVtYmVyKHVuc2lnbmVkKTsKLSAgICBzdGF0aWMgVVN0cmluZyBudW1iZXIobG9uZyk7Ci0g
ICAgc3RhdGljIFVTdHJpbmcgbnVtYmVyKGxvbmcgbG9uZyk7Ci0gICAgc3RhdGljIFVTdHJpbmcg
bnVtYmVyKGRvdWJsZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFVTdHJpbmcgbnVt
YmVyKGludCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFVTdHJpbmcgbnVtYmVyKHVu
c2lnbmVkKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgVVN0cmluZyBudW1iZXIobG9u
Zyk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFVTdHJpbmcgbnVtYmVyKGxvbmcgbG9u
Zyk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFVTdHJpbmcgbnVtYmVyKGRvdWJsZSk7
CiAKICAgICAvLyBGaW5kIGEgc2luZ2xlIGNoYXJhY3RlciBvciBzdHJpbmcsIGFsc28gd2l0aCBt
YXRjaCBmdW5jdGlvbiAmIGxhdGluMSBmb3Jtcy4KICAgICBzaXplX3QgZmluZChVQ2hhciBjLCB1
bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0CkBAIC0xMDcsNyArMTA3LDcgQEAKICAgICBzaXplX3Qg
cmV2ZXJzZUZpbmQoY29uc3QgVVN0cmluZyYgc3RyLCB1bnNpZ25lZCBzdGFydCA9IFVJTlRfTUFY
KSBjb25zdAogICAgICAgICB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPnJldmVyc2VGaW5kKHN0
ci5pbXBsKCksIHN0YXJ0KSA6IG5vdEZvdW5kOyB9CiAKLSAgICBVU3RyaW5nIHN1YnN0cmluZ1No
YXJpbmdJbXBsKHVuc2lnbmVkIHBvcywgdW5zaWduZWQgbGVuID0gVUlOVF9NQVgpIGNvbnN0Owor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIFVTdHJpbmcgc3Vic3RyaW5nU2hhcmluZ0ltcGwodW5zaWdu
ZWQgcG9zLCB1bnNpZ25lZCBsZW4gPSBVSU5UX01BWCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAg
UmVmUHRyPFN0cmluZ0ltcGw+IG1faW1wbDsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RGF0ZUluc3RhbmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRl
SW5zdGFuY2UuaAkocmV2aXNpb24gNjYzMzkpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rh
dGVJbnN0YW5jZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw4ICszMSw4IEBACiAKICAgICBjbGFz
cyBEYXRlSW5zdGFuY2UgOiBwdWJsaWMgSlNXcmFwcGVyT2JqZWN0IHsKICAgICBwdWJsaWM6Ci0g
ICAgICAgIERhdGVJbnN0YW5jZShFeGVjU3RhdGUqLCBkb3VibGUpOwotICAgICAgICBEYXRlSW5z
dGFuY2UoRXhlY1N0YXRlKiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgZG91YmxlKTsK
KyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgRGF0ZUluc3RhbmNlKEV4ZWNTdGF0ZSosIGRvdWJs
ZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIERhdGVJbnN0YW5jZShFeGVjU3RhdGUqLCBO
b25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBkb3VibGUpOwogICAgICAgICBleHBsaWNpdCBE
YXRlSW5zdGFuY2UoRXhlY1N0YXRlKiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPik7CiAK
ICAgICAgICAgZG91YmxlIGludGVybmFsTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gaW50ZXJuYWxW
YWx1ZSgpLnVuY2hlY2tlZEdldE51bWJlcigpOyB9CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxEYXRhLmgJKHJldmlzaW9uIDY2MzM5KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbERhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMTA1LDcgKzEwNSw3IEBACiAgICAg
ICAgIC8vIHRoZSBvcmlnaW5hbCBBUEkuCiAgICAgICAgIGVudW0gR2xvYmFsRGF0YVR5cGUgeyBE
ZWZhdWx0LCBBUElDb250ZXh0R3JvdXAsIEFQSVNoYXJlZCB9OwogCi0gICAgICAgIHN0cnVjdCBD
bGllbnREYXRhIHsKKyAgICAgICAgc3RydWN0IEpTX0VYUE9SVF9QUklWQVRFIENsaWVudERhdGEg
ewogICAgICAgICAgICAgdmlydHVhbCB+Q2xpZW50RGF0YSgpID0gMDsKICAgICAgICAgfTsKIApA
QCAtMTEzLDEwICsxMTMsMTAgQEAKICAgICAgICAgc3RhdGljIGJvb2wgc2hhcmVkSW5zdGFuY2VF
eGlzdHMoKTsKICAgICAgICAgc3RhdGljIEpTR2xvYmFsRGF0YSYgc2hhcmVkSW5zdGFuY2UoKTsK
IAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxKU0dsb2JhbERhdGE+IGNyZWF0ZShUaHJlYWRT
dGFja1R5cGUpOwotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxKU0dsb2JhbERhdGE+IGNyZWF0
ZUxlYWtlZChUaHJlYWRTdGFja1R5cGUpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgUGFzc1JlZlB0cjxKU0dsb2JhbERhdGE+IGNyZWF0ZShUaHJlYWRTdGFja1R5cGUpOworICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxKU0dsb2JhbERhdGE+IGNy
ZWF0ZUxlYWtlZChUaHJlYWRTdGFja1R5cGUpOwogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxK
U0dsb2JhbERhdGE+IGNyZWF0ZUNvbnRleHRHcm91cChUaHJlYWRTdGFja1R5cGUpOwotICAgICAg
ICB+SlNHbG9iYWxEYXRhKCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIH5KU0dsb2JhbERh
dGEoKTsKIAogI2lmIEVOQUJMRShKU0NfTVVMVElQTEVfVEhSRUFEUykKICAgICAgICAgLy8gV2ls
bCBzdGFydCB0cmFja2luZyB0aHJlYWRzIHRoYXQgdXNlIHRoZSBoZWFwLCB3aGljaCBpcyByZXNv
dXJjZS1oZWF2eS4KQEAgLTIyOSwxMSArMjI5LDExIEBACiAgICAgICAgIENhY2hlZFRyYW5zY2Vu
ZGVudGFsRnVuY3Rpb248c2luPiBjYWNoZWRTaW47CiAgICAgICAgIFdURjo6VGhyZWFkU3BlY2lm
aWM8Y2hhcio+IHN0YWNrR3VhcmRzOwogCi0gICAgICAgIHZvaWQgcmVzZXREYXRlQ2FjaGUoKTsK
KyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCByZXNldERhdGVDYWNoZSgpOwogCi0gICAg
ICAgIHZvaWQgc3RhcnRTYW1wbGluZygpOwotICAgICAgICB2b2lkIHN0b3BTYW1wbGluZygpOwot
ICAgICAgICB2b2lkIGR1bXBTYW1wbGVEYXRhKEV4ZWNTdGF0ZSogZXhlYyk7CisgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIHZvaWQgc3RhcnRTYW1wbGluZygpOworICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSB2b2lkIHN0b3BTYW1wbGluZygpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2
b2lkIGR1bXBTYW1wbGVEYXRhKEV4ZWNTdGF0ZSogZXhlYyk7CiAgICAgICAgIFJlZ0V4cENhY2hl
KiByZWdFeHBDYWNoZSgpIHsgcmV0dXJuIG1fcmVnRXhwQ2FjaGU7IH0KICAgICBwcml2YXRlOgog
ICAgICAgICBKU0dsb2JhbERhdGEoR2xvYmFsRGF0YVR5cGUsIFRocmVhZFN0YWNrVHlwZSk7Cklu
ZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JvcGVJbXBsLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Sb3BlSW1wbC5oCShyZXZpc2lvbiA2NjMzOSkKKysrIEphdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUm9wZUltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtODMsNyArODMs
NyBAQAogICAgIHsKICAgICB9CiAKLSAgICB2b2lkIGRlc3RydWN0Tm9uUmVjdXJzaXZlKCk7Cisg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkZXN0cnVjdE5vblJlY3Vyc2l2ZSgpOwogICAgIHZv
aWQgZGVyZWZGaWJlcnNOb25SZWN1cnNpdmUoVmVjdG9yPFJvcGVJbXBsKiwgMzI+JiB3b3JrUXVl
dWUpOwogCiAgICAgYm9vbCBoYXNPbmVSZWYoKSB7IHJldHVybiAobV9yZWZDb3VudEFuZEZsYWdz
ICYgc19yZWZDb3VudE1hc2spID09IHNfcmVmQ291bnRJbmNyZW1lbnQ7IH0KSW5kZXg6IEphdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVGltZW91dENoZWNrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1RpbWVvdXRDaGVja2VyLmgJKHJldmlzaW9uIDY2MzM5KQorKysgSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UaW1lb3V0Q2hlY2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01
Nyw5ICs1Nyw5IEBACiAgICAgICAgICAgICAtLW1fc3RhcnRDb3VudDsKICAgICAgICAgfQogCi0g
ICAgICAgIHZvaWQgcmVzZXQoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCByZXNl
dCgpOwogCi0gICAgICAgIGJvb2wgZGlkVGltZU91dChFeGVjU3RhdGUqKTsKKyAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgYm9vbCBkaWRUaW1lT3V0KEV4ZWNTdGF0ZSopOwogCiAgICAgcHJpdmF0
ZToKICAgICAgICAgdW5zaWduZWQgbV90aW1lb3V0SW50ZXJ2YWw7CkluZGV4OiBKYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCShyZXZpc2lvbiA2NjMzOSkKKysrIEphdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyAr
NTUsNyBAQAogCiAgICAgdHlwZWRlZiBWZWN0b3I8RXhlY1N0YXRlKiwgMTY+IEV4ZWNTdGF0ZVN0
YWNrOwogICAgIAotICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTVmFyaWFibGVP
YmplY3QgeworICAgIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEpTR2xvYmFsT2JqZWN0IDogcHVi
bGljIEpTVmFyaWFibGVPYmplY3QgewogICAgIHByb3RlY3RlZDoKICAgICAgICAgdXNpbmcgSlNW
YXJpYWJsZU9iamVjdDo6SlNWYXJpYWJsZU9iamVjdERhdGE7CiAgICAgICAgIHR5cGVkZWYgSGFz
aFNldDxSZWZQdHI8T3BhcXVlSlNXZWFrT2JqZWN0TWFwPiA+IFdlYWtNYXBTZXQ7CkluZGV4OiBK
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbGxlY3RvckhlYXBJdGVyYXRvci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29sbGVjdG9ySGVhcEl0ZXJhdG9yLmgJKHJldmlz
aW9uIDY2MzM5KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2xsZWN0b3JIZWFwSXRlcmF0
b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsNiBAQAogICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAg
Ki8KIAotI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvbGxlY3Rvci5oIgogCiAjaWZu
ZGVmIENvbGxlY3RvckhlYXBJdGVyYXRvcl9oCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0V2l0aEdsb2JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDY2MzM5KQorKysg
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdFdpdGhHbG9iYWxPYmplY3QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzksMTAgKzM5LDEwIEBACiAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNy
ZWF0ZShwcm90bywgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1v
dXNTbG90Q291bnQpOwogICAgIH0KIAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qo
KSBjb25zdDsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKLSAgICBKU09iamVjdFdpdGhHbG9iYWxPYmplY3Qo
SlNHbG9iYWxPYmplY3QqLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+KTsKKyAgICBKU19F
WFBPUlRfUFJJVkFURSBKU09iamVjdFdpdGhHbG9iYWxPYmplY3QoSlNHbG9iYWxPYmplY3QqLCBO
b25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+KTsKIAogICAgIEpTT2JqZWN0V2l0aEdsb2JhbE9i
amVjdChOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSkKICAgICAgICAgOiBK
U09iamVjdChzdHJ1Y3R1cmUpCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaAkocmV2aXNp
b24gNjYzMzkpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaAkod29ya2luZyBj
b3B5KQpAQCAtNTUsOSArNTUsOSBAQAogICAgIHR5cGVkZWYgdm9pZCogRW5jb2RlZEpTVmFsdWU7
CiAjZW5kaWYKIAotICAgIGRvdWJsZSBub25JbmxpbmVOYU4oKTsKLSAgICBpbnQzMl90IHRvSW50
MzJTbG93Q2FzZShkb3VibGUsIGJvb2wmIG9rKTsKLSAgICB1aW50MzJfdCB0b1VJbnQzMlNsb3dD
YXNlKGRvdWJsZSwgYm9vbCYgb2spOworICAgIEpTX0VYUE9SVF9QUklWQVRFIGRvdWJsZSBub25J
bmxpbmVOYU4oKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBpbnQzMl90IHRvSW50MzJTbG93Q2Fz
ZShkb3VibGUsIGJvb2wmIG9rKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB1aW50MzJfdCB0b1VJ
bnQzMlNsb3dDYXNlKGRvdWJsZSwgYm9vbCYgb2spOwogCiAgICAgY2xhc3MgSlNWYWx1ZSB7CiAg
ICAgICAgIGZyaWVuZCBjbGFzcyBKU0ltbWVkaWF0ZTsKQEAgLTIwMCw3ICsyMDAsNyBAQAogCiAg
ICAgICAgIGJvb2wgaXNDZWxsKCkgY29uc3Q7CiAgICAgICAgIEpTQ2VsbCogYXNDZWxsKCkgY29u
c3Q7Ci0gICAgICAgIGJvb2wgaXNWYWxpZENhbGxlZSgpOworICAgICAgICBKU19FWFBPUlRfUFJJ
VkFURSBib29sIGlzVmFsaWRDYWxsZWUoKTsKIAogI2lmbmRlZiBOREVCVUcKICAgICAgICAgY2hh
ciogZGVzY3JpcHRpb24oKTsKQEAgLTIxMSwxMCArMjExLDEwIEBACiAgICAgICAgIEpTVmFsdWUo
SGFzaFRhYmxlRGVsZXRlZFZhbHVlVGFnKTsKIAogICAgICAgICBpbmxpbmUgY29uc3QgSlNWYWx1
ZSBhc1ZhbHVlKCkgY29uc3QgeyByZXR1cm4gKnRoaXM7IH0KLSAgICAgICAgSlNPYmplY3QqIHRv
T2JqZWN0U2xvd0Nhc2UoRXhlY1N0YXRlKikgY29uc3Q7Ci0gICAgICAgIEpTT2JqZWN0KiB0b1Ro
aXNPYmplY3RTbG93Q2FzZShFeGVjU3RhdGUqKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgSlNPYmplY3QqIHRvT2JqZWN0U2xvd0Nhc2UoRXhlY1N0YXRlKikgY29uc3Q7CisgICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0b1RoaXNPYmplY3RTbG93Q2FzZShFeGVj
U3RhdGUqKSBjb25zdDsKIAotICAgICAgICBKU09iamVjdCogc3ludGhlc2l6ZVByb3RvdHlwZShF
eGVjU3RhdGUqKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHN5
bnRoZXNpemVQcm90b3R5cGUoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgICAgIEpTT2JqZWN0KiBz
eW50aGVzaXplT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0OwogCiAjaWYgVVNFKEpTVkFMVUUzMl82
NCkKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuaAko
cmV2aXNpb24gNjYzMzkpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5RGVzY3Jp
cHRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw4ICs0Niw4IEBACiAgICAgICAgIEpTVmFsdWUg
dmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CiAgICAgICAgIEpTVmFsdWUgZ2V0dGVy
KCkgY29uc3Q7CiAgICAgICAgIEpTVmFsdWUgc2V0dGVyKCkgY29uc3Q7Ci0gICAgICAgIHZvaWQg
c2V0VW5kZWZpbmVkKCk7Ci0gICAgICAgIHZvaWQgc2V0RGVzY3JpcHRvcihKU1ZhbHVlIHZhbHVl
LCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBz
ZXRVbmRlZmluZWQoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXREZXNjcmlw
dG9yKEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgICAgICB2b2lkIHNl
dEFjY2Vzc29yRGVzY3JpcHRvcihKU1ZhbHVlIGdldHRlciwgSlNWYWx1ZSBzZXR0ZXIsIHVuc2ln
bmVkIGF0dHJpYnV0ZXMpOwogICAgICAgICB2b2lkIHNldFdyaXRhYmxlKGJvb2wpOwogICAgICAg
ICB2b2lkIHNldEVudW1lcmFibGUoYm9vbCk7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbGxlY3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29sbGVj
dG9yLmgJKHJldmlzaW9uIDY2MzM5KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2xsZWN0
b3IuaAkod29ya2luZyBjb3B5KQpAQCAtOTEsMTMgKzkxLDEzIEBACiAgICAgcHVibGljOgogICAg
ICAgICBjbGFzcyBUaHJlYWQ7CiAKLSAgICAgICAgdm9pZCBkZXN0cm95KCk7CisgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIHZvaWQgZGVzdHJveSgpOwogCiAgICAgICAgIHZvaWQqIGFsbG9jYXRl
TnVtYmVyKHNpemVfdCk7Ci0gICAgICAgIHZvaWQqIGFsbG9jYXRlKHNpemVfdCk7CisgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHZvaWQqIGFsbG9jYXRlKHNpemVfdCk7CiAKLSAgICAgICAgYm9v
bCBpc0J1c3koKTsgLy8gdHJ1ZSBpZiBhbiBhbGxvY2F0aW9uIG9yIGNvbGxlY3Rpb24gaXMgaW4g
cHJvZ3Jlc3MKLSAgICAgICAgdm9pZCBjb2xsZWN0QWxsR2FyYmFnZSgpOworICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSBib29sIGlzQnVzeSgpOyAvLyB0cnVlIGlmIGFuIGFsbG9jYXRpb24gb3Ig
Y29sbGVjdGlvbiBpcyBpbiBwcm9ncmVzcworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lk
IGNvbGxlY3RBbGxHYXJiYWdlKCk7CiAgICAgICAgIHZvaWQgc2V0QWN0aXZpdHlDYWxsYmFjayhQ
YXNzT3duUHRyPEdDQWN0aXZpdHlDYWxsYmFjaz4pOwogCiAgICAgICAgIHN0YXRpYyBjb25zdCBz
aXplX3QgbWluRXh0cmFDb3N0ID0gMjU2OwpAQCAtMTExLDEyICsxMTEsMTIgQEAKICAgICAgICAg
ICAgIHNpemVfdCBmcmVlOwogICAgICAgICB9OwogICAgICAgICBTdGF0aXN0aWNzIHN0YXRpc3Rp
Y3MoKSBjb25zdDsKLSAgICAgICAgc2l6ZV90IHNpemUoKSBjb25zdDsKKyAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc2l6ZV90IHNpemUoKSBjb25zdDsKIAotICAgICAgICB2b2lkIHByb3RlY3Qo
SlNWYWx1ZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcHJvdGVjdChKU1ZhbHVl
KTsKICAgICAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSB2YWx1ZSBpcyBubyBsb25nZXIgcHJv
dGVjdGVkIGJ5IGFueSBwcm90ZWN0IHBvaW50ZXJzCiAgICAgICAgIC8vICh0aG91Z2ggaXQgbWF5
IHN0aWxsIGJlIGFsaXZlIGR1ZSB0byBoZWFwL3N0YWNrIHJlZmVyZW5jZXMpLgotICAgICAgICBi
b29sIHVucHJvdGVjdChKU1ZhbHVlKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCB1
bnByb3RlY3QoSlNWYWx1ZSk7CiAKICAgICAgICAgc3RhdGljIEhlYXAqIGhlYXAoSlNWYWx1ZSk7
IC8vIDAgZm9yIGltbWVkaWF0ZSB2YWx1ZXMKICAgICAgICAgc3RhdGljIEhlYXAqIGhlYXAoSlND
ZWxsKik7CkBAIC0xMzMsNyArMTMzLDcgQEAKICAgICAgICAgc3RhdGljIGJvb2wgY2hlY2tNYXJr
Q2VsbChjb25zdCBKU0NlbGwqKTsKICAgICAgICAgc3RhdGljIHZvaWQgbWFya0NlbGwoSlNDZWxs
Kik7CiAKLSAgICAgICAgV2Vha0dDSGFuZGxlKiBhZGRXZWFrR0NIYW5kbGUoSlNDZWxsKik7Cisg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFdlYWtHQ0hhbmRsZSogYWRkV2Vha0dDSGFuZGxlKEpT
Q2VsbCopOwogCiAgICAgICAgIHZvaWQgbWFya0NvbnNlcnZhdGl2ZWx5KE1hcmtTdGFjayYsIHZv
aWQqIHN0YXJ0LCB2b2lkKiBlbmQpOwogCkBAIC0xNjUsNyArMTY1LDcgQEAKICAgICAgICAgdm9p
ZCBjbGVhck1hcmtCaXRzKENvbGxlY3RvckJsb2NrKik7CiAgICAgICAgIHNpemVfdCBtYXJrZWRD
ZWxscyhzaXplX3Qgc3RhcnRCbG9jayA9IDAsIHNpemVfdCBzdGFydENlbGwgPSAwKSBjb25zdDsK
IAotICAgICAgICB2b2lkIHJlY29yZEV4dHJhQ29zdChzaXplX3QpOworICAgICAgICBKU19FWFBP
UlRfUFJJVkFURSB2b2lkIHJlY29yZEV4dHJhQ29zdChzaXplX3QpOwogCiAgICAgICAgIHZvaWQg
YWRkVG9TdGF0aXN0aWNzKFN0YXRpc3RpY3MmKSBjb25zdDsKIApJbmRleDogSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1dyYXBwZXJPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTV3JhcHBlck9iamVjdC5oCShyZXZpc2lvbiA2NjMzOSkKKysrIEphdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDQz
ICsyNiw0MyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotICAgIC8vIFRoaXMgY2xhc3MgaXMgdXNl
ZCBhcyBhIGJhc2UgZm9yIGNsYXNzZXMgc3VjaCBhcyBTdHJpbmcsCi0gICAgLy8gTnVtYmVyLCBC
b29sZWFuIGFuZCBEYXRlIHdoaWNoIGFyZSB3cmFwcGVycyBmb3IgcHJpbWl0aXZlIHR5cGVzLgot
ICAgIGNsYXNzIEpTV3JhcHBlck9iamVjdCA6IHB1YmxpYyBKU09iamVjdCB7Ci0gICAgcHJvdGVj
dGVkOgotICAgICAgICBleHBsaWNpdCBKU1dyYXBwZXJPYmplY3QoTm9uTnVsbFBhc3NSZWZQdHI8
U3RydWN0dXJlPik7CisvLyBUaGlzIGNsYXNzIGlzIHVzZWQgYXMgYSBiYXNlIGZvciBjbGFzc2Vz
IHN1Y2ggYXMgU3RyaW5nLAorLy8gTnVtYmVyLCBCb29sZWFuIGFuZCBEYXRlIHdoaWNoIGFyZSB3
cmFwcGVycyBmb3IgcHJpbWl0aXZlIHR5cGVzLgorY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgSlNX
cmFwcGVyT2JqZWN0IDogcHVibGljIEpTT2JqZWN0IHsKK3Byb3RlY3RlZDoKKyAgICBleHBsaWNp
dCBKU1dyYXBwZXJPYmplY3QoTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPik7CiAKLSAgICBw
dWJsaWM6Ci0gICAgICAgIEpTVmFsdWUgaW50ZXJuYWxWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
aW50ZXJuYWxWYWx1ZTsgfQotICAgICAgICB2b2lkIHNldEludGVybmFsVmFsdWUoSlNWYWx1ZSk7
CitwdWJsaWM6CisgICAgSlNWYWx1ZSBpbnRlcm5hbFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9p
bnRlcm5hbFZhbHVlOyB9CisgICAgdm9pZCBzZXRJbnRlcm5hbFZhbHVlKEpTVmFsdWUpOwogCi0g
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTVmFs
dWUgcHJvdG90eXBlKSAKLSAgICAgICAgeyAKLSAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6
OmNyZWF0ZShwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwg
QW5vbnltb3VzU2xvdENvdW50KTsKLSAgICAgICAgfQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0
cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTVmFsdWUgcHJvdG90eXBlKSAKKyAgICB7IAorICAg
ICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUocHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCk7CisgICAgfQogCi0gICAg
cHJvdGVjdGVkOgotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgQW5vbnltb3VzU2xvdENv
dW50ID0gMSArIEpTT2JqZWN0OjpBbm9ueW1vdXNTbG90Q291bnQ7Citwcm90ZWN0ZWQ6CisgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIEFub255bW91c1Nsb3RDb3VudCA9IDEgKyBKU09iamVjdDo6
QW5vbnltb3VzU2xvdENvdW50OwogCi0gICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCB2b2lk
IG1hcmtDaGlsZHJlbihNYXJrU3RhY2smKTsKLSAgICAgICAgCi0gICAgICAgIEpTVmFsdWUgbV9p
bnRlcm5hbFZhbHVlOwotICAgIH07Citwcml2YXRlOgorICAgIHZpcnR1YWwgdm9pZCBtYXJrQ2hp
bGRyZW4oTWFya1N0YWNrJik7CisgICAgCisgICAgSlNWYWx1ZSBtX2ludGVybmFsVmFsdWU7Cit9
OwogCi0gICAgaW5saW5lIEpTV3JhcHBlck9iamVjdDo6SlNXcmFwcGVyT2JqZWN0KE5vbk51bGxQ
YXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlKQotICAgICAgICA6IEpTT2JqZWN0KHN0cnVj
dHVyZSkKLSAgICB7Ci0gICAgICAgIHB1dEFub255bW91c1ZhbHVlKDAsIGpzTnVsbCgpKTsKLSAg
ICB9CitpbmxpbmUgSlNXcmFwcGVyT2JqZWN0OjpKU1dyYXBwZXJPYmplY3QoTm9uTnVsbFBhc3NS
ZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUpCisgICAgOiBKU09iamVjdChzdHJ1Y3R1cmUpCit7
CisgICAgcHV0QW5vbnltb3VzVmFsdWUoMCwganNOdWxsKCkpOworfQogCi0gICAgaW5saW5lIHZv
aWQgSlNXcmFwcGVyT2JqZWN0OjpzZXRJbnRlcm5hbFZhbHVlKEpTVmFsdWUgdmFsdWUpCi0gICAg
ewotICAgICAgICBBU1NFUlQodmFsdWUpOwotICAgICAgICBBU1NFUlQoIXZhbHVlLmlzT2JqZWN0
KCkpOwotICAgICAgICBtX2ludGVybmFsVmFsdWUgPSB2YWx1ZTsKLSAgICAgICAgcHV0QW5vbnlt
b3VzVmFsdWUoMCwgdmFsdWUpOwotICAgIH0KK2lubGluZSB2b2lkIEpTV3JhcHBlck9iamVjdDo6
c2V0SW50ZXJuYWxWYWx1ZShKU1ZhbHVlIHZhbHVlKQoreworICAgIEFTU0VSVCh2YWx1ZSk7Cisg
ICAgQVNTRVJUKCF2YWx1ZS5pc09iamVjdCgpKTsKKyAgICBtX2ludGVybmFsVmFsdWUgPSB2YWx1
ZTsKKyAgICBwdXRBbm9ueW1vdXNWYWx1ZSgwLCB2YWx1ZSk7Cit9CiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwogCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhbGxEYXRhLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWxsRGF0YS5oCShyZXZpc2lvbiA2NjMzOSkK
KysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FsbERhdGEuaAkod29ya2luZyBjb3B5KQpAQCAt
NTgsNyArNTgsNyBAQAogICAgICAgICB9IGpzOwogICAgIH07CiAKLSAgICBKU1ZhbHVlIGNhbGwo
RXhlY1N0YXRlKiwgSlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwgQ2FsbFR5cGUsIGNvbnN0IENhbGxE
YXRhJiwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3QmKTsKKyAgICBKU19FWFBPUlRf
UFJJVkFURSBKU1ZhbHVlIGNhbGwoRXhlY1N0YXRlKiwgSlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwg
Q2FsbFR5cGUsIGNvbnN0IENhbGxEYXRhJiwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xp
c3QmKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29uc3RydWN0RGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29uc3RydWN0RGF0YS5oCShyZXZpc2lvbiA2NjMzOSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29uc3RydWN0RGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw3ICs1Nyw3IEBACiAgICAg
ICAgIH0ganM7CiAgICAgfTsKIAotICAgIEpTT2JqZWN0KiBjb25zdHJ1Y3QoRXhlY1N0YXRlKiwg
SlNWYWx1ZSBjb25zdHJ1Y3RvciwgQ29uc3RydWN0VHlwZSwgY29uc3QgQ29uc3RydWN0RGF0YSYs
IGNvbnN0IEFyZ0xpc3QmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogY29uc3Ry
dWN0KEV4ZWNTdGF0ZSosIEpTVmFsdWUgY29uc3RydWN0b3IsIENvbnN0cnVjdFR5cGUsIGNvbnN0
IENvbnN0cnVjdERhdGEmLCBjb25zdCBBcmdMaXN0Jik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwog
CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcmtTdGFjay5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFya1N0YWNrLmgJKHJldmlzaW9uIDY2MzM5KQorKysg
SmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXJrU3RhY2suaAkod29ya2luZyBjb3B5KQpAQCAtODUs
OCArODUsOCBAQAogICAgICAgICAgICAgTWFya1NldFByb3BlcnRpZXMgbV9wcm9wZXJ0aWVzOwog
ICAgICAgICB9OwogCi0gICAgICAgIHN0YXRpYyB2b2lkKiBhbGxvY2F0ZVN0YWNrKHNpemVfdCBz
aXplKTsKLSAgICAgICAgc3RhdGljIHZvaWQgcmVsZWFzZVN0YWNrKHZvaWQqIGFkZHIsIHNpemVf
dCBzaXplKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQqIGFsbG9jYXRl
U3RhY2soc2l6ZV90IHNpemUpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9p
ZCByZWxlYXNlU3RhY2sodm9pZCogYWRkciwgc2l6ZV90IHNpemUpOwogCiAgICAgICAgIHN0YXRp
YyB2b2lkIGluaXRpYWxpemVQYWdlc2l6ZSgpOwogICAgICAgICBzdGF0aWMgc2l6ZV90IHBhZ2VT
aXplKCkKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGlu
Zy5oCShyZXZpc2lvbiA2NjMzOSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6
ZVRocmVhZGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw5ICszMSw5IEBACiAKIG5hbWVzcGFj
ZSBKU0MgewogCi0gICAgLy8gVGhpcyBmdW5jdGlvbiBtdXN0IGJlIGNhbGxlZCBmcm9tIHRoZSBt
YWluIHRocmVhZC4gSXQgaXMgc2FmZSB0byBjYWxsIGl0IHJlcGVhdGVkbHkuCi0gICAgLy8gRGFy
d2luIGlzIGFuIGV4Y2VwdGlvbiB0byB0aGlzIHJ1bGU6IGl0IGlzIE9LIHRvIGNhbGwgdGhpcyBm
dW5jdGlvbiBmcm9tIGFueSB0aHJlYWQsIGV2ZW4gcmVlbnRyYW50bHkuCi0gICAgdm9pZCBpbml0
aWFsaXplVGhyZWFkaW5nKCk7CisvLyBUaGlzIGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVkIGZyb20g
dGhlIG1haW4gdGhyZWFkLiBJdCBpcyBzYWZlIHRvIGNhbGwgaXQgcmVwZWF0ZWRseS4KKy8vIERh
cndpbiBpcyBhbiBleGNlcHRpb24gdG8gdGhpcyBydWxlOiBpdCBpcyBPSyB0byBjYWxsIHRoaXMg
ZnVuY3Rpb24gZnJvbSBhbnkgdGhyZWFkLCBldmVuIHJlZW50cmFudGx5LgorSlNfRVhQT1JUX1BS
SVZBVEUgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nKCk7CiAKIH0KIApJbmRleDogSmF2YVNjcmlw
dENvcmUvY29uZmlnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvY29uZmlnLmgJKHJl
dmlzaW9uIDY2MzM5KQorKysgSmF2YVNjcmlwdENvcmUvY29uZmlnLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI5LDE4ICsyOSwyMCBAQAogCiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CiAKLSNpZiAh
UExBVEZPUk0oQ0hST01JVU0pICYmIE9TKFdJTkRPV1MpICYmICFkZWZpbmVkKEJVSUxESU5HX1dY
X18pICYmICFDT01QSUxFUihHQ0MpCisjaWYgIVBMQVRGT1JNKENIUk9NSVVNKSAmJiBPUyhXSU5E
T1dTKSAmJiAhQ09NUElMRVIoR0NDKQogI2lmIGRlZmluZWQoQlVJTERJTkdfSmF2YVNjcmlwdENv
cmUpIHx8IGRlZmluZWQoQlVJTERJTkdfV1RGKQogI2RlZmluZSBKU19FWFBPUlREQVRBIF9fZGVj
bHNwZWMoZGxsZXhwb3J0KQogI2Vsc2UKICNkZWZpbmUgSlNfRVhQT1JUREFUQSBfX2RlY2xzcGVj
KGRsbGltcG9ydCkKICNlbmRpZgotI2RlZmluZSBKU19FWFBPUlRDTEFTUyBKU19FWFBPUlREQVRB
CisjZWxpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAhZGVmaW5lZChfX0NDX0FSTSkgJiYgIWRlZmlu
ZWQoX19BUk1DQ19fKQorI2RlZmluZSBKU19FWFBPUlREQVRBIF9fYXR0cmlidXRlX18oKHZpc2li
aWxpdHkoImRlZmF1bHQiKSkpCiAjZWxzZQogI2RlZmluZSBKU19FWFBPUlREQVRBCi0jZGVmaW5l
IEpTX0VYUE9SVENMQVNTCiAjZW5kaWYKIAorI2RlZmluZSBKU19FWFBPUlRDTEFTUyBKU19FWFBP
UlREQVRBCisKICNpZiBPUyhXSU5ET1dTKQogCiAvLyBJZiB3ZSBkb24ndCBkZWZpbmUgdGhlc2Us
IHRoZXkgZ2V0IGRlZmluZWQgaW4gd2luZGVmLmguIApJbmRleDogSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHJldmlzaW9uIDY2MzM5KQorKysg
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTkwLDcgKzkwLDcgQEAKICAgICAgICAgdHlwZWRlZiBEZWNsYXJhdGlvblN0YWNr
czo6VmFyU3RhY2sgVmFyU3RhY2s7CiAgICAgICAgIHR5cGVkZWYgRGVjbGFyYXRpb25TdGFja3M6
OkZ1bmN0aW9uU3RhY2sgRnVuY3Rpb25TdGFjazsKIAotICAgICAgICBzdGF0aWMgdm9pZCBzZXRE
dW1wc0dlbmVyYXRlZENvZGUoYm9vbCBkdW1wc0dlbmVyYXRlZENvZGUpOworICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBzZXREdW1wc0dlbmVyYXRlZENvZGUoYm9vbCBkdW1w
c0dlbmVyYXRlZENvZGUpOwogICAgICAgICBzdGF0aWMgYm9vbCBkdW1wc0dlbmVyYXRlZENvZGUo
KTsKIAogICAgICAgICBCeXRlY29kZUdlbmVyYXRvcihQcm9ncmFtTm9kZSosIGNvbnN0IERlYnVn
Z2VyKiwgY29uc3QgU2NvcGVDaGFpbiYsIFN5bWJvbFRhYmxlKiwgUHJvZ3JhbUNvZGVCbG9jayop
OwpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL1JhbmRvbU51bWJlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEphdmFTY3JpcHRDb3JlL3d0Zi9SYW5kb21OdW1iZXIuaAkocmV2aXNpb24gNjYzMzkpCisrKyBK
YXZhU2NyaXB0Q29yZS93dGYvUmFuZG9tTnVtYmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDkg
KzI4LDkgQEAKIAogbmFtZXNwYWNlIFdURiB7CiAKLSAgICAvLyBSZXR1cm5zIGEgcHNldWRvLXJh
bmRvbSBudW1iZXIgaW4gdGhlIHJhbmdlIFswLCAxKSwgYXR0ZW1wdHMgdG8gYmUKLSAgICAvLyBj
cnlwdG9ncmFwaGljYWxseSBzZWN1cmUgaWYgcG9zc2libGUgb24gdGhlIHRhcmdldCBwbGF0Zm9y
bQotICAgIGRvdWJsZSByYW5kb21OdW1iZXIoKTsKKy8vIFJldHVybnMgYSBwc2V1ZG8tcmFuZG9t
IG51bWJlciBpbiB0aGUgcmFuZ2UgWzAsIDEpLCBhdHRlbXB0cyB0byBiZQorLy8gY3J5cHRvZ3Jh
cGhpY2FsbHkgc2VjdXJlIGlmIHBvc3NpYmxlIG9uIHRoZSB0YXJnZXQgcGxhdGZvcm0KK1dURl9F
WFBPUlRfUFJJVkFURSBkb3VibGUgcmFuZG9tTnVtYmVyKCk7CiAKIH0KIApJbmRleDogSmF2YVNj
cmlwdENvcmUvd3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL3d0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaAkocmV2aXNpb24gNjYzMzkpCisr
KyBKYXZhU2NyaXB0Q29yZS93dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDIyICsyNiwyMiBAQAogCiBuYW1lc3BhY2UgV1RGIHsKICAgICAKLSAgICBzdHJ1
Y3QgUmVmQ291bnRlZExlYWtDb3VudGVyIHsKLSAgICAgICAgc3RhdGljIHZvaWQgc3VwcHJlc3NN
ZXNzYWdlcyhjb25zdCBjaGFyKik7Ci0gICAgICAgIHN0YXRpYyB2b2lkIGNhbmNlbE1lc3NhZ2VT
dXBwcmVzc2lvbihjb25zdCBjaGFyKik7Ci0gICAgICAgIAotICAgICAgICBleHBsaWNpdCBSZWZD
b3VudGVkTGVha0NvdW50ZXIoY29uc3QgY2hhciogZGVzY3JpcHRpb24pOwotICAgICAgICB+UmVm
Q291bnRlZExlYWtDb3VudGVyKCk7CitzdHJ1Y3QgV1RGX0VYUE9SVF9QUklWQVRFIFJlZkNvdW50
ZWRMZWFrQ291bnRlciB7CisgICAgc3RhdGljIHZvaWQgc3VwcHJlc3NNZXNzYWdlcyhjb25zdCBj
aGFyKik7CisgICAgc3RhdGljIHZvaWQgY2FuY2VsTWVzc2FnZVN1cHByZXNzaW9uKGNvbnN0IGNo
YXIqKTsKKyAgICAKKyAgICBleHBsaWNpdCBSZWZDb3VudGVkTGVha0NvdW50ZXIoY29uc3QgY2hh
ciogZGVzY3JpcHRpb24pOworICAgIH5SZWZDb3VudGVkTGVha0NvdW50ZXIoKTsKIAotICAgICAg
ICB2b2lkIGluY3JlbWVudCgpOwotICAgICAgICB2b2lkIGRlY3JlbWVudCgpOworICAgIHZvaWQg
aW5jcmVtZW50KCk7CisgICAgdm9pZCBkZWNyZW1lbnQoKTsKIAogI2lmbmRlZiBOREVCVUcKLSAg
ICBwcml2YXRlOgotICAgICAgICB2b2xhdGlsZSBpbnQgbV9jb3VudDsKLSAgICAgICAgY29uc3Qg
Y2hhciogbV9kZXNjcmlwdGlvbjsKK3ByaXZhdGU6CisgICAgdm9sYXRpbGUgaW50IG1fY291bnQ7
CisgICAgY29uc3QgY2hhciogbV9kZXNjcmlwdGlvbjsKICNlbmRpZgotICAgIH07Cit9OwogCiB9
ICAvLyBuYW1lc3BhY2UgV1RGCiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L0NTdHJp
bmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9DU3RyaW5nLmgJKHJl
dmlzaW9uIDY2MzM5KQorKysgSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvQ1N0cmluZy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MiwxMiArNTIsMTMgQEAKIGNsYXNzIENTdHJpbmcgewogcHVibGljOgog
ICAgIENTdHJpbmcoKSB7IH0KLSAgICBDU3RyaW5nKGNvbnN0IGNoYXIqKTsKLSAgICBDU3RyaW5n
KGNvbnN0IGNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBD
U3RyaW5nKGNvbnN0IGNoYXIqKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgQ1N0cmluZyhjb25z
dCBjaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBDU3RyaW5nKENTdHJpbmdCdWZmZXIqIGJ1
ZmZlcikgOiBtX2J1ZmZlcihidWZmZXIpIHsgfQotICAgIHN0YXRpYyBDU3RyaW5nIG5ld1VuaW5p
dGlhbGl6ZWQoc2l6ZV90IGxlbmd0aCwgY2hhciomIGNoYXJhY3RlckJ1ZmZlcik7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBDU3RyaW5nIG5ld1VuaW5pdGlhbGl6ZWQoc2l6ZV90IGxl
bmd0aCwgY2hhciomIGNoYXJhY3RlckJ1ZmZlcik7CiAKLSAgICBjb25zdCBjaGFyKiBkYXRhKCkg
Y29uc3QKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgfkNTdHJpbmcoKSB7IH0KKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgY29uc3QgY2hhciogZGF0YSgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1
cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+ZGF0YSgpIDogMDsKICAgICB9CkBAIC03Nyw3ICs3OCw3
IEBACiAgICAgUmVmUHRyPENTdHJpbmdCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAotYm9vbCBvcGVy
YXRvcj09KGNvbnN0IENTdHJpbmcmIGEsIGNvbnN0IENTdHJpbmcmIGIpOworV1RGX0VYUE9SVF9Q
UklWQVRFIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDU3RyaW5nJiBhLCBjb25zdCBDU3RyaW5nJiBi
KTsKIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgQ1N0cmluZyYgYSwgY29uc3QgQ1N0cmlu
ZyYgYikgeyByZXR1cm4gIShhID09IGIpOyB9CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpJbmRleDog
SmF2YVNjcmlwdENvcmUvd3RmL3RleHQvQXRvbWljU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2
YVNjcmlwdENvcmUvd3RmL3RleHQvQXRvbWljU3RyaW5nLmgJKHJldmlzaW9uIDY2MzM5KQorKysg
SmF2YVNjcmlwdENvcmUvd3RmL3RleHQvQXRvbWljU3RyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM4LDI3ICszOCwzMSBAQAogCiBjbGFzcyBBdG9taWNTdHJpbmcgewogcHVibGljOgotICAgIHN0
YXRpYyB2b2lkIGluaXQoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgaW5p
dCgpOwogCi0gICAgQXRvbWljU3RyaW5nKCkgeyB9Ci0gICAgQXRvbWljU3RyaW5nKGNvbnN0IGNo
YXIqIHMpIDogbV9zdHJpbmcoYWRkKHMpKSB7IH0KKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgQXRv
bWljU3RyaW5nKCkgeyB9CisgICAgLy8gY29weSBjb25zdHJ1Y3RvciBuZWVkcyB0byBiZSBleHBs
aWNpdGx5IGRlZmluZWQgc28gd2UgY2FuIHNwZWNpZnkgcHJvcGVyIGRsbCBsaW5rYWdlCisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIEF0b21pY1N0cmluZyhjb25zdCBBdG9taWNTdHJpbmcmIHMpIDog
bV9zdHJpbmcocy5tX3N0cmluZykgeyB9CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIEF0b21pY1N0
cmluZyhjb25zdCBjaGFyKiBzKSA6IG1fc3RyaW5nKGFkZChzKSkgeyB9CiAgICAgQXRvbWljU3Ry
aW5nKGNvbnN0IFVDaGFyKiBzLCB1bnNpZ25lZCBsZW5ndGgpIDogbV9zdHJpbmcoYWRkKHMsIGxl
bmd0aCkpIHsgfQogICAgIEF0b21pY1N0cmluZyhjb25zdCBVQ2hhciogcywgdW5zaWduZWQgbGVu
Z3RoLCB1bnNpZ25lZCBleGlzdGluZ0hhc2gpIDogbV9zdHJpbmcoYWRkKHMsIGxlbmd0aCwgZXhp
c3RpbmdIYXNoKSkgeyB9CiAgICAgQXRvbWljU3RyaW5nKGNvbnN0IFVDaGFyKiBzKSA6IG1fc3Ry
aW5nKGFkZChzKSkgeyB9CiAgICAgQVRPTUlDU1RSSU5HX0NPTlZFUlNJT04gQXRvbWljU3RyaW5n
KFN0cmluZ0ltcGwqIGltcCkgOiBtX3N0cmluZyhhZGQoaW1wKSkgeyB9CiAgICAgQXRvbWljU3Ry
aW5nKEF0b21pY1N0cmluZ0ltcGwqIGltcCkgOiBtX3N0cmluZyhpbXApIHsgfQotICAgIEFUT01J
Q1NUUklOR19DT05WRVJTSU9OIEF0b21pY1N0cmluZyhjb25zdCBTdHJpbmcmIHMpIDogbV9zdHJp
bmcoYWRkKHMuaW1wbCgpKSkgeyB9CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIEFUT01JQ1NUUklO
R19DT05WRVJTSU9OIEF0b21pY1N0cmluZyhjb25zdCBTdHJpbmcmIHMpIDogbV9zdHJpbmcoYWRk
KHMuaW1wbCgpKSkgeyB9CiAKICAgICAvLyBIYXNoIHRhYmxlIGRlbGV0ZWQgdmFsdWVzLCB3aGlj
aCBhcmUgb25seSBjb25zdHJ1Y3RlZCBhbmQgbmV2ZXIgY29waWVkIG9yIGRlc3Ryb3llZC4KLSAg
ICBBdG9taWNTdHJpbmcoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKSA6IG1fc3RyaW5n
KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKSB7IH0KLSAgICBib29sIGlzSGFzaFRhYmxlRGVs
ZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuaXNIYXNoVGFibGVEZWxldGVkVmFs
dWUoKTsgfQorICAgIFdURl9FWFBPUlRfUFJJVkFURSBBdG9taWNTdHJpbmcoV1RGOjpIYXNoVGFi
bGVEZWxldGVkVmFsdWVUeXBlKSA6IG1fc3RyaW5nKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVl
KSB7IH0KKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0K
IAotICAgIHN0YXRpYyBBdG9taWNTdHJpbmdJbXBsKiBmaW5kKGNvbnN0IFVDaGFyKiBzLCB1bnNp
Z25lZCBsZW5ndGgsIHVuc2lnbmVkIGV4aXN0aW5nSGFzaCk7CisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIH5BdG9taWNTdHJpbmcoKSB7IH0KIAorICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMg
QXRvbWljU3RyaW5nSW1wbCogZmluZChjb25zdCBVQ2hhciogcywgdW5zaWduZWQgbGVuZ3RoLCB1
bnNpZ25lZCBleGlzdGluZ0hhc2gpOworCiAgICAgb3BlcmF0b3IgY29uc3QgU3RyaW5nJigpIGNv
bnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9CiAgICAgY29uc3QgU3RyaW5nJiBzdHJpbmcoKSBjb25z
dCB7IHJldHVybiBtX3N0cmluZzsgfTsKIAotICAgIEF0b21pY1N0cmluZ0ltcGwqIGltcGwoKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxBdG9taWNTdHJpbmdJbXBsICo+KG1fc3RyaW5nLmlt
cGwoKSk7IH0KKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgQXRvbWljU3RyaW5nSW1wbCogaW1wbCgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEF0b21pY1N0cmluZ0ltcGwgKj4obV9zdHJpbmcu
aW1wbCgpKTsgfQogICAgIAogICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdHJpbmcuY2hhcmFjdGVycygpOyB9CiAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29u
c3QgeyByZXR1cm4gbV9zdHJpbmcubGVuZ3RoKCk7IH0KQEAgLTgyLDcgKzg2LDcgQEAKICAgICBi
b29sIGVuZHNXaXRoKGNvbnN0IFN0cmluZyYgcywgYm9vbCBjYXNlU2Vuc2l0aXZlID0gdHJ1ZSkg
Y29uc3QKICAgICAgICAgeyByZXR1cm4gbV9zdHJpbmcuZW5kc1dpdGgocywgY2FzZVNlbnNpdGl2
ZSk7IH0KICAgICAKLSAgICBBdG9taWNTdHJpbmcgbG93ZXIoKSBjb25zdDsKKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgQXRvbWljU3RyaW5nIGxvd2VyKCkgY29uc3Q7CiAgICAgQXRvbWljU3RyaW5n
IHVwcGVyKCkgY29uc3QgeyByZXR1cm4gQXRvbWljU3RyaW5nKGltcGwoKS0+dXBwZXIoKSk7IH0K
ICAgICAKICAgICBpbnQgdG9JbnQoYm9vbCogb2sgPSAwKSBjb25zdCB7IHJldHVybiBtX3N0cmlu
Zy50b0ludChvayk7IH0KQEAgLTEwOCwyNCArMTEyLDMxIEBACiAgICAgb3BlcmF0b3IgUVN0cmlu
ZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9CiAjZW5kaWYKIAorICAgIFdURl9FWFBPUlRf
UFJJVkFURSBpbmxpbmUgQXRvbWljU3RyaW5nJiBvcGVyYXRvcj0oY29uc3QgQXRvbWljU3RyaW5n
JiBhKSAKKyAgICB7IAorICAgICAgICBpZiAodGhpcyAhPSAmYSkKKyAgICAgICAgICAgIG1fc3Ry
aW5nID0gYS5tX3N0cmluZzsKKyAgICAgICAgcmV0dXJuICp0aGlzOyAKKyAgICB9CisKIHByaXZh
dGU6CiAgICAgU3RyaW5nIG1fc3RyaW5nOwogICAgIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0
cmluZ0ltcGw+IGFkZChjb25zdCBjaGFyKik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5n
SW1wbD4gYWRkKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTdHJpbmdJbXBsPiBhZGQoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgsIHVu
c2lnbmVkIGV4aXN0aW5nSGFzaCk7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4g
YWRkKGNvbnN0IFVDaGFyKik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQYXNzUmVm
UHRyPFN0cmluZ0ltcGw+IGFkZChjb25zdCBjaGFyKik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChjb25zdCBVQ2hhciosIHVuc2lnbmVk
IGxlbmd0aCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmlu
Z0ltcGw+IGFkZChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgZXhpc3Rp
bmdIYXNoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5n
SW1wbD4gYWRkKGNvbnN0IFVDaGFyKik7CiAgICAgQUxXQVlTX0lOTElORSBQYXNzUmVmUHRyPFN0
cmluZ0ltcGw+IGFkZChTdHJpbmdJbXBsKiByKQogICAgIHsKICAgICAgICAgaWYgKCFyIHx8IHIt
PmlzQXRvbWljKCkpCiAgICAgICAgICAgICByZXR1cm4gcjsKICAgICAgICAgcmV0dXJuIGFkZFNs
b3dDYXNlKHIpOwogICAgIH0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGRT
bG93Q2FzZShTdHJpbmdJbXBsKik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQYXNz
UmVmUHRyPFN0cmluZ0ltcGw+IGFkZFNsb3dDYXNlKFN0cmluZ0ltcGwqKTsKIH07CiAKIGlubGlu
ZSBib29sIG9wZXJhdG9yPT0oY29uc3QgQXRvbWljU3RyaW5nJiBhLCBjb25zdCBBdG9taWNTdHJp
bmcmIGIpIHsgcmV0dXJuIGEuaW1wbCgpID09IGIuaW1wbCgpOyB9Ci1ib29sIG9wZXJhdG9yPT0o
Y29uc3QgQXRvbWljU3RyaW5nJiBhLCBjb25zdCBjaGFyKiBiKTsKK1dURl9FWFBPUlRfUFJJVkFU
RSBib29sIG9wZXJhdG9yPT0oY29uc3QgQXRvbWljU3RyaW5nJiBhLCBjb25zdCBjaGFyKiBiKTsK
IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgQXRvbWljU3RyaW5nJiBhLCBjb25zdCBTdHJp
bmcmIGIpIHsgcmV0dXJuIGVxdWFsKGEuaW1wbCgpLCBiLmltcGwoKSk7IH0KIGlubGluZSBib29s
IG9wZXJhdG9yPT0oY29uc3QgY2hhciogYSwgY29uc3QgQXRvbWljU3RyaW5nJiBiKSB7IHJldHVy
biBiID09IGE7IH0KIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgU3RyaW5nJiBhLCBjb25z
dCBBdG9taWNTdHJpbmcmIGIpIHsgcmV0dXJuIGVxdWFsKGEuaW1wbCgpLCBiLmltcGwoKSk7IH0K
SW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEphdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5oCShyZXZpc2lvbiA2NjMzOSkKKysr
IEphdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
Miw2ICsyMiw4IEBACiAjaWZuZGVmIFdURlN0cmluZ19oCiAjZGVmaW5lIFdURlN0cmluZ19oCiAK
KyNpbmNsdWRlICJQbGF0Zm9ybS5oIgorCiAvLyBUaGlzIGZpbGUgd291bGQgYmUgY2FsbGVkIFN0
cmluZy5oLCBidXQgdGhhdCBjb25mbGljdHMgd2l0aCA8c3RyaW5nLmg+CiAvLyBvbiBzeXN0ZW1z
IHdpdGhvdXQgY2FzZS1zZW5zaXRpdmUgZmlsZSBzeXN0ZW1zLgogCkBAIC01Nyw0MiArNTksNDIg
QEAKIC8vIERlY2xhcmF0aW9ucyBvZiBzdHJpbmcgb3BlcmF0aW9ucwogCiBib29sIGNoYXJhY3Rl
cnNBcmVBbGxBU0NJSShjb25zdCBVQ2hhciosIHNpemVfdCk7Ci1pbnQgY2hhcmFjdGVyc1RvSW50
U3RyaWN0KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDAsIGludCBiYXNlID0gMTAp
OwotdW5zaWduZWQgY2hhcmFjdGVyc1RvVUludFN0cmljdChjb25zdCBVQ2hhciosIHNpemVfdCwg
Ym9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKTsKK1dURl9FWFBPUlRfUFJJVkFURSBpbnQgY2hh
cmFjdGVyc1RvSW50U3RyaWN0KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDAsIGlu
dCBiYXNlID0gMTApOworV1RGX0VYUE9SVF9QUklWQVRFIHVuc2lnbmVkIGNoYXJhY3RlcnNUb1VJ
bnRTdHJpY3QoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAx
MCk7CiBpbnQ2NF90IGNoYXJhY3RlcnNUb0ludDY0U3RyaWN0KGNvbnN0IFVDaGFyKiwgc2l6ZV90
LCBib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApOwogdWludDY0X3QgY2hhcmFjdGVyc1RvVUlu
dDY0U3RyaWN0KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDAsIGludCBiYXNlID0g
MTApOwogaW50cHRyX3QgY2hhcmFjdGVyc1RvSW50UHRyU3RyaWN0KGNvbnN0IFVDaGFyKiwgc2l6
ZV90LCBib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApOwogCi1pbnQgY2hhcmFjdGVyc1RvSW50
KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDApOyAvLyBpZ25vcmVzIHRyYWlsaW5n
IGdhcmJhZ2UKK1dURl9FWFBPUlRfUFJJVkFURSBpbnQgY2hhcmFjdGVyc1RvSW50KGNvbnN0IFVD
aGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDApOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UK
IHVuc2lnbmVkIGNoYXJhY3RlcnNUb1VJbnQoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9r
ID0gMCk7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQogaW50NjRfdCBjaGFyYWN0ZXJzVG9J
bnQ2NChjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSAwKTsgLy8gaWdub3JlcyB0cmFp
bGluZyBnYXJiYWdlCiB1aW50NjRfdCBjaGFyYWN0ZXJzVG9VSW50NjQoY29uc3QgVUNoYXIqLCBz
aXplX3QsIGJvb2wqIG9rID0gMCk7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQogaW50cHRy
X3QgY2hhcmFjdGVyc1RvSW50UHRyKGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDAp
OyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKIAotZG91YmxlIGNoYXJhY3RlcnNUb0RvdWJs
ZShjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSAwKTsKK1dURl9FWFBPUlRfUFJJVkFU
RSBkb3VibGUgY2hhcmFjdGVyc1RvRG91YmxlKGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBv
ayA9IDApOwogZmxvYXQgY2hhcmFjdGVyc1RvRmxvYXQoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJv
b2wqIG9rID0gMCk7CiAKIGNsYXNzIFN0cmluZyB7CiBwdWJsaWM6CiAgICAgLy8gQ29uc3RydWN0
IGEgbnVsbCBzdHJpbmcsIGRpc3Rpbmd1aXNoYWJsZSBmcm9tIGFuIGVtcHR5IHN0cmluZy4KLSAg
ICBTdHJpbmcoKSB7IH0KKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nKCkgeyB9CiAKICAg
ICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBVVEYtMTYgZGF0YS4KLSAgICBTdHJpbmcoY29u
c3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIFN0cmluZyhjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsK
IAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyB3aXRoIFVURi0xNiBkYXRhLCBmcm9tIGEgbnVs
bC10ZXJtaW5hdGVkIHNvdXJjZS4KLSAgICBTdHJpbmcoY29uc3QgVUNoYXIqKTsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IFVDaGFyKik7CiAKICAgICAvLyBDb25zdHJ1Y3Qg
YSBzdHJpbmcgd2l0aCBsYXRpbjEgZGF0YS4KLSAgICBTdHJpbmcoY29uc3QgY2hhciogY2hhcmFj
dGVycywgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNv
bnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCk7CiAKICAgICAvLyBDb25zdHJ1
Y3QgYSBzdHJpbmcgd2l0aCBsYXRpbjEgZGF0YSwgZnJvbSBhIG51bGwtdGVybWluYXRlZCBzb3Vy
Y2UuCi0gICAgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOworICAgIFdURl9FWFBPUlRf
UFJJVkFURSBTdHJpbmcoY29uc3QgY2hhciogY2hhcmFjdGVycyk7CiAKICAgICAvLyBDb25zdHJ1
Y3QgYSBzdHJpbmcgcmVmZXJlbmNpbmcgYW4gZXhpc3RpbmcgU3RyaW5nSW1wbC4KLSAgICBTdHJp
bmcoU3RyaW5nSW1wbCogaW1wbCkgOiBtX2ltcGwoaW1wbCkgeyB9Ci0gICAgU3RyaW5nKFBhc3NS
ZWZQdHI8U3RyaW5nSW1wbD4gaW1wbCkgOiBtX2ltcGwoaW1wbCkgeyB9Ci0gICAgU3RyaW5nKFJl
ZlB0cjxTdHJpbmdJbXBsPiBpbXBsKSA6IG1faW1wbChpbXBsKSB7IH0KKyAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgU3RyaW5nKFN0cmluZ0ltcGwqIGltcGwpIDogbV9pbXBsKGltcGwpIHsgfQorICAg
IFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBpbXBsKSA6
IG1faW1wbChpbXBsKSB7IH0KKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nKFJlZlB0cjxT
dHJpbmdJbXBsPiBpbXBsKSA6IG1faW1wbChpbXBsKSB7IH0KIAogICAgIC8vIElubGluZSB0aGUg
ZGVzdHJ1Y3Rvci4KICAgICBBTFdBWVNfSU5MSU5FIH5TdHJpbmcoKSB7IH0KQEAgLTEyMiw5ICsx
MjQsOSBAQAogICAgICAgICByZXR1cm4gbV9pbXBsLT5jaGFyYWN0ZXJzKCk7CiAgICAgfQogCi0g
ICAgQ1N0cmluZyBhc2NpaSgpIGNvbnN0OwotICAgIENTdHJpbmcgbGF0aW4xKCkgY29uc3Q7Ci0g
ICAgQ1N0cmluZyB1dGY4KGJvb2wgc3RyaWN0ID0gZmFsc2UpIGNvbnN0OworICAgIFdURl9FWFBP
UlRfUFJJVkFURSBDU3RyaW5nIGFzY2lpKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IENTdHJpbmcgbGF0aW4xKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIENTdHJpbmcg
dXRmOChib29sIHN0cmljdCA9IGZhbHNlKSBjb25zdDsKIAogICAgIFVDaGFyIG9wZXJhdG9yW10o
dW5zaWduZWQgaW5kZXgpIGNvbnN0CiAgICAgewpAQCAtMTMzLDE1ICsxMzUsMTUgQEAKICAgICAg
ICAgcmV0dXJuIG1faW1wbC0+Y2hhcmFjdGVycygpW2luZGV4XTsKICAgICB9CiAKLSAgICBzdGF0
aWMgU3RyaW5nIG51bWJlcihzaG9ydCk7Ci0gICAgc3RhdGljIFN0cmluZyBudW1iZXIodW5zaWdu
ZWQgc2hvcnQpOwotICAgIHN0YXRpYyBTdHJpbmcgbnVtYmVyKGludCk7Ci0gICAgc3RhdGljIFN0
cmluZyBudW1iZXIodW5zaWduZWQpOwotICAgIHN0YXRpYyBTdHJpbmcgbnVtYmVyKGxvbmcpOwot
ICAgIHN0YXRpYyBTdHJpbmcgbnVtYmVyKHVuc2lnbmVkIGxvbmcpOwotICAgIHN0YXRpYyBTdHJp
bmcgbnVtYmVyKGxvbmcgbG9uZyk7Ci0gICAgc3RhdGljIFN0cmluZyBudW1iZXIodW5zaWduZWQg
bG9uZyBsb25nKTsKLSAgICBzdGF0aWMgU3RyaW5nIG51bWJlcihkb3VibGUpOworICAgIFdURl9F
WFBPUlRfUFJJVkFURSBzdGF0aWMgU3RyaW5nIG51bWJlcihzaG9ydCk7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBTdHJpbmcgbnVtYmVyKHVuc2lnbmVkIHNob3J0KTsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cmluZyBudW1iZXIoaW50KTsKKyAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIFN0cmluZyBudW1iZXIodW5zaWduZWQpOworICAgIFdURl9FWFBPUlRf
UFJJVkFURSBzdGF0aWMgU3RyaW5nIG51bWJlcihsb25nKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIFN0cmluZyBudW1iZXIodW5zaWduZWQgbG9uZyk7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBTdHJpbmcgbnVtYmVyKGxvbmcgbG9uZyk7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBTdHJpbmcgbnVtYmVyKHVuc2lnbmVkIGxvbmcgbG9uZyk7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJpbmcgbnVtYmVyKGRvdWJsZSk7CiAKICAgICAvLyBG
aW5kIGEgc2luZ2xlIGNoYXJhY3RlciBvciBzdHJpbmcsIGFsc28gd2l0aCBtYXRjaCBmdW5jdGlv
biAmIGxhdGluMSBmb3Jtcy4KICAgICBzaXplX3QgZmluZChVQ2hhciBjLCB1bnNpZ25lZCBzdGFy
dCA9IDApIGNvbnN0CkBAIC0xNjAsOSArMTYyLDkgQEAKICAgICAgICAgeyByZXR1cm4gbV9pbXBs
ID8gbV9pbXBsLT5yZXZlcnNlRmluZChzdHIuaW1wbCgpLCBzdGFydCkgOiBub3RGb3VuZDsgfQog
CiAgICAgLy8gQ2FzZSBpbnNlbnNpdGl2ZSBzdHJpbmcgbWF0Y2hpbmcuCi0gICAgc2l6ZV90IGZp
bmRJZ25vcmluZ0Nhc2UoY29uc3QgY2hhciogc3RyLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0
CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCBmaW5kSWdub3JpbmdDYXNlKGNvbnN0IGNo
YXIqIHN0ciwgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdAogICAgICAgICB7IHJldHVybiBtX2lt
cGwgPyBtX2ltcGwtPmZpbmRJZ25vcmluZ0Nhc2Uoc3RyLCBzdGFydCkgOiBub3RGb3VuZDsgfQot
ICAgIHNpemVfdCBmaW5kSWdub3JpbmdDYXNlKGNvbnN0IFN0cmluZyYgc3RyLCB1bnNpZ25lZCBz
dGFydCA9IDApIGNvbnN0CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCBmaW5kSWdub3Jp
bmdDYXNlKGNvbnN0IFN0cmluZyYgc3RyLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0CiAgICAg
ICAgIHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZmluZElnbm9yaW5nQ2FzZShzdHIuaW1wbCgp
LCBzdGFydCkgOiBub3RGb3VuZDsgfQogICAgIHNpemVfdCByZXZlcnNlRmluZElnbm9yaW5nQ2Fz
ZShjb25zdCBTdHJpbmcmIHN0ciwgdW5zaWduZWQgc3RhcnQgPSBVSU5UX01BWCkgY29uc3QKICAg
ICAgICAgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5yZXZlcnNlRmluZElnbm9yaW5nQ2FzZShz
dHIuaW1wbCgpLCBzdGFydCkgOiBub3RGb3VuZDsgfQpAQCAtMTc1LDkgKzE3Nyw5IEBACiAgICAg
c2l6ZV90IHJldmVyc2VGaW5kKGNvbnN0IFN0cmluZyYgc3RyLCB1bnNpZ25lZCBzdGFydCwgYm9v
bCBjYXNlU2Vuc2l0aXZlKSBjb25zdAogICAgICAgICB7IHJldHVybiBjYXNlU2Vuc2l0aXZlID8g
cmV2ZXJzZUZpbmQoc3RyLCBzdGFydCkgOiByZXZlcnNlRmluZElnbm9yaW5nQ2FzZShzdHIsIHN0
YXJ0KTsgfQogCi0gICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9u
KCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzV2l0aE51
bGxUZXJtaW5hdGlvbigpOwogICAgIAotICAgIFVDaGFyMzIgY2hhcmFjdGVyU3RhcnRpbmdBdCh1
bnNpZ25lZCkgY29uc3Q7IC8vIERpdHRvLgorICAgIFdURl9FWFBPUlRfUFJJVkFURSBVQ2hhcjMy
IGNoYXJhY3RlclN0YXJ0aW5nQXQodW5zaWduZWQpIGNvbnN0OyAvLyBEaXR0by4KICAgICAKICAg
ICBib29sIGNvbnRhaW5zKFVDaGFyIGMpIGNvbnN0IHsgcmV0dXJuIGZpbmQoYykgIT0gbm90Rm91
bmQ7IH0KICAgICBib29sIGNvbnRhaW5zKGNvbnN0IGNoYXIqIHN0ciwgYm9vbCBjYXNlU2Vuc2l0
aXZlID0gdHJ1ZSkgY29uc3QgeyByZXR1cm4gZmluZChzdHIsIDAsIGNhc2VTZW5zaXRpdmUpICE9
IG5vdEZvdW5kOyB9CkBAIC0xODgsMTEgKzE5MCwxMSBAQAogICAgIGJvb2wgZW5kc1dpdGgoY29u
c3QgU3RyaW5nJiBzLCBib29sIGNhc2VTZW5zaXRpdmUgPSB0cnVlKSBjb25zdAogICAgICAgICB7
IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmVuZHNXaXRoKHMuaW1wbCgpLCBjYXNlU2Vuc2l0aXZl
KSA6IHMuaXNFbXB0eSgpOyB9CiAKLSAgICB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmKTsKLSAg
ICB2b2lkIGFwcGVuZChjaGFyKTsKLSAgICB2b2lkIGFwcGVuZChVQ2hhcik7Ci0gICAgdm9pZCBh
cHBlbmQoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHZvaWQgaW5zZXJ0KGNv
bnN0IFN0cmluZyYsIHVuc2lnbmVkIHBvcyk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQg
YXBwZW5kKGNvbnN0IFN0cmluZyYpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGFwcGVu
ZChjaGFyKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmQoVUNoYXIpOworICAg
IFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGFwcGVuZChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxl
bmd0aCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgaW5zZXJ0KGNvbnN0IFN0cmluZyYs
IHVuc2lnbmVkIHBvcyk7CiAgICAgdm9pZCBpbnNlcnQoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBs
ZW5ndGgsIHVuc2lnbmVkIHBvcyk7CiAKICAgICBTdHJpbmcmIHJlcGxhY2UoVUNoYXIgYSwgVUNo
YXIgYikgeyBpZiAobV9pbXBsKSBtX2ltcGwgPSBtX2ltcGwtPnJlcGxhY2UoYSwgYik7IHJldHVy
biAqdGhpczsgfQpAQCAtMjA0LDMwICsyMDYsMzAgQEAKICAgICB2b2lkIG1ha2VVcHBlcigpIHsg
aWYgKG1faW1wbCkgbV9pbXBsID0gbV9pbXBsLT51cHBlcigpOyB9CiAgICAgdm9pZCBtYWtlU2Vj
dXJlKFVDaGFyIGFDaGFyKSB7IGlmIChtX2ltcGwpIG1faW1wbCA9IG1faW1wbC0+c2VjdXJlKGFD
aGFyKTsgfQogCi0gICAgdm9pZCB0cnVuY2F0ZSh1bnNpZ25lZCBsZW4pOwotICAgIHZvaWQgcmVt
b3ZlKHVuc2lnbmVkIHBvcywgaW50IGxlbiA9IDEpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2
b2lkIHRydW5jYXRlKHVuc2lnbmVkIGxlbik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQg
cmVtb3ZlKHVuc2lnbmVkIHBvcywgaW50IGxlbiA9IDEpOwogCi0gICAgU3RyaW5nIHN1YnN0cmlu
Zyh1bnNpZ25lZCBwb3MsIHVuc2lnbmVkIGxlbiA9IFVJTlRfTUFYKSBjb25zdDsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nIHN1YnN0cmluZyh1bnNpZ25lZCBwb3MsIHVuc2lnbmVkIGxl
biA9IFVJTlRfTUFYKSBjb25zdDsKICAgICBTdHJpbmcgc3Vic3RyaW5nU2hhcmluZ0ltcGwodW5z
aWduZWQgcG9zLCB1bnNpZ25lZCBsZW4gPSBVSU5UX01BWCkgY29uc3Q7CiAgICAgU3RyaW5nIGxl
ZnQodW5zaWduZWQgbGVuKSBjb25zdCB7IHJldHVybiBzdWJzdHJpbmcoMCwgbGVuKTsgfQogICAg
IFN0cmluZyByaWdodCh1bnNpZ25lZCBsZW4pIGNvbnN0IHsgcmV0dXJuIHN1YnN0cmluZyhsZW5n
dGgoKSAtIGxlbiwgbGVuKTsgfQogCiAgICAgLy8gUmV0dXJucyBhIGxvd2VyY2FzZS91cHBlcmNh
c2UgdmVyc2lvbiBvZiB0aGUgc3RyaW5nCi0gICAgU3RyaW5nIGxvd2VyKCkgY29uc3Q7Ci0gICAg
U3RyaW5nIHVwcGVyKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBsb3dl
cigpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgdXBwZXIoKSBjb25zdDsK
IAotICAgIFN0cmluZyBzdHJpcFdoaXRlU3BhY2UoKSBjb25zdDsKLSAgICBTdHJpbmcgc2ltcGxp
ZnlXaGl0ZVNwYWNlKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBzdHJp
cFdoaXRlU3BhY2UoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHNpbXBs
aWZ5V2hpdGVTcGFjZSgpIGNvbnN0OwogCi0gICAgU3RyaW5nIHJlbW92ZUNoYXJhY3RlcnMoQ2hh
cmFjdGVyTWF0Y2hGdW5jdGlvblB0cikgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0
cmluZyByZW1vdmVDaGFyYWN0ZXJzKENoYXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIpIGNvbnN0Owog
CiAgICAgLy8gUmV0dXJuIHRoZSBzdHJpbmcgd2l0aCBjYXNlIGZvbGRlZCBmb3IgY2FzZSBpbnNl
bnNpdGl2ZSBjb21wYXJpc29uLgotICAgIFN0cmluZyBmb2xkQ2FzZSgpIGNvbnN0OworICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgZm9sZENhc2UoKSBjb25zdDsKIAogI2lmICFQTEFURk9S
TShRVCkKLSAgICBzdGF0aWMgU3RyaW5nIGZvcm1hdChjb25zdCBjaGFyICosIC4uLikgV1RGX0FU
VFJJQlVURV9QUklOVEYoMSwgMik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJp
bmcgZm9ybWF0KGNvbnN0IGNoYXIgKiwgLi4uKSBXVEZfQVRUUklCVVRFX1BSSU5URigxLCAyKTsK
ICNlbHNlCi0gICAgc3RhdGljIFN0cmluZyBmb3JtYXQoY29uc3QgY2hhciAqLCAuLi4pOworICAg
IFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RyaW5nIGZvcm1hdChjb25zdCBjaGFyICosIC4u
Lik7CiAjZW5kaWYKIAogICAgIC8vIFJldHVybnMgYW4gdW5pbml0aWFsaXplZCBzdHJpbmcuIFRo
ZSBjaGFyYWN0ZXJzIG5lZWRzIHRvIGJlIHdyaXR0ZW4KQEAgLTIzNSwzNCArMjM3LDM0IEBACiAg
ICAgLy8gRmFpbHVyZSB0byBkbyB0aGlzIHdpbGwgaGF2ZSB1bnByZWRpY3RhYmxlIHJlc3VsdHMu
CiAgICAgc3RhdGljIFN0cmluZyBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCwg
VUNoYXIqJiBkYXRhKSB7IHJldHVybiBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxpemVkKGxl
bmd0aCwgZGF0YSk7IH0KIAotICAgIHZvaWQgc3BsaXQoY29uc3QgU3RyaW5nJiBzZXBhcmF0b3Is
IFZlY3RvcjxTdHJpbmc+JiByZXN1bHQpIGNvbnN0OwotICAgIHZvaWQgc3BsaXQoY29uc3QgU3Ry
aW5nJiBzZXBhcmF0b3IsIGJvb2wgYWxsb3dFbXB0eUVudHJpZXMsIFZlY3RvcjxTdHJpbmc+JiBy
ZXN1bHQpIGNvbnN0OwotICAgIHZvaWQgc3BsaXQoVUNoYXIgc2VwYXJhdG9yLCBWZWN0b3I8U3Ry
aW5nPiYgcmVzdWx0KSBjb25zdDsKLSAgICB2b2lkIHNwbGl0KFVDaGFyIHNlcGFyYXRvciwgYm9v
bCBhbGxvd0VtcHR5RW50cmllcywgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkgY29uc3Q7CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc3BsaXQoY29uc3QgU3RyaW5nJiBzZXBhcmF0b3IsIFZl
Y3RvcjxTdHJpbmc+JiByZXN1bHQpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lk
IHNwbGl0KGNvbnN0IFN0cmluZyYgc2VwYXJhdG9yLCBib29sIGFsbG93RW1wdHlFbnRyaWVzLCBW
ZWN0b3I8U3RyaW5nPiYgcmVzdWx0KSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBzcGxpdChVQ2hhciBzZXBhcmF0b3IsIFZlY3RvcjxTdHJpbmc+JiByZXN1bHQpIGNvbnN0Owor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNwbGl0KFVDaGFyIHNlcGFyYXRvciwgYm9vbCBh
bGxvd0VtcHR5RW50cmllcywgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkgY29uc3Q7CiAKLSAgICBp
bnQgdG9JbnRTdHJpY3QoYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKSBjb25zdDsKLSAgICB1
bnNpZ25lZCB0b1VJbnRTdHJpY3QoYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKSBjb25zdDsK
LSAgICBpbnQ2NF90IHRvSW50NjRTdHJpY3QoYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKSBj
b25zdDsKLSAgICB1aW50NjRfdCB0b1VJbnQ2NFN0cmljdChib29sKiBvayA9IDAsIGludCBiYXNl
ID0gMTApIGNvbnN0OwotICAgIGludHB0cl90IHRvSW50UHRyU3RyaWN0KGJvb2wqIG9rID0gMCwg
aW50IGJhc2UgPSAxMCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGludCB0b0ludFN0
cmljdChib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApIGNvbnN0OworICAgIFdURl9FWFBPUlRf
UFJJVkFURSB1bnNpZ25lZCB0b1VJbnRTdHJpY3QoYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEw
KSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgaW50NjRfdCB0b0ludDY0U3RyaWN0KGJv
b2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IHVpbnQ2NF90IHRvVUludDY0U3RyaWN0KGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCkgY29u
c3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGludHB0cl90IHRvSW50UHRyU3RyaWN0KGJvb2wq
IG9rID0gMCwgaW50IGJhc2UgPSAxMCkgY29uc3Q7CiAKLSAgICBpbnQgdG9JbnQoYm9vbCogb2sg
PSAwKSBjb25zdDsKLSAgICB1bnNpZ25lZCB0b1VJbnQoYm9vbCogb2sgPSAwKSBjb25zdDsKKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgaW50IHRvSW50KGJvb2wqIG9rID0gMCkgY29uc3Q7CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHVuc2lnbmVkIHRvVUludChib29sKiBvayA9IDApIGNvbnN0Owog
ICAgIGludDY0X3QgdG9JbnQ2NChib29sKiBvayA9IDApIGNvbnN0OwotICAgIHVpbnQ2NF90IHRv
VUludDY0KGJvb2wqIG9rID0gMCkgY29uc3Q7Ci0gICAgaW50cHRyX3QgdG9JbnRQdHIoYm9vbCog
b2sgPSAwKSBjb25zdDsKLSAgICBkb3VibGUgdG9Eb3VibGUoYm9vbCogb2sgPSAwKSBjb25zdDsK
LSAgICBmbG9hdCB0b0Zsb2F0KGJvb2wqIG9rID0gMCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHVpbnQ2NF90IHRvVUludDY0KGJvb2wqIG9rID0gMCkgY29uc3Q7CisgICAgV1RGX0VY
UE9SVF9QUklWQVRFIGludHB0cl90IHRvSW50UHRyKGJvb2wqIG9rID0gMCkgY29uc3Q7CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIGRvdWJsZSB0b0RvdWJsZShib29sKiBvayA9IDApIGNvbnN0Owor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBmbG9hdCB0b0Zsb2F0KGJvb2wqIG9rID0gMCkgY29uc3Q7
CiAKICAgICBib29sIHBlcmNlbnRhZ2UoaW50JiBwZXJjZW50YWdlKSBjb25zdDsKIAogICAgIC8v
IFJldHVybnMgYSBTdHJpbmdJbXBsIHN1aXRhYmxlIGZvciB1c2Ugb24gYW5vdGhlciB0aHJlYWQu
Ci0gICAgU3RyaW5nIGNyb3NzVGhyZWFkU3RyaW5nKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIFN0cmluZyBjcm9zc1RocmVhZFN0cmluZygpIGNvbnN0OwogICAgIC8vIE1ha2VzIGEg
ZGVlcCBjb3B5LiBIZWxwZnVsIG9ubHkgaWYgeW91IG5lZWQgdG8gdXNlIGEgU3RyaW5nIG9uIGFu
b3RoZXIgdGhyZWFkCiAgICAgLy8gKHVzZSBjcm9zc1RocmVhZFN0cmluZyBpZiB0aGUgbWV0aG9k
IGNhbGwgZG9lc24ndCBuZWVkIHRvIGJlIHRocmVhZHNhZmUpLgogICAgIC8vIFNpbmNlIHRoZSB1
bmRlcmx5aW5nIFN0cmluZ0ltcGwgb2JqZWN0cyBhcmUgaW1tdXRhYmxlLCB0aGVyZSdzIG5vIG90
aGVyIHJlYXNvbgogICAgIC8vIHRvIGV2ZXIgcHJlZmVyIGNvcHkoKSBvdmVyIHBsYWluIG9sZCBh
c3NpZ25tZW50LgotICAgIFN0cmluZyB0aHJlYWRzYWZlQ29weSgpIGNvbnN0OworICAgIFdURl9F
WFBPUlRfUFJJVkFURSBTdHJpbmcgdGhyZWFkc2FmZUNvcHkoKSBjb25zdDsKIAogI2lmIFBMQVRG
T1JNKENGKQogICAgIFN0cmluZyhDRlN0cmluZ1JlZik7CkBAIC0yODQsOCArMjg2LDggQEAKICNl
bmRpZgogCiAjaWYgUExBVEZPUk0oV1gpCi0gICAgU3RyaW5nKGNvbnN0IHd4U3RyaW5nJik7Ci0g
ICAgb3BlcmF0b3Igd3hTdHJpbmcoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3Ry
aW5nKGNvbnN0IHd4U3RyaW5nJik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIG9wZXJhdG9yIHd4
U3RyaW5nKCkgY29uc3Q7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKEhBSUtVKQpAQCAtMjkzLDEx
ICsyOTUsMTEgQEAKICAgICBvcGVyYXRvciBCU3RyaW5nKCkgY29uc3Q7CiAjZW5kaWYKIAotICAg
IHN0YXRpYyBTdHJpbmcgZnJvbVVURjgoY29uc3QgY2hhciosIHNpemVfdCk7Ci0gICAgc3RhdGlj
IFN0cmluZyBmcm9tVVRGOChjb25zdCBjaGFyKik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBTdHJpbmcgZnJvbVVURjgoY29uc3QgY2hhciosIHNpemVfdCk7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBTdHJpbmcgZnJvbVVURjgoY29uc3QgY2hhciopOwogCiAgICAgLy8g
VHJpZXMgdG8gY29udmVydCB0aGUgcGFzc2VkIGluIHN0cmluZyB0byBVVEYtOCwgYnV0IHdpbGwg
ZmFsbCBiYWNrIHRvIExhdGluLTEgaWYgdGhlIHN0cmluZyBpcyBub3QgdmFsaWQgVVRGLTguCi0g
ICAgc3RhdGljIFN0cmluZyBmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjayhjb25zdCBjaGFyKiwg
c2l6ZV90KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cmluZyBmcm9tVVRGOFdp
dGhMYXRpbjFGYWxsYmFjayhjb25zdCBjaGFyKiwgc2l6ZV90KTsKICAgICAKICAgICAvLyBEZXRl
cm1pbmVzIHRoZSB3cml0aW5nIGRpcmVjdGlvbiB1c2luZyB0aGUgVW5pY29kZSBCaWRpIEFsZ29y
aXRobSBydWxlcyBQMiBhbmQgUDMuCiAgICAgV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24gZGVmYXVs
dFdyaXRpbmdEaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmRlZmF1
bHRXcml0aW5nRGlyZWN0aW9uKCkgOiBXVEY6OlVuaWNvZGU6OkxlZnRUb1JpZ2h0OyB9CkBAIC0z
MDYsNyArMzA4LDcgQEAKIAogICAgIC8vIEhhc2ggdGFibGUgZGVsZXRlZCB2YWx1ZXMsIHdoaWNo
IGFyZSBvbmx5IGNvbnN0cnVjdGVkIGFuZCBuZXZlciBjb3BpZWQgb3IgZGVzdHJveWVkLgogICAg
IFN0cmluZyhXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpIDogbV9pbXBsKFdURjo6SGFz
aFRhYmxlRGVsZXRlZFZhbHVlKSB7IH0KLSAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVl
KCkgY29uc3QgeyByZXR1cm4gbV9pbXBsLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0
IHsgcmV0dXJuIG1faW1wbC5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9CiAKIHByaXZhdGU6
CiAgICAgUmVmUHRyPFN0cmluZ0ltcGw+IG1faW1wbDsKQEAgLTMxNyw5ICszMTksOSBAQAogUURh
dGFTdHJlYW0mIG9wZXJhdG9yPj4oUURhdGFTdHJlYW0mIHN0cmVhbSwgU3RyaW5nJiBzdHIpOwog
I2VuZGlmCiAKLVN0cmluZyBvcGVyYXRvcisoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7
Ci1TdHJpbmcgb3BlcmF0b3IrKGNvbnN0IFN0cmluZyYsIGNvbnN0IGNoYXIqKTsKLVN0cmluZyBv
cGVyYXRvcisoY29uc3QgY2hhciosIGNvbnN0IFN0cmluZyYpOworV1RGX0VYUE9SVF9QUklWQVRF
IFN0cmluZyBvcGVyYXRvcisoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7CitXVEZfRVhQ
T1JUX1BSSVZBVEUgU3RyaW5nIG9wZXJhdG9yKyhjb25zdCBTdHJpbmcmLCBjb25zdCBjaGFyKik7
CitXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIG9wZXJhdG9yKyhjb25zdCBjaGFyKiwgY29uc3Qg
U3RyaW5nJik7CiAKIGlubGluZSBTdHJpbmcmIG9wZXJhdG9yKz0oU3RyaW5nJiBhLCBjb25zdCBT
dHJpbmcmIGIpIHsgYS5hcHBlbmQoYik7IHJldHVybiBhOyB9CiAKQEAgLTM2Myw3ICszNjUsNyBA
QAogICAgIHJldHVybiAhKG9yZWQgJiAweEZGODApOwogfQogCi1pbnQgY29kZVBvaW50Q29tcGFy
ZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKK1dURl9FWFBPUlRfUFJJVkFURSBpbnQg
Y29kZVBvaW50Q29tcGFyZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKIAogaW5saW5l
IHNpemVfdCBmaW5kKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIFVD
aGFyIG1hdGNoQ2hhcmFjdGVyLCB1bnNpZ25lZCBpbmRleCA9IDApCiB7CkluZGV4OiBKYXZhU2Ny
aXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENv
cmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oCShyZXZpc2lvbiA2NjMzOSkKKysrIEphdmFTY3JpcHRD
b3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDExICsxMzks
MTEgQEAKICAgICB9CiAKIHB1YmxpYzoKLSAgICB+U3RyaW5nSW1wbCgpOworICAgIFdURl9FWFBP
UlRfUFJJVkFURSB+U3RyaW5nSW1wbCgpOwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5n
SW1wbD4gY3JlYXRlKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBjcmVhdGUoY29uc3QgY2hhciosIHVuc2lnbmVkIGxlbmd0
aCk7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gY3JlYXRlKGNvbnN0IGNoYXIq
KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4g
Y3JlYXRlKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gY3JlYXRlKGNvbnN0IGNoYXIqLCB1
bnNpZ25lZCBsZW5ndGgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0
cjxTdHJpbmdJbXBsPiBjcmVhdGUoY29uc3QgY2hhciopOwogICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFN0cmluZ0ltcGw+IGNyZWF0ZShjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCwgUGFzc1Jl
ZlB0cjxTaGFyZWRVQ2hhcj4gc2hhcmVkQnVmZmVyKTsKICAgICBzdGF0aWMgQUxXQVlTX0lOTElO
RSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGNyZWF0ZShQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJl
cCwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgewpAQCAtMTU3LDcgKzE1
Nyw3IEBACiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3RyaW5nSW1wbChyZXAtPm1fZGF0
YSArIG9mZnNldCwgbGVuZ3RoLCBvd25lclJlcCkpOwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFN0cmluZ0ltcGw+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoLCBV
Q2hhciomIGRhdGEpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxT
dHJpbmdJbXBsPiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCwgVUNoYXIqJiBk
YXRhKTsKICAgICBzdGF0aWMgQUxXQVlTX0lOTElORSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHRy
eUNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoLCBVQ2hhciomIG91dHB1dCkKICAg
ICB7CiAgICAgICAgIGlmICghbGVuZ3RoKSB7CkBAIC0xOTEsMTAgKzE5MSwxMCBAQAogICAgICAg
ICB9CiAgICAgICAgIHJldHVybiBlbXB0eSgpOwogICAgIH0KLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxTdHJpbmdJbXBsPiBhZG9wdChTdHJpbmdCdWZmZXImKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRvcHQoU3RyaW5nQnVmZmVyJik7CiAK
ICAgICBTaGFyZWRVQ2hhciogc2hhcmVkQnVmZmVyKCk7Ci0gICAgY29uc3QgVUNoYXIqIGNoYXJh
Y3RlcnMoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
Y29uc3QgVUNoYXIqIGNoYXJhY3RlcnMoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KIAogICAg
IHNpemVfdCBjb3N0KCkKICAgICB7CkBAIC0yNDAsNyArMjQwLDcgQEAKICAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgZGVyZWYoKSB7IG1fcmVmQ291bnRBbmRGbGFncyAtPSBzX3JlZkNvdW50SW5jcmVt
ZW50OyBpZiAoIShtX3JlZkNvdW50QW5kRmxhZ3MgJiAoc19yZWZDb3VudE1hc2sgfCBzX3JlZkNv
dW50RmxhZ1N0YXRpYykpKSBkZWxldGUgdGhpczsgfQogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBo
YXNPbmVSZWYoKSBjb25zdCB7IHJldHVybiAobV9yZWZDb3VudEFuZEZsYWdzICYgKHNfcmVmQ291
bnRNYXNrIHwgc19yZWZDb3VudEZsYWdTdGF0aWMpKSA9PSBzX3JlZkNvdW50SW5jcmVtZW50OyB9
CiAKLSAgICBzdGF0aWMgU3RyaW5nSW1wbCogZW1wdHkoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIFN0cmluZ0ltcGwqIGVtcHR5KCk7CiAKICAgICBzdGF0aWMgdm9pZCBjb3B5Q2hh
cnMoVUNoYXIqIGRlc3RpbmF0aW9uLCBjb25zdCBVQ2hhciogc291cmNlLCB1bnNpZ25lZCBudW1D
aGFyYWN0ZXJzKQogICAgIHsKQEAgLTI1OCwxMiArMjU4LDEyIEBACiAgICAgLy8gU2luY2UgU3Ry
aW5nSW1wbCBvYmplY3RzIGFyZSBpbW11dGFibGUsIHRoZXJlJ3Mgbm8gb3RoZXIgcmVhc29uIHRv
IG1ha2UgYSBjb3B5LgogICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gdGhyZWFkc2FmZUNvcHko
KSBjb25zdDsKIAotICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gc3Vic3RyaW5nKHVuc2lnbmVk
IHBvcywgdW5zaWduZWQgbGVuID0gVUlOVF9NQVgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBQ
YXNzUmVmUHRyPFN0cmluZ0ltcGw+IHN1YnN0cmluZyh1bnNpZ25lZCBwb3MsIHVuc2lnbmVkIGxl
biA9IFVJTlRfTUFYKTsKIAogICAgIFVDaGFyIG9wZXJhdG9yW10odW5zaWduZWQgaSkgeyBBU1NF
UlQoaSA8IG1fbGVuZ3RoKTsgcmV0dXJuIG1fZGF0YVtpXTsgfQogICAgIFVDaGFyMzIgY2hhcmFj
dGVyU3RhcnRpbmdBdCh1bnNpZ25lZCk7CiAKLSAgICBib29sIGNvbnRhaW5zT25seVdoaXRlc3Bh
Y2UoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjb250YWluc09ubHlXaGl0ZXNwYWNl
KCk7CiAKICAgICBpbnQgdG9JbnRTdHJpY3QoYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKTsK
ICAgICB1bnNpZ25lZCB0b1VJbnRTdHJpY3QoYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKTsK
QEAgLTI3MSw3ICsyNzEsNyBAQAogICAgIHVpbnQ2NF90IHRvVUludDY0U3RyaWN0KGJvb2wqIG9r
ID0gMCwgaW50IGJhc2UgPSAxMCk7CiAgICAgaW50cHRyX3QgdG9JbnRQdHJTdHJpY3QoYm9vbCog
b2sgPSAwLCBpbnQgYmFzZSA9IDEwKTsKIAotICAgIGludCB0b0ludChib29sKiBvayA9IDApOyAv
LyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgaW50IHRv
SW50KGJvb2wqIG9rID0gMCk7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQogICAgIHVuc2ln
bmVkIHRvVUludChib29sKiBvayA9IDApOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKICAg
ICBpbnQ2NF90IHRvSW50NjQoYm9vbCogb2sgPSAwKTsgLy8gaWdub3JlcyB0cmFpbGluZyBnYXJi
YWdlCiAgICAgdWludDY0X3QgdG9VSW50NjQoYm9vbCogb2sgPSAwKTsgLy8gaWdub3JlcyB0cmFp
bGluZyBnYXJiYWdlCkBAIC0yODAsMzYgKzI4MCwzNiBAQAogICAgIGRvdWJsZSB0b0RvdWJsZShi
b29sKiBvayA9IDApOwogICAgIGZsb2F0IHRvRmxvYXQoYm9vbCogb2sgPSAwKTsKIAotICAgIFBh
c3NSZWZQdHI8U3RyaW5nSW1wbD4gbG93ZXIoKTsKLSAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+
IHVwcGVyKCk7Ci0gICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBzZWN1cmUoVUNoYXIgYUNoYXIp
OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGxvd2VyKCk7
CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gdXBwZXIoKTsK
KyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBzZWN1cmUoVUNo
YXIgYUNoYXIpOwogICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gZm9sZENhc2UoKTsKIAogICAg
IFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gc3RyaXBXaGl0ZVNwYWNlKCk7Ci0gICAgUGFzc1JlZlB0
cjxTdHJpbmdJbXBsPiBzaW1wbGlmeVdoaXRlU3BhY2UoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBzaW1wbGlmeVdoaXRlU3BhY2UoKTsKIAogICAgIFBh
c3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVtb3ZlQ2hhcmFjdGVycyhDaGFyYWN0ZXJNYXRjaEZ1bmN0
aW9uUHRyKTsKIAotICAgIHNpemVfdCBmaW5kKFVDaGFyLCB1bnNpZ25lZCBpbmRleCA9IDApOwot
ICAgIHNpemVfdCBmaW5kKENoYXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIsIHVuc2lnbmVkIGluZGV4
ID0gMCk7Ci0gICAgc2l6ZV90IGZpbmQoY29uc3QgY2hhciosIHVuc2lnbmVkIGluZGV4ID0gMCk7
Ci0gICAgc2l6ZV90IGZpbmQoU3RyaW5nSW1wbCosIHVuc2lnbmVkIGluZGV4ID0gMCk7Ci0gICAg
c2l6ZV90IGZpbmRJZ25vcmluZ0Nhc2UoY29uc3QgY2hhciosIHVuc2lnbmVkIGluZGV4ID0gMCk7
Ci0gICAgc2l6ZV90IGZpbmRJZ25vcmluZ0Nhc2UoU3RyaW5nSW1wbCosIHVuc2lnbmVkIGluZGV4
ID0gMCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCBmaW5kKFVDaGFyLCB1bnNpZ25l
ZCBpbmRleCA9IDApOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgZmluZChDaGFyYWN0
ZXJNYXRjaEZ1bmN0aW9uUHRyLCB1bnNpZ25lZCBpbmRleCA9IDApOworICAgIFdURl9FWFBPUlRf
UFJJVkFURSBzaXplX3QgZmluZChjb25zdCBjaGFyKiwgdW5zaWduZWQgaW5kZXggPSAwKTsKKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZpbmQoU3RyaW5nSW1wbCosIHVuc2lnbmVkIGlu
ZGV4ID0gMCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCBmaW5kSWdub3JpbmdDYXNl
KGNvbnN0IGNoYXIqLCB1bnNpZ25lZCBpbmRleCA9IDApOworICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBzaXplX3QgZmluZElnbm9yaW5nQ2FzZShTdHJpbmdJbXBsKiwgdW5zaWduZWQgaW5kZXggPSAw
KTsKIAotICAgIHNpemVfdCByZXZlcnNlRmluZChVQ2hhciwgdW5zaWduZWQgaW5kZXggPSBVSU5U
X01BWCk7Ci0gICAgc2l6ZV90IHJldmVyc2VGaW5kKFN0cmluZ0ltcGwqLCB1bnNpZ25lZCBpbmRl
eCA9IFVJTlRfTUFYKTsKLSAgICBzaXplX3QgcmV2ZXJzZUZpbmRJZ25vcmluZ0Nhc2UoU3RyaW5n
SW1wbCosIHVuc2lnbmVkIGluZGV4ID0gVUlOVF9NQVgpOworICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBzaXplX3QgcmV2ZXJzZUZpbmQoVUNoYXIsIHVuc2lnbmVkIGluZGV4ID0gVUlOVF9NQVgpOwor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgcmV2ZXJzZUZpbmQoU3RyaW5nSW1wbCosIHVu
c2lnbmVkIGluZGV4ID0gVUlOVF9NQVgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3Qg
cmV2ZXJzZUZpbmRJZ25vcmluZ0Nhc2UoU3RyaW5nSW1wbCosIHVuc2lnbmVkIGluZGV4ID0gVUlO
VF9NQVgpOwogCiAgICAgYm9vbCBzdGFydHNXaXRoKFN0cmluZ0ltcGwqIHN0ciwgYm9vbCBjYXNl
U2Vuc2l0aXZlID0gdHJ1ZSkgeyByZXR1cm4gKGNhc2VTZW5zaXRpdmUgPyByZXZlcnNlRmluZChz
dHIsIDApIDogcmV2ZXJzZUZpbmRJZ25vcmluZ0Nhc2Uoc3RyLCAwKSkgPT0gMDsgfQotICAgIGJv
b2wgZW5kc1dpdGgoU3RyaW5nSW1wbCosIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IHRydWUpOworICAg
IFdURl9FWFBPUlRfUFJJVkFURSBib29sIGVuZHNXaXRoKFN0cmluZ0ltcGwqLCBib29sIGNhc2VT
ZW5zaXRpdmUgPSB0cnVlKTsKIAotICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwbGFjZShV
Q2hhciwgVUNoYXIpOwotICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwbGFjZShVQ2hhciwg
U3RyaW5nSW1wbCopOwotICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwbGFjZShTdHJpbmdJ
bXBsKiwgU3RyaW5nSW1wbCopOwotICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwbGFjZSh1
bnNpZ25lZCBpbmRleCwgdW5zaWduZWQgbGVuLCBTdHJpbmdJbXBsKik7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwbGFjZShVQ2hhciwgVUNoYXIpOwor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJlcGxhY2UoVUNo
YXIsIFN0cmluZ0ltcGwqKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgUGFzc1JlZlB0cjxTdHJp
bmdJbXBsPiByZXBsYWNlKFN0cmluZ0ltcGwqLCBTdHJpbmdJbXBsKik7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwbGFjZSh1bnNpZ25lZCBpbmRleCwg
dW5zaWduZWQgbGVuLCBTdHJpbmdJbXBsKik7CiAKLSAgICBXVEY6OlVuaWNvZGU6OkRpcmVjdGlv
biBkZWZhdWx0V3JpdGluZ0RpcmVjdGlvbigpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBXVEY6
OlVuaWNvZGU6OkRpcmVjdGlvbiBkZWZhdWx0V3JpdGluZ0RpcmVjdGlvbigpOwogCiAjaWYgUExB
VEZPUk0oQ0YpCiAgICAgQ0ZTdHJpbmdSZWYgY3JlYXRlQ0ZTdHJpbmcoKTsKQEAgLTMyMiw3ICsz
MjIsNyBAQAogICAgIC8vIFRoaXMgbnVtYmVyIG11c3QgYmUgYXQgbGVhc3QgMiB0byBhdm9pZCBz
aGFyaW5nIGVtcHR5LCBudWxsIGFzIHdlbGwgYXMgMSBjaGFyYWN0ZXIgc3RyaW5ncyBmcm9tIFNt
YWxsU3RyaW5ncy4KICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19jb3B5Q2hhcnNJbmxpbmVD
dXRPZmYgPSAyMDsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGNyZWF0ZVN0
cmlwcGluZ051bGxDaGFyYWN0ZXJzU2xvd0Nhc2UoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5n
dGgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBs
PiBjcmVhdGVTdHJpcHBpbmdOdWxsQ2hhcmFjdGVyc1Nsb3dDYXNlKGNvbnN0IFVDaGFyKiwgdW5z
aWduZWQgbGVuZ3RoKTsKICAgICAKICAgICBCdWZmZXJPd25lcnNoaXAgYnVmZmVyT3duZXJzaGlw
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QnVmZmVyT3duZXJzaGlwPihtX3JlZkNvdW50
QW5kRmxhZ3MgJiBzX3JlZkNvdW50TWFza0J1ZmZlck93bmVyc2hpcCk7IH0KICAgICBib29sIGlz
U3RhdGljKCkgY29uc3QgeyByZXR1cm4gbV9yZWZDb3VudEFuZEZsYWdzICYgc19yZWZDb3VudEZs
YWdTdGF0aWM7IH0KQEAgLTMzNSwxNyArMzM1LDE3IEBACiAgICAgbXV0YWJsZSB1bnNpZ25lZCBt
X2hhc2g7CiB9OwogCi1ib29sIGVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqLCBjb25zdCBTdHJpbmdJ
bXBsKik7Ci1ib29sIGVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqLCBjb25zdCBjaGFyKik7CitXVEZf
RVhQT1JUX1BSSVZBVEUgYm9vbCBlcXVhbChjb25zdCBTdHJpbmdJbXBsKiwgY29uc3QgU3RyaW5n
SW1wbCopOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZXF1YWwoY29uc3QgU3RyaW5nSW1wbCos
IGNvbnN0IGNoYXIqKTsKIGlubGluZSBib29sIGVxdWFsKGNvbnN0IGNoYXIqIGEsIFN0cmluZ0lt
cGwqIGIpIHsgcmV0dXJuIGVxdWFsKGIsIGEpOyB9CiAKLWJvb2wgZXF1YWxJZ25vcmluZ0Nhc2Uo
U3RyaW5nSW1wbCosIFN0cmluZ0ltcGwqKTsKLWJvb2wgZXF1YWxJZ25vcmluZ0Nhc2UoU3RyaW5n
SW1wbCosIGNvbnN0IGNoYXIqKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGVxdWFsSWdub3Jp
bmdDYXNlKFN0cmluZ0ltcGwqLCBTdHJpbmdJbXBsKik7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9v
bCBlcXVhbElnbm9yaW5nQ2FzZShTdHJpbmdJbXBsKiwgY29uc3QgY2hhciopOwogaW5saW5lIGJv
b2wgZXF1YWxJZ25vcmluZ0Nhc2UoY29uc3QgY2hhciogYSwgU3RyaW5nSW1wbCogYikgeyByZXR1
cm4gZXF1YWxJZ25vcmluZ0Nhc2UoYiwgYSk7IH0KLWJvb2wgZXF1YWxJZ25vcmluZ0Nhc2UoY29u
c3QgVUNoYXIqIGEsIGNvbnN0IGNoYXIqIGIsIHVuc2lnbmVkIGxlbmd0aCk7CitXVEZfRVhQT1JU
X1BSSVZBVEUgYm9vbCBlcXVhbElnbm9yaW5nQ2FzZShjb25zdCBVQ2hhciogYSwgY29uc3QgY2hh
ciogYiwgdW5zaWduZWQgbGVuZ3RoKTsKIGlubGluZSBib29sIGVxdWFsSWdub3JpbmdDYXNlKGNv
bnN0IGNoYXIqIGEsIGNvbnN0IFVDaGFyKiBiLCB1bnNpZ25lZCBsZW5ndGgpIHsgcmV0dXJuIGVx
dWFsSWdub3JpbmdDYXNlKGIsIGEsIGxlbmd0aCk7IH0KIAotYm9vbCBlcXVhbElnbm9yaW5nTnVs
bGl0eShTdHJpbmdJbXBsKiwgU3RyaW5nSW1wbCopOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wg
ZXF1YWxJZ25vcmluZ051bGxpdHkoU3RyaW5nSW1wbCosIFN0cmluZ0ltcGwqKTsKIAogaW50IGNv
ZGVQb2ludENvbXBhcmUoY29uc3QgU3RyaW5nSW1wbCosIGNvbnN0IFN0cmluZ0ltcGwqKTsKIApJ
bmRleDogSmF2YVNjcmlwdENvcmUvd3RmL0J5dGVBcnJheS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL3d0Zi9CeXRlQXJyYXkuaAkocmV2aXNpb24gNjYzMzkpCisrKyBKYXZhU2NyaXB0
Q29yZS93dGYvQnl0ZUFycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTc4LDcgKzc4LDcgQEAKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJ5dGVB
cnJheT4gY3JlYXRlKHNpemVfdCBzaXplKTsKKyAgICAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBQYXNzUmVmUHRyPEJ5dGVBcnJheT4gY3JlYXRlKHNpemVfdCBzaXplKTsKIAogICAgIHBy
aXZhdGU6CiAgICAgICAgIEJ5dGVBcnJheShzaXplX3Qgc2l6ZSkKSW5kZXg6IEphdmFTY3JpcHRD
b3JlL3d0Zi9UaHJlYWRpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvVGhy
ZWFkaW5nLmgJKHJldmlzaW9uIDY2MzM5KQorKysgSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGlu
Zy5oCSh3b3JraW5nIGNvcHkpCkBAIC04NCwyNyArODQsMjcgQEAKIC8vIFRoaXMgZnVuY3Rpb24g
bXVzdCBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQuIEl0IGlzIHNhZmUgdG8gY2FsbCBp
dCByZXBlYXRlZGx5LgogLy8gRGFyd2luIGlzIGFuIGV4Y2VwdGlvbiB0byB0aGlzIHJ1bGU6IGl0
IGlzIE9LIHRvIGNhbGwgaXQgZnJvbSBhbnkgdGhyZWFkLCB0aGUgb25seSAKIC8vIHJlcXVpcmVt
ZW50IGlzIHRoYXQgdGhlIGNhbGxzIGFyZSBub3QgcmVlbnRyYW50Lgotdm9pZCBpbml0aWFsaXpl
VGhyZWFkaW5nKCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5n
KCk7CiAKIC8vIFJldHVybnMgMCBpZiB0aHJlYWQgY3JlYXRpb24gZmFpbGVkLgogLy8gVGhlIHRo
cmVhZCBuYW1lIG11c3QgYmUgYSBsaXRlcmFsIHNpbmNlIG9uIHNvbWUgcGxhdGZvcm1zIGl0J3Mg
cGFzc2VkIGluIHRvIHRoZSB0aHJlYWQuCi1UaHJlYWRJZGVudGlmaWVyIGNyZWF0ZVRocmVhZChU
aHJlYWRGdW5jdGlvbiwgdm9pZCosIGNvbnN0IGNoYXIqIHRocmVhZE5hbWUpOworV1RGX0VYUE9S
VF9QUklWQVRFIFRocmVhZElkZW50aWZpZXIgY3JlYXRlVGhyZWFkKFRocmVhZEZ1bmN0aW9uLCB2
b2lkKiwgY29uc3QgY2hhciogdGhyZWFkTmFtZSk7CiAKIC8vIEludGVybmFsIHBsYXRmb3JtLXNw
ZWNpZmljIGNyZWF0ZVRocmVhZCBpbXBsZW1lbnRhdGlvbi4KLVRocmVhZElkZW50aWZpZXIgY3Jl
YXRlVGhyZWFkSW50ZXJuYWwoVGhyZWFkRnVuY3Rpb24sIHZvaWQqLCBjb25zdCBjaGFyKiB0aHJl
YWROYW1lKTsKK1dURl9FWFBPUlRfUFJJVkFURSBUaHJlYWRJZGVudGlmaWVyIGNyZWF0ZVRocmVh
ZEludGVybmFsKFRocmVhZEZ1bmN0aW9uLCB2b2lkKiwgY29uc3QgY2hhciogdGhyZWFkTmFtZSk7
CiAKIC8vIENhbGxlZCBpbiB0aGUgdGhyZWFkIGR1cmluZyBpbml0aWFsaXphdGlvbi4KIC8vIEhl
bHBmdWwgZm9yIHBsYXRmb3JtcyB3aGVyZSB0aGUgdGhyZWFkIG5hbWUgbXVzdCBiZSBzZXQgZnJv
bSB3aXRoaW4gdGhlIHRocmVhZC4KIHZvaWQgaW5pdGlhbGl6ZUN1cnJlbnRUaHJlYWRJbnRlcm5h
bChjb25zdCBjaGFyKiB0aHJlYWROYW1lKTsKIAotVGhyZWFkSWRlbnRpZmllciBjdXJyZW50VGhy
ZWFkKCk7Ci1pbnQgd2FpdEZvclRocmVhZENvbXBsZXRpb24oVGhyZWFkSWRlbnRpZmllciwgdm9p
ZCoqKTsKLXZvaWQgZGV0YWNoVGhyZWFkKFRocmVhZElkZW50aWZpZXIpOworV1RGX0VYUE9SVF9Q
UklWQVRFIFRocmVhZElkZW50aWZpZXIgY3VycmVudFRocmVhZCgpOworV1RGX0VYUE9SVF9QUklW
QVRFIGludCB3YWl0Rm9yVGhyZWFkQ29tcGxldGlvbihUaHJlYWRJZGVudGlmaWVyLCB2b2lkKiop
OworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZGV0YWNoVGhyZWFkKFRocmVhZElkZW50aWZpZXIp
OwogCi12b2lkIHlpZWxkKCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCB5aWVsZCgpOwogCi12
b2lkIGxvY2tBdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleCgpOwotdm9pZCB1bmxvY2tB
dG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleCgpOworV1RGX0VYUE9SVF9QUklWQVRFIHZv
aWQgbG9ja0F0b21pY2FsbHlJbml0aWFsaXplZFN0YXRpY011dGV4KCk7CitXVEZfRVhQT1JUX1BS
SVZBVEUgdm9pZCB1bmxvY2tBdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleCgpOwogCiB9
IC8vIG5hbWVzcGFjZSBXVEYKIApJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL01haW5UaHJlYWQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvTWFpblRocmVhZC5oCShyZXZpc2lv
biA2NjMzOSkKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9NYWluVGhyZWFkLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMwLDYgKzMwLDggQEAKICNpZm5kZWYgTWFpblRocmVhZF9oCiAjZGVmaW5lIE1haW5U
aHJlYWRfaAogCisjaW5jbHVkZSAiUGxhdGZvcm0uaCIKKwogI2luY2x1ZGUgPHN0ZGludC5oPgog
CiBuYW1lc3BhY2UgV1RGIHsKQEAgLTM4LDE1ICs0MCwxNSBAQAogdHlwZWRlZiB2b2lkIE1haW5U
aHJlYWRGdW5jdGlvbih2b2lkKik7CiAKIC8vIE11c3QgYmUgY2FsbGVkIGZyb20gdGhlIG1haW4g
dGhyZWFkLgotdm9pZCBpbml0aWFsaXplTWFpblRocmVhZCgpOworV1RGX0VYUE9SVF9QUklWQVRF
IHZvaWQgaW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKIAotdm9pZCBjYWxsT25NYWluVGhyZWFkKE1h
aW5UaHJlYWRGdW5jdGlvbiosIHZvaWQqIGNvbnRleHQpOworV1RGX0VYUE9SVF9QUklWQVRFIHZv
aWQgY2FsbE9uTWFpblRocmVhZChNYWluVGhyZWFkRnVuY3Rpb24qLCB2b2lkKiBjb250ZXh0KTsK
IHZvaWQgY2FsbE9uTWFpblRocmVhZEFuZFdhaXQoTWFpblRocmVhZEZ1bmN0aW9uKiwgdm9pZCog
Y29udGV4dCk7CiB2b2lkIGNhbmNlbENhbGxPbk1haW5UaHJlYWQoTWFpblRocmVhZEZ1bmN0aW9u
Kiwgdm9pZCogY29udGV4dCk7CiAKLXZvaWQgc2V0TWFpblRocmVhZENhbGxiYWNrc1BhdXNlZChi
b29sIHBhdXNlZCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRNYWluVGhyZWFkQ2FsbGJh
Y2tzUGF1c2VkKGJvb2wgcGF1c2VkKTsKIAotYm9vbCBpc01haW5UaHJlYWQoKTsKK1dURl9FWFBP
UlRfUFJJVkFURSBib29sIGlzTWFpblRocmVhZCgpOwogCiAvLyBOT1RFOiB0aGVzZSBmdW5jdGlv
bnMgYXJlIGludGVybmFsIHRvIHRoZSBjYWxsT25NYWluVGhyZWFkIGltcGxlbWVudGF0aW9uLgog
dm9pZCBpbml0aWFsaXplTWFpblRocmVhZFBsYXRmb3JtKCk7CkluZGV4OiBKYXZhU2NyaXB0Q29y
ZS93dGYvRmFzdE1hbGxvYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9GYXN0
TWFsbG9jLmgJKHJldmlzaW9uIDY2MzM5KQorKysgSmF2YVNjcmlwdENvcmUvd3RmL0Zhc3RNYWxs
b2MuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsMTUzICsyOCwxNTggQEAKIAogbmFtZXNwYWNlIFdU
RiB7CiAKLSAgICAvLyBUaGVzZSBmdW5jdGlvbnMgY2FsbCBDUkFTSCgpIGlmIGFuIGFsbG9jYXRp
b24gZmFpbHMuCi0gICAgdm9pZCogZmFzdE1hbGxvYyhzaXplX3QpOwotICAgIHZvaWQqIGZhc3Ra
ZXJvZWRNYWxsb2Moc2l6ZV90KTsKLSAgICB2b2lkKiBmYXN0Q2FsbG9jKHNpemVfdCBudW1FbGVt
ZW50cywgc2l6ZV90IGVsZW1lbnRTaXplKTsKLSAgICB2b2lkKiBmYXN0UmVhbGxvYyh2b2lkKiwg
c2l6ZV90KTsKLSAgICBjaGFyKiBmYXN0U3RyRHVwKGNvbnN0IGNoYXIqKTsKLSAgICBzaXplX3Qg
ZmFzdE1hbGxvY1NpemUoY29uc3Qgdm9pZCopOworLy8gVGhlc2UgZnVuY3Rpb25zIGNhbGwgQ1JB
U0goKSBpZiBhbiBhbGxvY2F0aW9uIGZhaWxzLgorV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQqIGZh
c3RNYWxsb2Moc2l6ZV90KTsKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkKiBmYXN0WmVyb2VkTWFs
bG9jKHNpemVfdCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCogZmFzdENhbGxvYyhzaXplX3Qg
bnVtRWxlbWVudHMsIHNpemVfdCBlbGVtZW50U2l6ZSk7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9p
ZCogZmFzdFJlYWxsb2Modm9pZCosIHNpemVfdCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgY2hhciog
ZmFzdFN0ckR1cChjb25zdCBjaGFyKik7CitXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZhc3RN
YWxsb2NTaXplKGNvbnN0IHZvaWQqKTsKIAotICAgIHN0cnVjdCBUcnlNYWxsb2NSZXR1cm5WYWx1
ZSB7Ci0gICAgICAgIFRyeU1hbGxvY1JldHVyblZhbHVlKHZvaWQqIGRhdGEpCi0gICAgICAgICAg
ICA6IG1fZGF0YShkYXRhKQotICAgICAgICB7Ci0gICAgICAgIH0KLSAgICAgICAgVHJ5TWFsbG9j
UmV0dXJuVmFsdWUoY29uc3QgVHJ5TWFsbG9jUmV0dXJuVmFsdWUmIHNvdXJjZSkKLSAgICAgICAg
ICAgIDogbV9kYXRhKHNvdXJjZS5tX2RhdGEpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHNvdXJj
ZS5tX2RhdGEgPSAwOwotICAgICAgICB9Ci0gICAgICAgIH5UcnlNYWxsb2NSZXR1cm5WYWx1ZSgp
IHsgQVNTRVJUKCFtX2RhdGEpOyB9Ci0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBib29s
IGdldFZhbHVlKFQmIGRhdGEpIFdBUk5fVU5VU0VEX1JFVFVSTjsKLSAgICAgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+IG9wZXJhdG9yIFBvc3NpYmx5TnVsbDxUPigpCi0gICAgICAgIHsgCi0gICAg
ICAgICAgICBUIHZhbHVlOyAKLSAgICAgICAgICAgIGdldFZhbHVlKHZhbHVlKTsgCi0gICAgICAg
ICAgICByZXR1cm4gUG9zc2libHlOdWxsPFQ+KHZhbHVlKTsKLSAgICAgICAgfSAKLSAgICBwcml2
YXRlOgotICAgICAgICBtdXRhYmxlIHZvaWQqIG1fZGF0YTsKLSAgICB9OwotICAgIAotICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPiBib29sIFRyeU1hbGxvY1JldHVyblZhbHVlOjpnZXRWYWx1ZShU
JiBkYXRhKQorc3RydWN0IFRyeU1hbGxvY1JldHVyblZhbHVlIHsKKyAgICBUcnlNYWxsb2NSZXR1
cm5WYWx1ZSh2b2lkKiBkYXRhKQorICAgICAgICA6IG1fZGF0YShkYXRhKQogICAgIHsKLSAgICAg
ICAgdW5pb24gdSB7IHZvaWQqIGRhdGE7IFQgdGFyZ2V0OyB9IHJlczsKLSAgICAgICAgcmVzLmRh
dGEgPSBtX2RhdGE7Ci0gICAgICAgIGRhdGEgPSByZXMudGFyZ2V0OwotICAgICAgICBib29sIHJl
dHVyblZhbHVlID0gISFtX2RhdGE7Ci0gICAgICAgIG1fZGF0YSA9IDA7Ci0gICAgICAgIHJldHVy
biByZXR1cm5WYWx1ZTsKICAgICB9CisgICAgVHJ5TWFsbG9jUmV0dXJuVmFsdWUoY29uc3QgVHJ5
TWFsbG9jUmV0dXJuVmFsdWUmIHNvdXJjZSkKKyAgICAgICAgOiBtX2RhdGEoc291cmNlLm1fZGF0
YSkKKyAgICB7CisgICAgICAgIHNvdXJjZS5tX2RhdGEgPSAwOworICAgIH0KKyAgICB+VHJ5TWFs
bG9jUmV0dXJuVmFsdWUoKSB7IEFTU0VSVCghbV9kYXRhKTsgfQorICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPiBib29sIGdldFZhbHVlKFQmIGRhdGEpIFdBUk5fVU5VU0VEX1JFVFVSTjsKKyAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gb3BlcmF0b3IgUG9zc2libHlOdWxsPFQ+KCkKKyAgICB7IAor
ICAgICAgICBUIHZhbHVlOyAKKyAgICAgICAgZ2V0VmFsdWUodmFsdWUpOyAKKyAgICAgICAgcmV0
dXJuIFBvc3NpYmx5TnVsbDxUPih2YWx1ZSk7CisgICAgfSAKK3ByaXZhdGU6CisgICAgbXV0YWJs
ZSB2b2lkKiBtX2RhdGE7Cit9OwogCi0gICAgVHJ5TWFsbG9jUmV0dXJuVmFsdWUgdHJ5RmFzdE1h
bGxvYyhzaXplX3Qgbik7Ci0gICAgVHJ5TWFsbG9jUmV0dXJuVmFsdWUgdHJ5RmFzdFplcm9lZE1h
bGxvYyhzaXplX3Qgbik7Ci0gICAgVHJ5TWFsbG9jUmV0dXJuVmFsdWUgdHJ5RmFzdENhbGxvYyhz
aXplX3Qgbl9lbGVtZW50cywgc2l6ZV90IGVsZW1lbnRfc2l6ZSk7Ci0gICAgVHJ5TWFsbG9jUmV0
dXJuVmFsdWUgdHJ5RmFzdFJlYWxsb2Modm9pZCogcCwgc2l6ZV90IG4pOwordGVtcGxhdGUgPHR5
cGVuYW1lIFQ+IGJvb2wgVHJ5TWFsbG9jUmV0dXJuVmFsdWU6OmdldFZhbHVlKFQmIGRhdGEpCit7
CisgICAgdW5pb24gdSB7IAorICAgICAgICB2b2lkKiBkYXRhOyAKKyAgICAgICAgVCB0YXJnZXQ7
IAorICAgIH0gcmVzOworICAgIHJlcy5kYXRhID0gbV9kYXRhOworICAgIGRhdGEgPSByZXMudGFy
Z2V0OworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSAhIW1fZGF0YTsKKyAgICBtX2RhdGEgPSAwOwor
ICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KIAotICAgIHZvaWQgZmFzdEZyZWUodm9pZCopOwor
V1RGX0VYUE9SVF9QUklWQVRFIFRyeU1hbGxvY1JldHVyblZhbHVlIHRyeUZhc3RNYWxsb2Moc2l6
ZV90IG4pOworV1RGX0VYUE9SVF9QUklWQVRFIFRyeU1hbGxvY1JldHVyblZhbHVlIHRyeUZhc3Ra
ZXJvZWRNYWxsb2Moc2l6ZV90IG4pOworV1RGX0VYUE9SVF9QUklWQVRFIFRyeU1hbGxvY1JldHVy
blZhbHVlIHRyeUZhc3RDYWxsb2Moc2l6ZV90IG5fZWxlbWVudHMsIHNpemVfdCBlbGVtZW50X3Np
emUpOworV1RGX0VYUE9SVF9QUklWQVRFIFRyeU1hbGxvY1JldHVyblZhbHVlIHRyeUZhc3RSZWFs
bG9jKHZvaWQqIHAsIHNpemVfdCBuKTsKIAorV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZmFzdEZy
ZWUodm9pZCopOworCiAjaWZuZGVmIE5ERUJVRyAgICAKLSAgICB2b2lkIGZhc3RNYWxsb2NGb3Ji
aWQoKTsKLSAgICB2b2lkIGZhc3RNYWxsb2NBbGxvdygpOwordm9pZCBmYXN0TWFsbG9jRm9yYmlk
KCk7Cit2b2lkIGZhc3RNYWxsb2NBbGxvdygpOwogI2VuZGlmCiAKLSAgICB2b2lkIHJlbGVhc2VG
YXN0TWFsbG9jRnJlZU1lbW9yeSgpOwotICAgIAotICAgIHN0cnVjdCBGYXN0TWFsbG9jU3RhdGlz
dGljcyB7Ci0gICAgICAgIHNpemVfdCByZXNlcnZlZFZNQnl0ZXM7Ci0gICAgICAgIHNpemVfdCBj
b21taXR0ZWRWTUJ5dGVzOwotICAgICAgICBzaXplX3QgZnJlZUxpc3RCeXRlczsKLSAgICB9Owot
ICAgIEZhc3RNYWxsb2NTdGF0aXN0aWNzIGZhc3RNYWxsb2NTdGF0aXN0aWNzKCk7Cit2b2lkIHJl
bGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9yeSgpOwogCi0gICAgLy8gVGhpcyBkZWZpbmVzIGEgdHlw
ZSB3aGljaCBob2xkcyBhbiB1bnNpZ25lZCBpbnRlZ2VyIGFuZCBpcyB0aGUgc2FtZQotICAgIC8v
IHNpemUgYXMgdGhlIG1pbmltYWxseSBhbGlnbmVkIG1lbW9yeSBhbGxvY2F0aW9uLgotICAgIHR5
cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIEFsbG9jQWxpZ25tZW50SW50ZWdlcjsKK3N0cnVjdCBG
YXN0TWFsbG9jU3RhdGlzdGljcyB7CisgICAgc2l6ZV90IHJlc2VydmVkVk1CeXRlczsKKyAgICBz
aXplX3QgY29tbWl0dGVkVk1CeXRlczsKKyAgICBzaXplX3QgZnJlZUxpc3RCeXRlczsKK307CitG
YXN0TWFsbG9jU3RhdGlzdGljcyBmYXN0TWFsbG9jU3RhdGlzdGljcygpOwogCi0gICAgbmFtZXNw
YWNlIEludGVybmFsIHsKLSAgICAgICAgZW51bSBBbGxvY1R5cGUgeyAgICAgICAgICAgICAgICAg
ICAgLy8gU3RhcnQgd2l0aCBhbiB1bnVzdWFsIG51bWJlciBpbnN0ZWFkIG9mIHplcm8sIGJlY2F1
c2UgemVybyBpcyBjb21tb24uCi0gICAgICAgICAgICBBbGxvY1R5cGVNYWxsb2MgPSAweDM3NWQ2
NzUwLCAgIC8vIEVuY29tcGFzc2VzIGZhc3RNYWxsb2MsIGZhc3RaZXJvZWRNYWxsb2MsIGZhc3RD
YWxsb2MsIGZhc3RSZWFsbG9jLgotICAgICAgICAgICAgQWxsb2NUeXBlQ2xhc3NOZXcsICAgICAg
ICAgICAgICAvLyBFbmNvbXBhc3NlcyBjbGFzcyBvcGVyYXRvciBuZXcgZnJvbSBGYXN0QWxsb2NC
YXNlLgotICAgICAgICAgICAgQWxsb2NUeXBlQ2xhc3NOZXdBcnJheSwgICAgICAgICAvLyBFbmNv
bXBhc3NlcyBjbGFzcyBvcGVyYXRvciBuZXdbXSBmcm9tIEZhc3RBbGxvY0Jhc2UuCi0gICAgICAg
ICAgICBBbGxvY1R5cGVGYXN0TmV3LCAgICAgICAgICAgICAgIC8vIEVuY29tcGFzc2VzIGZhc3RO
ZXcuCi0gICAgICAgICAgICBBbGxvY1R5cGVGYXN0TmV3QXJyYXksICAgICAgICAgIC8vIEVuY29t
cGFzc2VzIGZhc3ROZXdBcnJheS4KLSAgICAgICAgICAgIEFsbG9jVHlwZU5ldywgICAgICAgICAg
ICAgICAgICAgLy8gRW5jb21wYXNzZXMgZ2xvYmFsIG9wZXJhdG9yIG5ldy4KLSAgICAgICAgICAg
IEFsbG9jVHlwZU5ld0FycmF5ICAgICAgICAgICAgICAgLy8gRW5jb21wYXNzZXMgZ2xvYmFsIG9w
ZXJhdG9yIG5ld1tdLgotICAgICAgICB9OwotICAgIH0KKy8vIFRoaXMgZGVmaW5lcyBhIHR5cGUg
d2hpY2ggaG9sZHMgYW4gdW5zaWduZWQgaW50ZWdlciBhbmQgaXMgdGhlIHNhbWUKKy8vIHNpemUg
YXMgdGhlIG1pbmltYWxseSBhbGlnbmVkIG1lbW9yeSBhbGxvY2F0aW9uLgordHlwZWRlZiB1bnNp
Z25lZCBsb25nIGxvbmcgQWxsb2NBbGlnbm1lbnRJbnRlZ2VyOwogCituYW1lc3BhY2UgSW50ZXJu
YWwgeworCitlbnVtIEFsbG9jVHlwZSB7ICAgICAgICAgICAgICAgICAgICAvLyBTdGFydCB3aXRo
IGFuIHVudXN1YWwgbnVtYmVyIGluc3RlYWQgb2YgemVybywgYmVjYXVzZSB6ZXJvIGlzIGNvbW1v
bi4KKyAgICBBbGxvY1R5cGVNYWxsb2MgPSAweDM3NWQ2NzUwLCAgIC8vIEVuY29tcGFzc2VzIGZh
c3RNYWxsb2MsIGZhc3RaZXJvZWRNYWxsb2MsIGZhc3RDYWxsb2MsIGZhc3RSZWFsbG9jLgorICAg
IEFsbG9jVHlwZUNsYXNzTmV3LCAgICAgICAgICAgICAgLy8gRW5jb21wYXNzZXMgY2xhc3Mgb3Bl
cmF0b3IgbmV3IGZyb20gRmFzdEFsbG9jQmFzZS4KKyAgICBBbGxvY1R5cGVDbGFzc05ld0FycmF5
LCAgICAgICAgIC8vIEVuY29tcGFzc2VzIGNsYXNzIG9wZXJhdG9yIG5ld1tdIGZyb20gRmFzdEFs
bG9jQmFzZS4KKyAgICBBbGxvY1R5cGVGYXN0TmV3LCAgICAgICAgICAgICAgIC8vIEVuY29tcGFz
c2VzIGZhc3ROZXcuCisgICAgQWxsb2NUeXBlRmFzdE5ld0FycmF5LCAgICAgICAgICAvLyBFbmNv
bXBhc3NlcyBmYXN0TmV3QXJyYXkuCisgICAgQWxsb2NUeXBlTmV3LCAgICAgICAgICAgICAgICAg
ICAvLyBFbmNvbXBhc3NlcyBnbG9iYWwgb3BlcmF0b3IgbmV3LgorICAgIEFsbG9jVHlwZU5ld0Fy
cmF5ICAgICAgICAgICAgICAgLy8gRW5jb21wYXNzZXMgZ2xvYmFsIG9wZXJhdG9yIG5ld1tdLgor
fTsKKworfQorCiAjaWYgRU5BQkxFKEZBU1RfTUFMTE9DX01BVENIX1ZBTElEQVRJT04pCiAKLSAg
ICAvLyBNYWxsb2MgdmFsaWRhdGlvbiBpcyBhIHNjaGVtZSB3aGVyZWJ5IGEgdGFnIGlzIGF0dGFj
aGVkIHRvIGFuCi0gICAgLy8gYWxsb2NhdGlvbiB3aGljaCBpZGVudGlmaWVzIGhvdyBpdCB3YXMg
b3JpZ2luYWxseSBhbGxvY2F0ZWQuCi0gICAgLy8gVGhpcyBhbGxvd3MgdXMgdG8gdmVyaWZ5IHRo
YXQgdGhlIGZyZWVpbmcgb3BlcmF0aW9uIG1hdGNoZXMgdGhlCi0gICAgLy8gYWxsb2NhdGlvbiBv
cGVyYXRpb24uIElmIG1lbW9yeSBpcyBhbGxvY2F0ZWQgd2l0aCBvcGVyYXRvciBuZXdbXQotICAg
IC8vIGJ1dCBmcmVlZCB3aXRoIGZyZWUgb3IgZGVsZXRlLCB0aGlzIHN5c3RlbSB3b3VsZCBkZXRl
Y3QgdGhhdC4KLSAgICAvLyBJbiB0aGUgaW1wbGVtZW50YXRpb24gaGVyZSwgdGhlIHRhZyBpcyBh
biBpbnRlZ2VyIHByZXBlbmRlZCB0bwotICAgIC8vIHRoZSBhbGxvY2F0aW9uIG1lbW9yeSB3aGlj
aCBpcyBhc3NpZ25lZCBvbmUgb2YgdGhlIEFsbG9jVHlwZQotICAgIC8vIGVudW1lcmF0aW9uIHZh
bHVlcy4gQW4gYWx0ZXJuYXRpdmUgaW1wbGVtZW50YXRpb24gb2YgdGhpcwotICAgIC8vIHNjaGVt
ZSBjb3VsZCBzdG9yZSB0aGUgdGFnIHNvbWV3aGVyZSBlbHNlIG9yIGlnbm9yZSBpdC4KLSAgICAv
LyBVc2VycyBvZiBGYXN0TWFsbG9jIGRvbid0IG5lZWQgdG8ga25vdyBvciBjYXJlIGhvdyB0aGlz
IHRhZ2dpbmcKLSAgICAvLyBpcyBpbXBsZW1lbnRlZC4KKy8vIE1hbGxvYyB2YWxpZGF0aW9uIGlz
IGEgc2NoZW1lIHdoZXJlYnkgYSB0YWcgaXMgYXR0YWNoZWQgdG8gYW4KKy8vIGFsbG9jYXRpb24g
d2hpY2ggaWRlbnRpZmllcyBob3cgaXQgd2FzIG9yaWdpbmFsbHkgYWxsb2NhdGVkLgorLy8gVGhp
cyBhbGxvd3MgdXMgdG8gdmVyaWZ5IHRoYXQgdGhlIGZyZWVpbmcgb3BlcmF0aW9uIG1hdGNoZXMg
dGhlCisvLyBhbGxvY2F0aW9uIG9wZXJhdGlvbi4gSWYgbWVtb3J5IGlzIGFsbG9jYXRlZCB3aXRo
IG9wZXJhdG9yIG5ld1tdCisvLyBidXQgZnJlZWQgd2l0aCBmcmVlIG9yIGRlbGV0ZSwgdGhpcyBz
eXN0ZW0gd291bGQgZGV0ZWN0IHRoYXQuCisvLyBJbiB0aGUgaW1wbGVtZW50YXRpb24gaGVyZSwg
dGhlIHRhZyBpcyBhbiBpbnRlZ2VyIHByZXBlbmRlZCB0bworLy8gdGhlIGFsbG9jYXRpb24gbWVt
b3J5IHdoaWNoIGlzIGFzc2lnbmVkIG9uZSBvZiB0aGUgQWxsb2NUeXBlCisvLyBlbnVtZXJhdGlv
biB2YWx1ZXMuIEFuIGFsdGVybmF0aXZlIGltcGxlbWVudGF0aW9uIG9mIHRoaXMKKy8vIHNjaGVt
ZSBjb3VsZCBzdG9yZSB0aGUgdGFnIHNvbWV3aGVyZSBlbHNlIG9yIGlnbm9yZSBpdC4KKy8vIFVz
ZXJzIG9mIEZhc3RNYWxsb2MgZG9uJ3QgbmVlZCB0byBrbm93IG9yIGNhcmUgaG93IHRoaXMgdGFn
Z2luZworLy8gaXMgaW1wbGVtZW50ZWQuCiAKLSAgICBuYW1lc3BhY2UgSW50ZXJuYWwgeworbmFt
ZXNwYWNlIEludGVybmFsIHsKIAotICAgICAgICAvLyBSZXR1cm4gdGhlIEFsbG9jVHlwZSB0YWcg
YXNzb2NpYXRlZCB3aXRoIHRoZSBhbGxvY2F0ZWQgYmxvY2sgcC4KLSAgICAgICAgaW5saW5lIEFs
bG9jVHlwZSBmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0aW9uVHlwZShjb25zdCB2b2lkKiBwKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBjb25zdCBBbGxvY0FsaWdubWVudEludGVnZXIqIHR5cGUgPSBz
dGF0aWNfY2FzdDxjb25zdCBBbGxvY0FsaWdubWVudEludGVnZXIqPihwKSAtIDE7Ci0gICAgICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QWxsb2NUeXBlPigqdHlwZSk7Ci0gICAgICAgIH0KKy8v
IFJldHVybiB0aGUgQWxsb2NUeXBlIHRhZyBhc3NvY2lhdGVkIHdpdGggdGhlIGFsbG9jYXRlZCBi
bG9jayBwLgoraW5saW5lIEFsbG9jVHlwZSBmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0aW9uVHlwZShj
b25zdCB2b2lkKiBwKQoreworICAgIGNvbnN0IEFsbG9jQWxpZ25tZW50SW50ZWdlciogdHlwZSA9
IHN0YXRpY19jYXN0PGNvbnN0IEFsbG9jQWxpZ25tZW50SW50ZWdlcio+KHApIC0gMTsKKyAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8QWxsb2NUeXBlPigqdHlwZSk7Cit9CiAKLSAgICAgICAgLy8gUmV0
dXJuIHRoZSBhZGRyZXNzIG9mIHRoZSBBbGxvY1R5cGUgdGFnIGFzc29jaWF0ZWQgd2l0aCB0aGUg
YWxsb2NhdGVkIGJsb2NrIHAuCi0gICAgICAgIGlubGluZSBBbGxvY0FsaWdubWVudEludGVnZXIq
IGZhc3RNYWxsb2NNYXRjaFZhbGlkYXRpb25WYWx1ZSh2b2lkKiBwKQotICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxBbGxvY0FsaWdubWVudEludGVnZXIqPihz
dGF0aWNfY2FzdDxjaGFyKj4ocCkgLSBzaXplb2YoQWxsb2NBbGlnbm1lbnRJbnRlZ2VyKSk7Ci0g
ICAgICAgIH0KKy8vIFJldHVybiB0aGUgYWRkcmVzcyBvZiB0aGUgQWxsb2NUeXBlIHRhZyBhc3Nv
Y2lhdGVkIHdpdGggdGhlIGFsbG9jYXRlZCBibG9jayBwLgoraW5saW5lIEFsbG9jQWxpZ25tZW50
SW50ZWdlciogZmFzdE1hbGxvY01hdGNoVmFsaWRhdGlvblZhbHVlKHZvaWQqIHApCit7CisgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8QWxsb2NBbGlnbm1lbnRJbnRlZ2VyKj4oc3RhdGljX2Nh
c3Q8Y2hhcio+KHApIC0gc2l6ZW9mKEFsbG9jQWxpZ25tZW50SW50ZWdlcikpOworfQogCi0gICAg
ICAgIC8vIFNldCB0aGUgQWxsb2NUeXBlIHRhZyB0byBiZSBhc3NvY2lhZ2VkIHdpdGggdGhlIGFs
bG9jYXRlZCBibG9jayBwLgotICAgICAgICBpbmxpbmUgdm9pZCBzZXRGYXN0TWFsbG9jTWF0Y2hW
YWxpZGF0aW9uVHlwZSh2b2lkKiBwLCBBbGxvY1R5cGUgYWxsb2NUeXBlKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBBbGxvY0FsaWdubWVudEludGVnZXIqIHR5cGUgPSBzdGF0aWNfY2FzdDxBbGxv
Y0FsaWdubWVudEludGVnZXIqPihwKSAtIDE7Ci0gICAgICAgICAgICAqdHlwZSA9IHN0YXRpY19j
YXN0PEFsbG9jQWxpZ25tZW50SW50ZWdlcj4oYWxsb2NUeXBlKTsKLSAgICAgICAgfQorLy8gU2V0
IHRoZSBBbGxvY1R5cGUgdGFnIHRvIGJlIGFzc29jaWFnZWQgd2l0aCB0aGUgYWxsb2NhdGVkIGJs
b2NrIHAuCitpbmxpbmUgdm9pZCBzZXRGYXN0TWFsbG9jTWF0Y2hWYWxpZGF0aW9uVHlwZSh2b2lk
KiBwLCBBbGxvY1R5cGUgYWxsb2NUeXBlKQoreworICAgIEFsbG9jQWxpZ25tZW50SW50ZWdlciog
dHlwZSA9IHN0YXRpY19jYXN0PEFsbG9jQWxpZ25tZW50SW50ZWdlcio+KHApIC0gMTsKKyAgICAq
dHlwZSA9IHN0YXRpY19jYXN0PEFsbG9jQWxpZ25tZW50SW50ZWdlcj4oYWxsb2NUeXBlKTsKK30K
IAotICAgICAgICAvLyBIYW5kbGUgYSBkZXRlY3RlZCBhbGxvYy9mcmVlIG1pc21hdGNoLiBCeSBk
ZWZhdWx0IHRoaXMgY2FsbHMgQ1JBU0goKS4KLSAgICAgICAgdm9pZCBmYXN0TWFsbG9jTWF0Y2hG
YWlsZWQodm9pZCogcCk7CisvLyBIYW5kbGUgYSBkZXRlY3RlZCBhbGxvYy9mcmVlIG1pc21hdGNo
LiBCeSBkZWZhdWx0IHRoaXMgY2FsbHMgQ1JBU0goKS4KK3ZvaWQgZmFzdE1hbGxvY01hdGNoRmFp
bGVkKHZvaWQqIHApOwogCi0gICAgfSAvLyBuYW1lc3BhY2UgSW50ZXJuYWwKK30gLy8gbmFtZXNw
YWNlIEludGVybmFsCiAKLSAgICAvLyBUaGlzIGlzIGEgaGlnaGVyIGxldmVsIGZ1bmN0aW9uIHdo
aWNoIGlzIHVzZWQgYnkgRmFzdE1hbGxvYy11c2luZyBjb2RlLgotICAgIGlubGluZSB2b2lkIGZh
c3RNYWxsb2NNYXRjaFZhbGlkYXRlTWFsbG9jKHZvaWQqIHAsIEludGVybmFsOjpBbGxvY1R5cGUg
YWxsb2NUeXBlKQotICAgIHsKLSAgICAgICAgaWYgKCFwKQotICAgICAgICAgICAgcmV0dXJuOwor
Ly8gVGhpcyBpcyBhIGhpZ2hlciBsZXZlbCBmdW5jdGlvbiB3aGljaCBpcyB1c2VkIGJ5IEZhc3RN
YWxsb2MtdXNpbmcgY29kZS4KK2lubGluZSB2b2lkIGZhc3RNYWxsb2NNYXRjaFZhbGlkYXRlTWFs
bG9jKHZvaWQqIHAsIEludGVybmFsOjpBbGxvY1R5cGUgYWxsb2NUeXBlKQoreworICAgIGlmICgh
cCkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIEludGVybmFsOjpzZXRGYXN0TWFsbG9jTWF0
Y2hWYWxpZGF0aW9uVHlwZShwLCBhbGxvY1R5cGUpOwotICAgIH0KKyAgICBJbnRlcm5hbDo6c2V0
RmFzdE1hbGxvY01hdGNoVmFsaWRhdGlvblR5cGUocCwgYWxsb2NUeXBlKTsKK30KIAotICAgIC8v
IFRoaXMgaXMgYSBoaWdoZXIgbGV2ZWwgZnVuY3Rpb24gd2hpY2ggaXMgdXNlZCBieSBGYXN0TWFs
bG9jLXVzaW5nIGNvZGUuCi0gICAgaW5saW5lIHZvaWQgZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVG
cmVlKHZvaWQqIHAsIEludGVybmFsOjpBbGxvY1R5cGUgYWxsb2NUeXBlKQotICAgIHsKLSAgICAg
ICAgaWYgKCFwKQotICAgICAgICAgICAgcmV0dXJuOworLy8gVGhpcyBpcyBhIGhpZ2hlciBsZXZl
bCBmdW5jdGlvbiB3aGljaCBpcyB1c2VkIGJ5IEZhc3RNYWxsb2MtdXNpbmcgY29kZS4KK2lubGlu
ZSB2b2lkIGZhc3RNYWxsb2NNYXRjaFZhbGlkYXRlRnJlZSh2b2lkKiBwLCBJbnRlcm5hbDo6QWxs
b2NUeXBlIGFsbG9jVHlwZSkKK3sKKyAgICBpZiAoIXApCisgICAgICAgIHJldHVybjsKIAotICAg
ICAgICBpZiAoSW50ZXJuYWw6OmZhc3RNYWxsb2NNYXRjaFZhbGlkYXRpb25UeXBlKHApICE9IGFs
bG9jVHlwZSkKLSAgICAgICAgICAgIEludGVybmFsOjpmYXN0TWFsbG9jTWF0Y2hGYWlsZWQocCk7
Ci0gICAgICAgIEludGVybmFsOjpzZXRGYXN0TWFsbG9jTWF0Y2hWYWxpZGF0aW9uVHlwZShwLCBJ
bnRlcm5hbDo6QWxsb2NUeXBlTWFsbG9jKTsgIC8vIFNldCBpdCB0byB0aGlzIHNvIHRoYXQgZmFz
dEZyZWUgdGhpbmtzIGl0J3MgT0suCi0gICAgfQorICAgIGlmIChJbnRlcm5hbDo6ZmFzdE1hbGxv
Y01hdGNoVmFsaWRhdGlvblR5cGUocCkgIT0gYWxsb2NUeXBlKQorICAgICAgICBJbnRlcm5hbDo6
ZmFzdE1hbGxvY01hdGNoRmFpbGVkKHApOworICAgIEludGVybmFsOjpzZXRGYXN0TWFsbG9jTWF0
Y2hWYWxpZGF0aW9uVHlwZShwLCBJbnRlcm5hbDo6QWxsb2NUeXBlTWFsbG9jKTsgIC8vIFNldCBp
dCB0byB0aGlzIHNvIHRoYXQgZmFzdEZyZWUgdGhpbmtzIGl0J3MgT0suCit9CiAKICNlbHNlCiAK
LSAgICBpbmxpbmUgdm9pZCBmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZU1hbGxvYyh2b2lkKiwgSW50
ZXJuYWw6OkFsbG9jVHlwZSkKLSAgICB7Ci0gICAgfQoraW5saW5lIHZvaWQgZmFzdE1hbGxvY01h
dGNoVmFsaWRhdGVNYWxsb2Modm9pZCosIEludGVybmFsOjpBbGxvY1R5cGUpCit7Cit9CiAKLSAg
ICBpbmxpbmUgdm9pZCBmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZUZyZWUodm9pZCosIEludGVybmFs
OjpBbGxvY1R5cGUpCi0gICAgewotICAgIH0KK2lubGluZSB2b2lkIGZhc3RNYWxsb2NNYXRjaFZh
bGlkYXRlRnJlZSh2b2lkKiwgSW50ZXJuYWw6OkFsbG9jVHlwZSkKK3sKK30KIAogI2VuZGlmCiAK
SW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRTcGVjaWZpYy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEphdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRTcGVjaWZpYy5oCShyZXZpc2lvbiA2NjMzOSkKKysr
IEphdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRTcGVjaWZpYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
MzEsOCArMjMxLDggQEAKIC8vIDIpIFdlIGRvIG5vdCBuZWVkIHRvIGhvbGQgbWFueSBpbnN0YW5j
ZXMgb2YgVGhyZWFkU3BlY2lmaWM8PiBkYXRhLiBUaGlzIGZpeGVkIG51bWJlciBzaG91bGQgYmUg
ZmFyIGVub3VnaC4KIGNvbnN0IGludCBrTWF4VGxzS2V5U2l6ZSA9IDI1NjsKIAotbG9uZyYgdGxz
S2V5Q291bnQoKTsKLURXT1JEKiB0bHNLZXlzKCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgbG9uZyYg
dGxzS2V5Q291bnQoKTsKK1dURl9FWFBPUlRfUFJJVkFURSBEV09SRCogdGxzS2V5cygpOwogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgogaW5saW5lIFRocmVhZFNwZWNpZmljPFQ+OjpUaHJlYWRTcGVj
aWZpYygpCkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvV1RGVGhyZWFkRGF0YS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9XVEZUaHJlYWREYXRhLmgJKHJldmlzaW9uIDY2MzM5
KQorKysgSmF2YVNjcmlwdENvcmUvd3RmL1dURlRocmVhZERhdGEuaAkod29ya2luZyBjb3B5KQpA
QCAtNzksOCArNzksOCBAQAogCiBjbGFzcyBXVEZUaHJlYWREYXRhIDogcHVibGljIE5vbmNvcHlh
YmxlIHsKIHB1YmxpYzoKLSAgICBXVEZUaHJlYWREYXRhKCk7Ci0gICAgfldURlRocmVhZERhdGEo
KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgV1RGVGhyZWFkRGF0YSgpOworICAgIFdURl9FWFBP
UlRfUFJJVkFURSB+V1RGVGhyZWFkRGF0YSgpOwogCiAgICAgQXRvbWljU3RyaW5nVGFibGUqIGF0
b21pY1N0cmluZ1RhYmxlKCkKICAgICB7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZv
cm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAkocmV2aXNp
b24gNjYzMzkpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAkod29ya2luZyBjb3B5
KQpAQCAtMTExOCw0ICsxMTE4LDIyIEBACiAjZGVmaW5lIEVOQUJMRV9CUkFOQ0hfQ09NUEFDVElP
TiAxCiAjZW5kaWYKIAorLyogRklYTUU6IHRoZXNlIGFyZSB0byBiZSBlbmFibGVkIGZvciBhbGwg
cG9ydHMsIGJ1dCB0aGlzIHByb2Nlc3MgaXMgYmVpbmcgZG9uZQorICAgb25lIHBvcnQgYXQgYSB0
aW1lIHNvIGFzIHRvIHdvcmsgb3V0IGJ1aWxkIGlzc3VlcyBpbiBzbWFsbGVyLCBlYXN5IHRvIG1h
bmFnZQorICAgcGF0Y2hlcy4gKi8KKworI2lmIFBMQVRGT1JNKFdYKQorI2luY2x1ZGUgIkV4cG9y
dE1hY3Jvcy5oIgorI2lmIGRlZmluZWQoQlVJTERJTkdfSmF2YVNjcmlwdENvcmUpIHx8IGRlZmlu
ZWQoQlVJTERJTkdfV1RGKQorI2RlZmluZSBXVEZfRVhQT1JUX1BSSVZBVEUgV1RGX0VYUE9SVAor
I2RlZmluZSBKU19FWFBPUlRfUFJJVkFURSBXVEZfRVhQT1JUCisjZWxzZQorI2RlZmluZSBXVEZf
RVhQT1JUX1BSSVZBVEUgV1RGX0lNUE9SVAorI2RlZmluZSBKU19FWFBPUlRfUFJJVkFURSBXVEZf
SU1QT1JUCisjZW5kaWYKKyNlbHNlCisjZGVmaW5lIFdURl9FWFBPUlRfUFJJVkFURQorI2RlZmlu
ZSBKU19FWFBPUlRfUFJJVkFURQorI2VuZGlmCisKICNlbmRpZiAvKiBXVEZfUGxhdGZvcm1faCAq
LwpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL0V4cG9ydE1hY3Jvcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEphdmFTY3JpcHRDb3JlL3d0Zi9FeHBvcnRNYWNyb3MuaAkocmV2aXNpb24gMCkKKysrIEphdmFT
Y3JpcHRDb3JlL3d0Zi9FeHBvcnRNYWNyb3MuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
Q09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBD
T01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaWZuZGVmIEV4cG9ydE1hY3Jvc19oCisjZGVmaW5lIEV4cG9ydE1hY3Jv
c19oCisKKyNpZiAhUExBVEZPUk0oQ0hST01JVU0pICYmIE9TKFdJTkRPV1MpICYmICFDT01QSUxF
UihHQ0MpCisjZGVmaW5lIFdURl9FWFBPUlQgX19kZWNsc3BlYyhkbGxleHBvcnQpCisjZGVmaW5l
IFdURl9JTVBPUlQgX19kZWNsc3BlYyhkbGxpbXBvcnQpCisjZWxpZiBkZWZpbmVkKF9fR05VQ19f
KSAmJiAhZGVmaW5lZChfX0NDX0FSTSkgJiYgIWRlZmluZWQoX19BUk1DQ19fKQorI2RlZmluZSBX
VEZfRVhQT1JUIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpCisjZGVmaW5l
IFdURl9JTVBPUlQgV1RGX0VYUE9SVAorI2Vsc2UKKyNkZWZpbmUgV1RGX0VYUE9SVAorI2RlZmlu
ZSBXVEZfSU1QT1JUCisjZW5kaWYKKworI2VuZGlmIC8qIEV4cG9ydE1hY3Jvc19oICovCkluZGV4
OiBKYXZhU2NyaXB0Q29yZS93dGYvRGF0ZU1hdGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS93dGYvRGF0ZU1hdGguaAkocmV2aXNpb24gNjYzMzkpCisrKyBKYXZhU2NyaXB0Q29yZS93
dGYvRGF0ZU1hdGguaAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQAogaW50IGVxdWl2
YWxlbnRZZWFyRm9yRFNUKGludCB5ZWFyKTsKIAogLy8gTm90IHJlYWxseSBtYXRoIHJlbGF0ZWQs
IGJ1dCB0aGlzIGlzIGN1cnJlbnRseSB0aGUgb25seSBzaGFyZWQgcGxhY2UgdG8gcHV0IHRoZXNl
LiAgCi1kb3VibGUgcGFyc2VEYXRlRnJvbU51bGxUZXJtaW5hdGVkQ2hhcmFjdGVycyhjb25zdCBj
aGFyKiBkYXRlU3RyaW5nKTsKK1dURl9FWFBPUlRfUFJJVkFURSBkb3VibGUgcGFyc2VEYXRlRnJv
bU51bGxUZXJtaW5hdGVkQ2hhcmFjdGVycyhjb25zdCBjaGFyKiBkYXRlU3RyaW5nKTsKIGRvdWJs
ZSB0aW1lQ2xpcChkb3VibGUpOwogCiBpbmxpbmUgZG91YmxlIGpzQ3VycmVudFRpbWUoKQpAQCAt
NzcsMTEgKzc3LDExIEBACiBjb25zdCBkb3VibGUgbXNQZXJNb250aCA9IDI1OTIwMDAwMDAuMDsK
IAogLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIGRheXMgZnJvbSAxOTcwLTAxLTAxIHRvIHRoZSBz
cGVjaWZpZWQgZGF0ZS4KLWRvdWJsZSBkYXRlVG9EYXlzRnJvbTE5NzAoaW50IHllYXIsIGludCBt
b250aCwgaW50IGRheSk7Ci1pbnQgbXNUb1llYXIoZG91YmxlIG1zKTsKLWludCBkYXlJblllYXIo
ZG91YmxlIG1zLCBpbnQgeWVhcik7Ci1pbnQgbW9udGhGcm9tRGF5SW5ZZWFyKGludCBkYXlJblll
YXIsIGJvb2wgbGVhcFllYXIpOwotaW50IGRheUluTW9udGhGcm9tRGF5SW5ZZWFyKGludCBkYXlJ
blllYXIsIGJvb2wgbGVhcFllYXIpOworV1RGX0VYUE9SVF9QUklWQVRFIGRvdWJsZSBkYXRlVG9E
YXlzRnJvbTE5NzAoaW50IHllYXIsIGludCBtb250aCwgaW50IGRheSk7CitXVEZfRVhQT1JUX1BS
SVZBVEUgaW50IG1zVG9ZZWFyKGRvdWJsZSBtcyk7CitXVEZfRVhQT1JUX1BSSVZBVEUgaW50IGRh
eUluWWVhcihkb3VibGUgbXMsIGludCB5ZWFyKTsKK1dURl9FWFBPUlRfUFJJVkFURSBpbnQgbW9u
dGhGcm9tRGF5SW5ZZWFyKGludCBkYXlJblllYXIsIGJvb2wgbGVhcFllYXIpOworV1RGX0VYUE9S
VF9QUklWQVRFIGludCBkYXlJbk1vbnRoRnJvbURheUluWWVhcihpbnQgZGF5SW5ZZWFyLCBib29s
IGxlYXBZZWFyKTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKSW5kZXg6IEphdmFTY3JpcHRDb3Jl
L3d0Zi91bmljb2RlL0NvbGxhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3Rm
L3VuaWNvZGUvQ29sbGF0b3IuaAkocmV2aXNpb24gNjYzMzkpCisrKyBKYXZhU2NyaXB0Q29yZS93
dGYvdW5pY29kZS9Db2xsYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwyNyArMzksMjcgQEAK
IAogbmFtZXNwYWNlIFdURiB7CiAKLSAgICBjbGFzcyBDb2xsYXRvciA6IHB1YmxpYyBOb25jb3B5
YWJsZSB7Ci0gICAgcHVibGljOgotICAgICAgICBlbnVtIFJlc3VsdCB7IEVxdWFsID0gMCwgR3Jl
YXRlciA9IDEsIExlc3MgPSAtMSB9OworY2xhc3MgV1RGX0VYUE9SVF9QUklWQVRFIENvbGxhdG9y
IDogcHVibGljIE5vbmNvcHlhYmxlIHsKK3B1YmxpYzoKKyAgICBlbnVtIFJlc3VsdCB7IEVxdWFs
ID0gMCwgR3JlYXRlciA9IDEsIExlc3MgPSAtMSB9OwogCi0gICAgICAgIENvbGxhdG9yKGNvbnN0
IGNoYXIqIGxvY2FsZSk7IC8vIFBhcnNpbmcgaXMgbGVuaWVudDsgZS5nLiBsYW5ndWFnZSBpZGVu
dGlmaWVycyAoc3VjaCBhcyAiZW4tVVMiKSBhcmUgYWNjZXB0ZWQsIHRvby4KLSAgICAgICAgfkNv
bGxhdG9yKCk7Ci0gICAgICAgIHZvaWQgc2V0T3JkZXJMb3dlckZpcnN0KGJvb2wpOworICAgIENv
bGxhdG9yKGNvbnN0IGNoYXIqIGxvY2FsZSk7IC8vIFBhcnNpbmcgaXMgbGVuaWVudDsgZS5nLiBs
YW5ndWFnZSBpZGVudGlmaWVycyAoc3VjaCBhcyAiZW4tVVMiKSBhcmUgYWNjZXB0ZWQsIHRvby4K
KyAgICB+Q29sbGF0b3IoKTsKKyAgICB2b2lkIHNldE9yZGVyTG93ZXJGaXJzdChib29sKTsKIAot
ICAgICAgICBzdGF0aWMgUGFzc093blB0cjxDb2xsYXRvcj4gdXNlckRlZmF1bHQoKTsKKyAgICBz
dGF0aWMgUGFzc093blB0cjxDb2xsYXRvcj4gdXNlckRlZmF1bHQoKTsKIAotICAgICAgICBSZXN1
bHQgY29sbGF0ZShjb25zdCA6OlVDaGFyKiwgc2l6ZV90LCBjb25zdCA6OlVDaGFyKiwgc2l6ZV90
KSBjb25zdDsKKyAgICBSZXN1bHQgY29sbGF0ZShjb25zdCA6OlVDaGFyKiwgc2l6ZV90LCBjb25z
dCA6OlVDaGFyKiwgc2l6ZV90KSBjb25zdDsKIAotICAgIHByaXZhdGU6Citwcml2YXRlOgogI2lm
IFVTRShJQ1VfVU5JQ09ERSkgJiYgIVVDT05GSUdfTk9fQ09MTEFUSU9OCi0gICAgICAgIHZvaWQg
Y3JlYXRlQ29sbGF0b3IoKSBjb25zdDsKLSAgICAgICAgdm9pZCByZWxlYXNlQ29sbGF0b3IoKTsK
LSAgICAgICAgbXV0YWJsZSBVQ29sbGF0b3IqIG1fY29sbGF0b3I7CisgICAgdm9pZCBjcmVhdGVD
b2xsYXRvcigpIGNvbnN0OworICAgIHZvaWQgcmVsZWFzZUNvbGxhdG9yKCk7CisgICAgbXV0YWJs
ZSBVQ29sbGF0b3IqIG1fY29sbGF0b3I7CiAjZW5kaWYKLSAgICAgICAgY2hhciogbV9sb2NhbGU7
Ci0gICAgICAgIGJvb2wgbV9sb3dlckZpcnN0OwotICAgIH07CisgICAgY2hhciogbV9sb2NhbGU7
CisgICAgYm9vbCBtX2xvd2VyRmlyc3Q7Cit9OwogfQogCiB1c2luZyBXVEY6OkNvbGxhdG9yOwpJ
bmRleDogSmF2YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUvVVRGOC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEph
dmFTY3JpcHRDb3JlL3d0Zi91bmljb2RlL1VURjguaAkocmV2aXNpb24gNjYzMzkpCisrKyBKYXZh
U2NyaXB0Q29yZS93dGYvdW5pY29kZS9VVEY4LmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2
LDcgQEAKICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhcioqIHNvdXJjZVN0YXJ0LCBjb25z
dCBjaGFyKiBzb3VyY2VFbmQsIAogICAgICAgICAgICAgICAgICAgICBVQ2hhcioqIHRhcmdldFN0
YXJ0LCBVQ2hhciogdGFyZ2V0RW5kLCBib29sIHN0cmljdCA9IHRydWUpOwogCi0gICAgQ29udmVy
c2lvblJlc3VsdCBjb252ZXJ0VVRGMTZUb1VURjgoCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIENv
bnZlcnNpb25SZXN1bHQgY29udmVydFVURjE2VG9VVEY4KAogICAgICAgICAgICAgICAgICAgICBj
b25zdCBVQ2hhcioqIHNvdXJjZVN0YXJ0LCBjb25zdCBVQ2hhciogc291cmNlRW5kLCAKICAgICAg
ICAgICAgICAgICAgICAgY2hhcioqIHRhcmdldFN0YXJ0LCBjaGFyKiB0YXJnZXRFbmQsIGJvb2wg
c3RyaWN0ID0gdHJ1ZSk7CiAgIH0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9DdXJyZW50VGlt
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9DdXJyZW50VGltZS5oCShyZXZp
c2lvbiA2NjMzOSkKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9DdXJyZW50VGltZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNiwyNyArMzYsMjcgQEAKIAogbmFtZXNwYWNlIFdURiB7CiAKLSAgICAvLyBS
ZXR1cm5zIHRoZSBjdXJyZW50IFVUQyB0aW1lIGluIHNlY29uZHMsIGNvdW50ZWQgZnJvbSBKYW51
YXJ5IDEsIDE5NzAuCi0gICAgLy8gUHJlY2lzaW9uIHZhcmllcyBkZXBlbmRpbmcgb24gcGxhdGZv
cm0gYnV0IGlzIHVzdWFsbHkgYXMgZ29vZCBvciBiZXR0ZXIgCi0gICAgLy8gdGhhbiBhIG1pbGxp
c2Vjb25kLgotICAgIGRvdWJsZSBjdXJyZW50VGltZSgpOworLy8gUmV0dXJucyB0aGUgY3VycmVu
dCBVVEMgdGltZSBpbiBzZWNvbmRzLCBjb3VudGVkIGZyb20gSmFudWFyeSAxLCAxOTcwLgorLy8g
UHJlY2lzaW9uIHZhcmllcyBkZXBlbmRpbmcgb24gcGxhdGZvcm0gYnV0IGlzIHVzdWFsbHkgYXMg
Z29vZCBvciBiZXR0ZXIgCisvLyB0aGFuIGEgbWlsbGlzZWNvbmQuCitXVEZfRVhQT1JUX1BSSVZB
VEUgZG91YmxlIGN1cnJlbnRUaW1lKCk7CiAKLSAgICAvLyBTYW1lIHRoaW5nLCBpbiBtaWxsaXNl
Y29uZHMuCi0gICAgaW5saW5lIGRvdWJsZSBjdXJyZW50VGltZU1TKCkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBjdXJyZW50VGltZSgpICogMTAwMC4wOyAKLSAgICB9CisvLyBTYW1lIHRoaW5nLCBp
biBtaWxsaXNlY29uZHMuCitpbmxpbmUgZG91YmxlIGN1cnJlbnRUaW1lTVMoKQoreworICAgIHJl
dHVybiBjdXJyZW50VGltZSgpICogMTAwMC4wOyAKK30KIAotICAgIGlubGluZSB2b2lkIGdldExv
Y2FsVGltZShjb25zdCB0aW1lX3QqIGxvY2FsVGltZSwgc3RydWN0IHRtKiBsb2NhbFRNKQotICAg
IHsKLSAgICAjaWYgQ09NUElMRVIoTVNWQzdfT1JfTE9XRVIpIHx8IENPTVBJTEVSKE1JTkdXKSB8
fCBPUyhXSU5DRSkKLSAgICAgICAgKmxvY2FsVE0gPSAqbG9jYWx0aW1lKGxvY2FsVGltZSk7Ci0g
ICAgI2VsaWYgQ09NUElMRVIoTVNWQykKLSAgICAgICAgbG9jYWx0aW1lX3MobG9jYWxUTSwgbG9j
YWxUaW1lKTsKLSAgICAjZWxzZQotICAgICAgICBsb2NhbHRpbWVfcihsb2NhbFRpbWUsIGxvY2Fs
VE0pOwotICAgICNlbmRpZgotICAgIH0KK2lubGluZSB2b2lkIGdldExvY2FsVGltZShjb25zdCB0
aW1lX3QqIGxvY2FsVGltZSwgc3RydWN0IHRtKiBsb2NhbFRNKQoreworI2lmIENPTVBJTEVSKE1T
VkM3X09SX0xPV0VSKSB8fCBDT01QSUxFUihNSU5HVykgfHwgT1MoV0lOQ0UpCisgICAgKmxvY2Fs
VE0gPSAqbG9jYWx0aW1lKGxvY2FsVGltZSk7CisjZWxpZiBDT01QSUxFUihNU1ZDKQorICAgIGxv
Y2FsdGltZV9zKGxvY2FsVE0sIGxvY2FsVGltZSk7CisjZWxzZQorICAgIGxvY2FsdGltZV9yKGxv
Y2FsVGltZSwgbG9jYWxUTSk7CisjZW5kaWYKK30KIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKSW5k
ZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9NRDUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS93dGYvTUQ1LmgJKHJldmlzaW9uIDY2MzM5KQorKysgSmF2YVNjcmlwdENvcmUvd3RmL01ENS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBXVEYgewogCi1j
bGFzcyBNRDUgeworY2xhc3MgV1RGX0VYUE9SVF9QUklWQVRFIE1ENSB7CiBwdWJsaWM6CiAgICAg
TUQ1KCk7CiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9kdG9hLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SmF2YVNjcmlwdENvcmUvd3RmL2R0b2EuaAkocmV2aXNpb24gNjYzMzkpCisrKyBKYXZhU2NyaXB0
Q29yZS93dGYvZHRvYS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAKIC8vIHMw
MDogaW5wdXQgc3RyaW5nLiBNdXN0IG5vdCBiZSAwIGFuZCBtdXN0IGJlIHRlcm1pbmF0ZWQgYnkg
MC4KIC8vIHNlOiAqc2Ugd2lsbCBoYXZlIHRoZSBsYXN0IGNvbnN1bWVkIGNoYXJhY3RlciBwb3Np
dGlvbiArIDEuCi1kb3VibGUgc3RydG9kKGNvbnN0IGNoYXIqIHMwMCwgY2hhcioqIHNlKTsKK1dU
Rl9FWFBPUlRfUFJJVkFURSBkb3VibGUgc3RydG9kKGNvbnN0IGNoYXIqIHMwMCwgY2hhcioqIHNl
KTsKIAogdHlwZWRlZiBjaGFyIER0b2FCdWZmZXJbODBdOwogCkBAIC00MCw3ICs0MCw3IEBACiAK
IC8vIFNpemUgPSA4MCBmb3Igc2l6ZW9mKER0b2FCdWZmZXIpICsgc29tZSBzaWduIGJpdHMsIGRl
Y2ltYWwgcG9pbnQsICdlJywgZXhwb25lbnQgZGlnaXRzLgogdHlwZWRlZiBVQ2hhciBOdW1iZXJU
b1N0cmluZ0J1ZmZlcls5Nl07Ci11bnNpZ25lZCBudW1iZXJUb1N0cmluZyhkb3VibGUsIE51bWJl
clRvU3RyaW5nQnVmZmVyKTsKK1dURl9FWFBPUlRfUFJJVkFURSB1bnNpZ25lZCBudW1iZXJUb1N0
cmluZyhkb3VibGUsIE51bWJlclRvU3RyaW5nQnVmZmVyKTsKIAogfSAvLyBuYW1lc3BhY2UgV1RG
CiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9Bc3NlcnRpb25zLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SmF2YVNjcmlwdENvcmUvd3RmL0Fzc2VydGlvbnMuaAkocmV2aXNpb24gNjYzMzkpCisrKyBKYXZh
U2NyaXB0Q29yZS93dGYvQXNzZXJ0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsMTMgKzE0
MSwxMyBAQAogICAgIFdURkxvZ0NoYW5uZWxTdGF0ZSBzdGF0ZTsKIH0gV1RGTG9nQ2hhbm5lbDsK
IAotdm9pZCBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKGNvbnN0IGNoYXIqIGZpbGUsIGludCBs
aW5lLCBjb25zdCBjaGFyKiBmdW5jdGlvbiwgY29uc3QgY2hhciogYXNzZXJ0aW9uKTsKLXZvaWQg
V1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZVdpdGhNZXNzYWdlKGNvbnN0IGNoYXIqIGZpbGUsIGlu
dCBsaW5lLCBjb25zdCBjaGFyKiBmdW5jdGlvbiwgY29uc3QgY2hhciogYXNzZXJ0aW9uLCBjb25z
dCBjaGFyKiBmb3JtYXQsIC4uLikgV1RGX0FUVFJJQlVURV9QUklOVEYoNSwgNik7Ci12b2lkIFdU
RlJlcG9ydEFyZ3VtZW50QXNzZXJ0aW9uRmFpbHVyZShjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGlu
ZSwgY29uc3QgY2hhciogZnVuY3Rpb24sIGNvbnN0IGNoYXIqIGFyZ05hbWUsIGNvbnN0IGNoYXIq
IGFzc2VydGlvbik7Ci12b2lkIFdURlJlcG9ydEZhdGFsRXJyb3IoY29uc3QgY2hhciogZmlsZSwg
aW50IGxpbmUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uLCBjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikg
V1RGX0FUVFJJQlVURV9QUklOVEYoNCwgNSk7Ci12b2lkIFdURlJlcG9ydEVycm9yKGNvbnN0IGNo
YXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiBmdW5jdGlvbiwgY29uc3QgY2hhciogZm9y
bWF0LCAuLi4pIFdURl9BVFRSSUJVVEVfUFJJTlRGKDQsIDUpOwotdm9pZCBXVEZMb2coV1RGTG9n
Q2hhbm5lbCogY2hhbm5lbCwgY29uc3QgY2hhciogZm9ybWF0LCAuLi4pIFdURl9BVFRSSUJVVEVf
UFJJTlRGKDIsIDMpOwotdm9pZCBXVEZMb2dWZXJib3NlKGNvbnN0IGNoYXIqIGZpbGUsIGludCBs
aW5lLCBjb25zdCBjaGFyKiBmdW5jdGlvbiwgV1RGTG9nQ2hhbm5lbCogY2hhbm5lbCwgY29uc3Qg
Y2hhciogZm9ybWF0LCAuLi4pIFdURl9BVFRSSUJVVEVfUFJJTlRGKDUsIDYpOworV1RGX0VYUE9S
VF9QUklWQVRFIHZvaWQgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZShjb25zdCBjaGFyKiBmaWxl
LCBpbnQgbGluZSwgY29uc3QgY2hhciogZnVuY3Rpb24sIGNvbnN0IGNoYXIqIGFzc2VydGlvbik7
CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlV2l0aE1l
c3NhZ2UoY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uLCBj
b25zdCBjaGFyKiBhc3NlcnRpb24sIGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKSBXVEZfQVRUUklC
VVRFX1BSSU5URig1LCA2KTsKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIFdURlJlcG9ydEFyZ3Vt
ZW50QXNzZXJ0aW9uRmFpbHVyZShjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hh
ciogZnVuY3Rpb24sIGNvbnN0IGNoYXIqIGFyZ05hbWUsIGNvbnN0IGNoYXIqIGFzc2VydGlvbik7
CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBXVEZSZXBvcnRGYXRhbEVycm9yKGNvbnN0IGNoYXIq
IGZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiBmdW5jdGlvbiwgY29uc3QgY2hhciogZm9ybWF0
LCAuLi4pIFdURl9BVFRSSUJVVEVfUFJJTlRGKDQsIDUpOworV1RGX0VYUE9SVF9QUklWQVRFIHZv
aWQgV1RGUmVwb3J0RXJyb3IoY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIq
IGZ1bmN0aW9uLCBjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikgV1RGX0FUVFJJQlVURV9QUklOVEYo
NCwgNSk7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBXVEZMb2coV1RGTG9nQ2hhbm5lbCogY2hh
bm5lbCwgY29uc3QgY2hhciogZm9ybWF0LCAuLi4pIFdURl9BVFRSSUJVVEVfUFJJTlRGKDIsIDMp
OworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgV1RGTG9nVmVyYm9zZShjb25zdCBjaGFyKiBmaWxl
LCBpbnQgbGluZSwgY29uc3QgY2hhciogZnVuY3Rpb24sIFdURkxvZ0NoYW5uZWwqIGNoYW5uZWws
IGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKSBXVEZfQVRUUklCVVRFX1BSSU5URig1LCA2KTsKIAog
I2lmZGVmIF9fY3BsdXNwbHVzCiB9CkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5n
UHJpbWl0aXZlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdQ
cmltaXRpdmVzLmgJKHJldmlzaW9uIDY2MzM5KQorKysgSmF2YVNjcmlwdENvcmUvd3RmL1RocmVh
ZGluZ1ByaW1pdGl2ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDEyICsxMDAsMTIgQEAKICAg
ICAKIGNsYXNzIE11dGV4IDogcHVibGljIE5vbmNvcHlhYmxlIHsKIHB1YmxpYzoKLSAgICBNdXRl
eCgpOwotICAgIH5NdXRleCgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBNdXRleCgpOworICAg
IFdURl9FWFBPUlRfUFJJVkFURSB+TXV0ZXgoKTsKIAotICAgIHZvaWQgbG9jaygpOwotICAgIGJv
b2wgdHJ5TG9jaygpOwotICAgIHZvaWQgdW5sb2NrKCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IHZvaWQgbG9jaygpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIHRyeUxvY2soKTsKKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCB1bmxvY2soKTsKIAogcHVibGljOgogICAgIFBsYXRm
b3JtTXV0ZXgmIGltcGwoKSB7IHJldHVybiBtX211dGV4OyB9CkBAIC0xMzQsMTUgKzEzNCwxNSBA
QAogCiBjbGFzcyBUaHJlYWRDb25kaXRpb24gOiBwdWJsaWMgTm9uY29weWFibGUgewogcHVibGlj
OgotICAgIFRocmVhZENvbmRpdGlvbigpOwotICAgIH5UaHJlYWRDb25kaXRpb24oKTsKKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgVGhyZWFkQ29uZGl0aW9uKCk7CisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIH5UaHJlYWRDb25kaXRpb24oKTsKICAgICAKLSAgICB2b2lkIHdhaXQoTXV0ZXgmIG11dGV4
KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCB3YWl0KE11dGV4JiBtdXRleCk7CiAgICAg
Ly8gUmV0dXJucyB0cnVlIGlmIHRoZSBjb25kaXRpb24gd2FzIHNpZ25hbGVkIGJlZm9yZSBhYnNv
bHV0ZVRpbWUsIGZhbHNlIGlmIHRoZSBhYnNvbHV0ZVRpbWUgd2FzIHJlYWNoZWQgb3IgaXMgaW4g
dGhlIHBhc3QuCiAgICAgLy8gVGhlIGFic29sdXRlVGltZSBpcyBpbiBzZWNvbmRzLCBzdGFydGlu
ZyBvbiBKYW51YXJ5IDEsIDE5NzAuIFRoZSB0aW1lIGlzIGFzc3VtZWQgdG8gdXNlIHRoZSBzYW1l
IHRpbWUgem9uZSBhcyBXVEY6OmN1cnJlbnRUaW1lKCkuCi0gICAgYm9vbCB0aW1lZFdhaXQoTXV0
ZXgmLCBkb3VibGUgYWJzb2x1dGVUaW1lKTsKLSAgICB2b2lkIHNpZ25hbCgpOwotICAgIHZvaWQg
YnJvYWRjYXN0KCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgdGltZWRXYWl0KE11dGV4
JiwgZG91YmxlIGFic29sdXRlVGltZSk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2ln
bmFsKCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYnJvYWRjYXN0KCk7CiAgICAgCiBw
cml2YXRlOgogICAgIFBsYXRmb3JtQ29uZGl0aW9uIG1fY29uZGl0aW9uOwpJbmRleDogSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCShyZXZpc2lvbiA2NjMzOSkKKysrIEph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEwMCw4ICsxMDAsOCBAQAogICAgICAgICBKU1ZhbHVlIGV4ZWN1dGUoRXZhbEV4ZWN1dGFibGUq
IGV2YWxOb2RlLCBDYWxsRnJhbWUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqLCBTY29wZUNoYWlu
Tm9kZSogc2NvcGVDaGFpbiwgSlNWYWx1ZSogZXhjZXB0aW9uKTsKIAogICAgICAgICBKU1ZhbHVl
IHJldHJpZXZlQXJndW1lbnRzKENhbGxGcmFtZSosIEpTRnVuY3Rpb24qKSBjb25zdDsKLSAgICAg
ICAgSlNWYWx1ZSByZXRyaWV2ZUNhbGxlcihDYWxsRnJhbWUqLCBKU0Z1bmN0aW9uKikgY29uc3Q7
Ci0gICAgICAgIHZvaWQgcmV0cmlldmVMYXN0Q2FsbGVyKENhbGxGcmFtZSosIGludCYgbGluZU51
bWJlciwgaW50cHRyX3QmIHNvdXJjZUlELCBVU3RyaW5nJiBzb3VyY2VVUkwsIEpTVmFsdWUmIGZ1
bmN0aW9uKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSByZXRyaWV2
ZUNhbGxlcihDYWxsRnJhbWUqLCBKU0Z1bmN0aW9uKikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9S
VF9QUklWQVRFIHZvaWQgcmV0cmlldmVMYXN0Q2FsbGVyKENhbGxGcmFtZSosIGludCYgbGluZU51
bWJlciwgaW50cHRyX3QmIHNvdXJjZUlELCBVU3RyaW5nJiBzb3VyY2VVUkwsIEpTVmFsdWUmIGZ1
bmN0aW9uKSBjb25zdDsKICAgICAgICAgCiAgICAgICAgIHZvaWQgZ2V0QXJndW1lbnRzRGF0YShD
YWxsRnJhbWUqLCBKU0Z1bmN0aW9uKiYsIHB0cmRpZmZfdCYgZmlyc3RQYXJhbWV0ZXJJbmRleCwg
UmVnaXN0ZXIqJiBhcmd2LCBpbnQmIGFyZ2MpOwogICAgICAgICAKSW5kZXg6IEphdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDY2MzQwKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTI3IEBACisyMDEwLTA4LTI5ICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0
aGVvbGxpdmllcnMuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE1ha2UgaXQgcG9zc2libGUgdG8gYnVpbGQgSmF2YVNjcmlwdENvcmUgYXMgc2hh
cmVkIGxpYnJhcnkgd2l0aG91dCBzeW1ib2wgbGlzdHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzU1MQorCisgICAgICAgICogYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgICogY29uZmlnLmg6CisgICAgICAgICogZGVi
dWdnZXIvRGVidWdnZXIuaDoKKyAgICAgICAgKEpTQzo6KToKKyAgICAgICAgKiBkZWJ1Z2dlci9E
ZWJ1Z2dlckNhbGxGcmFtZS5oOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmg6
CisgICAgICAgICogcGNyZS9wY3JlLmg6CisgICAgICAgICogcHJvZmlsZXIvUHJvZmlsZXIuaDoK
KyAgICAgICAgKiBydW50aW1lL0FyZ0xpc3QuaDoKKyAgICAgICAgKiBydW50aW1lL0NhbGxEYXRh
Lmg6CisgICAgICAgICogcnVudGltZS9Db2xsZWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL0Nv
bGxlY3RvckhlYXBJdGVyYXRvci5oOgorICAgICAgICAqIHJ1bnRpbWUvQ29tcGxldGlvbi5oOgor
ICAgICAgICAqIHJ1bnRpbWUvQ29uc3RydWN0RGF0YS5oOgorICAgICAgICAqIHJ1bnRpbWUvRGF0
ZUluc3RhbmNlLmg6CisgICAgICAgICogcnVudGltZS9FcnJvci5oOgorICAgICAgICAqIHJ1bnRp
bWUvRXhjZXB0aW9uSGVscGVycy5oOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1
Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvR0NIYW5kbGUuaDoKKyAgICAgICAgKiBydW50aW1l
L0lkZW50aWZpZXIuaDoKKyAgICAgICAgKEpTQzo6SWRlbnRpZmllcjo6dG9VSW50MzIpOgorICAg
ICAgICAoSlNDOjpJZGVudGlmaWVyOjplcXVhbCk6CisgICAgICAgICogcnVudGltZS9Jbml0aWFs
aXplVGhyZWFkaW5nLmg6CisgICAgICAgICogcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmg6Cisg
ICAgICAgIChKU0M6Oik6CisgICAgICAgICogcnVudGltZS9KU0FycmF5Lmg6CisgICAgICAgIChK
U0M6Oik6CisgICAgICAgICogcnVudGltZS9KU0J5dGVBcnJheS5oOgorICAgICAgICAqIHJ1bnRp
bWUvSlNDZWxsLmg6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6dnB0cik6CisgICAgICAgIChKU0M6
OkpTQ2VsbDo6c2V0VlB0cik6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6aXNTdHJpbmcpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxE
YXRhLmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsRGF0YTo6KToKKyAgICAgICAgKiBydW50aW1l
L0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6Oik6CisgICAgICAgICogcnVudGltZS9K
U0xvY2suaDoKKyAgICAgICAgKEpTQzo6SlNMb2NrOjopOgorICAgICAgICAqIHJ1bnRpbWUvSlNP
YmplY3QuaDoKKyAgICAgICAgKEpTQzo6KToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0V2l0
aEdsb2JhbE9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmcuaDoKKyAgICAgICAg
KEpTQzo6KToKKyAgICAgICAgKiBydW50aW1lL0pTVmFsdWUuaDoKKyAgICAgICAgKiBydW50aW1l
L0pTVmFyaWFibGVPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6KToKKyAgICAgICAgKiBydW50aW1l
L0pTV3JhcHBlck9iamVjdC5oOgorICAgICAgICAoSlNDOjopOgorICAgICAgICAoSlNDOjpKU1dy
YXBwZXJPYmplY3Q6OkpTV3JhcHBlck9iamVjdCk6CisgICAgICAgIChKU0M6OkpTV3JhcHBlck9i
amVjdDo6c2V0SW50ZXJuYWxWYWx1ZSk6CisgICAgICAgICogcnVudGltZS9Mb29rdXAuaDoKKyAg
ICAgICAgKiBydW50aW1lL01hcmtTdGFjay5oOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0UHJv
dG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuaDoKKyAgICAg
ICAgKiBydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5Lmg6CisgICAgICAgIChKU0M6OlByb3BlcnR5
TmFtZUFycmF5OjphZGQpOgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlTbG90Lmg6CisgICAg
ICAgICogcnVudGltZS9Sb3BlSW1wbC5oOgorICAgICAgICAqIHJ1bnRpbWUvU21hbGxTdHJpbmdz
Lmg6CisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6KToK
KyAgICAgICAgKEpTQzo6YXNTdHJpbmdPYmplY3QpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0
dXJlLmg6CisgICAgICAgICogcnVudGltZS9UaW1lb3V0Q2hlY2tlci5oOgorICAgICAgICAqIHJ1
bnRpbWUvVVN0cmluZy5oOgorICAgICAgICAoSlNDOjpVU3RyaW5nOjpVU3RyaW5nKToKKyAgICAg
ICAgKiB3c2NyaXB0OgorICAgICAgICAqIHd0Zi9Bc3NlcnRpb25zLmg6CisgICAgICAgICogd3Rm
L0J5dGVBcnJheS5oOgorICAgICAgICAqIHd0Zi9DdXJyZW50VGltZS5oOgorICAgICAgICAoV1RG
OjpjdXJyZW50VGltZU1TKToKKyAgICAgICAgKFdURjo6Z2V0TG9jYWxUaW1lKToKKyAgICAgICAg
KiB3dGYvRGF0ZU1hdGguaDoKKyAgICAgICAgKiB3dGYvRXhwb3J0TWFjcm9zLmg6IEFkZGVkLgor
ICAgICAgICAqIHd0Zi9GYXN0TWFsbG9jLmg6CisgICAgICAgIChXVEY6OlRyeU1hbGxvY1JldHVy
blZhbHVlOjpUcnlNYWxsb2NSZXR1cm5WYWx1ZSk6CisgICAgICAgIChXVEY6OlRyeU1hbGxvY1Jl
dHVyblZhbHVlOjp+VHJ5TWFsbG9jUmV0dXJuVmFsdWUpOgorICAgICAgICAoV1RGOjpUcnlNYWxs
b2NSZXR1cm5WYWx1ZTo6b3BlcmF0b3IgUG9zc2libHlOdWxsPFQ+KToKKyAgICAgICAgKFdURjo6
VHJ5TWFsbG9jUmV0dXJuVmFsdWU6OmdldFZhbHVlKToKKyAgICAgICAgKFdURjo6SW50ZXJuYWw6
Oik6CisgICAgICAgIChXVEY6OkludGVybmFsOjpmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0aW9uVHlw
ZSk6CisgICAgICAgIChXVEY6OkludGVybmFsOjpmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0aW9uVmFs
dWUpOgorICAgICAgICAoV1RGOjpJbnRlcm5hbDo6c2V0RmFzdE1hbGxvY01hdGNoVmFsaWRhdGlv
blR5cGUpOgorICAgICAgICAoV1RGOjpmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZU1hbGxvYyk6Cisg
ICAgICAgIChXVEY6OmZhc3RNYWxsb2NNYXRjaFZhbGlkYXRlRnJlZSk6CisgICAgICAgICogd3Rm
L01ENS5oOgorICAgICAgICAoV1RGOjopOgorICAgICAgICAqIHd0Zi9NYWluVGhyZWFkLmg6Cisg
ICAgICAgICogd3RmL1BsYXRmb3JtLmg6CisgICAgICAgICogd3RmL1JhbmRvbU51bWJlci5oOgor
ICAgICAgICAqIHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaDoKKyAgICAgICAgKFdURjo6KToK
KyAgICAgICAgKiB3dGYvVGhyZWFkU3BlY2lmaWMuaDoKKyAgICAgICAgKiB3dGYvVGhyZWFkaW5n
Lmg6CisgICAgICAgICogd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaDoKKyAgICAgICAgKiB3dGYv
V1RGVGhyZWFkRGF0YS5oOgorICAgICAgICAqIHd0Zi9kdG9hLmg6CisgICAgICAgICogd3RmL3Rl
eHQvQXRvbWljU3RyaW5nLmg6CisgICAgICAgIChXVEY6OkF0b21pY1N0cmluZzo6QXRvbWljU3Ry
aW5nKToKKyAgICAgICAgKFdURjo6QXRvbWljU3RyaW5nOjppc0hhc2hUYWJsZURlbGV0ZWRWYWx1
ZSk6CisgICAgICAgIChXVEY6OkF0b21pY1N0cmluZzo6fkF0b21pY1N0cmluZyk6CisgICAgICAg
IChXVEY6OkF0b21pY1N0cmluZzo6aW1wbCk6CisgICAgICAgIChXVEY6OkF0b21pY1N0cmluZzo6
b3BlcmF0b3I9KToKKyAgICAgICAgKiB3dGYvdGV4dC9DU3RyaW5nLmg6CisgICAgICAgIChXVEY6
OkNTdHJpbmc6On5DU3RyaW5nKToKKyAgICAgICAgKFdURjo6Q1N0cmluZzo6ZGF0YSk6CisgICAg
ICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5oOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpj
aGFyYWN0ZXJzKToKKyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuaDoKKyAgICAgICAgKFdU
Rjo6U3RyaW5nOjpTdHJpbmcpOgorICAgICAgICAoV1RGOjpTdHJpbmc6OmZpbmRJZ25vcmluZ0Nh
c2UpOgorICAgICAgICAoV1RGOjpTdHJpbmc6OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKToKKyAg
ICAgICAgKiB3dGYvdW5pY29kZS9Db2xsYXRvci5oOgorICAgICAgICAoV1RGOjopOgorICAgICAg
ICAqIHd0Zi91bmljb2RlL1VURjguaDoKKwogMjAxMC0wOC0yOCAgR2F2aW4gQmFycmFjbG91Z2gg
IDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyIEh1
bnQuCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9wY3JlL3BjcmUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZh
U2NyaXB0Q29yZS9wY3JlL3BjcmUuaAkocmV2aXNpb24gNjYzMzkpCisrKyBKYXZhU2NyaXB0Q29y
ZS9wY3JlL3BjcmUuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsMTQgKzU1LDE0IEBACiBjb25zdCBp
bnQgSlNSZWdFeHBFcnJvck5vTWVtb3J5ID0gLTM7CiBjb25zdCBpbnQgSlNSZWdFeHBFcnJvcklu
dGVybmFsID0gLTQ7CiAKLUpTUmVnRXhwKiBqc1JlZ0V4cENvbXBpbGUoY29uc3QgVUNoYXIqIHBh
dHRlcm4sIGludCBwYXR0ZXJuTGVuZ3RoLAorSlNfRVhQT1JUX1BSSVZBVEUgSlNSZWdFeHAqIGpz
UmVnRXhwQ29tcGlsZShjb25zdCBVQ2hhciogcGF0dGVybiwgaW50IHBhdHRlcm5MZW5ndGgsCiAg
ICAgSlNSZWdFeHBJZ25vcmVDYXNlT3B0aW9uLCBKU1JlZ0V4cE11bHRpbGluZU9wdGlvbiwKICAg
ICB1bnNpZ25lZCogbnVtU3VicGF0dGVybnMsIGNvbnN0IGNoYXIqKiBlcnJvck1lc3NhZ2UpOwog
Ci1pbnQganNSZWdFeHBFeGVjdXRlKGNvbnN0IEpTUmVnRXhwKiwKK0pTX0VYUE9SVF9QUklWQVRF
IGludCBqc1JlZ0V4cEV4ZWN1dGUoY29uc3QgSlNSZWdFeHAqLAogICAgIGNvbnN0IFVDaGFyKiBz
dWJqZWN0LCBpbnQgc3ViamVjdExlbmd0aCwgaW50IHN0YXJ0T2Zmc2V0LAogICAgIGludCogb2Zm
c2V0c1ZlY3RvciwgaW50IG9mZnNldHNWZWN0b3JMZW5ndGgpOwogCi12b2lkIGpzUmVnRXhwRnJl
ZShKU1JlZ0V4cCopOworSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBqc1JlZ0V4cEZyZWUoSlNSZWdF
eHAqKTsKIAogI2VuZGlmCkluZGV4OiBKYXZhU2NyaXB0Q29yZS93c2NyaXB0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIEphdmFTY3JpcHRDb3JlL3dzY3JpcHQJKHJldmlzaW9uIDY2MzM5KQorKysgSmF2YVNjcmlw
dENvcmUvd3NjcmlwdAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsNyBAQAogZGVmIGJ1aWxk
KGJsZCk6CiAgICAgaW1wb3J0IE9wdGlvbnMKIAorICAgIGJsZC5lbnYuTElCRElSID0gb3V0cHV0
X2RpcgogICAgIGZ1bGxfZGlycyA9IGdldF9kaXJzX2Zvcl9mZWF0dXJlcyhqc2NvcmVfZGlyLCBm
ZWF0dXJlcz1bYnVpbGRfcG9ydF0sIGRpcnM9anNjb3JlX2RpcnMpCiAKICAgICBpbmNsdWRlcyA9
IGNvbW1vbl9pbmNsdWRlcyArIGZ1bGxfZGlycwpAQCAtNTUsOSArNTYsMTAgQEAKIAogICAgICMg
MS4gQSBzaW1wbGUgcHJvZ3JhbQogICAgIGpzY29yZSA9IGJsZC5uZXdfdGFza19nZW4oCi0gICAg
ICAgIGZlYXR1cmVzID0gJ2N4eCBjc3RhdGljbGliJywKKyAgICAgICAgZmVhdHVyZXMgPSAnY3h4
IGNzaGxpYiBpbXBsaWInLAogICAgICAgICBpbmNsdWRlcyA9ICcuIC4uIGFzc2VtYmxlciBEZXJp
dmVkU291cmNlcyBGb3J3YXJkaW5nSGVhZGVycyAnICsgJyAnLmpvaW4oaW5jbHVkZXMpLAogICAg
ICAgICBzb3VyY2UgPSBzb3VyY2VzLAorICAgICAgICBkZWZpbmVzID0gWydCVUlMRElOR19KYXZh
U2NyaXB0Q29yZSddLAogICAgICAgICB0YXJnZXQgPSAnanNjb3JlJywKICAgICAgICAgdXNlbGli
ID0gJ1dYIElDVSAnICsgZ2V0X2NvbmZpZygpLAogICAgICAgICB1c2VsaWJfbG9jYWwgPSAnJywK
SW5kZXg6IEphdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXIuaAkocmV2aXNpb24gNjYzMzkpCisrKyBK
YXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSwx
MSArNTEsMTEgQEAKICAgICAgICAgICAgIHJldHVybiAmc19zaGFyZWRFbmFibGVkUHJvZmlsZXJS
ZWZlcmVuY2U7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgUHJvZmlsZXIqIHByb2ZpbGVy
KCk7IAorICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUHJvZmlsZXIqIHByb2ZpbGVy
KCk7IAogICAgICAgICBzdGF0aWMgQ2FsbElkZW50aWZpZXIgY3JlYXRlQ2FsbElkZW50aWZpZXIo
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlLCBjb25zdCBVU3RyaW5nJiBzb3VyY2VVUkwsIGludCBs
aW5lTnVtYmVyKTsKIAotICAgICAgICB2b2lkIHN0YXJ0UHJvZmlsaW5nKEV4ZWNTdGF0ZSosIGNv
bnN0IFVTdHJpbmcmIHRpdGxlKTsKLSAgICAgICAgUGFzc1JlZlB0cjxQcm9maWxlPiBzdG9wUHJv
ZmlsaW5nKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmIHRpdGxlKTsKKyAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBzdGFydFByb2ZpbGluZyhFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5n
JiB0aXRsZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8UHJvZmlsZT4g
c3RvcFByb2ZpbGluZyhFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJiB0aXRsZSk7CiAKICAgICAg
ICAgdm9pZCB3aWxsRXhlY3V0ZShFeGVjU3RhdGUqLCBKU1ZhbHVlIGZ1bmN0aW9uKTsKICAgICAg
ICAgdm9pZCB3aWxsRXhlY3V0ZShFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJiBzb3VyY2VVUkws
IGludCBzdGFydGluZ0xpbmVOdW1iZXIpOwpJbmRleDogSmF2YVNjcmlwdENvcmUvZGVidWdnZXIv
RGVidWdnZXJDYWxsRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9kZWJ1Z2dl
ci9EZWJ1Z2dlckNhbGxGcmFtZS5oCShyZXZpc2lvbiA2NjMzOSkKKysrIEphdmFTY3JpcHRDb3Jl
L2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDEwICs1
MSwxMCBAQAogICAgICAgICBKU0dsb2JhbE9iamVjdCogZHluYW1pY0dsb2JhbE9iamVjdCgpIGNv
bnN0IHsgcmV0dXJuIG1fY2FsbEZyYW1lLT5keW5hbWljR2xvYmFsT2JqZWN0KCk7IH0KICAgICAg
ICAgY29uc3QgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW4oKSBjb25zdCB7IHJldHVybiBtX2Nh
bGxGcmFtZS0+c2NvcGVDaGFpbigpOyB9CiAgICAgICAgIGNvbnN0IFVTdHJpbmcqIGZ1bmN0aW9u
TmFtZSgpIGNvbnN0OwotICAgICAgICBVU3RyaW5nIGNhbGN1bGF0ZWRGdW5jdGlvbk5hbWUoKSBj
b25zdDsKLSAgICAgICAgVHlwZSB0eXBlKCkgY29uc3Q7Ci0gICAgICAgIEpTT2JqZWN0KiB0aGlz
T2JqZWN0KCkgY29uc3Q7Ci0gICAgICAgIEpTVmFsdWUgZXZhbHVhdGUoY29uc3QgVVN0cmluZyYs
IEpTVmFsdWUmIGV4Y2VwdGlvbikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFVT
dHJpbmcgY2FsY3VsYXRlZEZ1bmN0aW9uTmFtZSgpIGNvbnN0OworICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSBUeXBlIHR5cGUoKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNP
YmplY3QqIHRoaXNPYmplY3QoKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNW
YWx1ZSBldmFsdWF0ZShjb25zdCBVU3RyaW5nJiwgSlNWYWx1ZSYgZXhjZXB0aW9uKSBjb25zdDsK
ICAgICAgICAgSlNWYWx1ZSBleGNlcHRpb24oKSBjb25zdCB7IHJldHVybiBtX2V4Y2VwdGlvbjsg
fQogCiAgICAgcHJpdmF0ZToKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2Vy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuaAkocmV2
aXNpb24gNjYzMzkpCisrKyBKYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAgICAgY2xhc3MgU291cmNlQ29kZTsKICAgICBj
bGFzcyBVU3RyaW5nOwogCi0gICAgY2xhc3MgRGVidWdnZXIgeworICAgIGNsYXNzIEpTX0VYUE9S
VF9QUklWQVRFIERlYnVnZ2VyIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgfkRlYnVn
Z2VyKCk7CiAKSW5kZXg6IFdlYktpdC93eC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L3d4L0NoYW5nZUxvZwkocmV2aXNpb24gNjYzNDApCisrKyBXZWJLaXQvd3gvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTAtMDgtMjkgIEtldmluIE9sbGl2aWVy
ICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTWFrZSBpdCBwb3NzaWJsZSB0byBidWlsZCBKYXZhU2NyaXB0
Q29yZSBhcyBzaGFyZWQgbGlicmFyeSB3aXRob3V0IHN5bWJvbCBsaXN0cy4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NTUxCisKKyAgICAgICAgKiB3
c2NyaXB0OgorCiAyMDEwLTA4LTI4ICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVvbGxpdmll
cnMuY29tPgogCiAgICAgICAgIFt3eF0gQnVpbGQgZml4IGFmdGVyIHBhcnNlTW9kZSAtPiBjb21w
YXRpYmlsaXR5TW9kZSByZW5hbWUuCkluZGV4OiBXZWJLaXQvd3gvd3NjcmlwdAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvd3gvd3NjcmlwdAkocmV2aXNpb24gNjYzMzkpCisrKyBXZWJLaXQvd3gvd3Nj
cmlwdAkod29ya2luZyBjb3B5KQpAQCAtNjgsNyArNjgsNyBAQAogICAgIAogZGVmIHByZV9idWls
ZChibGQpOgogICAgICIiIgotICAgIFRoZSB3eFdlYktpdCBsaWJyYXJ5IHNob3VsZCBiZSByZWJ1
aWx0IGlmIGpzY29yZSBvciB3ZWJjb3JlIGNoYW5nZXMsCisgICAgVGhlIHd4V2ViS2l0IGxpYnJh
cnkgc2hvdWxkIGJlIHJlYnVpbHQgaWYgd2ViY29yZSBjaGFuZ2VzLAogICAgIHNvIHdlIG1ha2Ug
dGhvc2Ugc3RhdGljIGxpYnMgYXMgZGVwZW5kZW5jaWVzLgogICAgICIiIgogICAgIApAQCAtNzYs
MTMgKzc2LDEwIEBACiAgICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ3dpbicpOgogICAg
ICAgICBleHQgPSAnLmxpYicKICAgICAKLSAgICBsaWJqc2NvcmUgPSBvcy5wYXRoLmpvaW4ob3V0
cHV0X2RpciwgJ2xpYmpzY29yZSVzJyAlIGV4dCkKICAgICBsaWJ3ZWJjb3JlID0gb3MucGF0aC5q
b2luKG91dHB1dF9kaXIsICdsaWJ3ZWJjb3JlJXMnICUgZXh0KQogICAgIAotICAgIGFzc2VydCBv
cy5wYXRoLmV4aXN0cyhsaWJqc2NvcmUpCiAgICAgYXNzZXJ0IG9zLnBhdGguZXhpc3RzKGxpYndl
YmNvcmUpCiAgICAgCi0gICAgYmxkLmVudi5DWFhERVBTX0pTQ09SRSA9IFV0aWxzLmhfZmlsZShs
aWJqc2NvcmUpCiAgICAgYmxkLmVudi5DWFhERVBTX1dFQkNPUkUgPSBVdGlscy5oX2ZpbGUobGli
d2ViY29yZSkKICAgICAKIGRlZiBidWlsZChibGQpOgpJbmRleDogV2ViQ29yZS9jb25maWcuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2NvbmZpZy5oCShyZXZpc2lvbiA2NjMzOSkKKysrIFdlYkNv
cmUvY29uZmlnLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKIAogI2luY2x1ZGUg
PHd0Zi9QbGF0Zm9ybS5oPgogCi0jaWYgIVBMQVRGT1JNKENIUk9NSVVNKSAmJiBPUyhXSU5ET1dT
KSAmJiAhZGVmaW5lZChCVUlMRElOR19XWF9fKSAmJiAhQ09NUElMRVIoR0NDKQorI2lmICFQTEFU
Rk9STShDSFJPTUlVTSkgJiYgT1MoV0lORE9XUykgJiYgIUNPTVBJTEVSKEdDQykKICNpZiBkZWZp
bmVkKEJVSUxESU5HX0phdmFTY3JpcHRDb3JlKSB8fCBkZWZpbmVkKEJVSUxESU5HX1dURikKICNk
ZWZpbmUgSlNfRVhQT1JUREFUQSBfX2RlY2xzcGVjKGRsbGV4cG9ydCkKICNlbHNlCkluZGV4OiBX
ZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNp
b24gNjYzNDApCisrKyBXZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDE0IEBACisyMDEwLTA4LTI5ICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVvbGxpdmllcnMu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1h
a2UgaXQgcG9zc2libGUgdG8gYnVpbGQgSmF2YVNjcmlwdENvcmUgYXMgc2hhcmVkIGxpYnJhcnkg
d2l0aG91dCBzeW1ib2wgbGlzdHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yNzU1MQorICAgICAgICAKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0Fy
cmF5QnVmZmVyVmlld0N1c3RvbS5jcHA6CisgICAgICAgICogY29uZmlnLmg6CisgICAgICAgICog
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oOgorCiAyMDEwLTA4LTI5ICBT
aW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEFkbGVyLgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0FycmF5QnVmZmVy
Vmlld0N1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0FycmF5
QnVmZmVyVmlld0N1c3RvbS5jcHAJKHJldmlzaW9uIDY2MzM5KQorKysgV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0FycmF5QnVmZmVyVmlld0N1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcg
KzI3LDYgQEAKIAogI2lmIEVOQUJMRSgzRF9DQU5WQVMpCiAKLSNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJKU0FycmF5QnVmZmVyVmlldy5oIgogI2luY2x1ZGUgIkpTSW50OEFycmF5Lmgi
CiAjaW5jbHVkZSAiSlNVaW50OEFycmF5LmgiCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9m
aWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFw
aGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaAkocmV2aXNpb24gNjYzMzkpCisrKyBXZWJD
b3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMjAsOCArMjAsNiBAQAogI2lmbmRlZiBTVkdGaWx0ZXJCdWlsZGVyX2gKICNkZWZpbmUg
U1ZHRmlsdGVyQnVpbGRlcl9oCiAKLSNpbmNsdWRlICJjb25maWcuaCIKLQogI2lmIEVOQUJMRShT
VkcpICYmIEVOQUJMRShGSUxURVJTKQogI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgogI2luY2x1
ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCkluZGV4OiBXZWJLaXRUb29scy93eC9idWlsZC9zZXR0aW5n
cy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy93eC9idWlsZC9zZXR0aW5ncy5weQkocmV2
aXNpb24gNjYzMzkpCisrKyBXZWJLaXRUb29scy93eC9idWlsZC9zZXR0aW5ncy5weQkod29ya2lu
ZyBjb3B5KQpAQCAtMjg4LDcgKzI4OCw3IEBACiAgICAgaWYgYnVpbGRfcG9ydCA9PSAid3giOgog
ICAgICAgICB1cGRhdGVfd3hfZGVwcyhjb25mLCB3a19yb290LCBtc3ZjX3ZlcnNpb24pCiAgICAg
Ci0gICAgICAgIGNvbmYuZW52LmFwcGVuZF92YWx1ZSgnQ1hYREVGSU5FUycsIFsnQlVJTERJTkdf
V1hfXz0xJywgJ0pTX05PX0VYUE9SVCddKQorICAgICAgICBjb25mLmVudi5hcHBlbmRfdmFsdWUo
J0NYWERFRklORVMnLCBbJ0JVSUxESU5HX1dYX189MSddKQogCiAgICAgICAgIGlmIGJ1aWxkaW5n
X29uX3dpbjMyOgogICAgICAgICAgICAgY29uZi5lbnYuYXBwZW5kX3ZhbHVlKCdMSUJQQVRIJywg
b3MucGF0aC5qb2luKG1zdmNsaWJzX2RpciwgJ2xpYicpKQpAQCAtMzAwLDYgKzMwMCw4IEBACiAg
ICAgICAgICAgICBjb25mLmVudlsnQ1BQUEFUSF9XWCddID0gd3hpbmNsdWRlcwogICAgICAgICAg
ICAgY29uZi5lbnZbJ0xJQl9XWCddID0gd3hsaWJzCiAgICAgICAgICAgICBjb25mLmVudlsnTElC
UEFUSF9XWCddID0gd3hsaWJwYXRocworICAgICAgICBlbHNlOgorICAgICAgICAgICAgY29uZi5l
bnYuYXBwZW5kX3ZhbHVlKCdDWFhGTEFHUycsIFsnLWZ2aXNpYmlsaXR5PWhpZGRlbiddKQogCiAg
ICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2RhcndpbicpOgogICAgICAgICBjb25mLmVu
dlsnTElCX0lDVSddID0gWydpY3Vjb3JlJ10KSW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDY2MzQwKQorKysg
V2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIw
MTAtMDgtMjkgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBpdCBwb3Nz
aWJsZSB0byBidWlsZCBKYXZhU2NyaXB0Q29yZSBhcyBzaGFyZWQgbGlicmFyeSB3aXRob3V0IHN5
bWJvbCBsaXN0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTI3NTUxCisKKyAgICAgICAgKiB3eC9idWlsZC9zZXR0aW5ncy5weToKKwogMjAxMC0wOC0y
OCAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KIAogICAgICAgICBb
d3hdIEJ1aWxkIGZpeCBhZnRlciBkaXJlY3RvcnkgYWRkaXRpb24uCkBAIC04NDM0LDYgKzg0NDMs
MTYgQEAKIAogMjAxMC0wNi0xNiAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJz
LmNvbT4KIAorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
c2UgSlNfRVhQT1JUX1BSSVZBVEUgdG8gZXhwb3J0IEpTQ29yZSBzeW1ib2xzIG5lZWRlZCBieSBv
dGhlciBXZWJLaXQgbGlicmFyaWVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9Mjc1NTEKKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2NvbmZpZy5o
OgorICAgICAgICAqIHd4L2J1aWxkL3NldHRpbmdzLnB5OgorCisyMDEwLTA2LTE2ICBLZXZpbiBP
bGxpdmllciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29tPgorCiAgICAgICAgIFt3eF0gQnVpbGQg
Zml4IGFmdGVyIG5ldyBtZXRob2QgYWRkaXRpb24uCiAKICAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcDoK
</data>
<flag name="review"
          id="54745"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84895</attachid>
            <date>2011-03-06 12:49:11 -0800</date>
            <delta_ts>2011-03-06 17:52:29 -0800</delta_ts>
            <desc>Retry - Step 1 - Define export macros but disable them on all ports.</desc>
            <filename>jscore_export_step1.patch</filename>
            <type>text/plain</type>
            <size>16124</size>
            <attacher name="Kevin Ollivier">kevino</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL2NvbmZpZy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL2NvbmZpZy5oCShyZXZpc2lvbiA4MDQz
NSkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL2NvbmZpZy5oCSh3b3JraW5nIGNv
cHkpCkBAIC01Myw0ICs1Myw3IEBACiAjZGVmaW5lIEpTX0VYUE9SVERBVEEKICNlbmRpZgogCisj
ZGVmaW5lIFdURl9FWFBPUlRfUFJJVkFURSBKU19FWFBPUlREQVRBCisjZGVmaW5lIEpTX0VYUE9S
VF9QUklWQVRFIEpTX0VYUE9SVERBVEEKKwogI2VuZGlmIC8vIGNvbmZpZ19oCkluZGV4OiBUb29s
cy9EdW1wUmVuZGVyVHJlZS9jb25maWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVy
VHJlZS9jb25maWcuaAkocmV2aXNpb24gODA0MzUpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9j
b25maWcuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTMgKzI2LDIwIEBACiAKICNpbmNsdWRlIDx3
dGYvUGxhdGZvcm0uaD4KIAotI2lmZGVmIF9fY3BsdXNwbHVzCi0jdW5kZWYgbmV3Ci0jdW5kZWYg
ZGVsZXRlCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNlbmRpZgorLyogU2VlIG5vdGUg
aW4gd3RmL1BsYXRmb3JtLmggZm9yIG1vcmUgaW5mbyBvbiBFWFBPUlRfTUFDUk9TLiAqLworI2lm
IFVTRShFWFBPUlRfTUFDUk9TKQorI2luY2x1ZGUgPHd0Zi9FeHBvcnRNYWNyb3MuaD4KIAotI2lm
IE9TKFdJTkRPV1MpICYmICFDT01QSUxFUihHQ0MpCisjZGVmaW5lIFdURl9FWFBPUlRfUFJJVkFU
RSBXVEZfSU1QT1JUCisjZGVmaW5lIEpTX0VYUE9SVF9QUklWQVRFIFdURl9JTVBPUlQKKyNkZWZp
bmUgV0VCS0lUX0VYUE9SVERBVEEgV1RGX0lNUE9SVAorCisjZGVmaW5lIEpTX0VYUE9SVERBVEEg
SlNfRVhQT1JUX1BSSVZBVEUKKyNkZWZpbmUgSlNfRVhQT1JUQ0xBU1MgSlNfRVhQT1JUX1BSSVZB
VEUKKworI2Vsc2UgLyogIVVTRShFWFBPUlRfTUFDUk9TKSAqLworCisjaWYgT1MoV0lORE9XUykg
JiYgIUNPTVBJTEVSKEdDQykgJiYgIWRlZmluZWQoQlVJTERJTkdfV1hfXykKICNkZWZpbmUgSlNf
RVhQT1JUREFUQSBfX2RlY2xzcGVjKGRsbGltcG9ydCkKICNkZWZpbmUgV0VCS0lUX0VYUE9SVERB
VEEgX19kZWNsc3BlYyhkbGxpbXBvcnQpCiAjZWxzZQpAQCAtNDAsNiArNDcsMTcgQEAKICNkZWZp
bmUgV0VCS0lUX0VYUE9SVERBVEEKICNlbmRpZgogCisjZGVmaW5lIFdURl9FWFBPUlRfUFJJVkFU
RSBKU19FWFBPUlREQVRBCisjZGVmaW5lIEpTX0VYUE9SVF9QUklWQVRFIEpTX0VYUE9SVERBVEEK
KworI2VuZGlmIC8qIFVTRShFWFBPUlRfTUFDUk9TKSAqLworCisjaWZkZWYgX19jcGx1c3BsdXMK
KyN1bmRlZiBuZXcKKyN1bmRlZiBkZWxldGUKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgor
I2VuZGlmCisKICNpZiBQTEFURk9STShNQUMpCiAjZGVmaW5lIFdURl9VU0VfQ0YgMQogCkluZGV4
OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lv
biA4MDQzNSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2
IEBACisyMDExLTAzLTA2ICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEludHJv
ZHVjZSBXVEZfVVNFX0VYUE9SVF9NQUNST1MsIHdoaWNoIHdpbGwgYWxsb3cgdXMgdG8gcHV0IHNo
YXJlZCBsaWJyYXJ5IGltcG9ydC9leHBvcnQKKyAgICAgICAgaW5mbyBpbnRvIHRoZSBoZWFkZXJz
IHJhdGhlciB0aGFuIGluIGV4cG9ydCBzeW1ib2wgZGVmaW5pdGlvbiBmaWxlcywgYnV0IGRpc2Fi
bGUgaXQgb24gCisgICAgICAgIGFsbCBwbGF0Zm9ybXMgaW5pdGlhbGx5IHNvIHdlIGNhbiBkZWFs
IHdpdGggcG9ydCBidWlsZCBpc3N1ZXMgb25lIHBvcnQgYXQgYSB0aW1lLgorICAgICAgICAKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NTUxCisKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9jb25maWcuaDoKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9jb25maWcuaDoKKwogMjAxMS0wMy0wNSAgQnJpYW4gV2VpbnN0ZWluICA8Yndl
aW5zdGVpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb25maWcuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvY29uZmlnLmgJKHJldmlzaW9uIDgwNDM1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2NvbmZpZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSwyMyBAQAogCiAj
aW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CiAKKy8qIFNlZSBub3RlIGluIHd0Zi9QbGF0Zm9ybS5o
IGZvciBtb3JlIGluZm8gb24gRVhQT1JUX01BQ1JPUy4gKi8KKyNpZiBVU0UoRVhQT1JUX01BQ1JP
UykKKyNpbmNsdWRlIDx3dGYvRXhwb3J0TWFjcm9zLmg+CisKKyNpZiBkZWZpbmVkKEJVSUxESU5H
X0phdmFTY3JpcHRDb3JlKSB8fCBkZWZpbmVkKEJVSUxESU5HX1dURikKKyNkZWZpbmUgV1RGX0VY
UE9SVF9QUklWQVRFIFdURl9FWFBPUlQKKyNkZWZpbmUgSlNfRVhQT1JUX1BSSVZBVEUgV1RGX0VY
UE9SVAorI2Vsc2UKKyNkZWZpbmUgV1RGX0VYUE9SVF9QUklWQVRFIFdURl9JTVBPUlQKKyNkZWZp
bmUgSlNfRVhQT1JUX1BSSVZBVEUgV1RGX0lNUE9SVAorI2VuZGlmCisKKyNkZWZpbmUgSlNfRVhQ
T1JUREFUQSBKU19FWFBPUlRfUFJJVkFURQorI2RlZmluZSBKU19FWFBPUlRDTEFTUyBKU19FWFBP
UlRfUFJJVkFURQorCisjZWxzZSAvKiAhVVNFKEVYUE9SVF9NQUNST1MpICovCisKICNpZiAhUExB
VEZPUk0oQ0hST01JVU0pICYmIE9TKFdJTkRPV1MpICYmICFkZWZpbmVkKEJVSUxESU5HX1dYX18p
ICYmICFDT01QSUxFUihHQ0MpCiAjaWYgZGVmaW5lZChCVUlMRElOR19KYXZhU2NyaXB0Q29yZSkg
fHwgZGVmaW5lZChCVUlMRElOR19XVEYpCiAjZGVmaW5lIEpTX0VYUE9SVERBVEEgX19kZWNsc3Bl
YyhkbGxleHBvcnQpCkBAIC00MSw2ICs1OCwxMSBAQAogI2RlZmluZSBKU19FWFBPUlRDTEFTUwog
I2VuZGlmCiAKKyNkZWZpbmUgV1RGX0VYUE9SVF9QUklWQVRFIEpTX0VYUE9SVERBVEEKKyNkZWZp
bmUgSlNfRVhQT1JUX1BSSVZBVEUgSlNfRVhQT1JUREFUQQorCisjZW5kaWYgLyogVVNFKEVYUE9S
VF9NQUNST1MpICovCisKICNpZiBPUyhXSU5ET1dTKQogCiAvLyBJZiB3ZSBkb24ndCBkZWZpbmUg
dGhlc2UsIHRoZXkgZ2V0IGRlZmluZWQgaW4gd2luZGVmLmguIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvUGxhdGZvcm0uaAkocmV2aXNpb24gODA0MzUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL1BsYXRmb3JtLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNjksNCArMTE2OSwxMCBA
QAogI2luY2x1ZGUgIkdUeXBlZGVmcy5oIgogI2VuZGlmCiAKKy8qIEZJWE1FOiBUaGlzIGRlZmlu
ZSB3b24ndCBiZSBuZWVkZWQgb25jZSAjMjc1NTEgaXMgZnVsbHkgbGFuZGVkLiBIb3dldmVyLCAK
KyAgIHNpbmNlIG1vc3QgcG9ydHMgdHJ5IHRvIHN1cHBvcnQgc3ViLXByb2plY3QgaW5kZXBlbmRl
bmNlLCBhZGRpbmcgbmV3IGhlYWRlcnMKKyAgIHRvIFdURiBjYXVzZXMgbWFueSBwb3J0cyB0byBi
cmVhaywgYW5kIHNvIHRoaXMgd2F5IHdlIGNhbiBhZGRyZXNzIHRoZSBidWlsZAorICAgYnJlYWth
Z2VzIG9uZSBwb3J0IGF0IGEgdGltZS4gKi8KKyNkZWZpbmUgV1RGX1VTRV9FWFBPUlRfTUFDUk9T
IDAKKwogI2VuZGlmIC8qIFdURl9QbGF0Zm9ybV9oICovCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL0Fzc2VydGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL0Fzc2VydGlvbnMuaAkocmV2aXNpb24gODA0MzUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL0Fzc2VydGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTQyLDE0ICsxNDIsMTQg
QEAKICAgICBXVEZMb2dDaGFubmVsU3RhdGUgc3RhdGU7CiB9IFdURkxvZ0NoYW5uZWw7CiAKLXZv
aWQgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZShjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwg
Y29uc3QgY2hhciogZnVuY3Rpb24sIGNvbnN0IGNoYXIqIGFzc2VydGlvbik7Ci12b2lkIFdURlJl
cG9ydEFzc2VydGlvbkZhaWx1cmVXaXRoTWVzc2FnZShjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGlu
ZSwgY29uc3QgY2hhciogZnVuY3Rpb24sIGNvbnN0IGNoYXIqIGFzc2VydGlvbiwgY29uc3QgY2hh
ciogZm9ybWF0LCAuLi4pIFdURl9BVFRSSUJVVEVfUFJJTlRGKDUsIDYpOwotdm9pZCBXVEZSZXBv
cnRBcmd1bWVudEFzc2VydGlvbkZhaWx1cmUoY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNv
bnN0IGNoYXIqIGZ1bmN0aW9uLCBjb25zdCBjaGFyKiBhcmdOYW1lLCBjb25zdCBjaGFyKiBhc3Nl
cnRpb24pOwotdm9pZCBXVEZSZXBvcnRCYWNrdHJhY2UoKTsKLXZvaWQgV1RGUmVwb3J0RmF0YWxF
cnJvcihjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciogZnVuY3Rpb24sIGNv
bnN0IGNoYXIqIGZvcm1hdCwgLi4uKSBXVEZfQVRUUklCVVRFX1BSSU5URig0LCA1KTsKLXZvaWQg
V1RGUmVwb3J0RXJyb3IoY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIqIGZ1
bmN0aW9uLCBjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikgV1RGX0FUVFJJQlVURV9QUklOVEYoNCwg
NSk7Ci12b2lkIFdURkxvZyhXVEZMb2dDaGFubmVsKiBjaGFubmVsLCBjb25zdCBjaGFyKiBmb3Jt
YXQsIC4uLikgV1RGX0FUVFJJQlVURV9QUklOVEYoMiwgMyk7Ci12b2lkIFdURkxvZ1ZlcmJvc2Uo
Y29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uLCBXVEZMb2dD
aGFubmVsKiBjaGFubmVsLCBjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikgV1RGX0FUVFJJQlVURV9Q
UklOVEYoNSwgNik7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBXVEZSZXBvcnRBc3NlcnRpb25G
YWlsdXJlKGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiBmdW5jdGlvbiwg
Y29uc3QgY2hhciogYXNzZXJ0aW9uKTsKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIFdURlJlcG9y
dEFzc2VydGlvbkZhaWx1cmVXaXRoTWVzc2FnZShjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwg
Y29uc3QgY2hhciogZnVuY3Rpb24sIGNvbnN0IGNoYXIqIGFzc2VydGlvbiwgY29uc3QgY2hhciog
Zm9ybWF0LCAuLi4pIFdURl9BVFRSSUJVVEVfUFJJTlRGKDUsIDYpOworV1RGX0VYUE9SVF9QUklW
QVRFIHZvaWQgV1RGUmVwb3J0QXJndW1lbnRBc3NlcnRpb25GYWlsdXJlKGNvbnN0IGNoYXIqIGZp
bGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiBmdW5jdGlvbiwgY29uc3QgY2hhciogYXJnTmFtZSwg
Y29uc3QgY2hhciogYXNzZXJ0aW9uKTsKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIFdURlJlcG9y
dEJhY2t0cmFjZSgpOworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgV1RGUmVwb3J0RmF0YWxFcnJv
cihjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciogZnVuY3Rpb24sIGNvbnN0
IGNoYXIqIGZvcm1hdCwgLi4uKSBXVEZfQVRUUklCVVRFX1BSSU5URig0LCA1KTsKK1dURl9FWFBP
UlRfUFJJVkFURSB2b2lkIFdURlJlcG9ydEVycm9yKGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5l
LCBjb25zdCBjaGFyKiBmdW5jdGlvbiwgY29uc3QgY2hhciogZm9ybWF0LCAuLi4pIFdURl9BVFRS
SUJVVEVfUFJJTlRGKDQsIDUpOworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgV1RGTG9nKFdURkxv
Z0NoYW5uZWwqIGNoYW5uZWwsIGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKSBXVEZfQVRUUklCVVRF
X1BSSU5URigyLCAzKTsKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIFdURkxvZ1ZlcmJvc2UoY29u
c3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uLCBXVEZMb2dDaGFu
bmVsKiBjaGFubmVsLCBjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikgV1RGX0FUVFJJQlVURV9QUklO
VEYoNSwgNik7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0Jhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQmFzZS5oCShyZXZpc2lvbiA4MDQzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTgwLDYgKzgwLDExIEBACiAjZGVmaW5lIEpT
X0VYUE9SVAogI2VuZGlmIC8qIGRlZmluZWQoSlNfTk9fRVhQT1JUKSAqLwogCisvLyBKUyB0ZXN0
cyB1c2VzIFdURiBidXQgaGFzIG5vIGNvbmZpZy5oLCBzbyB3ZSBuZWVkIHRvIHNldCB0aGUgZXhw
b3J0IGRlZmluZXMgaGVyZS4KKyNpZm5kZWYgV1RGX0VYUE9SVF9QUklWQVRFCisjZGVmaW5lIFdU
Rl9FWFBPUlRfUFJJVkFURSBKU19FWFBPUlQKKyNlbmRpZgorCiAjaWZkZWYgX19jcGx1c3BsdXMK
IGV4dGVybiAiQyIgewogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJldmlz
aW9uIDgwNDM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDExLTAzLTA2ICBLZXZpbiBPbGxpdmllciAgPGtldmlu
b0B0aGVvbGxpdmllcnMuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEludHJvZHVjZSBXVEZfVVNFX0VYUE9SVF9NQUNST1MsIHdoaWNoIHdpbGwg
YWxsb3cgdXMgdG8gcHV0IHNoYXJlZCBsaWJyYXJ5IGltcG9ydC9leHBvcnQKKyAgICAgICAgaW5m
byBpbnRvIHRoZSBoZWFkZXJzIHJhdGhlciB0aGFuIGluIGV4cG9ydCBzeW1ib2wgZGVmaW5pdGlv
biBmaWxlcywgYnV0IGRpc2FibGUgaXQgb24gCisgICAgICAgIGFsbCBwbGF0Zm9ybXMgaW5pdGlh
bGx5IHNvIHdlIGNhbiBkZWFsIHdpdGggcG9ydCBidWlsZCBpc3N1ZXMgb25lIHBvcnQgYXQgYSB0
aW1lLgorICAgICAgICAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTI3NTUxCisKKyAgICAgICAgKiBBUEkvSlNCYXNlLmg6CisgICAgICAgICogY29uZmln
Lmg6CisgICAgICAgICogd3RmL0Fzc2VydGlvbnMuaDoKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0u
aDoKKwogMjAxMS0wMy0wNSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
R2x1ZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRHbHVlL0NoYW5n
ZUxvZwkocmV2aXNpb24gODA0MzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDMtMDYgIEtldmluIE9sbGl2
aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIFdURl9VU0VfRVhQT1JUX01BQ1JPUywg
d2hpY2ggd2lsbCBhbGxvdyB1cyB0byBwdXQgc2hhcmVkIGxpYnJhcnkgaW1wb3J0L2V4cG9ydAor
ICAgICAgICBpbmZvIGludG8gdGhlIGhlYWRlcnMgcmF0aGVyIHRoYW4gaW4gZXhwb3J0IHN5bWJv
bCBkZWZpbml0aW9uIGZpbGVzLCBidXQgZGlzYWJsZSBpdCBvbiAKKyAgICAgICAgYWxsIHBsYXRm
b3JtcyBpbml0aWFsbHkgc28gd2UgY2FuIGRlYWwgd2l0aCBwb3J0IGJ1aWxkIGlzc3VlcyBvbmUg
cG9ydCBhdCBhIHRpbWUuCisgICAgICAgIAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Mjc1NTEKKworICAgICAgICAqIGNvbmZpZy5oOgorCiAyMDExLTAz
LTA0ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgRGltaXRyaSBHbGF6a292LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRHbHVlL2NvbmZpZy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0R2x1ZS9jb25maWcuaAkocmV2aXNpb24g
ODA0MzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdEdsdWUvY29uZmlnLmgJKHdvcmtpbmcgY29weSkK
QEAgLTE5LDMgKzE5LDYgQEAKIAogI2RlZmluZSBKU19FWFBPUlREQVRBCiAjZGVmaW5lIEpTX0VY
UE9SVENMQVNTCisjZGVmaW5lIEpTX0VYUE9SVF9QUklWQVRFCisjZGVmaW5lIFdURl9FWFBPUlRf
UFJJVkFURQorCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA4MDQzNSkKKysrIFNvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisy
MDExLTAzLTA2ICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEludHJvZHVjZSBX
VEZfVVNFX0VYUE9SVF9NQUNST1MsIHdoaWNoIHdpbGwgYWxsb3cgdXMgdG8gcHV0IHNoYXJlZCBs
aWJyYXJ5IGltcG9ydC9leHBvcnQKKyAgICAgICAgaW5mbyBpbnRvIHRoZSBoZWFkZXJzIHJhdGhl
ciB0aGFuIGluIGV4cG9ydCBzeW1ib2wgZGVmaW5pdGlvbiBmaWxlcywgYnV0IGRpc2FibGUgaXQg
b24gCisgICAgICAgIGFsbCBwbGF0Zm9ybXMgaW5pdGlhbGx5IHNvIHdlIGNhbiBkZWFsIHdpdGgg
cG9ydCBidWlsZCBpc3N1ZXMgb25lIHBvcnQgYXQgYSB0aW1lLgorICAgICAgICAKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NTUxCisKKyAgICAgICAg
KiBXZWJLaXRQcmVmaXguaDoKKwogMjAxMS0wMy0wNiAgSmVzc2llIEJlcmxpbiAgPGpiZXJsaW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L21hYy9XZWJLaXRQcmVmaXguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L21hYy9XZWJLaXRQcmVmaXguaAkocmV2aXNpb24gODA0MzUpCisrKyBTb3VyY2UvV2ViS2l0L21h
Yy9XZWJLaXRQcmVmaXguaAkod29ya2luZyBjb3B5KQpAQCAtNzksMTIgKzc5LDYgQEAKICNkZWZp
bmUgV1RGX1VTRV9KU0MgMQogI2RlZmluZSBXVEZfVVNFX1Y4IDAKIAotI2lmZGVmIF9fY3BsdXNw
bHVzCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8d3Rm
L0Rpc2FsbG93Q1R5cGUuaD4KLQogLyogV29yayBhcm91bmQgYnVnIHdpdGggQysrIGxpYnJhcnkg
dGhhdCBzY3Jld3MgdXAgT2JqZWN0aXZlLUMrKyB3aGVuIGV4Y2VwdGlvbiBzdXBwb3J0IGlzIGRp
c2FibGVkLiAqLwogI3VuZGVmIHRyeQogI3VuZGVmIGNhdGNoCkBAIC05MiwzICs4NiwxMSBAQAog
I2RlZmluZSBKU19FWFBPUlREQVRBCiAjZGVmaW5lIEpTX0VYUE9SVENMQVNTCiAjZGVmaW5lIFdF
QktJVF9FWFBPUlREQVRBCisjZGVmaW5lIFdURl9FWFBPUlRfUFJJVkFURQorI2RlZmluZSBKU19F
WFBPUlRfUFJJVkFURQorCisjaWZkZWYgX19jcGx1c3BsdXMKKyNpbmNsdWRlIDx3dGYvRmFzdE1h
bGxvYy5oPgorI2VuZGlmCisKKyNpbmNsdWRlIDx3dGYvRGlzYWxsb3dDVHlwZS5oPgpJbmRleDog
U291cmNlL1dlYkNvcmUvY29uZmlnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY29u
ZmlnLmgJKHJldmlzaW9uIDgwNDM1KQorKysgU291cmNlL1dlYkNvcmUvY29uZmlnLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI5LDYgKzI5LDI5IEBACiAKICNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4K
IAorLyogU2VlIG5vdGUgaW4gd3RmL1BsYXRmb3JtLmggZm9yIG1vcmUgaW5mbyBvbiBFWFBPUlRf
TUFDUk9TLiAqLworI2lmIFVTRShFWFBPUlRfTUFDUk9TKQorI2luY2x1ZGUgPHd0Zi9FeHBvcnRN
YWNyb3MuaD4KKworI2lmIGRlZmluZWQoQlVJTERJTkdfSmF2YVNjcmlwdENvcmUpIHx8IGRlZmlu
ZWQoQlVJTERJTkdfV1RGKQorI2RlZmluZSBXVEZfRVhQT1JUX1BSSVZBVEUgV1RGX0VYUE9SVAor
I2RlZmluZSBKU19FWFBPUlRfUFJJVkFURSBXVEZfRVhQT1JUCisjZWxzZQorI2RlZmluZSBXVEZf
RVhQT1JUX1BSSVZBVEUgV1RGX0lNUE9SVAorI2RlZmluZSBKU19FWFBPUlRfUFJJVkFURSBXVEZf
SU1QT1JUCisjZW5kaWYKKworI2RlZmluZSBKU19FWFBPUlREQVRBIEpTX0VYUE9SVF9QUklWQVRF
CisjZGVmaW5lIEpTX0VYUE9SVENMQVNTIEpTX0VYUE9SVF9QUklWQVRFCisKKyNpZiBkZWZpbmVk
KEJVSUxESU5HX1dlYkNvcmUpIHx8IGRlZmluZWQoQlVJTERJTkdfV2ViS2l0KQorI2RlZmluZSBX
RUJLSVRfRVhQT1JUREFUQSBXVEZfRVhQT1JUCisjZWxzZQorI2RlZmluZSBXRUJLSVRfRVhQT1JU
REFUQSBXVEZfSU1QT1JUCisjZW5kaWYKKworI2Vsc2UgLyogIVVTRShFWFBPUlRfTUFDUk9TKSAq
LworCiAjaWYgIVBMQVRGT1JNKENIUk9NSVVNKSAmJiBPUyhXSU5ET1dTKSAmJiAhZGVmaW5lZChC
VUlMRElOR19XWF9fKSAmJiAhQ09NUElMRVIoR0NDKQogI2lmIGRlZmluZWQoQlVJTERJTkdfSmF2
YVNjcmlwdENvcmUpIHx8IGRlZmluZWQoQlVJTERJTkdfV1RGKQogI2RlZmluZSBKU19FWFBPUlRE
QVRBIF9fZGVjbHNwZWMoZGxsZXhwb3J0KQpAQCAtNDAsMTMgKzYzLDE5IEBACiAjZWxzZQogI2Rl
ZmluZSBXRUJLSVRfRVhQT1JUREFUQSBfX2RlY2xzcGVjKGRsbGltcG9ydCkKICNlbmRpZgorI2Rl
ZmluZSBXVEZfRVhQT1JUX1BSSVZBVEUgSlNfRVhQT1JUREFUQQorI2RlZmluZSBKU19FWFBPUlRf
UFJJVkFURSBKU19FWFBPUlREQVRBCiAjZGVmaW5lIEpTX0VYUE9SVENMQVNTIEpTX0VYUE9SVERB
VEEKICNlbHNlCiAjZGVmaW5lIEpTX0VYUE9SVERBVEEKICNkZWZpbmUgSlNfRVhQT1JUQ0xBU1MK
ICNkZWZpbmUgV0VCS0lUX0VYUE9SVERBVEEKKyNkZWZpbmUgV1RGX0VYUE9SVF9QUklWQVRFCisj
ZGVmaW5lIEpTX0VYUE9SVF9QUklWQVRFCiAjZW5kaWYKIAorI2VuZGlmIC8qIFVTRShFWFBPUlRf
TUFDUk9TKSAqLworCiAjaWZkZWYgX19BUFBMRV9fCiAjZGVmaW5lIEhBVkVfRlVOQ19VU0xFRVAg
MQogI2VuZGlmIC8qIF9fQVBQTEVfXyAqLwpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODA0MzUp
CisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NiBAQAorMjAxMS0wMy0wNiAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRy
b2R1Y2UgV1RGX1VTRV9FWFBPUlRfTUFDUk9TLCB3aGljaCB3aWxsIGFsbG93IHVzIHRvIHB1dCBz
aGFyZWQgbGlicmFyeSBpbXBvcnQvZXhwb3J0CisgICAgICAgIGluZm8gaW50byB0aGUgaGVhZGVy
cyByYXRoZXIgdGhhbiBpbiBleHBvcnQgc3ltYm9sIGRlZmluaXRpb24gZmlsZXMsIGJ1dCBkaXNh
YmxlIGl0IG9uIAorICAgICAgICBhbGwgcGxhdGZvcm1zIGluaXRpYWxseSBzbyB3ZSBjYW4gZGVh
bCB3aXRoIHBvcnQgYnVpbGQgaXNzdWVzIG9uZSBwb3J0IGF0IGEgdGltZS4KKyAgICAgICAgCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzU1MQorCisg
ICAgICAgICogY29uZmlnLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL0xvZ2dpbmdNYWMubW06
CisKIDIwMTEtMDMtMDYgIEplc3NpZSBCZXJsaW4gIDxqYmVybGluQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL0xvZ2dpbmdNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL0xvZ2dpbmdNYWMubW0JKHJldmlzaW9uIDgwNDM1KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL0xvZ2dpbmdNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTIzLDYgKzIzLDgg
QEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKKyNpbmNsdWRlICJjb25maWcuaCIKKwogI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpJbmRleDogU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2
aXNpb24gODA0MzUpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNSBAQAorMjAxMS0wMy0wNiAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhl
b2xsaXZpZXJzLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBJbnRyb2R1Y2UgV1RGX1VTRV9FWFBPUlRfTUFDUk9TLCB3aGljaCB3aWxsIGFsbG93
IHVzIHRvIHB1dCBzaGFyZWQgbGlicmFyeSBpbXBvcnQvZXhwb3J0CisgICAgICAgIGluZm8gaW50
byB0aGUgaGVhZGVycyByYXRoZXIgdGhhbiBpbiBleHBvcnQgc3ltYm9sIGRlZmluaXRpb24gZmls
ZXMsIGJ1dCBkaXNhYmxlIGl0IG9uIAorICAgICAgICBhbGwgcGxhdGZvcm1zIGluaXRpYWxseSBz
byB3ZSBjYW4gZGVhbCB3aXRoIHBvcnQgYnVpbGQgaXNzdWVzIG9uZSBwb3J0IGF0IGEgdGltZS4K
KyAgICAgICAgCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yNzU1MQorCisgICAgICAgICogY29uZmlnLmg6CisKIDIwMTEtMDMtMDYgIEplc3NpZSBCZXJs
aW4gIDxqYmVybGluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2Vpbmln
LgpJbmRleDogU291cmNlL1dlYktpdDIvY29uZmlnLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvY29uZmlnLmgJKHJldmlzaW9uIDgwNDM1KQorKysgU291cmNlL1dlYktpdDIvY29uZmln
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDM5ICsyOCw5IEBACiAjaW5jbHVkZSAiYXV0b3Rvb2xz
Y29uZmlnLmgiCiAjZW5kaWYgLyogZGVmaW5lZCAoQlVJTERJTkdfR1RLX18pICovCiAKLSNpZmRl
ZiBfX2NwbHVzcGx1cwotCi0vLyBUaGVzZSB1bmRlZnMgbWF0Y2ggdXAgd2l0aCBkZWZpbmVzIGlu
IFdlYktpdDJQcmVmaXguaCBmb3IgTWFjIE9TIFguCi0vLyBIZWxwcyB1cyBjYXRjaCBpZiBhbnlv
bmUgdXNlcyBuZXcgb3IgZGVsZXRlIGJ5IGFjY2lkZW50IGluIGNvZGUgYW5kIGRvZXNuJ3QgaW5j
bHVkZSAiY29uZmlnLmgiLgotI3VuZGVmIG5ldwotI3VuZGVmIGRlbGV0ZQotI2luY2x1ZGUgPHd0
Zi9GYXN0TWFsbG9jLmg+Ci0KLSNlbmRpZgotCiAjaW5jbHVkZSA8d3RmL0Rpc2FsbG93Q1R5cGUu
aD4KICNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KIAotI2lmZGVmIF9fY3BsdXNwbHVzCi0jaWZu
ZGVmIEVYVEVSTl9DX0JFR0lOCi0jZGVmaW5lIEVYVEVSTl9DX0JFR0lOIGV4dGVybiAiQyIgewot
I2VuZGlmCi0jaWZuZGVmIEVYVEVSTl9DX0VORAotI2RlZmluZSBFWFRFUk5fQ19FTkQgfQotI2Vu
ZGlmCi0jZWxzZQotI2RlZmluZSBFWFRFUk5fQ19CRUdJTgotI2RlZmluZSBFWFRFUk5fQ19FTkQK
LSNlbmRpZgotCi0vLyBGb3IgZGVmaW5pbmcgZ2V0dGVycyB0byBhIHN0YXRpYyB2YWx1ZSwgd2hl
cmUgdGhlIGdldHRlcnMgaGF2ZSBpbnRlcm5hbCBsaW5rYWdlCi0jZGVmaW5lIERFRklORV9TVEFU
SUNfR0VUVEVSKHR5cGUsIG5hbWUsIGFyZ3VtZW50cykgXAotc3RhdGljIGNvbnN0IHR5cGUmIG5h
bWUoKSBcCi17IFwKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKHR5cGUsIG5hbWUjI1ZhbHVlLCBh
cmd1bWVudHMpOyBcCi0gICAgcmV0dXJuIG5hbWUjI1ZhbHVlOyBcCi19Ci0KICNpZiBkZWZpbmVk
KEJVSUxESU5HX1FUX18pIHx8IGRlZmluZWQoQlVJTERJTkdfR1RLX18pCiAKICNkZWZpbmUgV1RG
X1VTRV9KU0MgMQpAQCAtMTAyLDYgKzcyLDM5IEBACiAjZGVmaW5lIEpTX0VYUE9SVENMQVNTCiAj
ZGVmaW5lIFdFQktJVF9FWFBPUlREQVRBCiAKKyNkZWZpbmUgV1RGX0VYUE9SVF9QUklWQVRFCisj
ZGVmaW5lIEpTX0VYUE9SVF9QUklWQVRFCisKKyNpZmRlZiBfX2NwbHVzcGx1cworCisvLyBUaGVz
ZSB1bmRlZnMgbWF0Y2ggdXAgd2l0aCBkZWZpbmVzIGluIFdlYktpdDJQcmVmaXguaCBmb3IgTWFj
IE9TIFguCisvLyBIZWxwcyB1cyBjYXRjaCBpZiBhbnlvbmUgdXNlcyBuZXcgb3IgZGVsZXRlIGJ5
IGFjY2lkZW50IGluIGNvZGUgYW5kIGRvZXNuJ3QgaW5jbHVkZSAiY29uZmlnLmgiLgorI3VuZGVm
IG5ldworI3VuZGVmIGRlbGV0ZQorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisKKyNlbmRp
ZgorCisjaWZkZWYgX19jcGx1c3BsdXMKKyNpZm5kZWYgRVhURVJOX0NfQkVHSU4KKyNkZWZpbmUg
RVhURVJOX0NfQkVHSU4gZXh0ZXJuICJDIiB7CisjZW5kaWYKKyNpZm5kZWYgRVhURVJOX0NfRU5E
CisjZGVmaW5lIEVYVEVSTl9DX0VORCB9CisjZW5kaWYKKyNlbHNlCisjZGVmaW5lIEVYVEVSTl9D
X0JFR0lOCisjZGVmaW5lIEVYVEVSTl9DX0VORAorI2VuZGlmCisKKy8vIEZvciBkZWZpbmluZyBn
ZXR0ZXJzIHRvIGEgc3RhdGljIHZhbHVlLCB3aGVyZSB0aGUgZ2V0dGVycyBoYXZlIGludGVybmFs
IGxpbmthZ2UKKyNkZWZpbmUgREVGSU5FX1NUQVRJQ19HRVRURVIodHlwZSwgbmFtZSwgYXJndW1l
bnRzKSBcCitzdGF0aWMgY29uc3QgdHlwZSYgbmFtZSgpIFwKK3sgXAorICAgIERFRklORV9TVEFU
SUNfTE9DQUwodHlwZSwgbmFtZSMjVmFsdWUsIGFyZ3VtZW50cyk7IFwKKyAgICByZXR1cm4gbmFt
ZSMjVmFsdWU7IFwKK30KKwogI2luY2x1ZGUgPFdlYkNvcmUvRW1wdHlQcm90b2NvbERlZmluaXRp
b25zLmg+CiAKICNlbGlmIGRlZmluZWQoV0lOMzIpIHx8IGRlZmluZWQoX1dJTjMyKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84903</attachid>
            <date>2011-03-06 17:52:29 -0800</date>
            <delta_ts>2011-03-06 19:43:59 -0800</delta_ts>
            <desc>Retry - Step 1 re-submit w/attempts at GTK, Qt and Win build fixes.</desc>
            <filename>jscore_export_step1try2.patch</filename>
            <type>text/plain</type>
            <size>17676</size>
            <attacher name="Kevin Ollivier">kevino</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL2NvbmZpZy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL2NvbmZpZy5oCShyZXZpc2lvbiA4MDQz
NSkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL2NvbmZpZy5oCSh3b3JraW5nIGNv
cHkpCkBAIC01Myw0ICs1Myw3IEBACiAjZGVmaW5lIEpTX0VYUE9SVERBVEEKICNlbmRpZgogCisj
ZGVmaW5lIFdURl9FWFBPUlRfUFJJVkFURSBKU19FWFBPUlREQVRBCisjZGVmaW5lIEpTX0VYUE9S
VF9QUklWQVRFIEpTX0VYUE9SVERBVEEKKwogI2VuZGlmIC8vIGNvbmZpZ19oCkluZGV4OiBUb29s
cy9EdW1wUmVuZGVyVHJlZS9jb25maWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVy
VHJlZS9jb25maWcuaAkocmV2aXNpb24gODA0MzUpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9j
b25maWcuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTMgKzI2LDIwIEBACiAKICNpbmNsdWRlIDx3
dGYvUGxhdGZvcm0uaD4KIAotI2lmZGVmIF9fY3BsdXNwbHVzCi0jdW5kZWYgbmV3Ci0jdW5kZWYg
ZGVsZXRlCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNlbmRpZgorLyogU2VlIG5vdGUg
aW4gd3RmL1BsYXRmb3JtLmggZm9yIG1vcmUgaW5mbyBvbiBFWFBPUlRfTUFDUk9TLiAqLworI2lm
IFVTRShFWFBPUlRfTUFDUk9TKQorI2luY2x1ZGUgPHd0Zi9FeHBvcnRNYWNyb3MuaD4KIAotI2lm
IE9TKFdJTkRPV1MpICYmICFDT01QSUxFUihHQ0MpCisjZGVmaW5lIFdURl9FWFBPUlRfUFJJVkFU
RSBXVEZfSU1QT1JUCisjZGVmaW5lIEpTX0VYUE9SVF9QUklWQVRFIFdURl9JTVBPUlQKKyNkZWZp
bmUgV0VCS0lUX0VYUE9SVERBVEEgV1RGX0lNUE9SVAorCisjZGVmaW5lIEpTX0VYUE9SVERBVEEg
SlNfRVhQT1JUX1BSSVZBVEUKKyNkZWZpbmUgSlNfRVhQT1JUQ0xBU1MgSlNfRVhQT1JUX1BSSVZB
VEUKKworI2Vsc2UgLyogIVVTRShFWFBPUlRfTUFDUk9TKSAqLworCisjaWYgT1MoV0lORE9XUykg
JiYgIUNPTVBJTEVSKEdDQykgJiYgIWRlZmluZWQoQlVJTERJTkdfV1hfXykKICNkZWZpbmUgSlNf
RVhQT1JUREFUQSBfX2RlY2xzcGVjKGRsbGltcG9ydCkKICNkZWZpbmUgV0VCS0lUX0VYUE9SVERB
VEEgX19kZWNsc3BlYyhkbGxpbXBvcnQpCiAjZWxzZQpAQCAtNDAsNiArNDcsMTcgQEAKICNkZWZp
bmUgV0VCS0lUX0VYUE9SVERBVEEKICNlbmRpZgogCisjZGVmaW5lIFdURl9FWFBPUlRfUFJJVkFU
RSBKU19FWFBPUlREQVRBCisjZGVmaW5lIEpTX0VYUE9SVF9QUklWQVRFIEpTX0VYUE9SVERBVEEK
KworI2VuZGlmIC8qIFVTRShFWFBPUlRfTUFDUk9TKSAqLworCisjaWZkZWYgX19jcGx1c3BsdXMK
KyN1bmRlZiBuZXcKKyN1bmRlZiBkZWxldGUKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgor
I2VuZGlmCisKICNpZiBQTEFURk9STShNQUMpCiAjZGVmaW5lIFdURl9VU0VfQ0YgMQogCkluZGV4
OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lv
biA4MDQzNSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2
IEBACisyMDExLTAzLTA2ICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEludHJv
ZHVjZSBXVEZfVVNFX0VYUE9SVF9NQUNST1MsIHdoaWNoIHdpbGwgYWxsb3cgdXMgdG8gcHV0IHNo
YXJlZCBsaWJyYXJ5IGltcG9ydC9leHBvcnQKKyAgICAgICAgaW5mbyBpbnRvIHRoZSBoZWFkZXJz
IHJhdGhlciB0aGFuIGluIGV4cG9ydCBzeW1ib2wgZGVmaW5pdGlvbiBmaWxlcywgYnV0IGRpc2Fi
bGUgaXQgb24gCisgICAgICAgIGFsbCBwbGF0Zm9ybXMgaW5pdGlhbGx5IHNvIHdlIGNhbiBkZWFs
IHdpdGggcG9ydCBidWlsZCBpc3N1ZXMgb25lIHBvcnQgYXQgYSB0aW1lLgorICAgICAgICAKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NTUxCisKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9jb25maWcuaDoKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9jb25maWcuaDoKKwogMjAxMS0wMy0wNSAgQnJpYW4gV2VpbnN0ZWluICA8Yndl
aW5zdGVpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb25maWcuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvY29uZmlnLmgJKHJldmlzaW9uIDgwNDM1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2NvbmZpZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSwyMyBAQAogCiAj
aW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CiAKKy8qIFNlZSBub3RlIGluIHd0Zi9QbGF0Zm9ybS5o
IGZvciBtb3JlIGluZm8gb24gRVhQT1JUX01BQ1JPUy4gKi8KKyNpZiBVU0UoRVhQT1JUX01BQ1JP
UykKKyNpbmNsdWRlIDx3dGYvRXhwb3J0TWFjcm9zLmg+CisKKyNpZiBkZWZpbmVkKEJVSUxESU5H
X0phdmFTY3JpcHRDb3JlKSB8fCBkZWZpbmVkKEJVSUxESU5HX1dURikKKyNkZWZpbmUgV1RGX0VY
UE9SVF9QUklWQVRFIFdURl9FWFBPUlQKKyNkZWZpbmUgSlNfRVhQT1JUX1BSSVZBVEUgV1RGX0VY
UE9SVAorI2Vsc2UKKyNkZWZpbmUgV1RGX0VYUE9SVF9QUklWQVRFIFdURl9JTVBPUlQKKyNkZWZp
bmUgSlNfRVhQT1JUX1BSSVZBVEUgV1RGX0lNUE9SVAorI2VuZGlmCisKKyNkZWZpbmUgSlNfRVhQ
T1JUREFUQSBKU19FWFBPUlRfUFJJVkFURQorI2RlZmluZSBKU19FWFBPUlRDTEFTUyBKU19FWFBP
UlRfUFJJVkFURQorCisjZWxzZSAvKiAhVVNFKEVYUE9SVF9NQUNST1MpICovCisKICNpZiAhUExB
VEZPUk0oQ0hST01JVU0pICYmIE9TKFdJTkRPV1MpICYmICFkZWZpbmVkKEJVSUxESU5HX1dYX18p
ICYmICFDT01QSUxFUihHQ0MpCiAjaWYgZGVmaW5lZChCVUlMRElOR19KYXZhU2NyaXB0Q29yZSkg
fHwgZGVmaW5lZChCVUlMRElOR19XVEYpCiAjZGVmaW5lIEpTX0VYUE9SVERBVEEgX19kZWNsc3Bl
YyhkbGxleHBvcnQpCkBAIC00MSw2ICs1OCwxMSBAQAogI2RlZmluZSBKU19FWFBPUlRDTEFTUwog
I2VuZGlmCiAKKyNkZWZpbmUgV1RGX0VYUE9SVF9QUklWQVRFIEpTX0VYUE9SVERBVEEKKyNkZWZp
bmUgSlNfRVhQT1JUX1BSSVZBVEUgSlNfRVhQT1JUREFUQQorCisjZW5kaWYgLyogVVNFKEVYUE9S
VF9NQUNST1MpICovCisKICNpZiBPUyhXSU5ET1dTKQogCiAvLyBJZiB3ZSBkb24ndCBkZWZpbmUg
dGhlc2UsIHRoZXkgZ2V0IGRlZmluZWQgaW4gd2luZGVmLmguIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvUGxhdGZvcm0uaAkocmV2aXNpb24gODA0MzUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL1BsYXRmb3JtLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNjksNCArMTE2OSwxMCBA
QAogI2luY2x1ZGUgIkdUeXBlZGVmcy5oIgogI2VuZGlmCiAKKy8qIEZJWE1FOiBUaGlzIGRlZmlu
ZSB3b24ndCBiZSBuZWVkZWQgb25jZSAjMjc1NTEgaXMgZnVsbHkgbGFuZGVkLiBIb3dldmVyLCAK
KyAgIHNpbmNlIG1vc3QgcG9ydHMgdHJ5IHRvIHN1cHBvcnQgc3ViLXByb2plY3QgaW5kZXBlbmRl
bmNlLCBhZGRpbmcgbmV3IGhlYWRlcnMKKyAgIHRvIFdURiBjYXVzZXMgbWFueSBwb3J0cyB0byBi
cmVhaywgYW5kIHNvIHRoaXMgd2F5IHdlIGNhbiBhZGRyZXNzIHRoZSBidWlsZAorICAgYnJlYWth
Z2VzIG9uZSBwb3J0IGF0IGEgdGltZS4gKi8KKyNkZWZpbmUgV1RGX1VTRV9FWFBPUlRfTUFDUk9T
IDAKKwogI2VuZGlmIC8qIFdURl9QbGF0Zm9ybV9oICovCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL0Fzc2VydGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL0Fzc2VydGlvbnMuaAkocmV2aXNpb24gODA0MzUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL0Fzc2VydGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTQyLDE0ICsxNDIsMTQg
QEAKICAgICBXVEZMb2dDaGFubmVsU3RhdGUgc3RhdGU7CiB9IFdURkxvZ0NoYW5uZWw7CiAKLXZv
aWQgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZShjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwg
Y29uc3QgY2hhciogZnVuY3Rpb24sIGNvbnN0IGNoYXIqIGFzc2VydGlvbik7Ci12b2lkIFdURlJl
cG9ydEFzc2VydGlvbkZhaWx1cmVXaXRoTWVzc2FnZShjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGlu
ZSwgY29uc3QgY2hhciogZnVuY3Rpb24sIGNvbnN0IGNoYXIqIGFzc2VydGlvbiwgY29uc3QgY2hh
ciogZm9ybWF0LCAuLi4pIFdURl9BVFRSSUJVVEVfUFJJTlRGKDUsIDYpOwotdm9pZCBXVEZSZXBv
cnRBcmd1bWVudEFzc2VydGlvbkZhaWx1cmUoY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNv
bnN0IGNoYXIqIGZ1bmN0aW9uLCBjb25zdCBjaGFyKiBhcmdOYW1lLCBjb25zdCBjaGFyKiBhc3Nl
cnRpb24pOwotdm9pZCBXVEZSZXBvcnRCYWNrdHJhY2UoKTsKLXZvaWQgV1RGUmVwb3J0RmF0YWxF
cnJvcihjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciogZnVuY3Rpb24sIGNv
bnN0IGNoYXIqIGZvcm1hdCwgLi4uKSBXVEZfQVRUUklCVVRFX1BSSU5URig0LCA1KTsKLXZvaWQg
V1RGUmVwb3J0RXJyb3IoY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIqIGZ1
bmN0aW9uLCBjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikgV1RGX0FUVFJJQlVURV9QUklOVEYoNCwg
NSk7Ci12b2lkIFdURkxvZyhXVEZMb2dDaGFubmVsKiBjaGFubmVsLCBjb25zdCBjaGFyKiBmb3Jt
YXQsIC4uLikgV1RGX0FUVFJJQlVURV9QUklOVEYoMiwgMyk7Ci12b2lkIFdURkxvZ1ZlcmJvc2Uo
Y29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uLCBXVEZMb2dD
aGFubmVsKiBjaGFubmVsLCBjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikgV1RGX0FUVFJJQlVURV9Q
UklOVEYoNSwgNik7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBXVEZSZXBvcnRBc3NlcnRpb25G
YWlsdXJlKGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiBmdW5jdGlvbiwg
Y29uc3QgY2hhciogYXNzZXJ0aW9uKTsKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIFdURlJlcG9y
dEFzc2VydGlvbkZhaWx1cmVXaXRoTWVzc2FnZShjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwg
Y29uc3QgY2hhciogZnVuY3Rpb24sIGNvbnN0IGNoYXIqIGFzc2VydGlvbiwgY29uc3QgY2hhciog
Zm9ybWF0LCAuLi4pIFdURl9BVFRSSUJVVEVfUFJJTlRGKDUsIDYpOworV1RGX0VYUE9SVF9QUklW
QVRFIHZvaWQgV1RGUmVwb3J0QXJndW1lbnRBc3NlcnRpb25GYWlsdXJlKGNvbnN0IGNoYXIqIGZp
bGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiBmdW5jdGlvbiwgY29uc3QgY2hhciogYXJnTmFtZSwg
Y29uc3QgY2hhciogYXNzZXJ0aW9uKTsKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIFdURlJlcG9y
dEJhY2t0cmFjZSgpOworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgV1RGUmVwb3J0RmF0YWxFcnJv
cihjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciogZnVuY3Rpb24sIGNvbnN0
IGNoYXIqIGZvcm1hdCwgLi4uKSBXVEZfQVRUUklCVVRFX1BSSU5URig0LCA1KTsKK1dURl9FWFBP
UlRfUFJJVkFURSB2b2lkIFdURlJlcG9ydEVycm9yKGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5l
LCBjb25zdCBjaGFyKiBmdW5jdGlvbiwgY29uc3QgY2hhciogZm9ybWF0LCAuLi4pIFdURl9BVFRS
SUJVVEVfUFJJTlRGKDQsIDUpOworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgV1RGTG9nKFdURkxv
Z0NoYW5uZWwqIGNoYW5uZWwsIGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKSBXVEZfQVRUUklCVVRF
X1BSSU5URigyLCAzKTsKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIFdURkxvZ1ZlcmJvc2UoY29u
c3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uLCBXVEZMb2dDaGFu
bmVsKiBjaGFubmVsLCBjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikgV1RGX0FUVFJJQlVURV9QUklO
VEYoNSwgNik7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0Jhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQmFzZS5oCShyZXZpc2lvbiA4MDQzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTgwLDYgKzgwLDExIEBACiAjZGVmaW5lIEpT
X0VYUE9SVAogI2VuZGlmIC8qIGRlZmluZWQoSlNfTk9fRVhQT1JUKSAqLwogCisvKiBKUyB0ZXN0
cyB1c2VzIFdURiBidXQgaGFzIG5vIGNvbmZpZy5oLCBzbyB3ZSBuZWVkIHRvIHNldCB0aGUgZXhw
b3J0IGRlZmluZXMgaGVyZS4gKi8KKyNpZm5kZWYgV1RGX0VYUE9SVF9QUklWQVRFCisjZGVmaW5l
IFdURl9FWFBPUlRfUFJJVkFURSBKU19FWFBPUlQKKyNlbmRpZgorCiAjaWZkZWYgX19jcGx1c3Bs
dXMKIGV4dGVybiAiQyIgewogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDgwNDM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDExLTAzLTA2ICBLZXZpbiBPbGxpdmllciAgPGtl
dmlub0B0aGVvbGxpdmllcnMuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEludHJvZHVjZSBXVEZfVVNFX0VYUE9SVF9NQUNST1MsIHdoaWNoIHdp
bGwgYWxsb3cgdXMgdG8gcHV0IHNoYXJlZCBsaWJyYXJ5IGltcG9ydC9leHBvcnQKKyAgICAgICAg
aW5mbyBpbnRvIHRoZSBoZWFkZXJzIHJhdGhlciB0aGFuIGluIGV4cG9ydCBzeW1ib2wgZGVmaW5p
dGlvbiBmaWxlcywgYnV0IGRpc2FibGUgaXQgb24gCisgICAgICAgIGFsbCBwbGF0Zm9ybXMgaW5p
dGlhbGx5IHNvIHdlIGNhbiBkZWFsIHdpdGggcG9ydCBidWlsZCBpc3N1ZXMgb25lIHBvcnQgYXQg
YSB0aW1lLgorICAgICAgICAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTI3NTUxCisKKyAgICAgICAgKiBBUEkvSlNCYXNlLmg6CisgICAgICAgICogY29u
ZmlnLmg6CisgICAgICAgICogd3RmL0Fzc2VydGlvbnMuaDoKKyAgICAgICAgKiB3dGYvUGxhdGZv
cm0uaDoKKwogMjAxMS0wMy0wNSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0R2x1ZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRHbHVlL0No
YW5nZUxvZwkocmV2aXNpb24gODA0MzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdEdsdWUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDMtMDYgIEtldmluIE9s
bGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIFdURl9VU0VfRVhQT1JUX01BQ1JP
Uywgd2hpY2ggd2lsbCBhbGxvdyB1cyB0byBwdXQgc2hhcmVkIGxpYnJhcnkgaW1wb3J0L2V4cG9y
dAorICAgICAgICBpbmZvIGludG8gdGhlIGhlYWRlcnMgcmF0aGVyIHRoYW4gaW4gZXhwb3J0IHN5
bWJvbCBkZWZpbml0aW9uIGZpbGVzLCBidXQgZGlzYWJsZSBpdCBvbiAKKyAgICAgICAgYWxsIHBs
YXRmb3JtcyBpbml0aWFsbHkgc28gd2UgY2FuIGRlYWwgd2l0aCBwb3J0IGJ1aWxkIGlzc3VlcyBv
bmUgcG9ydCBhdCBhIHRpbWUuCisgICAgICAgIAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc1NTEKKworICAgICAgICAqIGNvbmZpZy5oOgorCiAyMDEx
LTAzLTA0ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgRGltaXRyaSBHbGF6a292LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRHbHVlL2NvbmZp
Zy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0R2x1ZS9jb25maWcuaAkocmV2aXNp
b24gODA0MzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdEdsdWUvY29uZmlnLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE5LDMgKzE5LDYgQEAKIAogI2RlZmluZSBKU19FWFBPUlREQVRBCiAjZGVmaW5lIEpT
X0VYUE9SVENMQVNTCisjZGVmaW5lIEpTX0VYUE9SVF9QUklWQVRFCisjZGVmaW5lIFdURl9FWFBP
UlRfUFJJVkFURQorCkluZGV4OiBTb3VyY2UvV2ViS2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dlYklu
c3BlY3RvckNsaWVudENGLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2NmL1dlYkNv
cmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcAkocmV2aXNpb24gODA0MzUpCisrKyBT
b3VyY2UvV2ViS2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsMTEgQEAKICNkZWZpbmUgV1RGX1VTRV9KU0MgMQog
I2VuZGlmCiAKKy8vIExlYXZlIHRoZXNlIHNldCB0byBub3RoaW5nIHVudGlsIHdlIHN3aXRjaCBN
YWMgYW5kIFdpbiBwb3J0cyBvdmVyIHRvIAorLy8gdXNpbmcgdGhlIGV4cG9ydCBtYWNyb3MuCisj
ZGVmaW5lIEpTX0VYUE9SVF9QUklWQVRFCisjZGVmaW5lIFdURl9FWFBPUlRfUFJJVkFURQorCiAj
aWYgZGVmaW5lZChXSU4zMikgfHwgZGVmaW5lZChfV0lOMzIpCiAjaWZuZGVmIFdURl9VU0VfQ0ZO
RVRXT1JLCiAjZGVmaW5lIFdURl9VU0VfQ0ZORVRXT1JLIDEKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Y2YvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2YvQ2hhbmdlTG9nCShy
ZXZpc2lvbiA4MDQ0NCkKKysrIFNvdXJjZS9XZWJLaXQvY2YvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDMtMDYgIEtldmluIE9sbGl2aWVyICA8a2V2aW5v
QHRoZW9sbGl2aWVycy5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSW50cm9kdWNlIFdURl9VU0VfRVhQT1JUX01BQ1JPUywgd2hpY2ggd2lsbCBh
bGxvdyB1cyB0byBwdXQgc2hhcmVkIGxpYnJhcnkgaW1wb3J0L2V4cG9ydAorICAgICAgICBpbmZv
IGludG8gdGhlIGhlYWRlcnMgcmF0aGVyIHRoYW4gaW4gZXhwb3J0IHN5bWJvbCBkZWZpbml0aW9u
IGZpbGVzLCBidXQgZGlzYWJsZSBpdCBvbiAKKyAgICAgICAgYWxsIHBsYXRmb3JtcyBpbml0aWFs
bHkgc28gd2UgY2FuIGRlYWwgd2l0aCBwb3J0IGJ1aWxkIGlzc3VlcyBvbmUgcG9ydCBhdCBhIHRp
bWUuCisgICAgICAgIAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9Mjc1NTEKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVu
dENGLmNwcDoKKwogMjAxMS0wMi0yMyAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDgwNDM1KQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDMtMDYgIEtldmluIE9sbGl2aWVy
ICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIFdURl9VU0VfRVhQT1JUX01BQ1JPUywgd2hp
Y2ggd2lsbCBhbGxvdyB1cyB0byBwdXQgc2hhcmVkIGxpYnJhcnkgaW1wb3J0L2V4cG9ydAorICAg
ICAgICBpbmZvIGludG8gdGhlIGhlYWRlcnMgcmF0aGVyIHRoYW4gaW4gZXhwb3J0IHN5bWJvbCBk
ZWZpbml0aW9uIGZpbGVzLCBidXQgZGlzYWJsZSBpdCBvbiAKKyAgICAgICAgYWxsIHBsYXRmb3Jt
cyBpbml0aWFsbHkgc28gd2UgY2FuIGRlYWwgd2l0aCBwb3J0IGJ1aWxkIGlzc3VlcyBvbmUgcG9y
dCBhdCBhIHRpbWUuCisgICAgICAgIAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9Mjc1NTEKKworICAgICAgICAqIFdlYktpdFByZWZpeC5oOgorCiAyMDEx
LTAzLTA2ICBKZXNzaWUgQmVybGluICA8amJlcmxpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgU2FtIFdlaW5pZy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYktpdFByZWZp
eC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYktpdFByZWZpeC5oCShyZXZp
c2lvbiA4MDQzNSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYktpdFByZWZpeC5oCSh3b3JraW5n
IGNvcHkpCkBAIC03OSwxMiArNzksNiBAQAogI2RlZmluZSBXVEZfVVNFX0pTQyAxCiAjZGVmaW5l
IFdURl9VU0VfVjggMAogCi0jaWZkZWYgX19jcGx1c3BsdXMKLSNpbmNsdWRlIDx3dGYvRmFzdE1h
bGxvYy5oPgotI2VuZGlmCi0KLSNpbmNsdWRlIDx3dGYvRGlzYWxsb3dDVHlwZS5oPgotCiAvKiBX
b3JrIGFyb3VuZCBidWcgd2l0aCBDKysgbGlicmFyeSB0aGF0IHNjcmV3cyB1cCBPYmplY3RpdmUt
QysrIHdoZW4gZXhjZXB0aW9uIHN1cHBvcnQgaXMgZGlzYWJsZWQuICovCiAjdW5kZWYgdHJ5CiAj
dW5kZWYgY2F0Y2gKQEAgLTkyLDMgKzg2LDExIEBACiAjZGVmaW5lIEpTX0VYUE9SVERBVEEKICNk
ZWZpbmUgSlNfRVhQT1JUQ0xBU1MKICNkZWZpbmUgV0VCS0lUX0VYUE9SVERBVEEKKyNkZWZpbmUg
V1RGX0VYUE9SVF9QUklWQVRFCisjZGVmaW5lIEpTX0VYUE9SVF9QUklWQVRFCisKKyNpZmRlZiBf
X2NwbHVzcGx1cworI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisjZW5kaWYKKworI2luY2x1
ZGUgPHd0Zi9EaXNhbGxvd0NUeXBlLmg+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jb25maWcuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb25maWcuaAkocmV2aXNpb24gODA0MzUpCisr
KyBTb3VyY2UvV2ViQ29yZS9jb25maWcuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksMjkg
QEAKIAogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogCisvKiBTZWUgbm90ZSBpbiB3dGYvUGxh
dGZvcm0uaCBmb3IgbW9yZSBpbmZvIG9uIEVYUE9SVF9NQUNST1MuICovCisjaWYgVVNFKEVYUE9S
VF9NQUNST1MpCisjaW5jbHVkZSA8d3RmL0V4cG9ydE1hY3Jvcy5oPgorCisjaWYgZGVmaW5lZChC
VUlMRElOR19KYXZhU2NyaXB0Q29yZSkgfHwgZGVmaW5lZChCVUlMRElOR19XVEYpCisjZGVmaW5l
IFdURl9FWFBPUlRfUFJJVkFURSBXVEZfRVhQT1JUCisjZGVmaW5lIEpTX0VYUE9SVF9QUklWQVRF
IFdURl9FWFBPUlQKKyNlbHNlCisjZGVmaW5lIFdURl9FWFBPUlRfUFJJVkFURSBXVEZfSU1QT1JU
CisjZGVmaW5lIEpTX0VYUE9SVF9QUklWQVRFIFdURl9JTVBPUlQKKyNlbmRpZgorCisjZGVmaW5l
IEpTX0VYUE9SVERBVEEgSlNfRVhQT1JUX1BSSVZBVEUKKyNkZWZpbmUgSlNfRVhQT1JUQ0xBU1Mg
SlNfRVhQT1JUX1BSSVZBVEUKKworI2lmIGRlZmluZWQoQlVJTERJTkdfV2ViQ29yZSkgfHwgZGVm
aW5lZChCVUlMRElOR19XZWJLaXQpCisjZGVmaW5lIFdFQktJVF9FWFBPUlREQVRBIFdURl9FWFBP
UlQKKyNlbHNlCisjZGVmaW5lIFdFQktJVF9FWFBPUlREQVRBIFdURl9JTVBPUlQKKyNlbmRpZgor
CisjZWxzZSAvKiAhVVNFKEVYUE9SVF9NQUNST1MpICovCisKICNpZiAhUExBVEZPUk0oQ0hST01J
VU0pICYmIE9TKFdJTkRPV1MpICYmICFkZWZpbmVkKEJVSUxESU5HX1dYX18pICYmICFDT01QSUxF
UihHQ0MpCiAjaWYgZGVmaW5lZChCVUlMRElOR19KYXZhU2NyaXB0Q29yZSkgfHwgZGVmaW5lZChC
VUlMRElOR19XVEYpCiAjZGVmaW5lIEpTX0VYUE9SVERBVEEgX19kZWNsc3BlYyhkbGxleHBvcnQp
CkBAIC00MCwxMyArNjMsMTkgQEAKICNlbHNlCiAjZGVmaW5lIFdFQktJVF9FWFBPUlREQVRBIF9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQogI2VuZGlmCisjZGVmaW5lIFdURl9FWFBPUlRfUFJJVkFURSBK
U19FWFBPUlREQVRBCisjZGVmaW5lIEpTX0VYUE9SVF9QUklWQVRFIEpTX0VYUE9SVERBVEEKICNk
ZWZpbmUgSlNfRVhQT1JUQ0xBU1MgSlNfRVhQT1JUREFUQQogI2Vsc2UKICNkZWZpbmUgSlNfRVhQ
T1JUREFUQQogI2RlZmluZSBKU19FWFBPUlRDTEFTUwogI2RlZmluZSBXRUJLSVRfRVhQT1JUREFU
QQorI2RlZmluZSBXVEZfRVhQT1JUX1BSSVZBVEUKKyNkZWZpbmUgSlNfRVhQT1JUX1BSSVZBVEUK
ICNlbmRpZgogCisjZW5kaWYgLyogVVNFKEVYUE9SVF9NQUNST1MpICovCisKICNpZmRlZiBfX0FQ
UExFX18KICNkZWZpbmUgSEFWRV9GVU5DX1VTTEVFUCAxCiAjZW5kaWYgLyogX19BUFBMRV9fICov
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA4MDQzNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDExLTAzLTA2ICBLZXZpbiBP
bGxpdmllciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEludHJvZHVjZSBXVEZfVVNFX0VYUE9SVF9NQUNS
T1MsIHdoaWNoIHdpbGwgYWxsb3cgdXMgdG8gcHV0IHNoYXJlZCBsaWJyYXJ5IGltcG9ydC9leHBv
cnQKKyAgICAgICAgaW5mbyBpbnRvIHRoZSBoZWFkZXJzIHJhdGhlciB0aGFuIGluIGV4cG9ydCBz
eW1ib2wgZGVmaW5pdGlvbiBmaWxlcywgYnV0IGRpc2FibGUgaXQgb24gCisgICAgICAgIGFsbCBw
bGF0Zm9ybXMgaW5pdGlhbGx5IHNvIHdlIGNhbiBkZWFsIHdpdGggcG9ydCBidWlsZCBpc3N1ZXMg
b25lIHBvcnQgYXQgYSB0aW1lLgorICAgICAgICAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NTUxCisKKyAgICAgICAgKiBjb25maWcuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMvTG9nZ2luZ01hYy5tbToKKwogMjAxMS0wMy0wNiAgSmVzc2llIEJl
cmxpbiAgPGpiZXJsaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWlu
aWcuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9nZ2luZ01hYy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9nZ2luZ01hYy5tbQkocmV2
aXNpb24gODA0MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9nZ2luZ01hYy5t
bQkod29ya2luZyBjb3B5KQpAQCAtMjMsNiArMjMsOCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8K
IAorI2luY2x1ZGUgImNvbmZpZy5oIgorCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiA4MDQzNSkKKysrIFNvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDExLTAz
LTA2ICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEludHJvZHVjZSBXVEZfVVNF
X0VYUE9SVF9NQUNST1MsIHdoaWNoIHdpbGwgYWxsb3cgdXMgdG8gcHV0IHNoYXJlZCBsaWJyYXJ5
IGltcG9ydC9leHBvcnQKKyAgICAgICAgaW5mbyBpbnRvIHRoZSBoZWFkZXJzIHJhdGhlciB0aGFu
IGluIGV4cG9ydCBzeW1ib2wgZGVmaW5pdGlvbiBmaWxlcywgYnV0IGRpc2FibGUgaXQgb24gCisg
ICAgICAgIGFsbCBwbGF0Zm9ybXMgaW5pdGlhbGx5IHNvIHdlIGNhbiBkZWFsIHdpdGggcG9ydCBi
dWlsZCBpc3N1ZXMgb25lIHBvcnQgYXQgYSB0aW1lLgorICAgICAgICAKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NTUxCisKKyAgICAgICAgKiBjb25m
aWcuaDoKKwogMjAxMS0wMy0wNiAgSmVzc2llIEJlcmxpbiAgPGpiZXJsaW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9j
b25maWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9jb25maWcuaAkocmV2aXNpb24g
ODA0MzUpCisrKyBTb3VyY2UvV2ViS2l0Mi9jb25maWcuaAkod29ya2luZyBjb3B5KQpAQCAtMjgs
MzkgKzI4LDkgQEAKICNpbmNsdWRlICJhdXRvdG9vbHNjb25maWcuaCIKICNlbmRpZiAvKiBkZWZp
bmVkIChCVUlMRElOR19HVEtfXykgKi8KIAotI2lmZGVmIF9fY3BsdXNwbHVzCi0KLS8vIFRoZXNl
IHVuZGVmcyBtYXRjaCB1cCB3aXRoIGRlZmluZXMgaW4gV2ViS2l0MlByZWZpeC5oIGZvciBNYWMg
T1MgWC4KLS8vIEhlbHBzIHVzIGNhdGNoIGlmIGFueW9uZSB1c2VzIG5ldyBvciBkZWxldGUgYnkg
YWNjaWRlbnQgaW4gY29kZSBhbmQgZG9lc24ndCBpbmNsdWRlICJjb25maWcuaCIuCi0jdW5kZWYg
bmV3Ci0jdW5kZWYgZGVsZXRlCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLQotI2VuZGlm
Ci0KICNpbmNsdWRlIDx3dGYvRGlzYWxsb3dDVHlwZS5oPgogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9y
bS5oPgogCi0jaWZkZWYgX19jcGx1c3BsdXMKLSNpZm5kZWYgRVhURVJOX0NfQkVHSU4KLSNkZWZp
bmUgRVhURVJOX0NfQkVHSU4gZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLSNpZm5kZWYgRVhURVJOX0Nf
RU5ECi0jZGVmaW5lIEVYVEVSTl9DX0VORCB9Ci0jZW5kaWYKLSNlbHNlCi0jZGVmaW5lIEVYVEVS
Tl9DX0JFR0lOCi0jZGVmaW5lIEVYVEVSTl9DX0VORAotI2VuZGlmCi0KLS8vIEZvciBkZWZpbmlu
ZyBnZXR0ZXJzIHRvIGEgc3RhdGljIHZhbHVlLCB3aGVyZSB0aGUgZ2V0dGVycyBoYXZlIGludGVy
bmFsIGxpbmthZ2UKLSNkZWZpbmUgREVGSU5FX1NUQVRJQ19HRVRURVIodHlwZSwgbmFtZSwgYXJn
dW1lbnRzKSBcCi1zdGF0aWMgY29uc3QgdHlwZSYgbmFtZSgpIFwKLXsgXAotICAgIERFRklORV9T
VEFUSUNfTE9DQUwodHlwZSwgbmFtZSMjVmFsdWUsIGFyZ3VtZW50cyk7IFwKLSAgICByZXR1cm4g
bmFtZSMjVmFsdWU7IFwKLX0KLQogI2lmIGRlZmluZWQoQlVJTERJTkdfUVRfXykgfHwgZGVmaW5l
ZChCVUlMRElOR19HVEtfXykKIAogI2RlZmluZSBXVEZfVVNFX0pTQyAxCkBAIC02OCw2ICszOCw4
IEBACiAKICNkZWZpbmUgSlNfRVhQT1JUREFUQQogI2RlZmluZSBKU19FWFBPUlRDTEFTUworI2Rl
ZmluZSBXVEZfRVhQT1JUX1BSSVZBVEUKKyNkZWZpbmUgSlNfRVhQT1JUX1BSSVZBVEUKIAogI2Vs
aWYgZGVmaW5lZChfX0FQUExFX18pCiAKQEAgLTEwMiw2ICs3NCwzOSBAQAogI2RlZmluZSBKU19F
WFBPUlRDTEFTUwogI2RlZmluZSBXRUJLSVRfRVhQT1JUREFUQQogCisjZGVmaW5lIFdURl9FWFBP
UlRfUFJJVkFURQorI2RlZmluZSBKU19FWFBPUlRfUFJJVkFURQorCisjaWZkZWYgX19jcGx1c3Bs
dXMKKworLy8gVGhlc2UgdW5kZWZzIG1hdGNoIHVwIHdpdGggZGVmaW5lcyBpbiBXZWJLaXQyUHJl
Zml4LmggZm9yIE1hYyBPUyBYLgorLy8gSGVscHMgdXMgY2F0Y2ggaWYgYW55b25lIHVzZXMgbmV3
IG9yIGRlbGV0ZSBieSBhY2NpZGVudCBpbiBjb2RlIGFuZCBkb2Vzbid0IGluY2x1ZGUgImNvbmZp
Zy5oIi4KKyN1bmRlZiBuZXcKKyN1bmRlZiBkZWxldGUKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxv
Yy5oPgorCisjZW5kaWYKKworI2lmZGVmIF9fY3BsdXNwbHVzCisjaWZuZGVmIEVYVEVSTl9DX0JF
R0lOCisjZGVmaW5lIEVYVEVSTl9DX0JFR0lOIGV4dGVybiAiQyIgeworI2VuZGlmCisjaWZuZGVm
IEVYVEVSTl9DX0VORAorI2RlZmluZSBFWFRFUk5fQ19FTkQgfQorI2VuZGlmCisjZWxzZQorI2Rl
ZmluZSBFWFRFUk5fQ19CRUdJTgorI2RlZmluZSBFWFRFUk5fQ19FTkQKKyNlbmRpZgorCisvLyBG
b3IgZGVmaW5pbmcgZ2V0dGVycyB0byBhIHN0YXRpYyB2YWx1ZSwgd2hlcmUgdGhlIGdldHRlcnMg
aGF2ZSBpbnRlcm5hbCBsaW5rYWdlCisjZGVmaW5lIERFRklORV9TVEFUSUNfR0VUVEVSKHR5cGUs
IG5hbWUsIGFyZ3VtZW50cykgXAorc3RhdGljIGNvbnN0IHR5cGUmIG5hbWUoKSBcCit7IFwKKyAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKHR5cGUsIG5hbWUjI1ZhbHVlLCBhcmd1bWVudHMpOyBcCisg
ICAgcmV0dXJuIG5hbWUjI1ZhbHVlOyBcCit9CisKICNpbmNsdWRlIDxXZWJDb3JlL0VtcHR5UHJv
dG9jb2xEZWZpbml0aW9ucy5oPgogCiAjZWxpZiBkZWZpbmVkKFdJTjMyKSB8fCBkZWZpbmVkKF9X
SU4zMikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84910</attachid>
            <date>2011-03-06 19:43:59 -0800</date>
            <delta_ts>2011-03-07 08:18:50 -0800</delta_ts>
            <desc>Retry - Step 1 another attempt at GTK, Qt and Win build fixes.</desc>
            <filename>jscore_export_step1try3.patch</filename>
            <type>text/plain</type>
            <size>16658</size>
            <attacher name="Kevin Ollivier">kevino</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL2NvbmZpZy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL2NvbmZpZy5oCShyZXZpc2lvbiA4MDQz
NSkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL2NvbmZpZy5oCSh3b3JraW5nIGNv
cHkpCkBAIC01Myw0ICs1Myw3IEBACiAjZGVmaW5lIEpTX0VYUE9SVERBVEEKICNlbmRpZgogCisj
ZGVmaW5lIFdURl9FWFBPUlRfUFJJVkFURSBKU19FWFBPUlREQVRBCisjZGVmaW5lIEpTX0VYUE9S
VF9QUklWQVRFIEpTX0VYUE9SVERBVEEKKwogI2VuZGlmIC8vIGNvbmZpZ19oCkluZGV4OiBUb29s
cy9EdW1wUmVuZGVyVHJlZS9jb25maWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVy
VHJlZS9jb25maWcuaAkocmV2aXNpb24gODA0MzUpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9j
b25maWcuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTMgKzI2LDIwIEBACiAKICNpbmNsdWRlIDx3
dGYvUGxhdGZvcm0uaD4KIAotI2lmZGVmIF9fY3BsdXNwbHVzCi0jdW5kZWYgbmV3Ci0jdW5kZWYg
ZGVsZXRlCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNlbmRpZgorLyogU2VlIG5vdGUg
aW4gd3RmL1BsYXRmb3JtLmggZm9yIG1vcmUgaW5mbyBvbiBFWFBPUlRfTUFDUk9TLiAqLworI2lm
IFVTRShFWFBPUlRfTUFDUk9TKQorI2luY2x1ZGUgPHd0Zi9FeHBvcnRNYWNyb3MuaD4KIAotI2lm
IE9TKFdJTkRPV1MpICYmICFDT01QSUxFUihHQ0MpCisjZGVmaW5lIFdURl9FWFBPUlRfUFJJVkFU
RSBXVEZfSU1QT1JUCisjZGVmaW5lIEpTX0VYUE9SVF9QUklWQVRFIFdURl9JTVBPUlQKKyNkZWZp
bmUgV0VCS0lUX0VYUE9SVERBVEEgV1RGX0lNUE9SVAorCisjZGVmaW5lIEpTX0VYUE9SVERBVEEg
SlNfRVhQT1JUX1BSSVZBVEUKKyNkZWZpbmUgSlNfRVhQT1JUQ0xBU1MgSlNfRVhQT1JUX1BSSVZB
VEUKKworI2Vsc2UgLyogIVVTRShFWFBPUlRfTUFDUk9TKSAqLworCisjaWYgT1MoV0lORE9XUykg
JiYgIUNPTVBJTEVSKEdDQykgJiYgIWRlZmluZWQoQlVJTERJTkdfV1hfXykKICNkZWZpbmUgSlNf
RVhQT1JUREFUQSBfX2RlY2xzcGVjKGRsbGltcG9ydCkKICNkZWZpbmUgV0VCS0lUX0VYUE9SVERB
VEEgX19kZWNsc3BlYyhkbGxpbXBvcnQpCiAjZWxzZQpAQCAtNDAsNiArNDcsMTcgQEAKICNkZWZp
bmUgV0VCS0lUX0VYUE9SVERBVEEKICNlbmRpZgogCisjZGVmaW5lIFdURl9FWFBPUlRfUFJJVkFU
RSBKU19FWFBPUlREQVRBCisjZGVmaW5lIEpTX0VYUE9SVF9QUklWQVRFIEpTX0VYUE9SVERBVEEK
KworI2VuZGlmIC8qIFVTRShFWFBPUlRfTUFDUk9TKSAqLworCisjaWZkZWYgX19jcGx1c3BsdXMK
KyN1bmRlZiBuZXcKKyN1bmRlZiBkZWxldGUKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgor
I2VuZGlmCisKICNpZiBQTEFURk9STShNQUMpCiAjZGVmaW5lIFdURl9VU0VfQ0YgMQogCkluZGV4
OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lv
biA4MDQzNSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2
IEBACisyMDExLTAzLTA2ICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEludHJv
ZHVjZSBXVEZfVVNFX0VYUE9SVF9NQUNST1MsIHdoaWNoIHdpbGwgYWxsb3cgdXMgdG8gcHV0IHNo
YXJlZCBsaWJyYXJ5IGltcG9ydC9leHBvcnQKKyAgICAgICAgaW5mbyBpbnRvIHRoZSBoZWFkZXJz
IHJhdGhlciB0aGFuIGluIGV4cG9ydCBzeW1ib2wgZGVmaW5pdGlvbiBmaWxlcywgYnV0IGRpc2Fi
bGUgaXQgb24gCisgICAgICAgIGFsbCBwbGF0Zm9ybXMgaW5pdGlhbGx5IHNvIHdlIGNhbiBkZWFs
IHdpdGggcG9ydCBidWlsZCBpc3N1ZXMgb25lIHBvcnQgYXQgYSB0aW1lLgorICAgICAgICAKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NTUxCisKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9jb25maWcuaDoKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9jb25maWcuaDoKKwogMjAxMS0wMy0wNSAgQnJpYW4gV2VpbnN0ZWluICA8Yndl
aW5zdGVpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb25maWcuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvY29uZmlnLmgJKHJldmlzaW9uIDgwNDM1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2NvbmZpZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSwyMyBAQAogCiAj
aW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CiAKKy8qIFNlZSBub3RlIGluIHd0Zi9QbGF0Zm9ybS5o
IGZvciBtb3JlIGluZm8gb24gRVhQT1JUX01BQ1JPUy4gKi8KKyNpZiBVU0UoRVhQT1JUX01BQ1JP
UykKKyNpbmNsdWRlIDx3dGYvRXhwb3J0TWFjcm9zLmg+CisKKyNpZiBkZWZpbmVkKEJVSUxESU5H
X0phdmFTY3JpcHRDb3JlKSB8fCBkZWZpbmVkKEJVSUxESU5HX1dURikKKyNkZWZpbmUgV1RGX0VY
UE9SVF9QUklWQVRFIFdURl9FWFBPUlQKKyNkZWZpbmUgSlNfRVhQT1JUX1BSSVZBVEUgV1RGX0VY
UE9SVAorI2Vsc2UKKyNkZWZpbmUgV1RGX0VYUE9SVF9QUklWQVRFIFdURl9JTVBPUlQKKyNkZWZp
bmUgSlNfRVhQT1JUX1BSSVZBVEUgV1RGX0lNUE9SVAorI2VuZGlmCisKKyNkZWZpbmUgSlNfRVhQ
T1JUREFUQSBKU19FWFBPUlRfUFJJVkFURQorI2RlZmluZSBKU19FWFBPUlRDTEFTUyBKU19FWFBP
UlRfUFJJVkFURQorCisjZWxzZSAvKiAhVVNFKEVYUE9SVF9NQUNST1MpICovCisKICNpZiAhUExB
VEZPUk0oQ0hST01JVU0pICYmIE9TKFdJTkRPV1MpICYmICFkZWZpbmVkKEJVSUxESU5HX1dYX18p
ICYmICFDT01QSUxFUihHQ0MpCiAjaWYgZGVmaW5lZChCVUlMRElOR19KYXZhU2NyaXB0Q29yZSkg
fHwgZGVmaW5lZChCVUlMRElOR19XVEYpCiAjZGVmaW5lIEpTX0VYUE9SVERBVEEgX19kZWNsc3Bl
YyhkbGxleHBvcnQpCkBAIC00MSw2ICs1OCwxMSBAQAogI2RlZmluZSBKU19FWFBPUlRDTEFTUwog
I2VuZGlmCiAKKyNkZWZpbmUgV1RGX0VYUE9SVF9QUklWQVRFIEpTX0VYUE9SVERBVEEKKyNkZWZp
bmUgSlNfRVhQT1JUX1BSSVZBVEUgSlNfRVhQT1JUREFUQQorCisjZW5kaWYgLyogVVNFKEVYUE9S
VF9NQUNST1MpICovCisKICNpZiBPUyhXSU5ET1dTKQogCiAvLyBJZiB3ZSBkb24ndCBkZWZpbmUg
dGhlc2UsIHRoZXkgZ2V0IGRlZmluZWQgaW4gd2luZGVmLmguIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvUGxhdGZvcm0uaAkocmV2aXNpb24gODA0MzUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL1BsYXRmb3JtLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNjksNCArMTE2OSwxMCBA
QAogI2luY2x1ZGUgIkdUeXBlZGVmcy5oIgogI2VuZGlmCiAKKy8qIEZJWE1FOiBUaGlzIGRlZmlu
ZSB3b24ndCBiZSBuZWVkZWQgb25jZSAjMjc1NTEgaXMgZnVsbHkgbGFuZGVkLiBIb3dldmVyLCAK
KyAgIHNpbmNlIG1vc3QgcG9ydHMgdHJ5IHRvIHN1cHBvcnQgc3ViLXByb2plY3QgaW5kZXBlbmRl
bmNlLCBhZGRpbmcgbmV3IGhlYWRlcnMKKyAgIHRvIFdURiBjYXVzZXMgbWFueSBwb3J0cyB0byBi
cmVhaywgYW5kIHNvIHRoaXMgd2F5IHdlIGNhbiBhZGRyZXNzIHRoZSBidWlsZAorICAgYnJlYWth
Z2VzIG9uZSBwb3J0IGF0IGEgdGltZS4gKi8KKyNkZWZpbmUgV1RGX1VTRV9FWFBPUlRfTUFDUk9T
IDAKKwogI2VuZGlmIC8qIFdURl9QbGF0Zm9ybV9oICovCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL0Fzc2VydGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL0Fzc2VydGlvbnMuaAkocmV2aXNpb24gODA0MzUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL0Fzc2VydGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTQyLDE0ICsxNDIsMTQg
QEAKICAgICBXVEZMb2dDaGFubmVsU3RhdGUgc3RhdGU7CiB9IFdURkxvZ0NoYW5uZWw7CiAKLXZv
aWQgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZShjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwg
Y29uc3QgY2hhciogZnVuY3Rpb24sIGNvbnN0IGNoYXIqIGFzc2VydGlvbik7Ci12b2lkIFdURlJl
cG9ydEFzc2VydGlvbkZhaWx1cmVXaXRoTWVzc2FnZShjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGlu
ZSwgY29uc3QgY2hhciogZnVuY3Rpb24sIGNvbnN0IGNoYXIqIGFzc2VydGlvbiwgY29uc3QgY2hh
ciogZm9ybWF0LCAuLi4pIFdURl9BVFRSSUJVVEVfUFJJTlRGKDUsIDYpOwotdm9pZCBXVEZSZXBv
cnRBcmd1bWVudEFzc2VydGlvbkZhaWx1cmUoY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNv
bnN0IGNoYXIqIGZ1bmN0aW9uLCBjb25zdCBjaGFyKiBhcmdOYW1lLCBjb25zdCBjaGFyKiBhc3Nl
cnRpb24pOwotdm9pZCBXVEZSZXBvcnRCYWNrdHJhY2UoKTsKLXZvaWQgV1RGUmVwb3J0RmF0YWxF
cnJvcihjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciogZnVuY3Rpb24sIGNv
bnN0IGNoYXIqIGZvcm1hdCwgLi4uKSBXVEZfQVRUUklCVVRFX1BSSU5URig0LCA1KTsKLXZvaWQg
V1RGUmVwb3J0RXJyb3IoY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIqIGZ1
bmN0aW9uLCBjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikgV1RGX0FUVFJJQlVURV9QUklOVEYoNCwg
NSk7Ci12b2lkIFdURkxvZyhXVEZMb2dDaGFubmVsKiBjaGFubmVsLCBjb25zdCBjaGFyKiBmb3Jt
YXQsIC4uLikgV1RGX0FUVFJJQlVURV9QUklOVEYoMiwgMyk7Ci12b2lkIFdURkxvZ1ZlcmJvc2Uo
Y29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uLCBXVEZMb2dD
aGFubmVsKiBjaGFubmVsLCBjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikgV1RGX0FUVFJJQlVURV9Q
UklOVEYoNSwgNik7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBXVEZSZXBvcnRBc3NlcnRpb25G
YWlsdXJlKGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiBmdW5jdGlvbiwg
Y29uc3QgY2hhciogYXNzZXJ0aW9uKTsKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIFdURlJlcG9y
dEFzc2VydGlvbkZhaWx1cmVXaXRoTWVzc2FnZShjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwg
Y29uc3QgY2hhciogZnVuY3Rpb24sIGNvbnN0IGNoYXIqIGFzc2VydGlvbiwgY29uc3QgY2hhciog
Zm9ybWF0LCAuLi4pIFdURl9BVFRSSUJVVEVfUFJJTlRGKDUsIDYpOworV1RGX0VYUE9SVF9QUklW
QVRFIHZvaWQgV1RGUmVwb3J0QXJndW1lbnRBc3NlcnRpb25GYWlsdXJlKGNvbnN0IGNoYXIqIGZp
bGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiBmdW5jdGlvbiwgY29uc3QgY2hhciogYXJnTmFtZSwg
Y29uc3QgY2hhciogYXNzZXJ0aW9uKTsKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIFdURlJlcG9y
dEJhY2t0cmFjZSgpOworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgV1RGUmVwb3J0RmF0YWxFcnJv
cihjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciogZnVuY3Rpb24sIGNvbnN0
IGNoYXIqIGZvcm1hdCwgLi4uKSBXVEZfQVRUUklCVVRFX1BSSU5URig0LCA1KTsKK1dURl9FWFBP
UlRfUFJJVkFURSB2b2lkIFdURlJlcG9ydEVycm9yKGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5l
LCBjb25zdCBjaGFyKiBmdW5jdGlvbiwgY29uc3QgY2hhciogZm9ybWF0LCAuLi4pIFdURl9BVFRS
SUJVVEVfUFJJTlRGKDQsIDUpOworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgV1RGTG9nKFdURkxv
Z0NoYW5uZWwqIGNoYW5uZWwsIGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKSBXVEZfQVRUUklCVVRF
X1BSSU5URigyLCAzKTsKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIFdURkxvZ1ZlcmJvc2UoY29u
c3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uLCBXVEZMb2dDaGFu
bmVsKiBjaGFubmVsLCBjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikgV1RGX0FUVFJJQlVURV9QUklO
VEYoNSwgNik7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0Jhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQmFzZS5oCShyZXZpc2lvbiA4MDQzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTgwLDYgKzgwLDExIEBACiAjZGVmaW5lIEpT
X0VYUE9SVAogI2VuZGlmIC8qIGRlZmluZWQoSlNfTk9fRVhQT1JUKSAqLwogCisvKiBKUyB0ZXN0
cyB1c2VzIFdURiBidXQgaGFzIG5vIGNvbmZpZy5oLCBzbyB3ZSBuZWVkIHRvIHNldCB0aGUgZXhw
b3J0IGRlZmluZXMgaGVyZS4gKi8KKyNpZm5kZWYgV1RGX0VYUE9SVF9QUklWQVRFCisjZGVmaW5l
IFdURl9FWFBPUlRfUFJJVkFURSBKU19FWFBPUlQKKyNlbmRpZgorCiAjaWZkZWYgX19jcGx1c3Bs
dXMKIGV4dGVybiAiQyIgewogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDgwNDM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDExLTAzLTA2ICBLZXZpbiBPbGxpdmllciAgPGtl
dmlub0B0aGVvbGxpdmllcnMuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEludHJvZHVjZSBXVEZfVVNFX0VYUE9SVF9NQUNST1MsIHdoaWNoIHdp
bGwgYWxsb3cgdXMgdG8gcHV0IHNoYXJlZCBsaWJyYXJ5IGltcG9ydC9leHBvcnQKKyAgICAgICAg
aW5mbyBpbnRvIHRoZSBoZWFkZXJzIHJhdGhlciB0aGFuIGluIGV4cG9ydCBzeW1ib2wgZGVmaW5p
dGlvbiBmaWxlcywgYnV0IGRpc2FibGUgaXQgb24gCisgICAgICAgIGFsbCBwbGF0Zm9ybXMgaW5p
dGlhbGx5IHNvIHdlIGNhbiBkZWFsIHdpdGggcG9ydCBidWlsZCBpc3N1ZXMgb25lIHBvcnQgYXQg
YSB0aW1lLgorICAgICAgICAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTI3NTUxCisKKyAgICAgICAgKiBBUEkvSlNCYXNlLmg6CisgICAgICAgICogY29u
ZmlnLmg6CisgICAgICAgICogd3RmL0Fzc2VydGlvbnMuaDoKKyAgICAgICAgKiB3dGYvUGxhdGZv
cm0uaDoKKwogMjAxMS0wMy0wNSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0R2x1ZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRHbHVlL0No
YW5nZUxvZwkocmV2aXNpb24gODA0MzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdEdsdWUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDMtMDYgIEtldmluIE9s
bGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIFdURl9VU0VfRVhQT1JUX01BQ1JP
Uywgd2hpY2ggd2lsbCBhbGxvdyB1cyB0byBwdXQgc2hhcmVkIGxpYnJhcnkgaW1wb3J0L2V4cG9y
dAorICAgICAgICBpbmZvIGludG8gdGhlIGhlYWRlcnMgcmF0aGVyIHRoYW4gaW4gZXhwb3J0IHN5
bWJvbCBkZWZpbml0aW9uIGZpbGVzLCBidXQgZGlzYWJsZSBpdCBvbiAKKyAgICAgICAgYWxsIHBs
YXRmb3JtcyBpbml0aWFsbHkgc28gd2UgY2FuIGRlYWwgd2l0aCBwb3J0IGJ1aWxkIGlzc3VlcyBv
bmUgcG9ydCBhdCBhIHRpbWUuCisgICAgICAgIAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc1NTEKKworICAgICAgICAqIGNvbmZpZy5oOgorCiAyMDEx
LTAzLTA0ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgRGltaXRyaSBHbGF6a292LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRHbHVlL2NvbmZp
Zy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0R2x1ZS9jb25maWcuaAkocmV2aXNp
b24gODA0MzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdEdsdWUvY29uZmlnLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE5LDMgKzE5LDYgQEAKIAogI2RlZmluZSBKU19FWFBPUlREQVRBCiAjZGVmaW5lIEpT
X0VYUE9SVENMQVNTCisjZGVmaW5lIEpTX0VYUE9SVF9QUklWQVRFCisjZGVmaW5lIFdURl9FWFBP
UlRfUFJJVkFURQorCkluZGV4OiBTb3VyY2UvV2ViS2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dlYklu
c3BlY3RvckNsaWVudENGLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2NmL1dlYkNv
cmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcAkocmV2aXNpb24gODA0MzUpCisrKyBT
b3VyY2UvV2ViS2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsMTEgQEAKICNkZWZpbmUgV1RGX1VTRV9KU0MgMQog
I2VuZGlmCiAKKy8vIExlYXZlIHRoZXNlIHNldCB0byBub3RoaW5nIHVudGlsIHdlIHN3aXRjaCBN
YWMgYW5kIFdpbiBwb3J0cyBvdmVyIHRvIAorLy8gdXNpbmcgdGhlIGV4cG9ydCBtYWNyb3MuCisj
ZGVmaW5lIEpTX0VYUE9SVF9QUklWQVRFCisjZGVmaW5lIFdURl9FWFBPUlRfUFJJVkFURQorCiAj
aWYgZGVmaW5lZChXSU4zMikgfHwgZGVmaW5lZChfV0lOMzIpCiAjaWZuZGVmIFdURl9VU0VfQ0ZO
RVRXT1JLCiAjZGVmaW5lIFdURl9VU0VfQ0ZORVRXT1JLIDEKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Y2YvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2YvQ2hhbmdlTG9nCShy
ZXZpc2lvbiA4MDQ0NCkKKysrIFNvdXJjZS9XZWJLaXQvY2YvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDMtMDYgIEtldmluIE9sbGl2aWVyICA8a2V2aW5v
QHRoZW9sbGl2aWVycy5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSW50cm9kdWNlIFdURl9VU0VfRVhQT1JUX01BQ1JPUywgd2hpY2ggd2lsbCBh
bGxvdyB1cyB0byBwdXQgc2hhcmVkIGxpYnJhcnkgaW1wb3J0L2V4cG9ydAorICAgICAgICBpbmZv
IGludG8gdGhlIGhlYWRlcnMgcmF0aGVyIHRoYW4gaW4gZXhwb3J0IHN5bWJvbCBkZWZpbml0aW9u
IGZpbGVzLCBidXQgZGlzYWJsZSBpdCBvbiAKKyAgICAgICAgYWxsIHBsYXRmb3JtcyBpbml0aWFs
bHkgc28gd2UgY2FuIGRlYWwgd2l0aCBwb3J0IGJ1aWxkIGlzc3VlcyBvbmUgcG9ydCBhdCBhIHRp
bWUuCisgICAgICAgIAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9Mjc1NTEKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVu
dENGLmNwcDoKKwogMjAxMS0wMi0yMyAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDgwNDM1KQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDMtMDYgIEtldmluIE9sbGl2aWVy
ICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIFdURl9VU0VfRVhQT1JUX01BQ1JPUywgd2hp
Y2ggd2lsbCBhbGxvdyB1cyB0byBwdXQgc2hhcmVkIGxpYnJhcnkgaW1wb3J0L2V4cG9ydAorICAg
ICAgICBpbmZvIGludG8gdGhlIGhlYWRlcnMgcmF0aGVyIHRoYW4gaW4gZXhwb3J0IHN5bWJvbCBk
ZWZpbml0aW9uIGZpbGVzLCBidXQgZGlzYWJsZSBpdCBvbiAKKyAgICAgICAgYWxsIHBsYXRmb3Jt
cyBpbml0aWFsbHkgc28gd2UgY2FuIGRlYWwgd2l0aCBwb3J0IGJ1aWxkIGlzc3VlcyBvbmUgcG9y
dCBhdCBhIHRpbWUuCisgICAgICAgIAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9Mjc1NTEKKworICAgICAgICAqIFdlYktpdFByZWZpeC5oOgorCiAyMDEx
LTAzLTA2ICBKZXNzaWUgQmVybGluICA8amJlcmxpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgU2FtIFdlaW5pZy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYktpdFByZWZp
eC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYktpdFByZWZpeC5oCShyZXZp
c2lvbiA4MDQzNSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYktpdFByZWZpeC5oCSh3b3JraW5n
IGNvcHkpCkBAIC03OSwxMiArNzksNiBAQAogI2RlZmluZSBXVEZfVVNFX0pTQyAxCiAjZGVmaW5l
IFdURl9VU0VfVjggMAogCi0jaWZkZWYgX19jcGx1c3BsdXMKLSNpbmNsdWRlIDx3dGYvRmFzdE1h
bGxvYy5oPgotI2VuZGlmCi0KLSNpbmNsdWRlIDx3dGYvRGlzYWxsb3dDVHlwZS5oPgotCiAvKiBX
b3JrIGFyb3VuZCBidWcgd2l0aCBDKysgbGlicmFyeSB0aGF0IHNjcmV3cyB1cCBPYmplY3RpdmUt
QysrIHdoZW4gZXhjZXB0aW9uIHN1cHBvcnQgaXMgZGlzYWJsZWQuICovCiAjdW5kZWYgdHJ5CiAj
dW5kZWYgY2F0Y2gKQEAgLTkyLDMgKzg2LDExIEBACiAjZGVmaW5lIEpTX0VYUE9SVERBVEEKICNk
ZWZpbmUgSlNfRVhQT1JUQ0xBU1MKICNkZWZpbmUgV0VCS0lUX0VYUE9SVERBVEEKKyNkZWZpbmUg
V1RGX0VYUE9SVF9QUklWQVRFCisjZGVmaW5lIEpTX0VYUE9SVF9QUklWQVRFCisKKyNpZmRlZiBf
X2NwbHVzcGx1cworI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisjZW5kaWYKKworI2luY2x1
ZGUgPHd0Zi9EaXNhbGxvd0NUeXBlLmg+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jb25maWcuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb25maWcuaAkocmV2aXNpb24gODA0MzUpCisr
KyBTb3VyY2UvV2ViQ29yZS9jb25maWcuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksMjkg
QEAKIAogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogCisvKiBTZWUgbm90ZSBpbiB3dGYvUGxh
dGZvcm0uaCBmb3IgbW9yZSBpbmZvIG9uIEVYUE9SVF9NQUNST1MuICovCisjaWYgVVNFKEVYUE9S
VF9NQUNST1MpCisjaW5jbHVkZSA8d3RmL0V4cG9ydE1hY3Jvcy5oPgorCisjaWYgZGVmaW5lZChC
VUlMRElOR19KYXZhU2NyaXB0Q29yZSkgfHwgZGVmaW5lZChCVUlMRElOR19XVEYpCisjZGVmaW5l
IFdURl9FWFBPUlRfUFJJVkFURSBXVEZfRVhQT1JUCisjZGVmaW5lIEpTX0VYUE9SVF9QUklWQVRF
IFdURl9FWFBPUlQKKyNlbHNlCisjZGVmaW5lIFdURl9FWFBPUlRfUFJJVkFURSBXVEZfSU1QT1JU
CisjZGVmaW5lIEpTX0VYUE9SVF9QUklWQVRFIFdURl9JTVBPUlQKKyNlbmRpZgorCisjZGVmaW5l
IEpTX0VYUE9SVERBVEEgSlNfRVhQT1JUX1BSSVZBVEUKKyNkZWZpbmUgSlNfRVhQT1JUQ0xBU1Mg
SlNfRVhQT1JUX1BSSVZBVEUKKworI2lmIGRlZmluZWQoQlVJTERJTkdfV2ViQ29yZSkgfHwgZGVm
aW5lZChCVUlMRElOR19XZWJLaXQpCisjZGVmaW5lIFdFQktJVF9FWFBPUlREQVRBIFdURl9FWFBP
UlQKKyNlbHNlCisjZGVmaW5lIFdFQktJVF9FWFBPUlREQVRBIFdURl9JTVBPUlQKKyNlbmRpZgor
CisjZWxzZSAvKiAhVVNFKEVYUE9SVF9NQUNST1MpICovCisKICNpZiAhUExBVEZPUk0oQ0hST01J
VU0pICYmIE9TKFdJTkRPV1MpICYmICFkZWZpbmVkKEJVSUxESU5HX1dYX18pICYmICFDT01QSUxF
UihHQ0MpCiAjaWYgZGVmaW5lZChCVUlMRElOR19KYXZhU2NyaXB0Q29yZSkgfHwgZGVmaW5lZChC
VUlMRElOR19XVEYpCiAjZGVmaW5lIEpTX0VYUE9SVERBVEEgX19kZWNsc3BlYyhkbGxleHBvcnQp
CkBAIC00MCwxMyArNjMsMTkgQEAKICNlbHNlCiAjZGVmaW5lIFdFQktJVF9FWFBPUlREQVRBIF9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQogI2VuZGlmCisjZGVmaW5lIFdURl9FWFBPUlRfUFJJVkFURSBK
U19FWFBPUlREQVRBCisjZGVmaW5lIEpTX0VYUE9SVF9QUklWQVRFIEpTX0VYUE9SVERBVEEKICNk
ZWZpbmUgSlNfRVhQT1JUQ0xBU1MgSlNfRVhQT1JUREFUQQogI2Vsc2UKICNkZWZpbmUgSlNfRVhQ
T1JUREFUQQogI2RlZmluZSBKU19FWFBPUlRDTEFTUwogI2RlZmluZSBXRUJLSVRfRVhQT1JUREFU
QQorI2RlZmluZSBXVEZfRVhQT1JUX1BSSVZBVEUKKyNkZWZpbmUgSlNfRVhQT1JUX1BSSVZBVEUK
ICNlbmRpZgogCisjZW5kaWYgLyogVVNFKEVYUE9SVF9NQUNST1MpICovCisKICNpZmRlZiBfX0FQ
UExFX18KICNkZWZpbmUgSEFWRV9GVU5DX1VTTEVFUCAxCiAjZW5kaWYgLyogX19BUFBMRV9fICov
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA4MDQzNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDExLTAzLTA2ICBLZXZpbiBP
bGxpdmllciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEludHJvZHVjZSBXVEZfVVNFX0VYUE9SVF9NQUNS
T1MsIHdoaWNoIHdpbGwgYWxsb3cgdXMgdG8gcHV0IHNoYXJlZCBsaWJyYXJ5IGltcG9ydC9leHBv
cnQKKyAgICAgICAgaW5mbyBpbnRvIHRoZSBoZWFkZXJzIHJhdGhlciB0aGFuIGluIGV4cG9ydCBz
eW1ib2wgZGVmaW5pdGlvbiBmaWxlcywgYnV0IGRpc2FibGUgaXQgb24gCisgICAgICAgIGFsbCBw
bGF0Zm9ybXMgaW5pdGlhbGx5IHNvIHdlIGNhbiBkZWFsIHdpdGggcG9ydCBidWlsZCBpc3N1ZXMg
b25lIHBvcnQgYXQgYSB0aW1lLgorICAgICAgICAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NTUxCisKKyAgICAgICAgKiBjb25maWcuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMvTG9nZ2luZ01hYy5tbToKKwogMjAxMS0wMy0wNiAgSmVzc2llIEJl
cmxpbiAgPGpiZXJsaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWlu
aWcuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9nZ2luZ01hYy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9nZ2luZ01hYy5tbQkocmV2
aXNpb24gODA0MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9nZ2luZ01hYy5t
bQkod29ya2luZyBjb3B5KQpAQCAtMjMsNiArMjMsOCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8K
IAorI2luY2x1ZGUgImNvbmZpZy5oIgorCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiA4MDQzNSkKKysrIFNvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDExLTAz
LTA2ICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEludHJvZHVjZSBXVEZfVVNF
X0VYUE9SVF9NQUNST1MsIHdoaWNoIHdpbGwgYWxsb3cgdXMgdG8gcHV0IHNoYXJlZCBsaWJyYXJ5
IGltcG9ydC9leHBvcnQKKyAgICAgICAgaW5mbyBpbnRvIHRoZSBoZWFkZXJzIHJhdGhlciB0aGFu
IGluIGV4cG9ydCBzeW1ib2wgZGVmaW5pdGlvbiBmaWxlcywgYnV0IGRpc2FibGUgaXQgb24gCisg
ICAgICAgIGFsbCBwbGF0Zm9ybXMgaW5pdGlhbGx5IHNvIHdlIGNhbiBkZWFsIHdpdGggcG9ydCBi
dWlsZCBpc3N1ZXMgb25lIHBvcnQgYXQgYSB0aW1lLgorICAgICAgICAKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NTUxCisKKyAgICAgICAgKiBjb25m
aWcuaDoKKwogMjAxMS0wMy0wNiAgSmVzc2llIEJlcmxpbiAgPGpiZXJsaW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9j
b25maWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9jb25maWcuaAkocmV2aXNpb24g
ODA0MzUpCisrKyBTb3VyY2UvV2ViS2l0Mi9jb25maWcuaAkod29ya2luZyBjb3B5KQpAQCAtMjgs
MTYgKzI4LDYgQEAKICNpbmNsdWRlICJhdXRvdG9vbHNjb25maWcuaCIKICNlbmRpZiAvKiBkZWZp
bmVkIChCVUlMRElOR19HVEtfXykgKi8KIAotI2lmZGVmIF9fY3BsdXNwbHVzCi0KLS8vIFRoZXNl
IHVuZGVmcyBtYXRjaCB1cCB3aXRoIGRlZmluZXMgaW4gV2ViS2l0MlByZWZpeC5oIGZvciBNYWMg
T1MgWC4KLS8vIEhlbHBzIHVzIGNhdGNoIGlmIGFueW9uZSB1c2VzIG5ldyBvciBkZWxldGUgYnkg
YWNjaWRlbnQgaW4gY29kZSBhbmQgZG9lc24ndCBpbmNsdWRlICJjb25maWcuaCIuCi0jdW5kZWYg
bmV3Ci0jdW5kZWYgZGVsZXRlCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLQotI2VuZGlm
Ci0KICNpbmNsdWRlIDx3dGYvRGlzYWxsb3dDVHlwZS5oPgogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9y
bS5oPgogCkBAIC02OCw2ICs1OCw4IEBACiAKICNkZWZpbmUgSlNfRVhQT1JUREFUQQogI2RlZmlu
ZSBKU19FWFBPUlRDTEFTUworI2RlZmluZSBXVEZfRVhQT1JUX1BSSVZBVEUKKyNkZWZpbmUgSlNf
RVhQT1JUX1BSSVZBVEUKIAogI2VsaWYgZGVmaW5lZChfX0FQUExFX18pCiAKQEAgLTEwMiw2ICs5
NCwxOSBAQAogI2RlZmluZSBKU19FWFBPUlRDTEFTUwogI2RlZmluZSBXRUJLSVRfRVhQT1JUREFU
QQogCisjZGVmaW5lIFdURl9FWFBPUlRfUFJJVkFURQorI2RlZmluZSBKU19FWFBPUlRfUFJJVkFU
RQorCisjaWZkZWYgX19jcGx1c3BsdXMKKworLy8gVGhlc2UgdW5kZWZzIG1hdGNoIHVwIHdpdGgg
ZGVmaW5lcyBpbiBXZWJLaXQyUHJlZml4LmggZm9yIE1hYyBPUyBYLgorLy8gSGVscHMgdXMgY2F0
Y2ggaWYgYW55b25lIHVzZXMgbmV3IG9yIGRlbGV0ZSBieSBhY2NpZGVudCBpbiBjb2RlIGFuZCBk
b2Vzbid0IGluY2x1ZGUgImNvbmZpZy5oIi4KKyN1bmRlZiBuZXcKKyN1bmRlZiBkZWxldGUKKyNp
bmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorCisjZW5kaWYKKwogI2luY2x1ZGUgPFdlYkNvcmUv
RW1wdHlQcm90b2NvbERlZmluaXRpb25zLmg+CiAKICNlbGlmIGRlZmluZWQoV0lOMzIpIHx8IGRl
ZmluZWQoX1dJTjMyKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84946</attachid>
            <date>2011-03-07 08:18:50 -0800</date>
            <delta_ts>2011-03-07 09:39:53 -0800</delta_ts>
            <desc>Retry - Step 1 another attempt at Win and Qt build fixes</desc>
            <filename>jscore_export_step1try4.patch</filename>
            <type>text/plain</type>
            <size>17399</size>
            <attacher name="Kevin Ollivier">kevino</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSVByZWZpeC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSVByZWZpeC5oCShyZXZpc2lv
biA4MDQzNSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSVByZWZpeC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiwxMCBAQAogCiAjZW5kaWYKIAorLyogRklYTUU6IERl
ZmluZSB0aGVzZSBwcm9wZXJseSBvbmNlIFVTRShFWFBPUlRfTUFDUk9TKSBpcyBzZXQgZm9yIHBv
cnRzIHVzaW5nIHRoaXMgKi8KKyNkZWZpbmUgSlNfRVhQT1JUX1BSSVZBVEUKKyNkZWZpbmUgV1RG
X0VYUE9SVF9QUklWQVRFCisKICNpbmNsdWRlIDxzdGRpbnQuaD4KIAogI2luY2x1ZGUgPFdlYktp
dDIvV2ViS2l0Mi5oPgpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vY29uZmln
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vY29uZmlnLmgJ
KHJldmlzaW9uIDgwNDM1KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vY29uZmln
LmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDQgKzUzLDcgQEAKICNkZWZpbmUgSlNfRVhQT1JUREFU
QQogI2VuZGlmCiAKKyNkZWZpbmUgV1RGX0VYUE9SVF9QUklWQVRFIEpTX0VYUE9SVERBVEEKKyNk
ZWZpbmUgSlNfRVhQT1JUX1BSSVZBVEUgSlNfRVhQT1JUREFUQQorCiAjZW5kaWYgLy8gY29uZmln
X2gKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2NvbmZpZy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0R1bXBSZW5kZXJUcmVlL2NvbmZpZy5oCShyZXZpc2lvbiA4MDQzNSkKKysrIFRvb2xzL0R1
bXBSZW5kZXJUcmVlL2NvbmZpZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMyArMjYsMjAgQEAK
IAogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogCi0jaWZkZWYgX19jcGx1c3BsdXMKLSN1bmRl
ZiBuZXcKLSN1bmRlZiBkZWxldGUKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2VuZGlm
CisvKiBTZWUgbm90ZSBpbiB3dGYvUGxhdGZvcm0uaCBmb3IgbW9yZSBpbmZvIG9uIEVYUE9SVF9N
QUNST1MuICovCisjaWYgVVNFKEVYUE9SVF9NQUNST1MpCisjaW5jbHVkZSA8d3RmL0V4cG9ydE1h
Y3Jvcy5oPgogCi0jaWYgT1MoV0lORE9XUykgJiYgIUNPTVBJTEVSKEdDQykKKyNkZWZpbmUgV1RG
X0VYUE9SVF9QUklWQVRFIFdURl9JTVBPUlQKKyNkZWZpbmUgSlNfRVhQT1JUX1BSSVZBVEUgV1RG
X0lNUE9SVAorI2RlZmluZSBXRUJLSVRfRVhQT1JUREFUQSBXVEZfSU1QT1JUCisKKyNkZWZpbmUg
SlNfRVhQT1JUREFUQSBKU19FWFBPUlRfUFJJVkFURQorI2RlZmluZSBKU19FWFBPUlRDTEFTUyBK
U19FWFBPUlRfUFJJVkFURQorCisjZWxzZSAvKiAhVVNFKEVYUE9SVF9NQUNST1MpICovCisKKyNp
ZiBPUyhXSU5ET1dTKSAmJiAhQ09NUElMRVIoR0NDKSAmJiAhZGVmaW5lZChCVUlMRElOR19XWF9f
KQogI2RlZmluZSBKU19FWFBPUlREQVRBIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQogI2RlZmluZSBX
RUJLSVRfRVhQT1JUREFUQSBfX2RlY2xzcGVjKGRsbGltcG9ydCkKICNlbHNlCkBAIC00MCw2ICs0
NywxNyBAQAogI2RlZmluZSBXRUJLSVRfRVhQT1JUREFUQQogI2VuZGlmCiAKKyNkZWZpbmUgV1RG
X0VYUE9SVF9QUklWQVRFIEpTX0VYUE9SVERBVEEKKyNkZWZpbmUgSlNfRVhQT1JUX1BSSVZBVEUg
SlNfRVhQT1JUREFUQQorCisjZW5kaWYgLyogVVNFKEVYUE9SVF9NQUNST1MpICovCisKKyNpZmRl
ZiBfX2NwbHVzcGx1cworI3VuZGVmIG5ldworI3VuZGVmIGRlbGV0ZQorI2luY2x1ZGUgPHd0Zi9G
YXN0TWFsbG9jLmg+CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKE1BQykKICNkZWZpbmUgV1RGX1VT
RV9DRiAxCiAKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDgwNDY4KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDMtMDYgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRo
ZW9sbGl2aWVycy5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgSW50cm9kdWNlIFdURl9VU0VfRVhQT1JUX01BQ1JPUywgd2hpY2ggd2lsbCBhbGxv
dyB1cyB0byBwdXQgc2hhcmVkIGxpYnJhcnkgaW1wb3J0L2V4cG9ydAorICAgICAgICBpbmZvIGlu
dG8gdGhlIGhlYWRlcnMgcmF0aGVyIHRoYW4gaW4gZXhwb3J0IHN5bWJvbCBkZWZpbml0aW9uIGZp
bGVzLCBidXQgZGlzYWJsZSBpdCBvbiAKKyAgICAgICAgYWxsIHBsYXRmb3JtcyBpbml0aWFsbHkg
c28gd2UgY2FuIGRlYWwgd2l0aCBwb3J0IGJ1aWxkIGlzc3VlcyBvbmUgcG9ydCBhdCBhIHRpbWUu
CisgICAgICAgIAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9Mjc1NTEKKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL2NvbmZpZy5oOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2NvbmZpZy5oOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSVByZWZpeC5oOgorCiAyMDExLTAzLTA2ICBEYW5pZWwgQmF0ZXMgIDxk
YmF0ZXNAcmltLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbCBhbmQgRGF2
aWQgS2lsemVyLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2NvbmZpZy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb25maWcuaAkocmV2aXNpb24gODA0MzUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvY29uZmlnLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYg
KzI5LDIzIEBACiAKICNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KIAorLyogU2VlIG5vdGUgaW4g
d3RmL1BsYXRmb3JtLmggZm9yIG1vcmUgaW5mbyBvbiBFWFBPUlRfTUFDUk9TLiAqLworI2lmIFVT
RShFWFBPUlRfTUFDUk9TKQorI2luY2x1ZGUgPHd0Zi9FeHBvcnRNYWNyb3MuaD4KKworI2lmIGRl
ZmluZWQoQlVJTERJTkdfSmF2YVNjcmlwdENvcmUpIHx8IGRlZmluZWQoQlVJTERJTkdfV1RGKQor
I2RlZmluZSBXVEZfRVhQT1JUX1BSSVZBVEUgV1RGX0VYUE9SVAorI2RlZmluZSBKU19FWFBPUlRf
UFJJVkFURSBXVEZfRVhQT1JUCisjZWxzZQorI2RlZmluZSBXVEZfRVhQT1JUX1BSSVZBVEUgV1RG
X0lNUE9SVAorI2RlZmluZSBKU19FWFBPUlRfUFJJVkFURSBXVEZfSU1QT1JUCisjZW5kaWYKKwor
I2RlZmluZSBKU19FWFBPUlREQVRBIEpTX0VYUE9SVF9QUklWQVRFCisjZGVmaW5lIEpTX0VYUE9S
VENMQVNTIEpTX0VYUE9SVF9QUklWQVRFCisKKyNlbHNlIC8qICFVU0UoRVhQT1JUX01BQ1JPUykg
Ki8KKwogI2lmICFQTEFURk9STShDSFJPTUlVTSkgJiYgT1MoV0lORE9XUykgJiYgIWRlZmluZWQo
QlVJTERJTkdfV1hfXykgJiYgIUNPTVBJTEVSKEdDQykKICNpZiBkZWZpbmVkKEJVSUxESU5HX0ph
dmFTY3JpcHRDb3JlKSB8fCBkZWZpbmVkKEJVSUxESU5HX1dURikKICNkZWZpbmUgSlNfRVhQT1JU
REFUQSBfX2RlY2xzcGVjKGRsbGV4cG9ydCkKQEAgLTQxLDYgKzU4LDExIEBACiAjZGVmaW5lIEpT
X0VYUE9SVENMQVNTCiAjZW5kaWYKIAorI2RlZmluZSBXVEZfRVhQT1JUX1BSSVZBVEUgSlNfRVhQ
T1JUREFUQQorI2RlZmluZSBKU19FWFBPUlRfUFJJVkFURSBKU19FWFBPUlREQVRBCisKKyNlbmRp
ZiAvKiBVU0UoRVhQT1JUX01BQ1JPUykgKi8KKwogI2lmIE9TKFdJTkRPV1MpCiAKIC8vIElmIHdl
IGRvbid0IGRlZmluZSB0aGVzZSwgdGhleSBnZXQgZGVmaW5lZCBpbiB3aW5kZWYuaC4gCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCShyZXZpc2lvbiA4MDQzNSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtMTE2
OSw0ICsxMTY5LDEwIEBACiAjaW5jbHVkZSAiR1R5cGVkZWZzLmgiCiAjZW5kaWYKIAorLyogRklY
TUU6IFRoaXMgZGVmaW5lIHdvbid0IGJlIG5lZWRlZCBvbmNlICMyNzU1MSBpcyBmdWxseSBsYW5k
ZWQuIEhvd2V2ZXIsIAorICAgc2luY2UgbW9zdCBwb3J0cyB0cnkgdG8gc3VwcG9ydCBzdWItcHJv
amVjdCBpbmRlcGVuZGVuY2UsIGFkZGluZyBuZXcgaGVhZGVycworICAgdG8gV1RGIGNhdXNlcyBt
YW55IHBvcnRzIHRvIGJyZWFrLCBhbmQgc28gdGhpcyB3YXkgd2UgY2FuIGFkZHJlc3MgdGhlIGJ1
aWxkCisgICBicmVha2FnZXMgb25lIHBvcnQgYXQgYSB0aW1lLiAqLworI2RlZmluZSBXVEZfVVNF
X0VYUE9SVF9NQUNST1MgMAorCiAjZW5kaWYgLyogV1RGX1BsYXRmb3JtX2ggKi8KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQXNzZXJ0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvQXNzZXJ0aW9ucy5oCShyZXZpc2lvbiA4MDQzNSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQXNzZXJ0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDIsMTQgKzE0MiwxNCBAQAogICAgIFdURkxvZ0NoYW5uZWxTdGF0ZSBzdGF0ZTsKIH0gV1RGTG9n
Q2hhbm5lbDsKIAotdm9pZCBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKGNvbnN0IGNoYXIqIGZp
bGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiBmdW5jdGlvbiwgY29uc3QgY2hhciogYXNzZXJ0aW9u
KTsKLXZvaWQgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZVdpdGhNZXNzYWdlKGNvbnN0IGNoYXIq
IGZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiBmdW5jdGlvbiwgY29uc3QgY2hhciogYXNzZXJ0
aW9uLCBjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikgV1RGX0FUVFJJQlVURV9QUklOVEYoNSwgNik7
Ci12b2lkIFdURlJlcG9ydEFyZ3VtZW50QXNzZXJ0aW9uRmFpbHVyZShjb25zdCBjaGFyKiBmaWxl
LCBpbnQgbGluZSwgY29uc3QgY2hhciogZnVuY3Rpb24sIGNvbnN0IGNoYXIqIGFyZ05hbWUsIGNv
bnN0IGNoYXIqIGFzc2VydGlvbik7Ci12b2lkIFdURlJlcG9ydEJhY2t0cmFjZSgpOwotdm9pZCBX
VEZSZXBvcnRGYXRhbEVycm9yKGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFy
KiBmdW5jdGlvbiwgY29uc3QgY2hhciogZm9ybWF0LCAuLi4pIFdURl9BVFRSSUJVVEVfUFJJTlRG
KDQsIDUpOwotdm9pZCBXVEZSZXBvcnRFcnJvcihjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwg
Y29uc3QgY2hhciogZnVuY3Rpb24sIGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKSBXVEZfQVRUUklC
VVRFX1BSSU5URig0LCA1KTsKLXZvaWQgV1RGTG9nKFdURkxvZ0NoYW5uZWwqIGNoYW5uZWwsIGNv
bnN0IGNoYXIqIGZvcm1hdCwgLi4uKSBXVEZfQVRUUklCVVRFX1BSSU5URigyLCAzKTsKLXZvaWQg
V1RGTG9nVmVyYm9zZShjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciogZnVu
Y3Rpb24sIFdURkxvZ0NoYW5uZWwqIGNoYW5uZWwsIGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKSBX
VEZfQVRUUklCVVRFX1BSSU5URig1LCA2KTsKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIFdURlJl
cG9ydEFzc2VydGlvbkZhaWx1cmUoY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNo
YXIqIGZ1bmN0aW9uLCBjb25zdCBjaGFyKiBhc3NlcnRpb24pOworV1RGX0VYUE9SVF9QUklWQVRF
IHZvaWQgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZVdpdGhNZXNzYWdlKGNvbnN0IGNoYXIqIGZp
bGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiBmdW5jdGlvbiwgY29uc3QgY2hhciogYXNzZXJ0aW9u
LCBjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikgV1RGX0FUVFJJQlVURV9QUklOVEYoNSwgNik7CitX
VEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBXVEZSZXBvcnRBcmd1bWVudEFzc2VydGlvbkZhaWx1cmUo
Y29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uLCBjb25zdCBj
aGFyKiBhcmdOYW1lLCBjb25zdCBjaGFyKiBhc3NlcnRpb24pOworV1RGX0VYUE9SVF9QUklWQVRF
IHZvaWQgV1RGUmVwb3J0QmFja3RyYWNlKCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBXVEZS
ZXBvcnRGYXRhbEVycm9yKGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiBm
dW5jdGlvbiwgY29uc3QgY2hhciogZm9ybWF0LCAuLi4pIFdURl9BVFRSSUJVVEVfUFJJTlRGKDQs
IDUpOworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgV1RGUmVwb3J0RXJyb3IoY29uc3QgY2hhciog
ZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uLCBjb25zdCBjaGFyKiBmb3JtYXQs
IC4uLikgV1RGX0FUVFJJQlVURV9QUklOVEYoNCwgNSk7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBXVEZMb2coV1RGTG9nQ2hhbm5lbCogY2hhbm5lbCwgY29uc3QgY2hhciogZm9ybWF0LCAuLi4p
IFdURl9BVFRSSUJVVEVfUFJJTlRGKDIsIDMpOworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgV1RG
TG9nVmVyYm9zZShjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciogZnVuY3Rp
b24sIFdURkxvZ0NoYW5uZWwqIGNoYW5uZWwsIGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKSBXVEZf
QVRUUklCVVRFX1BSSU5URig1LCA2KTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlLmgJKHJldmlzaW9uIDgwNDM1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtODAsNiArODAsMTEg
QEAKICNkZWZpbmUgSlNfRVhQT1JUCiAjZW5kaWYgLyogZGVmaW5lZChKU19OT19FWFBPUlQpICov
CiAKKy8qIEpTIHRlc3RzIHVzZXMgV1RGIGJ1dCBoYXMgbm8gY29uZmlnLmgsIHNvIHdlIG5lZWQg
dG8gc2V0IHRoZSBleHBvcnQgZGVmaW5lcyBoZXJlLiAqLworI2lmbmRlZiBXVEZfRVhQT1JUX1BS
SVZBVEUKKyNkZWZpbmUgV1RGX0VYUE9SVF9QUklWQVRFIEpTX0VYUE9SVAorI2VuZGlmCisKICNp
ZmRlZiBfX2NwbHVzcGx1cwogZXh0ZXJuICJDIiB7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NoYW5nZUxvZwkocmV2aXNpb24gODA0MzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDMtMDYgIEtldmlu
IE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIFdURl9VU0VfRVhQT1JUX01B
Q1JPUywgd2hpY2ggd2lsbCBhbGxvdyB1cyB0byBwdXQgc2hhcmVkIGxpYnJhcnkgaW1wb3J0L2V4
cG9ydAorICAgICAgICBpbmZvIGludG8gdGhlIGhlYWRlcnMgcmF0aGVyIHRoYW4gaW4gZXhwb3J0
IHN5bWJvbCBkZWZpbml0aW9uIGZpbGVzLCBidXQgZGlzYWJsZSBpdCBvbiAKKyAgICAgICAgYWxs
IHBsYXRmb3JtcyBpbml0aWFsbHkgc28gd2UgY2FuIGRlYWwgd2l0aCBwb3J0IGJ1aWxkIGlzc3Vl
cyBvbmUgcG9ydCBhdCBhIHRpbWUuCisgICAgICAgIAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc1NTEKKworICAgICAgICAqIEFQSS9KU0Jhc2UuaDoK
KyAgICAgICAgKiBjb25maWcuaDoKKyAgICAgICAgKiB3dGYvQXNzZXJ0aW9ucy5oOgorICAgICAg
ICAqIHd0Zi9QbGF0Zm9ybS5oOgorCiAyMDExLTAzLTA1ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRHbHVlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdEdsdWUvQ2hhbmdlTG9nCShyZXZpc2lvbiA4MDQzNSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0R2x1ZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMS0w
My0wNiAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2UgV1RGX1VT
RV9FWFBPUlRfTUFDUk9TLCB3aGljaCB3aWxsIGFsbG93IHVzIHRvIHB1dCBzaGFyZWQgbGlicmFy
eSBpbXBvcnQvZXhwb3J0CisgICAgICAgIGluZm8gaW50byB0aGUgaGVhZGVycyByYXRoZXIgdGhh
biBpbiBleHBvcnQgc3ltYm9sIGRlZmluaXRpb24gZmlsZXMsIGJ1dCBkaXNhYmxlIGl0IG9uIAor
ICAgICAgICBhbGwgcGxhdGZvcm1zIGluaXRpYWxseSBzbyB3ZSBjYW4gZGVhbCB3aXRoIHBvcnQg
YnVpbGQgaXNzdWVzIG9uZSBwb3J0IGF0IGEgdGltZS4KKyAgICAgICAgCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzU1MQorCisgICAgICAgICogY29u
ZmlnLmg6CisKIDIwMTEtMDMtMDQgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdEdsdWUvY29uZmlnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRHbHVlL2Nv
bmZpZy5oCShyZXZpc2lvbiA4MDQzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0R2x1ZS9jb25maWcu
aAkod29ya2luZyBjb3B5KQpAQCAtMTksMyArMTksNiBAQAogCiAjZGVmaW5lIEpTX0VYUE9SVERB
VEEKICNkZWZpbmUgSlNfRVhQT1JUQ0xBU1MKKyNkZWZpbmUgSlNfRVhQT1JUX1BSSVZBVEUKKyNk
ZWZpbmUgV1RGX0VYUE9SVF9QUklWQVRFCisKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2YvV2ViQ29y
ZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvY2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCShyZXZpc2lv
biA4MDQzNSkKKysrIFNvdXJjZS9XZWJLaXQvY2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9y
Q2xpZW50Q0YuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNywxMSBAQAogI2RlZmluZSBX
VEZfVVNFX0pTQyAxCiAjZW5kaWYKIAorLy8gTGVhdmUgdGhlc2Ugc2V0IHRvIG5vdGhpbmcgdW50
aWwgd2Ugc3dpdGNoIE1hYyBhbmQgV2luIHBvcnRzIG92ZXIgdG8gCisvLyB1c2luZyB0aGUgZXhw
b3J0IG1hY3Jvcy4KKyNkZWZpbmUgSlNfRVhQT1JUX1BSSVZBVEUKKyNkZWZpbmUgV1RGX0VYUE9S
VF9QUklWQVRFCisKICNpZiBkZWZpbmVkKFdJTjMyKSB8fCBkZWZpbmVkKF9XSU4zMikKICNpZm5k
ZWYgV1RGX1VTRV9DRk5FVFdPUksKICNkZWZpbmUgV1RGX1VTRV9DRk5FVFdPUksgMQpJbmRleDog
U291cmNlL1dlYktpdC9jZi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9j
Zi9DaGFuZ2VMb2cJKHJldmlzaW9uIDgwNDQ0KQorKysgU291cmNlL1dlYktpdC9jZi9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMS0wMy0wNiAgS2V2aW4gT2xs
aXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2UgV1RGX1VTRV9FWFBPUlRfTUFDUk9T
LCB3aGljaCB3aWxsIGFsbG93IHVzIHRvIHB1dCBzaGFyZWQgbGlicmFyeSBpbXBvcnQvZXhwb3J0
CisgICAgICAgIGluZm8gaW50byB0aGUgaGVhZGVycyByYXRoZXIgdGhhbiBpbiBleHBvcnQgc3lt
Ym9sIGRlZmluaXRpb24gZmlsZXMsIGJ1dCBkaXNhYmxlIGl0IG9uIAorICAgICAgICBhbGwgcGxh
dGZvcm1zIGluaXRpYWxseSBzbyB3ZSBjYW4gZGVhbCB3aXRoIHBvcnQgYnVpbGQgaXNzdWVzIG9u
ZSBwb3J0IGF0IGEgdGltZS4KKyAgICAgICAgCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yNzU1MQorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
SW5zcGVjdG9yQ2xpZW50Q0YuY3BwOgorCiAyMDExLTAyLTIzICBQYXRyaWNrIEdhbnN0ZXJlciAg
PHBhcm9nYUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJ
bmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gODA0MzUpCisrKyBTb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMS0wMy0wNiAg
S2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2UgV1RGX1VTRV9FWFBP
UlRfTUFDUk9TLCB3aGljaCB3aWxsIGFsbG93IHVzIHRvIHB1dCBzaGFyZWQgbGlicmFyeSBpbXBv
cnQvZXhwb3J0CisgICAgICAgIGluZm8gaW50byB0aGUgaGVhZGVycyByYXRoZXIgdGhhbiBpbiBl
eHBvcnQgc3ltYm9sIGRlZmluaXRpb24gZmlsZXMsIGJ1dCBkaXNhYmxlIGl0IG9uIAorICAgICAg
ICBhbGwgcGxhdGZvcm1zIGluaXRpYWxseSBzbyB3ZSBjYW4gZGVhbCB3aXRoIHBvcnQgYnVpbGQg
aXNzdWVzIG9uZSBwb3J0IGF0IGEgdGltZS4KKyAgICAgICAgCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzU1MQorCisgICAgICAgICogV2ViS2l0UHJl
Zml4Lmg6CisKIDIwMTEtMDMtMDYgIEplc3NpZSBCZXJsaW4gIDxqYmVybGluQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpJbmRleDogU291cmNlL1dlYktpdC9t
YWMvV2ViS2l0UHJlZml4LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViS2l0
UHJlZml4LmgJKHJldmlzaW9uIDgwNDM1KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViS2l0UHJl
Zml4LmgJKHdvcmtpbmcgY29weSkKQEAgLTc5LDEyICs3OSw2IEBACiAjZGVmaW5lIFdURl9VU0Vf
SlNDIDEKICNkZWZpbmUgV1RGX1VTRV9WOCAwCiAKLSNpZmRlZiBfX2NwbHVzcGx1cwotI2luY2x1
ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPHd0Zi9EaXNhbGxvd0NU
eXBlLmg+Ci0KIC8qIFdvcmsgYXJvdW5kIGJ1ZyB3aXRoIEMrKyBsaWJyYXJ5IHRoYXQgc2NyZXdz
IHVwIE9iamVjdGl2ZS1DKysgd2hlbiBleGNlcHRpb24gc3VwcG9ydCBpcyBkaXNhYmxlZC4gKi8K
ICN1bmRlZiB0cnkKICN1bmRlZiBjYXRjaApAQCAtOTIsMyArODYsMTEgQEAKICNkZWZpbmUgSlNf
RVhQT1JUREFUQQogI2RlZmluZSBKU19FWFBPUlRDTEFTUwogI2RlZmluZSBXRUJLSVRfRVhQT1JU
REFUQQorI2RlZmluZSBXVEZfRVhQT1JUX1BSSVZBVEUKKyNkZWZpbmUgSlNfRVhQT1JUX1BSSVZB
VEUKKworI2lmZGVmIF9fY3BsdXNwbHVzCisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKyNl
bmRpZgorCisjaW5jbHVkZSA8d3RmL0Rpc2FsbG93Q1R5cGUuaD4KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2NvbmZpZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NvbmZpZy5oCShyZXZp
c2lvbiA4MDQzNSkKKysrIFNvdXJjZS9XZWJDb3JlL2NvbmZpZy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yOSw2ICsyOSwyOSBAQAogCiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CiAKKy8qIFNlZSBu
b3RlIGluIHd0Zi9QbGF0Zm9ybS5oIGZvciBtb3JlIGluZm8gb24gRVhQT1JUX01BQ1JPUy4gKi8K
KyNpZiBVU0UoRVhQT1JUX01BQ1JPUykKKyNpbmNsdWRlIDx3dGYvRXhwb3J0TWFjcm9zLmg+CisK
KyNpZiBkZWZpbmVkKEJVSUxESU5HX0phdmFTY3JpcHRDb3JlKSB8fCBkZWZpbmVkKEJVSUxESU5H
X1dURikKKyNkZWZpbmUgV1RGX0VYUE9SVF9QUklWQVRFIFdURl9FWFBPUlQKKyNkZWZpbmUgSlNf
RVhQT1JUX1BSSVZBVEUgV1RGX0VYUE9SVAorI2Vsc2UKKyNkZWZpbmUgV1RGX0VYUE9SVF9QUklW
QVRFIFdURl9JTVBPUlQKKyNkZWZpbmUgSlNfRVhQT1JUX1BSSVZBVEUgV1RGX0lNUE9SVAorI2Vu
ZGlmCisKKyNkZWZpbmUgSlNfRVhQT1JUREFUQSBKU19FWFBPUlRfUFJJVkFURQorI2RlZmluZSBK
U19FWFBPUlRDTEFTUyBKU19FWFBPUlRfUFJJVkFURQorCisjaWYgZGVmaW5lZChCVUlMRElOR19X
ZWJDb3JlKSB8fCBkZWZpbmVkKEJVSUxESU5HX1dlYktpdCkKKyNkZWZpbmUgV0VCS0lUX0VYUE9S
VERBVEEgV1RGX0VYUE9SVAorI2Vsc2UKKyNkZWZpbmUgV0VCS0lUX0VYUE9SVERBVEEgV1RGX0lN
UE9SVAorI2VuZGlmCisKKyNlbHNlIC8qICFVU0UoRVhQT1JUX01BQ1JPUykgKi8KKwogI2lmICFQ
TEFURk9STShDSFJPTUlVTSkgJiYgT1MoV0lORE9XUykgJiYgIWRlZmluZWQoQlVJTERJTkdfV1hf
XykgJiYgIUNPTVBJTEVSKEdDQykKICNpZiBkZWZpbmVkKEJVSUxESU5HX0phdmFTY3JpcHRDb3Jl
KSB8fCBkZWZpbmVkKEJVSUxESU5HX1dURikKICNkZWZpbmUgSlNfRVhQT1JUREFUQSBfX2RlY2xz
cGVjKGRsbGV4cG9ydCkKQEAgLTQwLDEzICs2MywxOSBAQAogI2Vsc2UKICNkZWZpbmUgV0VCS0lU
X0VYUE9SVERBVEEgX19kZWNsc3BlYyhkbGxpbXBvcnQpCiAjZW5kaWYKKyNkZWZpbmUgV1RGX0VY
UE9SVF9QUklWQVRFIEpTX0VYUE9SVERBVEEKKyNkZWZpbmUgSlNfRVhQT1JUX1BSSVZBVEUgSlNf
RVhQT1JUREFUQQogI2RlZmluZSBKU19FWFBPUlRDTEFTUyBKU19FWFBPUlREQVRBCiAjZWxzZQog
I2RlZmluZSBKU19FWFBPUlREQVRBCiAjZGVmaW5lIEpTX0VYUE9SVENMQVNTCiAjZGVmaW5lIFdF
QktJVF9FWFBPUlREQVRBCisjZGVmaW5lIFdURl9FWFBPUlRfUFJJVkFURQorI2RlZmluZSBKU19F
WFBPUlRfUFJJVkFURQogI2VuZGlmCiAKKyNlbmRpZiAvKiBVU0UoRVhQT1JUX01BQ1JPUykgKi8K
KwogI2lmZGVmIF9fQVBQTEVfXwogI2RlZmluZSBIQVZFX0ZVTkNfVVNMRUVQIDEKICNlbmRpZiAv
KiBfX0FQUExFX18gKi8KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgwNDM1KQorKysgU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEt
MDMtMDYgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIFdURl9V
U0VfRVhQT1JUX01BQ1JPUywgd2hpY2ggd2lsbCBhbGxvdyB1cyB0byBwdXQgc2hhcmVkIGxpYnJh
cnkgaW1wb3J0L2V4cG9ydAorICAgICAgICBpbmZvIGludG8gdGhlIGhlYWRlcnMgcmF0aGVyIHRo
YW4gaW4gZXhwb3J0IHN5bWJvbCBkZWZpbml0aW9uIGZpbGVzLCBidXQgZGlzYWJsZSBpdCBvbiAK
KyAgICAgICAgYWxsIHBsYXRmb3JtcyBpbml0aWFsbHkgc28gd2UgY2FuIGRlYWwgd2l0aCBwb3J0
IGJ1aWxkIGlzc3VlcyBvbmUgcG9ydCBhdCBhIHRpbWUuCisgICAgICAgIAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc1NTEKKworICAgICAgICAqIGNv
bmZpZy5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9Mb2dnaW5nTWFjLm1tOgorCiAyMDExLTAz
LTA2ICBKZXNzaWUgQmVybGluICA8amJlcmxpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgU2FtIFdlaW5pZy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2dn
aW5nTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2dn
aW5nTWFjLm1tCShyZXZpc2lvbiA4MDQzNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9Mb2dnaW5nTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2ICsyMyw4IEBACiAgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKICAqLwogCisjaW5jbHVkZSAiY29uZmlnLmgiCisKICNpbmNsdWRlICJMb2dnaW5n
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDgwNDM1
KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTUgQEAKKzIwMTEtMDMtMDYgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50
cm9kdWNlIFdURl9VU0VfRVhQT1JUX01BQ1JPUywgd2hpY2ggd2lsbCBhbGxvdyB1cyB0byBwdXQg
c2hhcmVkIGxpYnJhcnkgaW1wb3J0L2V4cG9ydAorICAgICAgICBpbmZvIGludG8gdGhlIGhlYWRl
cnMgcmF0aGVyIHRoYW4gaW4gZXhwb3J0IHN5bWJvbCBkZWZpbml0aW9uIGZpbGVzLCBidXQgZGlz
YWJsZSBpdCBvbiAKKyAgICAgICAgYWxsIHBsYXRmb3JtcyBpbml0aWFsbHkgc28gd2UgY2FuIGRl
YWwgd2l0aCBwb3J0IGJ1aWxkIGlzc3VlcyBvbmUgcG9ydCBhdCBhIHRpbWUuCisgICAgICAgIAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc1NTEKKwor
ICAgICAgICAqIGNvbmZpZy5oOgorCiAyMDExLTAzLTA2ICBKZXNzaWUgQmVybGluICA8amJlcmxp
bkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL2NvbmZpZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL2NvbmZp
Zy5oCShyZXZpc2lvbiA4MDQzNSkKKysrIFNvdXJjZS9XZWJLaXQyL2NvbmZpZy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yOCwxNiArMjgsNiBAQAogI2luY2x1ZGUgImF1dG90b29sc2NvbmZpZy5oIgog
I2VuZGlmIC8qIGRlZmluZWQgKEJVSUxESU5HX0dUS19fKSAqLwogCi0jaWZkZWYgX19jcGx1c3Bs
dXMKLQotLy8gVGhlc2UgdW5kZWZzIG1hdGNoIHVwIHdpdGggZGVmaW5lcyBpbiBXZWJLaXQyUHJl
Zml4LmggZm9yIE1hYyBPUyBYLgotLy8gSGVscHMgdXMgY2F0Y2ggaWYgYW55b25lIHVzZXMgbmV3
IG9yIGRlbGV0ZSBieSBhY2NpZGVudCBpbiBjb2RlIGFuZCBkb2Vzbid0IGluY2x1ZGUgImNvbmZp
Zy5oIi4KLSN1bmRlZiBuZXcKLSN1bmRlZiBkZWxldGUKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxv
Yy5oPgotCi0jZW5kaWYKLQogI2luY2x1ZGUgPHd0Zi9EaXNhbGxvd0NUeXBlLmg+CiAjaW5jbHVk
ZSA8d3RmL1BsYXRmb3JtLmg+CiAKQEAgLTY4LDYgKzU4LDggQEAKIAogI2RlZmluZSBKU19FWFBP
UlREQVRBCiAjZGVmaW5lIEpTX0VYUE9SVENMQVNTCisjZGVmaW5lIFdURl9FWFBPUlRfUFJJVkFU
RQorI2RlZmluZSBKU19FWFBPUlRfUFJJVkFURQogCiAjZWxpZiBkZWZpbmVkKF9fQVBQTEVfXykK
IApAQCAtMTAyLDYgKzk0LDkgQEAKICNkZWZpbmUgSlNfRVhQT1JUQ0xBU1MKICNkZWZpbmUgV0VC
S0lUX0VYUE9SVERBVEEKIAorI2RlZmluZSBXVEZfRVhQT1JUX1BSSVZBVEUKKyNkZWZpbmUgSlNf
RVhQT1JUX1BSSVZBVEUKKwogI2luY2x1ZGUgPFdlYkNvcmUvRW1wdHlQcm90b2NvbERlZmluaXRp
b25zLmg+CiAKICNlbGlmIGRlZmluZWQoV0lOMzIpIHx8IGRlZmluZWQoX1dJTjMyKQpAQCAtMTM2
LDYgKzEzMSwxNiBAQAogCiAjZW5kaWYgLyogZGVmaW5lZChXSU4zMikgfHwgZGVmaW5lZChfV0lO
MzIpICovCiAKKyNpZmRlZiBfX2NwbHVzcGx1cworCisvLyBUaGVzZSB1bmRlZnMgbWF0Y2ggdXAg
d2l0aCBkZWZpbmVzIGluIFdlYktpdDJQcmVmaXguaCBmb3IgTWFjIE9TIFguCisvLyBIZWxwcyB1
cyBjYXRjaCBpZiBhbnlvbmUgdXNlcyBuZXcgb3IgZGVsZXRlIGJ5IGFjY2lkZW50IGluIGNvZGUg
YW5kIGRvZXNuJ3QgaW5jbHVkZSAiY29uZmlnLmgiLgorI3VuZGVmIG5ldworI3VuZGVmIGRlbGV0
ZQorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0o
TUFDKSB8fCAoT1MoTUFDX09TX1gpICYmIFBMQVRGT1JNKFFUKSkKICNkZWZpbmUgUExVR0lOX0FS
Q0hJVEVDVFVSRV9NQUMgMQogI2VsaWYgUExBVEZPUk0oV0lOKSB8fCAoT1MoV0lORE9XUykgJiYg
UExBVEZPUk0oUVQpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84952</attachid>
            <date>2011-03-07 09:39:53 -0800</date>
            <delta_ts>2011-03-07 11:38:06 -0800</delta_ts>
            <desc>Retry - Step 1 more Win and Qt build fixes, getting closer...</desc>
            <filename>jscore_export_step1try5.patch</filename>
            <type>text/plain</type>
            <size>19382</size>
            <attacher name="Kevin Ollivier">kevino</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSVByZWZpeC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSVByZWZpeC5oCShyZXZpc2lv
biA4MDQzNSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSVByZWZpeC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiwxMCBAQAogCiAjZW5kaWYKIAorLyogRklYTUU6IERl
ZmluZSB0aGVzZSBwcm9wZXJseSBvbmNlIFVTRShFWFBPUlRfTUFDUk9TKSBpcyBzZXQgZm9yIHBv
cnRzIHVzaW5nIHRoaXMgKi8KKyNkZWZpbmUgSlNfRVhQT1JUX1BSSVZBVEUKKyNkZWZpbmUgV1RG
X0VYUE9SVF9QUklWQVRFCisKICNpbmNsdWRlIDxzdGRpbnQuaD4KIAogI2luY2x1ZGUgPFdlYktp
dDIvV2ViS2l0Mi5oPgpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vY29uZmln
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vY29uZmlnLmgJ
KHJldmlzaW9uIDgwNDM1KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vY29uZmln
LmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDQgKzUzLDcgQEAKICNkZWZpbmUgSlNfRVhQT1JUREFU
QQogI2VuZGlmCiAKKyNkZWZpbmUgV1RGX0VYUE9SVF9QUklWQVRFIEpTX0VYUE9SVERBVEEKKyNk
ZWZpbmUgSlNfRVhQT1JUX1BSSVZBVEUgSlNfRVhQT1JUREFUQQorCiAjZW5kaWYgLy8gY29uZmln
X2gKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2NvbmZpZy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0R1bXBSZW5kZXJUcmVlL2NvbmZpZy5oCShyZXZpc2lvbiA4MDQzNSkKKysrIFRvb2xzL0R1
bXBSZW5kZXJUcmVlL2NvbmZpZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMyArMjYsMjAgQEAK
IAogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogCi0jaWZkZWYgX19jcGx1c3BsdXMKLSN1bmRl
ZiBuZXcKLSN1bmRlZiBkZWxldGUKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2VuZGlm
CisvKiBTZWUgbm90ZSBpbiB3dGYvUGxhdGZvcm0uaCBmb3IgbW9yZSBpbmZvIG9uIEVYUE9SVF9N
QUNST1MuICovCisjaWYgVVNFKEVYUE9SVF9NQUNST1MpCisjaW5jbHVkZSA8d3RmL0V4cG9ydE1h
Y3Jvcy5oPgogCi0jaWYgT1MoV0lORE9XUykgJiYgIUNPTVBJTEVSKEdDQykKKyNkZWZpbmUgV1RG
X0VYUE9SVF9QUklWQVRFIFdURl9JTVBPUlQKKyNkZWZpbmUgSlNfRVhQT1JUX1BSSVZBVEUgV1RG
X0lNUE9SVAorI2RlZmluZSBXRUJLSVRfRVhQT1JUREFUQSBXVEZfSU1QT1JUCisKKyNkZWZpbmUg
SlNfRVhQT1JUREFUQSBKU19FWFBPUlRfUFJJVkFURQorI2RlZmluZSBKU19FWFBPUlRDTEFTUyBK
U19FWFBPUlRfUFJJVkFURQorCisjZWxzZSAvKiAhVVNFKEVYUE9SVF9NQUNST1MpICovCisKKyNp
ZiBPUyhXSU5ET1dTKSAmJiAhQ09NUElMRVIoR0NDKSAmJiAhZGVmaW5lZChCVUlMRElOR19XWF9f
KQogI2RlZmluZSBKU19FWFBPUlREQVRBIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQogI2RlZmluZSBX
RUJLSVRfRVhQT1JUREFUQSBfX2RlY2xzcGVjKGRsbGltcG9ydCkKICNlbHNlCkBAIC00MCw2ICs0
NywxNyBAQAogI2RlZmluZSBXRUJLSVRfRVhQT1JUREFUQQogI2VuZGlmCiAKKyNkZWZpbmUgV1RG
X0VYUE9SVF9QUklWQVRFIEpTX0VYUE9SVERBVEEKKyNkZWZpbmUgSlNfRVhQT1JUX1BSSVZBVEUg
SlNfRVhQT1JUREFUQQorCisjZW5kaWYgLyogVVNFKEVYUE9SVF9NQUNST1MpICovCisKKyNpZmRl
ZiBfX2NwbHVzcGx1cworI3VuZGVmIG5ldworI3VuZGVmIGRlbGV0ZQorI2luY2x1ZGUgPHd0Zi9G
YXN0TWFsbG9jLmg+CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKE1BQykKICNkZWZpbmUgV1RGX1VT
RV9DRiAxCiAKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2NnL0ltYWdlRGlmZkNHLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9jZy9JbWFnZURpZmZDRy5jcHAJKHJl
dmlzaW9uIDgwNDM1KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvY2cvSW1hZ2VEaWZmQ0cuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw4IEBACiAKICNkZWZpbmUgbWluIG1pbgogCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHd0Zi9Q
bGF0Zm9ybS5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KSW5kZXg6IFRvb2xzL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDgwNDY4KQorKysg
VG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDMt
MDYgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIFdURl9VU0Vf
RVhQT1JUX01BQ1JPUywgd2hpY2ggd2lsbCBhbGxvdyB1cyB0byBwdXQgc2hhcmVkIGxpYnJhcnkg
aW1wb3J0L2V4cG9ydAorICAgICAgICBpbmZvIGludG8gdGhlIGhlYWRlcnMgcmF0aGVyIHRoYW4g
aW4gZXhwb3J0IHN5bWJvbCBkZWZpbml0aW9uIGZpbGVzLCBidXQgZGlzYWJsZSBpdCBvbiAKKyAg
ICAgICAgYWxsIHBsYXRmb3JtcyBpbml0aWFsbHkgc28gd2UgY2FuIGRlYWwgd2l0aCBwb3J0IGJ1
aWxkIGlzc3VlcyBvbmUgcG9ydCBhdCBhIHRpbWUuCisgICAgICAgIAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc1NTEKKworICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL2NnL0ltYWdlRGlmZkNHLmNwcAorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2No
cm9taXVtL2NvbmZpZy5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2NvbmZpZy5oOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSVByZWZpeC5oOgorCiAyMDExLTAzLTA2
ICBEYW5pZWwgQmF0ZXMgIDxkYmF0ZXNAcmltLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBF
cmljIFNlaWRlbCBhbmQgRGF2aWQgS2lsemVyLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2NvbmZpZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb25maWcuaAko
cmV2aXNpb24gODA0MzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvY29uZmlnLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI5LDYgKzI5LDIzIEBACiAKICNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4K
IAorLyogU2VlIG5vdGUgaW4gd3RmL1BsYXRmb3JtLmggZm9yIG1vcmUgaW5mbyBvbiBFWFBPUlRf
TUFDUk9TLiAqLworI2lmIFVTRShFWFBPUlRfTUFDUk9TKQorI2luY2x1ZGUgPHd0Zi9FeHBvcnRN
YWNyb3MuaD4KKworI2lmIGRlZmluZWQoQlVJTERJTkdfSmF2YVNjcmlwdENvcmUpIHx8IGRlZmlu
ZWQoQlVJTERJTkdfV1RGKQorI2RlZmluZSBXVEZfRVhQT1JUX1BSSVZBVEUgV1RGX0VYUE9SVAor
I2RlZmluZSBKU19FWFBPUlRfUFJJVkFURSBXVEZfRVhQT1JUCisjZWxzZQorI2RlZmluZSBXVEZf
RVhQT1JUX1BSSVZBVEUgV1RGX0lNUE9SVAorI2RlZmluZSBKU19FWFBPUlRfUFJJVkFURSBXVEZf
SU1QT1JUCisjZW5kaWYKKworI2RlZmluZSBKU19FWFBPUlREQVRBIEpTX0VYUE9SVF9QUklWQVRF
CisjZGVmaW5lIEpTX0VYUE9SVENMQVNTIEpTX0VYUE9SVF9QUklWQVRFCisKKyNlbHNlIC8qICFV
U0UoRVhQT1JUX01BQ1JPUykgKi8KKwogI2lmICFQTEFURk9STShDSFJPTUlVTSkgJiYgT1MoV0lO
RE9XUykgJiYgIWRlZmluZWQoQlVJTERJTkdfV1hfXykgJiYgIUNPTVBJTEVSKEdDQykKICNpZiBk
ZWZpbmVkKEJVSUxESU5HX0phdmFTY3JpcHRDb3JlKSB8fCBkZWZpbmVkKEJVSUxESU5HX1dURikK
ICNkZWZpbmUgSlNfRVhQT1JUREFUQSBfX2RlY2xzcGVjKGRsbGV4cG9ydCkKQEAgLTQxLDYgKzU4
LDExIEBACiAjZGVmaW5lIEpTX0VYUE9SVENMQVNTCiAjZW5kaWYKIAorI2RlZmluZSBXVEZfRVhQ
T1JUX1BSSVZBVEUgSlNfRVhQT1JUREFUQQorI2RlZmluZSBKU19FWFBPUlRfUFJJVkFURSBKU19F
WFBPUlREQVRBCisKKyNlbmRpZiAvKiBVU0UoRVhQT1JUX01BQ1JPUykgKi8KKwogI2lmIE9TKFdJ
TkRPV1MpCiAKIC8vIElmIHdlIGRvbid0IGRlZmluZSB0aGVzZSwgdGhleSBnZXQgZGVmaW5lZCBp
biB3aW5kZWYuaC4gCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCShyZXZp
c2lvbiA4MDQzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAkod29y
a2luZyBjb3B5KQpAQCAtMTE2OSw0ICsxMTY5LDEwIEBACiAjaW5jbHVkZSAiR1R5cGVkZWZzLmgi
CiAjZW5kaWYKIAorLyogRklYTUU6IFRoaXMgZGVmaW5lIHdvbid0IGJlIG5lZWRlZCBvbmNlICMy
NzU1MSBpcyBmdWxseSBsYW5kZWQuIEhvd2V2ZXIsIAorICAgc2luY2UgbW9zdCBwb3J0cyB0cnkg
dG8gc3VwcG9ydCBzdWItcHJvamVjdCBpbmRlcGVuZGVuY2UsIGFkZGluZyBuZXcgaGVhZGVycwor
ICAgdG8gV1RGIGNhdXNlcyBtYW55IHBvcnRzIHRvIGJyZWFrLCBhbmQgc28gdGhpcyB3YXkgd2Ug
Y2FuIGFkZHJlc3MgdGhlIGJ1aWxkCisgICBicmVha2FnZXMgb25lIHBvcnQgYXQgYSB0aW1lLiAq
LworI2RlZmluZSBXVEZfVVNFX0VYUE9SVF9NQUNST1MgMAorCiAjZW5kaWYgLyogV1RGX1BsYXRm
b3JtX2ggKi8KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQXNzZXJ0aW9ucy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQXNzZXJ0aW9ucy5oCShyZXZp
c2lvbiA4MDQzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQXNzZXJ0aW9ucy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xNDIsMTQgKzE0MiwxNCBAQAogICAgIFdURkxvZ0NoYW5uZWxTdGF0
ZSBzdGF0ZTsKIH0gV1RGTG9nQ2hhbm5lbDsKIAotdm9pZCBXVEZSZXBvcnRBc3NlcnRpb25GYWls
dXJlKGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiBmdW5jdGlvbiwgY29u
c3QgY2hhciogYXNzZXJ0aW9uKTsKLXZvaWQgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZVdpdGhN
ZXNzYWdlKGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiBmdW5jdGlvbiwg
Y29uc3QgY2hhciogYXNzZXJ0aW9uLCBjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikgV1RGX0FUVFJJ
QlVURV9QUklOVEYoNSwgNik7Ci12b2lkIFdURlJlcG9ydEFyZ3VtZW50QXNzZXJ0aW9uRmFpbHVy
ZShjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciogZnVuY3Rpb24sIGNvbnN0
IGNoYXIqIGFyZ05hbWUsIGNvbnN0IGNoYXIqIGFzc2VydGlvbik7Ci12b2lkIFdURlJlcG9ydEJh
Y2t0cmFjZSgpOwotdm9pZCBXVEZSZXBvcnRGYXRhbEVycm9yKGNvbnN0IGNoYXIqIGZpbGUsIGlu
dCBsaW5lLCBjb25zdCBjaGFyKiBmdW5jdGlvbiwgY29uc3QgY2hhciogZm9ybWF0LCAuLi4pIFdU
Rl9BVFRSSUJVVEVfUFJJTlRGKDQsIDUpOwotdm9pZCBXVEZSZXBvcnRFcnJvcihjb25zdCBjaGFy
KiBmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciogZnVuY3Rpb24sIGNvbnN0IGNoYXIqIGZvcm1h
dCwgLi4uKSBXVEZfQVRUUklCVVRFX1BSSU5URig0LCA1KTsKLXZvaWQgV1RGTG9nKFdURkxvZ0No
YW5uZWwqIGNoYW5uZWwsIGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKSBXVEZfQVRUUklCVVRFX1BS
SU5URigyLCAzKTsKLXZvaWQgV1RGTG9nVmVyYm9zZShjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGlu
ZSwgY29uc3QgY2hhciogZnVuY3Rpb24sIFdURkxvZ0NoYW5uZWwqIGNoYW5uZWwsIGNvbnN0IGNo
YXIqIGZvcm1hdCwgLi4uKSBXVEZfQVRUUklCVVRFX1BSSU5URig1LCA2KTsKK1dURl9FWFBPUlRf
UFJJVkFURSB2b2lkIFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoY29uc3QgY2hhciogZmlsZSwg
aW50IGxpbmUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uLCBjb25zdCBjaGFyKiBhc3NlcnRpb24pOwor
V1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZVdpdGhNZXNz
YWdlKGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiBmdW5jdGlvbiwgY29u
c3QgY2hhciogYXNzZXJ0aW9uLCBjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikgV1RGX0FUVFJJQlVU
RV9QUklOVEYoNSwgNik7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBXVEZSZXBvcnRBcmd1bWVu
dEFzc2VydGlvbkZhaWx1cmUoY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIq
IGZ1bmN0aW9uLCBjb25zdCBjaGFyKiBhcmdOYW1lLCBjb25zdCBjaGFyKiBhc3NlcnRpb24pOwor
V1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgV1RGUmVwb3J0QmFja3RyYWNlKCk7CitXVEZfRVhQT1JU
X1BSSVZBVEUgdm9pZCBXVEZSZXBvcnRGYXRhbEVycm9yKGNvbnN0IGNoYXIqIGZpbGUsIGludCBs
aW5lLCBjb25zdCBjaGFyKiBmdW5jdGlvbiwgY29uc3QgY2hhciogZm9ybWF0LCAuLi4pIFdURl9B
VFRSSUJVVEVfUFJJTlRGKDQsIDUpOworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgV1RGUmVwb3J0
RXJyb3IoY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uLCBj
b25zdCBjaGFyKiBmb3JtYXQsIC4uLikgV1RGX0FUVFJJQlVURV9QUklOVEYoNCwgNSk7CitXVEZf
RVhQT1JUX1BSSVZBVEUgdm9pZCBXVEZMb2coV1RGTG9nQ2hhbm5lbCogY2hhbm5lbCwgY29uc3Qg
Y2hhciogZm9ybWF0LCAuLi4pIFdURl9BVFRSSUJVVEVfUFJJTlRGKDIsIDMpOworV1RGX0VYUE9S
VF9QUklWQVRFIHZvaWQgV1RGTG9nVmVyYm9zZShjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwg
Y29uc3QgY2hhciogZnVuY3Rpb24sIFdURkxvZ0NoYW5uZWwqIGNoYW5uZWwsIGNvbnN0IGNoYXIq
IGZvcm1hdCwgLi4uKSBXVEZfQVRUUklCVVRFX1BSSU5URig1LCA2KTsKIAogI2lmZGVmIF9fY3Bs
dXNwbHVzCiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlLmgJKHJldmlzaW9uIDgw
NDM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuaAkod29ya2luZyBjb3B5
KQpAQCAtODAsNiArODAsMTEgQEAKICNkZWZpbmUgSlNfRVhQT1JUCiAjZW5kaWYgLyogZGVmaW5l
ZChKU19OT19FWFBPUlQpICovCiAKKy8qIEpTIHRlc3RzIHVzZXMgV1RGIGJ1dCBoYXMgbm8gY29u
ZmlnLmgsIHNvIHdlIG5lZWQgdG8gc2V0IHRoZSBleHBvcnQgZGVmaW5lcyBoZXJlLiAqLworI2lm
bmRlZiBXVEZfRVhQT1JUX1BSSVZBVEUKKyNkZWZpbmUgV1RGX0VYUE9SVF9QUklWQVRFIEpTX0VY
UE9SVAorI2VuZGlmCisKICNpZmRlZiBfX2NwbHVzcGx1cwogZXh0ZXJuICJDIiB7CiAjZW5kaWYK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODA0MzUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAK
KzIwMTEtMDMtMDYgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNl
IFdURl9VU0VfRVhQT1JUX01BQ1JPUywgd2hpY2ggd2lsbCBhbGxvdyB1cyB0byBwdXQgc2hhcmVk
IGxpYnJhcnkgaW1wb3J0L2V4cG9ydAorICAgICAgICBpbmZvIGludG8gdGhlIGhlYWRlcnMgcmF0
aGVyIHRoYW4gaW4gZXhwb3J0IHN5bWJvbCBkZWZpbml0aW9uIGZpbGVzLCBidXQgZGlzYWJsZSBp
dCBvbiAKKyAgICAgICAgYWxsIHBsYXRmb3JtcyBpbml0aWFsbHkgc28gd2UgY2FuIGRlYWwgd2l0
aCBwb3J0IGJ1aWxkIGlzc3VlcyBvbmUgcG9ydCBhdCBhIHRpbWUuCisgICAgICAgIAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc1NTEKKworICAgICAg
ICAqIEFQSS9KU0Jhc2UuaDoKKyAgICAgICAgKiBjb25maWcuaDoKKyAgICAgICAgKiB3dGYvQXNz
ZXJ0aW9ucy5oOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorCiAyMDExLTAzLTA1ICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRy
aSBHbGF6a292LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRHbHVlL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nCShyZXZpc2lvbiA4MDQzNSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0R2x1ZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxNSBAQAorMjAxMS0wMy0wNiAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZp
ZXJzLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBJbnRyb2R1Y2UgV1RGX1VTRV9FWFBPUlRfTUFDUk9TLCB3aGljaCB3aWxsIGFsbG93IHVzIHRv
IHB1dCBzaGFyZWQgbGlicmFyeSBpbXBvcnQvZXhwb3J0CisgICAgICAgIGluZm8gaW50byB0aGUg
aGVhZGVycyByYXRoZXIgdGhhbiBpbiBleHBvcnQgc3ltYm9sIGRlZmluaXRpb24gZmlsZXMsIGJ1
dCBkaXNhYmxlIGl0IG9uIAorICAgICAgICBhbGwgcGxhdGZvcm1zIGluaXRpYWxseSBzbyB3ZSBj
YW4gZGVhbCB3aXRoIHBvcnQgYnVpbGQgaXNzdWVzIG9uZSBwb3J0IGF0IGEgdGltZS4KKyAgICAg
ICAgCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzU1
MQorCisgICAgICAgICogY29uZmlnLmg6CisKIDIwMTEtMDMtMDQgIEFkYW0gQmFydGggIDxhYmFy
dGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdEdsdWUvY29uZmlnLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRHbHVlL2NvbmZpZy5oCShyZXZpc2lvbiA4MDQzNSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0R2x1ZS9jb25maWcuaAkod29ya2luZyBjb3B5KQpAQCAtMTksMyArMTksNiBAQAogCiAj
ZGVmaW5lIEpTX0VYUE9SVERBVEEKICNkZWZpbmUgSlNfRVhQT1JUQ0xBU1MKKyNkZWZpbmUgSlNf
RVhQT1JUX1BSSVZBVEUKKyNkZWZpbmUgV1RGX0VYUE9SVF9QUklWQVRFCisKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvR2VvbG9jYXRpb25DbGllbnRRdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9HZW9sb2NhdGlvbkNsaWVu
dFF0LmNwcAkocmV2aXNpb24gODA0MzUpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L0dlb2xvY2F0aW9uQ2xpZW50UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDAsMyArMTQw
LDUgQEAKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjaW5jbHVkZSAibW9jX0dlb2xv
Y2F0aW9uQ2xpZW50UXQuY3BwIgpJbmRleDogU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9Qb3B1cE1lbnVRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9Qb3B1cE1lbnVRdC5jcHAJKHJldmlzaW9uIDgwNDM1KQorKysgU291cmNlL1dlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9Qb3B1cE1lbnVRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1
Nyw0ICsxNTcsNiBAQAogCiB9CiAKKyNpbmNsdWRlICJtb2NfUG9wdXBNZW51UXQuY3BwIgorCiAv
LyB2aW06IHRzPTQgc3c9NCBldApJbmRleDogU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDgwNDcxKQor
KysgU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NiBAQAorMjAxMS0wMy0wNiAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRy
b2R1Y2UgV1RGX1VTRV9FWFBPUlRfTUFDUk9TLCB3aGljaCB3aWxsIGFsbG93IHVzIHRvIHB1dCBz
aGFyZWQgbGlicmFyeSBpbXBvcnQvZXhwb3J0CisgICAgICAgIGluZm8gaW50byB0aGUgaGVhZGVy
cyByYXRoZXIgdGhhbiBpbiBleHBvcnQgc3ltYm9sIGRlZmluaXRpb24gZmlsZXMsIGJ1dCBkaXNh
YmxlIGl0IG9uIAorICAgICAgICBhbGwgcGxhdGZvcm1zIGluaXRpYWxseSBzbyB3ZSBjYW4gZGVh
bCB3aXRoIHBvcnQgYnVpbGQgaXNzdWVzIG9uZSBwb3J0IGF0IGEgdGltZS4KKyAgICAgICAgCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzU1MQorICAg
ICAgICAKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9HZW9sb2NhdGlvbkNsaWVudFF0LmNwcDoK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Qb3B1cE1lbnVRdC5jcHA6CisKIDIwMTEtMDMtMDUg
IFFpIFpoYW5nICA8cWkuMi56aGFuZ0Bub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
TGFzemxvIEdvbWJvcy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2YvV2ViQ29yZVN1cHBvcnQvV2Vi
SW5zcGVjdG9yQ2xpZW50Q0YuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2YvV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCShyZXZpc2lvbiA4MDQzNSkKKysr
IFNvdXJjZS9XZWJLaXQvY2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNywxMSBAQAogI2RlZmluZSBXVEZfVVNFX0pTQyAx
CiAjZW5kaWYKIAorLy8gTGVhdmUgdGhlc2Ugc2V0IHRvIG5vdGhpbmcgdW50aWwgd2Ugc3dpdGNo
IE1hYyBhbmQgV2luIHBvcnRzIG92ZXIgdG8gCisvLyB1c2luZyB0aGUgZXhwb3J0IG1hY3Jvcy4K
KyNkZWZpbmUgSlNfRVhQT1JUX1BSSVZBVEUKKyNkZWZpbmUgV1RGX0VYUE9SVF9QUklWQVRFCisK
ICNpZiBkZWZpbmVkKFdJTjMyKSB8fCBkZWZpbmVkKF9XSU4zMikKICNpZm5kZWYgV1RGX1VTRV9D
Rk5FVFdPUksKICNkZWZpbmUgV1RGX1VTRV9DRk5FVFdPUksgMQpJbmRleDogU291cmNlL1dlYktp
dC9jZi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jZi9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDgwNDQ0KQorKysgU291cmNlL1dlYktpdC9jZi9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMS0wMy0wNiAgS2V2aW4gT2xsaXZpZXIgIDxrZXZp
bm9AdGhlb2xsaXZpZXJzLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJbnRyb2R1Y2UgV1RGX1VTRV9FWFBPUlRfTUFDUk9TLCB3aGljaCB3aWxs
IGFsbG93IHVzIHRvIHB1dCBzaGFyZWQgbGlicmFyeSBpbXBvcnQvZXhwb3J0CisgICAgICAgIGlu
Zm8gaW50byB0aGUgaGVhZGVycyByYXRoZXIgdGhhbiBpbiBleHBvcnQgc3ltYm9sIGRlZmluaXRp
b24gZmlsZXMsIGJ1dCBkaXNhYmxlIGl0IG9uIAorICAgICAgICBhbGwgcGxhdGZvcm1zIGluaXRp
YWxseSBzbyB3ZSBjYW4gZGVhbCB3aXRoIHBvcnQgYnVpbGQgaXNzdWVzIG9uZSBwb3J0IGF0IGEg
dGltZS4KKyAgICAgICAgCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yNzU1MQorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50Q0YuY3BwOgorCiAyMDExLTAyLTIzICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZwkocmV2aXNpb24gODA0MzUpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMS0wMy0wNiAgS2V2aW4gT2xsaXZp
ZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2UgV1RGX1VTRV9FWFBPUlRfTUFDUk9TLCB3
aGljaCB3aWxsIGFsbG93IHVzIHRvIHB1dCBzaGFyZWQgbGlicmFyeSBpbXBvcnQvZXhwb3J0Cisg
ICAgICAgIGluZm8gaW50byB0aGUgaGVhZGVycyByYXRoZXIgdGhhbiBpbiBleHBvcnQgc3ltYm9s
IGRlZmluaXRpb24gZmlsZXMsIGJ1dCBkaXNhYmxlIGl0IG9uIAorICAgICAgICBhbGwgcGxhdGZv
cm1zIGluaXRpYWxseSBzbyB3ZSBjYW4gZGVhbCB3aXRoIHBvcnQgYnVpbGQgaXNzdWVzIG9uZSBw
b3J0IGF0IGEgdGltZS4KKyAgICAgICAgCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yNzU1MQorCisgICAgICAgICogV2ViS2l0UHJlZml4Lmg6CisKIDIw
MTEtMDMtMDYgIEplc3NpZSBCZXJsaW4gIDxqYmVybGluQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViS2l0UHJl
Zml4LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViS2l0UHJlZml4LmgJKHJl
dmlzaW9uIDgwNDM1KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViS2l0UHJlZml4LmgJKHdvcmtp
bmcgY29weSkKQEAgLTc5LDEyICs3OSw2IEBACiAjZGVmaW5lIFdURl9VU0VfSlNDIDEKICNkZWZp
bmUgV1RGX1VTRV9WOCAwCiAKLSNpZmRlZiBfX2NwbHVzcGx1cwotI2luY2x1ZGUgPHd0Zi9GYXN0
TWFsbG9jLmg+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPHd0Zi9EaXNhbGxvd0NUeXBlLmg+Ci0KIC8q
IFdvcmsgYXJvdW5kIGJ1ZyB3aXRoIEMrKyBsaWJyYXJ5IHRoYXQgc2NyZXdzIHVwIE9iamVjdGl2
ZS1DKysgd2hlbiBleGNlcHRpb24gc3VwcG9ydCBpcyBkaXNhYmxlZC4gKi8KICN1bmRlZiB0cnkK
ICN1bmRlZiBjYXRjaApAQCAtOTIsMyArODYsMTEgQEAKICNkZWZpbmUgSlNfRVhQT1JUREFUQQog
I2RlZmluZSBKU19FWFBPUlRDTEFTUwogI2RlZmluZSBXRUJLSVRfRVhQT1JUREFUQQorI2RlZmlu
ZSBXVEZfRVhQT1JUX1BSSVZBVEUKKyNkZWZpbmUgSlNfRVhQT1JUX1BSSVZBVEUKKworI2lmZGVm
IF9fY3BsdXNwbHVzCisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKyNlbmRpZgorCisjaW5j
bHVkZSA8d3RmL0Rpc2FsbG93Q1R5cGUuaD4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NvbmZpZy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NvbmZpZy5oCShyZXZpc2lvbiA4MDQzNSkK
KysrIFNvdXJjZS9XZWJDb3JlL2NvbmZpZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSwy
OSBAQAogCiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CiAKKy8qIFNlZSBub3RlIGluIHd0Zi9Q
bGF0Zm9ybS5oIGZvciBtb3JlIGluZm8gb24gRVhQT1JUX01BQ1JPUy4gKi8KKyNpZiBVU0UoRVhQ
T1JUX01BQ1JPUykKKyNpbmNsdWRlIDx3dGYvRXhwb3J0TWFjcm9zLmg+CisKKyNpZiBkZWZpbmVk
KEJVSUxESU5HX0phdmFTY3JpcHRDb3JlKSB8fCBkZWZpbmVkKEJVSUxESU5HX1dURikKKyNkZWZp
bmUgV1RGX0VYUE9SVF9QUklWQVRFIFdURl9FWFBPUlQKKyNkZWZpbmUgSlNfRVhQT1JUX1BSSVZB
VEUgV1RGX0VYUE9SVAorI2Vsc2UKKyNkZWZpbmUgV1RGX0VYUE9SVF9QUklWQVRFIFdURl9JTVBP
UlQKKyNkZWZpbmUgSlNfRVhQT1JUX1BSSVZBVEUgV1RGX0lNUE9SVAorI2VuZGlmCisKKyNkZWZp
bmUgSlNfRVhQT1JUREFUQSBKU19FWFBPUlRfUFJJVkFURQorI2RlZmluZSBKU19FWFBPUlRDTEFT
UyBKU19FWFBPUlRfUFJJVkFURQorCisjaWYgZGVmaW5lZChCVUlMRElOR19XZWJDb3JlKSB8fCBk
ZWZpbmVkKEJVSUxESU5HX1dlYktpdCkKKyNkZWZpbmUgV0VCS0lUX0VYUE9SVERBVEEgV1RGX0VY
UE9SVAorI2Vsc2UKKyNkZWZpbmUgV0VCS0lUX0VYUE9SVERBVEEgV1RGX0lNUE9SVAorI2VuZGlm
CisKKyNlbHNlIC8qICFVU0UoRVhQT1JUX01BQ1JPUykgKi8KKwogI2lmICFQTEFURk9STShDSFJP
TUlVTSkgJiYgT1MoV0lORE9XUykgJiYgIWRlZmluZWQoQlVJTERJTkdfV1hfXykgJiYgIUNPTVBJ
TEVSKEdDQykKICNpZiBkZWZpbmVkKEJVSUxESU5HX0phdmFTY3JpcHRDb3JlKSB8fCBkZWZpbmVk
KEJVSUxESU5HX1dURikKICNkZWZpbmUgSlNfRVhQT1JUREFUQSBfX2RlY2xzcGVjKGRsbGV4cG9y
dCkKQEAgLTQwLDEzICs2MywxOSBAQAogI2Vsc2UKICNkZWZpbmUgV0VCS0lUX0VYUE9SVERBVEEg
X19kZWNsc3BlYyhkbGxpbXBvcnQpCiAjZW5kaWYKKyNkZWZpbmUgV1RGX0VYUE9SVF9QUklWQVRF
IEpTX0VYUE9SVERBVEEKKyNkZWZpbmUgSlNfRVhQT1JUX1BSSVZBVEUgSlNfRVhQT1JUREFUQQog
I2RlZmluZSBKU19FWFBPUlRDTEFTUyBKU19FWFBPUlREQVRBCiAjZWxzZQogI2RlZmluZSBKU19F
WFBPUlREQVRBCiAjZGVmaW5lIEpTX0VYUE9SVENMQVNTCiAjZGVmaW5lIFdFQktJVF9FWFBPUlRE
QVRBCisjZGVmaW5lIFdURl9FWFBPUlRfUFJJVkFURQorI2RlZmluZSBKU19FWFBPUlRfUFJJVkFU
RQogI2VuZGlmCiAKKyNlbmRpZiAvKiBVU0UoRVhQT1JUX01BQ1JPUykgKi8KKwogI2lmZGVmIF9f
QVBQTEVfXwogI2RlZmluZSBIQVZFX0ZVTkNfVVNMRUVQIDEKICNlbmRpZiAvKiBfX0FQUExFX18g
Ki8KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgwNDM1KQorKysgU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDMtMDYgIEtldmlu
IE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIFdURl9VU0VfRVhQT1JUX01B
Q1JPUywgd2hpY2ggd2lsbCBhbGxvdyB1cyB0byBwdXQgc2hhcmVkIGxpYnJhcnkgaW1wb3J0L2V4
cG9ydAorICAgICAgICBpbmZvIGludG8gdGhlIGhlYWRlcnMgcmF0aGVyIHRoYW4gaW4gZXhwb3J0
IHN5bWJvbCBkZWZpbml0aW9uIGZpbGVzLCBidXQgZGlzYWJsZSBpdCBvbiAKKyAgICAgICAgYWxs
IHBsYXRmb3JtcyBpbml0aWFsbHkgc28gd2UgY2FuIGRlYWwgd2l0aCBwb3J0IGJ1aWxkIGlzc3Vl
cyBvbmUgcG9ydCBhdCBhIHRpbWUuCisgICAgICAgIAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc1NTEKKworICAgICAgICAqIGNvbmZpZy5oOgorICAg
ICAgICAqIHBsYXRmb3JtL21hYy9Mb2dnaW5nTWFjLm1tOgorCiAyMDExLTAzLTA2ICBKZXNzaWUg
QmVybGluICA8amJlcmxpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdl
aW5pZy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2dnaW5nTWFjLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2dnaW5nTWFjLm1tCShy
ZXZpc2lvbiA4MDQzNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2dnaW5nTWFj
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2ICsyMyw4IEBACiAgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAq
LwogCisjaW5jbHVkZSAiY29uZmlnLmgiCisKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDgwNDM1KQorKysgU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEt
MDMtMDYgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIFdURl9V
U0VfRVhQT1JUX01BQ1JPUywgd2hpY2ggd2lsbCBhbGxvdyB1cyB0byBwdXQgc2hhcmVkIGxpYnJh
cnkgaW1wb3J0L2V4cG9ydAorICAgICAgICBpbmZvIGludG8gdGhlIGhlYWRlcnMgcmF0aGVyIHRo
YW4gaW4gZXhwb3J0IHN5bWJvbCBkZWZpbml0aW9uIGZpbGVzLCBidXQgZGlzYWJsZSBpdCBvbiAK
KyAgICAgICAgYWxsIHBsYXRmb3JtcyBpbml0aWFsbHkgc28gd2UgY2FuIGRlYWwgd2l0aCBwb3J0
IGJ1aWxkIGlzc3VlcyBvbmUgcG9ydCBhdCBhIHRpbWUuCisgICAgICAgIAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc1NTEKKworICAgICAgICAqIGNv
bmZpZy5oOgorCiAyMDExLTAzLTA2ICBKZXNzaWUgQmVybGluICA8amJlcmxpbkBhcHBsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L2NvbmZpZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL2NvbmZpZy5oCShyZXZpc2lv
biA4MDQzNSkKKysrIFNvdXJjZS9XZWJLaXQyL2NvbmZpZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
OCwxNiArMjgsNiBAQAogI2luY2x1ZGUgImF1dG90b29sc2NvbmZpZy5oIgogI2VuZGlmIC8qIGRl
ZmluZWQgKEJVSUxESU5HX0dUS19fKSAqLwogCi0jaWZkZWYgX19jcGx1c3BsdXMKLQotLy8gVGhl
c2UgdW5kZWZzIG1hdGNoIHVwIHdpdGggZGVmaW5lcyBpbiBXZWJLaXQyUHJlZml4LmggZm9yIE1h
YyBPUyBYLgotLy8gSGVscHMgdXMgY2F0Y2ggaWYgYW55b25lIHVzZXMgbmV3IG9yIGRlbGV0ZSBi
eSBhY2NpZGVudCBpbiBjb2RlIGFuZCBkb2Vzbid0IGluY2x1ZGUgImNvbmZpZy5oIi4KLSN1bmRl
ZiBuZXcKLSN1bmRlZiBkZWxldGUKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotCi0jZW5k
aWYKLQogI2luY2x1ZGUgPHd0Zi9EaXNhbGxvd0NUeXBlLmg+CiAjaW5jbHVkZSA8d3RmL1BsYXRm
b3JtLmg+CiAKQEAgLTY4LDYgKzU4LDggQEAKIAogI2RlZmluZSBKU19FWFBPUlREQVRBCiAjZGVm
aW5lIEpTX0VYUE9SVENMQVNTCisjZGVmaW5lIFdURl9FWFBPUlRfUFJJVkFURQorI2RlZmluZSBK
U19FWFBPUlRfUFJJVkFURQogCiAjZWxpZiBkZWZpbmVkKF9fQVBQTEVfXykKIApAQCAtMTAyLDYg
Kzk0LDkgQEAKICNkZWZpbmUgSlNfRVhQT1JUQ0xBU1MKICNkZWZpbmUgV0VCS0lUX0VYUE9SVERB
VEEKIAorI2RlZmluZSBXVEZfRVhQT1JUX1BSSVZBVEUKKyNkZWZpbmUgSlNfRVhQT1JUX1BSSVZB
VEUKKwogI2luY2x1ZGUgPFdlYkNvcmUvRW1wdHlQcm90b2NvbERlZmluaXRpb25zLmg+CiAKICNl
bGlmIGRlZmluZWQoV0lOMzIpIHx8IGRlZmluZWQoX1dJTjMyKQpAQCAtMTM2LDYgKzEzMSwxNiBA
QAogCiAjZW5kaWYgLyogZGVmaW5lZChXSU4zMikgfHwgZGVmaW5lZChfV0lOMzIpICovCiAKKyNp
ZmRlZiBfX2NwbHVzcGx1cworCisvLyBUaGVzZSB1bmRlZnMgbWF0Y2ggdXAgd2l0aCBkZWZpbmVz
IGluIFdlYktpdDJQcmVmaXguaCBmb3IgTWFjIE9TIFguCisvLyBIZWxwcyB1cyBjYXRjaCBpZiBh
bnlvbmUgdXNlcyBuZXcgb3IgZGVsZXRlIGJ5IGFjY2lkZW50IGluIGNvZGUgYW5kIGRvZXNuJ3Qg
aW5jbHVkZSAiY29uZmlnLmgiLgorI3VuZGVmIG5ldworI3VuZGVmIGRlbGV0ZQorI2luY2x1ZGUg
PHd0Zi9GYXN0TWFsbG9jLmg+CisKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oTUFDKSB8fCAoT1Mo
TUFDX09TX1gpICYmIFBMQVRGT1JNKFFUKSkKICNkZWZpbmUgUExVR0lOX0FSQ0hJVEVDVFVSRV9N
QUMgMQogI2VsaWYgUExBVEZPUk0oV0lOKSB8fCAoT1MoV0lORE9XUykgJiYgUExBVEZPUk0oUVQp
KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84962</attachid>
            <date>2011-03-07 11:38:06 -0800</date>
            <delta_ts>2011-03-07 13:31:51 -0800</delta_ts>
            <desc>Retry - Step 1 more Win and Qt build fixes</desc>
            <filename>jscore_export_step1try6.patch</filename>
            <type>text/plain</type>
            <size>22114</size>
            <attacher name="Kevin Ollivier">kevino</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSVByZWZpeC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSVByZWZpeC5oCShyZXZpc2lv
biA4MDQzNSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSVByZWZpeC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiwxMCBAQAogCiAjZW5kaWYKIAorLyogRklYTUU6IERl
ZmluZSB0aGVzZSBwcm9wZXJseSBvbmNlIFVTRShFWFBPUlRfTUFDUk9TKSBpcyBzZXQgZm9yIHBv
cnRzIHVzaW5nIHRoaXMgKi8KKyNkZWZpbmUgSlNfRVhQT1JUX1BSSVZBVEUKKyNkZWZpbmUgV1RG
X0VYUE9SVF9QUklWQVRFCisKICNpbmNsdWRlIDxzdGRpbnQuaD4KIAogI2luY2x1ZGUgPFdlYktp
dDIvV2ViS2l0Mi5oPgpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVu
bmVyUHJlZml4LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRU
ZXN0UnVubmVyUHJlZml4LmgJKHJldmlzaW9uIDgwNDM1KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9XZWJLaXRUZXN0UnVubmVyUHJlZml4LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDkgKzMw
LDE5IEBACiAjaWYgZGVmaW5lZChXSU4zMikgfHwgZGVmaW5lZChfV0lOMzIpCiAvLyBJZiB3ZSBk
b24ndCBkZWZpbmUgdGhlc2UsIHRoZXkgZ2V0IGRlZmluZWQgaW4gd2luZGVmLmguIAogLy8gV2Ug
d2FudCB0byB1c2Ugc3RkOjptaW4gYW5kIHN0ZDo6bWF4CisjaWZuZGVmIG1heAogI2RlZmluZSBt
YXggbWF4CisjZW5kaWYKKyNpZm5kZWYgbWluCiAjZGVmaW5lIG1pbiBtaW4KICNlbmRpZgorI2Vu
ZGlmCiAKICNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmICFVU0UoRVhQT1JUX01BQ1JP
UykKKyNkZWZpbmUgSlNfRVhQT1JUX1BSSVZBVEUgCisjZGVmaW5lIFdURl9FWFBPUlRfUFJJVkFU
RQorI2VuZGlmCisKICNpbmNsdWRlIDxXZWJLaXQyL1dlYktpdDIuaD4KSW5kZXg6IFRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvcXQvVGVzdEludm9jYXRpb25RdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9xdC9UZXN0SW52b2NhdGlvblF0LmNwcAkocmV2aXNpb24gODA0
MzUpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL3F0L1Rlc3RJbnZvY2F0aW9uUXQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yMyw2ICsyMyw4IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAorI2luY2x1ZGUgIldlYktpdFRlc3RSdW5uZXJQcmVmaXguaCIKKwog
I2luY2x1ZGUgIlRlc3RJbnZvY2F0aW9uLmgiCiAKIG5hbWVzcGFjZSBXVFIgewpJbmRleDogVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9xdC9QbGF0Zm9ybVdlYlZpZXdRdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9xdC9QbGF0Zm9ybVdlYlZpZXdRdC5jcHAJKHJldmlz
aW9uIDgwNDM1KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9xdC9QbGF0Zm9ybVdlYlZpZXdR
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDggQEAKICAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KIAorI2luY2x1ZGUgIldlYktpdFRlc3RSdW5uZXJQcmVmaXguaCIKKwogI2luY2x1ZGUgIlBs
YXRmb3JtV2ViVmlldy5oIgogI2luY2x1ZGUgInFncmFwaGljc3drdmlldy5oIgogI2luY2x1ZGUg
InF3a2NvbnRleHQuaCIKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvcXQvbWFpbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9xdC9tYWluLmNwcAkocmV2aXNp
b24gODA0MzUpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL3F0L21haW4uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNCw2ICsyNCw4IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAorI2luY2x1ZGUgIldlYktpdFRlc3RSdW5uZXJQcmVmaXguaCIKKwogI2luY2x1
ZGUgIlRlc3RDb250cm9sbGVyLmgiCiAKICNpbmNsdWRlIDxRQXBwbGljYXRpb24+CkluZGV4OiBU
b29scy9XZWJLaXRUZXN0UnVubmVyL3F0L1Rlc3RDb250cm9sbGVyUXQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvcXQvVGVzdENvbnRyb2xsZXJRdC5jcHAJKHJldmlz
aW9uIDgwNDM1KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9xdC9UZXN0Q29udHJvbGxlclF0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsOCBAQAogICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCisjaW5jbHVkZSAiV2ViS2l0VGVzdFJ1bm5lclByZWZpeC5oIgorCiAjaW5jbHVkZSAiVGVz
dENvbnRyb2xsZXIuaCIKIAogI2luY2x1ZGUgIldLU3RyaW5nUXQuaCIKSW5kZXg6IFRvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL2NvbmZpZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL2NvbmZpZy5oCShyZXZpc2lvbiA4MDQzNSkKKysrIFRvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL2NvbmZpZy5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw0ICs1
Myw3IEBACiAjZGVmaW5lIEpTX0VYUE9SVERBVEEKICNlbmRpZgogCisjZGVmaW5lIFdURl9FWFBP
UlRfUFJJVkFURSBKU19FWFBPUlREQVRBCisjZGVmaW5lIEpTX0VYUE9SVF9QUklWQVRFIEpTX0VY
UE9SVERBVEEKKwogI2VuZGlmIC8vIGNvbmZpZ19oCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJl
ZS9jb25maWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9jb25maWcuaAko
cmV2aXNpb24gODA0MzUpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9jb25maWcuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsMTMgKzI2LDIwIEBACiAKICNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4K
IAotI2lmZGVmIF9fY3BsdXNwbHVzCi0jdW5kZWYgbmV3Ci0jdW5kZWYgZGVsZXRlCi0jaW5jbHVk
ZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNlbmRpZgorLyogU2VlIG5vdGUgaW4gd3RmL1BsYXRmb3Jt
LmggZm9yIG1vcmUgaW5mbyBvbiBFWFBPUlRfTUFDUk9TLiAqLworI2lmIFVTRShFWFBPUlRfTUFD
Uk9TKQorI2luY2x1ZGUgPHd0Zi9FeHBvcnRNYWNyb3MuaD4KIAotI2lmIE9TKFdJTkRPV1MpICYm
ICFDT01QSUxFUihHQ0MpCisjZGVmaW5lIFdURl9FWFBPUlRfUFJJVkFURSBXVEZfSU1QT1JUCisj
ZGVmaW5lIEpTX0VYUE9SVF9QUklWQVRFIFdURl9JTVBPUlQKKyNkZWZpbmUgV0VCS0lUX0VYUE9S
VERBVEEgV1RGX0lNUE9SVAorCisjZGVmaW5lIEpTX0VYUE9SVERBVEEgSlNfRVhQT1JUX1BSSVZB
VEUKKyNkZWZpbmUgSlNfRVhQT1JUQ0xBU1MgSlNfRVhQT1JUX1BSSVZBVEUKKworI2Vsc2UgLyog
IVVTRShFWFBPUlRfTUFDUk9TKSAqLworCisjaWYgT1MoV0lORE9XUykgJiYgIUNPTVBJTEVSKEdD
QykgJiYgIWRlZmluZWQoQlVJTERJTkdfV1hfXykKICNkZWZpbmUgSlNfRVhQT1JUREFUQSBfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkKICNkZWZpbmUgV0VCS0lUX0VYUE9SVERBVEEgX19kZWNsc3BlYyhk
bGxpbXBvcnQpCiAjZWxzZQpAQCAtNDAsNiArNDcsMTcgQEAKICNkZWZpbmUgV0VCS0lUX0VYUE9S
VERBVEEKICNlbmRpZgogCisjZGVmaW5lIFdURl9FWFBPUlRfUFJJVkFURSBKU19FWFBPUlREQVRB
CisjZGVmaW5lIEpTX0VYUE9SVF9QUklWQVRFIEpTX0VYUE9SVERBVEEKKworI2VuZGlmIC8qIFVT
RShFWFBPUlRfTUFDUk9TKSAqLworCisjaWZkZWYgX19jcGx1c3BsdXMKKyN1bmRlZiBuZXcKKyN1
bmRlZiBkZWxldGUKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorI2VuZGlmCisKICNpZiBQ
TEFURk9STShNQUMpCiAjZGVmaW5lIFdURl9VU0VfQ0YgMQogCkluZGV4OiBUb29scy9EdW1wUmVu
ZGVyVHJlZS9jZy9JbWFnZURpZmZDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2cvSW1hZ2VEaWZmQ0cuY3BwCShyZXZpc2lvbiA4MDQzNSkKKysrIFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL2NnL0ltYWdlRGlmZkNHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYs
MTAgQEAKIAogI2RlZmluZSBtaW4gbWluCiAKKy8vIEZJWE1FOiBXZSBuZWVkIHRvIGJlIGFibGUg
dG8gaW5jbHVkZSB0aGVzZSBkZWZpbmVzIGZyb20gYSBjb25maWcuaCBzb21ld2hlcmUuCisjZGVm
aW5lIEpTX0VYUE9SVF9QUklWQVRFCisjZGVmaW5lIFdURl9FWFBPUlRfUFJJVkFURQorCiAjaW5j
bHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KICNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
Q2hhbmdlTG9nCShyZXZpc2lvbiA4MDQ2OCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDExLTAzLTA2ICBLZXZpbiBPbGxpdmllciAgPGtldmlu
b0B0aGVvbGxpdmllcnMuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEludHJvZHVjZSBXVEZfVVNFX0VYUE9SVF9NQUNST1MsIHdoaWNoIHdpbGwg
YWxsb3cgdXMgdG8gcHV0IHNoYXJlZCBsaWJyYXJ5IGltcG9ydC9leHBvcnQKKyAgICAgICAgaW5m
byBpbnRvIHRoZSBoZWFkZXJzIHJhdGhlciB0aGFuIGluIGV4cG9ydCBzeW1ib2wgZGVmaW5pdGlv
biBmaWxlcywgYnV0IGRpc2FibGUgaXQgb24gCisgICAgICAgIGFsbCBwbGF0Zm9ybXMgaW5pdGlh
bGx5IHNvIHdlIGNhbiBkZWFsIHdpdGggcG9ydCBidWlsZCBpc3N1ZXMgb25lIHBvcnQgYXQgYSB0
aW1lLgorICAgICAgICAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTI3NTUxCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jZy9JbWFnZURpZmZDRy5j
cHAKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9jb25maWcuaDoKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9jb25maWcuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUElQcmVmaXguaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RS
dW5uZXJQcmVmaXguaAorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvcXQvVGVzdEludm9jYXRp
b25RdC5jcHAKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL3F0L1BsYXRmb3JtV2ViVmlld1F0
LmNwcAorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvcXQvbWFpbi5jcHAKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL3F0L1Rlc3RDb250cm9sbGVyUXQuY3BwCisKIDIwMTEtMDMtMDYgIERh
bmllbCBCYXRlcyAgPGRiYXRlc0ByaW0uY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMg
U2VpZGVsIGFuZCBEYXZpZCBLaWx6ZXIuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvY29u
ZmlnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2NvbmZpZy5oCShyZXZp
c2lvbiA4MDQzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb25maWcuaAkod29ya2luZyBj
b3B5KQpAQCAtMjksNiArMjksMjMgQEAKIAogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogCisv
KiBTZWUgbm90ZSBpbiB3dGYvUGxhdGZvcm0uaCBmb3IgbW9yZSBpbmZvIG9uIEVYUE9SVF9NQUNS
T1MuICovCisjaWYgVVNFKEVYUE9SVF9NQUNST1MpCisjaW5jbHVkZSA8d3RmL0V4cG9ydE1hY3Jv
cy5oPgorCisjaWYgZGVmaW5lZChCVUlMRElOR19KYXZhU2NyaXB0Q29yZSkgfHwgZGVmaW5lZChC
VUlMRElOR19XVEYpCisjZGVmaW5lIFdURl9FWFBPUlRfUFJJVkFURSBXVEZfRVhQT1JUCisjZGVm
aW5lIEpTX0VYUE9SVF9QUklWQVRFIFdURl9FWFBPUlQKKyNlbHNlCisjZGVmaW5lIFdURl9FWFBP
UlRfUFJJVkFURSBXVEZfSU1QT1JUCisjZGVmaW5lIEpTX0VYUE9SVF9QUklWQVRFIFdURl9JTVBP
UlQKKyNlbmRpZgorCisjZGVmaW5lIEpTX0VYUE9SVERBVEEgSlNfRVhQT1JUX1BSSVZBVEUKKyNk
ZWZpbmUgSlNfRVhQT1JUQ0xBU1MgSlNfRVhQT1JUX1BSSVZBVEUKKworI2Vsc2UgLyogIVVTRShF
WFBPUlRfTUFDUk9TKSAqLworCiAjaWYgIVBMQVRGT1JNKENIUk9NSVVNKSAmJiBPUyhXSU5ET1dT
KSAmJiAhZGVmaW5lZChCVUlMRElOR19XWF9fKSAmJiAhQ09NUElMRVIoR0NDKQogI2lmIGRlZmlu
ZWQoQlVJTERJTkdfSmF2YVNjcmlwdENvcmUpIHx8IGRlZmluZWQoQlVJTERJTkdfV1RGKQogI2Rl
ZmluZSBKU19FWFBPUlREQVRBIF9fZGVjbHNwZWMoZGxsZXhwb3J0KQpAQCAtNDEsNiArNTgsMTEg
QEAKICNkZWZpbmUgSlNfRVhQT1JUQ0xBU1MKICNlbmRpZgogCisjZGVmaW5lIFdURl9FWFBPUlRf
UFJJVkFURSBKU19FWFBPUlREQVRBCisjZGVmaW5lIEpTX0VYUE9SVF9QUklWQVRFIEpTX0VYUE9S
VERBVEEKKworI2VuZGlmIC8qIFVTRShFWFBPUlRfTUFDUk9TKSAqLworCiAjaWYgT1MoV0lORE9X
UykKIAogLy8gSWYgd2UgZG9uJ3QgZGVmaW5lIHRoZXNlLCB0aGV5IGdldCBkZWZpbmVkIGluIHdp
bmRlZi5oLiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgJKHJldmlzaW9u
IDgwNDM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTY5LDQgKzExNjksMTAgQEAKICNpbmNsdWRlICJHVHlwZWRlZnMuaCIKICNl
bmRpZgogCisvKiBGSVhNRTogVGhpcyBkZWZpbmUgd29uJ3QgYmUgbmVlZGVkIG9uY2UgIzI3NTUx
IGlzIGZ1bGx5IGxhbmRlZC4gSG93ZXZlciwgCisgICBzaW5jZSBtb3N0IHBvcnRzIHRyeSB0byBz
dXBwb3J0IHN1Yi1wcm9qZWN0IGluZGVwZW5kZW5jZSwgYWRkaW5nIG5ldyBoZWFkZXJzCisgICB0
byBXVEYgY2F1c2VzIG1hbnkgcG9ydHMgdG8gYnJlYWssIGFuZCBzbyB0aGlzIHdheSB3ZSBjYW4g
YWRkcmVzcyB0aGUgYnVpbGQKKyAgIGJyZWFrYWdlcyBvbmUgcG9ydCBhdCBhIHRpbWUuICovCisj
ZGVmaW5lIFdURl9VU0VfRVhQT1JUX01BQ1JPUyAwCisKICNlbmRpZiAvKiBXVEZfUGxhdGZvcm1f
aCAqLwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9Bc3NlcnRpb25zLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9Bc3NlcnRpb25zLmgJKHJldmlzaW9u
IDgwNDM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9Bc3NlcnRpb25zLmgJKHdvcmtp
bmcgY29weSkKQEAgLTE0MiwxNCArMTQyLDE0IEBACiAgICAgV1RGTG9nQ2hhbm5lbFN0YXRlIHN0
YXRlOwogfSBXVEZMb2dDaGFubmVsOwogCi12b2lkIFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUo
Y29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uLCBjb25zdCBj
aGFyKiBhc3NlcnRpb24pOwotdm9pZCBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlV2l0aE1lc3Nh
Z2UoY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uLCBjb25z
dCBjaGFyKiBhc3NlcnRpb24sIGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKSBXVEZfQVRUUklCVVRF
X1BSSU5URig1LCA2KTsKLXZvaWQgV1RGUmVwb3J0QXJndW1lbnRBc3NlcnRpb25GYWlsdXJlKGNv
bnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiBmdW5jdGlvbiwgY29uc3QgY2hh
ciogYXJnTmFtZSwgY29uc3QgY2hhciogYXNzZXJ0aW9uKTsKLXZvaWQgV1RGUmVwb3J0QmFja3Ry
YWNlKCk7Ci12b2lkIFdURlJlcG9ydEZhdGFsRXJyb3IoY29uc3QgY2hhciogZmlsZSwgaW50IGxp
bmUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uLCBjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikgV1RGX0FU
VFJJQlVURV9QUklOVEYoNCwgNSk7Ci12b2lkIFdURlJlcG9ydEVycm9yKGNvbnN0IGNoYXIqIGZp
bGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiBmdW5jdGlvbiwgY29uc3QgY2hhciogZm9ybWF0LCAu
Li4pIFdURl9BVFRSSUJVVEVfUFJJTlRGKDQsIDUpOwotdm9pZCBXVEZMb2coV1RGTG9nQ2hhbm5l
bCogY2hhbm5lbCwgY29uc3QgY2hhciogZm9ybWF0LCAuLi4pIFdURl9BVFRSSUJVVEVfUFJJTlRG
KDIsIDMpOwotdm9pZCBXVEZMb2dWZXJib3NlKGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBj
b25zdCBjaGFyKiBmdW5jdGlvbiwgV1RGTG9nQ2hhbm5lbCogY2hhbm5lbCwgY29uc3QgY2hhciog
Zm9ybWF0LCAuLi4pIFdURl9BVFRSSUJVVEVfUFJJTlRGKDUsIDYpOworV1RGX0VYUE9SVF9QUklW
QVRFIHZvaWQgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZShjb25zdCBjaGFyKiBmaWxlLCBpbnQg
bGluZSwgY29uc3QgY2hhciogZnVuY3Rpb24sIGNvbnN0IGNoYXIqIGFzc2VydGlvbik7CitXVEZf
RVhQT1JUX1BSSVZBVEUgdm9pZCBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlV2l0aE1lc3NhZ2Uo
Y29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uLCBjb25zdCBj
aGFyKiBhc3NlcnRpb24sIGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKSBXVEZfQVRUUklCVVRFX1BS
SU5URig1LCA2KTsKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIFdURlJlcG9ydEFyZ3VtZW50QXNz
ZXJ0aW9uRmFpbHVyZShjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciogZnVu
Y3Rpb24sIGNvbnN0IGNoYXIqIGFyZ05hbWUsIGNvbnN0IGNoYXIqIGFzc2VydGlvbik7CitXVEZf
RVhQT1JUX1BSSVZBVEUgdm9pZCBXVEZSZXBvcnRCYWNrdHJhY2UoKTsKK1dURl9FWFBPUlRfUFJJ
VkFURSB2b2lkIFdURlJlcG9ydEZhdGFsRXJyb3IoY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUs
IGNvbnN0IGNoYXIqIGZ1bmN0aW9uLCBjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikgV1RGX0FUVFJJ
QlVURV9QUklOVEYoNCwgNSk7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBXVEZSZXBvcnRFcnJv
cihjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciogZnVuY3Rpb24sIGNvbnN0
IGNoYXIqIGZvcm1hdCwgLi4uKSBXVEZfQVRUUklCVVRFX1BSSU5URig0LCA1KTsKK1dURl9FWFBP
UlRfUFJJVkFURSB2b2lkIFdURkxvZyhXVEZMb2dDaGFubmVsKiBjaGFubmVsLCBjb25zdCBjaGFy
KiBmb3JtYXQsIC4uLikgV1RGX0FUVFJJQlVURV9QUklOVEYoMiwgMyk7CitXVEZfRVhQT1JUX1BS
SVZBVEUgdm9pZCBXVEZMb2dWZXJib3NlKGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25z
dCBjaGFyKiBmdW5jdGlvbiwgV1RGTG9nQ2hhbm5lbCogY2hhbm5lbCwgY29uc3QgY2hhciogZm9y
bWF0LCAuLi4pIFdURl9BVFRSSUJVVEVfUFJJTlRGKDUsIDYpOwogCiAjaWZkZWYgX19jcGx1c3Bs
dXMKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuaAkocmV2aXNpb24gODA0MzUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC04MCw2ICs4MCwxMSBAQAogI2RlZmluZSBKU19FWFBPUlQKICNlbmRpZiAvKiBkZWZpbmVkKEpT
X05PX0VYUE9SVCkgKi8KIAorLyogSlMgdGVzdHMgdXNlcyBXVEYgYnV0IGhhcyBubyBjb25maWcu
aCwgc28gd2UgbmVlZCB0byBzZXQgdGhlIGV4cG9ydCBkZWZpbmVzIGhlcmUuICovCisjaWZuZGVm
IFdURl9FWFBPUlRfUFJJVkFURQorI2RlZmluZSBXVEZfRVhQT1JUX1BSSVZBVEUgSlNfRVhQT1JU
CisjZW5kaWYKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiBleHRlcm4gIkMiIHsKICNlbmRpZgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA4MDQzNSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAx
MS0wMy0wNiAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2UgV1RG
X1VTRV9FWFBPUlRfTUFDUk9TLCB3aGljaCB3aWxsIGFsbG93IHVzIHRvIHB1dCBzaGFyZWQgbGli
cmFyeSBpbXBvcnQvZXhwb3J0CisgICAgICAgIGluZm8gaW50byB0aGUgaGVhZGVycyByYXRoZXIg
dGhhbiBpbiBleHBvcnQgc3ltYm9sIGRlZmluaXRpb24gZmlsZXMsIGJ1dCBkaXNhYmxlIGl0IG9u
IAorICAgICAgICBhbGwgcGxhdGZvcm1zIGluaXRpYWxseSBzbyB3ZSBjYW4gZGVhbCB3aXRoIHBv
cnQgYnVpbGQgaXNzdWVzIG9uZSBwb3J0IGF0IGEgdGltZS4KKyAgICAgICAgCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzU1MQorCisgICAgICAgICog
QVBJL0pTQmFzZS5oOgorICAgICAgICAqIGNvbmZpZy5oOgorICAgICAgICAqIHd0Zi9Bc3NlcnRp
b25zLmg6CisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6CisKIDIwMTEtMDMtMDUgIEFkYW0gQmFy
dGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEds
YXprb3YuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0R2x1ZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgwNDM1KQorKysg
U291cmNlL0phdmFTY3JpcHRHbHVlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDE1IEBACisyMDExLTAzLTA2ICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVvbGxpdmllcnMu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElu
dHJvZHVjZSBXVEZfVVNFX0VYUE9SVF9NQUNST1MsIHdoaWNoIHdpbGwgYWxsb3cgdXMgdG8gcHV0
IHNoYXJlZCBsaWJyYXJ5IGltcG9ydC9leHBvcnQKKyAgICAgICAgaW5mbyBpbnRvIHRoZSBoZWFk
ZXJzIHJhdGhlciB0aGFuIGluIGV4cG9ydCBzeW1ib2wgZGVmaW5pdGlvbiBmaWxlcywgYnV0IGRp
c2FibGUgaXQgb24gCisgICAgICAgIGFsbCBwbGF0Zm9ybXMgaW5pdGlhbGx5IHNvIHdlIGNhbiBk
ZWFsIHdpdGggcG9ydCBidWlsZCBpc3N1ZXMgb25lIHBvcnQgYXQgYSB0aW1lLgorICAgICAgICAK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NTUxCisK
KyAgICAgICAgKiBjb25maWcuaDoKKwogMjAxMS0wMy0wNCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3
ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0R2x1ZS9jb25maWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdEdsdWUvY29uZmlnLmgJKHJldmlzaW9uIDgwNDM1KQorKysgU291cmNlL0phdmFTY3Jp
cHRHbHVlL2NvbmZpZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOSwzICsxOSw2IEBACiAKICNkZWZp
bmUgSlNfRVhQT1JUREFUQQogI2RlZmluZSBKU19FWFBPUlRDTEFTUworI2RlZmluZSBKU19FWFBP
UlRfUFJJVkFURQorI2RlZmluZSBXVEZfRVhQT1JUX1BSSVZBVEUKKwpJbmRleDogU291cmNlL1dl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9HZW9sb2NhdGlvbkNsaWVudFF0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0dlb2xvY2F0aW9uQ2xpZW50UXQu
Y3BwCShyZXZpc2lvbiA4MDQzNSkKKysrIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
R2VvbG9jYXRpb25DbGllbnRRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MCwzICsxNDAsNSBA
QAogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNpbmNsdWRlICJtb2NfR2VvbG9jYXRp
b25DbGllbnRRdC5jcHAiCkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1Bv
cHVwTWVudVF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L1BvcHVwTWVudVF0LmNwcAkocmV2aXNpb24gODA0MzUpCisrKyBTb3VyY2UvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L1BvcHVwTWVudVF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU3LDQg
KzE1Nyw2IEBACiAKIH0KIAorI2luY2x1ZGUgIm1vY19Qb3B1cE1lbnVRdC5jcHAiCisKIC8vIHZp
bTogdHM9NCBzdz00IGV0CkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwkocmV2aXNpb24gODA0NzEpCisrKyBT
b3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBA
CisyMDExLTAzLTA2ICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEludHJvZHVj
ZSBXVEZfVVNFX0VYUE9SVF9NQUNST1MsIHdoaWNoIHdpbGwgYWxsb3cgdXMgdG8gcHV0IHNoYXJl
ZCBsaWJyYXJ5IGltcG9ydC9leHBvcnQKKyAgICAgICAgaW5mbyBpbnRvIHRoZSBoZWFkZXJzIHJh
dGhlciB0aGFuIGluIGV4cG9ydCBzeW1ib2wgZGVmaW5pdGlvbiBmaWxlcywgYnV0IGRpc2FibGUg
aXQgb24gCisgICAgICAgIGFsbCBwbGF0Zm9ybXMgaW5pdGlhbGx5IHNvIHdlIGNhbiBkZWFsIHdp
dGggcG9ydCBidWlsZCBpc3N1ZXMgb25lIHBvcnQgYXQgYSB0aW1lLgorICAgICAgICAKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NTUxCisgICAgICAg
IAorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0dlb2xvY2F0aW9uQ2xpZW50UXQuY3BwOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1BvcHVwTWVudVF0LmNwcDoKKwogMjAxMS0wMy0wNSAgUWkg
WmhhbmcgIDxxaS4yLnpoYW5nQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBMYXN6
bG8gR29tYm9zLgpJbmRleDogU291cmNlL1dlYktpdC9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnRDRi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jZi9XZWJDb3Jl
U3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAJKHJldmlzaW9uIDgwNDM1KQorKysgU291
cmNlL1dlYktpdC9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDExIEBACiAjZGVmaW5lIFdURl9VU0VfSlNDIDEKICNl
bmRpZgogCisvLyBMZWF2ZSB0aGVzZSBzZXQgdG8gbm90aGluZyB1bnRpbCB3ZSBzd2l0Y2ggTWFj
IGFuZCBXaW4gcG9ydHMgb3ZlciB0byAKKy8vIHVzaW5nIHRoZSBleHBvcnQgbWFjcm9zLgorI2Rl
ZmluZSBKU19FWFBPUlRfUFJJVkFURQorI2RlZmluZSBXVEZfRVhQT1JUX1BSSVZBVEUKKwogI2lm
IGRlZmluZWQoV0lOMzIpIHx8IGRlZmluZWQoX1dJTjMyKQogI2lmbmRlZiBXVEZfVVNFX0NGTkVU
V09SSwogI2RlZmluZSBXVEZfVVNFX0NGTkVUV09SSyAxCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nm
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2NmL0NoYW5nZUxvZwkocmV2
aXNpb24gODA0NDQpCisrKyBTb3VyY2UvV2ViS2l0L2NmL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE1IEBACisyMDExLTAzLTA2ICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0
aGVvbGxpdmllcnMuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEludHJvZHVjZSBXVEZfVVNFX0VYUE9SVF9NQUNST1MsIHdoaWNoIHdpbGwgYWxs
b3cgdXMgdG8gcHV0IHNoYXJlZCBsaWJyYXJ5IGltcG9ydC9leHBvcnQKKyAgICAgICAgaW5mbyBp
bnRvIHRoZSBoZWFkZXJzIHJhdGhlciB0aGFuIGluIGV4cG9ydCBzeW1ib2wgZGVmaW5pdGlvbiBm
aWxlcywgYnV0IGRpc2FibGUgaXQgb24gCisgICAgICAgIGFsbCBwbGF0Zm9ybXMgaW5pdGlhbGx5
IHNvIHdlIGNhbiBkZWFsIHdpdGggcG9ydCBidWlsZCBpc3N1ZXMgb25lIHBvcnQgYXQgYSB0aW1l
LgorICAgICAgICAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTI3NTUxCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRD
Ri5jcHA6CisKIDIwMTEtMDItMjMgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCShyZXZpc2lvbiA4MDQzNSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDExLTAzLTA2ICBLZXZpbiBPbGxpdmllciAg
PGtldmlub0B0aGVvbGxpdmllcnMuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEludHJvZHVjZSBXVEZfVVNFX0VYUE9SVF9NQUNST1MsIHdoaWNo
IHdpbGwgYWxsb3cgdXMgdG8gcHV0IHNoYXJlZCBsaWJyYXJ5IGltcG9ydC9leHBvcnQKKyAgICAg
ICAgaW5mbyBpbnRvIHRoZSBoZWFkZXJzIHJhdGhlciB0aGFuIGluIGV4cG9ydCBzeW1ib2wgZGVm
aW5pdGlvbiBmaWxlcywgYnV0IGRpc2FibGUgaXQgb24gCisgICAgICAgIGFsbCBwbGF0Zm9ybXMg
aW5pdGlhbGx5IHNvIHdlIGNhbiBkZWFsIHdpdGggcG9ydCBidWlsZCBpc3N1ZXMgb25lIHBvcnQg
YXQgYSB0aW1lLgorICAgICAgICAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTI3NTUxCisKKyAgICAgICAgKiBXZWJLaXRQcmVmaXguaDoKKwogMjAxMS0w
My0wNiAgSmVzc2llIEJlcmxpbiAgPGpiZXJsaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IFNhbSBXZWluaWcuCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJLaXRQcmVmaXgu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJLaXRQcmVmaXguaAkocmV2aXNp
b24gODA0MzUpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJLaXRQcmVmaXguaAkod29ya2luZyBj
b3B5KQpAQCAtNzksMTIgKzc5LDYgQEAKICNkZWZpbmUgV1RGX1VTRV9KU0MgMQogI2RlZmluZSBX
VEZfVVNFX1Y4IDAKIAotI2lmZGVmIF9fY3BsdXNwbHVzCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxs
b2MuaD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8d3RmL0Rpc2FsbG93Q1R5cGUuaD4KLQogLyogV29y
ayBhcm91bmQgYnVnIHdpdGggQysrIGxpYnJhcnkgdGhhdCBzY3Jld3MgdXAgT2JqZWN0aXZlLUMr
KyB3aGVuIGV4Y2VwdGlvbiBzdXBwb3J0IGlzIGRpc2FibGVkLiAqLwogI3VuZGVmIHRyeQogI3Vu
ZGVmIGNhdGNoCkBAIC05MiwzICs4NiwxMSBAQAogI2RlZmluZSBKU19FWFBPUlREQVRBCiAjZGVm
aW5lIEpTX0VYUE9SVENMQVNTCiAjZGVmaW5lIFdFQktJVF9FWFBPUlREQVRBCisjZGVmaW5lIFdU
Rl9FWFBPUlRfUFJJVkFURQorI2RlZmluZSBKU19FWFBPUlRfUFJJVkFURQorCisjaWZkZWYgX19j
cGx1c3BsdXMKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorI2VuZGlmCisKKyNpbmNsdWRl
IDx3dGYvRGlzYWxsb3dDVHlwZS5oPgpJbmRleDogU291cmNlL1dlYkNvcmUvY29uZmlnLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY29uZmlnLmgJKHJldmlzaW9uIDgwNDM1KQorKysg
U291cmNlL1dlYkNvcmUvY29uZmlnLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDI5IEBA
CiAKICNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KIAorLyogU2VlIG5vdGUgaW4gd3RmL1BsYXRm
b3JtLmggZm9yIG1vcmUgaW5mbyBvbiBFWFBPUlRfTUFDUk9TLiAqLworI2lmIFVTRShFWFBPUlRf
TUFDUk9TKQorI2luY2x1ZGUgPHd0Zi9FeHBvcnRNYWNyb3MuaD4KKworI2lmIGRlZmluZWQoQlVJ
TERJTkdfSmF2YVNjcmlwdENvcmUpIHx8IGRlZmluZWQoQlVJTERJTkdfV1RGKQorI2RlZmluZSBX
VEZfRVhQT1JUX1BSSVZBVEUgV1RGX0VYUE9SVAorI2RlZmluZSBKU19FWFBPUlRfUFJJVkFURSBX
VEZfRVhQT1JUCisjZWxzZQorI2RlZmluZSBXVEZfRVhQT1JUX1BSSVZBVEUgV1RGX0lNUE9SVAor
I2RlZmluZSBKU19FWFBPUlRfUFJJVkFURSBXVEZfSU1QT1JUCisjZW5kaWYKKworI2RlZmluZSBK
U19FWFBPUlREQVRBIEpTX0VYUE9SVF9QUklWQVRFCisjZGVmaW5lIEpTX0VYUE9SVENMQVNTIEpT
X0VYUE9SVF9QUklWQVRFCisKKyNpZiBkZWZpbmVkKEJVSUxESU5HX1dlYkNvcmUpIHx8IGRlZmlu
ZWQoQlVJTERJTkdfV2ViS2l0KQorI2RlZmluZSBXRUJLSVRfRVhQT1JUREFUQSBXVEZfRVhQT1JU
CisjZWxzZQorI2RlZmluZSBXRUJLSVRfRVhQT1JUREFUQSBXVEZfSU1QT1JUCisjZW5kaWYKKwor
I2Vsc2UgLyogIVVTRShFWFBPUlRfTUFDUk9TKSAqLworCiAjaWYgIVBMQVRGT1JNKENIUk9NSVVN
KSAmJiBPUyhXSU5ET1dTKSAmJiAhZGVmaW5lZChCVUlMRElOR19XWF9fKSAmJiAhQ09NUElMRVIo
R0NDKQogI2lmIGRlZmluZWQoQlVJTERJTkdfSmF2YVNjcmlwdENvcmUpIHx8IGRlZmluZWQoQlVJ
TERJTkdfV1RGKQogI2RlZmluZSBKU19FWFBPUlREQVRBIF9fZGVjbHNwZWMoZGxsZXhwb3J0KQpA
QCAtNDAsMTMgKzYzLDE5IEBACiAjZWxzZQogI2RlZmluZSBXRUJLSVRfRVhQT1JUREFUQSBfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkKICNlbmRpZgorI2RlZmluZSBXVEZfRVhQT1JUX1BSSVZBVEUgSlNf
RVhQT1JUREFUQQorI2RlZmluZSBKU19FWFBPUlRfUFJJVkFURSBKU19FWFBPUlREQVRBCiAjZGVm
aW5lIEpTX0VYUE9SVENMQVNTIEpTX0VYUE9SVERBVEEKICNlbHNlCiAjZGVmaW5lIEpTX0VYUE9S
VERBVEEKICNkZWZpbmUgSlNfRVhQT1JUQ0xBU1MKICNkZWZpbmUgV0VCS0lUX0VYUE9SVERBVEEK
KyNkZWZpbmUgV1RGX0VYUE9SVF9QUklWQVRFCisjZGVmaW5lIEpTX0VYUE9SVF9QUklWQVRFCiAj
ZW5kaWYKIAorI2VuZGlmIC8qIFVTRShFWFBPUlRfTUFDUk9TKSAqLworCiAjaWZkZWYgX19BUFBM
RV9fCiAjZGVmaW5lIEhBVkVfRlVOQ19VU0xFRVAgMQogI2VuZGlmIC8qIF9fQVBQTEVfXyAqLwpJ
bmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODA0MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMS0wMy0wNiAgS2V2aW4gT2xs
aXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2UgV1RGX1VTRV9FWFBPUlRfTUFDUk9T
LCB3aGljaCB3aWxsIGFsbG93IHVzIHRvIHB1dCBzaGFyZWQgbGlicmFyeSBpbXBvcnQvZXhwb3J0
CisgICAgICAgIGluZm8gaW50byB0aGUgaGVhZGVycyByYXRoZXIgdGhhbiBpbiBleHBvcnQgc3lt
Ym9sIGRlZmluaXRpb24gZmlsZXMsIGJ1dCBkaXNhYmxlIGl0IG9uIAorICAgICAgICBhbGwgcGxh
dGZvcm1zIGluaXRpYWxseSBzbyB3ZSBjYW4gZGVhbCB3aXRoIHBvcnQgYnVpbGQgaXNzdWVzIG9u
ZSBwb3J0IGF0IGEgdGltZS4KKyAgICAgICAgCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yNzU1MQorCisgICAgICAgICogY29uZmlnLmg6CisgICAgICAg
ICogcGxhdGZvcm0vbWFjL0xvZ2dpbmdNYWMubW06CisKIDIwMTEtMDMtMDYgIEplc3NpZSBCZXJs
aW4gIDxqYmVybGluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2Vpbmln
LgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0xvZ2dpbmdNYWMubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0xvZ2dpbmdNYWMubW0JKHJldmlz
aW9uIDgwNDM1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0xvZ2dpbmdNYWMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTIzLDYgKzIzLDggQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAK
KyNpbmNsdWRlICJjb25maWcuaCIKKwogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gODA0MzUpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMS0wMy0w
NiAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2UgV1RGX1VTRV9F
WFBPUlRfTUFDUk9TLCB3aGljaCB3aWxsIGFsbG93IHVzIHRvIHB1dCBzaGFyZWQgbGlicmFyeSBp
bXBvcnQvZXhwb3J0CisgICAgICAgIGluZm8gaW50byB0aGUgaGVhZGVycyByYXRoZXIgdGhhbiBp
biBleHBvcnQgc3ltYm9sIGRlZmluaXRpb24gZmlsZXMsIGJ1dCBkaXNhYmxlIGl0IG9uIAorICAg
ICAgICBhbGwgcGxhdGZvcm1zIGluaXRpYWxseSBzbyB3ZSBjYW4gZGVhbCB3aXRoIHBvcnQgYnVp
bGQgaXNzdWVzIG9uZSBwb3J0IGF0IGEgdGltZS4KKyAgICAgICAgCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzU1MQorCisgICAgICAgICogY29uZmln
Lmg6CisKIDIwMTEtMDMtMDYgIEplc3NpZSBCZXJsaW4gIDxqYmVybGluQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpJbmRleDogU291cmNlL1dlYktpdDIvY29u
ZmlnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvY29uZmlnLmgJKHJldmlzaW9uIDgw
NDM1KQorKysgU291cmNlL1dlYktpdDIvY29uZmlnLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDE2
ICsyOCw2IEBACiAjaW5jbHVkZSAiYXV0b3Rvb2xzY29uZmlnLmgiCiAjZW5kaWYgLyogZGVmaW5l
ZCAoQlVJTERJTkdfR1RLX18pICovCiAKLSNpZmRlZiBfX2NwbHVzcGx1cwotCi0vLyBUaGVzZSB1
bmRlZnMgbWF0Y2ggdXAgd2l0aCBkZWZpbmVzIGluIFdlYktpdDJQcmVmaXguaCBmb3IgTWFjIE9T
IFguCi0vLyBIZWxwcyB1cyBjYXRjaCBpZiBhbnlvbmUgdXNlcyBuZXcgb3IgZGVsZXRlIGJ5IGFj
Y2lkZW50IGluIGNvZGUgYW5kIGRvZXNuJ3QgaW5jbHVkZSAiY29uZmlnLmgiLgotI3VuZGVmIG5l
dwotI3VuZGVmIGRlbGV0ZQotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0KLSNlbmRpZgot
CiAjaW5jbHVkZSA8d3RmL0Rpc2FsbG93Q1R5cGUuaD4KICNpbmNsdWRlIDx3dGYvUGxhdGZvcm0u
aD4KIApAQCAtNjgsNiArNTgsOCBAQAogCiAjZGVmaW5lIEpTX0VYUE9SVERBVEEKICNkZWZpbmUg
SlNfRVhQT1JUQ0xBU1MKKyNkZWZpbmUgV1RGX0VYUE9SVF9QUklWQVRFCisjZGVmaW5lIEpTX0VY
UE9SVF9QUklWQVRFCiAKICNlbGlmIGRlZmluZWQoX19BUFBMRV9fKQogCkBAIC0xMDIsNiArOTQs
OSBAQAogI2RlZmluZSBKU19FWFBPUlRDTEFTUwogI2RlZmluZSBXRUJLSVRfRVhQT1JUREFUQQog
CisjZGVmaW5lIFdURl9FWFBPUlRfUFJJVkFURQorI2RlZmluZSBKU19FWFBPUlRfUFJJVkFURQor
CiAjaW5jbHVkZSA8V2ViQ29yZS9FbXB0eVByb3RvY29sRGVmaW5pdGlvbnMuaD4KIAogI2VsaWYg
ZGVmaW5lZChXSU4zMikgfHwgZGVmaW5lZChfV0lOMzIpCkBAIC0xMzYsNiArMTMxLDE2IEBACiAK
ICNlbmRpZiAvKiBkZWZpbmVkKFdJTjMyKSB8fCBkZWZpbmVkKF9XSU4zMikgKi8KIAorI2lmZGVm
IF9fY3BsdXNwbHVzCisKKy8vIFRoZXNlIHVuZGVmcyBtYXRjaCB1cCB3aXRoIGRlZmluZXMgaW4g
V2ViS2l0MlByZWZpeC5oIGZvciBNYWMgT1MgWC4KKy8vIEhlbHBzIHVzIGNhdGNoIGlmIGFueW9u
ZSB1c2VzIG5ldyBvciBkZWxldGUgYnkgYWNjaWRlbnQgaW4gY29kZSBhbmQgZG9lc24ndCBpbmNs
dWRlICJjb25maWcuaCIuCisjdW5kZWYgbmV3CisjdW5kZWYgZGVsZXRlCisjaW5jbHVkZSA8d3Rm
L0Zhc3RNYWxsb2MuaD4KKworI2VuZGlmCisKICNpZiBQTEFURk9STShNQUMpIHx8IChPUyhNQUNf
T1NfWCkgJiYgUExBVEZPUk0oUVQpKQogI2RlZmluZSBQTFVHSU5fQVJDSElURUNUVVJFX01BQyAx
CiAjZWxpZiBQTEFURk9STShXSU4pIHx8IChPUyhXSU5ET1dTKSAmJiBQTEFURk9STShRVCkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84975</attachid>
            <date>2011-03-07 13:31:51 -0800</date>
            <delta_ts>2011-03-07 16:52:16 -0800</delta_ts>
            <desc>Retry - Step 1 adding config.h for projects in Tools</desc>
            <filename>jscore_export_step1try7.patch</filename>
            <type>text/plain</type>
            <size>30673</size>
            <attacher name="Kevin Ollivier">kevino</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSVByZWZpeC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSVByZWZpeC5oCShyZXZpc2lv
biA4MDQzNSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSVByZWZpeC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiwxMCBAQAogCiAjZW5kaWYKIAorLyogRklYTUU6IERl
ZmluZSB0aGVzZSBwcm9wZXJseSBvbmNlIFVTRShFWFBPUlRfTUFDUk9TKSBpcyBzZXQgZm9yIHBv
cnRzIHVzaW5nIHRoaXMgKi8KKyNkZWZpbmUgSlNfRVhQT1JUX1BSSVZBVEUKKyNkZWZpbmUgV1RG
X0VYUE9SVF9QUklWQVRFCisKICNpbmNsdWRlIDxzdGRpbnQuaD4KIAogI2luY2x1ZGUgPFdlYktp
dDIvV2ViS2l0Mi5oPgpJbmRleDogVG9vbHMvV2ViS2l0QVBJVGVzdC90ZXN0cy9XZWJWaWV3RGVz
dHJ1Y3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdEFQSVRlc3QvdGVzdHMvV2Vi
Vmlld0Rlc3RydWN0aW9uLmNwcAkocmV2aXNpb24gODA0MzUpCisrKyBUb29scy9XZWJLaXRBUElU
ZXN0L3Rlc3RzL1dlYlZpZXdEZXN0cnVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyLDYg
KzIyLDggQEAKICAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKKyNpbmNsdWRlICJjb25maWcuaCIKKwogI2luY2x1ZGUg
Ikhvc3RXaW5kb3cuaCIKICNpbmNsdWRlICJUZXN0LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DT01Q
dHIuaD4KSW5kZXg6IFRvb2xzL1dlYktpdEFQSVRlc3QvbWFpbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvV2ViS2l0QVBJVGVzdC9tYWluLmNwcAkocmV2aXNpb24gODA0MzUpCisrKyBUb29scy9X
ZWJLaXRBUElUZXN0L21haW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw2ICsyMiw4IEBACiAg
KiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCisjaW5jbHVkZSAiY29uZmlnLmgiCisKICNpbmNsdWRlICJUZXN0c0NvbnRy
b2xsZXIuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdEFQSVRlc3Q7CkluZGV4OiBUb29scy9X
ZWJLaXRBUElUZXN0L0hvc3RXaW5kb3cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdEFQ
SVRlc3QvSG9zdFdpbmRvdy5jcHAJKHJldmlzaW9uIDgwNDM1KQorKysgVG9vbHMvV2ViS2l0QVBJ
VGVzdC9Ib3N0V2luZG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIsNiArMjIsOCBAQAogICog
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAorI2luY2x1ZGUgImNvbmZpZy5oIgorCiAjaW5jbHVkZSAiSG9zdFdpbmRvdy5o
IgogCiBuYW1lc3BhY2UgV2ViS2l0QVBJVGVzdCB7CkluZGV4OiBUb29scy9XZWJLaXRBUElUZXN0
L1Rlc3RzQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0QVBJVGVzdC9U
ZXN0c0NvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA4MDQzNSkKKysrIFRvb2xzL1dlYktpdEFQSVRl
c3QvVGVzdHNDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIsNiArMjIsOCBAQAog
ICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAorI2luY2x1ZGUgImNvbmZpZy5oIgorCiAjaW5jbHVkZSAiVGVzdHNDb250
cm9sbGVyLmgiCiAKICNpbmNsdWRlICJUZXN0LmgiCkluZGV4OiBUb29scy9XZWJLaXRBUElUZXN0
L2NvbmZpZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdEFQSVRlc3QvY29uZmlnLmgJKHJl
dmlzaW9uIDApCisrKyBUb29scy9XZWJLaXRBUElUZXN0L2NvbmZpZy5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisgCisjaWZuZGVmIFdlYktpdEFQSVRlc3RzX2Nv
bmZpZ19oCisjZGVmaW5lIFdlYktpdEFQSVRlc3RzX2NvbmZpZ19oCisKKyNpbmNsdWRlIDx3dGYv
UGxhdGZvcm0uaD4KKworLyogU2VlIG5vdGUgaW4gd3RmL1BsYXRmb3JtLmggZm9yIG1vcmUgaW5m
byBvbiBFWFBPUlRfTUFDUk9TLiAqLworI2lmIFVTRShFWFBPUlRfTUFDUk9TKQorI2luY2x1ZGUg
PHd0Zi9FeHBvcnRNYWNyb3MuaD4KKworI2RlZmluZSBXVEZfRVhQT1JUX1BSSVZBVEUgV1RGX0lN
UE9SVAorI2RlZmluZSBKU19FWFBPUlRfUFJJVkFURSBXVEZfSU1QT1JUCisjZGVmaW5lIFdFQktJ
VF9FWFBPUlREQVRBIFdURl9JTVBPUlQKKworI2RlZmluZSBKU19FWFBPUlREQVRBIEpTX0VYUE9S
VF9QUklWQVRFCisjZGVmaW5lIEpTX0VYUE9SVENMQVNTIEpTX0VYUE9SVF9QUklWQVRFCisKKyNl
bHNlIC8qICFVU0UoRVhQT1JUX01BQ1JPUykgKi8KKworI2lmIE9TKFdJTkRPV1MpICYmICFDT01Q
SUxFUihHQ0MpICYmICFkZWZpbmVkKEJVSUxESU5HX1dYX18pCisjZGVmaW5lIEpTX0VYUE9SVERB
VEEgX19kZWNsc3BlYyhkbGxpbXBvcnQpCisjZGVmaW5lIFdFQktJVF9FWFBPUlREQVRBIF9fZGVj
bHNwZWMoZGxsaW1wb3J0KQorI2Vsc2UKKyNkZWZpbmUgSlNfRVhQT1JUREFUQQorI2RlZmluZSBX
RUJLSVRfRVhQT1JUREFUQQorI2VuZGlmCisKKyNkZWZpbmUgV1RGX0VYUE9SVF9QUklWQVRFIEpT
X0VYUE9SVERBVEEKKyNkZWZpbmUgSlNfRVhQT1JUX1BSSVZBVEUgSlNfRVhQT1JUREFUQQorCisj
ZW5kaWYgLyogVVNFKEVYUE9SVF9NQUNST1MpICovCisKKyNlbmRpZgpJbmRleDogVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9xdC9UZXN0SW52b2NhdGlvblF0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9XZWJLaXRUZXN0UnVubmVyL3F0L1Rlc3RJbnZvY2F0aW9uUXQuY3BwCShyZXZpc2lvbiA4MDQz
NSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvcXQvVGVzdEludm9jYXRpb25RdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIzLDYgKzIzLDggQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCisjaW5jbHVkZSAiY29uZmlnLmgiCisKICNpbmNsdWRlICJUZXN0SW52
b2NhdGlvbi5oIgogCiBuYW1lc3BhY2UgV1RSIHsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvcXQvUGxhdGZvcm1XZWJWaWV3UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvcXQvUGxhdGZvcm1XZWJWaWV3UXQuY3BwCShyZXZpc2lvbiA4MDQzNSkKKysrIFRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvcXQvUGxhdGZvcm1XZWJWaWV3UXQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNCw2ICsyNCw4IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKKyNpbmNsdWRlICJj
b25maWcuaCIKKwogI2luY2x1ZGUgIlBsYXRmb3JtV2ViVmlldy5oIgogI2luY2x1ZGUgInFncmFw
aGljc3drdmlldy5oIgogI2luY2x1ZGUgInF3a2NvbnRleHQuaCIKSW5kZXg6IFRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvcXQvbWFpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9xdC9tYWluLmNwcAkocmV2aXNpb24gODA0MzUpCisrKyBUb29scy9XZWJLaXRUZXN0UnVu
bmVyL3F0L21haW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw4IEBACiAgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAorI2luY2x1ZGUgImNvbmZpZy5oIgor
CiAjaW5jbHVkZSAiVGVzdENvbnRyb2xsZXIuaCIKIAogI2luY2x1ZGUgPFFBcHBsaWNhdGlvbj4K
SW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvcXQvVGVzdENvbnRyb2xsZXJRdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9xdC9UZXN0Q29udHJvbGxlclF0LmNw
cAkocmV2aXNpb24gODA0MzUpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL3F0L1Rlc3RDb250
cm9sbGVyUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw4IEBACiAgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICovCiAKKyNpbmNsdWRlICJjb25maWcuaCIKKwogI2luY2x1ZGUgIlRlc3RDb250cm9s
bGVyLmgiCiAKICNpbmNsdWRlICJXS1N0cmluZ1F0LmgiCkluZGV4OiBUb29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAkocmV2aXNpb24gODA0MzUpCisrKyBUb29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMsNiAr
MjMsOCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKKyNpbmNs
dWRlICJjb25maWcuaCIKKwogI2luY2x1ZGUgIlRlc3RJbnZvY2F0aW9uLmgiCiAKICNpbmNsdWRl
ICJQbGF0Zm9ybVdlYlZpZXcuaCIKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29uZmln
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb25maWcuaAkocmV2aXNp
b24gMCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29uZmlnLmgJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyAKKyNpZm5kZWYgV2ViS2l0VGVzdFJ1bm5lcl9j
b25maWdfaAorI2RlZmluZSBXZWJLaXRUZXN0UnVubmVyX2NvbmZpZ19oCisKKyNpbmNsdWRlIDx3
dGYvUGxhdGZvcm0uaD4KKworLyogU2VlIG5vdGUgaW4gd3RmL1BsYXRmb3JtLmggZm9yIG1vcmUg
aW5mbyBvbiBFWFBPUlRfTUFDUk9TLiAqLworI2lmIFVTRShFWFBPUlRfTUFDUk9TKQorI2luY2x1
ZGUgPHd0Zi9FeHBvcnRNYWNyb3MuaD4KKworI2RlZmluZSBXVEZfRVhQT1JUX1BSSVZBVEUgV1RG
X0lNUE9SVAorI2RlZmluZSBKU19FWFBPUlRfUFJJVkFURSBXVEZfSU1QT1JUCisjZGVmaW5lIFdF
QktJVF9FWFBPUlREQVRBIFdURl9JTVBPUlQKKworI2RlZmluZSBKU19FWFBPUlREQVRBIEpTX0VY
UE9SVF9QUklWQVRFCisjZGVmaW5lIEpTX0VYUE9SVENMQVNTIEpTX0VYUE9SVF9QUklWQVRFCisK
KyNlbHNlIC8qICFVU0UoRVhQT1JUX01BQ1JPUykgKi8KKworI2lmIE9TKFdJTkRPV1MpICYmICFD
T01QSUxFUihHQ0MpICYmICFkZWZpbmVkKEJVSUxESU5HX1dYX18pCisjZGVmaW5lIEpTX0VYUE9S
VERBVEEgX19kZWNsc3BlYyhkbGxpbXBvcnQpCisjZGVmaW5lIFdFQktJVF9FWFBPUlREQVRBIF9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQorI2Vsc2UKKyNkZWZpbmUgSlNfRVhQT1JUREFUQQorI2RlZmlu
ZSBXRUJLSVRfRVhQT1JUREFUQQorI2VuZGlmCisKKyNkZWZpbmUgV1RGX0VYUE9SVF9QUklWQVRF
IEpTX0VYUE9SVERBVEEKKyNkZWZpbmUgSlNfRVhQT1JUX1BSSVZBVEUgSlNfRVhQT1JUREFUQQor
CisjZW5kaWYgLyogVVNFKEVYUE9SVF9NQUNST1MpICovCisKKyNlbmRpZgpJbmRleDogVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci93aW4vVGVzdENvbnRyb2xsZXJXaW4uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvd2luL1Rlc3RDb250cm9sbGVyV2luLmNwcAkocmV2aXNp
b24gODA0MzUpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL3dpbi9UZXN0Q29udHJvbGxlcldp
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzLDYgKzIzLDggQEAKICAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwogCisjaW5jbHVkZSAiY29uZmlnLmgiCisKICNpbmNsdWRl
ICJUZXN0Q29udHJvbGxlci5oIgogCiAjaW5jbHVkZSA8ZmNudGwuaD4KSW5kZXg6IFRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvd2luL21haW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvd2luL21haW4uY3BwCShyZXZpc2lvbiA4MDQzNSkKKysrIFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvd2luL21haW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2ICsyMyw4IEBACiAg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAorI2luY2x1ZGUgImNvbmZp
Zy5oIgorCiAjaW5jbHVkZSAiVGVzdENvbnRyb2xsZXIuaCIKIAogaW50IG1haW4oaW50IGFyZ2Ms
IGNvbnN0IGNoYXIqIGFyZ3ZbXSkKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvd2luL1Rl
c3RJbnZvY2F0aW9uV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVy
L3dpbi9UZXN0SW52b2NhdGlvbldpbi5jcHAJKHJldmlzaW9uIDgwNDM1KQorKysgVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci93aW4vVGVzdEludm9jYXRpb25XaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMyw2ICsyMyw4IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAorI2luY2x1ZGUgImNvbmZpZy5oIgorCiAjaW5jbHVkZSAiVGVzdEludm9jYXRpb24uaCIKIAog
bmFtZXNwYWNlIFdUUiB7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL3dpbi9QbGF0Zm9y
bVdlYlZpZXdXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvd2lu
L1BsYXRmb3JtV2ViVmlld1dpbi5jcHAJKHJldmlzaW9uIDgwNDM1KQorKysgVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci93aW4vUGxhdGZvcm1XZWJWaWV3V2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjMsNiArMjMsOCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
KyNpbmNsdWRlICJjb25maWcuaCIKKwogI2luY2x1ZGUgIlBsYXRmb3JtV2ViVmlldy5oIgogCiBu
YW1lc3BhY2UgV1RSIHsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuY3BwCShyZXZpc2lvbiA4MDQzNSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENv
bnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2ICsyMyw4IEBACiAgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAorI2luY2x1ZGUgImNvbmZpZy5oIgorCiAj
aW5jbHVkZSAiVGVzdENvbnRyb2xsZXIuaCIKIAogI2luY2x1ZGUgIlBsYXRmb3JtV2ViVmlldy5o
IgpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vY29uZmlnLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vY29uZmlnLmgJKHJldmlzaW9uIDgw
NDM1KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vY29uZmlnLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTUzLDQgKzUzLDcgQEAKICNkZWZpbmUgSlNfRVhQT1JUREFUQQogI2VuZGlmCiAK
KyNkZWZpbmUgV1RGX0VYUE9SVF9QUklWQVRFIEpTX0VYUE9SVERBVEEKKyNkZWZpbmUgSlNfRVhQ
T1JUX1BSSVZBVEUgSlNfRVhQT1JUREFUQQorCiAjZW5kaWYgLy8gY29uZmlnX2gKSW5kZXg6IFRv
b2xzL0R1bXBSZW5kZXJUcmVlL2NvbmZpZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL2NvbmZpZy5oCShyZXZpc2lvbiA4MDQzNSkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVl
L2NvbmZpZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMyArMjYsMjAgQEAKIAogI2luY2x1ZGUg
PHd0Zi9QbGF0Zm9ybS5oPgogCi0jaWZkZWYgX19jcGx1c3BsdXMKLSN1bmRlZiBuZXcKLSN1bmRl
ZiBkZWxldGUKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2VuZGlmCisvKiBTZWUgbm90
ZSBpbiB3dGYvUGxhdGZvcm0uaCBmb3IgbW9yZSBpbmZvIG9uIEVYUE9SVF9NQUNST1MuICovCisj
aWYgVVNFKEVYUE9SVF9NQUNST1MpCisjaW5jbHVkZSA8d3RmL0V4cG9ydE1hY3Jvcy5oPgogCi0j
aWYgT1MoV0lORE9XUykgJiYgIUNPTVBJTEVSKEdDQykKKyNkZWZpbmUgV1RGX0VYUE9SVF9QUklW
QVRFIFdURl9JTVBPUlQKKyNkZWZpbmUgSlNfRVhQT1JUX1BSSVZBVEUgV1RGX0lNUE9SVAorI2Rl
ZmluZSBXRUJLSVRfRVhQT1JUREFUQSBXVEZfSU1QT1JUCisKKyNkZWZpbmUgSlNfRVhQT1JUREFU
QSBKU19FWFBPUlRfUFJJVkFURQorI2RlZmluZSBKU19FWFBPUlRDTEFTUyBKU19FWFBPUlRfUFJJ
VkFURQorCisjZWxzZSAvKiAhVVNFKEVYUE9SVF9NQUNST1MpICovCisKKyNpZiBPUyhXSU5ET1dT
KSAmJiAhQ09NUElMRVIoR0NDKSAmJiAhZGVmaW5lZChCVUlMRElOR19XWF9fKQogI2RlZmluZSBK
U19FWFBPUlREQVRBIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQogI2RlZmluZSBXRUJLSVRfRVhQT1JU
REFUQSBfX2RlY2xzcGVjKGRsbGltcG9ydCkKICNlbHNlCkBAIC00MCw2ICs0NywxNyBAQAogI2Rl
ZmluZSBXRUJLSVRfRVhQT1JUREFUQQogI2VuZGlmCiAKKyNkZWZpbmUgV1RGX0VYUE9SVF9QUklW
QVRFIEpTX0VYUE9SVERBVEEKKyNkZWZpbmUgSlNfRVhQT1JUX1BSSVZBVEUgSlNfRVhQT1JUREFU
QQorCisjZW5kaWYgLyogVVNFKEVYUE9SVF9NQUNST1MpICovCisKKyNpZmRlZiBfX2NwbHVzcGx1
cworI3VuZGVmIG5ldworI3VuZGVmIGRlbGV0ZQorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+
CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKE1BQykKICNkZWZpbmUgV1RGX1VTRV9DRiAxCiAKSW5k
ZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2NnL0ltYWdlRGlmZkNHLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9EdW1wUmVuZGVyVHJlZS9jZy9JbWFnZURpZmZDRy5jcHAJKHJldmlzaW9uIDgwNDM1
KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvY2cvSW1hZ2VEaWZmQ0cuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiw2ICsyNiwxMCBAQAogCiAjZGVmaW5lIG1pbiBtaW4KIAorLy8gRklYTUU6IFdl
IG5lZWQgdG8gYmUgYWJsZSB0byBpbmNsdWRlIHRoZXNlIGRlZmluZXMgZnJvbSBhIGNvbmZpZy5o
IHNvbWV3aGVyZS4KKyNkZWZpbmUgSlNfRVhQT1JUX1BSSVZBVEUKKyNkZWZpbmUgV1RGX0VYUE9S
VF9QUklWQVRFCisKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5o
PgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDgwNDkyKQorKysgVG9vbHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTEtMDMtMDcgIEtldmlu
IE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIFdURl9VU0VfRVhQT1JUX01B
Q1JPUywgd2hpY2ggd2lsbCBhbGxvdyB1cyB0byBwdXQgc2hhcmVkIGxpYnJhcnkgaW1wb3J0L2V4
cG9ydAorICAgICAgICBpbmZvIGludG8gdGhlIGhlYWRlcnMgcmF0aGVyIHRoYW4gaW4gZXhwb3J0
IHN5bWJvbCBkZWZpbml0aW9uIGZpbGVzLCBidXQgZGlzYWJsZSBpdCBvbiAKKyAgICAgICAgYWxs
IHBsYXRmb3JtcyBpbml0aWFsbHkgc28gd2UgY2FuIGRlYWwgd2l0aCBwb3J0IGJ1aWxkIGlzc3Vl
cyBvbmUgcG9ydCBhdCBhIHRpbWUuCisgICAgICAgIAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc1NTEKKworICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L2NnL0ltYWdlRGlmZkNHLmNwcDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9j
b25maWcuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jb25maWcuaDoKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUElQcmVmaXguaDoKKyAgICAgICAgKiBXZWJLaXRBUElU
ZXN0L0hvc3RXaW5kb3cuY3BwOgorICAgICAgICAqIFdlYktpdEFQSVRlc3QvVGVzdHNDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKiBXZWJLaXRBUElUZXN0L2NvbmZpZy5oOiBBZGRlZC4KKyAgICAg
ICAgKiBXZWJLaXRBUElUZXN0L21haW4uY3BwOgorICAgICAgICAqIFdlYktpdEFQSVRlc3QvdGVz
dHMvV2ViVmlld0Rlc3RydWN0aW9uLmNwcDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0
aW9uLmNwcDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2NvbmZpZy5oOiBBZGRlZC4KKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL3F0L1BsYXRmb3JtV2ViVmlld1F0LmNwcDoKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL3F0L1Rlc3RDb250cm9sbGVyUXQuY3BwOgorICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvcXQvVGVzdEludm9jYXRpb25RdC5jcHA6CisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9xdC9tYWluLmNwcDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL3dp
bi9QbGF0Zm9ybVdlYlZpZXdXaW4uY3BwOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvd2lu
L1Rlc3RDb250cm9sbGVyV2luLmNwcDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL3dpbi9U
ZXN0SW52b2NhdGlvbldpbi5jcHA6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci93aW4vbWFp
bi5jcHA6CisKIDIwMTEtMDMtMDcgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvY29uZmlnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2NvbmZp
Zy5oCShyZXZpc2lvbiA4MDQzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb25maWcuaAko
d29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksMjMgQEAKIAogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9y
bS5oPgogCisvKiBTZWUgbm90ZSBpbiB3dGYvUGxhdGZvcm0uaCBmb3IgbW9yZSBpbmZvIG9uIEVY
UE9SVF9NQUNST1MuICovCisjaWYgVVNFKEVYUE9SVF9NQUNST1MpCisjaW5jbHVkZSA8d3RmL0V4
cG9ydE1hY3Jvcy5oPgorCisjaWYgZGVmaW5lZChCVUlMRElOR19KYXZhU2NyaXB0Q29yZSkgfHwg
ZGVmaW5lZChCVUlMRElOR19XVEYpCisjZGVmaW5lIFdURl9FWFBPUlRfUFJJVkFURSBXVEZfRVhQ
T1JUCisjZGVmaW5lIEpTX0VYUE9SVF9QUklWQVRFIFdURl9FWFBPUlQKKyNlbHNlCisjZGVmaW5l
IFdURl9FWFBPUlRfUFJJVkFURSBXVEZfSU1QT1JUCisjZGVmaW5lIEpTX0VYUE9SVF9QUklWQVRF
IFdURl9JTVBPUlQKKyNlbmRpZgorCisjZGVmaW5lIEpTX0VYUE9SVERBVEEgSlNfRVhQT1JUX1BS
SVZBVEUKKyNkZWZpbmUgSlNfRVhQT1JUQ0xBU1MgSlNfRVhQT1JUX1BSSVZBVEUKKworI2Vsc2Ug
LyogIVVTRShFWFBPUlRfTUFDUk9TKSAqLworCiAjaWYgIVBMQVRGT1JNKENIUk9NSVVNKSAmJiBP
UyhXSU5ET1dTKSAmJiAhZGVmaW5lZChCVUlMRElOR19XWF9fKSAmJiAhQ09NUElMRVIoR0NDKQog
I2lmIGRlZmluZWQoQlVJTERJTkdfSmF2YVNjcmlwdENvcmUpIHx8IGRlZmluZWQoQlVJTERJTkdf
V1RGKQogI2RlZmluZSBKU19FWFBPUlREQVRBIF9fZGVjbHNwZWMoZGxsZXhwb3J0KQpAQCAtNDEs
NiArNTgsMTEgQEAKICNkZWZpbmUgSlNfRVhQT1JUQ0xBU1MKICNlbmRpZgogCisjZGVmaW5lIFdU
Rl9FWFBPUlRfUFJJVkFURSBKU19FWFBPUlREQVRBCisjZGVmaW5lIEpTX0VYUE9SVF9QUklWQVRF
IEpTX0VYUE9SVERBVEEKKworI2VuZGlmIC8qIFVTRShFWFBPUlRfTUFDUk9TKSAqLworCiAjaWYg
T1MoV0lORE9XUykKIAogLy8gSWYgd2UgZG9uJ3QgZGVmaW5lIHRoZXNlLCB0aGV5IGdldCBkZWZp
bmVkIGluIHdpbmRlZi5oLiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZv
cm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgJ
KHJldmlzaW9uIDgwNDM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTY5LDQgKzExNjksMTAgQEAKICNpbmNsdWRlICJHVHlwZWRl
ZnMuaCIKICNlbmRpZgogCisvKiBGSVhNRTogVGhpcyBkZWZpbmUgd29uJ3QgYmUgbmVlZGVkIG9u
Y2UgIzI3NTUxIGlzIGZ1bGx5IGxhbmRlZC4gSG93ZXZlciwgCisgICBzaW5jZSBtb3N0IHBvcnRz
IHRyeSB0byBzdXBwb3J0IHN1Yi1wcm9qZWN0IGluZGVwZW5kZW5jZSwgYWRkaW5nIG5ldyBoZWFk
ZXJzCisgICB0byBXVEYgY2F1c2VzIG1hbnkgcG9ydHMgdG8gYnJlYWssIGFuZCBzbyB0aGlzIHdh
eSB3ZSBjYW4gYWRkcmVzcyB0aGUgYnVpbGQKKyAgIGJyZWFrYWdlcyBvbmUgcG9ydCBhdCBhIHRp
bWUuICovCisjZGVmaW5lIFdURl9VU0VfRVhQT1JUX01BQ1JPUyAwCisKICNlbmRpZiAvKiBXVEZf
UGxhdGZvcm1faCAqLwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9Bc3NlcnRpb25z
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9Bc3NlcnRpb25zLmgJ
KHJldmlzaW9uIDgwNDM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9Bc3NlcnRpb25z
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0MiwxNCArMTQyLDE0IEBACiAgICAgV1RGTG9nQ2hhbm5l
bFN0YXRlIHN0YXRlOwogfSBXVEZMb2dDaGFubmVsOwogCi12b2lkIFdURlJlcG9ydEFzc2VydGlv
bkZhaWx1cmUoY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9u
LCBjb25zdCBjaGFyKiBhc3NlcnRpb24pOwotdm9pZCBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJl
V2l0aE1lc3NhZ2UoY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIqIGZ1bmN0
aW9uLCBjb25zdCBjaGFyKiBhc3NlcnRpb24sIGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKSBXVEZf
QVRUUklCVVRFX1BSSU5URig1LCA2KTsKLXZvaWQgV1RGUmVwb3J0QXJndW1lbnRBc3NlcnRpb25G
YWlsdXJlKGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiBmdW5jdGlvbiwg
Y29uc3QgY2hhciogYXJnTmFtZSwgY29uc3QgY2hhciogYXNzZXJ0aW9uKTsKLXZvaWQgV1RGUmVw
b3J0QmFja3RyYWNlKCk7Ci12b2lkIFdURlJlcG9ydEZhdGFsRXJyb3IoY29uc3QgY2hhciogZmls
ZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uLCBjb25zdCBjaGFyKiBmb3JtYXQsIC4u
LikgV1RGX0FUVFJJQlVURV9QUklOVEYoNCwgNSk7Ci12b2lkIFdURlJlcG9ydEVycm9yKGNvbnN0
IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiBmdW5jdGlvbiwgY29uc3QgY2hhciog
Zm9ybWF0LCAuLi4pIFdURl9BVFRSSUJVVEVfUFJJTlRGKDQsIDUpOwotdm9pZCBXVEZMb2coV1RG
TG9nQ2hhbm5lbCogY2hhbm5lbCwgY29uc3QgY2hhciogZm9ybWF0LCAuLi4pIFdURl9BVFRSSUJV
VEVfUFJJTlRGKDIsIDMpOwotdm9pZCBXVEZMb2dWZXJib3NlKGNvbnN0IGNoYXIqIGZpbGUsIGlu
dCBsaW5lLCBjb25zdCBjaGFyKiBmdW5jdGlvbiwgV1RGTG9nQ2hhbm5lbCogY2hhbm5lbCwgY29u
c3QgY2hhciogZm9ybWF0LCAuLi4pIFdURl9BVFRSSUJVVEVfUFJJTlRGKDUsIDYpOworV1RGX0VY
UE9SVF9QUklWQVRFIHZvaWQgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZShjb25zdCBjaGFyKiBm
aWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciogZnVuY3Rpb24sIGNvbnN0IGNoYXIqIGFzc2VydGlv
bik7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlV2l0
aE1lc3NhZ2UoY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9u
LCBjb25zdCBjaGFyKiBhc3NlcnRpb24sIGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKSBXVEZfQVRU
UklCVVRFX1BSSU5URig1LCA2KTsKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIFdURlJlcG9ydEFy
Z3VtZW50QXNzZXJ0aW9uRmFpbHVyZShjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3Qg
Y2hhciogZnVuY3Rpb24sIGNvbnN0IGNoYXIqIGFyZ05hbWUsIGNvbnN0IGNoYXIqIGFzc2VydGlv
bik7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBXVEZSZXBvcnRCYWNrdHJhY2UoKTsKK1dURl9F
WFBPUlRfUFJJVkFURSB2b2lkIFdURlJlcG9ydEZhdGFsRXJyb3IoY29uc3QgY2hhciogZmlsZSwg
aW50IGxpbmUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uLCBjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikg
V1RGX0FUVFJJQlVURV9QUklOVEYoNCwgNSk7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBXVEZS
ZXBvcnRFcnJvcihjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciogZnVuY3Rp
b24sIGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKSBXVEZfQVRUUklCVVRFX1BSSU5URig0LCA1KTsK
K1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIFdURkxvZyhXVEZMb2dDaGFubmVsKiBjaGFubmVsLCBj
b25zdCBjaGFyKiBmb3JtYXQsIC4uLikgV1RGX0FUVFJJQlVURV9QUklOVEYoMiwgMyk7CitXVEZf
RVhQT1JUX1BSSVZBVEUgdm9pZCBXVEZMb2dWZXJib3NlKGNvbnN0IGNoYXIqIGZpbGUsIGludCBs
aW5lLCBjb25zdCBjaGFyKiBmdW5jdGlvbiwgV1RGTG9nQ2hhbm5lbCogY2hhbm5lbCwgY29uc3Qg
Y2hhciogZm9ybWF0LCAuLi4pIFdURl9BVFRSSUJVVEVfUFJJTlRGKDUsIDYpOwogCiAjaWZkZWYg
X19jcGx1c3BsdXMKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuaAkocmV2aXNp
b24gODA0MzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC04MCw2ICs4MCwxMSBAQAogI2RlZmluZSBKU19FWFBPUlQKICNlbmRpZiAvKiBk
ZWZpbmVkKEpTX05PX0VYUE9SVCkgKi8KIAorLyogSlMgdGVzdHMgdXNlcyBXVEYgYnV0IGhhcyBu
byBjb25maWcuaCwgc28gd2UgbmVlZCB0byBzZXQgdGhlIGV4cG9ydCBkZWZpbmVzIGhlcmUuICov
CisjaWZuZGVmIFdURl9FWFBPUlRfUFJJVkFURQorI2RlZmluZSBXVEZfRVhQT1JUX1BSSVZBVEUg
SlNfRVhQT1JUCisjZW5kaWYKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiBleHRlcm4gIkMiIHsKICNl
bmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA4MDQzNSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
OCBAQAorMjAxMS0wMy0wNiAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRy
b2R1Y2UgV1RGX1VTRV9FWFBPUlRfTUFDUk9TLCB3aGljaCB3aWxsIGFsbG93IHVzIHRvIHB1dCBz
aGFyZWQgbGlicmFyeSBpbXBvcnQvZXhwb3J0CisgICAgICAgIGluZm8gaW50byB0aGUgaGVhZGVy
cyByYXRoZXIgdGhhbiBpbiBleHBvcnQgc3ltYm9sIGRlZmluaXRpb24gZmlsZXMsIGJ1dCBkaXNh
YmxlIGl0IG9uIAorICAgICAgICBhbGwgcGxhdGZvcm1zIGluaXRpYWxseSBzbyB3ZSBjYW4gZGVh
bCB3aXRoIHBvcnQgYnVpbGQgaXNzdWVzIG9uZSBwb3J0IGF0IGEgdGltZS4KKyAgICAgICAgCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzU1MQorCisg
ICAgICAgICogQVBJL0pTQmFzZS5oOgorICAgICAgICAqIGNvbmZpZy5oOgorICAgICAgICAqIHd0
Zi9Bc3NlcnRpb25zLmg6CisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6CisKIDIwMTEtMDMtMDUg
IEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBE
aW1pdHJpIEdsYXprb3YuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0R2x1ZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgw
NDM1KQorKysgU291cmNlL0phdmFTY3JpcHRHbHVlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE1IEBACisyMDExLTAzLTA2ICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVv
bGxpdmllcnMuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEludHJvZHVjZSBXVEZfVVNFX0VYUE9SVF9NQUNST1MsIHdoaWNoIHdpbGwgYWxsb3cg
dXMgdG8gcHV0IHNoYXJlZCBsaWJyYXJ5IGltcG9ydC9leHBvcnQKKyAgICAgICAgaW5mbyBpbnRv
IHRoZSBoZWFkZXJzIHJhdGhlciB0aGFuIGluIGV4cG9ydCBzeW1ib2wgZGVmaW5pdGlvbiBmaWxl
cywgYnV0IGRpc2FibGUgaXQgb24gCisgICAgICAgIGFsbCBwbGF0Zm9ybXMgaW5pdGlhbGx5IHNv
IHdlIGNhbiBkZWFsIHdpdGggcG9ydCBidWlsZCBpc3N1ZXMgb25lIHBvcnQgYXQgYSB0aW1lLgor
ICAgICAgICAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTI3NTUxCisKKyAgICAgICAgKiBjb25maWcuaDoKKwogMjAxMS0wMy0wNCAgQWRhbSBCYXJ0aCAg
PGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtv
di4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0R2x1ZS9jb25maWcuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdEdsdWUvY29uZmlnLmgJKHJldmlzaW9uIDgwNDM1KQorKysgU291cmNl
L0phdmFTY3JpcHRHbHVlL2NvbmZpZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOSwzICsxOSw2IEBA
CiAKICNkZWZpbmUgSlNfRVhQT1JUREFUQQogI2RlZmluZSBKU19FWFBPUlRDTEFTUworI2RlZmlu
ZSBKU19FWFBPUlRfUFJJVkFURQorI2RlZmluZSBXVEZfRVhQT1JUX1BSSVZBVEUKKwpJbmRleDog
U291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9HZW9sb2NhdGlvbkNsaWVudFF0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0dlb2xvY2F0aW9u
Q2xpZW50UXQuY3BwCShyZXZpc2lvbiA4MDQzNSkKKysrIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvR2VvbG9jYXRpb25DbGllbnRRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MCwz
ICsxNDAsNSBAQAogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNpbmNsdWRlICJtb2Nf
R2VvbG9jYXRpb25DbGllbnRRdC5jcHAiCkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L1BvcHVwTWVudVF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L1BvcHVwTWVudVF0LmNwcAkocmV2aXNpb24gODA0MzUpCisrKyBTb3VyY2Uv
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1BvcHVwTWVudVF0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTU3LDQgKzE1Nyw2IEBACiAKIH0KIAorI2luY2x1ZGUgIm1vY19Qb3B1cE1lbnVRdC5jcHAi
CisKIC8vIHZpbTogdHM9NCBzdz00IGV0CkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwkocmV2aXNpb24gODA0
NzEpCisrKyBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE2IEBACisyMDExLTAzLTA2ICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVvbGxpdmll
cnMuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEludHJvZHVjZSBXVEZfVVNFX0VYUE9SVF9NQUNST1MsIHdoaWNoIHdpbGwgYWxsb3cgdXMgdG8g
cHV0IHNoYXJlZCBsaWJyYXJ5IGltcG9ydC9leHBvcnQKKyAgICAgICAgaW5mbyBpbnRvIHRoZSBo
ZWFkZXJzIHJhdGhlciB0aGFuIGluIGV4cG9ydCBzeW1ib2wgZGVmaW5pdGlvbiBmaWxlcywgYnV0
IGRpc2FibGUgaXQgb24gCisgICAgICAgIGFsbCBwbGF0Zm9ybXMgaW5pdGlhbGx5IHNvIHdlIGNh
biBkZWFsIHdpdGggcG9ydCBidWlsZCBpc3N1ZXMgb25lIHBvcnQgYXQgYSB0aW1lLgorICAgICAg
ICAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NTUx
CisgICAgICAgIAorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0dlb2xvY2F0aW9uQ2xpZW50UXQu
Y3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1BvcHVwTWVudVF0LmNwcDoKKwogMjAxMS0w
My0wNSAgUWkgWmhhbmcgIDxxaS4yLnpoYW5nQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBMYXN6bG8gR29tYm9zLgpJbmRleDogU291cmNlL1dlYktpdC9jZi9XZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9j
Zi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAJKHJldmlzaW9uIDgwNDM1
KQorKysgU291cmNlL1dlYktpdC9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRD
Ri5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDExIEBACiAjZGVmaW5lIFdURl9VU0Vf
SlNDIDEKICNlbmRpZgogCisvLyBMZWF2ZSB0aGVzZSBzZXQgdG8gbm90aGluZyB1bnRpbCB3ZSBz
d2l0Y2ggTWFjIGFuZCBXaW4gcG9ydHMgb3ZlciB0byAKKy8vIHVzaW5nIHRoZSBleHBvcnQgbWFj
cm9zLgorI2RlZmluZSBKU19FWFBPUlRfUFJJVkFURQorI2RlZmluZSBXVEZfRVhQT1JUX1BSSVZB
VEUKKwogI2lmIGRlZmluZWQoV0lOMzIpIHx8IGRlZmluZWQoX1dJTjMyKQogI2lmbmRlZiBXVEZf
VVNFX0NGTkVUV09SSwogI2RlZmluZSBXVEZfVVNFX0NGTkVUV09SSyAxCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2NmL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2NmL0NoYW5n
ZUxvZwkocmV2aXNpb24gODA0NDQpCisrKyBTb3VyY2UvV2ViS2l0L2NmL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDExLTAzLTA2ICBLZXZpbiBPbGxpdmllciAg
PGtldmlub0B0aGVvbGxpdmllcnMuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEludHJvZHVjZSBXVEZfVVNFX0VYUE9SVF9NQUNST1MsIHdoaWNo
IHdpbGwgYWxsb3cgdXMgdG8gcHV0IHNoYXJlZCBsaWJyYXJ5IGltcG9ydC9leHBvcnQKKyAgICAg
ICAgaW5mbyBpbnRvIHRoZSBoZWFkZXJzIHJhdGhlciB0aGFuIGluIGV4cG9ydCBzeW1ib2wgZGVm
aW5pdGlvbiBmaWxlcywgYnV0IGRpc2FibGUgaXQgb24gCisgICAgICAgIGFsbCBwbGF0Zm9ybXMg
aW5pdGlhbGx5IHNvIHdlIGNhbiBkZWFsIHdpdGggcG9ydCBidWlsZCBpc3N1ZXMgb25lIHBvcnQg
YXQgYSB0aW1lLgorICAgICAgICAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTI3NTUxCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnRDRi5jcHA6CisKIDIwMTEtMDItMjMgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dh
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBT
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA4MDQzNSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDExLTAzLTA2ICBLZXZpbiBP
bGxpdmllciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEludHJvZHVjZSBXVEZfVVNFX0VYUE9SVF9NQUNS
T1MsIHdoaWNoIHdpbGwgYWxsb3cgdXMgdG8gcHV0IHNoYXJlZCBsaWJyYXJ5IGltcG9ydC9leHBv
cnQKKyAgICAgICAgaW5mbyBpbnRvIHRoZSBoZWFkZXJzIHJhdGhlciB0aGFuIGluIGV4cG9ydCBz
eW1ib2wgZGVmaW5pdGlvbiBmaWxlcywgYnV0IGRpc2FibGUgaXQgb24gCisgICAgICAgIGFsbCBw
bGF0Zm9ybXMgaW5pdGlhbGx5IHNvIHdlIGNhbiBkZWFsIHdpdGggcG9ydCBidWlsZCBpc3N1ZXMg
b25lIHBvcnQgYXQgYSB0aW1lLgorICAgICAgICAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NTUxCisKKyAgICAgICAgKiBXZWJLaXRQcmVmaXguaDoK
KwogMjAxMS0wMy0wNiAgSmVzc2llIEJlcmxpbiAgPGpiZXJsaW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJL
aXRQcmVmaXguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJLaXRQcmVmaXgu
aAkocmV2aXNpb24gODA0MzUpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJLaXRQcmVmaXguaAko
d29ya2luZyBjb3B5KQpAQCAtNzksMTIgKzc5LDYgQEAKICNkZWZpbmUgV1RGX1VTRV9KU0MgMQog
I2RlZmluZSBXVEZfVVNFX1Y4IDAKIAotI2lmZGVmIF9fY3BsdXNwbHVzCi0jaW5jbHVkZSA8d3Rm
L0Zhc3RNYWxsb2MuaD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8d3RmL0Rpc2FsbG93Q1R5cGUuaD4K
LQogLyogV29yayBhcm91bmQgYnVnIHdpdGggQysrIGxpYnJhcnkgdGhhdCBzY3Jld3MgdXAgT2Jq
ZWN0aXZlLUMrKyB3aGVuIGV4Y2VwdGlvbiBzdXBwb3J0IGlzIGRpc2FibGVkLiAqLwogI3VuZGVm
IHRyeQogI3VuZGVmIGNhdGNoCkBAIC05MiwzICs4NiwxMSBAQAogI2RlZmluZSBKU19FWFBPUlRE
QVRBCiAjZGVmaW5lIEpTX0VYUE9SVENMQVNTCiAjZGVmaW5lIFdFQktJVF9FWFBPUlREQVRBCisj
ZGVmaW5lIFdURl9FWFBPUlRfUFJJVkFURQorI2RlZmluZSBKU19FWFBPUlRfUFJJVkFURQorCisj
aWZkZWYgX19jcGx1c3BsdXMKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorI2VuZGlmCisK
KyNpbmNsdWRlIDx3dGYvRGlzYWxsb3dDVHlwZS5oPgpJbmRleDogU291cmNlL1dlYkNvcmUvY29u
ZmlnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY29uZmlnLmgJKHJldmlzaW9uIDgw
NDM1KQorKysgU291cmNlL1dlYkNvcmUvY29uZmlnLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYg
KzI5LDI5IEBACiAKICNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KIAorLyogU2VlIG5vdGUgaW4g
d3RmL1BsYXRmb3JtLmggZm9yIG1vcmUgaW5mbyBvbiBFWFBPUlRfTUFDUk9TLiAqLworI2lmIFVT
RShFWFBPUlRfTUFDUk9TKQorI2luY2x1ZGUgPHd0Zi9FeHBvcnRNYWNyb3MuaD4KKworI2lmIGRl
ZmluZWQoQlVJTERJTkdfSmF2YVNjcmlwdENvcmUpIHx8IGRlZmluZWQoQlVJTERJTkdfV1RGKQor
I2RlZmluZSBXVEZfRVhQT1JUX1BSSVZBVEUgV1RGX0VYUE9SVAorI2RlZmluZSBKU19FWFBPUlRf
UFJJVkFURSBXVEZfRVhQT1JUCisjZWxzZQorI2RlZmluZSBXVEZfRVhQT1JUX1BSSVZBVEUgV1RG
X0lNUE9SVAorI2RlZmluZSBKU19FWFBPUlRfUFJJVkFURSBXVEZfSU1QT1JUCisjZW5kaWYKKwor
I2RlZmluZSBKU19FWFBPUlREQVRBIEpTX0VYUE9SVF9QUklWQVRFCisjZGVmaW5lIEpTX0VYUE9S
VENMQVNTIEpTX0VYUE9SVF9QUklWQVRFCisKKyNpZiBkZWZpbmVkKEJVSUxESU5HX1dlYkNvcmUp
IHx8IGRlZmluZWQoQlVJTERJTkdfV2ViS2l0KQorI2RlZmluZSBXRUJLSVRfRVhQT1JUREFUQSBX
VEZfRVhQT1JUCisjZWxzZQorI2RlZmluZSBXRUJLSVRfRVhQT1JUREFUQSBXVEZfSU1QT1JUCisj
ZW5kaWYKKworI2Vsc2UgLyogIVVTRShFWFBPUlRfTUFDUk9TKSAqLworCiAjaWYgIVBMQVRGT1JN
KENIUk9NSVVNKSAmJiBPUyhXSU5ET1dTKSAmJiAhZGVmaW5lZChCVUlMRElOR19XWF9fKSAmJiAh
Q09NUElMRVIoR0NDKQogI2lmIGRlZmluZWQoQlVJTERJTkdfSmF2YVNjcmlwdENvcmUpIHx8IGRl
ZmluZWQoQlVJTERJTkdfV1RGKQogI2RlZmluZSBKU19FWFBPUlREQVRBIF9fZGVjbHNwZWMoZGxs
ZXhwb3J0KQpAQCAtNDAsMTMgKzYzLDE5IEBACiAjZWxzZQogI2RlZmluZSBXRUJLSVRfRVhQT1JU
REFUQSBfX2RlY2xzcGVjKGRsbGltcG9ydCkKICNlbmRpZgorI2RlZmluZSBXVEZfRVhQT1JUX1BS
SVZBVEUgSlNfRVhQT1JUREFUQQorI2RlZmluZSBKU19FWFBPUlRfUFJJVkFURSBKU19FWFBPUlRE
QVRBCiAjZGVmaW5lIEpTX0VYUE9SVENMQVNTIEpTX0VYUE9SVERBVEEKICNlbHNlCiAjZGVmaW5l
IEpTX0VYUE9SVERBVEEKICNkZWZpbmUgSlNfRVhQT1JUQ0xBU1MKICNkZWZpbmUgV0VCS0lUX0VY
UE9SVERBVEEKKyNkZWZpbmUgV1RGX0VYUE9SVF9QUklWQVRFCisjZGVmaW5lIEpTX0VYUE9SVF9Q
UklWQVRFCiAjZW5kaWYKIAorI2VuZGlmIC8qIFVTRShFWFBPUlRfTUFDUk9TKSAqLworCiAjaWZk
ZWYgX19BUFBMRV9fCiAjZGVmaW5lIEhBVkVfRlVOQ19VU0xFRVAgMQogI2VuZGlmIC8qIF9fQVBQ
TEVfXyAqLwpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODA0MzUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMS0wMy0wNiAg
S2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2UgV1RGX1VTRV9FWFBP
UlRfTUFDUk9TLCB3aGljaCB3aWxsIGFsbG93IHVzIHRvIHB1dCBzaGFyZWQgbGlicmFyeSBpbXBv
cnQvZXhwb3J0CisgICAgICAgIGluZm8gaW50byB0aGUgaGVhZGVycyByYXRoZXIgdGhhbiBpbiBl
eHBvcnQgc3ltYm9sIGRlZmluaXRpb24gZmlsZXMsIGJ1dCBkaXNhYmxlIGl0IG9uIAorICAgICAg
ICBhbGwgcGxhdGZvcm1zIGluaXRpYWxseSBzbyB3ZSBjYW4gZGVhbCB3aXRoIHBvcnQgYnVpbGQg
aXNzdWVzIG9uZSBwb3J0IGF0IGEgdGltZS4KKyAgICAgICAgCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzU1MQorCisgICAgICAgICogY29uZmlnLmg6
CisgICAgICAgICogcGxhdGZvcm0vbWFjL0xvZ2dpbmdNYWMubW06CisKIDIwMTEtMDMtMDYgIEpl
c3NpZSBCZXJsaW4gIDxqYmVybGluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBT
YW0gV2VpbmlnLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0xvZ2dpbmdNYWMu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0xvZ2dpbmdNYWMu
bW0JKHJldmlzaW9uIDgwNDM1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0xvZ2dp
bmdNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTIzLDYgKzIzLDggQEAKICAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAogICovCiAKKyNpbmNsdWRlICJjb25maWcuaCIKKwogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gODA0MzUpCisrKyBT
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAor
MjAxMS0wMy0wNiAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2Ug
V1RGX1VTRV9FWFBPUlRfTUFDUk9TLCB3aGljaCB3aWxsIGFsbG93IHVzIHRvIHB1dCBzaGFyZWQg
bGlicmFyeSBpbXBvcnQvZXhwb3J0CisgICAgICAgIGluZm8gaW50byB0aGUgaGVhZGVycyByYXRo
ZXIgdGhhbiBpbiBleHBvcnQgc3ltYm9sIGRlZmluaXRpb24gZmlsZXMsIGJ1dCBkaXNhYmxlIGl0
IG9uIAorICAgICAgICBhbGwgcGxhdGZvcm1zIGluaXRpYWxseSBzbyB3ZSBjYW4gZGVhbCB3aXRo
IHBvcnQgYnVpbGQgaXNzdWVzIG9uZSBwb3J0IGF0IGEgdGltZS4KKyAgICAgICAgCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzU1MQorCisgICAgICAg
ICogY29uZmlnLmg6CisKIDIwMTEtMDMtMDYgIEplc3NpZSBCZXJsaW4gIDxqYmVybGluQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpJbmRleDogU291cmNlL1dl
YktpdDIvY29uZmlnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvY29uZmlnLmgJKHJl
dmlzaW9uIDgwNDM1KQorKysgU291cmNlL1dlYktpdDIvY29uZmlnLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI4LDE2ICsyOCw2IEBACiAjaW5jbHVkZSAiYXV0b3Rvb2xzY29uZmlnLmgiCiAjZW5kaWYg
LyogZGVmaW5lZCAoQlVJTERJTkdfR1RLX18pICovCiAKLSNpZmRlZiBfX2NwbHVzcGx1cwotCi0v
LyBUaGVzZSB1bmRlZnMgbWF0Y2ggdXAgd2l0aCBkZWZpbmVzIGluIFdlYktpdDJQcmVmaXguaCBm
b3IgTWFjIE9TIFguCi0vLyBIZWxwcyB1cyBjYXRjaCBpZiBhbnlvbmUgdXNlcyBuZXcgb3IgZGVs
ZXRlIGJ5IGFjY2lkZW50IGluIGNvZGUgYW5kIGRvZXNuJ3QgaW5jbHVkZSAiY29uZmlnLmgiLgot
I3VuZGVmIG5ldwotI3VuZGVmIGRlbGV0ZQotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0K
LSNlbmRpZgotCiAjaW5jbHVkZSA8d3RmL0Rpc2FsbG93Q1R5cGUuaD4KICNpbmNsdWRlIDx3dGYv
UGxhdGZvcm0uaD4KIApAQCAtNjgsNiArNTgsOCBAQAogCiAjZGVmaW5lIEpTX0VYUE9SVERBVEEK
ICNkZWZpbmUgSlNfRVhQT1JUQ0xBU1MKKyNkZWZpbmUgV1RGX0VYUE9SVF9QUklWQVRFCisjZGVm
aW5lIEpTX0VYUE9SVF9QUklWQVRFCiAKICNlbGlmIGRlZmluZWQoX19BUFBMRV9fKQogCkBAIC0x
MDIsNiArOTQsOSBAQAogI2RlZmluZSBKU19FWFBPUlRDTEFTUwogI2RlZmluZSBXRUJLSVRfRVhQ
T1JUREFUQQogCisjZGVmaW5lIFdURl9FWFBPUlRfUFJJVkFURQorI2RlZmluZSBKU19FWFBPUlRf
UFJJVkFURQorCiAjaW5jbHVkZSA8V2ViQ29yZS9FbXB0eVByb3RvY29sRGVmaW5pdGlvbnMuaD4K
IAogI2VsaWYgZGVmaW5lZChXSU4zMikgfHwgZGVmaW5lZChfV0lOMzIpCkBAIC0xMzYsNiArMTMx
LDE2IEBACiAKICNlbmRpZiAvKiBkZWZpbmVkKFdJTjMyKSB8fCBkZWZpbmVkKF9XSU4zMikgKi8K
IAorI2lmZGVmIF9fY3BsdXNwbHVzCisKKy8vIFRoZXNlIHVuZGVmcyBtYXRjaCB1cCB3aXRoIGRl
ZmluZXMgaW4gV2ViS2l0MlByZWZpeC5oIGZvciBNYWMgT1MgWC4KKy8vIEhlbHBzIHVzIGNhdGNo
IGlmIGFueW9uZSB1c2VzIG5ldyBvciBkZWxldGUgYnkgYWNjaWRlbnQgaW4gY29kZSBhbmQgZG9l
c24ndCBpbmNsdWRlICJjb25maWcuaCIuCisjdW5kZWYgbmV3CisjdW5kZWYgZGVsZXRlCisjaW5j
bHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKworI2VuZGlmCisKICNpZiBQTEFURk9STShNQUMpIHx8
IChPUyhNQUNfT1NfWCkgJiYgUExBVEZPUk0oUVQpKQogI2RlZmluZSBQTFVHSU5fQVJDSElURUNU
VVJFX01BQyAxCiAjZWxpZiBQTEFURk9STShXSU4pIHx8IChPUyhXSU5ET1dTKSAmJiBQTEFURk9S
TShRVCkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84999</attachid>
            <date>2011-03-07 16:52:16 -0800</date>
            <delta_ts>2011-05-25 11:54:43 -0700</delta_ts>
            <desc>Retry - Step 1 w/ more config.h additions for projects in Tools</desc>
            <filename>jscore_export_step1try8.patch</filename>
            <type>text/plain</type>
            <size>37401</size>
            <attacher name="Kevin Ollivier">kevino</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSVByZWZpeC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSVByZWZpeC5oCShyZXZpc2lv
biA4MDQzNSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSVByZWZpeC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiwxMCBAQAogCiAjZW5kaWYKIAorLyogRklYTUU6IERl
ZmluZSB0aGVzZSBwcm9wZXJseSBvbmNlIFVTRShFWFBPUlRfTUFDUk9TKSBpcyBzZXQgZm9yIHBv
cnRzIHVzaW5nIHRoaXMgKi8KKyNkZWZpbmUgSlNfRVhQT1JUX1BSSVZBVEUKKyNkZWZpbmUgV1RG
X0VYUE9SVF9QUklWQVRFCisKICNpbmNsdWRlIDxzdGRpbnQuaD4KIAogI2luY2x1ZGUgPFdlYktp
dDIvV2ViS2l0Mi5oPgpJbmRleDogVG9vbHMvV2ViS2l0QVBJVGVzdC90ZXN0cy9XZWJWaWV3RGVz
dHJ1Y3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdEFQSVRlc3QvdGVzdHMvV2Vi
Vmlld0Rlc3RydWN0aW9uLmNwcAkocmV2aXNpb24gODA0MzUpCisrKyBUb29scy9XZWJLaXRBUElU
ZXN0L3Rlc3RzL1dlYlZpZXdEZXN0cnVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyLDYg
KzIyLDggQEAKICAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKKyNpbmNsdWRlICJjb25maWcuaCIKKwogI2luY2x1ZGUg
Ikhvc3RXaW5kb3cuaCIKICNpbmNsdWRlICJUZXN0LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DT01Q
dHIuaD4KSW5kZXg6IFRvb2xzL1dlYktpdEFQSVRlc3QvbWFpbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvV2ViS2l0QVBJVGVzdC9tYWluLmNwcAkocmV2aXNpb24gODA0MzUpCisrKyBUb29scy9X
ZWJLaXRBUElUZXN0L21haW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw2ICsyMiw4IEBACiAg
KiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCisjaW5jbHVkZSAiY29uZmlnLmgiCisKICNpbmNsdWRlICJUZXN0c0NvbnRy
b2xsZXIuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdEFQSVRlc3Q7CkluZGV4OiBUb29scy9X
ZWJLaXRBUElUZXN0L0hvc3RXaW5kb3cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdEFQ
SVRlc3QvSG9zdFdpbmRvdy5jcHAJKHJldmlzaW9uIDgwNDM1KQorKysgVG9vbHMvV2ViS2l0QVBJ
VGVzdC9Ib3N0V2luZG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIsNiArMjIsOCBAQAogICog
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAorI2luY2x1ZGUgImNvbmZpZy5oIgorCiAjaW5jbHVkZSAiSG9zdFdpbmRvdy5o
IgogCiBuYW1lc3BhY2UgV2ViS2l0QVBJVGVzdCB7CkluZGV4OiBUb29scy9XZWJLaXRBUElUZXN0
L1Rlc3RzQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0QVBJVGVzdC9U
ZXN0c0NvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA4MDQzNSkKKysrIFRvb2xzL1dlYktpdEFQSVRl
c3QvVGVzdHNDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIsNiArMjIsOCBAQAog
ICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAorI2luY2x1ZGUgImNvbmZpZy5oIgorCiAjaW5jbHVkZSAiVGVzdHNDb250
cm9sbGVyLmgiCiAKICNpbmNsdWRlICJUZXN0LmgiCkluZGV4OiBUb29scy9XZWJLaXRBUElUZXN0
L2NvbmZpZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdEFQSVRlc3QvY29uZmlnLmgJKHJl
dmlzaW9uIDApCisrKyBUb29scy9XZWJLaXRBUElUZXN0L2NvbmZpZy5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisgCisjaWZuZGVmIFdlYktpdEFQSVRlc3RzX2Nv
bmZpZ19oCisjZGVmaW5lIFdlYktpdEFQSVRlc3RzX2NvbmZpZ19oCisKKyNpbmNsdWRlIDx3dGYv
UGxhdGZvcm0uaD4KKworLyogU2VlIG5vdGUgaW4gd3RmL1BsYXRmb3JtLmggZm9yIG1vcmUgaW5m
byBvbiBFWFBPUlRfTUFDUk9TLiAqLworI2lmIFVTRShFWFBPUlRfTUFDUk9TKQorI2luY2x1ZGUg
PHd0Zi9FeHBvcnRNYWNyb3MuaD4KKworI2RlZmluZSBXVEZfRVhQT1JUX1BSSVZBVEUgV1RGX0lN
UE9SVAorI2RlZmluZSBKU19FWFBPUlRfUFJJVkFURSBXVEZfSU1QT1JUCisjZGVmaW5lIFdFQktJ
VF9FWFBPUlREQVRBIFdURl9JTVBPUlQKKworI2RlZmluZSBKU19FWFBPUlREQVRBIEpTX0VYUE9S
VF9QUklWQVRFCisjZGVmaW5lIEpTX0VYUE9SVENMQVNTIEpTX0VYUE9SVF9QUklWQVRFCisKKyNl
bHNlIC8qICFVU0UoRVhQT1JUX01BQ1JPUykgKi8KKworI2lmIE9TKFdJTkRPV1MpICYmICFDT01Q
SUxFUihHQ0MpICYmICFkZWZpbmVkKEJVSUxESU5HX1dYX18pCisjZGVmaW5lIEpTX0VYUE9SVERB
VEEgX19kZWNsc3BlYyhkbGxpbXBvcnQpCisjZGVmaW5lIFdFQktJVF9FWFBPUlREQVRBIF9fZGVj
bHNwZWMoZGxsaW1wb3J0KQorI2Vsc2UKKyNkZWZpbmUgSlNfRVhQT1JUREFUQQorI2RlZmluZSBX
RUJLSVRfRVhQT1JUREFUQQorI2VuZGlmCisKKyNkZWZpbmUgV1RGX0VYUE9SVF9QUklWQVRFIEpT
X0VYUE9SVERBVEEKKyNkZWZpbmUgSlNfRVhQT1JUX1BSSVZBVEUgSlNfRVhQT1JUREFUQQorCisj
ZW5kaWYgLyogVVNFKEVYUE9SVF9NQUNST1MpICovCisKKyNlbmRpZgpJbmRleDogVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9xdC9BY3RpdmF0ZUZvbnRzUXQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvcXQvQWN0aXZh
dGVGb250c1F0LmNwcAkocmV2aXNpb24gODA0MzUpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL3F0L0FjdGl2YXRlRm9udHNRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDYgKzI3LDggQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAorI2luY2x1ZGUgImNvbmZpZy5oIgor
CiAjaW5jbHVkZSAiQWN0aXZhdGVGb250cy5oIgogCiAjaW5jbHVkZSA8UUFwcGxpY2F0aW9uPgpJ
bmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9xdC9JbmplY3RlZEJ1
bmRsZVF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL3F0L0luamVjdGVkQnVuZGxlUXQuY3BwCShyZXZpc2lvbiA4MDQzNSkKKysrIFRvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvcXQvSW5qZWN0ZWRCdW5kbGVRdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIzLDYgKzIzLDggQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCisjaW5jbHVkZSAiY29uZmlnLmgiCisKICNpbmNsdWRlICJJbmpl
Y3RlZEJ1bmRsZS5oIgogCiBuYW1lc3BhY2UgV1RSIHsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9xdC9MYXlvdXRU
ZXN0Q29udHJvbGxlclF0LmNwcAkocmV2aXNpb24gODA0MzUpCisrKyBUb29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw4IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAorI2luY2x1ZGUgImNvbmZpZy5oIgorCiAjaW5jbHVkZSAiTGF5b3V0VGVz
dENvbnRyb2xsZXIuaCIKIAogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlLmgiCkluZGV4OiBUb29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2UuY3BwCShyZXZpc2lvbiA4MDQzNSkKKysrIFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjMsNiArMjMsOCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKKyNpbmNsdWRlICJjb25maWcuaCIKKwogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlUGFn
ZS5oIgogCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGUuaCIKSW5kZXg6IFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL3dpbi9M
YXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAJKHJldmlzaW9uIDgwNDM1KQorKysgVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2ICsyMyw4IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAgKi8KIAorI2luY2x1ZGUgImNvbmZpZy5oIgorCiAjaW5jbHVkZSAi
TGF5b3V0VGVzdENvbnRyb2xsZXIuaCIKIAogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlLmgiCklu
ZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL3dpbi9BY3RpdmF0ZUZv
bnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL3dpbi9BY3RpdmF0ZUZvbnRzLmNwcAkocmV2aXNpb24gODA0MzUpCisrKyBUb29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL3dpbi9BY3RpdmF0ZUZvbnRzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjMsNiArMjMsOCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICovCiAKKyNpbmNsdWRlICJjb25maWcuaCIKKwogI2luY2x1ZGUgIkFjdGl2YXRlRm9u
dHMuaCIKIAogI2luY2x1ZGUgPHN0cmluZz4KSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvd2luL0luamVjdGVkQnVuZGxlV2luLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL3dpbi9JbmplY3RlZEJ1bmRsZVdp
bi5jcHAJKHJldmlzaW9uIDgwNDM1KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS93aW4vSW5qZWN0ZWRCdW5kbGVXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2
ICsyMyw4IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAorI2lu
Y2x1ZGUgImNvbmZpZy5oIgorCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGUuaCIKIAogbmFtZXNw
YWNlIFdUUiB7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0Jp
bmRpbmdzL0pTV3JhcHBlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9KU1dyYXBwZXIuY3BwCShyZXZpc2lvbiA4MDQzNSkK
KysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvSlNXcmFw
cGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMsNiArMjMsOCBAQAogICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKKyNpbmNsdWRlICJjb25maWcuaCIKKwogI2luY2x1
ZGUgIkpTV3JhcHBlci5oIgogCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDb250ZXh0UmVm
UHJpdmF0ZS5oPgpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAJKHJldmlzaW9uIDgwNDM1KQorKysgVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIzLDYgKzIzLDggQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCisjaW5jbHVkZSAiY29uZmlnLmgiCisKICNpbmNsdWRlICJJbmplY3Rl
ZEJ1bmRsZS5oIgogCiAjaW5jbHVkZSAiQWN0aXZhdGVGb250cy5oIgpJbmRleDogVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDgwNDM1KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIzLDYgKzIzLDggQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAqLwogCisjaW5jbHVkZSAiY29uZmlnLmgiCisKICNpbmNsdWRlICJMYXlvdXRUZXN0Q29udHJv
bGxlci5oIgogCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGUuaCIKSW5kZXg6IFRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVNYWluLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlTWFpbi5jcHAJKHJldmlzaW9uIDgwNDM1KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU1haW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
Myw2ICsyMyw4IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAor
I2luY2x1ZGUgImNvbmZpZy5oIgorCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGUuaCIKICNpbmNs
dWRlIDxXZWJLaXQyL1dLQnVuZGxlSW5pdGlhbGl6ZS5oPgogCkluZGV4OiBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5k
aW5nQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDgwNDM1KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjMsNiArMjMsOCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKKyNpbmNsdWRlICJjb25maWcuaCIKKwogI2luY2x1ZGUgIkV2ZW50U2VuZGluZ0Nv
bnRyb2xsZXIuaCIKIAogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlLmgiCkluZGV4OiBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0dDQ29udHJvbGxlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9HQ0NvbnRyb2xsZXIu
Y3BwCShyZXZpc2lvbiA4MDQzNSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvR0NDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMsNiArMjMsOCBAQAog
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKKyNpbmNsdWRlICJjb25m
aWcuaCIKKwogI2luY2x1ZGUgIkdDQ29udHJvbGxlci5oIgogCiAjaW5jbHVkZSAiSW5qZWN0ZWRC
dW5kbGUuaCIKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvcXQvVGVzdEludm9jYXRpb25R
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9xdC9UZXN0SW52b2Nh
dGlvblF0LmNwcAkocmV2aXNpb24gODA0MzUpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL3F0
L1Rlc3RJbnZvY2F0aW9uUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2ICsyMyw4IEBACiAg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAorI2luY2x1ZGUgImNvbmZp
Zy5oIgorCiAjaW5jbHVkZSAiVGVzdEludm9jYXRpb24uaCIKIAogbmFtZXNwYWNlIFdUUiB7Cklu
ZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL3F0L1BsYXRmb3JtV2ViVmlld1F0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL3F0L1BsYXRmb3JtV2ViVmlld1F0LmNw
cAkocmV2aXNpb24gODA0MzUpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL3F0L1BsYXRmb3Jt
V2ViVmlld1F0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsOCBAQAogICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCisjaW5jbHVkZSAiY29uZmlnLmgiCisKICNpbmNsdWRlICJQbGF0Zm9ybVdl
YlZpZXcuaCIKICNpbmNsdWRlICJxZ3JhcGhpY3N3a3ZpZXcuaCIKICNpbmNsdWRlICJxd2tjb250
ZXh0LmgiCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL3F0L21haW4uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvcXQvbWFpbi5jcHAJKHJldmlzaW9uIDgwNDM1
KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9xdC9tYWluLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjQsNiArMjQsOCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKKyNpbmNsdWRlICJjb25maWcuaCIKKwogI2luY2x1ZGUgIlRlc3RDb250cm9sbGVyLmgiCiAK
ICNpbmNsdWRlIDxRQXBwbGljYXRpb24+CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL3F0
L1Rlc3RDb250cm9sbGVyUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvcXQvVGVzdENvbnRyb2xsZXJRdC5jcHAJKHJldmlzaW9uIDgwNDM1KQorKysgVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9xdC9UZXN0Q29udHJvbGxlclF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjQsNiArMjQsOCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCisjaW5jbHVkZSAiY29uZmlnLmgi
CisKICNpbmNsdWRlICJUZXN0Q29udHJvbGxlci5oIgogCiAjaW5jbHVkZSAiV0tTdHJpbmdRdC5o
IgpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAJKHJldmlz
aW9uIDgwNDM1KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIzLDYgKzIzLDggQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCisjaW5jbHVkZSAiY29uZmlnLmgiCisKICNpbmNsdWRlICJUZXN0
SW52b2NhdGlvbi5oIgogCiAjaW5jbHVkZSAiUGxhdGZvcm1XZWJWaWV3LmgiCkluZGV4OiBUb29s
cy9XZWJLaXRUZXN0UnVubmVyL2NvbmZpZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvY29uZmlnLmgJKHJldmlzaW9uIDApCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVy
L2NvbmZpZy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisgCisj
aWZuZGVmIFdlYktpdFRlc3RSdW5uZXJfY29uZmlnX2gKKyNkZWZpbmUgV2ViS2l0VGVzdFJ1bm5l
cl9jb25maWdfaAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKy8qIFNlZSBub3RlIGlu
IHd0Zi9QbGF0Zm9ybS5oIGZvciBtb3JlIGluZm8gb24gRVhQT1JUX01BQ1JPUy4gKi8KKyNpZiBV
U0UoRVhQT1JUX01BQ1JPUykKKyNpbmNsdWRlIDx3dGYvRXhwb3J0TWFjcm9zLmg+CisKKyNkZWZp
bmUgV1RGX0VYUE9SVF9QUklWQVRFIFdURl9JTVBPUlQKKyNkZWZpbmUgSlNfRVhQT1JUX1BSSVZB
VEUgV1RGX0lNUE9SVAorI2RlZmluZSBXRUJLSVRfRVhQT1JUREFUQSBXVEZfSU1QT1JUCisKKyNk
ZWZpbmUgSlNfRVhQT1JUREFUQSBKU19FWFBPUlRfUFJJVkFURQorI2RlZmluZSBKU19FWFBPUlRD
TEFTUyBKU19FWFBPUlRfUFJJVkFURQorCisjZWxzZSAvKiAhVVNFKEVYUE9SVF9NQUNST1MpICov
CisKKyNpZiBPUyhXSU5ET1dTKSAmJiAhQ09NUElMRVIoR0NDKSAmJiAhZGVmaW5lZChCVUlMRElO
R19XWF9fKQorI2RlZmluZSBKU19FWFBPUlREQVRBIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQorI2Rl
ZmluZSBXRUJLSVRfRVhQT1JUREFUQSBfX2RlY2xzcGVjKGRsbGltcG9ydCkKKyNlbHNlCisjZGVm
aW5lIEpTX0VYUE9SVERBVEEKKyNkZWZpbmUgV0VCS0lUX0VYUE9SVERBVEEKKyNlbmRpZgorCisj
ZGVmaW5lIFdURl9FWFBPUlRfUFJJVkFURSBKU19FWFBPUlREQVRBCisjZGVmaW5lIEpTX0VYUE9S
VF9QUklWQVRFIEpTX0VYUE9SVERBVEEKKworI2VuZGlmIC8qIFVTRShFWFBPUlRfTUFDUk9TKSAq
LworCisjZW5kaWYKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvd2luL1Rlc3RDb250cm9s
bGVyV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL3dpbi9UZXN0
Q29udHJvbGxlcldpbi5jcHAJKHJldmlzaW9uIDgwNDM1KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci93aW4vVGVzdENvbnRyb2xsZXJXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2ICsy
Myw4IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAorI2luY2x1
ZGUgImNvbmZpZy5oIgorCiAjaW5jbHVkZSAiVGVzdENvbnRyb2xsZXIuaCIKIAogI2luY2x1ZGUg
PGZjbnRsLmg+CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL3dpbi9tYWluLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL3dpbi9tYWluLmNwcAkocmV2aXNpb24g
ODA0MzUpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL3dpbi9tYWluLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjMsNiArMjMsOCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKKyNpbmNsdWRlICJjb25maWcuaCIKKwogI2luY2x1ZGUgIlRlc3RDb250cm9sbGVy
LmgiCiAKIGludCBtYWluKGludCBhcmdjLCBjb25zdCBjaGFyKiBhcmd2W10pCkluZGV4OiBUb29s
cy9XZWJLaXRUZXN0UnVubmVyL3dpbi9UZXN0SW52b2NhdGlvbldpbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93aW4vVGVzdEludm9jYXRpb25XaW4uY3BwCShyZXZp
c2lvbiA4MDQzNSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvd2luL1Rlc3RJbnZvY2F0aW9u
V2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMsNiArMjMsOCBAQAogICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKKyNpbmNsdWRlICJjb25maWcuaCIKKwogI2luY2x1
ZGUgIlRlc3RJbnZvY2F0aW9uLmgiCiAKIG5hbWVzcGFjZSBXVFIgewpJbmRleDogVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci93aW4vUGxhdGZvcm1XZWJWaWV3V2luLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9XZWJLaXRUZXN0UnVubmVyL3dpbi9QbGF0Zm9ybVdlYlZpZXdXaW4uY3BwCShyZXZpc2lv
biA4MDQzNSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvd2luL1BsYXRmb3JtV2ViVmlld1dp
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzLDYgKzIzLDggQEAKICAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwogCisjaW5jbHVkZSAiY29uZmlnLmgiCisKICNpbmNsdWRl
ICJQbGF0Zm9ybVdlYlZpZXcuaCIKIAogbmFtZXNwYWNlIFdUUiB7CkluZGV4OiBUb29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAkocmV2aXNpb24gODA0MzUpCisrKyBUb29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjMsNiArMjMsOCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
KyNpbmNsdWRlICJjb25maWcuaCIKKwogI2luY2x1ZGUgIlRlc3RDb250cm9sbGVyLmgiCiAKICNp
bmNsdWRlICJQbGF0Zm9ybVdlYlZpZXcuaCIKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL2NvbmZpZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL2NvbmZpZy5oCShyZXZpc2lvbiA4MDQzNSkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL2NvbmZpZy5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw0ICs1Myw3IEBACiAjZGVmaW5l
IEpTX0VYUE9SVERBVEEKICNlbmRpZgogCisjZGVmaW5lIFdURl9FWFBPUlRfUFJJVkFURSBKU19F
WFBPUlREQVRBCisjZGVmaW5lIEpTX0VYUE9SVF9QUklWQVRFIEpTX0VYUE9SVERBVEEKKwogI2Vu
ZGlmIC8vIGNvbmZpZ19oCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9jb25maWcuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9jb25maWcuaAkocmV2aXNpb24gODA0MzUp
CisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9jb25maWcuaAkod29ya2luZyBjb3B5KQpAQCAtMjYs
MTMgKzI2LDIwIEBACiAKICNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KIAotI2lmZGVmIF9fY3Bs
dXNwbHVzCi0jdW5kZWYgbmV3Ci0jdW5kZWYgZGVsZXRlCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxs
b2MuaD4KLSNlbmRpZgorLyogU2VlIG5vdGUgaW4gd3RmL1BsYXRmb3JtLmggZm9yIG1vcmUgaW5m
byBvbiBFWFBPUlRfTUFDUk9TLiAqLworI2lmIFVTRShFWFBPUlRfTUFDUk9TKQorI2luY2x1ZGUg
PHd0Zi9FeHBvcnRNYWNyb3MuaD4KIAotI2lmIE9TKFdJTkRPV1MpICYmICFDT01QSUxFUihHQ0Mp
CisjZGVmaW5lIFdURl9FWFBPUlRfUFJJVkFURSBXVEZfSU1QT1JUCisjZGVmaW5lIEpTX0VYUE9S
VF9QUklWQVRFIFdURl9JTVBPUlQKKyNkZWZpbmUgV0VCS0lUX0VYUE9SVERBVEEgV1RGX0lNUE9S
VAorCisjZGVmaW5lIEpTX0VYUE9SVERBVEEgSlNfRVhQT1JUX1BSSVZBVEUKKyNkZWZpbmUgSlNf
RVhQT1JUQ0xBU1MgSlNfRVhQT1JUX1BSSVZBVEUKKworI2Vsc2UgLyogIVVTRShFWFBPUlRfTUFD
Uk9TKSAqLworCisjaWYgT1MoV0lORE9XUykgJiYgIUNPTVBJTEVSKEdDQykgJiYgIWRlZmluZWQo
QlVJTERJTkdfV1hfXykKICNkZWZpbmUgSlNfRVhQT1JUREFUQSBfX2RlY2xzcGVjKGRsbGltcG9y
dCkKICNkZWZpbmUgV0VCS0lUX0VYUE9SVERBVEEgX19kZWNsc3BlYyhkbGxpbXBvcnQpCiAjZWxz
ZQpAQCAtNDAsNiArNDcsMTcgQEAKICNkZWZpbmUgV0VCS0lUX0VYUE9SVERBVEEKICNlbmRpZgog
CisjZGVmaW5lIFdURl9FWFBPUlRfUFJJVkFURSBKU19FWFBPUlREQVRBCisjZGVmaW5lIEpTX0VY
UE9SVF9QUklWQVRFIEpTX0VYUE9SVERBVEEKKworI2VuZGlmIC8qIFVTRShFWFBPUlRfTUFDUk9T
KSAqLworCisjaWZkZWYgX19jcGx1c3BsdXMKKyN1bmRlZiBuZXcKKyN1bmRlZiBkZWxldGUKKyNp
bmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorI2VuZGlmCisKICNpZiBQTEFURk9STShNQUMpCiAj
ZGVmaW5lIFdURl9VU0VfQ0YgMQogCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9jZy9JbWFn
ZURpZmZDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2cvSW1hZ2VE
aWZmQ0cuY3BwCShyZXZpc2lvbiA4MDQzNSkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2NnL0lt
YWdlRGlmZkNHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsMTAgQEAKIAogI2RlZmlu
ZSBtaW4gbWluCiAKKy8vIEZJWE1FOiBXZSBuZWVkIHRvIGJlIGFibGUgdG8gaW5jbHVkZSB0aGVz
ZSBkZWZpbmVzIGZyb20gYSBjb25maWcuaCBzb21ld2hlcmUuCisjZGVmaW5lIEpTX0VYUE9SVF9Q
UklWQVRFCisjZGVmaW5lIFdURl9FWFBPUlRfUFJJVkFURQorCiAjaW5jbHVkZSA8c3RkaW8uaD4K
ICNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Cklu
ZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiA4MDUwOSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDQ3IEBACisyMDExLTAzLTA3ICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVvbGxpdmllcnMu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElu
dHJvZHVjZSBXVEZfVVNFX0VYUE9SVF9NQUNST1MsIHdoaWNoIHdpbGwgYWxsb3cgdXMgdG8gcHV0
IHNoYXJlZCBsaWJyYXJ5IGltcG9ydC9leHBvcnQKKyAgICAgICAgaW5mbyBpbnRvIHRoZSBoZWFk
ZXJzIHJhdGhlciB0aGFuIGluIGV4cG9ydCBzeW1ib2wgZGVmaW5pdGlvbiBmaWxlcywgYnV0IGRp
c2FibGUgaXQgb24gCisgICAgICAgIGFsbCBwbGF0Zm9ybXMgaW5pdGlhbGx5IHNvIHdlIGNhbiBk
ZWFsIHdpdGggcG9ydCBidWlsZCBpc3N1ZXMgb25lIHBvcnQgYXQgYSB0aW1lLgorICAgICAgICAK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NTUxCisK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jZy9JbWFnZURpZmZDRy5jcHA6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vY29uZmlnLmg6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvY29uZmlnLmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJUHJlZml4
Lmg6CisgICAgICAgICogV2ViS2l0QVBJVGVzdC9Ib3N0V2luZG93LmNwcDoKKyAgICAgICAgKiBX
ZWJLaXRBUElUZXN0L1Rlc3RzQ29udHJvbGxlci5jcHA6CisgICAgICAgICogV2ViS2l0QVBJVGVz
dC9jb25maWcuaDogQWRkZWQuCisgICAgICAgICogV2ViS2l0QVBJVGVzdC9tYWluLmNwcDoKKyAg
ICAgICAgKiBXZWJLaXRBUElUZXN0L3Rlc3RzL1dlYlZpZXdEZXN0cnVjdGlvbi5jcHA6CisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9KU1dyYXBwZXIu
Y3BwOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5k
aW5nQ29udHJvbGxlci5jcHA6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9HQ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVNYWluLmNwcDoKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHA6CisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5j
cHA6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9xdC9BY3RpdmF0
ZUZvbnRzUXQuY3BwOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
cXQvSW5qZWN0ZWRCdW5kbGVRdC5jcHA6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcDoKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL3dpbi9BY3RpdmF0ZUZvbnRzLmNwcDoKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL3dpbi9JbmplY3RlZEJ1bmRsZVdp
bi5jcHA6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS93aW4vTGF5
b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRp
b24uY3BwOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvY29uZmlnLmg6IEFkZGVkLgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvcXQvUGxhdGZvcm1XZWJWaWV3UXQuY3BwOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvcXQvVGVzdENvbnRyb2xsZXJRdC5jcHA6CisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9xdC9UZXN0SW52b2NhdGlvblF0LmNwcDoKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL3F0L21haW4uY3BwOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvd2lu
L1BsYXRmb3JtV2ViVmlld1dpbi5jcHA6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci93aW4v
VGVzdENvbnRyb2xsZXJXaW4uY3BwOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvd2luL1Rl
c3RJbnZvY2F0aW9uV2luLmNwcDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL3dpbi9tYWlu
LmNwcDoKKwogMjAxMS0wMy0wNyAgVG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IE1paGFpIFBhcnBhcml0YS4KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9jb25maWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvY29u
ZmlnLmgJKHJldmlzaW9uIDgwNDM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2NvbmZpZy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSwyMyBAQAogCiAjaW5jbHVkZSA8d3RmL1BsYXRm
b3JtLmg+CiAKKy8qIFNlZSBub3RlIGluIHd0Zi9QbGF0Zm9ybS5oIGZvciBtb3JlIGluZm8gb24g
RVhQT1JUX01BQ1JPUy4gKi8KKyNpZiBVU0UoRVhQT1JUX01BQ1JPUykKKyNpbmNsdWRlIDx3dGYv
RXhwb3J0TWFjcm9zLmg+CisKKyNpZiBkZWZpbmVkKEJVSUxESU5HX0phdmFTY3JpcHRDb3JlKSB8
fCBkZWZpbmVkKEJVSUxESU5HX1dURikKKyNkZWZpbmUgV1RGX0VYUE9SVF9QUklWQVRFIFdURl9F
WFBPUlQKKyNkZWZpbmUgSlNfRVhQT1JUX1BSSVZBVEUgV1RGX0VYUE9SVAorI2Vsc2UKKyNkZWZp
bmUgV1RGX0VYUE9SVF9QUklWQVRFIFdURl9JTVBPUlQKKyNkZWZpbmUgSlNfRVhQT1JUX1BSSVZB
VEUgV1RGX0lNUE9SVAorI2VuZGlmCisKKyNkZWZpbmUgSlNfRVhQT1JUREFUQSBKU19FWFBPUlRf
UFJJVkFURQorI2RlZmluZSBKU19FWFBPUlRDTEFTUyBKU19FWFBPUlRfUFJJVkFURQorCisjZWxz
ZSAvKiAhVVNFKEVYUE9SVF9NQUNST1MpICovCisKICNpZiAhUExBVEZPUk0oQ0hST01JVU0pICYm
IE9TKFdJTkRPV1MpICYmICFkZWZpbmVkKEJVSUxESU5HX1dYX18pICYmICFDT01QSUxFUihHQ0Mp
CiAjaWYgZGVmaW5lZChCVUlMRElOR19KYXZhU2NyaXB0Q29yZSkgfHwgZGVmaW5lZChCVUlMRElO
R19XVEYpCiAjZGVmaW5lIEpTX0VYUE9SVERBVEEgX19kZWNsc3BlYyhkbGxleHBvcnQpCkBAIC00
MSw2ICs1OCwxMSBAQAogI2RlZmluZSBKU19FWFBPUlRDTEFTUwogI2VuZGlmCiAKKyNkZWZpbmUg
V1RGX0VYUE9SVF9QUklWQVRFIEpTX0VYUE9SVERBVEEKKyNkZWZpbmUgSlNfRVhQT1JUX1BSSVZB
VEUgSlNfRVhQT1JUREFUQQorCisjZW5kaWYgLyogVVNFKEVYUE9SVF9NQUNST1MpICovCisKICNp
ZiBPUyhXSU5ET1dTKQogCiAvLyBJZiB3ZSBkb24ndCBkZWZpbmUgdGhlc2UsIHRoZXkgZ2V0IGRl
ZmluZWQgaW4gd2luZGVmLmguIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0
Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0u
aAkocmV2aXNpb24gODA0MzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3Jt
LmgJKHdvcmtpbmcgY29weSkKQEAgLTExNjksNCArMTE2OSwxMCBAQAogI2luY2x1ZGUgIkdUeXBl
ZGVmcy5oIgogI2VuZGlmCiAKKy8qIEZJWE1FOiBUaGlzIGRlZmluZSB3b24ndCBiZSBuZWVkZWQg
b25jZSAjMjc1NTEgaXMgZnVsbHkgbGFuZGVkLiBIb3dldmVyLCAKKyAgIHNpbmNlIG1vc3QgcG9y
dHMgdHJ5IHRvIHN1cHBvcnQgc3ViLXByb2plY3QgaW5kZXBlbmRlbmNlLCBhZGRpbmcgbmV3IGhl
YWRlcnMKKyAgIHRvIFdURiBjYXVzZXMgbWFueSBwb3J0cyB0byBicmVhaywgYW5kIHNvIHRoaXMg
d2F5IHdlIGNhbiBhZGRyZXNzIHRoZSBidWlsZAorICAgYnJlYWthZ2VzIG9uZSBwb3J0IGF0IGEg
dGltZS4gKi8KKyNkZWZpbmUgV1RGX1VTRV9FWFBPUlRfTUFDUk9TIDAKKwogI2VuZGlmIC8qIFdU
Rl9QbGF0Zm9ybV9oICovCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0Fzc2VydGlv
bnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0Fzc2VydGlvbnMu
aAkocmV2aXNpb24gODA0MzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0Fzc2VydGlv
bnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTQyLDE0ICsxNDIsMTQgQEAKICAgICBXVEZMb2dDaGFu
bmVsU3RhdGUgc3RhdGU7CiB9IFdURkxvZ0NoYW5uZWw7CiAKLXZvaWQgV1RGUmVwb3J0QXNzZXJ0
aW9uRmFpbHVyZShjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciogZnVuY3Rp
b24sIGNvbnN0IGNoYXIqIGFzc2VydGlvbik7Ci12b2lkIFdURlJlcG9ydEFzc2VydGlvbkZhaWx1
cmVXaXRoTWVzc2FnZShjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciogZnVu
Y3Rpb24sIGNvbnN0IGNoYXIqIGFzc2VydGlvbiwgY29uc3QgY2hhciogZm9ybWF0LCAuLi4pIFdU
Rl9BVFRSSUJVVEVfUFJJTlRGKDUsIDYpOwotdm9pZCBXVEZSZXBvcnRBcmd1bWVudEFzc2VydGlv
bkZhaWx1cmUoY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9u
LCBjb25zdCBjaGFyKiBhcmdOYW1lLCBjb25zdCBjaGFyKiBhc3NlcnRpb24pOwotdm9pZCBXVEZS
ZXBvcnRCYWNrdHJhY2UoKTsKLXZvaWQgV1RGUmVwb3J0RmF0YWxFcnJvcihjb25zdCBjaGFyKiBm
aWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciogZnVuY3Rpb24sIGNvbnN0IGNoYXIqIGZvcm1hdCwg
Li4uKSBXVEZfQVRUUklCVVRFX1BSSU5URig0LCA1KTsKLXZvaWQgV1RGUmVwb3J0RXJyb3IoY29u
c3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uLCBjb25zdCBjaGFy
KiBmb3JtYXQsIC4uLikgV1RGX0FUVFJJQlVURV9QUklOVEYoNCwgNSk7Ci12b2lkIFdURkxvZyhX
VEZMb2dDaGFubmVsKiBjaGFubmVsLCBjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikgV1RGX0FUVFJJ
QlVURV9QUklOVEYoMiwgMyk7Ci12b2lkIFdURkxvZ1ZlcmJvc2UoY29uc3QgY2hhciogZmlsZSwg
aW50IGxpbmUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uLCBXVEZMb2dDaGFubmVsKiBjaGFubmVsLCBj
b25zdCBjaGFyKiBmb3JtYXQsIC4uLikgV1RGX0FUVFJJQlVURV9QUklOVEYoNSwgNik7CitXVEZf
RVhQT1JUX1BSSVZBVEUgdm9pZCBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKGNvbnN0IGNoYXIq
IGZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiBmdW5jdGlvbiwgY29uc3QgY2hhciogYXNzZXJ0
aW9uKTsKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmVX
aXRoTWVzc2FnZShjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciogZnVuY3Rp
b24sIGNvbnN0IGNoYXIqIGFzc2VydGlvbiwgY29uc3QgY2hhciogZm9ybWF0LCAuLi4pIFdURl9B
VFRSSUJVVEVfUFJJTlRGKDUsIDYpOworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgV1RGUmVwb3J0
QXJndW1lbnRBc3NlcnRpb25GYWlsdXJlKGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25z
dCBjaGFyKiBmdW5jdGlvbiwgY29uc3QgY2hhciogYXJnTmFtZSwgY29uc3QgY2hhciogYXNzZXJ0
aW9uKTsKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIFdURlJlcG9ydEJhY2t0cmFjZSgpOworV1RG
X0VYUE9SVF9QUklWQVRFIHZvaWQgV1RGUmVwb3J0RmF0YWxFcnJvcihjb25zdCBjaGFyKiBmaWxl
LCBpbnQgbGluZSwgY29uc3QgY2hhciogZnVuY3Rpb24sIGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4u
KSBXVEZfQVRUUklCVVRFX1BSSU5URig0LCA1KTsKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIFdU
RlJlcG9ydEVycm9yKGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiBmdW5j
dGlvbiwgY29uc3QgY2hhciogZm9ybWF0LCAuLi4pIFdURl9BVFRSSUJVVEVfUFJJTlRGKDQsIDUp
OworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgV1RGTG9nKFdURkxvZ0NoYW5uZWwqIGNoYW5uZWws
IGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKSBXVEZfQVRUUklCVVRFX1BSSU5URigyLCAzKTsKK1dU
Rl9FWFBPUlRfUFJJVkFURSB2b2lkIFdURkxvZ1ZlcmJvc2UoY29uc3QgY2hhciogZmlsZSwgaW50
IGxpbmUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uLCBXVEZMb2dDaGFubmVsKiBjaGFubmVsLCBjb25z
dCBjaGFyKiBmb3JtYXQsIC4uLikgV1RGX0FUVFJJQlVURV9QUklOVEYoNSwgNik7CiAKICNpZmRl
ZiBfX2NwbHVzcGx1cwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5oCShyZXZp
c2lvbiA4MDQzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTgwLDYgKzgwLDExIEBACiAjZGVmaW5lIEpTX0VYUE9SVAogI2VuZGlmIC8q
IGRlZmluZWQoSlNfTk9fRVhQT1JUKSAqLwogCisvKiBKUyB0ZXN0cyB1c2VzIFdURiBidXQgaGFz
IG5vIGNvbmZpZy5oLCBzbyB3ZSBuZWVkIHRvIHNldCB0aGUgZXhwb3J0IGRlZmluZXMgaGVyZS4g
Ki8KKyNpZm5kZWYgV1RGX0VYUE9SVF9QUklWQVRFCisjZGVmaW5lIFdURl9FWFBPUlRfUFJJVkFU
RSBKU19FWFBPUlQKKyNlbmRpZgorCiAjaWZkZWYgX19jcGx1c3BsdXMKIGV4dGVybiAiQyIgewog
I2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgwNDM1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDE4IEBACisyMDExLTAzLTA2ICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVvbGxpdmllcnMu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElu
dHJvZHVjZSBXVEZfVVNFX0VYUE9SVF9NQUNST1MsIHdoaWNoIHdpbGwgYWxsb3cgdXMgdG8gcHV0
IHNoYXJlZCBsaWJyYXJ5IGltcG9ydC9leHBvcnQKKyAgICAgICAgaW5mbyBpbnRvIHRoZSBoZWFk
ZXJzIHJhdGhlciB0aGFuIGluIGV4cG9ydCBzeW1ib2wgZGVmaW5pdGlvbiBmaWxlcywgYnV0IGRp
c2FibGUgaXQgb24gCisgICAgICAgIGFsbCBwbGF0Zm9ybXMgaW5pdGlhbGx5IHNvIHdlIGNhbiBk
ZWFsIHdpdGggcG9ydCBidWlsZCBpc3N1ZXMgb25lIHBvcnQgYXQgYSB0aW1lLgorICAgICAgICAK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NTUxCisK
KyAgICAgICAgKiBBUEkvSlNCYXNlLmg6CisgICAgICAgICogY29uZmlnLmg6CisgICAgICAgICog
d3RmL0Fzc2VydGlvbnMuaDoKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKwogMjAxMS0wMy0w
NSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IERpbWl0cmkgR2xhemtvdi4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0R2x1ZS9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRHbHVlL0NoYW5nZUxvZwkocmV2aXNpb24g
ODA0MzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDMtMDYgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRo
ZW9sbGl2aWVycy5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgSW50cm9kdWNlIFdURl9VU0VfRVhQT1JUX01BQ1JPUywgd2hpY2ggd2lsbCBhbGxv
dyB1cyB0byBwdXQgc2hhcmVkIGxpYnJhcnkgaW1wb3J0L2V4cG9ydAorICAgICAgICBpbmZvIGlu
dG8gdGhlIGhlYWRlcnMgcmF0aGVyIHRoYW4gaW4gZXhwb3J0IHN5bWJvbCBkZWZpbml0aW9uIGZp
bGVzLCBidXQgZGlzYWJsZSBpdCBvbiAKKyAgICAgICAgYWxsIHBsYXRmb3JtcyBpbml0aWFsbHkg
c28gd2UgY2FuIGRlYWwgd2l0aCBwb3J0IGJ1aWxkIGlzc3VlcyBvbmUgcG9ydCBhdCBhIHRpbWUu
CisgICAgICAgIAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9Mjc1NTEKKworICAgICAgICAqIGNvbmZpZy5oOgorCiAyMDExLTAzLTA0ICBBZGFtIEJhcnRo
ICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6
a292LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRHbHVlL2NvbmZpZy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0R2x1ZS9jb25maWcuaAkocmV2aXNpb24gODA0MzUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdEdsdWUvY29uZmlnLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5LDMgKzE5LDYg
QEAKIAogI2RlZmluZSBKU19FWFBPUlREQVRBCiAjZGVmaW5lIEpTX0VYUE9SVENMQVNTCisjZGVm
aW5lIEpTX0VYUE9SVF9QUklWQVRFCisjZGVmaW5lIFdURl9FWFBPUlRfUFJJVkFURQorCkluZGV4
OiBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0dlb2xvY2F0aW9uQ2xpZW50UXQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvR2VvbG9jYXRp
b25DbGllbnRRdC5jcHAJKHJldmlzaW9uIDgwNDM1KQorKysgU291cmNlL1dlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9HZW9sb2NhdGlvbkNsaWVudFF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQw
LDMgKzE0MCw1IEBACiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2luY2x1ZGUgIm1v
Y19HZW9sb2NhdGlvbkNsaWVudFF0LmNwcCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvUG9wdXBNZW51UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvUG9wdXBNZW51UXQuY3BwCShyZXZpc2lvbiA4MDQzNSkKKysrIFNvdXJj
ZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUG9wdXBNZW51UXQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNTcsNCArMTU3LDYgQEAKIAogfQogCisjaW5jbHVkZSAibW9jX1BvcHVwTWVudVF0LmNw
cCIKKwogLy8gdmltOiB0cz00IHN3PTQgZXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiA4
MDQ3MSkKKysrIFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTYgQEAKKzIwMTEtMDMtMDYgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2
aWVycy5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgSW50cm9kdWNlIFdURl9VU0VfRVhQT1JUX01BQ1JPUywgd2hpY2ggd2lsbCBhbGxvdyB1cyB0
byBwdXQgc2hhcmVkIGxpYnJhcnkgaW1wb3J0L2V4cG9ydAorICAgICAgICBpbmZvIGludG8gdGhl
IGhlYWRlcnMgcmF0aGVyIHRoYW4gaW4gZXhwb3J0IHN5bWJvbCBkZWZpbml0aW9uIGZpbGVzLCBi
dXQgZGlzYWJsZSBpdCBvbiAKKyAgICAgICAgYWxsIHBsYXRmb3JtcyBpbml0aWFsbHkgc28gd2Ug
Y2FuIGRlYWwgd2l0aCBwb3J0IGJ1aWxkIGlzc3VlcyBvbmUgcG9ydCBhdCBhIHRpbWUuCisgICAg
ICAgIAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc1
NTEKKyAgICAgICAgCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvR2VvbG9jYXRpb25DbGllbnRR
dC5jcHA6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUG9wdXBNZW51UXQuY3BwOgorCiAyMDEx
LTAzLTA1ICBRaSBaaGFuZyAgPHFpLjIuemhhbmdAbm9raWEuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IExhc3psbyBHb21ib3MuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2NmL1dlYkNvcmVTdXBw
b3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcAkocmV2aXNpb24gODA0
MzUpCisrKyBTb3VyY2UvV2ViS2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVu
dENGLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsMTEgQEAKICNkZWZpbmUgV1RGX1VT
RV9KU0MgMQogI2VuZGlmCiAKKy8vIExlYXZlIHRoZXNlIHNldCB0byBub3RoaW5nIHVudGlsIHdl
IHN3aXRjaCBNYWMgYW5kIFdpbiBwb3J0cyBvdmVyIHRvIAorLy8gdXNpbmcgdGhlIGV4cG9ydCBt
YWNyb3MuCisjZGVmaW5lIEpTX0VYUE9SVF9QUklWQVRFCisjZGVmaW5lIFdURl9FWFBPUlRfUFJJ
VkFURQorCiAjaWYgZGVmaW5lZChXSU4zMikgfHwgZGVmaW5lZChfV0lOMzIpCiAjaWZuZGVmIFdU
Rl9VU0VfQ0ZORVRXT1JLCiAjZGVmaW5lIFdURl9VU0VfQ0ZORVRXT1JLIDEKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvY2YvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2YvQ2hh
bmdlTG9nCShyZXZpc2lvbiA4MDQ0NCkKKysrIFNvdXJjZS9XZWJLaXQvY2YvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDMtMDYgIEtldmluIE9sbGl2aWVy
ICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIFdURl9VU0VfRVhQT1JUX01BQ1JPUywgd2hp
Y2ggd2lsbCBhbGxvdyB1cyB0byBwdXQgc2hhcmVkIGxpYnJhcnkgaW1wb3J0L2V4cG9ydAorICAg
ICAgICBpbmZvIGludG8gdGhlIGhlYWRlcnMgcmF0aGVyIHRoYW4gaW4gZXhwb3J0IHN5bWJvbCBk
ZWZpbml0aW9uIGZpbGVzLCBidXQgZGlzYWJsZSBpdCBvbiAKKyAgICAgICAgYWxsIHBsYXRmb3Jt
cyBpbml0aWFsbHkgc28gd2UgY2FuIGRlYWwgd2l0aCBwb3J0IGJ1aWxkIGlzc3VlcyBvbmUgcG9y
dCBhdCBhIHRpbWUuCisgICAgICAgIAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9Mjc1NTEKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckNsaWVudENGLmNwcDoKKwogMjAxMS0wMi0yMyAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJv
Z2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDgwNDM1KQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDMtMDYgIEtldmlu
IE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIFdURl9VU0VfRVhQT1JUX01B
Q1JPUywgd2hpY2ggd2lsbCBhbGxvdyB1cyB0byBwdXQgc2hhcmVkIGxpYnJhcnkgaW1wb3J0L2V4
cG9ydAorICAgICAgICBpbmZvIGludG8gdGhlIGhlYWRlcnMgcmF0aGVyIHRoYW4gaW4gZXhwb3J0
IHN5bWJvbCBkZWZpbml0aW9uIGZpbGVzLCBidXQgZGlzYWJsZSBpdCBvbiAKKyAgICAgICAgYWxs
IHBsYXRmb3JtcyBpbml0aWFsbHkgc28gd2UgY2FuIGRlYWwgd2l0aCBwb3J0IGJ1aWxkIGlzc3Vl
cyBvbmUgcG9ydCBhdCBhIHRpbWUuCisgICAgICAgIAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc1NTEKKworICAgICAgICAqIFdlYktpdFByZWZpeC5o
OgorCiAyMDExLTAzLTA2ICBKZXNzaWUgQmVybGluICA8amJlcmxpbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dl
YktpdFByZWZpeC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYktpdFByZWZp
eC5oCShyZXZpc2lvbiA4MDQzNSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYktpdFByZWZpeC5o
CSh3b3JraW5nIGNvcHkpCkBAIC03OSwxMiArNzksNiBAQAogI2RlZmluZSBXVEZfVVNFX0pTQyAx
CiAjZGVmaW5lIFdURl9VU0VfVjggMAogCi0jaWZkZWYgX19jcGx1c3BsdXMKLSNpbmNsdWRlIDx3
dGYvRmFzdE1hbGxvYy5oPgotI2VuZGlmCi0KLSNpbmNsdWRlIDx3dGYvRGlzYWxsb3dDVHlwZS5o
PgotCiAvKiBXb3JrIGFyb3VuZCBidWcgd2l0aCBDKysgbGlicmFyeSB0aGF0IHNjcmV3cyB1cCBP
YmplY3RpdmUtQysrIHdoZW4gZXhjZXB0aW9uIHN1cHBvcnQgaXMgZGlzYWJsZWQuICovCiAjdW5k
ZWYgdHJ5CiAjdW5kZWYgY2F0Y2gKQEAgLTkyLDMgKzg2LDExIEBACiAjZGVmaW5lIEpTX0VYUE9S
VERBVEEKICNkZWZpbmUgSlNfRVhQT1JUQ0xBU1MKICNkZWZpbmUgV0VCS0lUX0VYUE9SVERBVEEK
KyNkZWZpbmUgV1RGX0VYUE9SVF9QUklWQVRFCisjZGVmaW5lIEpTX0VYUE9SVF9QUklWQVRFCisK
KyNpZmRlZiBfX2NwbHVzcGx1cworI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisjZW5kaWYK
KworI2luY2x1ZGUgPHd0Zi9EaXNhbGxvd0NUeXBlLmg+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9j
b25maWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb25maWcuaAkocmV2aXNpb24g
ODA0MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9jb25maWcuaAkod29ya2luZyBjb3B5KQpAQCAtMjks
NiArMjksMjkgQEAKIAogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogCisvKiBTZWUgbm90ZSBp
biB3dGYvUGxhdGZvcm0uaCBmb3IgbW9yZSBpbmZvIG9uIEVYUE9SVF9NQUNST1MuICovCisjaWYg
VVNFKEVYUE9SVF9NQUNST1MpCisjaW5jbHVkZSA8d3RmL0V4cG9ydE1hY3Jvcy5oPgorCisjaWYg
ZGVmaW5lZChCVUlMRElOR19KYXZhU2NyaXB0Q29yZSkgfHwgZGVmaW5lZChCVUlMRElOR19XVEYp
CisjZGVmaW5lIFdURl9FWFBPUlRfUFJJVkFURSBXVEZfRVhQT1JUCisjZGVmaW5lIEpTX0VYUE9S
VF9QUklWQVRFIFdURl9FWFBPUlQKKyNlbHNlCisjZGVmaW5lIFdURl9FWFBPUlRfUFJJVkFURSBX
VEZfSU1QT1JUCisjZGVmaW5lIEpTX0VYUE9SVF9QUklWQVRFIFdURl9JTVBPUlQKKyNlbmRpZgor
CisjZGVmaW5lIEpTX0VYUE9SVERBVEEgSlNfRVhQT1JUX1BSSVZBVEUKKyNkZWZpbmUgSlNfRVhQ
T1JUQ0xBU1MgSlNfRVhQT1JUX1BSSVZBVEUKKworI2lmIGRlZmluZWQoQlVJTERJTkdfV2ViQ29y
ZSkgfHwgZGVmaW5lZChCVUlMRElOR19XZWJLaXQpCisjZGVmaW5lIFdFQktJVF9FWFBPUlREQVRB
IFdURl9FWFBPUlQKKyNlbHNlCisjZGVmaW5lIFdFQktJVF9FWFBPUlREQVRBIFdURl9JTVBPUlQK
KyNlbmRpZgorCisjZWxzZSAvKiAhVVNFKEVYUE9SVF9NQUNST1MpICovCisKICNpZiAhUExBVEZP
Uk0oQ0hST01JVU0pICYmIE9TKFdJTkRPV1MpICYmICFkZWZpbmVkKEJVSUxESU5HX1dYX18pICYm
ICFDT01QSUxFUihHQ0MpCiAjaWYgZGVmaW5lZChCVUlMRElOR19KYXZhU2NyaXB0Q29yZSkgfHwg
ZGVmaW5lZChCVUlMRElOR19XVEYpCiAjZGVmaW5lIEpTX0VYUE9SVERBVEEgX19kZWNsc3BlYyhk
bGxleHBvcnQpCkBAIC00MCwxMyArNjMsMTkgQEAKICNlbHNlCiAjZGVmaW5lIFdFQktJVF9FWFBP
UlREQVRBIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQogI2VuZGlmCisjZGVmaW5lIFdURl9FWFBPUlRf
UFJJVkFURSBKU19FWFBPUlREQVRBCisjZGVmaW5lIEpTX0VYUE9SVF9QUklWQVRFIEpTX0VYUE9S
VERBVEEKICNkZWZpbmUgSlNfRVhQT1JUQ0xBU1MgSlNfRVhQT1JUREFUQQogI2Vsc2UKICNkZWZp
bmUgSlNfRVhQT1JUREFUQQogI2RlZmluZSBKU19FWFBPUlRDTEFTUwogI2RlZmluZSBXRUJLSVRf
RVhQT1JUREFUQQorI2RlZmluZSBXVEZfRVhQT1JUX1BSSVZBVEUKKyNkZWZpbmUgSlNfRVhQT1JU
X1BSSVZBVEUKICNlbmRpZgogCisjZW5kaWYgLyogVVNFKEVYUE9SVF9NQUNST1MpICovCisKICNp
ZmRlZiBfX0FQUExFX18KICNkZWZpbmUgSEFWRV9GVU5DX1VTTEVFUCAxCiAjZW5kaWYgLyogX19B
UFBMRV9fICovCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA4MDQzNSkKKysrIFNvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDExLTAzLTA2
ICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEludHJvZHVjZSBXVEZfVVNFX0VY
UE9SVF9NQUNST1MsIHdoaWNoIHdpbGwgYWxsb3cgdXMgdG8gcHV0IHNoYXJlZCBsaWJyYXJ5IGlt
cG9ydC9leHBvcnQKKyAgICAgICAgaW5mbyBpbnRvIHRoZSBoZWFkZXJzIHJhdGhlciB0aGFuIGlu
IGV4cG9ydCBzeW1ib2wgZGVmaW5pdGlvbiBmaWxlcywgYnV0IGRpc2FibGUgaXQgb24gCisgICAg
ICAgIGFsbCBwbGF0Zm9ybXMgaW5pdGlhbGx5IHNvIHdlIGNhbiBkZWFsIHdpdGggcG9ydCBidWls
ZCBpc3N1ZXMgb25lIHBvcnQgYXQgYSB0aW1lLgorICAgICAgICAKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NTUxCisKKyAgICAgICAgKiBjb25maWcu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvTG9nZ2luZ01hYy5tbToKKwogMjAxMS0wMy0wNiAg
SmVzc2llIEJlcmxpbiAgPGpiZXJsaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IFNhbSBXZWluaWcuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9nZ2luZ01h
Yy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9nZ2luZ01h
Yy5tbQkocmV2aXNpb24gODA0MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9n
Z2luZ01hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjMsNiArMjMsOCBAQAogICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCiAgKi8KIAorI2luY2x1ZGUgImNvbmZpZy5oIgorCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiA4MDQzNSkKKysr
IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBA
CisyMDExLTAzLTA2ICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEludHJvZHVj
ZSBXVEZfVVNFX0VYUE9SVF9NQUNST1MsIHdoaWNoIHdpbGwgYWxsb3cgdXMgdG8gcHV0IHNoYXJl
ZCBsaWJyYXJ5IGltcG9ydC9leHBvcnQKKyAgICAgICAgaW5mbyBpbnRvIHRoZSBoZWFkZXJzIHJh
dGhlciB0aGFuIGluIGV4cG9ydCBzeW1ib2wgZGVmaW5pdGlvbiBmaWxlcywgYnV0IGRpc2FibGUg
aXQgb24gCisgICAgICAgIGFsbCBwbGF0Zm9ybXMgaW5pdGlhbGx5IHNvIHdlIGNhbiBkZWFsIHdp
dGggcG9ydCBidWlsZCBpc3N1ZXMgb25lIHBvcnQgYXQgYSB0aW1lLgorICAgICAgICAKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NTUxCisKKyAgICAg
ICAgKiBjb25maWcuaDoKKwogMjAxMS0wMy0wNiAgSmVzc2llIEJlcmxpbiAgPGpiZXJsaW5AYXBw
bGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9jb25maWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9jb25maWcuaAko
cmV2aXNpb24gODA0MzUpCisrKyBTb3VyY2UvV2ViS2l0Mi9jb25maWcuaAkod29ya2luZyBjb3B5
KQpAQCAtMjgsMTYgKzI4LDYgQEAKICNpbmNsdWRlICJhdXRvdG9vbHNjb25maWcuaCIKICNlbmRp
ZiAvKiBkZWZpbmVkIChCVUlMRElOR19HVEtfXykgKi8KIAotI2lmZGVmIF9fY3BsdXNwbHVzCi0K
LS8vIFRoZXNlIHVuZGVmcyBtYXRjaCB1cCB3aXRoIGRlZmluZXMgaW4gV2ViS2l0MlByZWZpeC5o
IGZvciBNYWMgT1MgWC4KLS8vIEhlbHBzIHVzIGNhdGNoIGlmIGFueW9uZSB1c2VzIG5ldyBvciBk
ZWxldGUgYnkgYWNjaWRlbnQgaW4gY29kZSBhbmQgZG9lc24ndCBpbmNsdWRlICJjb25maWcuaCIu
Ci0jdW5kZWYgbmV3Ci0jdW5kZWYgZGVsZXRlCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4K
LQotI2VuZGlmCi0KICNpbmNsdWRlIDx3dGYvRGlzYWxsb3dDVHlwZS5oPgogI2luY2x1ZGUgPHd0
Zi9QbGF0Zm9ybS5oPgogCkBAIC02OCw2ICs1OCw4IEBACiAKICNkZWZpbmUgSlNfRVhQT1JUREFU
QQogI2RlZmluZSBKU19FWFBPUlRDTEFTUworI2RlZmluZSBXVEZfRVhQT1JUX1BSSVZBVEUKKyNk
ZWZpbmUgSlNfRVhQT1JUX1BSSVZBVEUKIAogI2VsaWYgZGVmaW5lZChfX0FQUExFX18pCiAKQEAg
LTEwMiw2ICs5NCw5IEBACiAjZGVmaW5lIEpTX0VYUE9SVENMQVNTCiAjZGVmaW5lIFdFQktJVF9F
WFBPUlREQVRBCiAKKyNkZWZpbmUgV1RGX0VYUE9SVF9QUklWQVRFCisjZGVmaW5lIEpTX0VYUE9S
VF9QUklWQVRFCisKICNpbmNsdWRlIDxXZWJDb3JlL0VtcHR5UHJvdG9jb2xEZWZpbml0aW9ucy5o
PgogCiAjZWxpZiBkZWZpbmVkKFdJTjMyKSB8fCBkZWZpbmVkKF9XSU4zMikKQEAgLTEzNiw2ICsx
MzEsMTYgQEAKIAogI2VuZGlmIC8qIGRlZmluZWQoV0lOMzIpIHx8IGRlZmluZWQoX1dJTjMyKSAq
LwogCisjaWZkZWYgX19jcGx1c3BsdXMKKworLy8gVGhlc2UgdW5kZWZzIG1hdGNoIHVwIHdpdGgg
ZGVmaW5lcyBpbiBXZWJLaXQyUHJlZml4LmggZm9yIE1hYyBPUyBYLgorLy8gSGVscHMgdXMgY2F0
Y2ggaWYgYW55b25lIHVzZXMgbmV3IG9yIGRlbGV0ZSBieSBhY2NpZGVudCBpbiBjb2RlIGFuZCBk
b2Vzbid0IGluY2x1ZGUgImNvbmZpZy5oIi4KKyN1bmRlZiBuZXcKKyN1bmRlZiBkZWxldGUKKyNp
bmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorCisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKE1BQykg
fHwgKE9TKE1BQ19PU19YKSAmJiBQTEFURk9STShRVCkpCiAjZGVmaW5lIFBMVUdJTl9BUkNISVRF
Q1RVUkVfTUFDIDEKICNlbGlmIFBMQVRGT1JNKFdJTikgfHwgKE9TKFdJTkRPV1MpICYmIFBMQVRG
T1JNKFFUKSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87006</attachid>
            <date>2011-03-25 20:51:00 -0700</date>
            <delta_ts>2011-03-26 11:05:56 -0700</delta_ts>
            <desc>Step 2, part 1: Add export symbols, and get the wx port using them.</desc>
            <filename>jscore_exports_step2_try1.patch</filename>
            <type>text/plain</type>
            <size>112445</size>
            <attacher name="Kevin Ollivier">kevino</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL3d4L2J1aWxkL3NldHRpbmdzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL3d4
L2J1aWxkL3NldHRpbmdzLnB5CShyZXZpc2lvbiA4MjAxMCkKKysrIFRvb2xzL3d4L2J1aWxkL3Nl
dHRpbmdzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yODMsNyArMjgzLDcgQEAKICAgICBpZiBidWls
ZF9wb3J0ID09ICJ3eCI6CiAgICAgICAgIHVwZGF0ZV93eF9kZXBzKGNvbmYsIHdrX3Jvb3QsIG1z
dmNfdmVyc2lvbikKIAotICAgICAgICBjb25mLmVudi5hcHBlbmRfdmFsdWUoJ0NYWERFRklORVMn
LCBbJ0JVSUxESU5HX1dYX189MScsICdKU19OT19FWFBPUlQnXSkKKyAgICAgICAgY29uZi5lbnYu
YXBwZW5kX3ZhbHVlKCdDWFhERUZJTkVTJywgWydCVUlMRElOR19XWF9fPTEnXSkKIAogICAgICAg
ICBpZiBidWlsZGluZ19vbl93aW4zMjoKICAgICAgICAgICAgIGNvbmYuZW52LmFwcGVuZF92YWx1
ZSgnTElCUEFUSCcsIG9zLnBhdGguam9pbihtc3ZjbGlic19kaXIsICdsaWInKSkKQEAgLTI5NSw2
ICsyOTUsOCBAQAogICAgICAgICAgICAgY29uZi5lbnZbJ0NQUFBBVEhfV1gnXSA9IHd4aW5jbHVk
ZXMKICAgICAgICAgICAgIGNvbmYuZW52WydMSUJfV1gnXSA9IHd4bGlicwogICAgICAgICAgICAg
Y29uZi5lbnZbJ0xJQlBBVEhfV1gnXSA9IHd4bGlicGF0aHMKKyAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgIGNvbmYuZW52LmFwcGVuZF92YWx1ZSgnQ1hYRkxBR1MnLCBbJy1mdmlzaWJpbGl0eT1o
aWRkZW4nXSkKIAogICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdkYXJ3aW4nKToKICAg
ICAgICAgY29uZi5lbnZbJ0xJQl9JQ1UnXSA9IFsnaWN1Y29yZSddCkluZGV4OiBUb29scy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA4MjAyMSkKKysr
IFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDExLTAz
LTI1ICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBleHBvcnQgbWFjcm9z
IHRvIGFsbCBleHBvcnRlZCBKU0NvcmUgbWV0aG9kcywgYW5kIGVuYWJsZSB0aGVtIGZvciB0aGUg
d3ggcG9ydC4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9Mjc1NTEKKworICAgICAgICAqIHd4L2J1aWxkL3NldHRpbmdzLnB5OgorCiAyMDExLTAzLTI1
ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBB
ZGVsZSBQZXRlcnNvbi4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5o
CShyZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMiArMzMsMTIgQEAKICAgICBzdHJ1Y3QgUmVnRXhw
UmVwcmVzZW50YXRpb247CiAgICAgY2xhc3MgSlNHbG9iYWxEYXRhOwogCi0gICAgUmVnRXhwRmxh
Z3MgcmVnRXhwRmxhZ3MoY29uc3QgVVN0cmluZyYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIFJl
Z0V4cEZsYWdzIHJlZ0V4cEZsYWdzKGNvbnN0IFVTdHJpbmcmKTsKIAogICAgIGNsYXNzIFJlZ0V4
cCA6IHB1YmxpYyBSZWZDb3VudGVkPFJlZ0V4cD4gewogICAgIHB1YmxpYzoKLSAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8UmVnRXhwPiBjcmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBj
b25zdCBVU3RyaW5nJiBwYXR0ZXJuLCBSZWdFeHBGbGFncyk7Ci0gICAgICAgIH5SZWdFeHAoKTsK
KyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8UmVnRXhwPiBjcmVh
dGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBwYXR0ZXJuLCBSZWdF
eHBGbGFncyk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIH5SZWdFeHAoKTsKIAogICAgICAg
ICBib29sIGdsb2JhbCgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MgJiBGbGFnR2xvYmFsOyB9CiAg
ICAgICAgIGJvb2wgaWdub3JlQ2FzZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MgJiBGbGFnSWdu
b3JlQ2FzZTsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
LmgJKHJldmlzaW9uIDgyMDEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDExICs3MywxMSBAQAogCiAgICAgICAgIHN0
YXRpYyB2b2lkIGR1bXBTdGF0aXN0aWNzKCk7CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8
U3RydWN0dXJlPiBhZGRQcm9wZXJ0eVRyYW5zaXRpb24oU3RydWN0dXJlKiwgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmlj
VmFsdWUsIHNpemVfdCYgb2Zmc2V0KTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0
dXJlPiBhZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVyZSos
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlND
ZWxsKiBzcGVjaWZpY1ZhbHVlLCBzaXplX3QmIG9mZnNldCk7CisgICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gYWRkUHJvcGVydHlUcmFuc2l0aW9u
KFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0
cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBzaXplX3QmIG9mZnNldCk7CisgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gYWRkUHJvcGVy
dHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZShTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNW
YWx1ZSwgc2l6ZV90JiBvZmZzZXQpOwogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1
cmU+IHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbihTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIHNpemVfdCYgb2Zmc2V0KTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8U3RydWN0dXJlPiBjaGFuZ2VQcm90b3R5cGVUcmFuc2l0aW9uKFN0cnVjdHVyZSosIEpTVmFs
dWUgcHJvdG90eXBlKTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBkZXNw
ZWNpZnlGdW5jdGlvblRyYW5zaXRpb24oU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYpOwor
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNo
YW5nZVByb3RvdHlwZVRyYW5zaXRpb24oU3RydWN0dXJlKiwgSlNWYWx1ZSBwcm90b3R5cGUpOwor
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGRl
c3BlY2lmeUZ1bmN0aW9uVHJhbnNpdGlvbihTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJik7
CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gZ2V0dGVyU2V0dGVyVHJhbnNp
dGlvbihTdHJ1Y3R1cmUqKTsKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiB0
b0NhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKFN0cnVjdHVyZSopOwogICAgICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHRvVW5jYWNoZWFibGVEaWN0aW9uYXJ5VHJhbnNpdGlv
bihTdHJ1Y3R1cmUqKTsKQEAgLTkxLDEwICs5MSwxMCBAQAogCiAgICAgICAgIFBhc3NSZWZQdHI8
U3RydWN0dXJlPiBmbGF0dGVuRGljdGlvbmFyeVN0cnVjdHVyZShKU0dsb2JhbERhdGEmLCBKU09i
amVjdCopOwogCi0gICAgICAgIH5TdHJ1Y3R1cmUoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgflN0cnVjdHVyZSgpOwogCiAgICAgICAgIC8vIFRoZXNlIHNob3VsZCBiZSB1c2VkIHdpdGgg
Y2F1dGlvbi4gIAotICAgICAgICBzaXplX3QgYWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2Vs
bCogc3BlY2lmaWNWYWx1ZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHNpemVfdCBhZGRQ
cm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
dW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKTsKICAgICAgICAgc2l6
ZV90IHJlbW92ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lKTsKICAgICAgICAgdm9pZCBzZXRQcm90b3R5cGVXaXRob3V0VHJhbnNpdGlvbihK
U1ZhbHVlIHByb3RvdHlwZSkgeyBtX3Byb3RvdHlwZSA9IHByb3RvdHlwZTsgfQogICAgICAgICAK
QEAgLTExNiw3ICsxMTYsNyBAQAogICAgICAgICBib29sIGlzVXNpbmdJbmxpbmVTdG9yYWdlKCkg
Y29uc3Q7CiAKICAgICAgICAgc2l6ZV90IGdldChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUpOwotICAgICAgICBzaXplX3QgZ2V0KFN0cmluZ0ltcGwqIHByb3BlcnR5TmFtZSwgdW5zaWdu
ZWQmIGF0dHJpYnV0ZXMsIEpTQ2VsbComIHNwZWNpZmljVmFsdWUpOworICAgICAgICBKU19FWFBP
UlRfUFJJVkFURSBzaXplX3QgZ2V0KFN0cmluZ0ltcGwqIHByb3BlcnR5TmFtZSwgdW5zaWduZWQm
IGF0dHJpYnV0ZXMsIEpTQ2VsbComIHNwZWNpZmljVmFsdWUpOwogICAgICAgICBzaXplX3QgZ2V0
KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMsIEpT
Q2VsbComIHNwZWNpZmljVmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVCghcHJv
cGVydHlOYW1lLmlzTnVsbCgpKTsKQEAgLTEzMyw3ICsxMzMsNyBAQAogICAgICAgICAKICAgICAg
ICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0eVRhYmxlID8gbV9wcm9w
ZXJ0eVRhYmxlLT5pc0VtcHR5KCkgOiBtX29mZnNldCA9PSBub09mZnNldDsgfQogCi0gICAgICAg
IHZvaWQgZGVzcGVjaWZ5RGljdGlvbmFyeUZ1bmN0aW9uKGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZGVzcGVjaWZ5RGljdGlv
bmFyeUZ1bmN0aW9uKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIHZv
aWQgZGlzYWJsZVNwZWNpZmljRnVuY3Rpb25UcmFja2luZygpIHsgbV9zcGVjaWZpY0Z1bmN0aW9u
VGhyYXNoQ291bnQgPSBtYXhTcGVjaWZpY0Z1bmN0aW9uVGhyYXNoQ291bnQ7IH0KIAogICAgICAg
ICB2b2lkIHNldEVudW1lcmF0aW9uQ2FjaGUoSlNHbG9iYWxEYXRhJiwgSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvciogZW51bWVyYXRpb25DYWNoZSk7IC8vIERlZmluZWQgaW4gSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvci5oLgpAQCAtMTYxLDcgKzE2MSw3IEBACiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6
Ci0gICAgICAgIFN0cnVjdHVyZShKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8mLCB1
bnNpZ25lZCBhbm9ueW1vdXNTbG90Q291bnQsIGNvbnN0IENsYXNzSW5mbyopOworICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSBTdHJ1Y3R1cmUoSlNWYWx1ZSBwcm90b3R5cGUsIGNvbnN0IFR5cGVJ
bmZvJiwgdW5zaWduZWQgYW5vbnltb3VzU2xvdENvdW50LCBjb25zdCBDbGFzc0luZm8qKTsKICAg
ICAgICAgU3RydWN0dXJlKGNvbnN0IFN0cnVjdHVyZSopOwogCiAgICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlKGNvbnN0IFN0cnVjdHVyZSogc3RydWN0dXJlKQpAQCAt
MTg2LDcgKzE4Niw3IEBACiAgICAgICAgIHZvaWQgZGVzcGVjaWZ5QWxsRnVuY3Rpb25zKCk7CiAK
ICAgICAgICAgUHJvcGVydHlUYWJsZSogY29weVByb3BlcnR5VGFibGUoKTsKLSAgICAgICAgdm9p
ZCBtYXRlcmlhbGl6ZVByb3BlcnR5TWFwKCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZv
aWQgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcCgpOwogICAgICAgICB2b2lkIG1hdGVyaWFsaXplUHJv
cGVydHlNYXBJZk5lY2Vzc2FyeSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9wcm9w
ZXJ0eVRhYmxlICYmIG1fcHJldmlvdXMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmgJKHJldmlzaW9uIDgyMDEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNzMsMTEgKzczLDExIEBACiAg
ICAgdHlwZWRlZiBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBQcm9wZXJ0eVN0b3JhZ2U7CiAg
ICAgdHlwZWRlZiBjb25zdCBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBDb25zdFByb3BlcnR5
U3RvcmFnZTsKIAotICAgIGNsYXNzIEpTT2JqZWN0IDogcHVibGljIEpTQ2VsbCB7CisgICAgY2xh
c3MgSlNfRVhQT1JUREFUQSBKU09iamVjdCA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICBmcmll
bmQgY2xhc3MgQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXI7CiAgICAgICAgIGZyaWVuZCBjbGFz
cyBKSVQ7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKU0NlbGw7Ci0gICAgICAgIGZyaWVuZCB2b2lk
IHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaEVudHJ5
KiBlbnRyeSwgSlNPYmplY3QqIHRoaXNPYmosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90JiBzbG90KTsKKyAgICAgICAgZnJpZW5kIEpTX0VYUE9SVF9QUklWQVRF
IHZvaWQgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBIYXNo
RW50cnkqIGVudHJ5LCBKU09iamVjdCogdGhpc09iaiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpOwogCiAgICAgcHVibGljOgogICAgICAgICB2aXJ0
dWFsIHZvaWQgbWFya0NoaWxkcmVuKE1hcmtTdGFjayYpOwpAQCAtMjQ3LDcgKzI0Nyw3IEBACiAK
ICAgICAgICAgc3RhdGljIHNpemVfdCBvZmZzZXRPZklubGluZVN0b3JhZ2UoKTsKICAgICAgICAg
Ci0gICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNzSW5mbyBzX2luZm87Cisg
ICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCiAgICAgcHJvdGVjdGVkOgog
ICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgJKHJldmlzaW9uIDgyMDEwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDcgKzMwLDcgQEAKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgSlNP
YmplY3RXaXRoR2xvYmFsT2JqZWN0IEJhc2U7CiAKLSAgICAgICAgUmVnRXhwT2JqZWN0KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIE5v
bk51bGxQYXNzUmVmUHRyPFJlZ0V4cD4pOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBSZWdF
eHBPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm9uTnVsbFBhc3NSZWZQdHI8
U3RydWN0dXJlPiwgTm9uTnVsbFBhc3NSZWZQdHI8UmVnRXhwPik7CiAgICAgICAgIHZpcnR1YWwg
flJlZ0V4cE9iamVjdCgpOwogCiAgICAgICAgIHZvaWQgc2V0UmVnRXhwKFBhc3NSZWZQdHI8UmVn
RXhwPiByKSB7IGQtPnJlZ0V4cCA9IHI7IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmgJKHJldmlzaW9uIDgyMDEwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oCSh3b3JraW5nIGNv
cHkpCkBAIC00Myw5ICs0Myw5IEBACiAgICAgY2xhc3MgTm9kZTsKICAgICBzdHJ1Y3QgSW5zdHJ1
Y3Rpb247CiAgICAgCi0gICAgSlNPYmplY3QqIGNyZWF0ZUludGVycnVwdGVkRXhlY3V0aW9uRXhj
ZXB0aW9uKEpTR2xvYmFsRGF0YSopOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBj
cmVhdGVJbnRlcnJ1cHRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihKU0dsb2JhbERhdGEqKTsKICAgICBK
U09iamVjdCogY3JlYXRlVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihKU0dsb2JhbERhdGEq
KTsKLSAgICBKU09iamVjdCogY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKEV4ZWNTdGF0ZSopOwor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBjcmVhdGVTdGFja092ZXJmbG93RXJyb3Io
RXhlY1N0YXRlKik7CiAgICAgSlNPYmplY3QqIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihKU0ds
b2JhbE9iamVjdCopOwogICAgIEpTT2JqZWN0KiBjcmVhdGVPdXRPZk1lbW9yeUVycm9yKEpTR2xv
YmFsT2JqZWN0Kik7CiAgICAgSlNPYmplY3QqIGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3Io
RXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAkocmV2aXNpb24gODIwMTApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDEy
ICs0NSwxMiBAQAogICAgICAgICB0eXBlZGVmIEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdCBCYXNl
OwogCiAgICAgcHVibGljOgotICAgICAgICBKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFs
T2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgaW50IGxlbmd0aCwgY29uc3Qg
SWRlbnRpZmllciYsIE5hdGl2ZUZ1bmN0aW9uKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
SlNGdW5jdGlvbihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIE5vbk51bGxQYXNzUmVmUHRy
PFN0cnVjdHVyZT4sIGludCBsZW5ndGgsIGNvbnN0IElkZW50aWZpZXImLCBOYXRpdmVGdW5jdGlv
bik7CiAgICAgICAgIEpTRnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBOb25O
dWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBpbnQgbGVuZ3RoLCBjb25zdCBJZGVudGlmaWVyJiwg
TmF0aXZlRXhlY3V0YWJsZSopOwogICAgICAgICBKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSosIEZ1bmN0
aW9uRXhlY3V0YWJsZSosIFNjb3BlQ2hhaW5Ob2RlKik7CiAgICAgICAgIHZpcnR1YWwgfkpTRnVu
Y3Rpb24oKTsKIAotICAgICAgICBjb25zdCBVU3RyaW5nJiBuYW1lKEV4ZWNTdGF0ZSopOworICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSBjb25zdCBVU3RyaW5nJiBuYW1lKEV4ZWNTdGF0ZSopOwog
ICAgICAgICBjb25zdCBVU3RyaW5nIGRpc3BsYXlOYW1lKEV4ZWNTdGF0ZSopOwogICAgICAgICBj
b25zdCBVU3RyaW5nIGNhbGN1bGF0ZWREaXNwbGF5TmFtZShFeGVjU3RhdGUqKTsKIApAQCAtODks
NyArODksNyBAQAogICAgIHByaXZhdGU6CiAgICAgICAgIEpTRnVuY3Rpb24oTm9uTnVsbFBhc3NS
ZWZQdHI8U3RydWN0dXJlPiwgVlB0ckhhY2tFeGVjdXRhYmxlKik7CiAKLSAgICAgICAgYm9vbCBp
c0hvc3RGdW5jdGlvbk5vbklubGluZSgpIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSBib29sIGlzSG9zdEZ1bmN0aW9uTm9uSW5saW5lKCkgY29uc3Q7CiAKICAgICAgICAgdmlydHVh
bCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwg
UHJvcGVydHlTbG90Jik7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90
eXBlLmgJKHJldmlzaW9uIDgyMDEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T2JqZWN0UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAKICAgICAg
ICAgYm9vbCBtX2hhc05vUHJvcGVydGllc1dpdGhVSW50MzJOYW1lczsKICAgICB9OwogCi0gICAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNUb1N0cmluZyhFeGVj
U3RhdGUqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG9iamVjdFByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSopOwogCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuaAkocmV2
aXNpb24gODIwMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE0NCw3ICsxNDQsNyBAQAogICAgICAgICBzdGF0aWMgdm9pZCBt
YXJrTGlzdHMoSGVhcFJvb3RNYXJrZXImLCBMaXN0U2V0Jik7CiAKICAgICBwcml2YXRlOgotICAg
ICAgICB2b2lkIHNsb3dBcHBlbmQoSlNWYWx1ZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IHZvaWQgc2xvd0FwcGVuZChKU1ZhbHVlKTsKICAgICAgICAgCiAgICAgICAgIFJlZ2lzdGVyKiBt
X2J1ZmZlcjsKICAgICAgICAgc2l6ZV90IG1fc2l6ZTsKQEAgLTIzNCw3ICsyMzQsNyBAQAogICAg
ICAgICBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fYXJnczsgfQogICAg
ICAgICBjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBtX2FyZ3MgKyBtX2FyZ0Nv
dW50OyB9CiAKLSAgICAgICAgdm9pZCBnZXRTbGljZShpbnQgc3RhcnRJbmRleCwgQXJnTGlzdCYg
cmVzdWx0KSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBnZXRTbGljZShp
bnQgc3RhcnRJbmRleCwgQXJnTGlzdCYgcmVzdWx0KSBjb25zdDsKICAgICBwcml2YXRlOgogICAg
ICAgICBKU1ZhbHVlKiBtX2FyZ3M7CiAgICAgICAgIHNpemVfdCBtX2FyZ0NvdW50OwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAkocmV2aXNpb24gODIwMTApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgJKHdvcmtpbmcgY29weSkK
QEAgLTU3LDcgKzU3LDggQEAKIAogICAgIGVudW0gQXJyYXlDcmVhdGlvbk1vZGUgeyBDcmVhdGVD
b21wYWN0LCBDcmVhdGVJbml0aWFsaXplZCB9OwogCi0gICAgY2xhc3MgSlNBcnJheSA6IHB1Ymxp
YyBKU05vbkZpbmFsT2JqZWN0IHsKKyAgICBjbGFzcyBKU19FWFBPUlREQVRBIEpTQXJyYXkgOiBw
dWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CisgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAg
ICAgIGZyaWVuZCBjbGFzcyBXYWxrZXI7CiAKICAgICBwdWJsaWM6CkBAIC03NCw3ICs3NSw3IEBA
CiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRl
KiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgICAgICB2aXJ0
dWFsIHZvaWQgcHV0KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSk7
IC8vIEZJWE1FOiBNYWtlIHByb3RlY3RlZCBhbmQgYWRkIHNldEl0ZW0uCiAKLSAgICAgICAgc3Rh
dGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKKyAgICAgICAgc3RhdGlj
IGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAgICAgICAgIAogICAgICAgICB1bnNpZ25lZCBsZW5n
dGgoKSBjb25zdCB7IHJldHVybiBtX3N0b3JhZ2UtPm1fbGVuZ3RoOyB9CiAgICAgICAgIHZvaWQg
c2V0TGVuZ3RoKHVuc2lnbmVkKTsgLy8gT0sgdG8gdXNlIG9uIG5ldyBhcnJheXMsIGJ1dCBub3Qg
aWYgaXQgbWlnaHQgYmUgYSBSZWdFeHBNYXRjaEFycmF5LgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaAkocmV2aXNpb24gODIwMTAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMxLDkgKzMxLDkgQEAKIAogICAgIGNsYXNzIEZ1bmN0aW9uUHJvdG90
eXBlOwogCi0gICAgY2xhc3MgSW50ZXJuYWxGdW5jdGlvbiA6IHB1YmxpYyBKU09iamVjdFdpdGhH
bG9iYWxPYmplY3QgeworICAgIGNsYXNzIEpTX0VYUE9SVERBVEEgSW50ZXJuYWxGdW5jdGlvbiA6
IHB1YmxpYyBKU09iamVjdFdpdGhHbG9iYWxPYmplY3QgewogICAgIHB1YmxpYzoKLSAgICAgICAg
c3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKKyAgICAgICAgc3Rh
dGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKICAgICAgICAgY29uc3QgVVN0cmluZyYgbmFt
ZShFeGVjU3RhdGUqKTsKICAgICAgICAgY29uc3QgVVN0cmluZyBkaXNwbGF5TmFtZShFeGVjU3Rh
dGUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmgJ
KHJldmlzaW9uIDgyMDEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRp
Zmllci5oCSh3b3JraW5nIGNvcHkpCkBAIC01MywxNSArNTMsMTUgQEAKICAgICAgICAgCiAgICAg
ICAgIENTdHJpbmcgYXNjaWkoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5hc2NpaSgpOyB9CiAg
ICAgICAgIAotICAgICAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9tKEV4ZWNTdGF0ZSogZXhlYywg
dW5zaWduZWQgeSk7Ci0gICAgICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb20oRXhlY1N0YXRlKiBl
eGVjLCBpbnQgeSk7Ci0gICAgICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb20oRXhlY1N0YXRlKiBl
eGVjLCBkb3VibGUgeSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBJZGVudGlm
aWVyIGZyb20oRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCB5KTsKKyAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIElkZW50aWZpZXIgZnJvbShFeGVjU3RhdGUqIGV4ZWMsIGludCB5KTsK
KyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIElkZW50aWZpZXIgZnJvbShFeGVjU3Rh
dGUqIGV4ZWMsIGRvdWJsZSB5KTsKICAgICAgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbShKU0ds
b2JhbERhdGEqLCB1bnNpZ25lZCB5KTsKICAgICAgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbShK
U0dsb2JhbERhdGEqLCBpbnQgeSk7CiAgICAgICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb20oSlNH
bG9iYWxEYXRhKiwgZG91YmxlIHkpOwogCi0gICAgICAgIHN0YXRpYyB1aW50MzJfdCB0b1VJbnQz
Mihjb25zdCBVU3RyaW5nJiwgYm9vbCYgb2spOwotICAgICAgICB1aW50MzJfdCB0b1VJbnQzMihi
b29sJiBvaykgY29uc3QgeyByZXR1cm4gdG9VSW50MzIobV9zdHJpbmcsIG9rKTsgfQorICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdWludDMyX3QgdG9VSW50MzIoY29uc3QgVVN0cmlu
ZyYsIGJvb2wmIG9rKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdWludDMyX3QgdG9VSW50
MzIoYm9vbCYgb2spIGNvbnN0IHsgcmV0dXJuIHRvVUludDMyKG1fc3RyaW5nLCBvayk7IH0KICAg
ICAgICAgdW5zaWduZWQgdG9BcnJheUluZGV4KGJvb2wmIG9rKSBjb25zdDsKIAogICAgICAgICBi
b29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmlzTnVsbCgpOyB9CkBAIC03Mywx
MiArNzMsMTIgQEAKICAgICAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJZGVudGlm
aWVyJiwgY29uc3QgY2hhciopOwogICAgICAgICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IElkZW50aWZpZXImLCBjb25zdCBjaGFyKik7CiAgICAgCi0gICAgICAgIHN0YXRpYyBib29sIGVx
dWFsKGNvbnN0IFN0cmluZ0ltcGwqLCBjb25zdCBjaGFyKik7Ci0gICAgICAgIHN0YXRpYyBib29s
IGVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqLCBjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7
Ci0gICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqIGEsIGNvbnN0IFN0
cmluZ0ltcGwqIGIpIHsgcmV0dXJuIDo6ZXF1YWwoYSwgYik7IH0KKyAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgU3RyaW5nSW1wbCosIGNvbnN0IGNoYXIq
KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgU3Ry
aW5nSW1wbCosIGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgU3RyaW5nSW1wbCogYSwgY29uc3Qg
U3RyaW5nSW1wbCogYikgeyByZXR1cm4gOjplcXVhbChhLCBiKTsgfQogCi0gICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChFeGVjU3RhdGUqLCBjb25zdCBjaGFyKik7IC8v
IE9ubHkgdG8gYmUgdXNlZCB3aXRoIHN0cmluZyBsaXRlcmFscy4KLSAgICAgICAgc3RhdGljIFBh
c3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRkKEpTR2xvYmFsRGF0YSosIGNvbnN0IGNoYXIqKTsgLy8g
T25seSB0byBiZSB1c2VkIHdpdGggc3RyaW5nIGxpdGVyYWxzLgorICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGQoRXhlY1N0YXRlKiwgY29u
c3QgY2hhciopOyAvLyBPbmx5IHRvIGJlIHVzZWQgd2l0aCBzdHJpbmcgbGl0ZXJhbHMuCisgICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChK
U0dsb2JhbERhdGEqLCBjb25zdCBjaGFyKik7IC8vIE9ubHkgdG8gYmUgdXNlZCB3aXRoIHN0cmlu
ZyBsaXRlcmFscy4KIAogICAgIHByaXZhdGU6CiAgICAgICAgIFVTdHJpbmcgbV9zdHJpbmc7CkBA
IC0xMDgsMTAgKzEwOCwxMCBAQAogICAgICAgICAgICAgcmV0dXJuIGFkZFNsb3dDYXNlKGdsb2Jh
bERhdGEsIHIpOwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5n
SW1wbD4gYWRkU2xvd0Nhc2UoRXhlY1N0YXRlKiwgU3RyaW5nSW1wbCogcik7CisgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZFNsb3dDYXNl
KEV4ZWNTdGF0ZSosIFN0cmluZ0ltcGwqIHIpOwogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxT
dHJpbmdJbXBsPiBhZGRTbG93Q2FzZShKU0dsb2JhbERhdGEqLCBTdHJpbmdJbXBsKiByKTsKIAot
ICAgICAgICBzdGF0aWMgdm9pZCBjaGVja0N1cnJlbnRJZGVudGlmaWVyVGFibGUoRXhlY1N0YXRl
Kik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGNoZWNrQ3VycmVudElk
ZW50aWZpZXJUYWJsZShFeGVjU3RhdGUqKTsKICAgICAgICAgc3RhdGljIHZvaWQgY2hlY2tDdXJy
ZW50SWRlbnRpZmllclRhYmxlKEpTR2xvYmFsRGF0YSopOwogICAgIH07CiAgICAgCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAkocmV2aXNpb24g
ODIwMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAko
d29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotICAg
IGNsYXNzIFN0cmluZ09iamVjdCA6IHB1YmxpYyBKU1dyYXBwZXJPYmplY3QgeworICAgIGNsYXNz
IEpTX0VYUE9SVERBVEEgU3RyaW5nT2JqZWN0IDogcHVibGljIEpTV3JhcHBlck9iamVjdCB7CiAg
ICAgcHVibGljOgogICAgICAgICBTdHJpbmdPYmplY3QoRXhlY1N0YXRlKiwgTm9uTnVsbFBhc3NS
ZWZQdHI8U3RydWN0dXJlPik7CiAgICAgICAgIFN0cmluZ09iamVjdChFeGVjU3RhdGUqLCBOb25O
dWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBjb25zdCBVU3RyaW5nJik7CkBAIC00MSw3ICs0MSw3
IEBACiAgICAgICAgIHZpcnR1YWwgYm9vbCBkZWxldGVQcm9wZXJ0eShFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZ2V0T3du
UHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9u
TW9kZSBtb2RlID0gRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CiAKLSAgICAgICAgc3RhdGlj
IGNvbnN0IEpTX0VYUE9SVERBVEEgQ2xhc3NJbmZvIHNfaW5mbzsKKyAgICAgICAgc3RhdGljIGNv
bnN0IENsYXNzSW5mbyBzX2luZm87CiAKICAgICAgICAgSlNTdHJpbmcqIGludGVybmFsVmFsdWUo
KSBjb25zdCB7IHJldHVybiBhc1N0cmluZyhKU1dyYXBwZXJPYmplY3Q6OmludGVybmFsVmFsdWUo
KSk7fQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJheS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5
LmgJKHJldmlzaW9uIDgyMDEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNC
eXRlQXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtNzUsOCArNzUsOCBAQAogICAgICAgICAgICAg
ICAgIHNldEluZGV4KGksIGJ5dGVWYWx1ZSk7CiAgICAgICAgIH0KIAotICAgICAgICBKU0J5dGVB
cnJheShFeGVjU3RhdGUqLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBXVEY6OkJ5dGVB
cnJheSogc3RvcmFnZSk7Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3Jl
YXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYsIEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBKU0M6
OkNsYXNzSW5mbyogPSAmc19kZWZhdWx0SW5mbyk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IEpTQnl0ZUFycmF5KEV4ZWNTdGF0ZSosIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIFdU
Rjo6Qnl0ZUFycmF5KiBzdG9yYWdlKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiwgSlNW
YWx1ZSBwcm90b3R5cGUsIGNvbnN0IEpTQzo6Q2xhc3NJbmZvKiA9ICZzX2RlZmF1bHRJbmZvKTsK
IAogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6RXhlY1N0YXRl
KiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90
Jik7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpFeGVjU3Rh
dGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5oCShyZXZpc2lvbiA4MjAx
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTUsOCArNTUsOCBAQAogICAgICAgICBKU1ZhbHVlIG1fdmFsdWU7CiAgICAg
fTsKIAotICAgIENvbXBsZXRpb24gY2hlY2tTeW50YXgoRXhlY1N0YXRlKiwgY29uc3QgU291cmNl
Q29kZSYpOwotICAgIENvbXBsZXRpb24gZXZhbHVhdGUoRXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5v
ZGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNWYWx1ZSB0aGlzVmFsdWUgPSBKU1ZhbHVlKCkpOwor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIENvbXBsZXRpb24gY2hlY2tTeW50YXgoRXhlY1N0YXRlKiwg
Y29uc3QgU291cmNlQ29kZSYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIENvbXBsZXRpb24gZXZh
bHVhdGUoRXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBKU1ZhbHVlKCkpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3Qu
aAkocmV2aXNpb24gODIwMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Zh
cmlhYmxlT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAKIAogICAgIGNs
YXNzIFJlZ2lzdGVyOwogCi0gICAgY2xhc3MgSlNWYXJpYWJsZU9iamVjdCA6IHB1YmxpYyBKU05v
bkZpbmFsT2JqZWN0IHsKKyAgICBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBKU1ZhcmlhYmxlT2Jq
ZWN0IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgICAgICBmcmllbmQgY2xhc3MgSklU
OwogCiAgICAgcHVibGljOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9v
a3VwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3Vw
LmgJKHJldmlzaW9uIDgyMDEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9v
a3VwLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0MCw3ICsxNDAsNyBAQAogICAgICAgICAgICAgICAg
IGNyZWF0ZVRhYmxlKCZleGVjLT5nbG9iYWxEYXRhKCkpOwogICAgICAgICB9CiAKLSAgICAgICAg
dm9pZCBkZWxldGVUYWJsZSgpIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lk
IGRlbGV0ZVRhYmxlKCkgY29uc3Q7CiAKICAgICAgICAgLy8gRmluZCBhbiBlbnRyeSBpbiB0aGUg
dGFibGUsIGFuZCByZXR1cm4gdGhlIGVudHJ5LgogICAgICAgICBBTFdBWVNfSU5MSU5FIGNvbnN0
IEhhc2hFbnRyeSogZW50cnkoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlm
aWVyJiBpZGVudGlmaWVyKSBjb25zdApAQCAtMTc1LDEwICsxNzUsMTAgQEAKICAgICAgICAgfQog
CiAgICAgICAgIC8vIENvbnZlcnQgdGhlIGhhc2ggdGFibGUga2V5cyB0byBpZGVudGlmaWVycy4K
LSAgICAgICAgdm9pZCBjcmVhdGVUYWJsZShKU0dsb2JhbERhdGEqKSBjb25zdDsKKyAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBjcmVhdGVUYWJsZShKU0dsb2JhbERhdGEqKSBjb25zdDsK
ICAgICB9OwogCi0gICAgdm9pZCBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChFeGVjU3RhdGUqLCBj
b25zdCBIYXNoRW50cnkqLCBKU09iamVjdCogdGhpc09iamVjdCwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lk
IHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSosIGNvbnN0IEhhc2hFbnRyeSosIEpT
T2JqZWN0KiB0aGlzT2JqZWN0LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCYpOwogCiAgICAgLyoqCiAgICAgICogVGhpcyBtZXRob2QgZG9lcyBpdCBhbGwgKGxv
b2tpbmcgaW4gdGhlIGhhc2h0YWJsZSwgY2hlY2tpbmcgZm9yIGZ1bmN0aW9uCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkocmV2aXNpb24gODIwMTApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkod29ya2luZyBjb3B5KQpAQCAtNjgs
OCArNjgsOCBAQAogICAgICAgICBmcmllbmQgY2xhc3MgU2NvcGVDaGFpbk5vZGU7CiAKICAgICBw
cml2YXRlOgotICAgICAgICBleHBsaWNpdCBKU0NlbGwoU3RydWN0dXJlKik7Ci0gICAgICAgIHZp
cnR1YWwgfkpTQ2VsbCgpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBleHBsaWNpdCBKU0Nl
bGwoU3RydWN0dXJlKik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgfkpTQ2Vs
bCgpOwogCiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+
IGNyZWF0ZUR1bW15U3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKQEAgLTc4LDkg
Kzc4LDkgQEAKICAgICAgICAgfQogCiAgICAgICAgIC8vIFF1ZXJ5aW5nIHRoZSB0eXBlLgotICAg
ICAgICBib29sIGlzU3RyaW5nKCkgY29uc3Q7Ci0gICAgICAgIGJvb2wgaXNPYmplY3QoKSBjb25z
dDsKLSAgICAgICAgdmlydHVhbCBib29sIGlzR2V0dGVyU2V0dGVyKCkgY29uc3Q7CisgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNTdHJpbmcoKSBjb25zdDsKKyAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgYm9vbCBpc09iamVjdCgpIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJ
VkFURSB2aXJ0dWFsIGJvb2wgaXNHZXR0ZXJTZXR0ZXIoKSBjb25zdDsKICAgICAgICAgYm9vbCBp
bmhlcml0cyhjb25zdCBDbGFzc0luZm8qKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBib29sIGlz
QVBJVmFsdWVXcmFwcGVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVh
bCBib29sIGlzUHJvcGVydHlOYW1lSXRlcmF0b3IoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpA
QCAtODgsMjUgKzg4LDI1IEBACiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlKCkgY29uc3Q7
CiAKICAgICAgICAgLy8gRXh0cmFjdGluZyB0aGUgdmFsdWUuCi0gICAgICAgIGJvb2wgZ2V0U3Ry
aW5nKEV4ZWNTdGF0ZSogZXhlYywgVVN0cmluZyYpIGNvbnN0OwotICAgICAgICBVU3RyaW5nIGdl
dFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0OyAvLyBudWxsIHN0cmluZyBpZiBub3QgYSBz
dHJpbmcKLSAgICAgICAgSlNPYmplY3QqIGdldE9iamVjdCgpOyAvLyBOVUxMIGlmIG5vdCBhbiBv
YmplY3QKLSAgICAgICAgY29uc3QgSlNPYmplY3QqIGdldE9iamVjdCgpIGNvbnN0OyAvLyBOVUxM
IGlmIG5vdCBhbiBvYmplY3QKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBnZXRTdHJp
bmcoRXhlY1N0YXRlKiBleGVjLCBVU3RyaW5nJikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIFVTdHJpbmcgZ2V0U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykgY29uc3Q7IC8vIG51bGwg
c3RyaW5nIGlmIG5vdCBhIHN0cmluZworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVj
dCogZ2V0T2JqZWN0KCk7IC8vIE5VTEwgaWYgbm90IGFuIG9iamVjdAorICAgICAgICBKU19FWFBP
UlRfUFJJVkFURSBjb25zdCBKU09iamVjdCogZ2V0T2JqZWN0KCkgY29uc3Q7IC8vIE5VTEwgaWYg
bm90IGFuIG9iamVjdAogICAgICAgICAKLSAgICAgICAgdmlydHVhbCBDYWxsVHlwZSBnZXRDYWxs
RGF0YShDYWxsRGF0YSYpOwotICAgICAgICB2aXJ0dWFsIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3Ry
dWN0RGF0YShDb25zdHJ1Y3REYXRhJik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1
YWwgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoQ2FsbERhdGEmKTsKKyAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgdmlydHVhbCBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoQ29uc3RydWN0RGF0
YSYpOwogCiAgICAgICAgIC8vIEV4dHJhY3RpbmcgaW50ZWdlciB2YWx1ZXMuCiAgICAgICAgIC8v
IEZJWE1FOiByZW1vdmUgdGhlc2UgbWV0aG9kcywgY2FuIGNoZWNrIGlzTnVtYmVyQ2VsbCBpbiBK
U1ZhbHVlICYmIHRoZW4gY2FsbCBhc051bWJlckNlbGw6OiouCi0gICAgICAgIHZpcnR1YWwgYm9v
bCBnZXRVSW50MzIodWludDMyX3QmKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
dmlydHVhbCBib29sIGdldFVJbnQzMih1aW50MzJfdCYpIGNvbnN0OwogCiAgICAgICAgIC8vIEJh
c2ljIGNvbnZlcnNpb25zLgotICAgICAgICB2aXJ0dWFsIEpTVmFsdWUgdG9QcmltaXRpdmUoRXhl
Y1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwg
Ym9vbCBnZXRQcmltaXRpdmVOdW1iZXIoRXhlY1N0YXRlKiwgZG91YmxlJiBudW1iZXIsIEpTVmFs
dWUmKTsKLSAgICAgICAgdmlydHVhbCBib29sIHRvQm9vbGVhbihFeGVjU3RhdGUqKSBjb25zdDsK
LSAgICAgICAgdmlydHVhbCBkb3VibGUgdG9OdW1iZXIoRXhlY1N0YXRlKikgY29uc3Q7Ci0gICAg
ICAgIHZpcnR1YWwgVVN0cmluZyB0b1N0cmluZyhFeGVjU3RhdGUqKSBjb25zdDsKLSAgICAgICAg
dmlydHVhbCBKU09iamVjdCogdG9PYmplY3QoRXhlY1N0YXRlKikgY29uc3Q7CisgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgSlNWYWx1ZSB0b1ByaW1pdGl2ZShFeGVjU3RhdGUqLCBQ
cmVmZXJyZWRQcmltaXRpdmVUeXBlKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
dmlydHVhbCBib29sIGdldFByaW1pdGl2ZU51bWJlcihFeGVjU3RhdGUqLCBkb3VibGUmIG51bWJl
ciwgSlNWYWx1ZSYpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIGJvb2wgdG9C
b29sZWFuKEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0
dWFsIGRvdWJsZSB0b051bWJlcihFeGVjU3RhdGUqKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgdmlydHVhbCBVU3RyaW5nIHRvU3RyaW5nKEV4ZWNTdGF0ZSopIGNvbnN0OworICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIEpTT2JqZWN0KiB0b09iamVjdChFeGVjU3Rh
dGUqKSBjb25zdDsKIAogICAgICAgICAvLyBHYXJiYWdlIGNvbGxlY3Rpb24uCiAgICAgICAgIHZv
aWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIEV4ZWNTdGF0ZSopOwpAQCAtMTE5LDE2ICsxMTksMTYg
QEAKICNlbmRpZgogCiAgICAgICAgIC8vIE9iamVjdCBvcGVyYXRpb25zLCB3aXRoIHRoZSB0b09i
amVjdCBvcGVyYXRpb24gaW5jbHVkZWQuCi0gICAgICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJ
bmZvKCkgY29uc3QgeyByZXR1cm4gbV9zdHJ1Y3R1cmUtPmNsYXNzSW5mbygpOyB9Ci0gICAgICAg
IHZpcnR1YWwgdm9pZCBwdXQoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHB1
dChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUpOwotICAgICAgICB2
aXJ0dWFsIGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lKTsKLSAgICAgICAgdmlydHVhbCBib29sIGRlbGV0ZVByb3BlcnR5KEV4ZWNT
dGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9zdHJ1Y3R1cmUt
PmNsYXNzSW5mbygpOyB9CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgdm9pZCBw
dXQoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCB2b2lk
IHB1dChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUpOworICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRl
KiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgdmlydHVhbCBib29sIGRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHBy
b3BlcnR5TmFtZSk7CiAKLSAgICAgICAgdmlydHVhbCBKU09iamVjdCogdG9UaGlzT2JqZWN0KEV4
ZWNTdGF0ZSopIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIEpTVmFsdWUgZ2V0SlNOdW1iZXIoKTsK
LSAgICAgICAgdm9pZCogdnB0cigpIHsgcmV0dXJuICpyZWludGVycHJldF9jYXN0PHZvaWQqKj4o
dGhpcyk7IH0KLSAgICAgICAgdm9pZCBzZXRWUHRyKHZvaWQqIHZwdHIpIHsgKnJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCoqPih0aGlzKSA9IHZwdHI7IH0KKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
dmlydHVhbCBKU09iamVjdCogdG9UaGlzT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIEpTVmFsdWUgZ2V0SlNOdW1iZXIoKTsKKyAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCogdnB0cigpIHsgcmV0dXJuICpyZWludGVycHJldF9j
YXN0PHZvaWQqKj4odGhpcyk7IH0KKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRW
UHRyKHZvaWQqIHZwdHIpIHsgKnJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPih0aGlzKSA9IHZwdHI7
IH0KIAogICAgICAgICAvLyBGSVhNRTogUmVuYW1lIGdldE93blByb3BlcnR5U2xvdCB0byB2aXJ0
dWFsR2V0T3duUHJvcGVydHlTbG90LCBhbmQKICAgICAgICAgLy8gZmFzdEdldE93blByb3BlcnR5
U2xvdCB0byBnZXRPd25Qcm9wZXJ0eVNsb3QuIENhbGxlcnMgc2hvdWxkIGFsd2F5cwpAQCAtMTUx
LDggKzE1MSw4IEBACiAKICAgICBwcml2YXRlOgogICAgICAgICAvLyBCYXNlIGltcGxlbWVudGF0
aW9uOyBmb3Igbm9uLW9iamVjdCBjbGFzc2VzIGltcGxlbWVudHMgZ2V0UHJvcGVydHlTbG90Lgot
ICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAgIHZpcnR1
YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCBi
b29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0
dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIAogICAgICAgICBTdHJ1Y3R1cmUqIG1fc3Ry
dWN0dXJlOwogICAgIH07CkBAIC0xNzEsNyArMTcxLDcgQEAKICAgICAgICAgcmV0dXJuIG1fc3Ry
dWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBPYmplY3RUeXBlOwogICAgIH0KIAotICAgIGlu
bGluZSBib29sIEpTQ2VsbDo6aXNTdHJpbmcoKSBjb25zdAorICAgIEpTX0VYUE9SVF9QUklWQVRF
IGlubGluZSBib29sIEpTQ2VsbDo6aXNTdHJpbmcoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0
dXJuIG1fc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBTdHJpbmdUeXBlOwogICAgIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCShyZXZpc2lvbiA4MjAx
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCSh3b3JraW5nIGNv
cHkpCkBAIC01Niw3ICs1Niw3IEBACiAgICAgY2xhc3MgSlNMb2NrIHsKICAgICAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoSlNMb2NrKTsKICAgICBwdWJsaWM6Ci0gICAgICAgIEpTTG9jayhFeGVj
U3RhdGUqKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNMb2NrKEV4ZWNTdGF0ZSopOwog
ICAgICAgICBKU0xvY2soSlNHbG9iYWxEYXRhKik7CiAKICAgICAgICAgSlNMb2NrKEpTTG9ja0Jl
aGF2aW9yIGxvY2tCZWhhdmlvcikKQEAgLTgwLDEzICs4MCwxMyBAQAogICAgICAgICAgICAgdW5s
b2NrKG1fbG9ja0JlaGF2aW9yKTsgCiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIHN0YXRp
YyB2b2lkIGxvY2soSlNMb2NrQmVoYXZpb3IpOwotICAgICAgICBzdGF0aWMgdm9pZCB1bmxvY2so
SlNMb2NrQmVoYXZpb3IpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBs
b2NrKEpTTG9ja0JlaGF2aW9yKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZv
aWQgdW5sb2NrKEpTTG9ja0JlaGF2aW9yKTsKICAgICAgICAgc3RhdGljIHZvaWQgbG9jayhFeGVj
U3RhdGUqKTsKICAgICAgICAgc3RhdGljIHZvaWQgdW5sb2NrKEV4ZWNTdGF0ZSopOwogCi0gICAg
ICAgIHN0YXRpYyBpbnRwdHJfdCBsb2NrQ291bnQoKTsKLSAgICAgICAgc3RhdGljIGJvb2wgY3Vy
cmVudFRocmVhZElzSG9sZGluZ0xvY2soKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIGludHB0cl90IGxvY2tDb3VudCgpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgYm9vbCBjdXJyZW50VGhyZWFkSXNIb2xkaW5nTG9jaygpOwogCiAgICAgICAgIEpTTG9ja0Jl
aGF2aW9yIG1fbG9ja0JlaGF2aW9yOwogCkBAIC05NCw4ICs5NCw4IEBACiAgICAgICAgICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShEcm9wQWxsTG9ja3MpOwogICAgICAgICBwdWJsaWM6CiAgICAg
ICAgICAgICBEcm9wQWxsTG9ja3MoRXhlY1N0YXRlKiBleGVjKTsKLSAgICAgICAgICAgIERyb3BB
bGxMb2NrcyhKU0xvY2tCZWhhdmlvcik7Ci0gICAgICAgICAgICB+RHJvcEFsbExvY2tzKCk7Cisg
ICAgICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBEcm9wQWxsTG9ja3MoSlNMb2NrQmVoYXZpb3Ip
OworICAgICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgfkRyb3BBbGxMb2NrcygpOwogICAgICAg
ICAgICAgCiAgICAgICAgIHByaXZhdGU6CiAgICAgICAgICAgICBpbnRwdHJfdCBtX2xvY2tDb3Vu
dDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5o
CShyZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3Bl
cnR5U2xvdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMjAsNyArMjIwLDcgQEAKICAgICAgICAgICAg
IHJldHVybiBtX2dldFZhbHVlOwogICAgICAgICB9CiAgICAgcHJpdmF0ZToKLSAgICAgICAgSlNW
YWx1ZSBmdW5jdGlvbkdldHRlcihFeGVjU3RhdGUqKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgSlNWYWx1ZSBmdW5jdGlvbkdldHRlcihFeGVjU3RhdGUqKSBjb25zdDsKIAogICAg
ICAgICBHZXRWYWx1ZUZ1bmMgbV9nZXRWYWx1ZTsKICAgICAgICAgR2V0SW5kZXhWYWx1ZUZ1bmMg
bV9nZXRJbmRleFZhbHVlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaAkocmV2aXNpb24gODIwMTApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM2LDcgKzM2LDcgQEAKICAgICAgICAgdmlydHVhbCBDYWxsVHlwZSBnZXRDYWxsRGF0
YShDYWxsRGF0YSYpOwogICAgIH07CiAKLSAgICBKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb24o
RXhlY1N0YXRlKiwgY29uc3QgQXJnTGlzdCYsIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9uTmFt
ZSwgY29uc3QgVVN0cmluZyYgc291cmNlVVJMLCBpbnQgbGluZU51bWJlcik7CisgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSosIGNvbnN0
IEFyZ0xpc3QmLCBjb25zdCBJZGVudGlmaWVyJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFVTdHJpbmcm
IHNvdXJjZVVSTCwgaW50IGxpbmVOdW1iZXIpOwogICAgIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5j
dGlvbihFeGVjU3RhdGUqLCBjb25zdCBBcmdMaXN0Jik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmgJKHJl
dmlzaW9uIDgyMDEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJp
bmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDggKzczLDggQEAKICAgICBwcml2YXRlOgogICAg
ICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc2luZ2xlQ2hhcmFjdGVyU3RyaW5nQ291bnQgPSBt
YXhTaW5nbGVDaGFyYWN0ZXJTdHJpbmcgKyAxOwogCi0gICAgICAgIHZvaWQgY3JlYXRlRW1wdHlT
dHJpbmcoSlNHbG9iYWxEYXRhKik7Ci0gICAgICAgIHZvaWQgY3JlYXRlU2luZ2xlQ2hhcmFjdGVy
U3RyaW5nKEpTR2xvYmFsRGF0YSosIHVuc2lnbmVkIGNoYXIpOworICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSB2b2lkIGNyZWF0ZUVtcHR5U3RyaW5nKEpTR2xvYmFsRGF0YSopOworICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSB2b2lkIGNyZWF0ZVNpbmdsZUNoYXJhY3RlclN0cmluZyhKU0dsb2Jh
bERhdGEqLCB1bnNpZ25lZCBjaGFyKTsKIAogICAgICAgICBKU1N0cmluZyogbV9lbXB0eVN0cmlu
ZzsKICAgICAgICAgSlNTdHJpbmcqIG1fc2luZ2xlQ2hhcmFjdGVyU3RyaW5nc1tzaW5nbGVDaGFy
YWN0ZXJTdHJpbmdDb3VudF07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm9wZXJ0eU5hbWVBcnJheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmgJKHJldmlzaW9uIDgyMDEwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuaAkod29ya2luZyBjb3B5KQpA
QCAtNjgsOCArNjgsOCBAQAogCiAgICAgICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSgpIHsg
cmV0dXJuIG1fZ2xvYmFsRGF0YTsgfQogCi0gICAgICAgIHZvaWQgYWRkKGNvbnN0IElkZW50aWZp
ZXImIGlkZW50aWZpZXIpIHsgYWRkKGlkZW50aWZpZXIuaW1wbCgpKTsgfQotICAgICAgICB2b2lk
IGFkZChTdHJpbmdJbXBsKik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgYWRkKGNv
bnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpIHsgYWRkKGlkZW50aWZpZXIuaW1wbCgpKTsgfQor
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGFkZChTdHJpbmdJbXBsKik7CiAgICAgICAg
IHZvaWQgYWRkS25vd25VbmlxdWUoU3RyaW5nSW1wbCogaWRlbnRpZmllcikgeyBtX2RhdGEtPnBy
b3BlcnR5TmFtZVZlY3RvcigpLmFwcGVuZChJZGVudGlmaWVyKG1fZ2xvYmFsRGF0YSwgaWRlbnRp
ZmllcikpOyB9CiAKICAgICAgICAgSWRlbnRpZmllciYgb3BlcmF0b3JbXSh1bnNpZ25lZCBpKSB7
IHJldHVybiBtX2RhdGEtPnByb3BlcnR5TmFtZVZlY3RvcigpW2ldOyB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgJKHJldmlzaW9uIDgyMDEwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTIgKzQ1
LDEyIEBACiAgICAgSlNPYmplY3QqIGNyZWF0ZVR5cGVFcnJvcihKU0dsb2JhbE9iamVjdCosIGNv
bnN0IFVTdHJpbmcmKTsKICAgICBKU09iamVjdCogY3JlYXRlVVJJRXJyb3IoSlNHbG9iYWxPYmpl
Y3QqLCBjb25zdCBVU3RyaW5nJik7CiAgICAgLy8gRXhlY1N0YXRlIHdyYXBwZXJzLgotICAgIEpT
T2JqZWN0KiBjcmVhdGVFcnJvcihFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJik7CisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIGNyZWF0ZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFVT
dHJpbmcmKTsKICAgICBKU09iamVjdCogY3JlYXRlRXZhbEVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0
IFVTdHJpbmcmKTsKLSAgICBKU09iamVjdCogY3JlYXRlUmFuZ2VFcnJvcihFeGVjU3RhdGUqLCBj
b25zdCBVU3RyaW5nJik7Ci0gICAgSlNPYmplY3QqIGNyZWF0ZVJlZmVyZW5jZUVycm9yKEV4ZWNT
dGF0ZSosIGNvbnN0IFVTdHJpbmcmKTsKLSAgICBKU09iamVjdCogY3JlYXRlU3ludGF4RXJyb3Io
RXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYpOwotICAgIEpTT2JqZWN0KiBjcmVhdGVUeXBlRXJy
b3IoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpT
T2JqZWN0KiBjcmVhdGVSYW5nZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmKTsKKyAg
ICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogY3JlYXRlUmVmZXJlbmNlRXJyb3IoRXhlY1N0
YXRlKiwgY29uc3QgVVN0cmluZyYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBj
cmVhdGVTeW50YXhFcnJvcihFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJik7CisgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgSlNPYmplY3QqIGNyZWF0ZVR5cGVFcnJvcihFeGVjU3RhdGUqLCBjb25zdCBV
U3RyaW5nJik7CiAgICAgSlNPYmplY3QqIGNyZWF0ZVVSSUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0
IFVTdHJpbmcmKTsKIAogICAgIC8vIE1ldGhvZHMgdG8gYWRkIApAQCAtNjAsMTIgKzYwLDEyIEBA
CiAgICAgSlNPYmplY3QqIGFkZEVycm9ySW5mbyhFeGVjU3RhdGUqLCBKU09iamVjdCogZXJyb3Is
IGludCBsaW5lLCBjb25zdCBTb3VyY2VDb2RlJik7CiAKICAgICAvLyBNZXRob2RzIHRvIHRocm93
IEVycm9ycy4KLSAgICBKU1ZhbHVlIHRocm93RXJyb3IoRXhlY1N0YXRlKiwgSlNWYWx1ZSk7Ci0g
ICAgSlNPYmplY3QqIHRocm93RXJyb3IoRXhlY1N0YXRlKiwgSlNPYmplY3QqKTsKKyAgICBKU19F
WFBPUlRfUFJJVkFURSBKU1ZhbHVlIHRocm93RXJyb3IoRXhlY1N0YXRlKiwgSlNWYWx1ZSk7Cisg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93RXJyb3IoRXhlY1N0YXRlKiwgSlNP
YmplY3QqKTsKIAogICAgIC8vIENvbnZlbmllbmNlIHdyYXBwZXJzLCBjcmVhdGUgYW4gdGhyb3cg
YW4gZXhjZXB0aW9uIHdpdGggYSBkZWZhdWx0IG1lc3NhZ2UuCi0gICAgSlNPYmplY3QqIHRocm93
VHlwZUVycm9yKEV4ZWNTdGF0ZSopOwotICAgIEpTT2JqZWN0KiB0aHJvd1N5bnRheEVycm9yKEV4
ZWNTdGF0ZSopOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd1R5cGVFcnJv
cihFeGVjU3RhdGUqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogdGhyb3dTeW50
YXhFcnJvcihFeGVjU3RhdGUqKTsKIAogICAgIC8vIENvbnZlbmllbmNlIHdyYXBwZXJzLCB3cmFw
IHJlc3VsdCBhcyBhbiBFbmNvZGVkSlNWYWx1ZS4KICAgICBpbmxpbmUgRW5jb2RlZEpTVmFsdWUg
dGhyb3dWTUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBlcnJvcikgeyByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93RXJyb3IoZXhlYywgZXJyb3IpKTsgfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuaAkocmV2aXNpb24gODIwMTApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDI0
ICszMCwyNCBAQAogY2xhc3MgVVN0cmluZyB7CiBwdWJsaWM6CiAgICAgLy8gQ29uc3RydWN0IGEg
bnVsbCBzdHJpbmcsIGRpc3Rpbmd1aXNoYWJsZSBmcm9tIGFuIGVtcHR5IHN0cmluZy4KLSAgICBV
U3RyaW5nKCkgeyB9CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgVVN0cmluZygpIHsgfQogCiAgICAg
Ly8gQ29uc3RydWN0IGEgc3RyaW5nIHdpdGggVVRGLTE2IGRhdGEuCi0gICAgVVN0cmluZyhjb25z
dCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSBVU3RyaW5nKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpOwog
CiAgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdpdGggVVRGLTE2IGRhdGEsIGZyb20gYSBudWxs
LXRlcm1pbmF0ZWQgc291cmNlLgotICAgIFVTdHJpbmcoY29uc3QgVUNoYXIqKTsKKyAgICBKU19F
WFBPUlRfUFJJVkFURSBVU3RyaW5nKGNvbnN0IFVDaGFyKik7CiAKICAgICAvLyBDb25zdHJ1Y3Qg
YSBzdHJpbmcgd2l0aCBsYXRpbjEgZGF0YS4KLSAgICBVU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJh
Y3RlcnMsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgVVN0cmluZyhj
b25zdCBjaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpOwogCiAgICAgLy8gQ29uc3Ry
dWN0IGEgc3RyaW5nIHdpdGggbGF0aW4xIGRhdGEsIGZyb20gYSBudWxsLXRlcm1pbmF0ZWQgc291
cmNlLgotICAgIFVTdHJpbmcoY29uc3QgY2hhciogY2hhcmFjdGVycyk7CisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgVVN0cmluZyhjb25zdCBjaGFyKiBjaGFyYWN0ZXJzKTsKIAogICAgIC8vIENvbnN0
cnVjdCBhIHN0cmluZyByZWZlcmVuY2luZyBhbiBleGlzdGluZyBTdHJpbmdJbXBsLgotICAgIFVT
dHJpbmcoU3RyaW5nSW1wbCogaW1wbCkgOiBtX2ltcGwoaW1wbCkgeyB9Ci0gICAgVVN0cmluZyhQ
YXNzUmVmUHRyPFN0cmluZ0ltcGw+IGltcGwpIDogbV9pbXBsKGltcGwpIHsgfQotICAgIFVTdHJp
bmcoUmVmUHRyPFN0cmluZ0ltcGw+IGltcGwpIDogbV9pbXBsKGltcGwpIHsgfQorICAgIEpTX0VY
UE9SVF9QUklWQVRFIFVTdHJpbmcoU3RyaW5nSW1wbCogaW1wbCkgOiBtX2ltcGwoaW1wbCkgeyB9
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgVVN0cmluZyhQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGlt
cGwpIDogbV9pbXBsKGltcGwpIHsgfQorICAgIEpTX0VYUE9SVF9QUklWQVRFIFVTdHJpbmcoUmVm
UHRyPFN0cmluZ0ltcGw+IGltcGwpIDogbV9pbXBsKGltcGwpIHsgfQogCiAgICAgLy8gSW5saW5l
IHRoZSBkZXN0cnVjdG9yLgogICAgIEFMV0FZU19JTkxJTkUgflVTdHJpbmcoKSB7IH0KQEAgLTc2
LDkgKzc2LDkgQEAKICAgICAgICAgcmV0dXJuIG1faW1wbC0+Y2hhcmFjdGVycygpOwogICAgIH0K
IAotICAgIENTdHJpbmcgYXNjaWkoKSBjb25zdDsKLSAgICBDU3RyaW5nIGxhdGluMSgpIGNvbnN0
OwotICAgIENTdHJpbmcgdXRmOChib29sIHN0cmljdCA9IGZhbHNlKSBjb25zdDsKKyAgICBKU19F
WFBPUlRfUFJJVkFURSBDU3RyaW5nIGFzY2lpKCkgY29uc3Q7CisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgQ1N0cmluZyBsYXRpbjEoKSBjb25zdDsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBDU3RyaW5n
IHV0ZjgoYm9vbCBzdHJpY3QgPSBmYWxzZSkgY29uc3Q7CiAKICAgICBVQ2hhciBvcGVyYXRvcltd
KHVuc2lnbmVkIGluZGV4KSBjb25zdAogICAgIHsKQEAgLTg3LDExICs4NywxMSBAQAogICAgICAg
ICByZXR1cm4gbV9pbXBsLT5jaGFyYWN0ZXJzKClbaW5kZXhdOwogICAgIH0KIAotICAgIHN0YXRp
YyBVU3RyaW5nIG51bWJlcihpbnQpOwotICAgIHN0YXRpYyBVU3RyaW5nIG51bWJlcih1bnNpZ25l
ZCk7Ci0gICAgc3RhdGljIFVTdHJpbmcgbnVtYmVyKGxvbmcpOwotICAgIHN0YXRpYyBVU3RyaW5n
IG51bWJlcihsb25nIGxvbmcpOwotICAgIHN0YXRpYyBVU3RyaW5nIG51bWJlcihkb3VibGUpOwor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBVU3RyaW5nIG51bWJlcihpbnQpOworICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBVU3RyaW5nIG51bWJlcih1bnNpZ25lZCk7CisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIFVTdHJpbmcgbnVtYmVyKGxvbmcpOworICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBVU3RyaW5nIG51bWJlcihsb25nIGxvbmcpOworICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBVU3RyaW5nIG51bWJlcihkb3VibGUpOwogCiAgICAgLy8gRmluZCBh
IHNpbmdsZSBjaGFyYWN0ZXIgb3Igc3RyaW5nLCBhbHNvIHdpdGggbWF0Y2ggZnVuY3Rpb24gJiBs
YXRpbjEgZm9ybXMuCiAgICAgc2l6ZV90IGZpbmQoVUNoYXIgYywgdW5zaWduZWQgc3RhcnQgPSAw
KSBjb25zdApAQCAtMTA3LDcgKzEwNyw3IEBACiAgICAgc2l6ZV90IHJldmVyc2VGaW5kKGNvbnN0
IFVTdHJpbmcmIHN0ciwgdW5zaWduZWQgc3RhcnQgPSBVSU5UX01BWCkgY29uc3QKICAgICAgICAg
eyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5yZXZlcnNlRmluZChzdHIuaW1wbCgpLCBzdGFydCkg
OiBub3RGb3VuZDsgfQogCi0gICAgVVN0cmluZyBzdWJzdHJpbmdTaGFyaW5nSW1wbCh1bnNpZ25l
ZCBwb3MsIHVuc2lnbmVkIGxlbiA9IFVJTlRfTUFYKSBjb25zdDsKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSBVU3RyaW5nIHN1YnN0cmluZ1NoYXJpbmdJbXBsKHVuc2lnbmVkIHBvcywgdW5zaWduZWQg
bGVuID0gVUlOVF9NQVgpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIFJlZlB0cjxTdHJpbmdJbXBs
PiBtX2ltcGw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFu
Y2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5z
dGFuY2UuaAkocmV2aXNpb24gODIwMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9EYXRlSW5zdGFuY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsOCArMzEsOCBAQAogCiAgICAg
Y2xhc3MgRGF0ZUluc3RhbmNlIDogcHVibGljIEpTV3JhcHBlck9iamVjdCB7CiAgICAgcHVibGlj
OgotICAgICAgICBEYXRlSW5zdGFuY2UoRXhlY1N0YXRlKiwgZG91YmxlKTsKLSAgICAgICAgRGF0
ZUluc3RhbmNlKEV4ZWNTdGF0ZSosIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIGRvdWJs
ZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIERhdGVJbnN0YW5jZShFeGVjU3RhdGUqLCBk
b3VibGUpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBEYXRlSW5zdGFuY2UoRXhlY1N0YXRl
KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgZG91YmxlKTsKICAgICAgICAgZXhwbGlj
aXQgRGF0ZUluc3RhbmNlKEV4ZWNTdGF0ZSosIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4p
OwogCiAgICAgICAgIGRvdWJsZSBpbnRlcm5hbE51bWJlcigpIGNvbnN0IHsgcmV0dXJuIGludGVy
bmFsVmFsdWUoKS51bmNoZWNrZWRHZXROdW1iZXIoKTsgfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUm9wZUltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Sb3BlSW1wbC5oCShyZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JvcGVJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTgzLDcgKzgz
LDcgQEAKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBkZXN0cnVjdE5vblJlY3Vyc2l2ZSgpOwor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZGVzdHJ1Y3ROb25SZWN1cnNpdmUoKTsKICAgICB2
b2lkIGRlcmVmRmliZXJzTm9uUmVjdXJzaXZlKFZlY3RvcjxSb3BlSW1wbCosIDMyPiYgd29ya1F1
ZXVlKTsKIAogICAgIGJvb2wgaGFzT25lUmVmKCkgeyByZXR1cm4gKG1fcmVmQ291bnRBbmRGbGFn
cyAmIHNfcmVmQ291bnRNYXNrKSA9PSBzX3JlZkNvdW50SW5jcmVtZW50OyB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAkocmV2aXNpb24gODIw
MTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAkod29y
a2luZyBjb3B5KQpAQCAtMTEzLDcgKzExMyw3IEBACiAgICAgICAgIC8vIHRoZSBvcmlnaW5hbCBB
UEkuCiAgICAgICAgIGVudW0gR2xvYmFsRGF0YVR5cGUgeyBEZWZhdWx0LCBBUElDb250ZXh0R3Jv
dXAsIEFQSVNoYXJlZCB9OwogCi0gICAgICAgIHN0cnVjdCBDbGllbnREYXRhIHsKKyAgICAgICAg
c3RydWN0IEpTX0VYUE9SVF9QUklWQVRFIENsaWVudERhdGEgewogICAgICAgICAgICAgdmlydHVh
bCB+Q2xpZW50RGF0YSgpID0gMDsKICAgICAgICAgfTsKIApAQCAtMTIyLDEwICsxMjIsMTAgQEAK
ICAgICAgICAgc3RhdGljIGJvb2wgc2hhcmVkSW5zdGFuY2VFeGlzdHMoKTsKICAgICAgICAgc3Rh
dGljIEpTR2xvYmFsRGF0YSYgc2hhcmVkSW5zdGFuY2UoKTsKIAotICAgICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxKU0dsb2JhbERhdGE+IGNyZWF0ZShUaHJlYWRTdGFja1R5cGUpOwotICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxKU0dsb2JhbERhdGE+IGNyZWF0ZUxlYWtlZChUaHJlYWRTdGFja1R5
cGUpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxKU0dsb2Jh
bERhdGE+IGNyZWF0ZShUaHJlYWRTdGFja1R5cGUpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgUGFzc1JlZlB0cjxKU0dsb2JhbERhdGE+IGNyZWF0ZUxlYWtlZChUaHJlYWRTdGFj
a1R5cGUpOwogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxKU0dsb2JhbERhdGE+IGNyZWF0ZUNv
bnRleHRHcm91cChUaHJlYWRTdGFja1R5cGUpOwotICAgICAgICB+SlNHbG9iYWxEYXRhKCk7Cisg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIH5KU0dsb2JhbERhdGEoKTsKIAogI2lmIEVOQUJMRShK
U0NfTVVMVElQTEVfVEhSRUFEUykKICAgICAgICAgLy8gV2lsbCBzdGFydCB0cmFja2luZyB0aHJl
YWRzIHRoYXQgdXNlIHRoZSBoZWFwLCB3aGljaCBpcyByZXNvdXJjZS1oZWF2eS4KQEAgLTI0OCw5
ICsyNDgsOSBAQAogCiAgICAgICAgIHZvaWQgcmVzZXREYXRlQ2FjaGUoKTsKIAotICAgICAgICB2
b2lkIHN0YXJ0U2FtcGxpbmcoKTsKLSAgICAgICAgdm9pZCBzdG9wU2FtcGxpbmcoKTsKLSAgICAg
ICAgdm9pZCBkdW1wU2FtcGxlRGF0YShFeGVjU3RhdGUqIGV4ZWMpOworICAgICAgICBKU19FWFBP
UlRfUFJJVkFURSB2b2lkIHN0YXJ0U2FtcGxpbmcoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgdm9pZCBzdG9wU2FtcGxpbmcoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBk
dW1wU2FtcGxlRGF0YShFeGVjU3RhdGUqIGV4ZWMpOwogICAgICAgICB2b2lkIHJlY29tcGlsZUFs
bEpTRnVuY3Rpb25zKCk7CiAgICAgICAgIFJlZ0V4cENhY2hlKiByZWdFeHBDYWNoZSgpIHsgcmV0
dXJuIG1fcmVnRXhwQ2FjaGU7IH0KICNpZiBFTkFCTEUoUkVHRVhQX1RSQUNJTkcpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UaW1lb3V0Q2hlY2tlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RpbWVvdXRDaGVja2VyLmgJKHJldmlz
aW9uIDgyMDEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGltZW91dENoZWNr
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTcsOSArNTcsOSBAQAogICAgICAgICAgICAgLS1tX3N0
YXJ0Q291bnQ7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIHJlc2V0KCk7CisgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIHZvaWQgcmVzZXQoKTsKIAotICAgICAgICBib29sIGRpZFRpbWVPdXQo
RXhlY1N0YXRlKik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgZGlkVGltZU91dChF
eGVjU3RhdGUqKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHVuc2lnbmVkIG1fdGltZW91dElu
dGVydmFsOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGVhcC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hlYXAuaAkocmV2aXNpb24g
ODIwMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IZWFwLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTYzLDI4ICs2MywyOCBAQAogICAgICAgICAKICAgICAgICAgSGVhcChKU0dsb2Jh
bERhdGEqKTsKICAgICAgICAgfkhlYXAoKTsKLSAgICAgICAgdm9pZCBkZXN0cm95KCk7IC8vIEpT
R2xvYmFsRGF0YSBtdXN0IGNhbGwgZGVzdHJveSgpIGJlZm9yZSB+SGVhcCgpLgorICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSB2b2lkIGRlc3Ryb3koKTsgLy8gSlNHbG9iYWxEYXRhIG11c3QgY2Fs
bCBkZXN0cm95KCkgYmVmb3JlIH5IZWFwKCkuCiAKICAgICAgICAgSlNHbG9iYWxEYXRhKiBnbG9i
YWxEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxEYXRhOyB9CiAgICAgICAgIE1hcmtlZFNw
YWNlJiBtYXJrZWRTcGFjZSgpIHsgcmV0dXJuIG1fbWFya2VkU3BhY2U7IH0KICAgICAgICAgTWFj
aGluZVRocmVhZHMmIG1hY2hpbmVUaHJlYWRzKCkgeyByZXR1cm4gbV9tYWNoaW5lVGhyZWFkczsg
fQogCi0gICAgICAgIEdDQWN0aXZpdHlDYWxsYmFjayogYWN0aXZpdHlDYWxsYmFjaygpOworICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSBHQ0FjdGl2aXR5Q2FsbGJhY2sqIGFjdGl2aXR5Q2FsbGJh
Y2soKTsKICAgICAgICAgdm9pZCBzZXRBY3Rpdml0eUNhbGxiYWNrKFBhc3NPd25QdHI8R0NBY3Rp
dml0eUNhbGxiYWNrPik7CiAKLSAgICAgICAgYm9vbCBpc0J1c3koKTsgLy8gdHJ1ZSBpZiBhbiBh
bGxvY2F0aW9uIG9yIGNvbGxlY3Rpb24gaXMgaW4gcHJvZ3Jlc3MKLSAgICAgICAgdm9pZCogYWxs
b2NhdGUoc2l6ZV90KTsKLSAgICAgICAgdm9pZCBjb2xsZWN0QWxsR2FyYmFnZSgpOworICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSBib29sIGlzQnVzeSgpOyAvLyB0cnVlIGlmIGFuIGFsbG9jYXRp
b24gb3IgY29sbGVjdGlvbiBpcyBpbiBwcm9ncmVzcworICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSB2b2lkKiBhbGxvY2F0ZShzaXplX3QpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lk
IGNvbGxlY3RBbGxHYXJiYWdlKCk7CiAKLSAgICAgICAgdm9pZCByZXBvcnRFeHRyYU1lbW9yeUNv
c3Qoc2l6ZV90IGNvc3QpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHJlcG9ydEV4
dHJhTWVtb3J5Q29zdChzaXplX3QgY29zdCk7CiAKLSAgICAgICAgdm9pZCBwcm90ZWN0KEpTVmFs
dWUpOwotICAgICAgICBib29sIHVucHJvdGVjdChKU1ZhbHVlKTsgLy8gVHJ1ZSB3aGVuIHRoZSBw
cm90ZWN0IGNvdW50IGRyb3BzIHRvIDAuCisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQg
cHJvdGVjdChKU1ZhbHVlKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCB1bnByb3Rl
Y3QoSlNWYWx1ZSk7IC8vIFRydWUgd2hlbiB0aGUgcHJvdGVjdCBjb3VudCBkcm9wcyB0byAwLgog
CiAgICAgICAgIGJvb2wgY29udGFpbnModm9pZCopOwogCi0gICAgICAgIHNpemVfdCBzaXplKCkg
Y29uc3Q7Ci0gICAgICAgIHNpemVfdCBjYXBhY2l0eSgpIGNvbnN0OworICAgICAgICBKU19FWFBP
UlRfUFJJVkFURSBzaXplX3Qgc2l6ZSgpIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzaXplX3QgY2FwYWNpdHkoKSBjb25zdDsKICAgICAgICAgc2l6ZV90IG9iamVjdENvdW50KCkg
Y29uc3Q7CiAgICAgICAgIHNpemVfdCBnbG9iYWxPYmplY3RDb3VudCgpOwogICAgICAgICBzaXpl
X3QgcHJvdGVjdGVkT2JqZWN0Q291bnQoKTsKQEAgLTExMCw4ICsxMTAsOCBAQAogICAgICAgICBz
dGF0aWMgY29uc3Qgc2l6ZV90IG1pbkV4dHJhQ29zdCA9IDI1NjsKICAgICAgICAgc3RhdGljIGNv
bnN0IHNpemVfdCBtYXhFeHRyYUNvc3QgPSAxMDI0ICogMTAyNDsKIAotICAgICAgICB2b2lkKiBh
bGxvY2F0ZVNsb3dDYXNlKHNpemVfdCk7Ci0gICAgICAgIHZvaWQgcmVwb3J0RXh0cmFNZW1vcnlD
b3N0U2xvd0Nhc2Uoc2l6ZV90KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCogYWxs
b2NhdGVTbG93Q2FzZShzaXplX3QpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHJl
cG9ydEV4dHJhTWVtb3J5Q29zdFNsb3dDYXNlKHNpemVfdCk7CiAKICAgICAgICAgdm9pZCBtYXJr
Um9vdHMoKTsKICAgICAgICAgdm9pZCBtYXJrUHJvdGVjdGVkT2JqZWN0cyhIZWFwUm9vdE1hcmtl
ciYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oCShyZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAKIAogICAg
IHR5cGVkZWYgVmVjdG9yPEV4ZWNTdGF0ZSosIDE2PiBFeGVjU3RhdGVTdGFjazsKICAgICAKLSAg
ICBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1ZhcmlhYmxlT2JqZWN0IHsKKyAgICBj
bGFzcyBKU19FWFBPUlRfUFJJVkFURSBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1ZhcmlhYmxl
T2JqZWN0IHsKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHR5cGVkZWYgSGFzaFNldDxSZWZQdHI8
T3BhcXVlSlNXZWFrT2JqZWN0TWFwPiA+IFdlYWtNYXBTZXQ7CiAKQEAgLTQzNCw3ICs0MzQsNyBA
QAogICAgIGNsYXNzIER5bmFtaWNHbG9iYWxPYmplY3RTY29wZSB7CiAgICAgICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKER5bmFtaWNHbG9iYWxPYmplY3RTY29wZSk7CiAgICAgcHVibGljOgotICAg
ICAgICBEeW5hbWljR2xvYmFsT2JqZWN0U2NvcGUoSlNHbG9iYWxEYXRhJiwgSlNHbG9iYWxPYmpl
Y3QqKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgRHluYW1pY0dsb2JhbE9iamVjdFNjb3Bl
KEpTR2xvYmFsRGF0YSYsIEpTR2xvYmFsT2JqZWN0Kik7CiAKICAgICAgICAgfkR5bmFtaWNHbG9i
YWxPYmplY3RTY29wZSgpCiAgICAgICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0V2l0aEdsb2JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0V2l0aEdsb2JhbE9iamVjdC5oCShyZXZpc2lv
biA4MjAxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0V2l0aEds
b2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMCArMzksMTAgQEAKICAgICAgICAg
cmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvLCBUeXBlSW5mbyhPYmpl
Y3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7CiAg
ICAgfQogCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCgpIGNvbnN0OworICAgIEpT
X0VYUE9SVF9QUklWQVRFIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoKSBjb25zdDsKIAog
cHJvdGVjdGVkOgotICAgIEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdChKU0dsb2JhbE9iamVjdCos
IE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4pOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpT
T2JqZWN0V2l0aEdsb2JhbE9iamVjdChKU0dsb2JhbE9iamVjdCosIE5vbk51bGxQYXNzUmVmUHRy
PFN0cnVjdHVyZT4pOwogCiAgICAgSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0KE5vbk51bGxQYXNz
UmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlKQogICAgICAgICA6IEpTTm9uRmluYWxPYmplY3Qo
c3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaAko
cmV2aXNpb24gODIwMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTgwLDEwICs4MCwxMCBAQAogI2VuZGlmCiAgICAgfTsKIAot
ICAgIGRvdWJsZSBub25JbmxpbmVOYU4oKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBkb3VibGUg
bm9uSW5saW5lTmFOKCk7CiAKICAgICAvLyBUaGlzIGltcGxlbWVudHMgVG9JbnQzMiwgZGVmaW5l
ZCBpbiBFQ01BLTI2MiA5LjUuCi0gICAgaW50MzJfdCB0b0ludDMyKGRvdWJsZSk7CisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgaW50MzJfdCB0b0ludDMyKGRvdWJsZSk7CiAKICAgICAvLyBUaGlzIGlt
cGxlbWVudHMgVG9VSW50MzIsIGRlZmluZWQgaW4gRUNNQS0yNjIgOS42LgogICAgIGlubGluZSB1
aW50MzJfdCB0b1VJbnQzMihkb3VibGUgbnVtYmVyKQpAQCAtMTkxLDcgKzE5MSw3IEBACiAgICAg
ICAgIEpTT2JqZWN0KiB0b09iamVjdChFeGVjU3RhdGUqKSBjb25zdDsKIAogICAgICAgICAvLyBJ
bnRlZ2VyIGNvbnZlcnNpb25zLgotICAgICAgICBkb3VibGUgdG9JbnRlZ2VyKEV4ZWNTdGF0ZSop
IGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBkb3VibGUgdG9JbnRlZ2VyKEV4ZWNT
dGF0ZSopIGNvbnN0OwogICAgICAgICBkb3VibGUgdG9JbnRlZ2VyUHJlc2VydmVOYU4oRXhlY1N0
YXRlKikgY29uc3Q7CiAgICAgICAgIGludDMyX3QgdG9JbnQzMihFeGVjU3RhdGUqKSBjb25zdDsK
ICAgICAgICAgdWludDMyX3QgdG9VSW50MzIoRXhlY1N0YXRlKikgY29uc3Q7CkBAIC0yMzAsNyAr
MjMwLDcgQEAKIAogICAgICAgICBib29sIGlzQ2VsbCgpIGNvbnN0OwogICAgICAgICBKU0NlbGwq
IGFzQ2VsbCgpIGNvbnN0OwotICAgICAgICBib29sIGlzVmFsaWRDYWxsZWUoKTsKKyAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc1ZhbGlkQ2FsbGVlKCk7CiAKICNpZm5kZWYgTkRFQlVH
CiAgICAgICAgIGNoYXIqIGRlc2NyaXB0aW9uKCk7CkBAIC0yNDQsMTAgKzI0NCwxMCBAQAogICAg
ICAgICBKU1ZhbHVlKEhhc2hUYWJsZURlbGV0ZWRWYWx1ZVRhZyk7CiAKICAgICAgICAgaW5saW5l
IGNvbnN0IEpTVmFsdWUgYXNWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9Ci0gICAgICAg
IEpTT2JqZWN0KiB0b09iamVjdFNsb3dDYXNlKEV4ZWNTdGF0ZSopIGNvbnN0OwotICAgICAgICBK
U09iamVjdCogdG9UaGlzT2JqZWN0U2xvd0Nhc2UoRXhlY1N0YXRlKikgY29uc3Q7CisgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0b09iamVjdFNsb3dDYXNlKEV4ZWNTdGF0ZSop
IGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogdG9UaGlzT2JqZWN0
U2xvd0Nhc2UoRXhlY1N0YXRlKikgY29uc3Q7CiAKLSAgICAgICAgSlNPYmplY3QqIHN5bnRoZXNp
emVQcm90b3R5cGUoRXhlY1N0YXRlKikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IEpTT2JqZWN0KiBzeW50aGVzaXplUHJvdG90eXBlKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgICAg
ICBKU09iamVjdCogc3ludGhlc2l6ZU9iamVjdChFeGVjU3RhdGUqKSBjb25zdDsKIAogI2lmIFVT
RShKU1ZBTFVFMzJfNjQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9w
ZXJ0eURlc2NyaXB0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuaAkocmV2aXNpb24gODIwMTApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuaAkod29ya2luZyBjb3B5KQpA
QCAtNDYsOCArNDYsOCBAQAogICAgICAgICBKU1ZhbHVlIHZhbHVlKCkgY29uc3QgeyByZXR1cm4g
bV92YWx1ZTsgfQogICAgICAgICBKU1ZhbHVlIGdldHRlcigpIGNvbnN0OwogICAgICAgICBKU1Zh
bHVlIHNldHRlcigpIGNvbnN0OwotICAgICAgICB2b2lkIHNldFVuZGVmaW5lZCgpOwotICAgICAg
ICB2b2lkIHNldERlc2NyaXB0b3IoSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7
CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0VW5kZWZpbmVkKCk7CisgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0RGVzY3JpcHRvcihKU1ZhbHVlIHZhbHVlLCB1bnNp
Z25lZCBhdHRyaWJ1dGVzKTsKICAgICAgICAgdm9pZCBzZXRBY2Nlc3NvckRlc2NyaXB0b3IoSlNW
YWx1ZSBnZXR0ZXIsIEpTVmFsdWUgc2V0dGVyLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKICAgICAg
ICAgdm9pZCBzZXRXcml0YWJsZShib29sKTsKICAgICAgICAgdm9pZCBzZXRFbnVtZXJhYmxlKGJv
b2wpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXcmFwcGVyT2JqZWN0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXcmFwcGVy
T2JqZWN0LmgJKHJldmlzaW9uIDgyMDEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNXcmFwcGVyT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAog
ICAgIC8vIFRoaXMgY2xhc3MgaXMgdXNlZCBhcyBhIGJhc2UgZm9yIGNsYXNzZXMgc3VjaCBhcyBT
dHJpbmcsCiAgICAgLy8gTnVtYmVyLCBCb29sZWFuIGFuZCBEYXRlIHdoaWNoIGFyZSB3cmFwcGVy
cyBmb3IgcHJpbWl0aXZlIHR5cGVzLgotICAgIGNsYXNzIEpTV3JhcHBlck9iamVjdCA6IHB1Ymxp
YyBKU05vbkZpbmFsT2JqZWN0IHsKKyAgICBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBKU1dyYXBw
ZXJPYmplY3QgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgcHJvdGVjdGVkOgogICAg
ICAgICBleHBsaWNpdCBKU1dyYXBwZXJPYmplY3QoTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJl
Pik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhbGxEYXRhLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FsbERhdGEuaAkocmV2
aXNpb24gODIwMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWxsRGF0YS5o
CSh3b3JraW5nIGNvcHkpCkBAIC01Nyw3ICs1Nyw3IEBACiAgICAgICAgIH0ganM7CiAgICAgfTsK
IAotICAgIEpTVmFsdWUgY2FsbChFeGVjU3RhdGUqLCBKU1ZhbHVlIGZ1bmN0aW9uT2JqZWN0LCBD
YWxsVHlwZSwgY29uc3QgQ2FsbERhdGEmLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgQXJnTGlz
dCYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgY2FsbChFeGVjU3RhdGUqLCBKU1Zh
bHVlIGZ1bmN0aW9uT2JqZWN0LCBDYWxsVHlwZSwgY29uc3QgQ2FsbERhdGEmLCBKU1ZhbHVlIHRo
aXNWYWx1ZSwgY29uc3QgQXJnTGlzdCYpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaAkocmV2aXNpb24gODIw
MTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKICAgICBjbGFzcyBNYXJrU3RhY2s7CiAgICAgY2xh
c3MgU2NvcGVDaGFpbkl0ZXJhdG9yOwogICAgIAotICAgIGNsYXNzIFNjb3BlQ2hhaW5Ob2RlIDog
cHVibGljIEpTQ2VsbCB7CisgICAgY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgU2NvcGVDaGFpbk5v
ZGUgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFNjb3BlQ2hhaW5Ob2Rl
KFNjb3BlQ2hhaW5Ob2RlKiBuZXh0LCBKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbERhdGEqIGds
b2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBnbG9iYWxU
aGlzKQogICAgICAgICAgICAgOiBKU0NlbGwoZ2xvYmFsRGF0YS0+c2NvcGVDaGFpbk5vZGVTdHJ1
Y3R1cmUuZ2V0KCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zdHJ1
Y3REYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29u
c3RydWN0RGF0YS5oCShyZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbnN0cnVjdERhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsNyBAQAog
ICAgICAgICB9IGpzOwogICAgIH07CiAKLSAgICBKU09iamVjdCogY29uc3RydWN0KEV4ZWNTdGF0
ZSosIEpTVmFsdWUgY29uc3RydWN0b3IsIENvbnN0cnVjdFR5cGUsIGNvbnN0IENvbnN0cnVjdERh
dGEmLCBjb25zdCBBcmdMaXN0Jik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIGNv
bnN0cnVjdChFeGVjU3RhdGUqLCBKU1ZhbHVlIGNvbnN0cnVjdG9yLCBDb25zdHJ1Y3RUeXBlLCBj
b25zdCBDb25zdHJ1Y3REYXRhJiwgY29uc3QgQXJnTGlzdCYpOwogCiB9IC8vIG5hbWVzcGFjZSBK
U0MKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFya2VkU3BhY2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXJrZWRTcGFjZS5o
CShyZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcmtl
ZFNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw3ICsxMDUsNyBAQAogICAgICAgICB2b2lk
IGZyZWVCbG9ja3MoRG91Ymx5TGlua2VkTGlzdDxNYXJrZWRCbG9jaz4mKTsKIAogICAgICAgICBT
aXplQ2xhc3MmIHNpemVDbGFzc0ZvcihzaXplX3QpOwotICAgICAgICB2b2lkKiBhbGxvY2F0ZUZy
b21TaXplQ2xhc3MoU2l6ZUNsYXNzJik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQq
IGFsbG9jYXRlRnJvbVNpemVDbGFzcyhTaXplQ2xhc3MmKTsKIAogICAgICAgICB2b2lkIGNsZWFy
TWFya3MoTWFya2VkQmxvY2sqKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW5pdGlhbGl6ZVRocmVhZGluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuaAkocmV2aXNpb24gODIwMTApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAKIAogICAgIC8vIFRoaXMgZnVuY3Rpb24gbXVzdCBi
ZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQuIEl0IGlzIHNhZmUgdG8gY2FsbCBpdCByZXBl
YXRlZGx5LgogICAgIC8vIERhcndpbiBpcyBhbiBleGNlcHRpb24gdG8gdGhpcyBydWxlOiBpdCBp
cyBPSyB0byBjYWxsIHRoaXMgZnVuY3Rpb24gZnJvbSBhbnkgdGhyZWFkLCBldmVuIHJlZW50cmFu
dGx5LgotICAgIHZvaWQgaW5pdGlhbGl6ZVRocmVhZGluZygpOworICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQgaW5pdGlhbGl6ZVRocmVhZGluZygpOwogCiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJ
KHJldmlzaW9uIDgyMDEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC04OSw3ICs4OSw3IEBACiAgICAg
ICAgIHR5cGVkZWYgRGVjbGFyYXRpb25TdGFja3M6OlZhclN0YWNrIFZhclN0YWNrOwogICAgICAg
ICB0eXBlZGVmIERlY2xhcmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNrIEZ1bmN0aW9uU3RhY2s7
CiAKLSAgICAgICAgc3RhdGljIHZvaWQgc2V0RHVtcHNHZW5lcmF0ZWRDb2RlKGJvb2wgZHVtcHNH
ZW5lcmF0ZWRDb2RlKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgc2V0
RHVtcHNHZW5lcmF0ZWRDb2RlKGJvb2wgZHVtcHNHZW5lcmF0ZWRDb2RlKTsKICAgICAgICAgc3Rh
dGljIGJvb2wgZHVtcHNHZW5lcmF0ZWRDb2RlKCk7CiAKICAgICAgICAgQnl0ZWNvZGVHZW5lcmF0
b3IoUHJvZ3JhbU5vZGUqLCBTY29wZUNoYWluTm9kZSosIFN5bWJvbFRhYmxlKiwgUHJvZ3JhbUNv
ZGVCbG9jayopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9SZWZDb3VudGVkTGVh
a0NvdW50ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1JlZkNv
dW50ZWRMZWFrQ291bnRlci5oCShyZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcg
KzI2LDcgQEAKIAogbmFtZXNwYWNlIFdURiB7CiAgICAgCi0gICAgc3RydWN0IFJlZkNvdW50ZWRM
ZWFrQ291bnRlciB7CisgICAgc3RydWN0IFdURl9FWFBPUlRfUFJJVkFURSBSZWZDb3VudGVkTGVh
a0NvdW50ZXIgewogICAgICAgICBzdGF0aWMgdm9pZCBzdXBwcmVzc01lc3NhZ2VzKGNvbnN0IGNo
YXIqKTsKICAgICAgICAgc3RhdGljIHZvaWQgY2FuY2VsTWVzc2FnZVN1cHByZXNzaW9uKGNvbnN0
IGNoYXIqKTsKICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL051bGxQ
dHIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL051bGxQdHIuaAko
cmV2aXNpb24gODIwMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL051bGxQdHIuaAko
d29ya2luZyBjb3B5KQpAQCAtNDIsMTAgKzQyLDEwIEBACiAjZWxzZQogCiBuYW1lc3BhY2Ugc3Rk
IHsKLSAgICBjbGFzcyBudWxscHRyX3QgeyB9OworICAgIGNsYXNzIFdURl9FWFBPUlRfUFJJVkFU
RSBudWxscHRyX3QgeyB9OwogfQogCi1leHRlcm4gc3RkOjpudWxscHRyX3QgbnVsbHB0cjsKK2V4
dGVybiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpudWxscHRyX3QgbnVsbHB0cjsKIAogI2VuZGlm
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmcuaAkocmV2aXNpb24gODIw
MTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZy5oCSh3b3JraW5nIGNv
cHkpCkBAIC04NCwyNyArODQsMjcgQEAKIC8vIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQg
ZnJvbSB0aGUgbWFpbiB0aHJlYWQuIEl0IGlzIHNhZmUgdG8gY2FsbCBpdCByZXBlYXRlZGx5Lgog
Ly8gRGFyd2luIGlzIGFuIGV4Y2VwdGlvbiB0byB0aGlzIHJ1bGU6IGl0IGlzIE9LIHRvIGNhbGwg
aXQgZnJvbSBhbnkgdGhyZWFkLCB0aGUgb25seSAKIC8vIHJlcXVpcmVtZW50IGlzIHRoYXQgdGhl
IGNhbGxzIGFyZSBub3QgcmVlbnRyYW50Lgotdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nKCk7CitX
VEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nKCk7CiAKIC8vIFJldHVy
bnMgMCBpZiB0aHJlYWQgY3JlYXRpb24gZmFpbGVkLgogLy8gVGhlIHRocmVhZCBuYW1lIG11c3Qg
YmUgYSBsaXRlcmFsIHNpbmNlIG9uIHNvbWUgcGxhdGZvcm1zIGl0J3MgcGFzc2VkIGluIHRvIHRo
ZSB0aHJlYWQuCi1UaHJlYWRJZGVudGlmaWVyIGNyZWF0ZVRocmVhZChUaHJlYWRGdW5jdGlvbiwg
dm9pZCosIGNvbnN0IGNoYXIqIHRocmVhZE5hbWUpOworV1RGX0VYUE9SVF9QUklWQVRFIFRocmVh
ZElkZW50aWZpZXIgY3JlYXRlVGhyZWFkKFRocmVhZEZ1bmN0aW9uLCB2b2lkKiwgY29uc3QgY2hh
ciogdGhyZWFkTmFtZSk7CiAKIC8vIEludGVybmFsIHBsYXRmb3JtLXNwZWNpZmljIGNyZWF0ZVRo
cmVhZCBpbXBsZW1lbnRhdGlvbi4KLVRocmVhZElkZW50aWZpZXIgY3JlYXRlVGhyZWFkSW50ZXJu
YWwoVGhyZWFkRnVuY3Rpb24sIHZvaWQqLCBjb25zdCBjaGFyKiB0aHJlYWROYW1lKTsKK1dURl9F
WFBPUlRfUFJJVkFURSBUaHJlYWRJZGVudGlmaWVyIGNyZWF0ZVRocmVhZEludGVybmFsKFRocmVh
ZEZ1bmN0aW9uLCB2b2lkKiwgY29uc3QgY2hhciogdGhyZWFkTmFtZSk7CiAKIC8vIENhbGxlZCBp
biB0aGUgdGhyZWFkIGR1cmluZyBpbml0aWFsaXphdGlvbi4KIC8vIEhlbHBmdWwgZm9yIHBsYXRm
b3JtcyB3aGVyZSB0aGUgdGhyZWFkIG5hbWUgbXVzdCBiZSBzZXQgZnJvbSB3aXRoaW4gdGhlIHRo
cmVhZC4KIHZvaWQgaW5pdGlhbGl6ZUN1cnJlbnRUaHJlYWRJbnRlcm5hbChjb25zdCBjaGFyKiB0
aHJlYWROYW1lKTsKIAotVGhyZWFkSWRlbnRpZmllciBjdXJyZW50VGhyZWFkKCk7Ci1pbnQgd2Fp
dEZvclRocmVhZENvbXBsZXRpb24oVGhyZWFkSWRlbnRpZmllciwgdm9pZCoqKTsKLXZvaWQgZGV0
YWNoVGhyZWFkKFRocmVhZElkZW50aWZpZXIpOworV1RGX0VYUE9SVF9QUklWQVRFIFRocmVhZElk
ZW50aWZpZXIgY3VycmVudFRocmVhZCgpOworV1RGX0VYUE9SVF9QUklWQVRFIGludCB3YWl0Rm9y
VGhyZWFkQ29tcGxldGlvbihUaHJlYWRJZGVudGlmaWVyLCB2b2lkKiopOworV1RGX0VYUE9SVF9Q
UklWQVRFIHZvaWQgZGV0YWNoVGhyZWFkKFRocmVhZElkZW50aWZpZXIpOwogCi12b2lkIHlpZWxk
KCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCB5aWVsZCgpOwogCi12b2lkIGxvY2tBdG9taWNh
bGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleCgpOwotdm9pZCB1bmxvY2tBdG9taWNhbGx5SW5pdGlh
bGl6ZWRTdGF0aWNNdXRleCgpOworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgbG9ja0F0b21pY2Fs
bHlJbml0aWFsaXplZFN0YXRpY011dGV4KCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCB1bmxv
Y2tBdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleCgpOwogCiB9IC8vIG5hbWVzcGFjZSBX
VEYKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9NYWluVGhyZWFkLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9NYWluVGhyZWFkLmgJKHJldmlzaW9u
IDgyMDEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9NYWluVGhyZWFkLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM4LDE1ICszOCwxNSBAQAogdHlwZWRlZiB2b2lkIE1haW5UaHJlYWRGdW5j
dGlvbih2b2lkKik7CiAKIC8vIE11c3QgYmUgY2FsbGVkIGZyb20gdGhlIG1haW4gdGhyZWFkLgot
dm9pZCBpbml0aWFsaXplTWFpblRocmVhZCgpOworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgaW5p
dGlhbGl6ZU1haW5UaHJlYWQoKTsKIAotdm9pZCBjYWxsT25NYWluVGhyZWFkKE1haW5UaHJlYWRG
dW5jdGlvbiosIHZvaWQqIGNvbnRleHQpOworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgY2FsbE9u
TWFpblRocmVhZChNYWluVGhyZWFkRnVuY3Rpb24qLCB2b2lkKiBjb250ZXh0KTsKIHZvaWQgY2Fs
bE9uTWFpblRocmVhZEFuZFdhaXQoTWFpblRocmVhZEZ1bmN0aW9uKiwgdm9pZCogY29udGV4dCk7
CiB2b2lkIGNhbmNlbENhbGxPbk1haW5UaHJlYWQoTWFpblRocmVhZEZ1bmN0aW9uKiwgdm9pZCog
Y29udGV4dCk7CiAKLXZvaWQgc2V0TWFpblRocmVhZENhbGxiYWNrc1BhdXNlZChib29sIHBhdXNl
ZCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRNYWluVGhyZWFkQ2FsbGJhY2tzUGF1c2Vk
KGJvb2wgcGF1c2VkKTsKIAotYm9vbCBpc01haW5UaHJlYWQoKTsKK1dURl9FWFBPUlRfUFJJVkFU
RSBib29sIGlzTWFpblRocmVhZCgpOwogCiAvLyBOT1RFOiB0aGVzZSBmdW5jdGlvbnMgYXJlIGlu
dGVybmFsIHRvIHRoZSBjYWxsT25NYWluVGhyZWFkIGltcGxlbWVudGF0aW9uLgogdm9pZCBpbml0
aWFsaXplTWFpblRocmVhZFBsYXRmb3JtKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL09TQWxsb2NhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi9PU0FsbG9jYXRvci5oCShyZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvT1NBbGxvY2F0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQAogICAg
IC8vIHJlbGVhc2VEZWNvbW1pdHRlZCBzaG91bGQgYmUgY2FsbGVkIG9uIGEgcmVnaW9uIG9mIFZN
IGFsbG9jYXRlZCBieSBhIHNpbmdsZSByZXNlcnZhdGlvbiwKICAgICAvLyB0aGUgbWVtb3J5IG11
c3QgYWxsIGN1cnJlbnRseSBiZSBpbiBhIGRlY29tbWl0dGVkIHN0YXRlLgogICAgIHN0YXRpYyB2
b2lkKiByZXNlcnZlVW5jb21taXR0ZWQoc2l6ZV90LCBVc2FnZSA9IFVua25vd25Vc2FnZSwgYm9v
bCB3cml0YWJsZSA9IHRydWUsIGJvb2wgZXhlY3V0YWJsZSA9IGZhbHNlKTsKLSAgICBzdGF0aWMg
dm9pZCByZWxlYXNlRGVjb21taXR0ZWQodm9pZCosIHNpemVfdCk7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyB2b2lkIHJlbGVhc2VEZWNvbW1pdHRlZCh2b2lkKiwgc2l6ZV90KTsKIAog
ICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJlIHN5bW1ldHJpYzsgdGhleSBjb21taXQgb3IgZGVjb21t
aXQgYSByZWdpb24gb2YgVk0gKHVuY29tbWl0dGVkIFZNIHNob3VsZAogICAgIC8vIG5ldmVyIGJl
IGFjY2Vzc2VkLCBzaW5jZSB0aGUgT1MgbWF5IG5vdCBoYXZlIGF0dGFjaGVkIHBoeXNpY2FsIG1l
bW9yeSBmb3IgdGhlc2UgcmVnaW9ucykuCkBAIC01Nyw3ICs1Nyw3IEBACiAgICAgLy8gVGhlc2Ug
bWV0aG9kcyBhcmUgc3ltbWV0cmljOyByZXNlcnZlQW5kQ29tbWl0IGFsbG9jYXRlcyBWTSBpbiBh
biBjb21taXR0ZWQgc3RhdGUsCiAgICAgLy8gZGVjb21taXRBbmRSZWxlYXNlIHNob3VsZCBiZSBj
YWxsZWQgb24gYSByZWdpb24gb2YgVk0gYWxsb2NhdGVkIGJ5IGEgc2luZ2xlIHJlc2VydmF0aW9u
LAogICAgIC8vIHRoZSBtZW1vcnkgbXVzdCBhbGwgY3VycmVudGx5IGJlIGluIGEgY29tbWl0dGVk
IHN0YXRlLgotICAgIHN0YXRpYyB2b2lkKiByZXNlcnZlQW5kQ29tbWl0KHNpemVfdCwgVXNhZ2Ug
PSBVbmtub3duVXNhZ2UsIGJvb2wgd3JpdGFibGUgPSB0cnVlLCBib29sIGV4ZWN1dGFibGUgPSBm
YWxzZSk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkKiByZXNlcnZlQW5kQ29t
bWl0KHNpemVfdCwgVXNhZ2UgPSBVbmtub3duVXNhZ2UsIGJvb2wgd3JpdGFibGUgPSB0cnVlLCBi
b29sIGV4ZWN1dGFibGUgPSBmYWxzZSk7CiAgICAgc3RhdGljIHZvaWQgZGVjb21taXRBbmRSZWxl
YXNlKHZvaWQqIGJhc2UsIHNpemVfdCBzaXplKTsKIAogICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJl
IGFraW4gdG8gcmVzZXJ2ZUFuZENvbW1pdC9kZWNvbW1pdEFuZFJlbGVhc2UsIGFib3ZlIC0gaG93
ZXZlciByYXRoZXIgdGhhbgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9GYXN0TWFs
bG9jLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9GYXN0TWFsbG9j
LmgJKHJldmlzaW9uIDgyMDEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9GYXN0TWFs
bG9jLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDEyICsyOSwxMiBAQAogbmFtZXNwYWNlIFdURiB7
CiAKICAgICAvLyBUaGVzZSBmdW5jdGlvbnMgY2FsbCBDUkFTSCgpIGlmIGFuIGFsbG9jYXRpb24g
ZmFpbHMuCi0gICAgdm9pZCogZmFzdE1hbGxvYyhzaXplX3QpOwotICAgIHZvaWQqIGZhc3RaZXJv
ZWRNYWxsb2Moc2l6ZV90KTsKLSAgICB2b2lkKiBmYXN0Q2FsbG9jKHNpemVfdCBudW1FbGVtZW50
cywgc2l6ZV90IGVsZW1lbnRTaXplKTsKLSAgICB2b2lkKiBmYXN0UmVhbGxvYyh2b2lkKiwgc2l6
ZV90KTsKLSAgICBjaGFyKiBmYXN0U3RyRHVwKGNvbnN0IGNoYXIqKTsKLSAgICBzaXplX3QgZmFz
dE1hbGxvY1NpemUoY29uc3Qgdm9pZCopOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkKiBm
YXN0TWFsbG9jKHNpemVfdCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQqIGZhc3RaZXJv
ZWRNYWxsb2Moc2l6ZV90KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCogZmFzdENhbGxv
YyhzaXplX3QgbnVtRWxlbWVudHMsIHNpemVfdCBlbGVtZW50U2l6ZSk7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHZvaWQqIGZhc3RSZWFsbG9jKHZvaWQqLCBzaXplX3QpOworICAgIFdURl9FWFBP
UlRfUFJJVkFURSBjaGFyKiBmYXN0U3RyRHVwKGNvbnN0IGNoYXIqKTsKKyAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgc2l6ZV90IGZhc3RNYWxsb2NTaXplKGNvbnN0IHZvaWQqKTsKIAogICAgIHN0cnVj
dCBUcnlNYWxsb2NSZXR1cm5WYWx1ZSB7CiAgICAgICAgIFRyeU1hbGxvY1JldHVyblZhbHVlKHZv
aWQqIGRhdGEpCkBAIC02OCwxMiArNjgsMTIgQEAKICAgICAgICAgcmV0dXJuIHJldHVyblZhbHVl
OwogICAgIH0KIAotICAgIFRyeU1hbGxvY1JldHVyblZhbHVlIHRyeUZhc3RNYWxsb2Moc2l6ZV90
IG4pOwotICAgIFRyeU1hbGxvY1JldHVyblZhbHVlIHRyeUZhc3RaZXJvZWRNYWxsb2Moc2l6ZV90
IG4pOwotICAgIFRyeU1hbGxvY1JldHVyblZhbHVlIHRyeUZhc3RDYWxsb2Moc2l6ZV90IG5fZWxl
bWVudHMsIHNpemVfdCBlbGVtZW50X3NpemUpOwotICAgIFRyeU1hbGxvY1JldHVyblZhbHVlIHRy
eUZhc3RSZWFsbG9jKHZvaWQqIHAsIHNpemVfdCBuKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
VHJ5TWFsbG9jUmV0dXJuVmFsdWUgdHJ5RmFzdE1hbGxvYyhzaXplX3Qgbik7CisgICAgV1RGX0VY
UE9SVF9QUklWQVRFIFRyeU1hbGxvY1JldHVyblZhbHVlIHRyeUZhc3RaZXJvZWRNYWxsb2Moc2l6
ZV90IG4pOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBUcnlNYWxsb2NSZXR1cm5WYWx1ZSB0cnlG
YXN0Q2FsbG9jKHNpemVfdCBuX2VsZW1lbnRzLCBzaXplX3QgZWxlbWVudF9zaXplKTsKKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgVHJ5TWFsbG9jUmV0dXJuVmFsdWUgdHJ5RmFzdFJlYWxsb2Modm9p
ZCogcCwgc2l6ZV90IG4pOwogCi0gICAgdm9pZCBmYXN0RnJlZSh2b2lkKik7CisgICAgV1RGX0VY
UE9SVF9QUklWQVRFIHZvaWQgZmFzdEZyZWUodm9pZCopOwogCiAjaWZuZGVmIE5ERUJVRyAgICAK
ICAgICB2b2lkIGZhc3RNYWxsb2NGb3JiaWQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvVGhyZWFkU3BlY2lmaWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL1RocmVhZFNwZWNpZmljLmgJKHJldmlzaW9uIDgyMDEwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi9UaHJlYWRTcGVjaWZpYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTYsOCAr
MjE2LDggQEAKIC8vIDIpIFdlIGRvIG5vdCBuZWVkIHRvIGhvbGQgbWFueSBpbnN0YW5jZXMgb2Yg
VGhyZWFkU3BlY2lmaWM8PiBkYXRhLiBUaGlzIGZpeGVkIG51bWJlciBzaG91bGQgYmUgZmFyIGVu
b3VnaC4KIGNvbnN0IGludCBrTWF4VGxzS2V5U2l6ZSA9IDI1NjsKIAotbG9uZyYgdGxzS2V5Q291
bnQoKTsKLURXT1JEKiB0bHNLZXlzKCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgbG9uZyYgdGxzS2V5
Q291bnQoKTsKK1dURl9FWFBPUlRfUFJJVkFURSBEV09SRCogdGxzS2V5cygpOwogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgogaW5saW5lIFRocmVhZFNwZWNpZmljPFQ+OjpUaHJlYWRTcGVjaWZpYygp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1dURlRocmVhZERhdGEuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1dURlRocmVhZERhdGEuaAkocmV2aXNp
b24gODIwMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1dURlRocmVhZERhdGEuaAko
d29ya2luZyBjb3B5KQpAQCAtODksOCArODksOCBAQAogY2xhc3MgV1RGVGhyZWFkRGF0YSB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV1RGVGhyZWFkRGF0YSk7CiBwdWJsaWM6Ci0gICAgV1RG
VGhyZWFkRGF0YSgpOwotICAgIH5XVEZUaHJlYWREYXRhKCk7CisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIFdURlRocmVhZERhdGEoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgfldURlRocmVhZERh
dGEoKTsKIAogICAgIEF0b21pY1N0cmluZ1RhYmxlKiBhdG9taWNTdHJpbmdUYWJsZSgpCiAgICAg
ewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9EYXRlTWF0aC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvRGF0ZU1hdGguaAkocmV2aXNpb24gODIwMTAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0RhdGVNYXRoLmgJKHdvcmtpbmcgY29weSkK
QEAgLTU5LDcgKzU5LDcgQEAKIAogLy8gTm90IHJlYWxseSBtYXRoIHJlbGF0ZWQsIGJ1dCB0aGlz
IGlzIGN1cnJlbnRseSB0aGUgb25seSBzaGFyZWQgcGxhY2UgdG8gcHV0IHRoZXNlLgogZG91Ymxl
IHBhcnNlRVM1RGF0ZUZyb21OdWxsVGVybWluYXRlZENoYXJhY3RlcnMoY29uc3QgY2hhciogZGF0
ZVN0cmluZyk7Ci1kb3VibGUgcGFyc2VEYXRlRnJvbU51bGxUZXJtaW5hdGVkQ2hhcmFjdGVycyhj
b25zdCBjaGFyKiBkYXRlU3RyaW5nKTsKK1dURl9FWFBPUlRfUFJJVkFURSBkb3VibGUgcGFyc2VE
YXRlRnJvbU51bGxUZXJtaW5hdGVkQ2hhcmFjdGVycyhjb25zdCBjaGFyKiBkYXRlU3RyaW5nKTsK
IGRvdWJsZSB0aW1lQ2xpcChkb3VibGUpOwogCiBpbmxpbmUgZG91YmxlIGpzQ3VycmVudFRpbWUo
KQpAQCAtODIsMTUgKzgyLDE1IEBACiBjb25zdCBkb3VibGUgbXNQZXJNb250aCA9IDI1OTIwMDAw
MDAuMDsKIAogLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIGRheXMgZnJvbSAxOTcwLTAxLTAxIHRv
IHRoZSBzcGVjaWZpZWQgZGF0ZS4KLWRvdWJsZSBkYXRlVG9EYXlzRnJvbTE5NzAoaW50IHllYXIs
IGludCBtb250aCwgaW50IGRheSk7Ci1pbnQgbXNUb1llYXIoZG91YmxlIG1zKTsKLWludCBkYXlJ
blllYXIoZG91YmxlIG1zLCBpbnQgeWVhcik7Ci1pbnQgbW9udGhGcm9tRGF5SW5ZZWFyKGludCBk
YXlJblllYXIsIGJvb2wgbGVhcFllYXIpOwotaW50IGRheUluTW9udGhGcm9tRGF5SW5ZZWFyKGlu
dCBkYXlJblllYXIsIGJvb2wgbGVhcFllYXIpOworV1RGX0VYUE9SVF9QUklWQVRFIGRvdWJsZSBk
YXRlVG9EYXlzRnJvbTE5NzAoaW50IHllYXIsIGludCBtb250aCwgaW50IGRheSk7CitXVEZfRVhQ
T1JUX1BSSVZBVEUgaW50IG1zVG9ZZWFyKGRvdWJsZSBtcyk7CitXVEZfRVhQT1JUX1BSSVZBVEUg
aW50IGRheUluWWVhcihkb3VibGUgbXMsIGludCB5ZWFyKTsKK1dURl9FWFBPUlRfUFJJVkFURSBp
bnQgbW9udGhGcm9tRGF5SW5ZZWFyKGludCBkYXlJblllYXIsIGJvb2wgbGVhcFllYXIpOworV1RG
X0VYUE9SVF9QUklWQVRFIGludCBkYXlJbk1vbnRoRnJvbURheUluWWVhcihpbnQgZGF5SW5ZZWFy
LCBib29sIGxlYXBZZWFyKTsKIAogLy8gUmV0dXJucyBvZmZzZXQgbWlsbGlzZWNvbmRzIGZvciBV
VEMgYW5kIERTVC4KLWludDMyX3QgY2FsY3VsYXRlVVRDT2Zmc2V0KCk7Ci1kb3VibGUgY2FsY3Vs
YXRlRFNUT2Zmc2V0KGRvdWJsZSBtcywgZG91YmxlIHV0Y09mZnNldCk7CitXVEZfRVhQT1JUX1BS
SVZBVEUgaW50MzJfdCBjYWxjdWxhdGVVVENPZmZzZXQoKTsKK1dURl9FWFBPUlRfUFJJVkFURSBk
b3VibGUgY2FsY3VsYXRlRFNUT2Zmc2V0KGRvdWJsZSBtcywgZG91YmxlIHV0Y09mZnNldCk7CiAK
IH0gLy8gbmFtZXNwYWNlIFdURgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3Vu
aWNvZGUvQ29sbGF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L3VuaWNvZGUvQ29sbGF0b3IuaAkocmV2aXNpb24gODIwMTApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL3VuaWNvZGUvQ29sbGF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTMgKzQ1
LDEzIEBACiAgICAgcHVibGljOgogICAgICAgICBlbnVtIFJlc3VsdCB7IEVxdWFsID0gMCwgR3Jl
YXRlciA9IDEsIExlc3MgPSAtMSB9OwogCi0gICAgICAgIENvbGxhdG9yKGNvbnN0IGNoYXIqIGxv
Y2FsZSk7IC8vIFBhcnNpbmcgaXMgbGVuaWVudDsgZS5nLiBsYW5ndWFnZSBpZGVudGlmaWVycyAo
c3VjaCBhcyAiZW4tVVMiKSBhcmUgYWNjZXB0ZWQsIHRvby4KLSAgICAgICAgfkNvbGxhdG9yKCk7
Ci0gICAgICAgIHZvaWQgc2V0T3JkZXJMb3dlckZpcnN0KGJvb2wpOworICAgICAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgQ29sbGF0b3IoY29uc3QgY2hhciogbG9jYWxlKTsgLy8gUGFyc2luZyBpcyBs
ZW5pZW50OyBlLmcuIGxhbmd1YWdlIGlkZW50aWZpZXJzIChzdWNoIGFzICJlbi1VUyIpIGFyZSBh
Y2NlcHRlZCwgdG9vLgorICAgICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgfkNvbGxhdG9yKCk7Cisg
ICAgICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNldE9yZGVyTG93ZXJGaXJzdChib29sKTsK
IAogICAgICAgICBzdGF0aWMgUGFzc093blB0cjxDb2xsYXRvcj4gdXNlckRlZmF1bHQoKTsKIAot
ICAgICAgICBSZXN1bHQgY29sbGF0ZShjb25zdCA6OlVDaGFyKiwgc2l6ZV90LCBjb25zdCA6OlVD
aGFyKiwgc2l6ZV90KSBjb25zdDsKKyAgICAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFJlc3VsdCBj
b2xsYXRlKGNvbnN0IDo6VUNoYXIqLCBzaXplX3QsIGNvbnN0IDo6VUNoYXIqLCBzaXplX3QpIGNv
bnN0OwogCiAgICAgcHJpdmF0ZToKICNpZiBVU0UoSUNVX1VOSUNPREUpICYmICFVQ09ORklHX05P
X0NPTExBVElPTgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi91bmljb2RlL1VURjgu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUvVVRGOC5o
CShyZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdW5pY29kZS9V
VEY4LmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDExICs2MiwxMSBAQAogICAgIC8vIHRvIHRoZSBy
ZXBsYWNlbWVudCBjaGFyYWN0ZXI7IG90aGVyd2lzZSAod2hlbiB0aGUgZmxhZyBpcyBzZXQgdG8g
c3RyaWN0KQogICAgIC8vIHRoZXkgY29uc3RpdHV0ZSBhbiBlcnJvci4KIAotICAgIENvbnZlcnNp
b25SZXN1bHQgY29udmVydFVURjhUb1VURjE2KAorICAgIFdURl9FWFBPUlRfUFJJVkFURSBDb252
ZXJzaW9uUmVzdWx0IGNvbnZlcnRVVEY4VG9VVEYxNigKICAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhcioqIHNvdXJjZVN0YXJ0LCBjb25zdCBjaGFyKiBzb3VyY2VFbmQsIAogICAgICAgICAg
ICAgICAgICAgICBVQ2hhcioqIHRhcmdldFN0YXJ0LCBVQ2hhciogdGFyZ2V0RW5kLCBib29sIHN0
cmljdCA9IHRydWUpOwogCi0gICAgQ29udmVyc2lvblJlc3VsdCBjb252ZXJ0VVRGMTZUb1VURjgo
CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIENvbnZlcnNpb25SZXN1bHQgY29udmVydFVURjE2VG9V
VEY4KAogICAgICAgICAgICAgICAgICAgICBjb25zdCBVQ2hhcioqIHNvdXJjZVN0YXJ0LCBjb25z
dCBVQ2hhciogc291cmNlRW5kLCAKICAgICAgICAgICAgICAgICAgICAgY2hhcioqIHRhcmdldFN0
YXJ0LCBjaGFyKiB0YXJnZXRFbmQsIGJvb2wgc3RyaWN0ID0gdHJ1ZSk7CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvQ3VycmVudFRpbWUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL0N1cnJlbnRUaW1lLmgJKHJldmlzaW9uIDgyMDEwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9DdXJyZW50VGltZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
OSw3ICszOSw3IEBACiAvLyBSZXR1cm5zIHRoZSBjdXJyZW50IFVUQyB0aW1lIGluIHNlY29uZHMs
IGNvdW50ZWQgZnJvbSBKYW51YXJ5IDEsIDE5NzAuCiAvLyBQcmVjaXNpb24gdmFyaWVzIGRlcGVu
ZGluZyBvbiBwbGF0Zm9ybSBidXQgaXMgdXN1YWxseSBhcyBnb29kIG9yIGJldHRlcgogLy8gdGhh
biBhIG1pbGxpc2Vjb25kLgotZG91YmxlIGN1cnJlbnRUaW1lKCk7CitXVEZfRVhQT1JUX1BSSVZB
VEUgZG91YmxlIGN1cnJlbnRUaW1lKCk7CiAKIC8vIFNhbWUgdGhpbmcsIGluIG1pbGxpc2Vjb25k
cy4KIGlubGluZSBkb3VibGUgY3VycmVudFRpbWVNUygpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL0RlY2ltYWxOdW1iZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL0RlY2ltYWxOdW1iZXIuaAkocmV2aXNpb24gODIwMTApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL0RlY2ltYWxOdW1iZXIuaAkod29ya2luZyBjb3B5KQpAQCAtODEsMTAg
KzgxLDEwIEBACiAgICAgICAgIEFTU0VSVChtX3NpZ25pZmljYW5kWzBdICE9ICcwJyB8fCAhbV9l
eHBvbmVudCk7CiAgICAgfQogCi0gICAgdW5zaWduZWQgYnVmZmVyTGVuZ3RoRm9yU3RyaW5nRGVj
aW1hbCgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSB1bnNpZ25lZCBidWZmZXJMZW5n
dGhGb3JTdHJpbmdEZWNpbWFsKCkgY29uc3Q7CiAgICAgdW5zaWduZWQgYnVmZmVyTGVuZ3RoRm9y
U3RyaW5nRXhwb25lbnRpYWwoKSBjb25zdDsKIAotICAgIHVuc2lnbmVkIHRvU3RyaW5nRGVjaW1h
bChVQ2hhciogYnVmZmVyLCB1bnNpZ25lZCBidWZmZXJMZW5ndGgpIGNvbnN0OworICAgIFdURl9F
WFBPUlRfUFJJVkFURSB1bnNpZ25lZCB0b1N0cmluZ0RlY2ltYWwoVUNoYXIqIGJ1ZmZlciwgdW5z
aWduZWQgYnVmZmVyTGVuZ3RoKSBjb25zdDsKICAgICB1bnNpZ25lZCB0b1N0cmluZ0V4cG9uZW50
aWFsKFVDaGFyKiBidWZmZXIsIHVuc2lnbmVkIGJ1ZmZlckxlbmd0aCkgY29uc3Q7CiAKICAgICBi
b29sIHNpZ24oKSBjb25zdCB7IHJldHVybiBtX3NpZ247IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvTUQ1LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi9NRDUuaAkocmV2aXNpb24gODIwMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL01E
NS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBXVEYgewog
Ci1jbGFzcyBNRDUgeworY2xhc3MgV1RGX0VYUE9SVF9QUklWQVRFIE1ENSB7CiBwdWJsaWM6CiAg
ICAgTUQ1KCk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvZHRvYS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvZHRvYS5oCShyZXZpc2lvbiA4MjAx
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvZHRvYS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMCwxOCArMzAsMTggQEAKIAogLy8gczAwOiBpbnB1dCBzdHJpbmcuIE11c3Qgbm90IGJlIDAg
YW5kIG11c3QgYmUgdGVybWluYXRlZCBieSAwLgogLy8gc2U6ICpzZSB3aWxsIGhhdmUgdGhlIGxh
c3QgY29uc3VtZWQgY2hhcmFjdGVyIHBvc2l0aW9uICsgMS4KLWRvdWJsZSBzdHJ0b2QoY29uc3Qg
Y2hhciogczAwLCBjaGFyKiogc2UpOworV1RGX0VYUE9SVF9QUklWQVRFIGRvdWJsZSBzdHJ0b2Qo
Y29uc3QgY2hhciogczAwLCBjaGFyKiogc2UpOwogCiB0eXBlZGVmIGNoYXIgRHRvYUJ1ZmZlcls4
MF07CiAKLXZvaWQgZHRvYShEdG9hQnVmZmVyIHJlc3VsdCwgZG91YmxlIGRkLCBib29sJiBzaWdu
LCBpbnQmIGV4cG9uZW50LCB1bnNpZ25lZCYgcHJlY2lzaW9uKTsKK1dURl9FWFBPUlRfUFJJVkFU
RSB2b2lkIGR0b2EoRHRvYUJ1ZmZlciByZXN1bHQsIGRvdWJsZSBkZCwgYm9vbCYgc2lnbiwgaW50
JiBleHBvbmVudCwgdW5zaWduZWQmIHByZWNpc2lvbik7CiB2b2lkIGR0b2FSb3VuZFNGKER0b2FC
dWZmZXIgcmVzdWx0LCBkb3VibGUgZGQsIGludCBuZGlnaXRzLCBib29sJiBzaWduLCBpbnQmIGV4
cG9uZW50LCB1bnNpZ25lZCYgcHJlY2lzaW9uKTsKIHZvaWQgZHRvYVJvdW5kRFAoRHRvYUJ1ZmZl
ciByZXN1bHQsIGRvdWJsZSBkZCwgaW50IG5kaWdpdHMsIGJvb2wmIHNpZ24sIGludCYgZXhwb25l
bnQsIHVuc2lnbmVkJiBwcmVjaXNpb24pOwogCiAvLyBTaXplID0gODAgZm9yIHNpemVvZihEdG9h
QnVmZmVyKSArIHNvbWUgc2lnbiBiaXRzLCBkZWNpbWFsIHBvaW50LCAnZScsIGV4cG9uZW50IGRp
Z2l0cy4KIGNvbnN0IHVuc2lnbmVkIE51bWJlclRvU3RyaW5nQnVmZmVyTGVuZ3RoID0gOTY7CiB0
eXBlZGVmIFVDaGFyIE51bWJlclRvU3RyaW5nQnVmZmVyW051bWJlclRvU3RyaW5nQnVmZmVyTGVu
Z3RoXTsKLXVuc2lnbmVkIG51bWJlclRvU3RyaW5nKGRvdWJsZSwgTnVtYmVyVG9TdHJpbmdCdWZm
ZXIpOworV1RGX0VYUE9SVF9QUklWQVRFIHVuc2lnbmVkIG51bWJlclRvU3RyaW5nKGRvdWJsZSwg
TnVtYmVyVG9TdHJpbmdCdWZmZXIpOwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9OdWxsUHRyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL051bGxQdHIuY3BwCShyZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvTnVsbFB0ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYg
KzI0LDcgQEAKIAogKi8KIAorI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk51bGxQdHIu
aCIKIAogI2luY2x1ZGUgIlBsYXRmb3JtLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5oCShyZXZp
c2lvbiA4MjAxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQ3J5cHRvZ3JhcGhpY2Fs
bHlSYW5kb21OdW1iZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAogCiAjaWYg
VVNFKE9TX1JBTkRPTU5FU1MpCiB1aW50MzJfdCBjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJl
cigpOwotdm9pZCBjcnlwdG9ncmFwaGljYWxseVJhbmRvbVZhbHVlcyh2b2lkKiBidWZmZXIsIHNp
emVfdCBsZW5ndGgpOworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgY3J5cHRvZ3JhcGhpY2FsbHlS
YW5kb21WYWx1ZXModm9pZCogYnVmZmVyLCBzaXplX3QgbGVuZ3RoKTsKICNlbmRpZgogCiB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMu
aAkocmV2aXNpb24gODIwMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGlu
Z1ByaW1pdGl2ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDEyICsxMDAsMTIgQEAKIGNsYXNz
IE11dGV4IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShNdXRleCk7IFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgotICAgIE11dGV4KCk7Ci0gICAgfk11dGV4KCk7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIE11dGV4KCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIH5NdXRleCgp
OwogCi0gICAgdm9pZCBsb2NrKCk7Ci0gICAgYm9vbCB0cnlMb2NrKCk7Ci0gICAgdm9pZCB1bmxv
Y2soKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBsb2NrKCk7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIGJvb2wgdHJ5TG9jaygpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHVu
bG9jaygpOwogCiBwdWJsaWM6CiAgICAgUGxhdGZvcm1NdXRleCYgaW1wbCgpIHsgcmV0dXJuIG1f
bXV0ZXg7IH0KQEAgLTEzNiwxNSArMTM2LDE1IEBACiBjbGFzcyBUaHJlYWRDb25kaXRpb24gewog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRocmVhZENvbmRpdGlvbik7CiBwdWJsaWM6Ci0gICAg
VGhyZWFkQ29uZGl0aW9uKCk7Ci0gICAgflRocmVhZENvbmRpdGlvbigpOworICAgIFdURl9FWFBP
UlRfUFJJVkFURSBUaHJlYWRDb25kaXRpb24oKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgflRo
cmVhZENvbmRpdGlvbigpOwogICAgIAotICAgIHZvaWQgd2FpdChNdXRleCYgbXV0ZXgpOworICAg
IFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHdhaXQoTXV0ZXgmIG11dGV4KTsKICAgICAvLyBSZXR1
cm5zIHRydWUgaWYgdGhlIGNvbmRpdGlvbiB3YXMgc2lnbmFsZWQgYmVmb3JlIGFic29sdXRlVGlt
ZSwgZmFsc2UgaWYgdGhlIGFic29sdXRlVGltZSB3YXMgcmVhY2hlZCBvciBpcyBpbiB0aGUgcGFz
dC4KICAgICAvLyBUaGUgYWJzb2x1dGVUaW1lIGlzIGluIHNlY29uZHMsIHN0YXJ0aW5nIG9uIEph
bnVhcnkgMSwgMTk3MC4gVGhlIHRpbWUgaXMgYXNzdW1lZCB0byB1c2UgdGhlIHNhbWUgdGltZSB6
b25lIGFzIFdURjo6Y3VycmVudFRpbWUoKS4KLSAgICBib29sIHRpbWVkV2FpdChNdXRleCYsIGRv
dWJsZSBhYnNvbHV0ZVRpbWUpOwotICAgIHZvaWQgc2lnbmFsKCk7Ci0gICAgdm9pZCBicm9hZGNh
c3QoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCB0aW1lZFdhaXQoTXV0ZXgmLCBkb3Vi
bGUgYWJzb2x1dGVUaW1lKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzaWduYWwoKTsK
KyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBicm9hZGNhc3QoKTsKICAgICAKIHByaXZhdGU6
CiAgICAgUGxhdGZvcm1Db25kaXRpb24gbV9jb25kaXRpb247CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL1JhbmRvbU51bWJlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvUmFuZG9tTnVtYmVyLmgJKHJldmlzaW9uIDgyMDEwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi9SYW5kb21OdW1iZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyAr
MzAsNyBAQAogCiAgICAgLy8gUmV0dXJucyBhIHBzZXVkby1yYW5kb20gbnVtYmVyIGluIHRoZSBy
YW5nZSBbMCwgMSksIGF0dGVtcHRzIHRvIGJlCiAgICAgLy8gY3J5cHRvZ3JhcGhpY2FsbHkgc2Vj
dXJlIGlmIHBvc3NpYmxlIG9uIHRoZSB0YXJnZXQgcGxhdGZvcm0KLSAgICBkb3VibGUgcmFuZG9t
TnVtYmVyKCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGRvdWJsZSByYW5kb21OdW1iZXIoKTsK
IAogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvQXRvbWljU3RyaW5n
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L0F0b21pY1N0
cmluZy5oCShyZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4
dC9BdG9taWNTdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsMjcgKzM4LDMxIEBACiAKIGNs
YXNzIEF0b21pY1N0cmluZyB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgaW5pdCgpOworICAg
IFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBpbml0KCk7CiAKLSAgICBBdG9taWNTdHJp
bmcoKSB7IH0KLSAgICBBdG9taWNTdHJpbmcoY29uc3QgY2hhciogcykgOiBtX3N0cmluZyhhZGQo
cykpIHsgfQorICAgIFdURl9FWFBPUlRfUFJJVkFURSBBdG9taWNTdHJpbmcoKSB7IH0KKyAgICAv
LyBjb3B5IGNvbnN0cnVjdG9yIG5lZWRzIHRvIGJlIGV4cGxpY2l0bHkgZGVmaW5lZCBzbyB3ZSBj
YW4gc3BlY2lmeSBwcm9wZXIgZGxsIGxpbmthZ2UKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgQXRv
bWljU3RyaW5nKGNvbnN0IEF0b21pY1N0cmluZyYgcykgOiBtX3N0cmluZyhzLm1fc3RyaW5nKSB7
IH0KKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgQXRvbWljU3RyaW5nKGNvbnN0IGNoYXIqIHMpIDog
bV9zdHJpbmcoYWRkKHMpKSB7IH0KICAgICBBdG9taWNTdHJpbmcoY29uc3QgVUNoYXIqIHMsIHVu
c2lnbmVkIGxlbmd0aCkgOiBtX3N0cmluZyhhZGQocywgbGVuZ3RoKSkgeyB9CiAgICAgQXRvbWlj
U3RyaW5nKGNvbnN0IFVDaGFyKiBzLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIGV4aXN0aW5n
SGFzaCkgOiBtX3N0cmluZyhhZGQocywgbGVuZ3RoLCBleGlzdGluZ0hhc2gpKSB7IH0KICAgICBB
dG9taWNTdHJpbmcoY29uc3QgVUNoYXIqIHMpIDogbV9zdHJpbmcoYWRkKHMpKSB7IH0KICAgICBB
VE9NSUNTVFJJTkdfQ09OVkVSU0lPTiBBdG9taWNTdHJpbmcoU3RyaW5nSW1wbCogaW1wKSA6IG1f
c3RyaW5nKGFkZChpbXApKSB7IH0KICAgICBBdG9taWNTdHJpbmcoQXRvbWljU3RyaW5nSW1wbCog
aW1wKSA6IG1fc3RyaW5nKGltcCkgeyB9Ci0gICAgQVRPTUlDU1RSSU5HX0NPTlZFUlNJT04gQXRv
bWljU3RyaW5nKGNvbnN0IFN0cmluZyYgcykgOiBtX3N0cmluZyhhZGQocy5pbXBsKCkpKSB7IH0K
KyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgQVRPTUlDU1RSSU5HX0NPTlZFUlNJT04gQXRvbWljU3Ry
aW5nKGNvbnN0IFN0cmluZyYgcykgOiBtX3N0cmluZyhhZGQocy5pbXBsKCkpKSB7IH0KIAogICAg
IC8vIEhhc2ggdGFibGUgZGVsZXRlZCB2YWx1ZXMsIHdoaWNoIGFyZSBvbmx5IGNvbnN0cnVjdGVk
IGFuZCBuZXZlciBjb3BpZWQgb3IgZGVzdHJveWVkLgotICAgIEF0b21pY1N0cmluZyhXVEY6Okhh
c2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpIDogbV9zdHJpbmcoV1RGOjpIYXNoVGFibGVEZWxldGVk
VmFsdWUpIHsgfQotICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJl
dHVybiBtX3N0cmluZy5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIEF0b21pY1N0cmluZyhXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpIDog
bV9zdHJpbmcoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpIHsgfQorICAgIFdURl9FWFBPUlRf
UFJJVkFURSBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9z
dHJpbmcuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQogCi0gICAgc3RhdGljIEF0b21pY1N0
cmluZ0ltcGwqIGZpbmQoY29uc3QgVUNoYXIqIHMsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQg
ZXhpc3RpbmdIYXNoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgfkF0b21pY1N0cmluZygpIHsg
fQogCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBBdG9taWNTdHJpbmdJbXBsKiBmaW5k
KGNvbnN0IFVDaGFyKiBzLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIGV4aXN0aW5nSGFzaCk7
CisKICAgICBvcGVyYXRvciBjb25zdCBTdHJpbmcmKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7
IH0KICAgICBjb25zdCBTdHJpbmcmIHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9
OwogCi0gICAgQXRvbWljU3RyaW5nSW1wbCogaW1wbCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PEF0b21pY1N0cmluZ0ltcGwgKj4obV9zdHJpbmcuaW1wbCgpKTsgfQorICAgIFdURl9FWFBP
UlRfUFJJVkFURSBBdG9taWNTdHJpbmdJbXBsKiBpbXBsKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8QXRvbWljU3RyaW5nSW1wbCAqPihtX3N0cmluZy5pbXBsKCkpOyB9CiAgICAgCiAgICAg
Y29uc3QgVUNoYXIqIGNoYXJhY3RlcnMoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5jaGFyYWN0
ZXJzKCk7IH0KICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5s
ZW5ndGgoKTsgfQpAQCAtODIsNyArODYsNyBAQAogICAgIGJvb2wgZW5kc1dpdGgoY29uc3QgU3Ry
aW5nJiBzLCBib29sIGNhc2VTZW5zaXRpdmUgPSB0cnVlKSBjb25zdAogICAgICAgICB7IHJldHVy
biBtX3N0cmluZy5lbmRzV2l0aChzLCBjYXNlU2Vuc2l0aXZlKTsgfQogICAgIAotICAgIEF0b21p
Y1N0cmluZyBsb3dlcigpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBBdG9taWNTdHJp
bmcgbG93ZXIoKSBjb25zdDsKICAgICBBdG9taWNTdHJpbmcgdXBwZXIoKSBjb25zdCB7IHJldHVy
biBBdG9taWNTdHJpbmcoaW1wbCgpLT51cHBlcigpKTsgfQogICAgIAogICAgIGludCB0b0ludChi
b29sKiBvayA9IDApIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLnRvSW50KG9rKTsgfQpAQCAtMTEw
LDE0ICsxMTQsMTQgQEAKIAogICAgIC8vIEF0b21pY1N0cmluZzo6ZnJvbVVURjggd2lsbCByZXR1
cm4gYSBudWxsIHN0cmluZyBpZgogICAgIC8vIHRoZSBpbnB1dCBkYXRhIGNvbnRhaW5zIGludmFs
aWQgVVRGLTggc2VxdWVuY2VzLgotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgZnJvbVVURjgoY29u
c3QgY2hhciosIHNpemVfdCk7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBmcm9tVVRGOChjb25z
dCBjaGFyKik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBBdG9taWNTdHJpbmcgZnJv
bVVURjgoY29uc3QgY2hhciosIHNpemVfdCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBBdG9taWNTdHJpbmcgZnJvbVVURjgoY29uc3QgY2hhciopOwogCiBwcml2YXRlOgogICAgIFN0
cmluZyBtX3N0cmluZzsKICAgICAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBh
ZGQoY29uc3QgY2hhciopOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChj
b25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChjb25zdCBjaGFyKik7CisgICAgV1RGX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChjb25zdCBVQ2hh
ciosIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4g
YWRkKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBleGlzdGluZ0hhc2gp
OwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChjb25zdCBVQ2hhciopOwog
ICAgIEFMV0FZU19JTkxJTkUgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGQoU3RyaW5nSW1wbCog
cikKQEAgLTEyNiwxMiArMTMwLDEyIEBACiAgICAgICAgICAgICByZXR1cm4gcjsKICAgICAgICAg
cmV0dXJuIGFkZFNsb3dDYXNlKHIpOwogICAgIH0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJp
bmdJbXBsPiBhZGRTbG93Q2FzZShTdHJpbmdJbXBsKik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZFNsb3dDYXNlKFN0cmluZ0ltcGwqKTsK
IH07CiAKIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgQXRvbWljU3RyaW5nJiBhLCBjb25z
dCBBdG9taWNTdHJpbmcmIGIpIHsgcmV0dXJuIGEuaW1wbCgpID09IGIuaW1wbCgpOyB9Ci1ib29s
IG9wZXJhdG9yPT0oY29uc3QgQXRvbWljU3RyaW5nJiBhLCBjb25zdCBjaGFyKiBiKTsKLWJvb2wg
b3BlcmF0b3I9PShjb25zdCBBdG9taWNTdHJpbmcmIGEsIGNvbnN0IFZlY3RvcjxVQ2hhcj4mIGIp
OworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBdG9taWNTdHJpbmcm
IGEsIGNvbnN0IGNoYXIqIGIpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBBdG9taWNTdHJpbmcmIGEsIGNvbnN0IFZlY3RvcjxVQ2hhcj4mIGIpOwogaW5saW5lIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBBdG9taWNTdHJpbmcmIGEsIGNvbnN0IFN0cmluZyYgYikgeyBy
ZXR1cm4gZXF1YWwoYS5pbXBsKCksIGIuaW1wbCgpKTsgfQogaW5saW5lIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBjaGFyKiBhLCBjb25zdCBBdG9taWNTdHJpbmcmIGIpIHsgcmV0dXJuIGIgPT0gYTsg
fQogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHJpbmcmIGEsIGNvbnN0IEF0b21pY1N0
cmluZyYgYikgeyByZXR1cm4gZXF1YWwoYS5pbXBsKCksIGIuaW1wbCgpKTsgfQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L0NTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvQ1N0cmluZy5oCShyZXZpc2lvbiA4MjAxMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9DU3RyaW5nLmgJKHdvcmtpbmcgY29weSkK
QEAgLTUyLDEwICs1MiwxMCBAQAogY2xhc3MgQ1N0cmluZyB7CiBwdWJsaWM6CiAgICAgQ1N0cmlu
ZygpIHsgfQotICAgIENTdHJpbmcoY29uc3QgY2hhciopOwotICAgIENTdHJpbmcoY29uc3QgY2hh
ciosIHNpemVfdCBsZW5ndGgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBDU3RyaW5nKGNvbnN0
IGNoYXIqKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgQ1N0cmluZyhjb25zdCBjaGFyKiwgc2l6
ZV90IGxlbmd0aCk7CiAgICAgQ1N0cmluZyhDU3RyaW5nQnVmZmVyKiBidWZmZXIpIDogbV9idWZm
ZXIoYnVmZmVyKSB7IH0KLSAgICBzdGF0aWMgQ1N0cmluZyBuZXdVbmluaXRpYWxpemVkKHNpemVf
dCBsZW5ndGgsIGNoYXIqJiBjaGFyYWN0ZXJCdWZmZXIpOworICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgQ1N0cmluZyBuZXdVbmluaXRpYWxpemVkKHNpemVfdCBsZW5ndGgsIGNoYXIqJiBj
aGFyYWN0ZXJCdWZmZXIpOwogCiAgICAgY29uc3QgY2hhciogZGF0YSgpIGNvbnN0CiAgICAgewpA
QCAtNzcsNyArNzcsNyBAQAogICAgIFJlZlB0cjxDU3RyaW5nQnVmZmVyPiBtX2J1ZmZlcjsKIH07
CiAKLWJvb2wgb3BlcmF0b3I9PShjb25zdCBDU3RyaW5nJiBhLCBjb25zdCBDU3RyaW5nJiBiKTsK
K1dURl9FWFBPUlRfUFJJVkFURSBib29sIG9wZXJhdG9yPT0oY29uc3QgQ1N0cmluZyYgYSwgY29u
c3QgQ1N0cmluZyYgYik7CiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENTdHJpbmcmIGEs
IGNvbnN0IENTdHJpbmcmIGIpIHsgcmV0dXJuICEoYSA9PSBiKTsgfQogCiB9IC8vIG5hbWVzcGFj
ZSBXVEYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdCdWlsZGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaAkocmV2aXNpb24gODIwMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw4ICszOCw4IEBACiAgICAg
ewogICAgIH0KIAotICAgIHZvaWQgYXBwZW5kKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQpOwotICAg
IHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCk7CisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHZvaWQgYXBwZW5kKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQpOworICAgIFdURl9FWFBPUlRf
UFJJVkFURSB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiwgdW5zaWduZWQpOwogCiAgICAgdm9pZCBh
cHBlbmQoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgewpAQCAtNTQsNyArNTQsNyBAQAogICAg
ICAgICBhcHBlbmQoc3RyaW5nLmNoYXJhY3RlcnMoKSwgc3RyaW5nLmxlbmd0aCgpKTsKICAgICB9
CiAKLSAgICB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBjaGFyYWN0ZXJzKQorICAgdm9pZCBhcHBl
bmQoY29uc3QgY2hhciogY2hhcmFjdGVycykKICAgICB7CiAgICAgICAgIGlmIChjaGFyYWN0ZXJz
KQogICAgICAgICAgICAgYXBwZW5kKGNoYXJhY3RlcnMsIHN0cmxlbihjaGFyYWN0ZXJzKSk7CkBA
IC05OSwxMSArOTksMTEgQEAKIAogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFs
ZW5ndGgoKTsgfQogCi0gICAgdm9pZCByZXNlcnZlQ2FwYWNpdHkodW5zaWduZWQgbmV3Q2FwYWNp
dHkpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHJlc2VydmVDYXBhY2l0eSh1bnNpZ25l
ZCBuZXdDYXBhY2l0eSk7CiAKLSAgICB2b2lkIHJlc2l6ZSh1bnNpZ25lZCBuZXdTaXplKTsKKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCByZXNpemUodW5zaWduZWQgbmV3U2l6ZSk7CiAKLSAg
ICB2b2lkIHNocmlua1RvRml0KCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2hyaW5r
VG9GaXQoKTsKIAogICAgIFVDaGFyIG9wZXJhdG9yW10odW5zaWduZWQgaSkgY29uc3QKICAgICB7
CkBAIC0xMjQsNyArMTI0LDcgQEAKIHByaXZhdGU6CiAgICAgdm9pZCBhbGxvY2F0ZUJ1ZmZlcihj
b25zdCBVQ2hhciogY3VycmVudENoYXJhY3RlcnMsIHVuc2lnbmVkIHJlcXVpcmVkTGVuZ3RoKTsK
ICAgICBVQ2hhciogYXBwZW5kVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpOwotICAgIHZv
aWQgcmVpZnlTdHJpbmcoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCByZWlmeVN0cmlu
ZygpOwogCiAgICAgdW5zaWduZWQgbV9sZW5ndGg7CiAgICAgU3RyaW5nIG1fc3RyaW5nOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9XVEZTdHJpbmcuaAkocmV2aXNpb24g
ODIwMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvV1RGU3RyaW5nLmgJKHdv
cmtpbmcgY29weSkKQEAgLTY3LDggKzY3LDggQEAKIAogYm9vbCBjaGFyYWN0ZXJzQXJlQWxsQVND
SUkoY29uc3QgVUNoYXIqLCBzaXplX3QpOwogYm9vbCBjaGFyYWN0ZXJzQXJlQWxsTGF0aW4xKGNv
bnN0IFVDaGFyKiwgc2l6ZV90KTsKLWludCBjaGFyYWN0ZXJzVG9JbnRTdHJpY3QoY29uc3QgVUNo
YXIqLCBzaXplX3QsIGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCk7Ci11bnNpZ25lZCBjaGFy
YWN0ZXJzVG9VSW50U3RyaWN0KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDAsIGlu
dCBiYXNlID0gMTApOworV1RGX0VYUE9SVF9QUklWQVRFIGludCBjaGFyYWN0ZXJzVG9JbnRTdHJp
Y3QoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCk7CitX
VEZfRVhQT1JUX1BSSVZBVEUgdW5zaWduZWQgY2hhcmFjdGVyc1RvVUludFN0cmljdChjb25zdCBV
Q2hhciosIHNpemVfdCwgYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKTsKIGludDY0X3QgY2hh
cmFjdGVyc1RvSW50NjRTdHJpY3QoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gMCwg
aW50IGJhc2UgPSAxMCk7CiB1aW50NjRfdCBjaGFyYWN0ZXJzVG9VSW50NjRTdHJpY3QoY29uc3Qg
VUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCk7CiBpbnRwdHJfdCBj
aGFyYWN0ZXJzVG9JbnRQdHJTdHJpY3QoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0g
MCwgaW50IGJhc2UgPSAxMCk7CkBAIC03OSw3ICs3OSw3IEBACiB1aW50NjRfdCBjaGFyYWN0ZXJz
VG9VSW50NjQoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gMCk7IC8vIGlnbm9yZXMg
dHJhaWxpbmcgZ2FyYmFnZQogaW50cHRyX3QgY2hhcmFjdGVyc1RvSW50UHRyKGNvbnN0IFVDaGFy
Kiwgc2l6ZV90LCBib29sKiBvayA9IDApOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKIAot
ZG91YmxlIGNoYXJhY3RlcnNUb0RvdWJsZShjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sg
PSAwLCBib29sKiBkaWRSZWFkTnVtYmVyID0gMCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgZG91Ymxl
IGNoYXJhY3RlcnNUb0RvdWJsZShjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSAwLCBi
b29sKiBkaWRSZWFkTnVtYmVyID0gMCk7CiBmbG9hdCBjaGFyYWN0ZXJzVG9GbG9hdChjb25zdCBV
Q2hhciosIHNpemVfdCwgYm9vbCogb2sgPSAwLCBib29sKiBkaWRSZWFkTnVtYmVyID0gMCk7CiAK
IHRlbXBsYXRlPGJvb2wgaXNTcGVjaWFsQ2hhcmFjdGVyKFVDaGFyKT4gYm9vbCBpc0FsbFNwZWNp
YWxDaGFyYWN0ZXJzKGNvbnN0IFVDaGFyKiwgc2l6ZV90KTsKQEAgLTg3LDEwICs4NywxMCBAQAog
Y2xhc3MgU3RyaW5nIHsKIHB1YmxpYzoKICAgICAvLyBDb25zdHJ1Y3QgYSBudWxsIHN0cmluZywg
ZGlzdGluZ3Vpc2hhYmxlIGZyb20gYW4gZW1wdHkgc3RyaW5nLgotICAgIFN0cmluZygpIHsgfQor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcoKSB7IH0KIAogICAgIC8vIENvbnN0cnVjdCBh
IHN0cmluZyB3aXRoIFVURi0xNiBkYXRhLgotICAgIFN0cmluZyhjb25zdCBVQ2hhciogY2hhcmFj
dGVycywgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNv
bnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpOwogCiAgICAgLy8gQ29uc3Ry
dWN0IGEgc3RyaW5nIGJ5IGNvcHlpbmcgdGhlIGNvbnRlbnRzIG9mIGEgdmVjdG9yLiAgVG8gYXZv
aWQKICAgICAvLyBjb3B5aW5nLCBjb25zaWRlciB1c2luZyBTdHJpbmc6OmFkb3B0IGluc3RlYWQu
CkBAIC05OCwxOCArOTgsMTggQEAKICAgICBleHBsaWNpdCBTdHJpbmcoY29uc3QgVmVjdG9yPFVD
aGFyLCBpbmxpbmVDYXBhY2l0eT4mKTsKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyB3aXRo
IFVURi0xNiBkYXRhLCBmcm9tIGEgbnVsbC10ZXJtaW5hdGVkIHNvdXJjZS4KLSAgICBTdHJpbmco
Y29uc3QgVUNoYXIqKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IFVDaGFy
Kik7CiAKICAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBsYXRpbjEgZGF0YS4KLSAgICBT
dHJpbmcoY29uc3QgY2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxl
bmd0aCk7CiAKICAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBsYXRpbjEgZGF0YSwgZnJv
bSBhIG51bGwtdGVybWluYXRlZCBzb3VyY2UuCi0gICAgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJh
Y3RlcnMpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcoY29uc3QgY2hhciogY2hhcmFj
dGVycyk7CiAKICAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgcmVmZXJlbmNpbmcgYW4gZXhpc3Rp
bmcgU3RyaW5nSW1wbC4KLSAgICBTdHJpbmcoU3RyaW5nSW1wbCogaW1wbCkgOiBtX2ltcGwoaW1w
bCkgeyB9Ci0gICAgU3RyaW5nKFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gaW1wbCkgOiBtX2ltcGwo
aW1wbCkgeyB9Ci0gICAgU3RyaW5nKFJlZlB0cjxTdHJpbmdJbXBsPiBpbXBsKSA6IG1faW1wbChp
bXBsKSB7IH0KKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nKFN0cmluZ0ltcGwqIGltcGwp
IDogbV9pbXBsKGltcGwpIHsgfQorICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcoUGFzc1Jl
ZlB0cjxTdHJpbmdJbXBsPiBpbXBsKSA6IG1faW1wbChpbXBsKSB7IH0KKyAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgU3RyaW5nKFJlZlB0cjxTdHJpbmdJbXBsPiBpbXBsKSA6IG1faW1wbChpbXBsKSB7
IH0KIAogICAgIC8vIElubGluZSB0aGUgZGVzdHJ1Y3Rvci4KICAgICBBTFdBWVNfSU5MSU5FIH5T
dHJpbmcoKSB7IH0KQEAgLTEzOSw5ICsxMzksOSBAQAogICAgICAgICByZXR1cm4gbV9pbXBsLT5j
aGFyYWN0ZXJzKCk7CiAgICAgfQogCi0gICAgQ1N0cmluZyBhc2NpaSgpIGNvbnN0OwotICAgIENT
dHJpbmcgbGF0aW4xKCkgY29uc3Q7Ci0gICAgQ1N0cmluZyB1dGY4KGJvb2wgc3RyaWN0ID0gZmFs
c2UpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBDU3RyaW5nIGFzY2lpKCkgY29uc3Q7
CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIENTdHJpbmcgbGF0aW4xKCkgY29uc3Q7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIENTdHJpbmcgdXRmOChib29sIHN0cmljdCA9IGZhbHNlKSBjb25zdDsK
IAogICAgIFVDaGFyIG9wZXJhdG9yW10odW5zaWduZWQgaW5kZXgpIGNvbnN0CiAgICAgewpAQCAt
MTUwLDE1ICsxNTAsMTUgQEAKICAgICAgICAgcmV0dXJuIG1faW1wbC0+Y2hhcmFjdGVycygpW2lu
ZGV4XTsKICAgICB9CiAKLSAgICBzdGF0aWMgU3RyaW5nIG51bWJlcihzaG9ydCk7Ci0gICAgc3Rh
dGljIFN0cmluZyBudW1iZXIodW5zaWduZWQgc2hvcnQpOwotICAgIHN0YXRpYyBTdHJpbmcgbnVt
YmVyKGludCk7Ci0gICAgc3RhdGljIFN0cmluZyBudW1iZXIodW5zaWduZWQpOwotICAgIHN0YXRp
YyBTdHJpbmcgbnVtYmVyKGxvbmcpOwotICAgIHN0YXRpYyBTdHJpbmcgbnVtYmVyKHVuc2lnbmVk
IGxvbmcpOwotICAgIHN0YXRpYyBTdHJpbmcgbnVtYmVyKGxvbmcgbG9uZyk7Ci0gICAgc3RhdGlj
IFN0cmluZyBudW1iZXIodW5zaWduZWQgbG9uZyBsb25nKTsKLSAgICBzdGF0aWMgU3RyaW5nIG51
bWJlcihkb3VibGUpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RyaW5nIG51bWJl
cihzaG9ydCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJpbmcgbnVtYmVyKHVu
c2lnbmVkIHNob3J0KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cmluZyBudW1i
ZXIoaW50KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cmluZyBudW1iZXIodW5z
aWduZWQpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RyaW5nIG51bWJlcihsb25n
KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cmluZyBudW1iZXIodW5zaWduZWQg
bG9uZyk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJpbmcgbnVtYmVyKGxvbmcg
bG9uZyk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJpbmcgbnVtYmVyKHVuc2ln
bmVkIGxvbmcgbG9uZyk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJpbmcgbnVt
YmVyKGRvdWJsZSk7CiAKICAgICAvLyBGaW5kIGEgc2luZ2xlIGNoYXJhY3RlciBvciBzdHJpbmcs
IGFsc28gd2l0aCBtYXRjaCBmdW5jdGlvbiAmIGxhdGluMSBmb3Jtcy4KICAgICBzaXplX3QgZmlu
ZChVQ2hhciBjLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0CkBAIC0xNzcsOSArMTc3LDkgQEAK
ICAgICAgICAgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5yZXZlcnNlRmluZChzdHIuaW1wbCgp
LCBzdGFydCkgOiBub3RGb3VuZDsgfQogCiAgICAgLy8gQ2FzZSBpbnNlbnNpdGl2ZSBzdHJpbmcg
bWF0Y2hpbmcuCi0gICAgc2l6ZV90IGZpbmRJZ25vcmluZ0Nhc2UoY29uc3QgY2hhciogc3RyLCB1
bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCBm
aW5kSWdub3JpbmdDYXNlKGNvbnN0IGNoYXIqIHN0ciwgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25z
dAogICAgICAgICB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmZpbmRJZ25vcmluZ0Nhc2Uoc3Ry
LCBzdGFydCkgOiBub3RGb3VuZDsgfQotICAgIHNpemVfdCBmaW5kSWdub3JpbmdDYXNlKGNvbnN0
IFN0cmluZyYgc3RyLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHNpemVfdCBmaW5kSWdub3JpbmdDYXNlKGNvbnN0IFN0cmluZyYgc3RyLCB1bnNpZ25l
ZCBzdGFydCA9IDApIGNvbnN0CiAgICAgICAgIHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+Zmlu
ZElnbm9yaW5nQ2FzZShzdHIuaW1wbCgpLCBzdGFydCkgOiBub3RGb3VuZDsgfQogICAgIHNpemVf
dCByZXZlcnNlRmluZElnbm9yaW5nQ2FzZShjb25zdCBTdHJpbmcmIHN0ciwgdW5zaWduZWQgc3Rh
cnQgPSBVSU5UX01BWCkgY29uc3QKICAgICAgICAgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5y
ZXZlcnNlRmluZElnbm9yaW5nQ2FzZShzdHIuaW1wbCgpLCBzdGFydCkgOiBub3RGb3VuZDsgfQpA
QCAtMTkyLDkgKzE5Miw5IEBACiAgICAgc2l6ZV90IHJldmVyc2VGaW5kKGNvbnN0IFN0cmluZyYg
c3RyLCB1bnNpZ25lZCBzdGFydCwgYm9vbCBjYXNlU2Vuc2l0aXZlKSBjb25zdAogICAgICAgICB7
IHJldHVybiBjYXNlU2Vuc2l0aXZlID8gcmV2ZXJzZUZpbmQoc3RyLCBzdGFydCkgOiByZXZlcnNl
RmluZElnbm9yaW5nQ2FzZShzdHIsIHN0YXJ0KTsgfQogCi0gICAgY29uc3QgVUNoYXIqIGNoYXJh
Y3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGNvbnN0
IFVDaGFyKiBjaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpOwogICAgIAotICAgIFVDaGFy
MzIgY2hhcmFjdGVyU3RhcnRpbmdBdCh1bnNpZ25lZCkgY29uc3Q7IC8vIERpdHRvLgorICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBVQ2hhcjMyIGNoYXJhY3RlclN0YXJ0aW5nQXQodW5zaWduZWQpIGNv
bnN0OyAvLyBEaXR0by4KICAgICAKICAgICBib29sIGNvbnRhaW5zKFVDaGFyIGMpIGNvbnN0IHsg
cmV0dXJuIGZpbmQoYykgIT0gbm90Rm91bmQ7IH0KICAgICBib29sIGNvbnRhaW5zKGNvbnN0IGNo
YXIqIHN0ciwgYm9vbCBjYXNlU2Vuc2l0aXZlID0gdHJ1ZSkgY29uc3QgeyByZXR1cm4gZmluZChz
dHIsIDAsIGNhc2VTZW5zaXRpdmUpICE9IG5vdEZvdW5kOyB9CkBAIC0yMDUsMTEgKzIwNSwxMSBA
QAogICAgIGJvb2wgZW5kc1dpdGgoY29uc3QgU3RyaW5nJiBzLCBib29sIGNhc2VTZW5zaXRpdmUg
PSB0cnVlKSBjb25zdAogICAgICAgICB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmVuZHNXaXRo
KHMuaW1wbCgpLCBjYXNlU2Vuc2l0aXZlKSA6IHMuaXNFbXB0eSgpOyB9CiAKLSAgICB2b2lkIGFw
cGVuZChjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIGFwcGVuZChjaGFyKTsKLSAgICB2b2lkIGFw
cGVuZChVQ2hhcik7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5n
dGgpOwotICAgIHZvaWQgaW5zZXJ0KGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIHBvcyk7CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYpOworICAgIFdURl9F
WFBPUlRfUFJJVkFURSB2b2lkIGFwcGVuZChjaGFyKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
dm9pZCBhcHBlbmQoVUNoYXIpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGFwcGVuZChj
b25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZv
aWQgaW5zZXJ0KGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIHBvcyk7CiAgICAgdm9pZCBpbnNlcnQo
Y29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIHBvcyk7CiAKICAgICBTdHJp
bmcmIHJlcGxhY2UoVUNoYXIgYSwgVUNoYXIgYikgeyBpZiAobV9pbXBsKSBtX2ltcGwgPSBtX2lt
cGwtPnJlcGxhY2UoYSwgYik7IHJldHVybiAqdGhpczsgfQpAQCAtMjIxLDMxICsyMjEsMzEgQEAK
ICAgICB2b2lkIG1ha2VVcHBlcigpIHsgaWYgKG1faW1wbCkgbV9pbXBsID0gbV9pbXBsLT51cHBl
cigpOyB9CiAgICAgdm9pZCBtYWtlU2VjdXJlKFVDaGFyIGFDaGFyKSB7IGlmIChtX2ltcGwpIG1f
aW1wbCA9IG1faW1wbC0+c2VjdXJlKGFDaGFyKTsgfQogCi0gICAgdm9pZCB0cnVuY2F0ZSh1bnNp
Z25lZCBsZW4pOwotICAgIHZvaWQgcmVtb3ZlKHVuc2lnbmVkIHBvcywgaW50IGxlbiA9IDEpOwor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHRydW5jYXRlKHVuc2lnbmVkIGxlbik7CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVtb3ZlKHVuc2lnbmVkIHBvcywgaW50IGxlbiA9IDEp
OwogCi0gICAgU3RyaW5nIHN1YnN0cmluZyh1bnNpZ25lZCBwb3MsIHVuc2lnbmVkIGxlbiA9IFVJ
TlRfTUFYKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHN1YnN0cmluZyh1
bnNpZ25lZCBwb3MsIHVuc2lnbmVkIGxlbiA9IFVJTlRfTUFYKSBjb25zdDsKICAgICBTdHJpbmcg
c3Vic3RyaW5nU2hhcmluZ0ltcGwodW5zaWduZWQgcG9zLCB1bnNpZ25lZCBsZW4gPSBVSU5UX01B
WCkgY29uc3Q7CiAgICAgU3RyaW5nIGxlZnQodW5zaWduZWQgbGVuKSBjb25zdCB7IHJldHVybiBz
dWJzdHJpbmcoMCwgbGVuKTsgfQogICAgIFN0cmluZyByaWdodCh1bnNpZ25lZCBsZW4pIGNvbnN0
IHsgcmV0dXJuIHN1YnN0cmluZyhsZW5ndGgoKSAtIGxlbiwgbGVuKTsgfQogCiAgICAgLy8gUmV0
dXJucyBhIGxvd2VyY2FzZS91cHBlcmNhc2UgdmVyc2lvbiBvZiB0aGUgc3RyaW5nCi0gICAgU3Ry
aW5nIGxvd2VyKCkgY29uc3Q7Ci0gICAgU3RyaW5nIHVwcGVyKCkgY29uc3Q7CisgICAgV1RGX0VY
UE9SVF9QUklWQVRFIFN0cmluZyBsb3dlcigpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBTdHJpbmcgdXBwZXIoKSBjb25zdDsKIAotICAgIFN0cmluZyBzdHJpcFdoaXRlU3BhY2UoKSBj
b25zdDsKLSAgICBTdHJpbmcgc2ltcGxpZnlXaGl0ZVNwYWNlKCkgY29uc3Q7CisgICAgV1RGX0VY
UE9SVF9QUklWQVRFIFN0cmluZyBzdHJpcFdoaXRlU3BhY2UoKSBjb25zdDsKKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgU3RyaW5nIHNpbXBsaWZ5V2hpdGVTcGFjZSgpIGNvbnN0OwogCi0gICAgU3Ry
aW5nIHJlbW92ZUNoYXJhY3RlcnMoQ2hhcmFjdGVyTWF0Y2hGdW5jdGlvblB0cikgY29uc3Q7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyByZW1vdmVDaGFyYWN0ZXJzKENoYXJhY3Rlck1h
dGNoRnVuY3Rpb25QdHIpIGNvbnN0OwogICAgIHRlbXBsYXRlPGJvb2wgaXNTcGVjaWFsQ2hhcmFj
dGVyKFVDaGFyKT4gYm9vbCBpc0FsbFNwZWNpYWxDaGFyYWN0ZXJzKCkgY29uc3Q7CiAKICAgICAv
LyBSZXR1cm4gdGhlIHN0cmluZyB3aXRoIGNhc2UgZm9sZGVkIGZvciBjYXNlIGluc2Vuc2l0aXZl
IGNvbXBhcmlzb24uCi0gICAgU3RyaW5nIGZvbGRDYXNlKCkgY29uc3Q7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIFN0cmluZyBmb2xkQ2FzZSgpIGNvbnN0OwogCiAjaWYgIVBMQVRGT1JNKFFUKQot
ICAgIHN0YXRpYyBTdHJpbmcgZm9ybWF0KGNvbnN0IGNoYXIgKiwgLi4uKSBXVEZfQVRUUklCVVRF
X1BSSU5URigxLCAyKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cmluZyBmb3Jt
YXQoY29uc3QgY2hhciAqLCAuLi4pIFdURl9BVFRSSUJVVEVfUFJJTlRGKDEsIDIpOwogI2Vsc2UK
LSAgICBzdGF0aWMgU3RyaW5nIGZvcm1hdChjb25zdCBjaGFyICosIC4uLik7CisgICAgV1RGX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBTdHJpbmcgZm9ybWF0KGNvbnN0IGNoYXIgKiwgLi4uKTsKICNl
bmRpZgogCiAgICAgLy8gUmV0dXJucyBhbiB1bmluaXRpYWxpemVkIHN0cmluZy4gVGhlIGNoYXJh
Y3RlcnMgbmVlZHMgdG8gYmUgd3JpdHRlbgpAQCAtMjUzLDM0ICsyNTMsMzQgQEAKICAgICAvLyBG
YWlsdXJlIHRvIGRvIHRoaXMgd2lsbCBoYXZlIHVucHJlZGljdGFibGUgcmVzdWx0cy4KICAgICBz
dGF0aWMgU3RyaW5nIGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoLCBVQ2hhciom
IGRhdGEpIHsgcmV0dXJuIFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBk
YXRhKTsgfQogCi0gICAgdm9pZCBzcGxpdChjb25zdCBTdHJpbmcmIHNlcGFyYXRvciwgVmVjdG9y
PFN0cmluZz4mIHJlc3VsdCkgY29uc3Q7Ci0gICAgdm9pZCBzcGxpdChjb25zdCBTdHJpbmcmIHNl
cGFyYXRvciwgYm9vbCBhbGxvd0VtcHR5RW50cmllcywgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkg
Y29uc3Q7Ci0gICAgdm9pZCBzcGxpdChVQ2hhciBzZXBhcmF0b3IsIFZlY3RvcjxTdHJpbmc+JiBy
ZXN1bHQpIGNvbnN0OwotICAgIHZvaWQgc3BsaXQoVUNoYXIgc2VwYXJhdG9yLCBib29sIGFsbG93
RW1wdHlFbnRyaWVzLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KSBjb25zdDsKKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBzcGxpdChjb25zdCBTdHJpbmcmIHNlcGFyYXRvciwgVmVjdG9yPFN0
cmluZz4mIHJlc3VsdCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc3BsaXQo
Y29uc3QgU3RyaW5nJiBzZXBhcmF0b3IsIGJvb2wgYWxsb3dFbXB0eUVudHJpZXMsIFZlY3RvcjxT
dHJpbmc+JiByZXN1bHQpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNwbGl0
KFVDaGFyIHNlcGFyYXRvciwgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkgY29uc3Q7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIHZvaWQgc3BsaXQoVUNoYXIgc2VwYXJhdG9yLCBib29sIGFsbG93RW1w
dHlFbnRyaWVzLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KSBjb25zdDsKIAotICAgIGludCB0b0lu
dFN0cmljdChib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApIGNvbnN0OwotICAgIHVuc2lnbmVk
IHRvVUludFN0cmljdChib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApIGNvbnN0OwotICAgIGlu
dDY0X3QgdG9JbnQ2NFN0cmljdChib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApIGNvbnN0Owot
ICAgIHVpbnQ2NF90IHRvVUludDY0U3RyaWN0KGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCkg
Y29uc3Q7Ci0gICAgaW50cHRyX3QgdG9JbnRQdHJTdHJpY3QoYm9vbCogb2sgPSAwLCBpbnQgYmFz
ZSA9IDEwKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgaW50IHRvSW50U3RyaWN0KGJv
b2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IHVuc2lnbmVkIHRvVUludFN0cmljdChib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApIGNvbnN0
OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBpbnQ2NF90IHRvSW50NjRTdHJpY3QoYm9vbCogb2sg
PSAwLCBpbnQgYmFzZSA9IDEwKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdWludDY0
X3QgdG9VSW50NjRTdHJpY3QoYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKSBjb25zdDsKKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgaW50cHRyX3QgdG9JbnRQdHJTdHJpY3QoYm9vbCogb2sgPSAw
LCBpbnQgYmFzZSA9IDEwKSBjb25zdDsKIAotICAgIGludCB0b0ludChib29sKiBvayA9IDApIGNv
bnN0OwotICAgIHVuc2lnbmVkIHRvVUludChib29sKiBvayA9IDApIGNvbnN0OworICAgIFdURl9F
WFBPUlRfUFJJVkFURSBpbnQgdG9JbnQoYm9vbCogb2sgPSAwKSBjb25zdDsKKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgdW5zaWduZWQgdG9VSW50KGJvb2wqIG9rID0gMCkgY29uc3Q7CiAgICAgaW50
NjRfdCB0b0ludDY0KGJvb2wqIG9rID0gMCkgY29uc3Q7Ci0gICAgdWludDY0X3QgdG9VSW50NjQo
Ym9vbCogb2sgPSAwKSBjb25zdDsKLSAgICBpbnRwdHJfdCB0b0ludFB0cihib29sKiBvayA9IDAp
IGNvbnN0OwotICAgIGRvdWJsZSB0b0RvdWJsZShib29sKiBvayA9IDAsIGJvb2wqIGRpZFJlYWRO
dW1iZXIgPSAwKSBjb25zdDsKLSAgICBmbG9hdCB0b0Zsb2F0KGJvb2wqIG9rID0gMCwgYm9vbCog
ZGlkUmVhZE51bWJlciA9IDApIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSB1aW50NjRf
dCB0b1VJbnQ2NChib29sKiBvayA9IDApIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBp
bnRwdHJfdCB0b0ludFB0cihib29sKiBvayA9IDApIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBkb3VibGUgdG9Eb3VibGUoYm9vbCogb2sgPSAwLCBib29sKiBkaWRSZWFkTnVtYmVyID0g
MCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGZsb2F0IHRvRmxvYXQoYm9vbCogb2sg
PSAwLCBib29sKiBkaWRSZWFkTnVtYmVyID0gMCkgY29uc3Q7CiAKICAgICBib29sIHBlcmNlbnRh
Z2UoaW50JiBwZXJjZW50YWdlKSBjb25zdDsKIAogICAgIC8vIFJldHVybnMgYSBTdHJpbmdJbXBs
IHN1aXRhYmxlIGZvciB1c2Ugb24gYW5vdGhlciB0aHJlYWQuCi0gICAgU3RyaW5nIGNyb3NzVGhy
ZWFkU3RyaW5nKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBjcm9zc1Ro
cmVhZFN0cmluZygpIGNvbnN0OwogICAgIC8vIE1ha2VzIGEgZGVlcCBjb3B5LiBIZWxwZnVsIG9u
bHkgaWYgeW91IG5lZWQgdG8gdXNlIGEgU3RyaW5nIG9uIGFub3RoZXIgdGhyZWFkCiAgICAgLy8g
KHVzZSBjcm9zc1RocmVhZFN0cmluZyBpZiB0aGUgbWV0aG9kIGNhbGwgZG9lc24ndCBuZWVkIHRv
IGJlIHRocmVhZHNhZmUpLgogICAgIC8vIFNpbmNlIHRoZSB1bmRlcmx5aW5nIFN0cmluZ0ltcGwg
b2JqZWN0cyBhcmUgaW1tdXRhYmxlLCB0aGVyZSdzIG5vIG90aGVyIHJlYXNvbgogICAgIC8vIHRv
IGV2ZXIgcHJlZmVyIGNvcHkoKSBvdmVyIHBsYWluIG9sZCBhc3NpZ25tZW50LgotICAgIFN0cmlu
ZyB0aHJlYWRzYWZlQ29weSgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcg
dGhyZWFkc2FmZUNvcHkoKSBjb25zdDsKIAogICAgIC8vIFByZXZlbnQgU3RyaW5ncyBmcm9tIGJl
aW5nIGltcGxpY2l0bHkgY29udmVydGFibGUgdG8gYm9vbCBhcyBpdCB3aWxsIGJlIGFtYmlndW91
cyBvbiBhbnkgcGxhdGZvcm0gdGhhdAogICAgIC8vIGFsbG93cyBpbXBsaWNpdCBjb252ZXJzaW9u
IHRvIGFub3RoZXIgcG9pbnRlciB0eXBlIChlLmcuLCBNYWMgYWxsb3dzIGltcGxpY2l0IGNvbnZl
cnNpb24gdG8gTlNTdHJpbmcqKS4KQEAgLTMwOSw4ICszMDksOCBAQAogI2VuZGlmCiAKICNpZiBQ
TEFURk9STShXWCkKLSAgICBTdHJpbmcoY29uc3Qgd3hTdHJpbmcmKTsKLSAgICBvcGVyYXRvciB3
eFN0cmluZygpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcoY29uc3Qgd3hT
dHJpbmcmKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgb3BlcmF0b3Igd3hTdHJpbmcoKSBjb25z
dDsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSEFJS1UpCkBAIC0zMjQsMTEgKzMyNCwxMSBAQAog
CiAgICAgLy8gU3RyaW5nOjpmcm9tVVRGOCB3aWxsIHJldHVybiBhIG51bGwgc3RyaW5nIGlmCiAg
ICAgLy8gdGhlIGlucHV0IGRhdGEgY29udGFpbnMgaW52YWxpZCBVVEYtOCBzZXF1ZW5jZXMuCi0g
ICAgc3RhdGljIFN0cmluZyBmcm9tVVRGOChjb25zdCBjaGFyKiwgc2l6ZV90KTsKLSAgICBzdGF0
aWMgU3RyaW5nIGZyb21VVEY4KGNvbnN0IGNoYXIqKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIFN0cmluZyBmcm9tVVRGOChjb25zdCBjaGFyKiwgc2l6ZV90KTsKKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIFN0cmluZyBmcm9tVVRGOChjb25zdCBjaGFyKik7CiAKICAgICAv
LyBUcmllcyB0byBjb252ZXJ0IHRoZSBwYXNzZWQgaW4gc3RyaW5nIHRvIFVURi04LCBidXQgd2ls
bCBmYWxsIGJhY2sgdG8gTGF0aW4tMSBpZiB0aGUgc3RyaW5nIGlzIG5vdCB2YWxpZCBVVEYtOC4K
LSAgICBzdGF0aWMgU3RyaW5nIGZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNrKGNvbnN0IGNoYXIq
LCBzaXplX3QpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RyaW5nIGZyb21VVEY4
V2l0aExhdGluMUZhbGxiYWNrKGNvbnN0IGNoYXIqLCBzaXplX3QpOwogICAgIAogICAgIC8vIERl
dGVybWluZXMgdGhlIHdyaXRpbmcgZGlyZWN0aW9uIHVzaW5nIHRoZSBVbmljb2RlIEJpZGkgQWxn
b3JpdGhtIHJ1bGVzIFAyIGFuZCBQMy4KICAgICBXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbiBkZWZh
dWx0V3JpdGluZ0RpcmVjdGlvbihib29sKiBoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSA9IDApIGNv
bnN0CkBAIC0zNDUsNyArMzQ1LDcgQEAKIAogICAgIC8vIEhhc2ggdGFibGUgZGVsZXRlZCB2YWx1
ZXMsIHdoaWNoIGFyZSBvbmx5IGNvbnN0cnVjdGVkIGFuZCBuZXZlciBjb3BpZWQgb3IgZGVzdHJv
eWVkLgogICAgIFN0cmluZyhXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpIDogbV9pbXBs
KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKSB7IH0KLSAgICBib29sIGlzSGFzaFRhYmxlRGVs
ZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9pbXBsLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVl
KCk7IH0KKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1
ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1wbC5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9CiAK
IHByaXZhdGU6CiAgICAgUmVmUHRyPFN0cmluZ0ltcGw+IG1faW1wbDsKQEAgLTM1Niw5ICszNTYs
OSBAQAogUURhdGFTdHJlYW0mIG9wZXJhdG9yPj4oUURhdGFTdHJlYW0mIHN0cmVhbSwgU3RyaW5n
JiBzdHIpOwogI2VuZGlmCiAKLVN0cmluZyBvcGVyYXRvcisoY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJik7Ci1TdHJpbmcgb3BlcmF0b3IrKGNvbnN0IFN0cmluZyYsIGNvbnN0IGNoYXIqKTsK
LVN0cmluZyBvcGVyYXRvcisoY29uc3QgY2hhciosIGNvbnN0IFN0cmluZyYpOworV1RGX0VYUE9S
VF9QUklWQVRFIFN0cmluZyBvcGVyYXRvcisoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7
CitXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIG9wZXJhdG9yKyhjb25zdCBTdHJpbmcmLCBjb25z
dCBjaGFyKik7CitXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIG9wZXJhdG9yKyhjb25zdCBjaGFy
KiwgY29uc3QgU3RyaW5nJik7CiAKIGlubGluZSBTdHJpbmcmIG9wZXJhdG9yKz0oU3RyaW5nJiBh
LCBjb25zdCBTdHJpbmcmIGIpIHsgYS5hcHBlbmQoYik7IHJldHVybiBhOyB9CiAKQEAgLTQxOSw3
ICs0MTksNyBAQAogICAgIHJldHVybiAhKG9yZWQgJiAweEZGMDApOwogfQogCi1pbnQgY29kZVBv
aW50Q29tcGFyZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKK1dURl9FWFBPUlRfUFJJ
VkFURSBpbnQgY29kZVBvaW50Q29tcGFyZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsK
IAogaW5saW5lIHNpemVfdCBmaW5kKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBs
ZW5ndGgsIFVDaGFyIG1hdGNoQ2hhcmFjdGVyLCB1bnNpZ25lZCBpbmRleCA9IDApCiB7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgJKHJldmlzaW9u
IDgyMDEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAko
d29ya2luZyBjb3B5KQpAQCAtMTQxLDExICsxNDEsMTEgQEAKICAgICB9CiAKIHB1YmxpYzoKLSAg
ICB+U3RyaW5nSW1wbCgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB+U3RyaW5nSW1wbCgpOwog
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gY3JlYXRlKGNvbnN0IFVDaGFyKiwg
dW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBjcmVh
dGUoY29uc3QgY2hhciosIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
U3RyaW5nSW1wbD4gY3JlYXRlKGNvbnN0IGNoYXIqKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gY3JlYXRlKGNvbnN0IFVDaGFyKiwgdW5zaWdu
ZWQgbGVuZ3RoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8U3Ry
aW5nSW1wbD4gY3JlYXRlKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIFdURl9F
WFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBjcmVhdGUoY29uc3Qg
Y2hhciopOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGNyZWF0ZShjb25zdCBV
Q2hhciosIHVuc2lnbmVkIGxlbmd0aCwgUGFzc1JlZlB0cjxTaGFyZWRVQ2hhcj4gc2hhcmVkQnVm
ZmVyKTsKICAgICBzdGF0aWMgQUxXQVlTX0lOTElORSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGNy
ZWF0ZShQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJlcCwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25l
ZCBsZW5ndGgpCiAgICAgewpAQCAtMTU5LDcgKzE1OSw3IEBACiAgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgU3RyaW5nSW1wbChyZXAtPm1fZGF0YSArIG9mZnNldCwgbGVuZ3RoLCBvd25lclJl
cCkpOwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGNyZWF0ZVVu
aW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoLCBVQ2hhciomIGRhdGEpOworICAgIFdURl9FWFBP
UlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBjcmVhdGVVbmluaXRpYWxp
emVkKHVuc2lnbmVkIGxlbmd0aCwgVUNoYXIqJiBkYXRhKTsKICAgICBzdGF0aWMgQUxXQVlTX0lO
TElORSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWdu
ZWQgbGVuZ3RoLCBVQ2hhciomIG91dHB1dCkKICAgICB7CiAgICAgICAgIGlmICghbGVuZ3RoKSB7
CkBAIC0xOTUsMTAgKzE5NSwxMCBAQAogICAgICAgICB9CiAgICAgICAgIHJldHVybiBlbXB0eSgp
OwogICAgIH0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZG9wdChTdHJpbmdC
dWZmZXImKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5n
SW1wbD4gYWRvcHQoU3RyaW5nQnVmZmVyJik7CiAKICAgICBTaGFyZWRVQ2hhciogc2hhcmVkQnVm
ZmVyKCk7Ci0gICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMoKSBjb25zdCB7IHJldHVybiBtX2Rh
dGE7IH0KKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMoKSBj
b25zdCB7IHJldHVybiBtX2RhdGE7IH0KIAogICAgIHNpemVfdCBjb3N0KCkKICAgICB7CkBAIC0y
NDEsNyArMjQxLDcgQEAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZGVyZWYoKSB7IG1fcmVmQ291
bnRBbmRGbGFncyAtPSBzX3JlZkNvdW50SW5jcmVtZW50OyBpZiAoIShtX3JlZkNvdW50QW5kRmxh
Z3MgJiAoc19yZWZDb3VudE1hc2sgfCBzX3JlZkNvdW50RmxhZ1N0YXRpYykpKSBkZWxldGUgdGhp
czsgfQogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBoYXNPbmVSZWYoKSBjb25zdCB7IHJldHVybiAo
bV9yZWZDb3VudEFuZEZsYWdzICYgKHNfcmVmQ291bnRNYXNrIHwgc19yZWZDb3VudEZsYWdTdGF0
aWMpKSA9PSBzX3JlZkNvdW50SW5jcmVtZW50OyB9CiAKLSAgICBzdGF0aWMgU3RyaW5nSW1wbCog
ZW1wdHkoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cmluZ0ltcGwqIGVtcHR5
KCk7CiAKICAgICBzdGF0aWMgdm9pZCBjb3B5Q2hhcnMoVUNoYXIqIGRlc3RpbmF0aW9uLCBjb25z
dCBVQ2hhciogc291cmNlLCB1bnNpZ25lZCBudW1DaGFyYWN0ZXJzKQogICAgIHsKQEAgLTI1OSwx
MiArMjU5LDEyIEBACiAgICAgLy8gU2luY2UgU3RyaW5nSW1wbCBvYmplY3RzIGFyZSBpbW11dGFi
bGUsIHRoZXJlJ3Mgbm8gb3RoZXIgcmVhc29uIHRvIG1ha2UgYSBjb3B5LgogICAgIFBhc3NSZWZQ
dHI8U3RyaW5nSW1wbD4gdGhyZWFkc2FmZUNvcHkoKSBjb25zdDsKIAotICAgIFBhc3NSZWZQdHI8
U3RyaW5nSW1wbD4gc3Vic3RyaW5nKHVuc2lnbmVkIHBvcywgdW5zaWduZWQgbGVuID0gVUlOVF9N
QVgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHN1YnN0
cmluZyh1bnNpZ25lZCBwb3MsIHVuc2lnbmVkIGxlbiA9IFVJTlRfTUFYKTsKIAogICAgIFVDaGFy
IG9wZXJhdG9yW10odW5zaWduZWQgaSkgeyBBU1NFUlQoaSA8IG1fbGVuZ3RoKTsgcmV0dXJuIG1f
ZGF0YVtpXTsgfQogICAgIFVDaGFyMzIgY2hhcmFjdGVyU3RhcnRpbmdBdCh1bnNpZ25lZCk7CiAK
LSAgICBib29sIGNvbnRhaW5zT25seVdoaXRlc3BhY2UoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgYm9vbCBjb250YWluc09ubHlXaGl0ZXNwYWNlKCk7CiAKICAgICBpbnQgdG9JbnRTdHJpY3Qo
Ym9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKTsKICAgICB1bnNpZ25lZCB0b1VJbnRTdHJpY3Qo
Ym9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKTsKQEAgLTI3Miw3ICsyNzIsNyBAQAogICAgIHVp
bnQ2NF90IHRvVUludDY0U3RyaWN0KGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCk7CiAgICAg
aW50cHRyX3QgdG9JbnRQdHJTdHJpY3QoYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKTsKIAot
ICAgIGludCB0b0ludChib29sKiBvayA9IDApOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UK
KyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgaW50IHRvSW50KGJvb2wqIG9rID0gMCk7IC8vIGlnbm9y
ZXMgdHJhaWxpbmcgZ2FyYmFnZQogICAgIHVuc2lnbmVkIHRvVUludChib29sKiBvayA9IDApOyAv
LyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKICAgICBpbnQ2NF90IHRvSW50NjQoYm9vbCogb2sg
PSAwKTsgLy8gaWdub3JlcyB0cmFpbGluZyBnYXJiYWdlCiAgICAgdWludDY0X3QgdG9VSW50NjQo
Ym9vbCogb2sgPSAwKTsgLy8gaWdub3JlcyB0cmFpbGluZyBnYXJiYWdlCkBAIC0yODEsMzkgKzI4
MSwzOSBAQAogICAgIGRvdWJsZSB0b0RvdWJsZShib29sKiBvayA9IDAsIGJvb2wqIGRpZFJlYWRO
dW1iZXIgPSAwKTsKICAgICBmbG9hdCB0b0Zsb2F0KGJvb2wqIG9rID0gMCwgYm9vbCogZGlkUmVh
ZE51bWJlciA9IDApOwogCi0gICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBsb3dlcigpOwotICAg
IFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gdXBwZXIoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
UGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBsb3dlcigpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBQ
YXNzUmVmUHRyPFN0cmluZ0ltcGw+IHVwcGVyKCk7CiAKICAgICBlbnVtIExhc3RDaGFyYWN0ZXJC
ZWhhdmlvciB7IE9ic2N1cmVMYXN0Q2hhcmFjdGVyLCBEaXNwbGF5TGFzdENoYXJhY3RlciB9Owog
Ci0gICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBzZWN1cmUoVUNoYXIsIExhc3RDaGFyYWN0ZXJC
ZWhhdmlvciA9IE9ic2N1cmVMYXN0Q2hhcmFjdGVyKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
UGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBzZWN1cmUoVUNoYXIsIExhc3RDaGFyYWN0ZXJCZWhhdmlv
ciA9IE9ic2N1cmVMYXN0Q2hhcmFjdGVyKTsKICAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGZv
bGRDYXNlKCk7CiAKICAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHN0cmlwV2hpdGVTcGFjZSgp
OwotICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gc2ltcGxpZnlXaGl0ZVNwYWNlKCk7CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gc2ltcGxpZnlXaGl0ZVNw
YWNlKCk7CiAKICAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJlbW92ZUNoYXJhY3RlcnMoQ2hh
cmFjdGVyTWF0Y2hGdW5jdGlvblB0cik7CiAKLSAgICBzaXplX3QgZmluZChVQ2hhciwgdW5zaWdu
ZWQgaW5kZXggPSAwKTsKLSAgICBzaXplX3QgZmluZChDaGFyYWN0ZXJNYXRjaEZ1bmN0aW9uUHRy
LCB1bnNpZ25lZCBpbmRleCA9IDApOwotICAgIHNpemVfdCBmaW5kKGNvbnN0IGNoYXIqLCB1bnNp
Z25lZCBpbmRleCA9IDApOwotICAgIHNpemVfdCBmaW5kKFN0cmluZ0ltcGwqLCB1bnNpZ25lZCBp
bmRleCA9IDApOwotICAgIHNpemVfdCBmaW5kSWdub3JpbmdDYXNlKGNvbnN0IGNoYXIqLCB1bnNp
Z25lZCBpbmRleCA9IDApOwotICAgIHNpemVfdCBmaW5kSWdub3JpbmdDYXNlKFN0cmluZ0ltcGwq
LCB1bnNpZ25lZCBpbmRleCA9IDApOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgZmlu
ZChVQ2hhciwgdW5zaWduZWQgaW5kZXggPSAwKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6
ZV90IGZpbmQoQ2hhcmFjdGVyTWF0Y2hGdW5jdGlvblB0ciwgdW5zaWduZWQgaW5kZXggPSAwKTsK
KyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZpbmQoY29uc3QgY2hhciosIHVuc2lnbmVk
IGluZGV4ID0gMCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCBmaW5kKFN0cmluZ0lt
cGwqLCB1bnNpZ25lZCBpbmRleCA9IDApOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3Qg
ZmluZElnbm9yaW5nQ2FzZShjb25zdCBjaGFyKiwgdW5zaWduZWQgaW5kZXggPSAwKTsKKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZpbmRJZ25vcmluZ0Nhc2UoU3RyaW5nSW1wbCosIHVu
c2lnbmVkIGluZGV4ID0gMCk7CiAKLSAgICBzaXplX3QgcmV2ZXJzZUZpbmQoVUNoYXIsIHVuc2ln
bmVkIGluZGV4ID0gVUlOVF9NQVgpOwotICAgIHNpemVfdCByZXZlcnNlRmluZChTdHJpbmdJbXBs
KiwgdW5zaWduZWQgaW5kZXggPSBVSU5UX01BWCk7Ci0gICAgc2l6ZV90IHJldmVyc2VGaW5kSWdu
b3JpbmdDYXNlKFN0cmluZ0ltcGwqLCB1bnNpZ25lZCBpbmRleCA9IFVJTlRfTUFYKTsKKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IHJldmVyc2VGaW5kKFVDaGFyLCB1bnNpZ25lZCBpbmRl
eCA9IFVJTlRfTUFYKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IHJldmVyc2VGaW5k
KFN0cmluZ0ltcGwqLCB1bnNpZ25lZCBpbmRleCA9IFVJTlRfTUFYKTsKKyAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgc2l6ZV90IHJldmVyc2VGaW5kSWdub3JpbmdDYXNlKFN0cmluZ0ltcGwqLCB1bnNp
Z25lZCBpbmRleCA9IFVJTlRfTUFYKTsKIAogICAgIGJvb2wgc3RhcnRzV2l0aChTdHJpbmdJbXBs
KiBzdHIsIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IHRydWUpIHsgcmV0dXJuIChjYXNlU2Vuc2l0aXZl
ID8gcmV2ZXJzZUZpbmQoc3RyLCAwKSA6IHJldmVyc2VGaW5kSWdub3JpbmdDYXNlKHN0ciwgMCkp
ID09IDA7IH0KLSAgICBib29sIGVuZHNXaXRoKFN0cmluZ0ltcGwqLCBib29sIGNhc2VTZW5zaXRp
dmUgPSB0cnVlKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBlbmRzV2l0aChTdHJpbmdJ
bXBsKiwgYm9vbCBjYXNlU2Vuc2l0aXZlID0gdHJ1ZSk7CiAKLSAgICBQYXNzUmVmUHRyPFN0cmlu
Z0ltcGw+IHJlcGxhY2UoVUNoYXIsIFVDaGFyKTsKLSAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+
IHJlcGxhY2UoVUNoYXIsIFN0cmluZ0ltcGwqKTsKLSAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+
IHJlcGxhY2UoU3RyaW5nSW1wbCosIFN0cmluZ0ltcGwqKTsKLSAgICBQYXNzUmVmUHRyPFN0cmlu
Z0ltcGw+IHJlcGxhY2UodW5zaWduZWQgaW5kZXgsIHVuc2lnbmVkIGxlbiwgU3RyaW5nSW1wbCop
OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJlcGxhY2Uo
VUNoYXIsIFVDaGFyKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgUGFzc1JlZlB0cjxTdHJpbmdJ
bXBsPiByZXBsYWNlKFVDaGFyLCBTdHJpbmdJbXBsKik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwbGFjZShTdHJpbmdJbXBsKiwgU3RyaW5nSW1wbCop
OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJlcGxhY2Uo
dW5zaWduZWQgaW5kZXgsIHVuc2lnbmVkIGxlbiwgU3RyaW5nSW1wbCopOwogCi0gICAgV1RGOjpV
bmljb2RlOjpEaXJlY3Rpb24gZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oYm9vbCogaGFzU3Ryb25n
RGlyZWN0aW9uYWxpdHkgPSAwKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgV1RGOjpVbmljb2Rl
OjpEaXJlY3Rpb24gZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oYm9vbCogaGFzU3Ryb25nRGlyZWN0
aW9uYWxpdHkgPSAwKTsKIAogI2lmIFVTRShDRikKICAgICBDRlN0cmluZ1JlZiBjcmVhdGVDRlN0
cmluZygpOwpAQCAtMzI2LDcgKzMyNiw3IEBACiAgICAgLy8gVGhpcyBudW1iZXIgbXVzdCBiZSBh
dCBsZWFzdCAyIHRvIGF2b2lkIHNoYXJpbmcgZW1wdHksIG51bGwgYXMgd2VsbCBhcyAxIGNoYXJh
Y3RlciBzdHJpbmdzIGZyb20gU21hbGxTdHJpbmdzLgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBzX2NvcHlDaGFyc0lubGluZUN1dE9mZiA9IDIwOwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8
U3RyaW5nSW1wbD4gY3JlYXRlU3RyaXBwaW5nTnVsbENoYXJhY3RlcnNTbG93Q2FzZShjb25zdCBV
Q2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQ
YXNzUmVmUHRyPFN0cmluZ0ltcGw+IGNyZWF0ZVN0cmlwcGluZ051bGxDaGFyYWN0ZXJzU2xvd0Nh
c2UoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIAogICAgIEJ1ZmZlck93bmVy
c2hpcCBidWZmZXJPd25lcnNoaXAoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxCdWZmZXJP
d25lcnNoaXA+KG1fcmVmQ291bnRBbmRGbGFncyAmIHNfcmVmQ291bnRNYXNrQnVmZmVyT3duZXJz
aGlwKTsgfQogICAgIGJvb2wgaXNTdGF0aWMoKSBjb25zdCB7IHJldHVybiBtX3JlZkNvdW50QW5k
RmxhZ3MgJiBzX3JlZkNvdW50RmxhZ1N0YXRpYzsgfQpAQCAtMzM5LDE3ICszMzksMTcgQEAKICAg
ICBtdXRhYmxlIHVuc2lnbmVkIG1faGFzaDsKIH07CiAKLWJvb2wgZXF1YWwoY29uc3QgU3RyaW5n
SW1wbCosIGNvbnN0IFN0cmluZ0ltcGwqKTsKLWJvb2wgZXF1YWwoY29uc3QgU3RyaW5nSW1wbCos
IGNvbnN0IGNoYXIqKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGVxdWFsKGNvbnN0IFN0cmlu
Z0ltcGwqLCBjb25zdCBTdHJpbmdJbXBsKik7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBlcXVh
bChjb25zdCBTdHJpbmdJbXBsKiwgY29uc3QgY2hhciopOwogaW5saW5lIGJvb2wgZXF1YWwoY29u
c3QgY2hhciogYSwgU3RyaW5nSW1wbCogYikgeyByZXR1cm4gZXF1YWwoYiwgYSk7IH0KIAotYm9v
bCBlcXVhbElnbm9yaW5nQ2FzZShTdHJpbmdJbXBsKiwgU3RyaW5nSW1wbCopOwotYm9vbCBlcXVh
bElnbm9yaW5nQ2FzZShTdHJpbmdJbXBsKiwgY29uc3QgY2hhciopOworV1RGX0VYUE9SVF9QUklW
QVRFIGJvb2wgZXF1YWxJZ25vcmluZ0Nhc2UoU3RyaW5nSW1wbCosIFN0cmluZ0ltcGwqKTsKK1dU
Rl9FWFBPUlRfUFJJVkFURSBib29sIGVxdWFsSWdub3JpbmdDYXNlKFN0cmluZ0ltcGwqLCBjb25z
dCBjaGFyKik7CiBpbmxpbmUgYm9vbCBlcXVhbElnbm9yaW5nQ2FzZShjb25zdCBjaGFyKiBhLCBT
dHJpbmdJbXBsKiBiKSB7IHJldHVybiBlcXVhbElnbm9yaW5nQ2FzZShiLCBhKTsgfQotYm9vbCBl
cXVhbElnbm9yaW5nQ2FzZShjb25zdCBVQ2hhciogYSwgY29uc3QgY2hhciogYiwgdW5zaWduZWQg
bGVuZ3RoKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGVxdWFsSWdub3JpbmdDYXNlKGNvbnN0
IFVDaGFyKiBhLCBjb25zdCBjaGFyKiBiLCB1bnNpZ25lZCBsZW5ndGgpOwogaW5saW5lIGJvb2wg
ZXF1YWxJZ25vcmluZ0Nhc2UoY29uc3QgY2hhciogYSwgY29uc3QgVUNoYXIqIGIsIHVuc2lnbmVk
IGxlbmd0aCkgeyByZXR1cm4gZXF1YWxJZ25vcmluZ0Nhc2UoYiwgYSwgbGVuZ3RoKTsgfQogCi1i
b29sIGVxdWFsSWdub3JpbmdOdWxsaXR5KFN0cmluZ0ltcGwqLCBTdHJpbmdJbXBsKik7CitXVEZf
RVhQT1JUX1BSSVZBVEUgYm9vbCBlcXVhbElnbm9yaW5nTnVsbGl0eShTdHJpbmdJbXBsKiwgU3Ry
aW5nSW1wbCopOwogCiB0ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHk+CiBib29sIGVxdWFs
SWdub3JpbmdOdWxsaXR5KGNvbnN0IFZlY3RvcjxVQ2hhciwgaW5saW5lQ2FwYWNpdHk+JiBhLCBT
dHJpbmdJbXBsKiBiKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9CeXRlQXJyYXku
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0J5dGVBcnJheS5oCShy
ZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQnl0ZUFycmF5LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTgwLDcgKzgwLDcgQEAKICAgICAgICAgICAgIH0KICAgICAgICAg
fQogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJ5dGVBcnJheT4gY3JlYXRlKHNpemVfdCBz
aXplKTsKKyAgICAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPEJ5dGVB
cnJheT4gY3JlYXRlKHNpemVfdCBzaXplKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIEJ5dGVB
cnJheShzaXplX3Qgc2l6ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZv
cm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgJ
KHJldmlzaW9uIDgyMDEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTkzLDYgKzExOTMsOSBAQAogICAgc2luY2UgbW9zdCBwb3J0
cyB0cnkgdG8gc3VwcG9ydCBzdWItcHJvamVjdCBpbmRlcGVuZGVuY2UsIGFkZGluZyBuZXcgaGVh
ZGVycwogICAgdG8gV1RGIGNhdXNlcyBtYW55IHBvcnRzIHRvIGJyZWFrLCBhbmQgc28gdGhpcyB3
YXkgd2UgY2FuIGFkZHJlc3MgdGhlIGJ1aWxkCiAgICBicmVha2FnZXMgb25lIHBvcnQgYXQgYSB0
aW1lLiAqLworI2lmIFBMQVRGT1JNKFdYKQorI2RlZmluZSBXVEZfVVNFX0VYUE9SVF9NQUNST1Mg
MQorI2Vsc2UKICNkZWZpbmUgV1RGX1VTRV9FWFBPUlRfTUFDUk9TIDAKLQorI2VuZGlmCiAjZW5k
aWYgLyogV1RGX1BsYXRmb3JtX2ggKi8KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9JbnRlcnByZXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCShyZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDAsOCArMTAwLDggQEAKICAgICAgICAgSlNWYWx1ZSBleGVjdXRlKEV2YWxFeGVjdXRhYmxl
KiBldmFsTm9kZSwgQ2FsbEZyYW1lKiBleGVjLCBKU09iamVjdCogdGhpc09iaiwgU2NvcGVDaGFp
bk5vZGUqIHNjb3BlQ2hhaW4pOwogCiAgICAgICAgIEpTVmFsdWUgcmV0cmlldmVBcmd1bWVudHMo
Q2FsbEZyYW1lKiwgSlNGdW5jdGlvbiopIGNvbnN0OwotICAgICAgICBKU1ZhbHVlIHJldHJpZXZl
Q2FsbGVyKENhbGxGcmFtZSosIEpTRnVuY3Rpb24qKSBjb25zdDsKLSAgICAgICAgdm9pZCByZXRy
aWV2ZUxhc3RDYWxsZXIoQ2FsbEZyYW1lKiwgaW50JiBsaW5lTnVtYmVyLCBpbnRwdHJfdCYgc291
cmNlSUQsIFVTdHJpbmcmIHNvdXJjZVVSTCwgSlNWYWx1ZSYgZnVuY3Rpb24pIGNvbnN0OworICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIHJldHJpZXZlQ2FsbGVyKENhbGxGcmFtZSos
IEpTRnVuY3Rpb24qKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCByZXRy
aWV2ZUxhc3RDYWxsZXIoQ2FsbEZyYW1lKiwgaW50JiBsaW5lTnVtYmVyLCBpbnRwdHJfdCYgc291
cmNlSUQsIFVTdHJpbmcmIHNvdXJjZVVSTCwgSlNWYWx1ZSYgZnVuY3Rpb24pIGNvbnN0OwogICAg
ICAgICAKICAgICAgICAgdm9pZCBnZXRBcmd1bWVudHNEYXRhKENhbGxGcmFtZSosIEpTRnVuY3Rp
b24qJiwgcHRyZGlmZl90JiBmaXJzdFBhcmFtZXRlckluZGV4LCBSZWdpc3RlciomIGFyZ3YsIGlu
dCYgYXJnYyk7CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFy
clBhdHRlcm4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJy
UGF0dGVybi5oCShyZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJy
L1lhcnJQYXR0ZXJuLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxMyw3ICszMTMsNyBAQAogfTsKIAog
c3RydWN0IFlhcnJQYXR0ZXJuIHsKLSAgICBZYXJyUGF0dGVybihjb25zdCBVU3RyaW5nJiBwYXR0
ZXJuLCBib29sIGlnbm9yZUNhc2UsIGJvb2wgbXVsdGlsaW5lLCBjb25zdCBjaGFyKiogZXJyb3Ip
OworICAgIEpTX0VYUE9SVF9QUklWQVRFIFlhcnJQYXR0ZXJuKGNvbnN0IFVTdHJpbmcmIHBhdHRl
cm4sIGJvb2wgaWdub3JlQ2FzZSwgYm9vbCBtdWx0aWxpbmUsIGNvbnN0IGNoYXIqKiBlcnJvcik7
CiAKICAgICB+WWFyclBhdHRlcm4oKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS95YXJyL1lhcnIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9Z
YXJyLmgJKHJldmlzaW9uIDgyMDEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFy
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw4ICs1Nyw4IEBACiAgICAgSlNSZWdFeHBFcnJvcklu
dGVybmFsID0gLTQKIH07CiAKLVBhc3NPd25QdHI8Qnl0ZWNvZGVQYXR0ZXJuPiBieXRlQ29tcGls
ZShZYXJyUGF0dGVybiYsIEJ1bXBQb2ludGVyQWxsb2NhdG9yKik7Ci1pbnQgaW50ZXJwcmV0KEJ5
dGVjb2RlUGF0dGVybiosIGNvbnN0IFVDaGFyKiBpbnB1dCwgdW5zaWduZWQgc3RhcnQsIHVuc2ln
bmVkIGxlbmd0aCwgaW50KiBvdXRwdXQpOworSlNfRVhQT1JUX1BSSVZBVEUgUGFzc093blB0cjxC
eXRlY29kZVBhdHRlcm4+IGJ5dGVDb21waWxlKFlhcnJQYXR0ZXJuJiwgQnVtcFBvaW50ZXJBbGxv
Y2F0b3IqKTsKK0pTX0VYUE9SVF9QUklWQVRFIGludCBpbnRlcnByZXQoQnl0ZWNvZGVQYXR0ZXJu
KiwgY29uc3QgVUNoYXIqIGlucHV0LCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBp
bnQqIG91dHB1dCk7CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpZYXJyCiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODIwMjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTA0IEBACisyMDExLTAzLTI1
ICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBleHBvcnQgbWFjcm9zIHRv
IGFsbCBleHBvcnRlZCBKU0NvcmUgbWV0aG9kcywgYW5kIGVuYWJsZSB0aGVtIGZvciB0aGUgd3gg
cG9ydC4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
Mjc1NTEKKworICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAg
ICAgICAqIGNvbGxlY3Rvci9oYW5kbGVzL0hhbmRsZUhlYXAuaDoKKyAgICAgICAgKiBkZWJ1Z2dl
ci9EZWJ1Z2dlci5oOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmg6Cisg
ICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKiBwYXJzZXIvU291
cmNlUHJvdmlkZXJDYWNoZS5oOgorICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVyLmg6CisgICAg
ICAgICogcnVudGltZS9BcmdMaXN0Lmg6CisgICAgICAgICogcnVudGltZS9DYWxsRGF0YS5oOgor
ICAgICAgICAqIHJ1bnRpbWUvQ29tcGxldGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvQ29uc3Ry
dWN0RGF0YS5oOgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZUluc3RhbmNlLmg6CisgICAgICAgICog
cnVudGltZS9FcnJvci5oOgorICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oOgor
ICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRp
bWUvSGVhcC5oOgorICAgICAgICAqIHJ1bnRpbWUvSWRlbnRpZmllci5oOgorICAgICAgICAoSlND
OjpJZGVudGlmaWVyOjp0b1VJbnQzMik6CisgICAgICAgIChKU0M6OklkZW50aWZpZXI6OmVxdWFs
KToKKyAgICAgICAgKiBydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuaDoKKyAgICAgICAgKiBy
dW50aW1lL0ludGVybmFsRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuaDoK
KyAgICAgICAgKiBydW50aW1lL0pTQnl0ZUFycmF5Lmg6CisgICAgICAgICogcnVudGltZS9KU0Nl
bGwuaDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpKU0NlbGw6OmNsYXNzSW5mbyk6CisgICAgICAg
IChKU0M6OkpTQ2VsbDo6SlNDZWxsOjp2cHRyKToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpKU0Nl
bGw6OnNldFZQdHIpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OkpTQ2VsbDo6aXNTdHJpbmcpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9i
YWxEYXRhLmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNMb2NrLmg6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgICogcnVudGlt
ZS9KU1ZhbHVlLmg6CisgICAgICAgICogcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0Lmg6CisgICAg
ICAgICogcnVudGltZS9KU1dyYXBwZXJPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0xvb2t1
cC5oOgorICAgICAgICAqIHJ1bnRpbWUvTWFya2VkU3BhY2UuaDoKKyAgICAgICAgKiBydW50aW1l
L09iamVjdFByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9y
Lmg6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oOgorICAgICAgICAoSlND
OjpQcm9wZXJ0eU5hbWVBcnJheTo6YWRkKToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5U2xv
dC5oOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwLmg6CisgICAgICAgICogcnVudGltZS9SZWdF
eHBPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL1JvcGVJbXBsLmg6CisgICAgICAgICogcnVu
dGltZS9TY29wZUNoYWluLmg6CisgICAgICAgICogcnVudGltZS9TbWFsbFN0cmluZ3MuaDoKKyAg
ICAgICAgKiBydW50aW1lL1N0cmluZ09iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0
dXJlLmg6CisgICAgICAgICogcnVudGltZS9UaW1lb3V0Q2hlY2tlci5oOgorICAgICAgICAqIHJ1
bnRpbWUvVVN0cmluZy5oOgorICAgICAgICAoSlNDOjpVU3RyaW5nOjpVU3RyaW5nKToKKyAgICAg
ICAgKiB3c2NyaXB0OgorICAgICAgICAqIHd0Zi9CeXRlQXJyYXkuaDoKKyAgICAgICAgKiB3dGYv
Q3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaDoKKyAgICAgICAgKiB3dGYvQ3VycmVudFRp
bWUuaDoKKyAgICAgICAgKiB3dGYvRGF0ZU1hdGguaDoKKyAgICAgICAgKiB3dGYvRGVjaW1hbE51
bWJlci5oOgorICAgICAgICAqIHd0Zi9GYXN0TWFsbG9jLmg6CisgICAgICAgICogd3RmL01ENS5o
OgorICAgICAgICAqIHd0Zi9NYWluVGhyZWFkLmg6CisgICAgICAgICogd3RmL051bGxQdHIuY3Bw
OgorICAgICAgICAqIHd0Zi9OdWxsUHRyLmg6CisgICAgICAgICogd3RmL09TQWxsb2NhdG9yLmg6
CisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6CisgICAgICAgICogd3RmL1JhbmRvbU51bWJlci5o
OgorICAgICAgICAqIHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaDoKKyAgICAgICAgKiB3dGYv
VGhyZWFkU3BlY2lmaWMuaDoKKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nLmg6CisgICAgICAgICog
d3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaDoKKyAgICAgICAgKiB3dGYvV1RGVGhyZWFkRGF0YS5o
OgorICAgICAgICAqIHd0Zi9kdG9hLmg6CisgICAgICAgICogd3RmL3RleHQvQXRvbWljU3RyaW5n
Lmg6CisgICAgICAgIChXVEY6OkF0b21pY1N0cmluZzo6QXRvbWljU3RyaW5nKToKKyAgICAgICAg
KFdURjo6QXRvbWljU3RyaW5nOjppc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSk6CisgICAgICAgIChX
VEY6OkF0b21pY1N0cmluZzo6fkF0b21pY1N0cmluZyk6CisgICAgICAgIChXVEY6OkF0b21pY1N0
cmluZzo6aW1wbCk6CisgICAgICAgICogd3RmL3RleHQvQ1N0cmluZy5oOgorICAgICAgICAqIHd0
Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaDoKKyAgICAgICAgKFdURjo6U3RyaW5nQnVpbGRlcjo6YXBw
ZW5kKToKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmg6CisgICAgICAgIChXVEY6OlN0
cmluZ0ltcGw6OmNoYXJhY3RlcnMpOgorICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmluZy5oOgor
ICAgICAgICAoV1RGOjpTdHJpbmc6OlN0cmluZyk6CisgICAgICAgIChXVEY6OlN0cmluZzo6Zmlu
ZElnbm9yaW5nQ2FzZSk6CisgICAgICAgIChXVEY6OlN0cmluZzo6aXNIYXNoVGFibGVEZWxldGVk
VmFsdWUpOgorICAgICAgICAqIHd0Zi91bmljb2RlL0NvbGxhdG9yLmg6CisgICAgICAgICogd3Rm
L3VuaWNvZGUvVVRGOC5oOgorICAgICAgICAqIHlhcnIvWWFyci5oOgorICAgICAgICAqIHlhcnIv
WWFyclBhdHRlcm4uaDoKKwogMjAxMS0wMy0yNSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dzY3JpcHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dzY3JpcHQJKHJldmlzaW9uIDgyMDEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dzY3Jp
cHQJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDcgQEAKIGRlZiBidWlsZChibGQpOgogICAg
IGltcG9ydCBPcHRpb25zCiAKKyAgICBibGQuZW52LkxJQkRJUiA9IG91dHB1dF9kaXIKICAgICBm
dWxsX2RpcnMgPSBnZXRfZGlyc19mb3JfZmVhdHVyZXMoanNjb3JlX2RpciwgZmVhdHVyZXM9W2J1
aWxkX3BvcnRdLCBkaXJzPWpzY29yZV9kaXJzKQogCiAgICAgaW5jbHVkZXMgPSBjb21tb25faW5j
bHVkZXMgKyBmdWxsX2RpcnMKQEAgLTU1LDkgKzU2LDEwIEBACiAKICAgICAjIDEuIEEgc2ltcGxl
IHByb2dyYW0KICAgICBqc2NvcmUgPSBibGQubmV3X3Rhc2tfZ2VuKAotICAgICAgICBmZWF0dXJl
cyA9ICdjeHggY3N0YXRpY2xpYicsCisgICAgICAgIGZlYXR1cmVzID0gJ2N4eCBjc2hsaWIgaW1w
bGliJywKICAgICAgICAgaW5jbHVkZXMgPSAnLiAuLiBhc3NlbWJsZXIgRGVyaXZlZFNvdXJjZXMg
Rm9yd2FyZGluZ0hlYWRlcnMgJyArICcgJy5qb2luKGluY2x1ZGVzKSwKICAgICAgICAgc291cmNl
ID0gc291cmNlcywKKyAgICAgICAgZGVmaW5lcyA9IFsnQlVJTERJTkdfSmF2YVNjcmlwdENvcmUn
XSwKICAgICAgICAgdGFyZ2V0ID0gJ2pzY29yZScsCiAgICAgICAgIHVzZWxpYiA9ICdXWCBJQ1Ug
JyArIGdldF9jb25maWcoKSwKICAgICAgICAgdXNlbGliX2xvY2FsID0gJycsCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVyQ2FjaGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVyQ2FjaGUuaAko
cmV2aXNpb24gODIwMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVBy
b3ZpZGVyQ2FjaGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTAgKzMzLDEwIEBACiBjbGFzcyBT
b3VyY2VQcm92aWRlckNhY2hlIHsKIHB1YmxpYzoKICAgICBTb3VyY2VQcm92aWRlckNhY2hlKCkg
OiBtX2NvbnRlbnRCeXRlU2l6ZSgwKSB7fQotICAgIH5Tb3VyY2VQcm92aWRlckNhY2hlKCk7Cisg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgflNvdXJjZVByb3ZpZGVyQ2FjaGUoKTsKIAotICAgIHZvaWQg
Y2xlYXIoKTsKLSAgICB1bnNpZ25lZCBieXRlU2l6ZSgpIGNvbnN0OworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHZvaWQgY2xlYXIoKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB1bnNpZ25lZCBieXRl
U2l6ZSgpIGNvbnN0OwogICAgIHZvaWQgYWRkKGludCBzb3VyY2VQb3NpdGlvbiwgUGFzc093blB0
cjxTb3VyY2VQcm92aWRlckNhY2hlSXRlbT4sIHVuc2lnbmVkIHNpemUpOwogICAgIGNvbnN0IFNv
dXJjZVByb3ZpZGVyQ2FjaGVJdGVtKiBnZXQoaW50IHNvdXJjZVBvc2l0aW9uKSBjb25zdCB7IHJl
dHVybiBtX21hcC5nZXQoc291cmNlUG9zaXRpb24pOyB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wcm9maWxlci9Qcm9maWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wcm9maWxlci9Qcm9maWxlci5oCShyZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01Mywx
MSArNTMsMTEgQEAKICAgICAgICAgICAgIHJldHVybiAmc19zaGFyZWRFbmFibGVkUHJvZmlsZXJS
ZWZlcmVuY2U7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgUHJvZmlsZXIqIHByb2ZpbGVy
KCk7IAorICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUHJvZmlsZXIqIHByb2ZpbGVy
KCk7IAogICAgICAgICBzdGF0aWMgQ2FsbElkZW50aWZpZXIgY3JlYXRlQ2FsbElkZW50aWZpZXIo
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlLCBjb25zdCBVU3RyaW5nJiBzb3VyY2VVUkwsIGludCBs
aW5lTnVtYmVyKTsKIAotICAgICAgICB2b2lkIHN0YXJ0UHJvZmlsaW5nKEV4ZWNTdGF0ZSosIGNv
bnN0IFVTdHJpbmcmIHRpdGxlKTsKLSAgICAgICAgUGFzc1JlZlB0cjxQcm9maWxlPiBzdG9wUHJv
ZmlsaW5nKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmIHRpdGxlKTsKKyAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBzdGFydFByb2ZpbGluZyhFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5n
JiB0aXRsZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8UHJvZmlsZT4g
c3RvcFByb2ZpbGluZyhFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJiB0aXRsZSk7CiAgICAgICAg
IHZvaWQgc3RvcFByb2ZpbGluZyhKU0dsb2JhbE9iamVjdCopOwogCiAgICAgICAgIHZvaWQgd2ls
bEV4ZWN1dGUoRXhlY1N0YXRlKiBjYWxsZXJDYWxsRnJhbWUsIEpTVmFsdWUgZnVuY3Rpb24pOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2Fs
bEZyYW1lLmgJKHJldmlzaW9uIDgyMDEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVn
Z2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDEwICs1MSwxMCBA
QAogICAgICAgICBKU0dsb2JhbE9iamVjdCogZHluYW1pY0dsb2JhbE9iamVjdCgpIGNvbnN0IHsg
cmV0dXJuIG1fY2FsbEZyYW1lLT5keW5hbWljR2xvYmFsT2JqZWN0KCk7IH0KICAgICAgICAgU2Nv
cGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW4oKSBjb25zdCB7IHJldHVybiBtX2NhbGxGcmFtZS0+c2Nv
cGVDaGFpbigpOyB9CiAgICAgICAgIGNvbnN0IFVTdHJpbmcqIGZ1bmN0aW9uTmFtZSgpIGNvbnN0
OwotICAgICAgICBVU3RyaW5nIGNhbGN1bGF0ZWRGdW5jdGlvbk5hbWUoKSBjb25zdDsKLSAgICAg
ICAgVHlwZSB0eXBlKCkgY29uc3Q7Ci0gICAgICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0KCkgY29u
c3Q7Ci0gICAgICAgIEpTVmFsdWUgZXZhbHVhdGUoY29uc3QgVVN0cmluZyYsIEpTVmFsdWUmIGV4
Y2VwdGlvbikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFVTdHJpbmcgY2FsY3Vs
YXRlZEZ1bmN0aW9uTmFtZSgpIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBUeXBl
IHR5cGUoKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRoaXNP
YmplY3QoKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBldmFsdWF0
ZShjb25zdCBVU3RyaW5nJiwgSlNWYWx1ZSYgZXhjZXB0aW9uKSBjb25zdDsKICAgICAgICAgSlNW
YWx1ZSBleGNlcHRpb24oKSBjb25zdCB7IHJldHVybiBtX2V4Y2VwdGlvbjsgfQogCiAgICAgcHJp
dmF0ZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCShy
ZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAgICAgY2xhc3MgU291cmNlUHJv
dmlkZXI7CiAgICAgY2xhc3MgVVN0cmluZzsKIAotICAgIGNsYXNzIERlYnVnZ2VyIHsKKyAgICBj
bGFzcyBKU19FWFBPUlRfUFJJVkFURSBEZWJ1Z2dlciB7CiAgICAgcHVibGljOgogICAgICAgICB2
aXJ0dWFsIH5EZWJ1Z2dlcigpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvY29sbGVj
dG9yL2hhbmRsZXMvSGFuZGxlSGVhcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9jb2xsZWN0b3IvaGFuZGxlcy9IYW5kbGVIZWFwLmgJKHJldmlzaW9uIDgyMDEwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2NvbGxlY3Rvci9oYW5kbGVzL0hhbmRsZUhlYXAuaAkod29y
a2luZyBjb3B5KQpAQCAtNjIsNyArNjIsNyBAQAogICAgIC8vIFNob3VsZCBvbmx5IGJlIGNhbGxl
ZCBkdXJpbmcgdGVhcmRvd24uCiAgICAgdm9pZCBjbGVhcldlYWtQb2ludGVycygpOwogCi0gICAg
dm9pZCB3cml0ZUJhcnJpZXIoSGFuZGxlU2xvdCwgY29uc3QgSlNWYWx1ZSYpOworICAgIEpTX0VY
UE9SVF9QUklWQVRFIHZvaWQgd3JpdGVCYXJyaWVyKEhhbmRsZVNsb3QsIGNvbnN0IEpTVmFsdWUm
KTsKIAogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICBGaW5hbGl6ZXIqIGdldEZpbmFsaXplcihI
YW5kbGVTbG90IGhhbmRsZSkKQEAgLTExMiw3ICsxMTIsNyBAQAogICAgIHN0YXRpYyBIYW5kbGVT
bG90IHRvSGFuZGxlKE5vZGUqKTsKICAgICBzdGF0aWMgTm9kZSogdG9Ob2RlKEhhbmRsZVNsb3Qp
OwogCi0gICAgdm9pZCBncm93KCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBncm93KCk7
CiAKICAgICBKU0dsb2JhbERhdGEqIG1fZ2xvYmFsRGF0YTsKICAgICBCbG9ja1N0YWNrPE5vZGU+
IG1fYmxvY2tTdGFjazsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCShyZXZpc2lvbiA4MjAyMSkKKysrIFNv
dXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTEtMDMtMjUgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGV4cG9y
dCBtYWNyb3MgdG8gYWxsIGV4cG9ydGVkIEpTQ29yZSBtZXRob2RzLCBhbmQgZW5hYmxlIHRoZW0g
Zm9yIHRoZSB3eCBwb3J0LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yNzU1MQorCisgICAgICAgICogd3NjcmlwdDoKKwogMjAxMS0wMy0yNSAgQW5k
eSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRlbGUg
UGV0ZXJzb24uCkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4L3dzY3JpcHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC93eC93c2NyaXB0CShyZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJjZS9XZWJL
aXQvd3gvd3NjcmlwdAkod29ya2luZyBjb3B5KQpAQCAtNjgsNyArNjgsNyBAQAogICAgIAogZGVm
IHByZV9idWlsZChibGQpOgogICAgICIiIgotICAgIFRoZSB3eFdlYktpdCBsaWJyYXJ5IHNob3Vs
ZCBiZSByZWJ1aWx0IGlmIGpzY29yZSBvciB3ZWJjb3JlIGNoYW5nZXMsCisgICAgVGhlIHd4V2Vi
S2l0IGxpYnJhcnkgc2hvdWxkIGJlIHJlYnVpbHQgaWYgd2ViY29yZSBjaGFuZ2VzLAogICAgIHNv
IHdlIG1ha2UgdGhvc2Ugc3RhdGljIGxpYnMgYXMgZGVwZW5kZW5jaWVzLgogICAgICIiIgogICAg
IApAQCAtNzYsMTMgKzc2LDEwIEBACiAgICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ3dp
bicpOgogICAgICAgICBleHQgPSAnLmxpYicKICAgICAKLSAgICBsaWJqc2NvcmUgPSBvcy5wYXRo
LmpvaW4ob3V0cHV0X2RpciwgJ2xpYmpzY29yZSVzJyAlIGV4dCkKICAgICBsaWJ3ZWJjb3JlID0g
b3MucGF0aC5qb2luKG91dHB1dF9kaXIsICdsaWJ3ZWJjb3JlJXMnICUgZXh0KQogICAgIAotICAg
IGFzc2VydCBvcy5wYXRoLmV4aXN0cyhsaWJqc2NvcmUpCiAgICAgYXNzZXJ0IG9zLnBhdGguZXhp
c3RzKGxpYndlYmNvcmUpCiAgICAgCi0gICAgYmxkLmVudi5DWFhERVBTX0pTQ09SRSA9IFV0aWxz
LmhfZmlsZShsaWJqc2NvcmUpCiAgICAgYmxkLmVudi5DWFhERVBTX1dFQkNPUkUgPSBVdGlscy5o
X2ZpbGUobGlid2ViY29yZSkKICAgICAKIGRlZiBidWlsZChibGQpOgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87029</attachid>
            <date>2011-03-26 11:05:56 -0700</date>
            <delta_ts>2011-03-26 18:19:08 -0700</delta_ts>
            <desc>Step 2, part 1, second try: Adding Win build fix and fixing style issues</desc>
            <filename>jscore_exports_step2_try2.patch</filename>
            <type>text/plain</type>
            <size>113298</size>
            <attacher name="Kevin Ollivier">kevino</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL3d4L2J1aWxkL3NldHRpbmdzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL3d4
L2J1aWxkL3NldHRpbmdzLnB5CShyZXZpc2lvbiA4MjAxMCkKKysrIFRvb2xzL3d4L2J1aWxkL3Nl
dHRpbmdzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yODMsNyArMjgzLDcgQEAKICAgICBpZiBidWls
ZF9wb3J0ID09ICJ3eCI6CiAgICAgICAgIHVwZGF0ZV93eF9kZXBzKGNvbmYsIHdrX3Jvb3QsIG1z
dmNfdmVyc2lvbikKIAotICAgICAgICBjb25mLmVudi5hcHBlbmRfdmFsdWUoJ0NYWERFRklORVMn
LCBbJ0JVSUxESU5HX1dYX189MScsICdKU19OT19FWFBPUlQnXSkKKyAgICAgICAgY29uZi5lbnYu
YXBwZW5kX3ZhbHVlKCdDWFhERUZJTkVTJywgWydCVUlMRElOR19XWF9fPTEnXSkKIAogICAgICAg
ICBpZiBidWlsZGluZ19vbl93aW4zMjoKICAgICAgICAgICAgIGNvbmYuZW52LmFwcGVuZF92YWx1
ZSgnTElCUEFUSCcsIG9zLnBhdGguam9pbihtc3ZjbGlic19kaXIsICdsaWInKSkKQEAgLTI5NSw2
ICsyOTUsOCBAQAogICAgICAgICAgICAgY29uZi5lbnZbJ0NQUFBBVEhfV1gnXSA9IHd4aW5jbHVk
ZXMKICAgICAgICAgICAgIGNvbmYuZW52WydMSUJfV1gnXSA9IHd4bGlicwogICAgICAgICAgICAg
Y29uZi5lbnZbJ0xJQlBBVEhfV1gnXSA9IHd4bGlicGF0aHMKKyAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgIGNvbmYuZW52LmFwcGVuZF92YWx1ZSgnQ1hYRkxBR1MnLCBbJy1mdmlzaWJpbGl0eT1o
aWRkZW4nXSkKIAogICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdkYXJ3aW4nKToKICAg
ICAgICAgY29uZi5lbnZbJ0xJQl9JQ1UnXSA9IFsnaWN1Y29yZSddCkluZGV4OiBUb29scy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA4MjAyMSkKKysr
IFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDExLTAz
LTI1ICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBleHBvcnQgbWFjcm9z
IHRvIGFsbCBleHBvcnRlZCBKU0NvcmUgbWV0aG9kcywgYW5kIGVuYWJsZSB0aGVtIGZvciB0aGUg
d3ggcG9ydC4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9Mjc1NTEKKworICAgICAgICAqIHd4L2J1aWxkL3NldHRpbmdzLnB5OgorCiAyMDExLTAzLTI1
ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBB
ZGVsZSBQZXRlcnNvbi4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5o
CShyZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMiArMzMsMTIgQEAKICAgICBzdHJ1Y3QgUmVnRXhw
UmVwcmVzZW50YXRpb247CiAgICAgY2xhc3MgSlNHbG9iYWxEYXRhOwogCi0gICAgUmVnRXhwRmxh
Z3MgcmVnRXhwRmxhZ3MoY29uc3QgVVN0cmluZyYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIFJl
Z0V4cEZsYWdzIHJlZ0V4cEZsYWdzKGNvbnN0IFVTdHJpbmcmKTsKIAogICAgIGNsYXNzIFJlZ0V4
cCA6IHB1YmxpYyBSZWZDb3VudGVkPFJlZ0V4cD4gewogICAgIHB1YmxpYzoKLSAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8UmVnRXhwPiBjcmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBj
b25zdCBVU3RyaW5nJiBwYXR0ZXJuLCBSZWdFeHBGbGFncyk7Ci0gICAgICAgIH5SZWdFeHAoKTsK
KyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8UmVnRXhwPiBjcmVh
dGUoSlNHbG9iYWxEYXRhKiwgY29uc3QgVVN0cmluZyYgcGF0dGVybiwgUmVnRXhwRmxhZ3MpOwor
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB+UmVnRXhwKCk7CiAKICAgICAgICAgYm9vbCBnbG9i
YWwoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzICYgRmxhZ0dsb2JhbDsgfQogICAgICAgICBib29s
IGlnbm9yZUNhc2UoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzICYgRmxhZ0lnbm9yZUNhc2U7IH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCShyZXZpc2lv
biA4MjAxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC03MywxMSArNzMsMTEgQEAKIAogICAgICAgICBzdGF0aWMgdm9pZCBk
dW1wU3RhdGlzdGljcygpOwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4g
YWRkUHJvcGVydHlUcmFuc2l0aW9uKFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBzaXpl
X3QmIG9mZnNldCk7Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gYWRkUHJv
cGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZShTdHJ1Y3R1cmUqLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lm
aWNWYWx1ZSwgc2l6ZV90JiBvZmZzZXQpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGFkZFByb3BlcnR5VHJhbnNpdGlvbihTdHJ1Y3R1cmUq
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpT
Q2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBvZmZzZXQpOworICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGFkZFByb3BlcnR5VHJhbnNpdGlv
blRvRXhpc3RpbmdTdHJ1Y3R1cmUoU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUsIHNpemVf
dCYgb2Zmc2V0KTsKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiByZW1vdmVQ
cm9wZXJ0eVRyYW5zaXRpb24oU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBzaXplX3QmIG9mZnNldCk7Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVy
ZT4gY2hhbmdlUHJvdG90eXBlVHJhbnNpdGlvbihTdHJ1Y3R1cmUqLCBKU1ZhbHVlIHByb3RvdHlw
ZSk7Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gZGVzcGVjaWZ5RnVuY3Rp
b25UcmFuc2l0aW9uKFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXImKTsKKyAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjaGFuZ2VQcm90b3R5
cGVUcmFuc2l0aW9uKFN0cnVjdHVyZSosIEpTVmFsdWUgcHJvdG90eXBlKTsKKyAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBkZXNwZWNpZnlGdW5j
dGlvblRyYW5zaXRpb24oU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYpOwogICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGdldHRlclNldHRlclRyYW5zaXRpb24oU3RydWN0
dXJlKik7CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gdG9DYWNoZWFibGVE
aWN0aW9uYXJ5VHJhbnNpdGlvbihTdHJ1Y3R1cmUqKTsKICAgICAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8U3RydWN0dXJlPiB0b1VuY2FjaGVhYmxlRGljdGlvbmFyeVRyYW5zaXRpb24oU3RydWN0dXJl
Kik7CkBAIC05MSwxMCArOTEsMTAgQEAKIAogICAgICAgICBQYXNzUmVmUHRyPFN0cnVjdHVyZT4g
ZmxhdHRlbkRpY3Rpb25hcnlTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiwgSlNPYmplY3QqKTsKIAot
ICAgICAgICB+U3RydWN0dXJlKCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIH5TdHJ1Y3R1
cmUoKTsKIAogICAgICAgICAvLyBUaGVzZSBzaG91bGQgYmUgdXNlZCB3aXRoIGNhdXRpb24uICAK
LSAgICAgICAgc2l6ZV90IGFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmlj
VmFsdWUpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzaXplX3QgYWRkUHJvcGVydHlXaXRo
b3V0VHJhbnNpdGlvbihjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0
dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSk7CiAgICAgICAgIHNpemVfdCByZW1vdmVQ
cm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7
CiAgICAgICAgIHZvaWQgc2V0UHJvdG90eXBlV2l0aG91dFRyYW5zaXRpb24oSlNWYWx1ZSBwcm90
b3R5cGUpIHsgbV9wcm90b3R5cGUgPSBwcm90b3R5cGU7IH0KICAgICAgICAgCkBAIC0xMTYsNyAr
MTE2LDcgQEAKICAgICAgICAgYm9vbCBpc1VzaW5nSW5saW5lU3RvcmFnZSgpIGNvbnN0OwogCiAg
ICAgICAgIHNpemVfdCBnZXQoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKLSAgICAg
ICAgc2l6ZV90IGdldChTdHJpbmdJbXBsKiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1
dGVzLCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVlKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c2l6ZV90IGdldChTdHJpbmdJbXBsKiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVz
LCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVlKTsKICAgICAgICAgc2l6ZV90IGdldChjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzLCBKU0NlbGwqJiBzcGVj
aWZpY1ZhbHVlKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoIXByb3BlcnR5TmFtZS5p
c051bGwoKSk7CkBAIC0xMzMsNyArMTMzLDcgQEAKICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNF
bXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydHlUYWJsZSA/IG1fcHJvcGVydHlUYWJsZS0+
aXNFbXB0eSgpIDogbV9vZmZzZXQgPT0gbm9PZmZzZXQ7IH0KIAotICAgICAgICB2b2lkIGRlc3Bl
Y2lmeURpY3Rpb25hcnlGdW5jdGlvbihjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOwor
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGRlc3BlY2lmeURpY3Rpb25hcnlGdW5jdGlv
bihjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOwogICAgICAgICB2b2lkIGRpc2FibGVT
cGVjaWZpY0Z1bmN0aW9uVHJhY2tpbmcoKSB7IG1fc3BlY2lmaWNGdW5jdGlvblRocmFzaENvdW50
ID0gbWF4U3BlY2lmaWNGdW5jdGlvblRocmFzaENvdW50OyB9CiAKICAgICAgICAgdm9pZCBzZXRF
bnVtZXJhdGlvbkNhY2hlKEpTR2xvYmFsRGF0YSYsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIGVu
dW1lcmF0aW9uQ2FjaGUpOyAvLyBEZWZpbmVkIGluIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaC4K
QEAgLTE2MSw3ICsxNjEsNyBAQAogICAgICAgICB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBT
dHJ1Y3R1cmUoSlNWYWx1ZSBwcm90b3R5cGUsIGNvbnN0IFR5cGVJbmZvJiwgdW5zaWduZWQgYW5v
bnltb3VzU2xvdENvdW50LCBjb25zdCBDbGFzc0luZm8qKTsKKyAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgU3RydWN0dXJlKEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbyYsIHVuc2ln
bmVkIGFub255bW91c1Nsb3RDb3VudCwgY29uc3QgQ2xhc3NJbmZvKik7CiAgICAgICAgIFN0cnVj
dHVyZShjb25zdCBTdHJ1Y3R1cmUqKTsKIAogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1
Y3R1cmU+IGNyZWF0ZShjb25zdCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKQEAgLTE4Niw3ICsxODYs
NyBAQAogICAgICAgICB2b2lkIGRlc3BlY2lmeUFsbEZ1bmN0aW9ucygpOwogCiAgICAgICAgIFBy
b3BlcnR5VGFibGUqIGNvcHlQcm9wZXJ0eVRhYmxlKCk7Ci0gICAgICAgIHZvaWQgbWF0ZXJpYWxp
emVQcm9wZXJ0eU1hcCgpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIG1hdGVyaWFs
aXplUHJvcGVydHlNYXAoKTsKICAgICAgICAgdm9pZCBtYXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZO
ZWNlc3NhcnkoKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fcHJvcGVydHlUYWJsZSAm
JiBtX3ByZXZpb3VzKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dC5oCShyZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDExICs3MywxMSBAQAogICAgIHR5cGVkZWYg
V3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogUHJvcGVydHlTdG9yYWdlOwogICAgIHR5cGVkZWYg
Y29uc3QgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogQ29uc3RQcm9wZXJ0eVN0b3JhZ2U7CiAK
LSAgICBjbGFzcyBKU09iamVjdCA6IHB1YmxpYyBKU0NlbGwgeworICAgIGNsYXNzIEpTX0VYUE9S
VERBVEEgSlNPYmplY3QgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEJh
dGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyOwogICAgICAgICBmcmllbmQgY2xhc3MgSklUOwogICAg
ICAgICBmcmllbmQgY2xhc3MgSlNDZWxsOwotICAgICAgICBmcmllbmQgdm9pZCBzZXRVcFN0YXRp
Y0Z1bmN0aW9uU2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEhhc2hFbnRyeSogZW50cnksIEpT
T2JqZWN0KiB0aGlzT2JqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYgc2xvdCk7CisgICAgICAgIGZyaWVuZCBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldFVw
U3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSosIGNvbnN0IEhhc2hFbnRyeSosIEpTT2JqZWN0
KiB0aGlzT2JqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYp
OwogCiAgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIHZvaWQgbWFya0NoaWxkcmVuKE1hcmtT
dGFjayYpOwpAQCAtMjQ3LDcgKzI0Nyw3IEBACiAKICAgICAgICAgc3RhdGljIHNpemVfdCBvZmZz
ZXRPZklubGluZVN0b3JhZ2UoKTsKICAgICAgICAgCi0gICAgICAgIHN0YXRpYyBKU19FWFBPUlRE
QVRBIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CisgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0lu
Zm8gc19pbmZvOwogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxT
dHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFs
dWUgcHJvdG90eXBlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
T2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVn
RXhwT2JqZWN0LmgJKHJldmlzaW9uIDgyMDEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKICAg
ICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0IEJhc2U7
CiAKLSAgICAgICAgUmVnRXhwT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE5v
bk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIE5vbk51bGxQYXNzUmVmUHRyPFJlZ0V4cD4pOwor
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBSZWdFeHBPYmplY3QoSlNHbG9iYWxPYmplY3QqLCBO
b25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBOb25OdWxsUGFzc1JlZlB0cjxSZWdFeHA+KTsK
ICAgICAgICAgdmlydHVhbCB+UmVnRXhwT2JqZWN0KCk7CiAKICAgICAgICAgdm9pZCBzZXRSZWdF
eHAoUGFzc1JlZlB0cjxSZWdFeHA+IHIpIHsgZC0+cmVnRXhwID0gcjsgfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaAkocmV2aXNp
b24gODIwMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxw
ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDkgKzQzLDkgQEAKICAgICBjbGFzcyBOb2RlOwog
ICAgIHN0cnVjdCBJbnN0cnVjdGlvbjsKICAgICAKLSAgICBKU09iamVjdCogY3JlYXRlSW50ZXJy
dXB0ZWRFeGVjdXRpb25FeGNlcHRpb24oSlNHbG9iYWxEYXRhKik7CisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgSlNPYmplY3QqIGNyZWF0ZUludGVycnVwdGVkRXhlY3V0aW9uRXhjZXB0aW9uKEpTR2xv
YmFsRGF0YSopOwogICAgIEpTT2JqZWN0KiBjcmVhdGVUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0
aW9uKEpTR2xvYmFsRGF0YSopOwotICAgIEpTT2JqZWN0KiBjcmVhdGVTdGFja092ZXJmbG93RXJy
b3IoRXhlY1N0YXRlKik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIGNyZWF0ZVN0
YWNrT3ZlcmZsb3dFcnJvcihFeGVjU3RhdGUqKTsKICAgICBKU09iamVjdCogY3JlYXRlU3RhY2tP
dmVyZmxvd0Vycm9yKEpTR2xvYmFsT2JqZWN0Kik7CiAgICAgSlNPYmplY3QqIGNyZWF0ZU91dE9m
TWVtb3J5RXJyb3IoSlNHbG9iYWxPYmplY3QqKTsKICAgICBKU09iamVjdCogY3JlYXRlVW5kZWZp
bmVkVmFyaWFibGVFcnJvcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJik7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCShyZXZpc2lvbiA4MjAx
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDUsMTIgKzQ1LDEyIEBACiAgICAgICAgIHR5cGVkZWYgSlNPYmplY3RXaXRo
R2xvYmFsT2JqZWN0IEJhc2U7CiAKICAgICBwdWJsaWM6Ci0gICAgICAgIEpTRnVuY3Rpb24oRXhl
Y1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBp
bnQgbGVuZ3RoLCBjb25zdCBJZGVudGlmaWVyJiwgTmF0aXZlRnVuY3Rpb24pOworICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSBKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0Kiwg
Tm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgaW50IGxlbmd0aCwgY29uc3QgSWRlbnRpZmll
ciYsIE5hdGl2ZUZ1bmN0aW9uKTsKICAgICAgICAgSlNGdW5jdGlvbihFeGVjU3RhdGUqLCBKU0ds
b2JhbE9iamVjdCosIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIGludCBsZW5ndGgsIGNv
bnN0IElkZW50aWZpZXImLCBOYXRpdmVFeGVjdXRhYmxlKik7CiAgICAgICAgIEpTRnVuY3Rpb24o
RXhlY1N0YXRlKiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgU2NvcGVDaGFpbk5vZGUqKTsKICAgICAg
ICAgdmlydHVhbCB+SlNGdW5jdGlvbigpOwogCi0gICAgICAgIGNvbnN0IFVTdHJpbmcmIG5hbWUo
RXhlY1N0YXRlKik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGNvbnN0IFVTdHJpbmcmIG5h
bWUoRXhlY1N0YXRlKik7CiAgICAgICAgIGNvbnN0IFVTdHJpbmcgZGlzcGxheU5hbWUoRXhlY1N0
YXRlKik7CiAgICAgICAgIGNvbnN0IFVTdHJpbmcgY2FsY3VsYXRlZERpc3BsYXlOYW1lKEV4ZWNT
dGF0ZSopOwogCkBAIC04OSw3ICs4OSw3IEBACiAgICAgcHJpdmF0ZToKICAgICAgICAgSlNGdW5j
dGlvbihOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBWUHRySGFja0V4ZWN1dGFibGUqKTsK
IAotICAgICAgICBib29sIGlzSG9zdEZ1bmN0aW9uTm9uSW5saW5lKCkgY29uc3Q7CisgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNIb3N0RnVuY3Rpb25Ob25JbmxpbmUoKSBjb25zdDsK
IAogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNv
bnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgdmlydHVhbCBib29sIGdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJv
cGVydHlEZXNjcmlwdG9yJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
YmplY3RQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PYmplY3RQcm90b3R5cGUuaAkocmV2aXNpb24gODIwMTApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzYs
NyArMzYsNyBAQAogICAgICAgICBib29sIG1faGFzTm9Qcm9wZXJ0aWVzV2l0aFVJbnQzMk5hbWVz
OwogICAgIH07CiAKLSAgICBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3Rv
RnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSopOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKik7
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcmdMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJnTGlzdC5oCShyZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FyZ0xpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ0LDcgKzE0NCw3IEBACiAgICAg
ICAgIHN0YXRpYyB2b2lkIG1hcmtMaXN0cyhIZWFwUm9vdE1hcmtlciYsIExpc3RTZXQmKTsKIAog
ICAgIHByaXZhdGU6Ci0gICAgICAgIHZvaWQgc2xvd0FwcGVuZChKU1ZhbHVlKTsKKyAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzbG93QXBwZW5kKEpTVmFsdWUpOwogICAgICAgICAKICAg
ICAgICAgUmVnaXN0ZXIqIG1fYnVmZmVyOwogICAgICAgICBzaXplX3QgbV9zaXplOwpAQCAtMjM0
LDcgKzIzNCw3IEBACiAgICAgICAgIGNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1
cm4gbV9hcmdzOyB9CiAgICAgICAgIGNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJu
IG1fYXJncyArIG1fYXJnQ291bnQ7IH0KIAotICAgICAgICB2b2lkIGdldFNsaWNlKGludCBzdGFy
dEluZGV4LCBBcmdMaXN0JiByZXN1bHQpIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSB2b2lkIGdldFNsaWNlKGludCBzdGFydEluZGV4LCBBcmdMaXN0JiByZXN1bHQpIGNvbnN0Owog
ICAgIHByaXZhdGU6CiAgICAgICAgIEpTVmFsdWUqIG1fYXJnczsKICAgICAgICAgc2l6ZV90IG1f
YXJnQ291bnQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCShy
ZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXku
aAkod29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsOCBAQAogCiAgICAgZW51bSBBcnJheUNyZWF0
aW9uTW9kZSB7IENyZWF0ZUNvbXBhY3QsIENyZWF0ZUluaXRpYWxpemVkIH07CiAKLSAgICBjbGFz
cyBKU0FycmF5IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworICAgIGNsYXNzIEpTX0VYUE9S
VERBVEEgSlNBcnJheSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKKyAgICAgICAgZnJpZW5k
IGNsYXNzIEpJVDsKICAgICAgICAgZnJpZW5kIGNsYXNzIFdhbGtlcjsKIAogICAgIHB1YmxpYzoK
QEAgLTc0LDcgKzc1LDcgQEAKICAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9y
Jik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwdXQoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlKTsgLy8gRklYTUU6IE1ha2UgcHJvdGVjdGVkIGFuZCBhZGQgc2V0SXRl
bS4KIAotICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSBjb25zdCBDbGFzc0luZm8gc19pbmZv
OworICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKICAgICAgICAgCiAgICAg
ICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZS0+bV9sZW5ndGg7
IH0KICAgICAgICAgdm9pZCBzZXRMZW5ndGgodW5zaWduZWQpOyAvLyBPSyB0byB1c2Ugb24gbmV3
IGFycmF5cywgYnV0IG5vdCBpZiBpdCBtaWdodCBiZSBhIFJlZ0V4cE1hdGNoQXJyYXkuCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5o
CShyZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVy
bmFsRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzEsOSArMzEsOSBAQAogCiAgICAgY2xh
c3MgRnVuY3Rpb25Qcm90b3R5cGU7CiAKLSAgICBjbGFzcyBJbnRlcm5hbEZ1bmN0aW9uIDogcHVi
bGljIEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdCB7CisgICAgY2xhc3MgSlNfRVhQT1JUREFUQSBJ
bnRlcm5hbEZ1bmN0aW9uIDogcHVibGljIEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdCB7CiAgICAg
cHVibGljOgotICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSBjb25zdCBDbGFzc0luZm8gc19p
bmZvOworICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAogICAgICAgICBj
b25zdCBVU3RyaW5nJiBuYW1lKEV4ZWNTdGF0ZSopOwogICAgICAgICBjb25zdCBVU3RyaW5nIGRp
c3BsYXlOYW1lKEV4ZWNTdGF0ZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSWRlbnRpZmllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0lkZW50aWZpZXIuaAkocmV2aXNpb24gODIwMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JZGVudGlmaWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDE1ICs1MywxNSBA
QAogICAgICAgICAKICAgICAgICAgQ1N0cmluZyBhc2NpaSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Ry
aW5nLmFzY2lpKCk7IH0KICAgICAgICAgCi0gICAgICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb20o
RXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCB5KTsKLSAgICAgICAgc3RhdGljIElkZW50aWZpZXIg
ZnJvbShFeGVjU3RhdGUqIGV4ZWMsIGludCB5KTsKLSAgICAgICAgc3RhdGljIElkZW50aWZpZXIg
ZnJvbShFeGVjU3RhdGUqIGV4ZWMsIGRvdWJsZSB5KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIElkZW50aWZpZXIgZnJvbShFeGVjU3RhdGUqLCB1bnNpZ25lZCB5KTsKKyAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIElkZW50aWZpZXIgZnJvbShFeGVjU3RhdGUqLCBp
bnQgeSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBJZGVudGlmaWVyIGZyb20o
RXhlY1N0YXRlKiwgZG91YmxlIHkpOwogICAgICAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9tKEpT
R2xvYmFsRGF0YSosIHVuc2lnbmVkIHkpOwogICAgICAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9t
KEpTR2xvYmFsRGF0YSosIGludCB5KTsKICAgICAgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbShK
U0dsb2JhbERhdGEqLCBkb3VibGUgeSk7CiAKLSAgICAgICAgc3RhdGljIHVpbnQzMl90IHRvVUlu
dDMyKGNvbnN0IFVTdHJpbmcmLCBib29sJiBvayk7Ci0gICAgICAgIHVpbnQzMl90IHRvVUludDMy
KGJvb2wmIG9rKSBjb25zdCB7IHJldHVybiB0b1VJbnQzMihtX3N0cmluZywgb2spOyB9CisgICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB1aW50MzJfdCB0b1VJbnQzMihjb25zdCBVU3Ry
aW5nJiwgYm9vbCYgb2spOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB1aW50MzJfdCB0b1VJ
bnQzMihib29sJiBvaykgY29uc3QgeyByZXR1cm4gdG9VSW50MzIobV9zdHJpbmcsIG9rKTsgfQog
ICAgICAgICB1bnNpZ25lZCB0b0FycmF5SW5kZXgoYm9vbCYgb2spIGNvbnN0OwogCiAgICAgICAg
IGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuaXNOdWxsKCk7IH0KQEAgLTcz
LDEyICs3MywxMiBAQAogICAgICAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IElkZW50
aWZpZXImLCBjb25zdCBjaGFyKik7CiAgICAgICAgIGZyaWVuZCBib29sIG9wZXJhdG9yIT0oY29u
c3QgSWRlbnRpZmllciYsIGNvbnN0IGNoYXIqKTsKICAgICAKLSAgICAgICAgc3RhdGljIGJvb2wg
ZXF1YWwoY29uc3QgU3RyaW5nSW1wbCosIGNvbnN0IGNoYXIqKTsKLSAgICAgICAgc3RhdGljIGJv
b2wgZXF1YWwoY29uc3QgU3RyaW5nSW1wbCosIGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3Ro
KTsKLSAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgU3RyaW5nSW1wbCogYSwgY29uc3Qg
U3RyaW5nSW1wbCogYikgeyByZXR1cm4gOjplcXVhbChhLCBiKTsgfQorICAgICAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBTdHJpbmdJbXBsKiwgY29uc3QgY2hh
ciopOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBT
dHJpbmdJbXBsKiwgY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOworICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBTdHJpbmdJbXBsKiBhLCBjb25z
dCBTdHJpbmdJbXBsKiBiKSB7IHJldHVybiA6OmVxdWFsKGEsIGIpOyB9CiAKLSAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRkKEV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIqKTsg
Ly8gT25seSB0byBiZSB1c2VkIHdpdGggc3RyaW5nIGxpdGVyYWxzLgotICAgICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGQoSlNHbG9iYWxEYXRhKiwgY29uc3QgY2hhciopOyAv
LyBPbmx5IHRvIGJlIHVzZWQgd2l0aCBzdHJpbmcgbGl0ZXJhbHMuCisgICAgICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChFeGVjU3RhdGUqLCBj
b25zdCBjaGFyKik7IC8vIE9ubHkgdG8gYmUgdXNlZCB3aXRoIHN0cmluZyBsaXRlcmFscy4KKyAg
ICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRk
KEpTR2xvYmFsRGF0YSosIGNvbnN0IGNoYXIqKTsgLy8gT25seSB0byBiZSB1c2VkIHdpdGggc3Ry
aW5nIGxpdGVyYWxzLgogCiAgICAgcHJpdmF0ZToKICAgICAgICAgVVN0cmluZyBtX3N0cmluZzsK
QEAgLTEwOCwxMCArMTA4LDEwIEBACiAgICAgICAgICAgICByZXR1cm4gYWRkU2xvd0Nhc2UoZ2xv
YmFsRGF0YSwgcik7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJp
bmdJbXBsPiBhZGRTbG93Q2FzZShFeGVjU3RhdGUqLCBTdHJpbmdJbXBsKiByKTsKLSAgICAgICAg
c3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRkU2xvd0Nhc2UoSlNHbG9iYWxEYXRhKiwg
U3RyaW5nSW1wbCogcik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQYXNzUmVm
UHRyPFN0cmluZ0ltcGw+IGFkZFNsb3dDYXNlKEV4ZWNTdGF0ZSosIFN0cmluZ0ltcGwqKTsKKyAg
ICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRkU2xvd0Nhc2UoSlNHbG9iYWxE
YXRhKiwgU3RyaW5nSW1wbCopOwogCi0gICAgICAgIHN0YXRpYyB2b2lkIGNoZWNrQ3VycmVudElk
ZW50aWZpZXJUYWJsZShFeGVjU3RhdGUqKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIHZvaWQgY2hlY2tDdXJyZW50SWRlbnRpZmllclRhYmxlKEV4ZWNTdGF0ZSopOwogICAgICAg
ICBzdGF0aWMgdm9pZCBjaGVja0N1cnJlbnRJZGVudGlmaWVyVGFibGUoSlNHbG9iYWxEYXRhKik7
CiAgICAgfTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmlu
Z09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cmluZ09iamVjdC5oCShyZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cmluZ09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAK
IG5hbWVzcGFjZSBKU0MgewogCi0gICAgY2xhc3MgU3RyaW5nT2JqZWN0IDogcHVibGljIEpTV3Jh
cHBlck9iamVjdCB7CisgICAgY2xhc3MgSlNfRVhQT1JUREFUQSBTdHJpbmdPYmplY3QgOiBwdWJs
aWMgSlNXcmFwcGVyT2JqZWN0IHsKICAgICBwdWJsaWM6CiAgICAgICAgIFN0cmluZ09iamVjdChF
eGVjU3RhdGUqLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+KTsKICAgICAgICAgU3RyaW5n
T2JqZWN0KEV4ZWNTdGF0ZSosIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIGNvbnN0IFVT
dHJpbmcmKTsKQEAgLTQxLDcgKzQxLDcgQEAKICAgICAgICAgdmlydHVhbCBib29sIGRlbGV0ZVBy
b3BlcnR5KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlIG1vZGUgPSBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0
aWVzKTsKIAotICAgICAgICBzdGF0aWMgY29uc3QgSlNfRVhQT1JUREFUQSBDbGFzc0luZm8gc19p
bmZvOworICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAogICAgICAgICBK
U1N0cmluZyogaW50ZXJuYWxWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIGFzU3RyaW5nKEpTV3JhcHBl
ck9iamVjdDo6aW50ZXJuYWxWYWx1ZSgpKTt9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQnl0ZUFycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuaAkocmV2aXNpb24gODIwMTApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC03NSw4
ICs3NSw4IEBACiAgICAgICAgICAgICAgICAgc2V0SW5kZXgoaSwgYnl0ZVZhbHVlKTsKICAgICAg
ICAgfQogCi0gICAgICAgIEpTQnl0ZUFycmF5KEV4ZWNTdGF0ZSosIE5vbk51bGxQYXNzUmVmUHRy
PFN0cnVjdHVyZT4sIFdURjo6Qnl0ZUFycmF5KiBzdG9yYWdlKTsKLSAgICAgICAgc3RhdGljIFBh
c3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiwgSlNWYWx1
ZSBwcm90b3R5cGUsIGNvbnN0IEpTQzo6Q2xhc3NJbmZvKiA9ICZzX2RlZmF1bHRJbmZvKTsKKyAg
ICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNCeXRlQXJyYXkoRXhlY1N0YXRlKiwgTm9uTnVsbFBh
c3NSZWZQdHI8U3RydWN0dXJlPiwgV1RGOjpCeXRlQXJyYXkqIHN0b3JhZ2UpOworICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVj
dHVyZShKU0dsb2JhbERhdGEmLCBKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgSlNDOjpDbGFzc0lu
Zm8qID0gJnNfZGVmYXVsdEluZm8pOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgdmlydHVhbCBib29sIGdldE93blBy
b3BlcnR5U2xvdChKU0M6OkV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpQ
cm9wZXJ0eVNsb3QmKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBs
ZXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21w
bGV0aW9uLmgJKHJldmlzaW9uIDgyMDEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tcGxldGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw4ICs1NSw4IEBACiAgICAgICAg
IEpTVmFsdWUgbV92YWx1ZTsKICAgICB9OwogCi0gICAgQ29tcGxldGlvbiBjaGVja1N5bnRheChF
eGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2RlJik7Ci0gICAgQ29tcGxldGlvbiBldmFsdWF0ZShF
eGVjU3RhdGUqLCBTY29wZUNoYWluTm9kZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IEpTVmFsdWUoKSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgQ29tcGxldGlvbiBj
aGVja1N5bnRheChFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2RlJik7CisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgQ29tcGxldGlvbiBldmFsdWF0ZShFeGVjU3RhdGUqLCBTY29wZUNoYWluTm9kZSos
IGNvbnN0IFNvdXJjZUNvZGUmLCBKU1ZhbHVlIHRoaXNWYWx1ZSA9IEpTVmFsdWUoKSk7CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1ZhcmlhYmxlT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oCShyZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAt
NDAsNyArNDAsNyBAQAogCiAgICAgY2xhc3MgUmVnaXN0ZXI7CiAKLSAgICBjbGFzcyBKU1Zhcmlh
YmxlT2JqZWN0IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworICAgIGNsYXNzIEpTX0VYUE9S
VF9QUklWQVRFIEpTVmFyaWFibGVPYmplY3QgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAg
ICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAKICAgICBwdWJsaWM6CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAkocmV2aXNpb24gODIwMTApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAkod29ya2luZyBjb3B5KQpAQCAtMTQwLDcgKzE0
MCw3IEBACiAgICAgICAgICAgICAgICAgY3JlYXRlVGFibGUoJmV4ZWMtPmdsb2JhbERhdGEoKSk7
CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGRlbGV0ZVRhYmxlKCkgY29uc3Q7CisgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZGVsZXRlVGFibGUoKSBjb25zdDsKIAogICAgICAgICAv
LyBGaW5kIGFuIGVudHJ5IGluIHRoZSB0YWJsZSwgYW5kIHJldHVybiB0aGUgZW50cnkuCiAgICAg
ICAgIEFMV0FZU19JTkxJTkUgY29uc3QgSGFzaEVudHJ5KiBlbnRyeShKU0dsb2JhbERhdGEqIGds
b2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpIGNvbnN0CkBAIC0xNzUsMTAg
KzE3NSwxMCBAQAogICAgICAgICB9CiAKICAgICAgICAgLy8gQ29udmVydCB0aGUgaGFzaCB0YWJs
ZSBrZXlzIHRvIGlkZW50aWZpZXJzLgotICAgICAgICB2b2lkIGNyZWF0ZVRhYmxlKEpTR2xvYmFs
RGF0YSopIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGNyZWF0ZVRhYmxl
KEpTR2xvYmFsRGF0YSopIGNvbnN0OwogICAgIH07CiAKLSAgICB2b2lkIHNldFVwU3RhdGljRnVu
Y3Rpb25TbG90KEV4ZWNTdGF0ZSosIGNvbnN0IEhhc2hFbnRyeSosIEpTT2JqZWN0KiB0aGlzT2Jq
ZWN0LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAg
IEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRl
KiwgY29uc3QgSGFzaEVudHJ5KiwgSlNPYmplY3QqIHRoaXNPYmplY3QsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAKICAgICAvKioKICAgICAgKiBUaGlz
IG1ldGhvZCBkb2VzIGl0IGFsbCAobG9va2luZyBpbiB0aGUgaGFzaHRhYmxlLCBjaGVja2luZyBm
b3IgZnVuY3Rpb24KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCShy
ZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5o
CSh3b3JraW5nIGNvcHkpCkBAIC02OCw4ICs2OCw4IEBACiAgICAgICAgIGZyaWVuZCBjbGFzcyBT
Y29wZUNoYWluTm9kZTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIGV4cGxpY2l0IEpTQ2VsbChT
dHJ1Y3R1cmUqKTsKLSAgICAgICAgdmlydHVhbCB+SlNDZWxsKCk7CisgICAgICAgIEpTX0VYUE9S
VF9QUklWQVRFIGV4cGxpY2l0IEpTQ2VsbChTdHJ1Y3R1cmUqKTsKKyAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgdmlydHVhbCB+SlNDZWxsKCk7CiAKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlRHVtbXlTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhKQpAQCAtNzgsOSArNzgsOSBAQAogICAgICAgICB9CiAKICAgICAgICAgLy8g
UXVlcnlpbmcgdGhlIHR5cGUuCi0gICAgICAgIGJvb2wgaXNTdHJpbmcoKSBjb25zdDsKLSAgICAg
ICAgYm9vbCBpc09iamVjdCgpIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNHZXR0ZXJT
ZXR0ZXIoKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc1N0cmluZygp
IGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGlzT2JqZWN0KCkgY29uc3Q7
CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgYm9vbCBpc0dldHRlclNldHRlcigp
IGNvbnN0OwogICAgICAgICBib29sIGluaGVyaXRzKGNvbnN0IENsYXNzSW5mbyopIGNvbnN0Owog
ICAgICAgICB2aXJ0dWFsIGJvb2wgaXNBUElWYWx1ZVdyYXBwZXIoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNQcm9wZXJ0eU5hbWVJdGVyYXRvcigpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC04OCwyNSArODgsMjUgQEAKICAgICAgICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUoKSBjb25zdDsKIAogICAgICAgICAvLyBFeHRyYWN0aW5nIHRoZSB2YWx1
ZS4KLSAgICAgICAgYm9vbCBnZXRTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBVU3RyaW5nJikgY29u
c3Q7Ci0gICAgICAgIFVTdHJpbmcgZ2V0U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykgY29uc3Q7IC8v
IG51bGwgc3RyaW5nIGlmIG5vdCBhIHN0cmluZwotICAgICAgICBKU09iamVjdCogZ2V0T2JqZWN0
KCk7IC8vIE5VTEwgaWYgbm90IGFuIG9iamVjdAotICAgICAgICBjb25zdCBKU09iamVjdCogZ2V0
T2JqZWN0KCkgY29uc3Q7IC8vIE5VTEwgaWYgbm90IGFuIG9iamVjdAorICAgICAgICBKU19FWFBP
UlRfUFJJVkFURSBib29sIGdldFN0cmluZyhFeGVjU3RhdGUqLCBVU3RyaW5nJikgY29uc3Q7Cisg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFVTdHJpbmcgZ2V0U3RyaW5nKEV4ZWNTdGF0ZSopIGNv
bnN0OyAvLyBudWxsIHN0cmluZyBpZiBub3QgYSBzdHJpbmcKKyAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgSlNPYmplY3QqIGdldE9iamVjdCgpOyAvLyAwIGlmIG5vdCBhbiBvYmplY3QKKyAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgY29uc3QgSlNPYmplY3QqIGdldE9iamVjdCgpIGNvbnN0OyAv
LyAwIGlmIG5vdCBhbiBvYmplY3QKICAgICAgICAgCi0gICAgICAgIHZpcnR1YWwgQ2FsbFR5cGUg
Z2V0Q2FsbERhdGEoQ2FsbERhdGEmKTsKLSAgICAgICAgdmlydHVhbCBDb25zdHJ1Y3RUeXBlIGdl
dENvbnN0cnVjdERhdGEoQ29uc3RydWN0RGF0YSYpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSB2aXJ0dWFsIENhbGxUeXBlIGdldENhbGxEYXRhKENhbGxEYXRhJik7CisgICAgICAgIEpTX0VY
UE9SVF9QUklWQVRFIHZpcnR1YWwgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKENvbnN0
cnVjdERhdGEmKTsKIAogICAgICAgICAvLyBFeHRyYWN0aW5nIGludGVnZXIgdmFsdWVzLgogICAg
ICAgICAvLyBGSVhNRTogcmVtb3ZlIHRoZXNlIG1ldGhvZHMsIGNhbiBjaGVjayBpc051bWJlckNl
bGwgaW4gSlNWYWx1ZSAmJiB0aGVuIGNhbGwgYXNOdW1iZXJDZWxsOjoqLgotICAgICAgICB2aXJ0
dWFsIGJvb2wgZ2V0VUludDMyKHVpbnQzMl90JikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHZpcnR1YWwgYm9vbCBnZXRVSW50MzIodWludDMyX3QmKSBjb25zdDsKIAogICAgICAg
ICAvLyBCYXNpYyBjb252ZXJzaW9ucy4KLSAgICAgICAgdmlydHVhbCBKU1ZhbHVlIHRvUHJpbWl0
aXZlKEV4ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpIGNvbnN0OwotICAgICAgICB2
aXJ0dWFsIGJvb2wgZ2V0UHJpbWl0aXZlTnVtYmVyKEV4ZWNTdGF0ZSosIGRvdWJsZSYgbnVtYmVy
LCBKU1ZhbHVlJik7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCB0b0Jvb2xlYW4oRXhlY1N0YXRlKikg
Y29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgZG91YmxlIHRvTnVtYmVyKEV4ZWNTdGF0ZSopIGNvbnN0
OwotICAgICAgICB2aXJ0dWFsIFVTdHJpbmcgdG9TdHJpbmcoRXhlY1N0YXRlKikgY29uc3Q7Ci0g
ICAgICAgIHZpcnR1YWwgSlNPYmplY3QqIHRvT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0OworICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIEpTVmFsdWUgdG9QcmltaXRpdmUoRXhlY1N0
YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHZpcnR1YWwgYm9vbCBnZXRQcmltaXRpdmVOdW1iZXIoRXhlY1N0YXRlKiwgZG91Ymxl
JiBudW1iZXIsIEpTVmFsdWUmKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCBi
b29sIHRvQm9vbGVhbihFeGVjU3RhdGUqKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgdmlydHVhbCBkb3VibGUgdG9OdW1iZXIoRXhlY1N0YXRlKikgY29uc3Q7CisgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgVVN0cmluZyB0b1N0cmluZyhFeGVjU3RhdGUqKSBjb25z
dDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCBKU09iamVjdCogdG9PYmplY3Qo
RXhlY1N0YXRlKikgY29uc3Q7CiAKICAgICAgICAgLy8gR2FyYmFnZSBjb2xsZWN0aW9uLgogICAg
ICAgICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBFeGVjU3RhdGUqKTsKQEAgLTExOSwxNiAr
MTE5LDE2IEBACiAjZW5kaWYKIAogICAgICAgICAvLyBPYmplY3Qgb3BlcmF0aW9ucywgd2l0aCB0
aGUgdG9PYmplY3Qgb3BlcmF0aW9uIGluY2x1ZGVkLgotICAgICAgICBjb25zdCBDbGFzc0luZm8q
IGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fc3RydWN0dXJlLT5jbGFzc0luZm8oKTsgfQot
ICAgICAgICB2aXJ0dWFsIHZvaWQgcHV0KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0gICAgICAgIHZpcnR1YWwg
dm9pZCBwdXQoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlKTsKLSAg
ICAgICAgdmlydHVhbCBib29sIGRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSk7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBkZWxldGVQcm9wZXJ0
eShFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fc3Ry
dWN0dXJlLT5jbGFzc0luZm8oKTsgfQorICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFs
IHZvaWQgcHV0KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1
YWwgdm9pZCBwdXQoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlKTsK
KyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCBib29sIGRlbGV0ZVByb3BlcnR5KEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CisgICAgICAgIEpTX0VY
UE9SVF9QUklWQVRFIHZpcnR1YWwgYm9vbCBkZWxldGVQcm9wZXJ0eShFeGVjU3RhdGUqLCB1bnNp
Z25lZCBwcm9wZXJ0eU5hbWUpOwogCi0gICAgICAgIHZpcnR1YWwgSlNPYmplY3QqIHRvVGhpc09i
amVjdChFeGVjU3RhdGUqKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCBKU1ZhbHVlIGdldEpTTnVt
YmVyKCk7Ci0gICAgICAgIHZvaWQqIHZwdHIoKSB7IHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDx2
b2lkKio+KHRoaXMpOyB9Ci0gICAgICAgIHZvaWQgc2V0VlB0cih2b2lkKiB2cHRyKSB7ICpyZWlu
dGVycHJldF9jYXN0PHZvaWQqKj4odGhpcykgPSB2cHRyOyB9CisgICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHZpcnR1YWwgSlNPYmplY3QqIHRvVGhpc09iamVjdChFeGVjU3RhdGUqKSBjb25zdDsK
KyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCBKU1ZhbHVlIGdldEpTTnVtYmVyKCk7
CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQqIHZwdHIoKSB7IHJldHVybiAqcmVpbnRl
cnByZXRfY2FzdDx2b2lkKio+KHRoaXMpOyB9CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZv
aWQgc2V0VlB0cih2b2lkKiB2cHRyKSB7ICpyZWludGVycHJldF9jYXN0PHZvaWQqKj4odGhpcykg
PSB2cHRyOyB9CiAKICAgICAgICAgLy8gRklYTUU6IFJlbmFtZSBnZXRPd25Qcm9wZXJ0eVNsb3Qg
dG8gdmlydHVhbEdldE93blByb3BlcnR5U2xvdCwgYW5kCiAgICAgICAgIC8vIGZhc3RHZXRPd25Q
cm9wZXJ0eVNsb3QgdG8gZ2V0T3duUHJvcGVydHlTbG90LiBDYWxsZXJzIHNob3VsZCBhbHdheXMK
QEAgLTE1MSw4ICsxNTEsOCBAQAogCiAgICAgcHJpdmF0ZToKICAgICAgICAgLy8gQmFzZSBpbXBs
ZW1lbnRhdGlvbjsgZm9yIG5vbi1vYmplY3QgY2xhc3NlcyBpbXBsZW1lbnRzIGdldFByb3BlcnR5
U2xvdC4KLSAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUq
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgICAg
ICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZp
cnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCB1bnNpZ25lZCBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgICAgICAKICAgICAgICAgU3RydWN0dXJl
KiBtX3N0cnVjdHVyZTsKICAgICB9OwpAQCAtMTcxLDcgKzE3MSw3IEBACiAgICAgICAgIHJldHVy
biBtX3N0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gT2JqZWN0VHlwZTsKICAgICB9CiAK
LSAgICBpbmxpbmUgYm9vbCBKU0NlbGw6OmlzU3RyaW5nKCkgY29uc3QKKyAgICBKU19FWFBPUlRf
UFJJVkFURSBpbmxpbmUgYm9vbCBKU0NlbGw6OmlzU3RyaW5nKCkgY29uc3QKICAgICB7CiAgICAg
ICAgIHJldHVybiBtX3N0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gU3RyaW5nVHlwZTsK
ICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaAkocmV2aXNp
b24gODIwMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaAkod29y
a2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQAogICAgIGNsYXNzIEpTTG9jayB7CiAgICAgICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKEpTTG9jayk7CiAgICAgcHVibGljOgotICAgICAgICBKU0xv
Y2soRXhlY1N0YXRlKik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTTG9jayhFeGVjU3Rh
dGUqKTsKICAgICAgICAgSlNMb2NrKEpTR2xvYmFsRGF0YSopOwogCiAgICAgICAgIEpTTG9jayhK
U0xvY2tCZWhhdmlvciBsb2NrQmVoYXZpb3IpCkBAIC04MCwxMyArODAsMTMgQEAKICAgICAgICAg
ICAgIHVubG9jayhtX2xvY2tCZWhhdmlvcik7IAogICAgICAgICB9CiAgICAgICAgIAotICAgICAg
ICBzdGF0aWMgdm9pZCBsb2NrKEpTTG9ja0JlaGF2aW9yKTsKLSAgICAgICAgc3RhdGljIHZvaWQg
dW5sb2NrKEpTTG9ja0JlaGF2aW9yKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IHZvaWQgbG9jayhKU0xvY2tCZWhhdmlvcik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyB2b2lkIHVubG9jayhKU0xvY2tCZWhhdmlvcik7CiAgICAgICAgIHN0YXRpYyB2b2lkIGxv
Y2soRXhlY1N0YXRlKik7CiAgICAgICAgIHN0YXRpYyB2b2lkIHVubG9jayhFeGVjU3RhdGUqKTsK
IAotICAgICAgICBzdGF0aWMgaW50cHRyX3QgbG9ja0NvdW50KCk7Ci0gICAgICAgIHN0YXRpYyBi
b29sIGN1cnJlbnRUaHJlYWRJc0hvbGRpbmdMb2NrKCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBpbnRwdHJfdCBsb2NrQ291bnQoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIGJvb2wgY3VycmVudFRocmVhZElzSG9sZGluZ0xvY2soKTsKIAogICAgICAgICBK
U0xvY2tCZWhhdmlvciBtX2xvY2tCZWhhdmlvcjsKIApAQCAtOTQsOCArOTQsOCBAQAogICAgICAg
ICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRHJvcEFsbExvY2tzKTsKICAgICAgICAgcHVibGlj
OgogICAgICAgICAgICAgRHJvcEFsbExvY2tzKEV4ZWNTdGF0ZSogZXhlYyk7Ci0gICAgICAgICAg
ICBEcm9wQWxsTG9ja3MoSlNMb2NrQmVoYXZpb3IpOwotICAgICAgICAgICAgfkRyb3BBbGxMb2Nr
cygpOworICAgICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgRHJvcEFsbExvY2tzKEpTTG9ja0Jl
aGF2aW9yKTsKKyAgICAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIH5Ecm9wQWxsTG9ja3MoKTsK
ICAgICAgICAgICAgIAogICAgICAgICBwcml2YXRlOgogICAgICAgICAgICAgaW50cHRyX3QgbV9s
b2NrQ291bnQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNs
b3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0
eVNsb3QuaAkocmV2aXNpb24gODIwMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm9wZXJ0eVNsb3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjIwLDcgKzIyMCw3IEBACiAgICAg
ICAgICAgICByZXR1cm4gbV9nZXRWYWx1ZTsKICAgICAgICAgfQogICAgIHByaXZhdGU6Ci0gICAg
ICAgIEpTVmFsdWUgZnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKikgY29uc3Q7CisgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgZnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKikgY29uc3Q7
CiAKICAgICAgICAgR2V0VmFsdWVGdW5jIG1fZ2V0VmFsdWU7CiAgICAgICAgIEdldEluZGV4VmFs
dWVGdW5jIG1fZ2V0SW5kZXhWYWx1ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDgyMDEwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBACiAgICAgICAgIHZpcnR1YWwgQ2FsbFR5cGUgZ2V0
Q2FsbERhdGEoQ2FsbERhdGEmKTsKICAgICB9OwogCi0gICAgSlNPYmplY3QqIGNvbnN0cnVjdEZ1
bmN0aW9uKEV4ZWNTdGF0ZSosIGNvbnN0IEFyZ0xpc3QmLCBjb25zdCBJZGVudGlmaWVyJiBmdW5j
dGlvbk5hbWUsIGNvbnN0IFVTdHJpbmcmIHNvdXJjZVVSTCwgaW50IGxpbmVOdW1iZXIpOworICAg
IEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUq
LCBjb25zdCBBcmdMaXN0JiwgY29uc3QgSWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBV
U3RyaW5nJiBzb3VyY2VVUkwsIGludCBsaW5lTnVtYmVyKTsKICAgICBKU09iamVjdCogY29uc3Ry
dWN0RnVuY3Rpb24oRXhlY1N0YXRlKiwgY29uc3QgQXJnTGlzdCYpOwogCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5n
cy5oCShyZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Nt
YWxsU3RyaW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC03Myw4ICs3Myw4IEBACiAgICAgcHJpdmF0
ZToKICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNpbmdsZUNoYXJhY3RlclN0cmluZ0Nv
dW50ID0gbWF4U2luZ2xlQ2hhcmFjdGVyU3RyaW5nICsgMTsKIAotICAgICAgICB2b2lkIGNyZWF0
ZUVtcHR5U3RyaW5nKEpTR2xvYmFsRGF0YSopOwotICAgICAgICB2b2lkIGNyZWF0ZVNpbmdsZUNo
YXJhY3RlclN0cmluZyhKU0dsb2JhbERhdGEqLCB1bnNpZ25lZCBjaGFyKTsKKyAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgdm9pZCBjcmVhdGVFbXB0eVN0cmluZyhKU0dsb2JhbERhdGEqKTsKKyAg
ICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBjcmVhdGVTaW5nbGVDaGFyYWN0ZXJTdHJpbmco
SlNHbG9iYWxEYXRhKiwgdW5zaWduZWQgY2hhcik7CiAKICAgICAgICAgSlNTdHJpbmcqIG1fZW1w
dHlTdHJpbmc7CiAgICAgICAgIEpTU3RyaW5nKiBtX3NpbmdsZUNoYXJhY3RlclN0cmluZ3Nbc2lu
Z2xlQ2hhcmFjdGVyU3RyaW5nQ291bnRdOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oCShyZXZpc2lvbiA4MjAxMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTY4LDggKzY4LDggQEAKIAogICAgICAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEoKSB7IHJldHVybiBtX2dsb2JhbERhdGE7IH0KIAotICAgICAgICB2b2lkIGFkZChjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7IGFkZChpZGVudGlmaWVyLmltcGwoKSk7IH0KLSAgICAg
ICAgdm9pZCBhZGQoU3RyaW5nSW1wbCopOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lk
IGFkZChjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7IGFkZChpZGVudGlmaWVyLmltcGwo
KSk7IH0KKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBhZGQoU3RyaW5nSW1wbCopOwog
ICAgICAgICB2b2lkIGFkZEtub3duVW5pcXVlKFN0cmluZ0ltcGwqIGlkZW50aWZpZXIpIHsgbV9k
YXRhLT5wcm9wZXJ0eU5hbWVWZWN0b3IoKS5hcHBlbmQoSWRlbnRpZmllcihtX2dsb2JhbERhdGEs
IGlkZW50aWZpZXIpKTsgfQogCiAgICAgICAgIElkZW50aWZpZXImIG9wZXJhdG9yW10odW5zaWdu
ZWQgaSkgeyByZXR1cm4gbV9kYXRhLT5wcm9wZXJ0eU5hbWVWZWN0b3IoKVtpXTsgfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oCShyZXZpc2lvbiA4MjAxMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1
LDEyICs0NSwxMiBAQAogICAgIEpTT2JqZWN0KiBjcmVhdGVUeXBlRXJyb3IoSlNHbG9iYWxPYmpl
Y3QqLCBjb25zdCBVU3RyaW5nJik7CiAgICAgSlNPYmplY3QqIGNyZWF0ZVVSSUVycm9yKEpTR2xv
YmFsT2JqZWN0KiwgY29uc3QgVVN0cmluZyYpOwogICAgIC8vIEV4ZWNTdGF0ZSB3cmFwcGVycy4K
LSAgICBKU09iamVjdCogY3JlYXRlRXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYpOwor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBjcmVhdGVFcnJvcihFeGVjU3RhdGUqLCBj
b25zdCBVU3RyaW5nJik7CiAgICAgSlNPYmplY3QqIGNyZWF0ZUV2YWxFcnJvcihFeGVjU3RhdGUq
LCBjb25zdCBVU3RyaW5nJik7Ci0gICAgSlNPYmplY3QqIGNyZWF0ZVJhbmdlRXJyb3IoRXhlY1N0
YXRlKiwgY29uc3QgVVN0cmluZyYpOwotICAgIEpTT2JqZWN0KiBjcmVhdGVSZWZlcmVuY2VFcnJv
cihFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJik7Ci0gICAgSlNPYmplY3QqIGNyZWF0ZVN5bnRh
eEVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmKTsKLSAgICBKU09iamVjdCogY3JlYXRl
VHlwZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmKTsKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSBKU09iamVjdCogY3JlYXRlUmFuZ2VFcnJvcihFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5n
Jik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIGNyZWF0ZVJlZmVyZW5jZUVycm9y
KEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU09i
amVjdCogY3JlYXRlU3ludGF4RXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYpOworICAg
IEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBjcmVhdGVUeXBlRXJyb3IoRXhlY1N0YXRlKiwg
Y29uc3QgVVN0cmluZyYpOwogICAgIEpTT2JqZWN0KiBjcmVhdGVVUklFcnJvcihFeGVjU3RhdGUq
LCBjb25zdCBVU3RyaW5nJik7CiAKICAgICAvLyBNZXRob2RzIHRvIGFkZCAKQEAgLTYwLDEyICs2
MCwxMiBAQAogICAgIEpTT2JqZWN0KiBhZGRFcnJvckluZm8oRXhlY1N0YXRlKiwgSlNPYmplY3Qq
IGVycm9yLCBpbnQgbGluZSwgY29uc3QgU291cmNlQ29kZSYpOwogCiAgICAgLy8gTWV0aG9kcyB0
byB0aHJvdyBFcnJvcnMuCi0gICAgSlNWYWx1ZSB0aHJvd0Vycm9yKEV4ZWNTdGF0ZSosIEpTVmFs
dWUpOwotICAgIEpTT2JqZWN0KiB0aHJvd0Vycm9yKEV4ZWNTdGF0ZSosIEpTT2JqZWN0Kik7Cisg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSB0aHJvd0Vycm9yKEV4ZWNTdGF0ZSosIEpTVmFs
dWUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd0Vycm9yKEV4ZWNTdGF0
ZSosIEpTT2JqZWN0Kik7CiAKICAgICAvLyBDb252ZW5pZW5jZSB3cmFwcGVycywgY3JlYXRlIGFu
IHRocm93IGFuIGV4Y2VwdGlvbiB3aXRoIGEgZGVmYXVsdCBtZXNzYWdlLgotICAgIEpTT2JqZWN0
KiB0aHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqKTsKLSAgICBKU09iamVjdCogdGhyb3dTeW50YXhF
cnJvcihFeGVjU3RhdGUqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogdGhyb3dU
eXBlRXJyb3IoRXhlY1N0YXRlKik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRo
cm93U3ludGF4RXJyb3IoRXhlY1N0YXRlKik7CiAKICAgICAvLyBDb252ZW5pZW5jZSB3cmFwcGVy
cywgd3JhcCByZXN1bHQgYXMgYW4gRW5jb2RlZEpTVmFsdWUuCiAgICAgaW5saW5lIEVuY29kZWRK
U1ZhbHVlIHRocm93Vk1FcnJvcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgZXJyb3IpIHsgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0Vycm9yKGV4ZWMsIGVycm9yKSk7IH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nLmgJKHJldmlzaW9uIDgyMDEwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMCwyNCArMzAsMjQgQEAKIGNsYXNzIFVTdHJpbmcgewogcHVibGljOgogICAgIC8vIENvbnN0
cnVjdCBhIG51bGwgc3RyaW5nLCBkaXN0aW5ndWlzaGFibGUgZnJvbSBhbiBlbXB0eSBzdHJpbmcu
Ci0gICAgVVN0cmluZygpIHsgfQorICAgIEpTX0VYUE9SVF9QUklWQVRFIFVTdHJpbmcoKSB7IH0K
IAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyB3aXRoIFVURi0xNiBkYXRhLgotICAgIFVTdHJp
bmcoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgVVN0cmluZyhjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVu
Z3RoKTsKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyB3aXRoIFVURi0xNiBkYXRhLCBmcm9t
IGEgbnVsbC10ZXJtaW5hdGVkIHNvdXJjZS4KLSAgICBVU3RyaW5nKGNvbnN0IFVDaGFyKik7Cisg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgVVN0cmluZyhjb25zdCBVQ2hhciopOwogCiAgICAgLy8gQ29u
c3RydWN0IGEgc3RyaW5nIHdpdGggbGF0aW4xIGRhdGEuCi0gICAgVVN0cmluZyhjb25zdCBjaGFy
KiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIFVT
dHJpbmcoY29uc3QgY2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKIAogICAgIC8v
IENvbnN0cnVjdCBhIHN0cmluZyB3aXRoIGxhdGluMSBkYXRhLCBmcm9tIGEgbnVsbC10ZXJtaW5h
dGVkIHNvdXJjZS4KLSAgICBVU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOworICAgIEpT
X0VYUE9SVF9QUklWQVRFIFVTdHJpbmcoY29uc3QgY2hhciogY2hhcmFjdGVycyk7CiAKICAgICAv
LyBDb25zdHJ1Y3QgYSBzdHJpbmcgcmVmZXJlbmNpbmcgYW4gZXhpc3RpbmcgU3RyaW5nSW1wbC4K
LSAgICBVU3RyaW5nKFN0cmluZ0ltcGwqIGltcGwpIDogbV9pbXBsKGltcGwpIHsgfQotICAgIFVT
dHJpbmcoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBpbXBsKSA6IG1faW1wbChpbXBsKSB7IH0KLSAg
ICBVU3RyaW5nKFJlZlB0cjxTdHJpbmdJbXBsPiBpbXBsKSA6IG1faW1wbChpbXBsKSB7IH0KKyAg
ICBKU19FWFBPUlRfUFJJVkFURSBVU3RyaW5nKFN0cmluZ0ltcGwqIGltcGwpIDogbV9pbXBsKGlt
cGwpIHsgfQorICAgIEpTX0VYUE9SVF9QUklWQVRFIFVTdHJpbmcoUGFzc1JlZlB0cjxTdHJpbmdJ
bXBsPiBpbXBsKSA6IG1faW1wbChpbXBsKSB7IH0KKyAgICBKU19FWFBPUlRfUFJJVkFURSBVU3Ry
aW5nKFJlZlB0cjxTdHJpbmdJbXBsPiBpbXBsKSA6IG1faW1wbChpbXBsKSB7IH0KIAogICAgIC8v
IElubGluZSB0aGUgZGVzdHJ1Y3Rvci4KICAgICBBTFdBWVNfSU5MSU5FIH5VU3RyaW5nKCkgeyB9
CkBAIC03Niw5ICs3Niw5IEBACiAgICAgICAgIHJldHVybiBtX2ltcGwtPmNoYXJhY3RlcnMoKTsK
ICAgICB9CiAKLSAgICBDU3RyaW5nIGFzY2lpKCkgY29uc3Q7Ci0gICAgQ1N0cmluZyBsYXRpbjEo
KSBjb25zdDsKLSAgICBDU3RyaW5nIHV0ZjgoYm9vbCBzdHJpY3QgPSBmYWxzZSkgY29uc3Q7Cisg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgQ1N0cmluZyBhc2NpaSgpIGNvbnN0OworICAgIEpTX0VYUE9S
VF9QUklWQVRFIENTdHJpbmcgbGF0aW4xKCkgY29uc3Q7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
Q1N0cmluZyB1dGY4KGJvb2wgc3RyaWN0ID0gZmFsc2UpIGNvbnN0OwogCiAgICAgVUNoYXIgb3Bl
cmF0b3JbXSh1bnNpZ25lZCBpbmRleCkgY29uc3QKICAgICB7CkBAIC04NywxMSArODcsMTEgQEAK
ICAgICAgICAgcmV0dXJuIG1faW1wbC0+Y2hhcmFjdGVycygpW2luZGV4XTsKICAgICB9CiAKLSAg
ICBzdGF0aWMgVVN0cmluZyBudW1iZXIoaW50KTsKLSAgICBzdGF0aWMgVVN0cmluZyBudW1iZXIo
dW5zaWduZWQpOwotICAgIHN0YXRpYyBVU3RyaW5nIG51bWJlcihsb25nKTsKLSAgICBzdGF0aWMg
VVN0cmluZyBudW1iZXIobG9uZyBsb25nKTsKLSAgICBzdGF0aWMgVVN0cmluZyBudW1iZXIoZG91
YmxlKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgVVN0cmluZyBudW1iZXIoaW50KTsK
KyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgVVN0cmluZyBudW1iZXIodW5zaWduZWQpOwor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBVU3RyaW5nIG51bWJlcihsb25nKTsKKyAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgVVN0cmluZyBudW1iZXIobG9uZyBsb25nKTsKKyAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgVVN0cmluZyBudW1iZXIoZG91YmxlKTsKIAogICAgIC8v
IEZpbmQgYSBzaW5nbGUgY2hhcmFjdGVyIG9yIHN0cmluZywgYWxzbyB3aXRoIG1hdGNoIGZ1bmN0
aW9uICYgbGF0aW4xIGZvcm1zLgogICAgIHNpemVfdCBmaW5kKFVDaGFyIGMsIHVuc2lnbmVkIHN0
YXJ0ID0gMCkgY29uc3QKQEAgLTEwNyw3ICsxMDcsNyBAQAogICAgIHNpemVfdCByZXZlcnNlRmlu
ZChjb25zdCBVU3RyaW5nJiBzdHIsIHVuc2lnbmVkIHN0YXJ0ID0gVUlOVF9NQVgpIGNvbnN0CiAg
ICAgICAgIHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+cmV2ZXJzZUZpbmQoc3RyLmltcGwoKSwg
c3RhcnQpIDogbm90Rm91bmQ7IH0KIAotICAgIFVTdHJpbmcgc3Vic3RyaW5nU2hhcmluZ0ltcGwo
dW5zaWduZWQgcG9zLCB1bnNpZ25lZCBsZW4gPSBVSU5UX01BWCkgY29uc3Q7CisgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgVVN0cmluZyBzdWJzdHJpbmdTaGFyaW5nSW1wbCh1bnNpZ25lZCBwb3MsIHVu
c2lnbmVkIGxlbiA9IFVJTlRfTUFYKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBSZWZQdHI8U3Ry
aW5nSW1wbD4gbV9pbXBsOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0
ZUluc3RhbmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RGF0ZUluc3RhbmNlLmgJKHJldmlzaW9uIDgyMDEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRGF0ZUluc3RhbmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDggKzMxLDggQEAK
IAogICAgIGNsYXNzIERhdGVJbnN0YW5jZSA6IHB1YmxpYyBKU1dyYXBwZXJPYmplY3QgewogICAg
IHB1YmxpYzoKLSAgICAgICAgRGF0ZUluc3RhbmNlKEV4ZWNTdGF0ZSosIGRvdWJsZSk7Ci0gICAg
ICAgIERhdGVJbnN0YW5jZShFeGVjU3RhdGUqLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+
LCBkb3VibGUpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBEYXRlSW5zdGFuY2UoRXhlY1N0
YXRlKiwgZG91YmxlKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgRGF0ZUluc3RhbmNlKEV4
ZWNTdGF0ZSosIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIGRvdWJsZSk7CiAgICAgICAg
IGV4cGxpY2l0IERhdGVJbnN0YW5jZShFeGVjU3RhdGUqLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1
Y3R1cmU+KTsKIAogICAgICAgICBkb3VibGUgaW50ZXJuYWxOdW1iZXIoKSBjb25zdCB7IHJldHVy
biBpbnRlcm5hbFZhbHVlKCkudW5jaGVja2VkR2V0TnVtYmVyKCk7IH0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JvcGVJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUm9wZUltcGwuaAkocmV2aXNpb24gODIwMTApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Sb3BlSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC04
Myw3ICs4Myw3IEBACiAgICAgewogICAgIH0KIAotICAgIHZvaWQgZGVzdHJ1Y3ROb25SZWN1cnNp
dmUoKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGRlc3RydWN0Tm9uUmVjdXJzaXZlKCk7
CiAgICAgdm9pZCBkZXJlZkZpYmVyc05vblJlY3Vyc2l2ZShWZWN0b3I8Um9wZUltcGwqLCAzMj4m
IHdvcmtRdWV1ZSk7CiAKICAgICBib29sIGhhc09uZVJlZigpIHsgcmV0dXJuIChtX3JlZkNvdW50
QW5kRmxhZ3MgJiBzX3JlZkNvdW50TWFzaykgPT0gc19yZWZDb3VudEluY3JlbWVudDsgfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgJKHJldmlz
aW9uIDgyMDEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRh
LmgJKHdvcmtpbmcgY29weSkKQEAgLTExMyw3ICsxMTMsNyBAQAogICAgICAgICAvLyB0aGUgb3Jp
Z2luYWwgQVBJLgogICAgICAgICBlbnVtIEdsb2JhbERhdGFUeXBlIHsgRGVmYXVsdCwgQVBJQ29u
dGV4dEdyb3VwLCBBUElTaGFyZWQgfTsKIAotICAgICAgICBzdHJ1Y3QgQ2xpZW50RGF0YSB7Cisg
ICAgICAgIHN0cnVjdCBKU19FWFBPUlRfUFJJVkFURSBDbGllbnREYXRhIHsKICAgICAgICAgICAg
IHZpcnR1YWwgfkNsaWVudERhdGEoKSA9IDA7CiAgICAgICAgIH07CiAKQEAgLTEyMiwxMCArMTIy
LDEwIEBACiAgICAgICAgIHN0YXRpYyBib29sIHNoYXJlZEluc3RhbmNlRXhpc3RzKCk7CiAgICAg
ICAgIHN0YXRpYyBKU0dsb2JhbERhdGEmIHNoYXJlZEluc3RhbmNlKCk7CiAKLSAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8SlNHbG9iYWxEYXRhPiBjcmVhdGUoVGhyZWFkU3RhY2tUeXBlKTsKLSAg
ICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SlNHbG9iYWxEYXRhPiBjcmVhdGVMZWFrZWQoVGhyZWFk
U3RhY2tUeXBlKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8
SlNHbG9iYWxEYXRhPiBjcmVhdGUoVGhyZWFkU3RhY2tUeXBlKTsKKyAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8SlNHbG9iYWxEYXRhPiBjcmVhdGVMZWFrZWQoVGhy
ZWFkU3RhY2tUeXBlKTsKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SlNHbG9iYWxEYXRhPiBj
cmVhdGVDb250ZXh0R3JvdXAoVGhyZWFkU3RhY2tUeXBlKTsKLSAgICAgICAgfkpTR2xvYmFsRGF0
YSgpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB+SlNHbG9iYWxEYXRhKCk7CiAKICNpZiBF
TkFCTEUoSlNDX01VTFRJUExFX1RIUkVBRFMpCiAgICAgICAgIC8vIFdpbGwgc3RhcnQgdHJhY2tp
bmcgdGhyZWFkcyB0aGF0IHVzZSB0aGUgaGVhcCwgd2hpY2ggaXMgcmVzb3VyY2UtaGVhdnkuCkBA
IC0yNDgsOSArMjQ4LDkgQEAKIAogICAgICAgICB2b2lkIHJlc2V0RGF0ZUNhY2hlKCk7CiAKLSAg
ICAgICAgdm9pZCBzdGFydFNhbXBsaW5nKCk7Ci0gICAgICAgIHZvaWQgc3RvcFNhbXBsaW5nKCk7
Ci0gICAgICAgIHZvaWQgZHVtcFNhbXBsZURhdGEoRXhlY1N0YXRlKiBleGVjKTsKKyAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzdGFydFNhbXBsaW5nKCk7CisgICAgICAgIEpTX0VYUE9S
VF9QUklWQVRFIHZvaWQgc3RvcFNhbXBsaW5nKCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IHZvaWQgZHVtcFNhbXBsZURhdGEoRXhlY1N0YXRlKik7CiAgICAgICAgIHZvaWQgcmVjb21waWxl
QWxsSlNGdW5jdGlvbnMoKTsKICAgICAgICAgUmVnRXhwQ2FjaGUqIHJlZ0V4cENhY2hlKCkgeyBy
ZXR1cm4gbV9yZWdFeHBDYWNoZTsgfQogI2lmIEVOQUJMRShSRUdFWFBfVFJBQ0lORykKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RpbWVvdXRDaGVja2VyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGltZW91dENoZWNrZXIuaAkocmV2
aXNpb24gODIwMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UaW1lb3V0Q2hl
Y2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw5ICs1Nyw5IEBACiAgICAgICAgICAgICAtLW1f
c3RhcnRDb3VudDsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgcmVzZXQoKTsKKyAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgdm9pZCByZXNldCgpOwogCi0gICAgICAgIGJvb2wgZGlkVGltZU91
dChFeGVjU3RhdGUqKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBkaWRUaW1lT3V0
KEV4ZWNTdGF0ZSopOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdW5zaWduZWQgbV90aW1lb3V0
SW50ZXJ2YWw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IZWFwLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGVhcC5oCShyZXZpc2lv
biA4MjAxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hlYXAuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNjMsMjggKzYzLDI4IEBACiAgICAgICAgIAogICAgICAgICBIZWFwKEpTR2xv
YmFsRGF0YSopOwogICAgICAgICB+SGVhcCgpOwotICAgICAgICB2b2lkIGRlc3Ryb3koKTsgLy8g
SlNHbG9iYWxEYXRhIG11c3QgY2FsbCBkZXN0cm95KCkgYmVmb3JlIH5IZWFwKCkuCisgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZGVzdHJveSgpOyAvLyBKU0dsb2JhbERhdGEgbXVzdCBj
YWxsIGRlc3Ryb3koKSBiZWZvcmUgfkhlYXAoKS4KIAogICAgICAgICBKU0dsb2JhbERhdGEqIGds
b2JhbERhdGEoKSBjb25zdCB7IHJldHVybiBtX2dsb2JhbERhdGE7IH0KICAgICAgICAgTWFya2Vk
U3BhY2UmIG1hcmtlZFNwYWNlKCkgeyByZXR1cm4gbV9tYXJrZWRTcGFjZTsgfQogICAgICAgICBN
YWNoaW5lVGhyZWFkcyYgbWFjaGluZVRocmVhZHMoKSB7IHJldHVybiBtX21hY2hpbmVUaHJlYWRz
OyB9CiAKLSAgICAgICAgR0NBY3Rpdml0eUNhbGxiYWNrKiBhY3Rpdml0eUNhbGxiYWNrKCk7Cisg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIEdDQWN0aXZpdHlDYWxsYmFjayogYWN0aXZpdHlDYWxs
YmFjaygpOwogICAgICAgICB2b2lkIHNldEFjdGl2aXR5Q2FsbGJhY2soUGFzc093blB0cjxHQ0Fj
dGl2aXR5Q2FsbGJhY2s+KTsKIAotICAgICAgICBib29sIGlzQnVzeSgpOyAvLyB0cnVlIGlmIGFu
IGFsbG9jYXRpb24gb3IgY29sbGVjdGlvbiBpcyBpbiBwcm9ncmVzcwotICAgICAgICB2b2lkKiBh
bGxvY2F0ZShzaXplX3QpOwotICAgICAgICB2b2lkIGNvbGxlY3RBbGxHYXJiYWdlKCk7CisgICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNCdXN5KCk7IC8vIHRydWUgaWYgYW4gYWxsb2Nh
dGlvbiBvciBjb2xsZWN0aW9uIGlzIGluIHByb2dyZXNzCisgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQqIGFsbG9jYXRlKHNpemVfdCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZv
aWQgY29sbGVjdEFsbEdhcmJhZ2UoKTsKIAotICAgICAgICB2b2lkIHJlcG9ydEV4dHJhTWVtb3J5
Q29zdChzaXplX3QgY29zdCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVwb3J0
RXh0cmFNZW1vcnlDb3N0KHNpemVfdCBjb3N0KTsKIAotICAgICAgICB2b2lkIHByb3RlY3QoSlNW
YWx1ZSk7Ci0gICAgICAgIGJvb2wgdW5wcm90ZWN0KEpTVmFsdWUpOyAvLyBUcnVlIHdoZW4gdGhl
IHByb3RlY3QgY291bnQgZHJvcHMgdG8gMC4KKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBwcm90ZWN0KEpTVmFsdWUpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIHVucHJv
dGVjdChKU1ZhbHVlKTsgLy8gVHJ1ZSB3aGVuIHRoZSBwcm90ZWN0IGNvdW50IGRyb3BzIHRvIDAu
CiAKICAgICAgICAgYm9vbCBjb250YWlucyh2b2lkKik7CiAKLSAgICAgICAgc2l6ZV90IHNpemUo
KSBjb25zdDsKLSAgICAgICAgc2l6ZV90IGNhcGFjaXR5KCkgY29uc3Q7CisgICAgICAgIEpTX0VY
UE9SVF9QUklWQVRFIHNpemVfdCBzaXplKCkgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIHNpemVfdCBjYXBhY2l0eSgpIGNvbnN0OwogICAgICAgICBzaXplX3Qgb2JqZWN0Q291bnQo
KSBjb25zdDsKICAgICAgICAgc2l6ZV90IGdsb2JhbE9iamVjdENvdW50KCk7CiAgICAgICAgIHNp
emVfdCBwcm90ZWN0ZWRPYmplY3RDb3VudCgpOwpAQCAtMTEwLDggKzExMCw4IEBACiAgICAgICAg
IHN0YXRpYyBjb25zdCBzaXplX3QgbWluRXh0cmFDb3N0ID0gMjU2OwogICAgICAgICBzdGF0aWMg
Y29uc3Qgc2l6ZV90IG1heEV4dHJhQ29zdCA9IDEwMjQgKiAxMDI0OwogCi0gICAgICAgIHZvaWQq
IGFsbG9jYXRlU2xvd0Nhc2Uoc2l6ZV90KTsKLSAgICAgICAgdm9pZCByZXBvcnRFeHRyYU1lbW9y
eUNvc3RTbG93Q2FzZShzaXplX3QpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkKiBh
bGxvY2F0ZVNsb3dDYXNlKHNpemVfdCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQg
cmVwb3J0RXh0cmFNZW1vcnlDb3N0U2xvd0Nhc2Uoc2l6ZV90KTsKIAogICAgICAgICB2b2lkIG1h
cmtSb290cygpOwogICAgICAgICB2b2lkIG1hcmtQcm90ZWN0ZWRPYmplY3RzKEhlYXBSb290TWFy
a2VyJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmgJKHJldmlzaW9uIDgyMDEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQAogCiAg
ICAgdHlwZWRlZiBWZWN0b3I8RXhlY1N0YXRlKiwgMTY+IEV4ZWNTdGF0ZVN0YWNrOwogICAgIAot
ICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTVmFyaWFibGVPYmplY3QgeworICAg
IGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTVmFyaWFi
bGVPYmplY3QgewogICAgIHByb3RlY3RlZDoKICAgICAgICAgdHlwZWRlZiBIYXNoU2V0PFJlZlB0
cjxPcGFxdWVKU1dlYWtPYmplY3RNYXA+ID4gV2Vha01hcFNldDsKIApAQCAtNDM0LDcgKzQzNCw3
IEBACiAgICAgY2xhc3MgRHluYW1pY0dsb2JhbE9iamVjdFNjb3BlIHsKICAgICAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoRHluYW1pY0dsb2JhbE9iamVjdFNjb3BlKTsKICAgICBwdWJsaWM6Ci0g
ICAgICAgIER5bmFtaWNHbG9iYWxPYmplY3RTY29wZShKU0dsb2JhbERhdGEmLCBKU0dsb2JhbE9i
amVjdCopOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBEeW5hbWljR2xvYmFsT2JqZWN0U2Nv
cGUoSlNHbG9iYWxEYXRhJiwgSlNHbG9iYWxPYmplY3QqKTsKIAogICAgICAgICB+RHluYW1pY0ds
b2JhbE9iamVjdFNjb3BlKCkKICAgICAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0LmgJKHJldmlz
aW9uIDgyMDEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RXaXRo
R2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDEwICszOSwxMCBAQAogICAgICAg
ICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG8sIFR5cGVJbmZvKE9i
amVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsK
ICAgICB9CiAKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KCkgY29uc3Q7CisgICAg
SlNfRVhQT1JUX1BSSVZBVEUgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCgpIGNvbnN0Owog
CiBwcm90ZWN0ZWQ6Ci0gICAgSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0KEpTR2xvYmFsT2JqZWN0
KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
SlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQ
dHI8U3RydWN0dXJlPik7CiAKICAgICBKU09iamVjdFdpdGhHbG9iYWxPYmplY3QoTm9uTnVsbFBh
c3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUpCiAgICAgICAgIDogSlNOb25GaW5hbE9iamVj
dChzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5o
CShyZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFs
dWUuaAkod29ya2luZyBjb3B5KQpAQCAtODAsMTAgKzgwLDEwIEBACiAjZW5kaWYKICAgICB9Owog
Ci0gICAgZG91YmxlIG5vbklubGluZU5hTigpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIGRvdWJs
ZSBub25JbmxpbmVOYU4oKTsKIAogICAgIC8vIFRoaXMgaW1wbGVtZW50cyBUb0ludDMyLCBkZWZp
bmVkIGluIEVDTUEtMjYyIDkuNS4KLSAgICBpbnQzMl90IHRvSW50MzIoZG91YmxlKTsKKyAgICBK
U19FWFBPUlRfUFJJVkFURSBpbnQzMl90IHRvSW50MzIoZG91YmxlKTsKIAogICAgIC8vIFRoaXMg
aW1wbGVtZW50cyBUb1VJbnQzMiwgZGVmaW5lZCBpbiBFQ01BLTI2MiA5LjYuCiAgICAgaW5saW5l
IHVpbnQzMl90IHRvVUludDMyKGRvdWJsZSBudW1iZXIpCkBAIC0xOTEsNyArMTkxLDcgQEAKICAg
ICAgICAgSlNPYmplY3QqIHRvT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0OwogCiAgICAgICAgIC8v
IEludGVnZXIgY29udmVyc2lvbnMuCi0gICAgICAgIGRvdWJsZSB0b0ludGVnZXIoRXhlY1N0YXRl
KikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGRvdWJsZSB0b0ludGVnZXIoRXhl
Y1N0YXRlKikgY29uc3Q7CiAgICAgICAgIGRvdWJsZSB0b0ludGVnZXJQcmVzZXJ2ZU5hTihFeGVj
U3RhdGUqKSBjb25zdDsKICAgICAgICAgaW50MzJfdCB0b0ludDMyKEV4ZWNTdGF0ZSopIGNvbnN0
OwogICAgICAgICB1aW50MzJfdCB0b1VJbnQzMihFeGVjU3RhdGUqKSBjb25zdDsKQEAgLTIzMCw3
ICsyMzAsNyBAQAogCiAgICAgICAgIGJvb2wgaXNDZWxsKCkgY29uc3Q7CiAgICAgICAgIEpTQ2Vs
bCogYXNDZWxsKCkgY29uc3Q7Ci0gICAgICAgIGJvb2wgaXNWYWxpZENhbGxlZSgpOworICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSBib29sIGlzVmFsaWRDYWxsZWUoKTsKIAogI2lmbmRlZiBOREVC
VUcKICAgICAgICAgY2hhciogZGVzY3JpcHRpb24oKTsKQEAgLTI0NCwxMCArMjQ0LDEwIEBACiAg
ICAgICAgIEpTVmFsdWUoSGFzaFRhYmxlRGVsZXRlZFZhbHVlVGFnKTsKIAogICAgICAgICBpbmxp
bmUgY29uc3QgSlNWYWx1ZSBhc1ZhbHVlKCkgY29uc3QgeyByZXR1cm4gKnRoaXM7IH0KLSAgICAg
ICAgSlNPYmplY3QqIHRvT2JqZWN0U2xvd0Nhc2UoRXhlY1N0YXRlKikgY29uc3Q7Ci0gICAgICAg
IEpTT2JqZWN0KiB0b1RoaXNPYmplY3RTbG93Q2FzZShFeGVjU3RhdGUqKSBjb25zdDsKKyAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRvT2JqZWN0U2xvd0Nhc2UoRXhlY1N0YXRl
KikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0b1RoaXNPYmpl
Y3RTbG93Q2FzZShFeGVjU3RhdGUqKSBjb25zdDsKIAotICAgICAgICBKU09iamVjdCogc3ludGhl
c2l6ZVByb3RvdHlwZShFeGVjU3RhdGUqKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgSlNPYmplY3QqIHN5bnRoZXNpemVQcm90b3R5cGUoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAg
ICAgIEpTT2JqZWN0KiBzeW50aGVzaXplT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0OwogCiAjaWYg
VVNFKEpTVkFMVUUzMl82NCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3BlcnR5RGVzY3JpcHRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5oCShyZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5oCSh3b3JraW5nIGNvcHkp
CkBAIC00Niw4ICs0Niw4IEBACiAgICAgICAgIEpTVmFsdWUgdmFsdWUoKSBjb25zdCB7IHJldHVy
biBtX3ZhbHVlOyB9CiAgICAgICAgIEpTVmFsdWUgZ2V0dGVyKCkgY29uc3Q7CiAgICAgICAgIEpT
VmFsdWUgc2V0dGVyKCkgY29uc3Q7Ci0gICAgICAgIHZvaWQgc2V0VW5kZWZpbmVkKCk7Ci0gICAg
ICAgIHZvaWQgc2V0RGVzY3JpcHRvcihKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVz
KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRVbmRlZmluZWQoKTsKKyAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXREZXNjcmlwdG9yKEpTVmFsdWUsIHVuc2lnbmVk
IGF0dHJpYnV0ZXMpOwogICAgICAgICB2b2lkIHNldEFjY2Vzc29yRGVzY3JpcHRvcihKU1ZhbHVl
IGdldHRlciwgSlNWYWx1ZSBzZXR0ZXIsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgICAgICB2
b2lkIHNldFdyaXRhYmxlKGJvb2wpOwogICAgICAgICB2b2lkIHNldEVudW1lcmFibGUoYm9vbCk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dyYXBwZXJPYmplY3QuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dyYXBwZXJPYmpl
Y3QuaAkocmV2aXNpb24gODIwMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1dyYXBwZXJPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogCiAgICAg
Ly8gVGhpcyBjbGFzcyBpcyB1c2VkIGFzIGEgYmFzZSBmb3IgY2xhc3NlcyBzdWNoIGFzIFN0cmlu
ZywKICAgICAvLyBOdW1iZXIsIEJvb2xlYW4gYW5kIERhdGUgd2hpY2ggYXJlIHdyYXBwZXJzIGZv
ciBwcmltaXRpdmUgdHlwZXMuCi0gICAgY2xhc3MgSlNXcmFwcGVyT2JqZWN0IDogcHVibGljIEpT
Tm9uRmluYWxPYmplY3QgeworICAgIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEpTV3JhcHBlck9i
amVjdCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAg
IGV4cGxpY2l0IEpTV3JhcHBlck9iamVjdChOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+KTsK
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FsbERhdGEuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWxsRGF0YS5oCShyZXZpc2lv
biA4MjAxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhbGxEYXRhLmgJKHdv
cmtpbmcgY29weSkKQEAgLTU3LDcgKzU3LDcgQEAKICAgICAgICAgfSBqczsKICAgICB9OwogCi0g
ICAgSlNWYWx1ZSBjYWxsKEV4ZWNTdGF0ZSosIEpTVmFsdWUgZnVuY3Rpb25PYmplY3QsIENhbGxU
eXBlLCBjb25zdCBDYWxsRGF0YSYsIEpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0Jik7
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBjYWxsKEV4ZWNTdGF0ZSosIEpTVmFsdWUg
ZnVuY3Rpb25PYmplY3QsIENhbGxUeXBlLCBjb25zdCBDYWxsRGF0YSYsIEpTVmFsdWUgdGhpc1Zh
bHVlLCBjb25zdCBBcmdMaXN0Jik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCShyZXZpc2lvbiA4MjAxMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaAkod29ya2luZyBj
b3B5KQpAQCAtMzIsNyArMzIsNyBAQAogICAgIGNsYXNzIE1hcmtTdGFjazsKICAgICBjbGFzcyBT
Y29wZUNoYWluSXRlcmF0b3I7CiAgICAgCi0gICAgY2xhc3MgU2NvcGVDaGFpbk5vZGUgOiBwdWJs
aWMgSlNDZWxsIHsKKyAgICBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBTY29wZUNoYWluTm9kZSA6
IHB1YmxpYyBKU0NlbGwgewogICAgIHB1YmxpYzoKICAgICAgICAgU2NvcGVDaGFpbk5vZGUoU2Nv
cGVDaGFpbk5vZGUqIG5leHQsIEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIGdsb2JhbFRoaXMp
CiAgICAgICAgICAgICA6IEpTQ2VsbChnbG9iYWxEYXRhLT5zY29wZUNoYWluTm9kZVN0cnVjdHVy
ZS5nZXQoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0cnVjdERh
dGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zdHJ1
Y3REYXRhLmgJKHJldmlzaW9uIDgyMDEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29uc3RydWN0RGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw3ICs1Nyw3IEBACiAgICAg
ICAgIH0ganM7CiAgICAgfTsKIAotICAgIEpTT2JqZWN0KiBjb25zdHJ1Y3QoRXhlY1N0YXRlKiwg
SlNWYWx1ZSBjb25zdHJ1Y3RvciwgQ29uc3RydWN0VHlwZSwgY29uc3QgQ29uc3RydWN0RGF0YSYs
IGNvbnN0IEFyZ0xpc3QmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogY29uc3Ry
dWN0KEV4ZWNTdGF0ZSosIEpTVmFsdWUgY29uc3RydWN0b3IsIENvbnN0cnVjdFR5cGUsIGNvbnN0
IENvbnN0cnVjdERhdGEmLCBjb25zdCBBcmdMaXN0Jik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXJrZWRTcGFjZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcmtlZFNwYWNlLmgJKHJl
dmlzaW9uIDgyMDEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFya2VkU3Bh
Y2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTA1LDcgKzEwNSw3IEBACiAgICAgICAgIHZvaWQgZnJl
ZUJsb2NrcyhEb3VibHlMaW5rZWRMaXN0PE1hcmtlZEJsb2NrPiYpOwogCiAgICAgICAgIFNpemVD
bGFzcyYgc2l6ZUNsYXNzRm9yKHNpemVfdCk7Ci0gICAgICAgIHZvaWQqIGFsbG9jYXRlRnJvbVNp
emVDbGFzcyhTaXplQ2xhc3MmKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCogYWxs
b2NhdGVGcm9tU2l6ZUNsYXNzKFNpemVDbGFzcyYpOwogCiAgICAgICAgIHZvaWQgY2xlYXJNYXJr
cyhNYXJrZWRCbG9jayopOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bml0aWFsaXplVGhyZWFkaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5oCShyZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuaAkod29ya2luZyBj
b3B5KQpAQCAtMzMsNyArMzMsNyBAQAogCiAgICAgLy8gVGhpcyBmdW5jdGlvbiBtdXN0IGJlIGNh
bGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4gSXQgaXMgc2FmZSB0byBjYWxsIGl0IHJlcGVhdGVk
bHkuCiAgICAgLy8gRGFyd2luIGlzIGFuIGV4Y2VwdGlvbiB0byB0aGlzIHJ1bGU6IGl0IGlzIE9L
IHRvIGNhbGwgdGhpcyBmdW5jdGlvbiBmcm9tIGFueSB0aHJlYWQsIGV2ZW4gcmVlbnRyYW50bHku
Ci0gICAgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nKCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCBpbml0aWFsaXplVGhyZWFkaW5nKCk7CiAKIH0KIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAkocmV2
aXNpb24gODIwMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTg5LDcgKzg5LDcgQEAKICAgICAgICAg
dHlwZWRlZiBEZWNsYXJhdGlvblN0YWNrczo6VmFyU3RhY2sgVmFyU3RhY2s7CiAgICAgICAgIHR5
cGVkZWYgRGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0aW9uU3RhY2sgRnVuY3Rpb25TdGFjazsKIAot
ICAgICAgICBzdGF0aWMgdm9pZCBzZXREdW1wc0dlbmVyYXRlZENvZGUoYm9vbCBkdW1wc0dlbmVy
YXRlZENvZGUpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBzZXREdW1w
c0dlbmVyYXRlZENvZGUoYm9vbCk7CiAgICAgICAgIHN0YXRpYyBib29sIGR1bXBzR2VuZXJhdGVk
Q29kZSgpOwogCiAgICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yKFByb2dyYW1Ob2RlKiwgU2NvcGVD
aGFpbk5vZGUqLCBTeW1ib2xUYWJsZSosIFByb2dyYW1Db2RlQmxvY2sqKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaAkocmV2
aXNpb24gODIwMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1JlZkNvdW50ZWRMZWFr
Q291bnRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAKIG5hbWVzcGFjZSBX
VEYgewogICAgIAotICAgIHN0cnVjdCBSZWZDb3VudGVkTGVha0NvdW50ZXIgeworICAgIHN0cnVj
dCBXVEZfRVhQT1JUX1BSSVZBVEUgUmVmQ291bnRlZExlYWtDb3VudGVyIHsKICAgICAgICAgc3Rh
dGljIHZvaWQgc3VwcHJlc3NNZXNzYWdlcyhjb25zdCBjaGFyKik7CiAgICAgICAgIHN0YXRpYyB2
b2lkIGNhbmNlbE1lc3NhZ2VTdXBwcmVzc2lvbihjb25zdCBjaGFyKik7CiAgICAgICAgIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9OdWxsUHRyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9OdWxsUHRyLmgJKHJldmlzaW9uIDgyMDEwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9OdWxsUHRyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDEw
ICs0MiwxMCBAQAogI2Vsc2UKIAogbmFtZXNwYWNlIHN0ZCB7Ci0gICAgY2xhc3MgbnVsbHB0cl90
IHsgfTsKK2NsYXNzIFdURl9FWFBPUlRfUFJJVkFURSBudWxscHRyX3QgeyB9OwogfQogCi1leHRl
cm4gc3RkOjpudWxscHRyX3QgbnVsbHB0cjsKK2V4dGVybiBXVEZfRVhQT1JUX1BSSVZBVEUgc3Rk
OjpudWxscHRyX3QgbnVsbHB0cjsKIAogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvVGhyZWFkaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi9UaHJlYWRpbmcuaAkocmV2aXNpb24gODIwMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL1RocmVhZGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC04NCwyNyArODQsMjcgQEAKIC8v
IFRoaXMgZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQuIEl0IGlz
IHNhZmUgdG8gY2FsbCBpdCByZXBlYXRlZGx5LgogLy8gRGFyd2luIGlzIGFuIGV4Y2VwdGlvbiB0
byB0aGlzIHJ1bGU6IGl0IGlzIE9LIHRvIGNhbGwgaXQgZnJvbSBhbnkgdGhyZWFkLCB0aGUgb25s
eSAKIC8vIHJlcXVpcmVtZW50IGlzIHRoYXQgdGhlIGNhbGxzIGFyZSBub3QgcmVlbnRyYW50Lgot
dm9pZCBpbml0aWFsaXplVGhyZWFkaW5nKCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBpbml0
aWFsaXplVGhyZWFkaW5nKCk7CiAKIC8vIFJldHVybnMgMCBpZiB0aHJlYWQgY3JlYXRpb24gZmFp
bGVkLgogLy8gVGhlIHRocmVhZCBuYW1lIG11c3QgYmUgYSBsaXRlcmFsIHNpbmNlIG9uIHNvbWUg
cGxhdGZvcm1zIGl0J3MgcGFzc2VkIGluIHRvIHRoZSB0aHJlYWQuCi1UaHJlYWRJZGVudGlmaWVy
IGNyZWF0ZVRocmVhZChUaHJlYWRGdW5jdGlvbiwgdm9pZCosIGNvbnN0IGNoYXIqIHRocmVhZE5h
bWUpOworV1RGX0VYUE9SVF9QUklWQVRFIFRocmVhZElkZW50aWZpZXIgY3JlYXRlVGhyZWFkKFRo
cmVhZEZ1bmN0aW9uLCB2b2lkKiwgY29uc3QgY2hhciogdGhyZWFkTmFtZSk7CiAKIC8vIEludGVy
bmFsIHBsYXRmb3JtLXNwZWNpZmljIGNyZWF0ZVRocmVhZCBpbXBsZW1lbnRhdGlvbi4KLVRocmVh
ZElkZW50aWZpZXIgY3JlYXRlVGhyZWFkSW50ZXJuYWwoVGhyZWFkRnVuY3Rpb24sIHZvaWQqLCBj
b25zdCBjaGFyKiB0aHJlYWROYW1lKTsKK1dURl9FWFBPUlRfUFJJVkFURSBUaHJlYWRJZGVudGlm
aWVyIGNyZWF0ZVRocmVhZEludGVybmFsKFRocmVhZEZ1bmN0aW9uLCB2b2lkKiwgY29uc3QgY2hh
ciogdGhyZWFkTmFtZSk7CiAKIC8vIENhbGxlZCBpbiB0aGUgdGhyZWFkIGR1cmluZyBpbml0aWFs
aXphdGlvbi4KIC8vIEhlbHBmdWwgZm9yIHBsYXRmb3JtcyB3aGVyZSB0aGUgdGhyZWFkIG5hbWUg
bXVzdCBiZSBzZXQgZnJvbSB3aXRoaW4gdGhlIHRocmVhZC4KIHZvaWQgaW5pdGlhbGl6ZUN1cnJl
bnRUaHJlYWRJbnRlcm5hbChjb25zdCBjaGFyKiB0aHJlYWROYW1lKTsKIAotVGhyZWFkSWRlbnRp
ZmllciBjdXJyZW50VGhyZWFkKCk7Ci1pbnQgd2FpdEZvclRocmVhZENvbXBsZXRpb24oVGhyZWFk
SWRlbnRpZmllciwgdm9pZCoqKTsKLXZvaWQgZGV0YWNoVGhyZWFkKFRocmVhZElkZW50aWZpZXIp
OworV1RGX0VYUE9SVF9QUklWQVRFIFRocmVhZElkZW50aWZpZXIgY3VycmVudFRocmVhZCgpOwor
V1RGX0VYUE9SVF9QUklWQVRFIGludCB3YWl0Rm9yVGhyZWFkQ29tcGxldGlvbihUaHJlYWRJZGVu
dGlmaWVyLCB2b2lkKiopOworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZGV0YWNoVGhyZWFkKFRo
cmVhZElkZW50aWZpZXIpOwogCi12b2lkIHlpZWxkKCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9p
ZCB5aWVsZCgpOwogCi12b2lkIGxvY2tBdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleCgp
Owotdm9pZCB1bmxvY2tBdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleCgpOworV1RGX0VY
UE9SVF9QUklWQVRFIHZvaWQgbG9ja0F0b21pY2FsbHlJbml0aWFsaXplZFN0YXRpY011dGV4KCk7
CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCB1bmxvY2tBdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0
aWNNdXRleCgpOwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi9NYWluVGhyZWFkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3d0Zi9NYWluVGhyZWFkLmgJKHJldmlzaW9uIDgyMDEwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi9NYWluVGhyZWFkLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDE1ICszOCwxNSBA
QAogdHlwZWRlZiB2b2lkIE1haW5UaHJlYWRGdW5jdGlvbih2b2lkKik7CiAKIC8vIE11c3QgYmUg
Y2FsbGVkIGZyb20gdGhlIG1haW4gdGhyZWFkLgotdm9pZCBpbml0aWFsaXplTWFpblRocmVhZCgp
OworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgaW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKIAotdm9p
ZCBjYWxsT25NYWluVGhyZWFkKE1haW5UaHJlYWRGdW5jdGlvbiosIHZvaWQqIGNvbnRleHQpOwor
V1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgY2FsbE9uTWFpblRocmVhZChNYWluVGhyZWFkRnVuY3Rp
b24qLCB2b2lkKiBjb250ZXh0KTsKIHZvaWQgY2FsbE9uTWFpblRocmVhZEFuZFdhaXQoTWFpblRo
cmVhZEZ1bmN0aW9uKiwgdm9pZCogY29udGV4dCk7CiB2b2lkIGNhbmNlbENhbGxPbk1haW5UaHJl
YWQoTWFpblRocmVhZEZ1bmN0aW9uKiwgdm9pZCogY29udGV4dCk7CiAKLXZvaWQgc2V0TWFpblRo
cmVhZENhbGxiYWNrc1BhdXNlZChib29sIHBhdXNlZCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBzZXRNYWluVGhyZWFkQ2FsbGJhY2tzUGF1c2VkKGJvb2wpOwogCi1ib29sIGlzTWFpblRocmVh
ZCgpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNNYWluVGhyZWFkKCk7CiAKIC8vIE5PVEU6
IHRoZXNlIGZ1bmN0aW9ucyBhcmUgaW50ZXJuYWwgdG8gdGhlIGNhbGxPbk1haW5UaHJlYWQgaW1w
bGVtZW50YXRpb24uCiB2b2lkIGluaXRpYWxpemVNYWluVGhyZWFkUGxhdGZvcm0oKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvT1NBbGxvY2F0b3IuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL09TQWxsb2NhdG9yLmgJKHJldmlzaW9uIDgyMDEwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9PU0FsbG9jYXRvci5oCSh3b3JraW5nIGNvcHkp
CkBAIC00Niw3ICs0Niw3IEBACiAgICAgLy8gcmVsZWFzZURlY29tbWl0dGVkIHNob3VsZCBiZSBj
YWxsZWQgb24gYSByZWdpb24gb2YgVk0gYWxsb2NhdGVkIGJ5IGEgc2luZ2xlIHJlc2VydmF0aW9u
LAogICAgIC8vIHRoZSBtZW1vcnkgbXVzdCBhbGwgY3VycmVudGx5IGJlIGluIGEgZGVjb21taXR0
ZWQgc3RhdGUuCiAgICAgc3RhdGljIHZvaWQqIHJlc2VydmVVbmNvbW1pdHRlZChzaXplX3QsIFVz
YWdlID0gVW5rbm93blVzYWdlLCBib29sIHdyaXRhYmxlID0gdHJ1ZSwgYm9vbCBleGVjdXRhYmxl
ID0gZmFsc2UpOwotICAgIHN0YXRpYyB2b2lkIHJlbGVhc2VEZWNvbW1pdHRlZCh2b2lkKiwgc2l6
ZV90KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgcmVsZWFzZURlY29tbWl0
dGVkKHZvaWQqLCBzaXplX3QpOwogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgc3ltbWV0cmlj
OyB0aGV5IGNvbW1pdCBvciBkZWNvbW1pdCBhIHJlZ2lvbiBvZiBWTSAodW5jb21taXR0ZWQgVk0g
c2hvdWxkCiAgICAgLy8gbmV2ZXIgYmUgYWNjZXNzZWQsIHNpbmNlIHRoZSBPUyBtYXkgbm90IGhh
dmUgYXR0YWNoZWQgcGh5c2ljYWwgbWVtb3J5IGZvciB0aGVzZSByZWdpb25zKS4KQEAgLTU3LDcg
KzU3LDcgQEAKICAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSBzeW1tZXRyaWM7IHJlc2VydmVBbmRD
b21taXQgYWxsb2NhdGVzIFZNIGluIGFuIGNvbW1pdHRlZCBzdGF0ZSwKICAgICAvLyBkZWNvbW1p
dEFuZFJlbGVhc2Ugc2hvdWxkIGJlIGNhbGxlZCBvbiBhIHJlZ2lvbiBvZiBWTSBhbGxvY2F0ZWQg
YnkgYSBzaW5nbGUgcmVzZXJ2YXRpb24sCiAgICAgLy8gdGhlIG1lbW9yeSBtdXN0IGFsbCBjdXJy
ZW50bHkgYmUgaW4gYSBjb21taXR0ZWQgc3RhdGUuCi0gICAgc3RhdGljIHZvaWQqIHJlc2VydmVB
bmRDb21taXQoc2l6ZV90LCBVc2FnZSA9IFVua25vd25Vc2FnZSwgYm9vbCB3cml0YWJsZSA9IHRy
dWUsIGJvb2wgZXhlY3V0YWJsZSA9IGZhbHNlKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIHZvaWQqIHJlc2VydmVBbmRDb21taXQoc2l6ZV90LCBVc2FnZSA9IFVua25vd25Vc2FnZSwg
Ym9vbCB3cml0YWJsZSA9IHRydWUsIGJvb2wgZXhlY3V0YWJsZSA9IGZhbHNlKTsKICAgICBzdGF0
aWMgdm9pZCBkZWNvbW1pdEFuZFJlbGVhc2Uodm9pZCogYmFzZSwgc2l6ZV90IHNpemUpOwogCiAg
ICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgYWtpbiB0byByZXNlcnZlQW5kQ29tbWl0L2RlY29tbWl0
QW5kUmVsZWFzZSwgYWJvdmUgLSBob3dldmVyIHJhdGhlciB0aGFuCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL0Zhc3RNYWxsb2MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL0Zhc3RNYWxsb2MuaAkocmV2aXNpb24gODIwMTApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL0Zhc3RNYWxsb2MuaAkod29ya2luZyBjb3B5KQpAQCAtMjksMTIgKzI5
LDEyIEBACiBuYW1lc3BhY2UgV1RGIHsKIAogICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyBjYWxsIENS
QVNIKCkgaWYgYW4gYWxsb2NhdGlvbiBmYWlscy4KLSAgICB2b2lkKiBmYXN0TWFsbG9jKHNpemVf
dCk7Ci0gICAgdm9pZCogZmFzdFplcm9lZE1hbGxvYyhzaXplX3QpOwotICAgIHZvaWQqIGZhc3RD
YWxsb2Moc2l6ZV90IG51bUVsZW1lbnRzLCBzaXplX3QgZWxlbWVudFNpemUpOwotICAgIHZvaWQq
IGZhc3RSZWFsbG9jKHZvaWQqLCBzaXplX3QpOwotICAgIGNoYXIqIGZhc3RTdHJEdXAoY29uc3Qg
Y2hhciopOwotICAgIHNpemVfdCBmYXN0TWFsbG9jU2l6ZShjb25zdCB2b2lkKik7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIHZvaWQqIGZhc3RNYWxsb2Moc2l6ZV90KTsKKyAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgdm9pZCogZmFzdFplcm9lZE1hbGxvYyhzaXplX3QpOworICAgIFdURl9FWFBPUlRf
UFJJVkFURSB2b2lkKiBmYXN0Q2FsbG9jKHNpemVfdCBudW1FbGVtZW50cywgc2l6ZV90IGVsZW1l
bnRTaXplKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCogZmFzdFJlYWxsb2Modm9pZCos
IHNpemVfdCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGNoYXIqIGZhc3RTdHJEdXAoY29uc3Qg
Y2hhciopOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgZmFzdE1hbGxvY1NpemUoY29u
c3Qgdm9pZCopOwogCiAgICAgc3RydWN0IFRyeU1hbGxvY1JldHVyblZhbHVlIHsKICAgICAgICAg
VHJ5TWFsbG9jUmV0dXJuVmFsdWUodm9pZCogZGF0YSkKQEAgLTY4LDEyICs2OCwxMiBAQAogICAg
ICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiAgICAgfQogCi0gICAgVHJ5TWFsbG9jUmV0dXJuVmFs
dWUgdHJ5RmFzdE1hbGxvYyhzaXplX3Qgbik7Ci0gICAgVHJ5TWFsbG9jUmV0dXJuVmFsdWUgdHJ5
RmFzdFplcm9lZE1hbGxvYyhzaXplX3Qgbik7Ci0gICAgVHJ5TWFsbG9jUmV0dXJuVmFsdWUgdHJ5
RmFzdENhbGxvYyhzaXplX3Qgbl9lbGVtZW50cywgc2l6ZV90IGVsZW1lbnRfc2l6ZSk7Ci0gICAg
VHJ5TWFsbG9jUmV0dXJuVmFsdWUgdHJ5RmFzdFJlYWxsb2Modm9pZCogcCwgc2l6ZV90IG4pOwor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBUcnlNYWxsb2NSZXR1cm5WYWx1ZSB0cnlGYXN0TWFsbG9j
KHNpemVfdCBuKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgVHJ5TWFsbG9jUmV0dXJuVmFsdWUg
dHJ5RmFzdFplcm9lZE1hbGxvYyhzaXplX3Qgbik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFRy
eU1hbGxvY1JldHVyblZhbHVlIHRyeUZhc3RDYWxsb2Moc2l6ZV90IG5fZWxlbWVudHMsIHNpemVf
dCBlbGVtZW50X3NpemUpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBUcnlNYWxsb2NSZXR1cm5W
YWx1ZSB0cnlGYXN0UmVhbGxvYyh2b2lkKiBwLCBzaXplX3Qgbik7CiAKLSAgICB2b2lkIGZhc3RG
cmVlKHZvaWQqKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBmYXN0RnJlZSh2b2lkKik7
CiAKICNpZm5kZWYgTkRFQlVHICAgIAogICAgIHZvaWQgZmFzdE1hbGxvY0ZvcmJpZCgpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRTcGVjaWZpYy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkU3BlY2lmaWMuaAkocmV2aXNpb24g
ODIwMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZFNwZWNpZmljLmgJKHdv
cmtpbmcgY29weSkKQEAgLTIxNiw4ICsyMTYsOCBAQAogLy8gMikgV2UgZG8gbm90IG5lZWQgdG8g
aG9sZCBtYW55IGluc3RhbmNlcyBvZiBUaHJlYWRTcGVjaWZpYzw+IGRhdGEuIFRoaXMgZml4ZWQg
bnVtYmVyIHNob3VsZCBiZSBmYXIgZW5vdWdoLgogY29uc3QgaW50IGtNYXhUbHNLZXlTaXplID0g
MjU2OwogCi1sb25nJiB0bHNLZXlDb3VudCgpOwotRFdPUkQqIHRsc0tleXMoKTsKK1dURl9FWFBP
UlRfUFJJVkFURSBsb25nJiB0bHNLZXlDb3VudCgpOworV1RGX0VYUE9SVF9QUklWQVRFIERXT1JE
KiB0bHNLZXlzKCk7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBpbmxpbmUgVGhyZWFkU3BlY2lm
aWM8VD46OlRocmVhZFNwZWNpZmljKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
V1RGVGhyZWFkRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
V1RGVGhyZWFkRGF0YS5oCShyZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvV1RGVGhyZWFkRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC04OSw4ICs4OSw4IEBACiBj
bGFzcyBXVEZUaHJlYWREYXRhIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXVEZUaHJlYWRE
YXRhKTsKIHB1YmxpYzoKLSAgICBXVEZUaHJlYWREYXRhKCk7Ci0gICAgfldURlRocmVhZERhdGEo
KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgV1RGVGhyZWFkRGF0YSgpOworICAgIFdURl9FWFBP
UlRfUFJJVkFURSB+V1RGVGhyZWFkRGF0YSgpOwogCiAgICAgQXRvbWljU3RyaW5nVGFibGUqIGF0
b21pY1N0cmluZ1RhYmxlKCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L0RhdGVNYXRoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9EYXRl
TWF0aC5oCShyZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvRGF0
ZU1hdGguaAkod29ya2luZyBjb3B5KQpAQCAtNTksNyArNTksNyBAQAogCiAvLyBOb3QgcmVhbGx5
IG1hdGggcmVsYXRlZCwgYnV0IHRoaXMgaXMgY3VycmVudGx5IHRoZSBvbmx5IHNoYXJlZCBwbGFj
ZSB0byBwdXQgdGhlc2UuCiBkb3VibGUgcGFyc2VFUzVEYXRlRnJvbU51bGxUZXJtaW5hdGVkQ2hh
cmFjdGVycyhjb25zdCBjaGFyKiBkYXRlU3RyaW5nKTsKLWRvdWJsZSBwYXJzZURhdGVGcm9tTnVs
bFRlcm1pbmF0ZWRDaGFyYWN0ZXJzKGNvbnN0IGNoYXIqIGRhdGVTdHJpbmcpOworV1RGX0VYUE9S
VF9QUklWQVRFIGRvdWJsZSBwYXJzZURhdGVGcm9tTnVsbFRlcm1pbmF0ZWRDaGFyYWN0ZXJzKGNv
bnN0IGNoYXIqIGRhdGVTdHJpbmcpOwogZG91YmxlIHRpbWVDbGlwKGRvdWJsZSk7CiAKIGlubGlu
ZSBkb3VibGUganNDdXJyZW50VGltZSgpCkBAIC04MiwxNSArODIsMTUgQEAKIGNvbnN0IGRvdWJs
ZSBtc1Blck1vbnRoID0gMjU5MjAwMDAwMC4wOwogCiAvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2Yg
ZGF5cyBmcm9tIDE5NzAtMDEtMDEgdG8gdGhlIHNwZWNpZmllZCBkYXRlLgotZG91YmxlIGRhdGVU
b0RheXNGcm9tMTk3MChpbnQgeWVhciwgaW50IG1vbnRoLCBpbnQgZGF5KTsKLWludCBtc1RvWWVh
cihkb3VibGUgbXMpOwotaW50IGRheUluWWVhcihkb3VibGUgbXMsIGludCB5ZWFyKTsKLWludCBt
b250aEZyb21EYXlJblllYXIoaW50IGRheUluWWVhciwgYm9vbCBsZWFwWWVhcik7Ci1pbnQgZGF5
SW5Nb250aEZyb21EYXlJblllYXIoaW50IGRheUluWWVhciwgYm9vbCBsZWFwWWVhcik7CitXVEZf
RVhQT1JUX1BSSVZBVEUgZG91YmxlIGRhdGVUb0RheXNGcm9tMTk3MChpbnQgeWVhciwgaW50IG1v
bnRoLCBpbnQgZGF5KTsKK1dURl9FWFBPUlRfUFJJVkFURSBpbnQgbXNUb1llYXIoZG91YmxlIG1z
KTsKK1dURl9FWFBPUlRfUFJJVkFURSBpbnQgZGF5SW5ZZWFyKGRvdWJsZSBtcywgaW50IHllYXIp
OworV1RGX0VYUE9SVF9QUklWQVRFIGludCBtb250aEZyb21EYXlJblllYXIoaW50IGRheUluWWVh
ciwgYm9vbCBsZWFwWWVhcik7CitXVEZfRVhQT1JUX1BSSVZBVEUgaW50IGRheUluTW9udGhGcm9t
RGF5SW5ZZWFyKGludCBkYXlJblllYXIsIGJvb2wgbGVhcFllYXIpOwogCiAvLyBSZXR1cm5zIG9m
ZnNldCBtaWxsaXNlY29uZHMgZm9yIFVUQyBhbmQgRFNULgotaW50MzJfdCBjYWxjdWxhdGVVVENP
ZmZzZXQoKTsKLWRvdWJsZSBjYWxjdWxhdGVEU1RPZmZzZXQoZG91YmxlIG1zLCBkb3VibGUgdXRj
T2Zmc2V0KTsKK1dURl9FWFBPUlRfUFJJVkFURSBpbnQzMl90IGNhbGN1bGF0ZVVUQ09mZnNldCgp
OworV1RGX0VYUE9SVF9QUklWQVRFIGRvdWJsZSBjYWxjdWxhdGVEU1RPZmZzZXQoZG91YmxlIG1z
LCBkb3VibGUgdXRjT2Zmc2V0KTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvdW5pY29kZS9Db2xsYXRvci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdW5pY29kZS9Db2xsYXRvci5oCShyZXZpc2lvbiA4MjAx
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdW5pY29kZS9Db2xsYXRvci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NSwxMyArNDUsMTMgQEAKICAgICBwdWJsaWM6CiAgICAgICAgIGVudW0g
UmVzdWx0IHsgRXF1YWwgPSAwLCBHcmVhdGVyID0gMSwgTGVzcyA9IC0xIH07CiAKLSAgICAgICAg
Q29sbGF0b3IoY29uc3QgY2hhciogbG9jYWxlKTsgLy8gUGFyc2luZyBpcyBsZW5pZW50OyBlLmcu
IGxhbmd1YWdlIGlkZW50aWZpZXJzIChzdWNoIGFzICJlbi1VUyIpIGFyZSBhY2NlcHRlZCwgdG9v
LgotICAgICAgICB+Q29sbGF0b3IoKTsKLSAgICAgICAgdm9pZCBzZXRPcmRlckxvd2VyRmlyc3Qo
Ym9vbCk7CisgICAgICAgIFdURl9FWFBPUlRfUFJJVkFURSBDb2xsYXRvcihjb25zdCBjaGFyKiBs
b2NhbGUpOyAvLyBQYXJzaW5nIGlzIGxlbmllbnQ7IGUuZy4gbGFuZ3VhZ2UgaWRlbnRpZmllcnMg
KHN1Y2ggYXMgImVuLVVTIikgYXJlIGFjY2VwdGVkLCB0b28uCisgICAgICAgIFdURl9FWFBPUlRf
UFJJVkFURSB+Q29sbGF0b3IoKTsKKyAgICAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0
T3JkZXJMb3dlckZpcnN0KGJvb2wpOwogCiAgICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPENvbGxh
dG9yPiB1c2VyRGVmYXVsdCgpOwogCi0gICAgICAgIFJlc3VsdCBjb2xsYXRlKGNvbnN0IDo6VUNo
YXIqLCBzaXplX3QsIGNvbnN0IDo6VUNoYXIqLCBzaXplX3QpIGNvbnN0OworICAgICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgUmVzdWx0IGNvbGxhdGUoY29uc3QgOjpVQ2hhciosIHNpemVfdCwgY29u
c3QgOjpVQ2hhciosIHNpemVfdCkgY29uc3Q7CiAKICAgICBwcml2YXRlOgogI2lmIFVTRShJQ1Vf
VU5JQ09ERSkgJiYgIVVDT05GSUdfTk9fQ09MTEFUSU9OCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL3VuaWNvZGUvVVRGOC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvdW5pY29kZS9VVEY4LmgJKHJldmlzaW9uIDgyMDEwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi91bmljb2RlL1VURjguaAkod29ya2luZyBjb3B5KQpAQCAtNjIsMTEgKzYy
LDExIEBACiAgICAgLy8gdG8gdGhlIHJlcGxhY2VtZW50IGNoYXJhY3Rlcjsgb3RoZXJ3aXNlICh3
aGVuIHRoZSBmbGFnIGlzIHNldCB0byBzdHJpY3QpCiAgICAgLy8gdGhleSBjb25zdGl0dXRlIGFu
IGVycm9yLgogCi0gICAgQ29udmVyc2lvblJlc3VsdCBjb252ZXJ0VVRGOFRvVVRGMTYoCisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIENvbnZlcnNpb25SZXN1bHQgY29udmVydFVURjhUb1VURjE2KAog
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiogc291cmNlU3RhcnQsIGNvbnN0IGNoYXIq
IHNvdXJjZUVuZCwgCiAgICAgICAgICAgICAgICAgICAgIFVDaGFyKiogdGFyZ2V0U3RhcnQsIFVD
aGFyKiB0YXJnZXRFbmQsIGJvb2wgc3RyaWN0ID0gdHJ1ZSk7CiAKLSAgICBDb252ZXJzaW9uUmVz
dWx0IGNvbnZlcnRVVEYxNlRvVVRGOCgKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgQ29udmVyc2lv
blJlc3VsdCBjb252ZXJ0VVRGMTZUb1VURjgoCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFVD
aGFyKiogc291cmNlU3RhcnQsIGNvbnN0IFVDaGFyKiBzb3VyY2VFbmQsIAogICAgICAgICAgICAg
ICAgICAgICBjaGFyKiogdGFyZ2V0U3RhcnQsIGNoYXIqIHRhcmdldEVuZCwgYm9vbCBzdHJpY3Qg
PSB0cnVlKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9DdXJyZW50VGltZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQ3VycmVudFRpbWUuaAko
cmV2aXNpb24gODIwMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0N1cnJlbnRUaW1l
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAKIC8vIFJldHVybnMgdGhlIGN1cnJl
bnQgVVRDIHRpbWUgaW4gc2Vjb25kcywgY291bnRlZCBmcm9tIEphbnVhcnkgMSwgMTk3MC4KIC8v
IFByZWNpc2lvbiB2YXJpZXMgZGVwZW5kaW5nIG9uIHBsYXRmb3JtIGJ1dCBpcyB1c3VhbGx5IGFz
IGdvb2Qgb3IgYmV0dGVyCiAvLyB0aGFuIGEgbWlsbGlzZWNvbmQuCi1kb3VibGUgY3VycmVudFRp
bWUoKTsKK1dURl9FWFBPUlRfUFJJVkFURSBkb3VibGUgY3VycmVudFRpbWUoKTsKIAogLy8gU2Ft
ZSB0aGluZywgaW4gbWlsbGlzZWNvbmRzLgogaW5saW5lIGRvdWJsZSBjdXJyZW50VGltZU1TKCkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvRGVjaW1hbE51bWJlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvRGVjaW1hbE51bWJlci5oCShyZXZpc2lv
biA4MjAxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvRGVjaW1hbE51bWJlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC04MSwxMCArODEsMTAgQEAKICAgICAgICAgQVNTRVJUKG1fc2lnbmlm
aWNhbmRbMF0gIT0gJzAnIHx8ICFtX2V4cG9uZW50KTsKICAgICB9CiAKLSAgICB1bnNpZ25lZCBi
dWZmZXJMZW5ndGhGb3JTdHJpbmdEZWNpbWFsKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHVuc2lnbmVkIGJ1ZmZlckxlbmd0aEZvclN0cmluZ0RlY2ltYWwoKSBjb25zdDsKICAgICB1
bnNpZ25lZCBidWZmZXJMZW5ndGhGb3JTdHJpbmdFeHBvbmVudGlhbCgpIGNvbnN0OwogCi0gICAg
dW5zaWduZWQgdG9TdHJpbmdEZWNpbWFsKFVDaGFyKiBidWZmZXIsIHVuc2lnbmVkIGJ1ZmZlckxl
bmd0aCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHVuc2lnbmVkIHRvU3RyaW5nRGVj
aW1hbChVQ2hhciogYnVmZmVyLCB1bnNpZ25lZCBidWZmZXJMZW5ndGgpIGNvbnN0OwogICAgIHVu
c2lnbmVkIHRvU3RyaW5nRXhwb25lbnRpYWwoVUNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgYnVmZmVy
TGVuZ3RoKSBjb25zdDsKIAogICAgIGJvb2wgc2lnbigpIGNvbnN0IHsgcmV0dXJuIG1fc2lnbjsg
fQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9NRDUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL01ENS5oCShyZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvTUQ1LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcg
QEAKIAogbmFtZXNwYWNlIFdURiB7CiAKLWNsYXNzIE1ENSB7CitjbGFzcyBXVEZfRVhQT1JUX1BS
SVZBVEUgTUQ1IHsKIHB1YmxpYzoKICAgICBNRDUoKTsKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi9kdG9hLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi9kdG9hLmgJKHJldmlzaW9uIDgyMDEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9k
dG9hLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDE4ICszMCwxOCBAQAogCiAvLyBzMDA6IGlucHV0
IHN0cmluZy4gTXVzdCBub3QgYmUgMCBhbmQgbXVzdCBiZSB0ZXJtaW5hdGVkIGJ5IDAuCiAvLyBz
ZTogKnNlIHdpbGwgaGF2ZSB0aGUgbGFzdCBjb25zdW1lZCBjaGFyYWN0ZXIgcG9zaXRpb24gKyAx
LgotZG91YmxlIHN0cnRvZChjb25zdCBjaGFyKiBzMDAsIGNoYXIqKiBzZSk7CitXVEZfRVhQT1JU
X1BSSVZBVEUgZG91YmxlIHN0cnRvZChjb25zdCBjaGFyKiBzMDAsIGNoYXIqKiBzZSk7CiAKIHR5
cGVkZWYgY2hhciBEdG9hQnVmZmVyWzgwXTsKIAotdm9pZCBkdG9hKER0b2FCdWZmZXIgcmVzdWx0
LCBkb3VibGUgZGQsIGJvb2wmIHNpZ24sIGludCYgZXhwb25lbnQsIHVuc2lnbmVkJiBwcmVjaXNp
b24pOworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZHRvYShEdG9hQnVmZmVyIHJlc3VsdCwgZG91
YmxlIGRkLCBib29sJiBzaWduLCBpbnQmIGV4cG9uZW50LCB1bnNpZ25lZCYgcHJlY2lzaW9uKTsK
IHZvaWQgZHRvYVJvdW5kU0YoRHRvYUJ1ZmZlciByZXN1bHQsIGRvdWJsZSBkZCwgaW50IG5kaWdp
dHMsIGJvb2wmIHNpZ24sIGludCYgZXhwb25lbnQsIHVuc2lnbmVkJiBwcmVjaXNpb24pOwogdm9p
ZCBkdG9hUm91bmREUChEdG9hQnVmZmVyIHJlc3VsdCwgZG91YmxlIGRkLCBpbnQgbmRpZ2l0cywg
Ym9vbCYgc2lnbiwgaW50JiBleHBvbmVudCwgdW5zaWduZWQmIHByZWNpc2lvbik7CiAKIC8vIFNp
emUgPSA4MCBmb3Igc2l6ZW9mKER0b2FCdWZmZXIpICsgc29tZSBzaWduIGJpdHMsIGRlY2ltYWwg
cG9pbnQsICdlJywgZXhwb25lbnQgZGlnaXRzLgogY29uc3QgdW5zaWduZWQgTnVtYmVyVG9TdHJp
bmdCdWZmZXJMZW5ndGggPSA5NjsKIHR5cGVkZWYgVUNoYXIgTnVtYmVyVG9TdHJpbmdCdWZmZXJb
TnVtYmVyVG9TdHJpbmdCdWZmZXJMZW5ndGhdOwotdW5zaWduZWQgbnVtYmVyVG9TdHJpbmcoZG91
YmxlLCBOdW1iZXJUb1N0cmluZ0J1ZmZlcik7CitXVEZfRVhQT1JUX1BSSVZBVEUgdW5zaWduZWQg
bnVtYmVyVG9TdHJpbmcoZG91YmxlLCBOdW1iZXJUb1N0cmluZ0J1ZmZlcik7CiAKIH0gLy8gbmFt
ZXNwYWNlIFdURgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL051bGxQdHIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvTnVsbFB0ci5jcHAJKHJl
dmlzaW9uIDgyMDEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9OdWxsUHRyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQAogCiAqLwogCisjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiTnVsbFB0ci5oIgogCiAjaW5jbHVkZSAiUGxhdGZvcm0uaCIKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0NyeXB0b2dyYXBoaWNh
bGx5UmFuZG9tTnVtYmVyLmgJKHJldmlzaW9uIDgyMDEwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3d0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMiw3ICszMiw3IEBACiAKICNpZiBVU0UoT1NfUkFORE9NTkVTUykKIHVpbnQzMl90IGNyeXB0
b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyKCk7Ci12b2lkIGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9t
VmFsdWVzKHZvaWQqIGJ1ZmZlciwgc2l6ZV90IGxlbmd0aCk7CitXVEZfRVhQT1JUX1BSSVZBVEUg
dm9pZCBjcnlwdG9ncmFwaGljYWxseVJhbmRvbVZhbHVlcyh2b2lkKiBidWZmZXIsIHNpemVfdCBs
ZW5ndGgpOwogI2VuZGlmCiAKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhy
ZWFkaW5nUHJpbWl0aXZlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oCShyZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDAsMTIgKzEwMCwxMiBAQAogY2xhc3MgTXV0ZXggewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KE11dGV4KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgTXV0ZXgoKTsK
LSAgICB+TXV0ZXgoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgTXV0ZXgoKTsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgfk11dGV4KCk7CiAKLSAgICB2b2lkIGxvY2soKTsKLSAgICBib29sIHRy
eUxvY2soKTsKLSAgICB2b2lkIHVubG9jaygpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lk
IGxvY2soKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCB0cnlMb2NrKCk7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIHZvaWQgdW5sb2NrKCk7CiAKIHB1YmxpYzoKICAgICBQbGF0Zm9ybU11
dGV4JiBpbXBsKCkgeyByZXR1cm4gbV9tdXRleDsgfQpAQCAtMTM2LDE1ICsxMzYsMTUgQEAKIGNs
YXNzIFRocmVhZENvbmRpdGlvbiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVGhyZWFkQ29u
ZGl0aW9uKTsKIHB1YmxpYzoKLSAgICBUaHJlYWRDb25kaXRpb24oKTsKLSAgICB+VGhyZWFkQ29u
ZGl0aW9uKCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFRocmVhZENvbmRpdGlvbigpOworICAg
IFdURl9FWFBPUlRfUFJJVkFURSB+VGhyZWFkQ29uZGl0aW9uKCk7CiAgICAgCi0gICAgdm9pZCB3
YWl0KE11dGV4JiBtdXRleCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgd2FpdChNdXRl
eCYpOwogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgY29uZGl0aW9uIHdhcyBzaWduYWxlZCBi
ZWZvcmUgYWJzb2x1dGVUaW1lLCBmYWxzZSBpZiB0aGUgYWJzb2x1dGVUaW1lIHdhcyByZWFjaGVk
IG9yIGlzIGluIHRoZSBwYXN0LgogICAgIC8vIFRoZSBhYnNvbHV0ZVRpbWUgaXMgaW4gc2Vjb25k
cywgc3RhcnRpbmcgb24gSmFudWFyeSAxLCAxOTcwLiBUaGUgdGltZSBpcyBhc3N1bWVkIHRvIHVz
ZSB0aGUgc2FtZSB0aW1lIHpvbmUgYXMgV1RGOjpjdXJyZW50VGltZSgpLgotICAgIGJvb2wgdGlt
ZWRXYWl0KE11dGV4JiwgZG91YmxlIGFic29sdXRlVGltZSk7Ci0gICAgdm9pZCBzaWduYWwoKTsK
LSAgICB2b2lkIGJyb2FkY2FzdCgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIHRpbWVk
V2FpdChNdXRleCYsIGRvdWJsZSBhYnNvbHV0ZVRpbWUpOworICAgIFdURl9FWFBPUlRfUFJJVkFU
RSB2b2lkIHNpZ25hbCgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGJyb2FkY2FzdCgp
OwogICAgIAogcHJpdmF0ZToKICAgICBQbGF0Zm9ybUNvbmRpdGlvbiBtX2NvbmRpdGlvbjsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUmFuZG9tTnVtYmVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9SYW5kb21OdW1iZXIuaAkocmV2aXNpb24gODIw
MTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1JhbmRvbU51bWJlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAKICAgICAvLyBSZXR1cm5zIGEgcHNldWRvLXJhbmRv
bSBudW1iZXIgaW4gdGhlIHJhbmdlIFswLCAxKSwgYXR0ZW1wdHMgdG8gYmUKICAgICAvLyBjcnlw
dG9ncmFwaGljYWxseSBzZWN1cmUgaWYgcG9zc2libGUgb24gdGhlIHRhcmdldCBwbGF0Zm9ybQot
ICAgIGRvdWJsZSByYW5kb21OdW1iZXIoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgZG91Ymxl
IHJhbmRvbU51bWJlcigpOwogCiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
dGV4dC9BdG9taWNTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL3RleHQvQXRvbWljU3RyaW5nLmgJKHJldmlzaW9uIDgyMDEwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwy
NyArMzgsMzEgQEAKIAogY2xhc3MgQXRvbWljU3RyaW5nIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
dm9pZCBpbml0KCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGluaXQoKTsK
IAotICAgIEF0b21pY1N0cmluZygpIHsgfQotICAgIEF0b21pY1N0cmluZyhjb25zdCBjaGFyKiBz
KSA6IG1fc3RyaW5nKGFkZChzKSkgeyB9CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIEF0b21pY1N0
cmluZygpIHsgfQorICAgIC8vIGNvcHkgY29uc3RydWN0b3IgbmVlZHMgdG8gYmUgZXhwbGljaXRs
eSBkZWZpbmVkIHNvIHdlIGNhbiBzcGVjaWZ5IHByb3BlciBkbGwgbGlua2FnZQorICAgIFdURl9F
WFBPUlRfUFJJVkFURSBBdG9taWNTdHJpbmcoY29uc3QgQXRvbWljU3RyaW5nJiBzKSA6IG1fc3Ry
aW5nKHMubV9zdHJpbmcpIHsgfQorICAgIFdURl9FWFBPUlRfUFJJVkFURSBBdG9taWNTdHJpbmco
Y29uc3QgY2hhciogcykgOiBtX3N0cmluZyhhZGQocykpIHsgfQogICAgIEF0b21pY1N0cmluZyhj
b25zdCBVQ2hhciogcywgdW5zaWduZWQgbGVuZ3RoKSA6IG1fc3RyaW5nKGFkZChzLCBsZW5ndGgp
KSB7IH0KICAgICBBdG9taWNTdHJpbmcoY29uc3QgVUNoYXIqIHMsIHVuc2lnbmVkIGxlbmd0aCwg
dW5zaWduZWQgZXhpc3RpbmdIYXNoKSA6IG1fc3RyaW5nKGFkZChzLCBsZW5ndGgsIGV4aXN0aW5n
SGFzaCkpIHsgfQogICAgIEF0b21pY1N0cmluZyhjb25zdCBVQ2hhciogcykgOiBtX3N0cmluZyhh
ZGQocykpIHsgfQogICAgIEFUT01JQ1NUUklOR19DT05WRVJTSU9OIEF0b21pY1N0cmluZyhTdHJp
bmdJbXBsKiBpbXApIDogbV9zdHJpbmcoYWRkKGltcCkpIHsgfQogICAgIEF0b21pY1N0cmluZyhB
dG9taWNTdHJpbmdJbXBsKiBpbXApIDogbV9zdHJpbmcoaW1wKSB7IH0KLSAgICBBVE9NSUNTVFJJ
TkdfQ09OVkVSU0lPTiBBdG9taWNTdHJpbmcoY29uc3QgU3RyaW5nJiBzKSA6IG1fc3RyaW5nKGFk
ZChzLmltcGwoKSkpIHsgfQorICAgIFdURl9FWFBPUlRfUFJJVkFURSBBVE9NSUNTVFJJTkdfQ09O
VkVSU0lPTiBBdG9taWNTdHJpbmcoY29uc3QgU3RyaW5nJiBzKSA6IG1fc3RyaW5nKGFkZChzLmlt
cGwoKSkpIHsgfQogCiAgICAgLy8gSGFzaCB0YWJsZSBkZWxldGVkIHZhbHVlcywgd2hpY2ggYXJl
IG9ubHkgY29uc3RydWN0ZWQgYW5kIG5ldmVyIGNvcGllZCBvciBkZXN0cm95ZWQuCi0gICAgQXRv
bWljU3RyaW5nKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkgOiBtX3N0cmluZyhXVEY6
Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkgeyB9Ci0gICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRW
YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7
IH0KKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgQXRvbWljU3RyaW5nKFdURjo6SGFzaFRhYmxlRGVs
ZXRlZFZhbHVlVHlwZSkgOiBtX3N0cmluZyhXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkgeyB9
CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBj
b25zdCB7IHJldHVybiBtX3N0cmluZy5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9CiAKLSAg
ICBzdGF0aWMgQXRvbWljU3RyaW5nSW1wbCogZmluZChjb25zdCBVQ2hhciogcywgdW5zaWduZWQg
bGVuZ3RoLCB1bnNpZ25lZCBleGlzdGluZ0hhc2gpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB+
QXRvbWljU3RyaW5nKCkgeyB9CiAKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEF0b21p
Y1N0cmluZ0ltcGwqIGZpbmQoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVk
IGV4aXN0aW5nSGFzaCk7CisKICAgICBvcGVyYXRvciBjb25zdCBTdHJpbmcmKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdHJpbmc7IH0KICAgICBjb25zdCBTdHJpbmcmIHN0cmluZygpIGNvbnN0IHsgcmV0
dXJuIG1fc3RyaW5nOyB9OwogCi0gICAgQXRvbWljU3RyaW5nSW1wbCogaW1wbCgpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PEF0b21pY1N0cmluZ0ltcGwgKj4obV9zdHJpbmcuaW1wbCgpKTsg
fQorICAgIFdURl9FWFBPUlRfUFJJVkFURSBBdG9taWNTdHJpbmdJbXBsKiBpbXBsKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8QXRvbWljU3RyaW5nSW1wbCAqPihtX3N0cmluZy5pbXBsKCkp
OyB9CiAgICAgCiAgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMoKSBjb25zdCB7IHJldHVybiBt
X3N0cmluZy5jaGFyYWN0ZXJzKCk7IH0KICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJl
dHVybiBtX3N0cmluZy5sZW5ndGgoKTsgfQpAQCAtODIsNyArODYsNyBAQAogICAgIGJvb2wgZW5k
c1dpdGgoY29uc3QgU3RyaW5nJiBzLCBib29sIGNhc2VTZW5zaXRpdmUgPSB0cnVlKSBjb25zdAog
ICAgICAgICB7IHJldHVybiBtX3N0cmluZy5lbmRzV2l0aChzLCBjYXNlU2Vuc2l0aXZlKTsgfQog
ICAgIAotICAgIEF0b21pY1N0cmluZyBsb3dlcigpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBBdG9taWNTdHJpbmcgbG93ZXIoKSBjb25zdDsKICAgICBBdG9taWNTdHJpbmcgdXBwZXIo
KSBjb25zdCB7IHJldHVybiBBdG9taWNTdHJpbmcoaW1wbCgpLT51cHBlcigpKTsgfQogICAgIAog
ICAgIGludCB0b0ludChib29sKiBvayA9IDApIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLnRvSW50
KG9rKTsgfQpAQCAtMTEwLDE0ICsxMTQsMTQgQEAKIAogICAgIC8vIEF0b21pY1N0cmluZzo6ZnJv
bVVURjggd2lsbCByZXR1cm4gYSBudWxsIHN0cmluZyBpZgogICAgIC8vIHRoZSBpbnB1dCBkYXRh
IGNvbnRhaW5zIGludmFsaWQgVVRGLTggc2VxdWVuY2VzLgotICAgIHN0YXRpYyBBdG9taWNTdHJp
bmcgZnJvbVVURjgoY29uc3QgY2hhciosIHNpemVfdCk7Ci0gICAgc3RhdGljIEF0b21pY1N0cmlu
ZyBmcm9tVVRGOChjb25zdCBjaGFyKik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBB
dG9taWNTdHJpbmcgZnJvbVVURjgoY29uc3QgY2hhciosIHNpemVfdCk7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBBdG9taWNTdHJpbmcgZnJvbVVURjgoY29uc3QgY2hhciopOwogCiBw
cml2YXRlOgogICAgIFN0cmluZyBtX3N0cmluZzsKICAgICAKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxTdHJpbmdJbXBsPiBhZGQoY29uc3QgY2hhciopOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0
cmluZ0ltcGw+IGFkZChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgV1RGX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChjb25zdCBjaGFy
Kik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+
IGFkZChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8U3RyaW5nSW1wbD4gYWRkKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25l
ZCBleGlzdGluZ0hhc2gpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChj
b25zdCBVQ2hhciopOwogICAgIEFMV0FZU19JTkxJTkUgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBh
ZGQoU3RyaW5nSW1wbCogcikKQEAgLTEyNiwxMiArMTMwLDEyIEBACiAgICAgICAgICAgICByZXR1
cm4gcjsKICAgICAgICAgcmV0dXJuIGFkZFNsb3dDYXNlKHIpOwogICAgIH0KLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGRTbG93Q2FzZShTdHJpbmdJbXBsKik7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZFNsb3dDYXNl
KFN0cmluZ0ltcGwqKTsKIH07CiAKIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgQXRvbWlj
U3RyaW5nJiBhLCBjb25zdCBBdG9taWNTdHJpbmcmIGIpIHsgcmV0dXJuIGEuaW1wbCgpID09IGIu
aW1wbCgpOyB9Ci1ib29sIG9wZXJhdG9yPT0oY29uc3QgQXRvbWljU3RyaW5nJiBhLCBjb25zdCBj
aGFyKiBiKTsKLWJvb2wgb3BlcmF0b3I9PShjb25zdCBBdG9taWNTdHJpbmcmIGEsIGNvbnN0IFZl
Y3RvcjxVQ2hhcj4mIGIpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBBdG9taWNTdHJpbmcmLCBjb25zdCBjaGFyKik7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IFZlY3RvcjxVQ2hhcj4mKTsKIGlu
bGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgQXRvbWljU3RyaW5nJiBhLCBjb25zdCBTdHJpbmcm
IGIpIHsgcmV0dXJuIGVxdWFsKGEuaW1wbCgpLCBiLmltcGwoKSk7IH0KIGlubGluZSBib29sIG9w
ZXJhdG9yPT0oY29uc3QgY2hhciogYSwgY29uc3QgQXRvbWljU3RyaW5nJiBiKSB7IHJldHVybiBi
ID09IGE7IH0KIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgU3RyaW5nJiBhLCBjb25zdCBB
dG9taWNTdHJpbmcmIGIpIHsgcmV0dXJuIGVxdWFsKGEuaW1wbCgpLCBiLmltcGwoKSk7IH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9DU3RyaW5nLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L0NTdHJpbmcuaAkocmV2aXNpb24gODIw
MTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvQ1N0cmluZy5oCSh3b3JraW5n
IGNvcHkpCkBAIC01MiwxMCArNTIsMTAgQEAKIGNsYXNzIENTdHJpbmcgewogcHVibGljOgogICAg
IENTdHJpbmcoKSB7IH0KLSAgICBDU3RyaW5nKGNvbnN0IGNoYXIqKTsKLSAgICBDU3RyaW5nKGNv
bnN0IGNoYXIqLCBzaXplX3QgbGVuZ3RoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgQ1N0cmlu
Zyhjb25zdCBjaGFyKik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIENTdHJpbmcoY29uc3QgY2hh
ciosIHNpemVfdCBsZW5ndGgpOwogICAgIENTdHJpbmcoQ1N0cmluZ0J1ZmZlciogYnVmZmVyKSA6
IG1fYnVmZmVyKGJ1ZmZlcikgeyB9Ci0gICAgc3RhdGljIENTdHJpbmcgbmV3VW5pbml0aWFsaXpl
ZChzaXplX3QgbGVuZ3RoLCBjaGFyKiYgY2hhcmFjdGVyQnVmZmVyKTsKKyAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIENTdHJpbmcgbmV3VW5pbml0aWFsaXplZChzaXplX3QgbGVuZ3RoLCBj
aGFyKiYgY2hhcmFjdGVyQnVmZmVyKTsKIAogICAgIGNvbnN0IGNoYXIqIGRhdGEoKSBjb25zdAog
ICAgIHsKQEAgLTc3LDcgKzc3LDcgQEAKICAgICBSZWZQdHI8Q1N0cmluZ0J1ZmZlcj4gbV9idWZm
ZXI7CiB9OwogCi1ib29sIG9wZXJhdG9yPT0oY29uc3QgQ1N0cmluZyYgYSwgY29uc3QgQ1N0cmlu
ZyYgYik7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTdHJpbmcm
IGEsIGNvbnN0IENTdHJpbmcmIGIpOwogaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBDU3Ry
aW5nJiBhLCBjb25zdCBDU3RyaW5nJiBiKSB7IHJldHVybiAhKGEgPT0gYik7IH0KIAogfSAvLyBu
YW1lc3BhY2UgV1RGCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5n
QnVpbGRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9T
dHJpbmdCdWlsZGVyLmgJKHJldmlzaW9uIDgyMDEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsOCArMzgsOCBA
QAogICAgIHsKICAgICB9CiAKLSAgICB2b2lkIGFwcGVuZChjb25zdCBVQ2hhciosIHVuc2lnbmVk
KTsKLSAgICB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiwgdW5zaWduZWQpOworICAgIFdURl9FWFBP
UlRfUFJJVkFURSB2b2lkIGFwcGVuZChjb25zdCBVQ2hhciosIHVuc2lnbmVkKTsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmQoY29uc3QgY2hhciosIHVuc2lnbmVkKTsKIAogICAg
IHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIHsKQEAgLTk5LDExICs5OSwx
MSBAQAogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIWxlbmd0aCgpOyB9CiAK
LSAgICB2b2lkIHJlc2VydmVDYXBhY2l0eSh1bnNpZ25lZCBuZXdDYXBhY2l0eSk7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIHZvaWQgcmVzZXJ2ZUNhcGFjaXR5KHVuc2lnbmVkIG5ld0NhcGFjaXR5
KTsKIAotICAgIHZvaWQgcmVzaXplKHVuc2lnbmVkIG5ld1NpemUpOworICAgIFdURl9FWFBPUlRf
UFJJVkFURSB2b2lkIHJlc2l6ZSh1bnNpZ25lZCBuZXdTaXplKTsKIAotICAgIHZvaWQgc2hyaW5r
VG9GaXQoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzaHJpbmtUb0ZpdCgpOwogCiAg
ICAgVUNoYXIgb3BlcmF0b3JbXSh1bnNpZ25lZCBpKSBjb25zdAogICAgIHsKQEAgLTEyNCw3ICsx
MjQsNyBAQAogcHJpdmF0ZToKICAgICB2b2lkIGFsbG9jYXRlQnVmZmVyKGNvbnN0IFVDaGFyKiBj
dXJyZW50Q2hhcmFjdGVycywgdW5zaWduZWQgcmVxdWlyZWRMZW5ndGgpOwogICAgIFVDaGFyKiBh
cHBlbmRVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgdm9pZCByZWlmeVN0cmlu
ZygpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHJlaWZ5U3RyaW5nKCk7CiAKICAgICB1
bnNpZ25lZCBtX2xlbmd0aDsKICAgICBTdHJpbmcgbV9zdHJpbmc7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL3RleHQvV1RGU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5oCShyZXZpc2lvbiA4MjAxMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9XVEZTdHJpbmcuaAkod29ya2luZyBjb3B5KQpA
QCAtNjcsOCArNjcsOCBAQAogCiBib29sIGNoYXJhY3RlcnNBcmVBbGxBU0NJSShjb25zdCBVQ2hh
ciosIHNpemVfdCk7CiBib29sIGNoYXJhY3RlcnNBcmVBbGxMYXRpbjEoY29uc3QgVUNoYXIqLCBz
aXplX3QpOwotaW50IGNoYXJhY3RlcnNUb0ludFN0cmljdChjb25zdCBVQ2hhciosIHNpemVfdCwg
Ym9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKTsKLXVuc2lnbmVkIGNoYXJhY3RlcnNUb1VJbnRT
dHJpY3QoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCk7
CitXVEZfRVhQT1JUX1BSSVZBVEUgaW50IGNoYXJhY3RlcnNUb0ludFN0cmljdChjb25zdCBVQ2hh
ciosIHNpemVfdCwgYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKTsKK1dURl9FWFBPUlRfUFJJ
VkFURSB1bnNpZ25lZCBjaGFyYWN0ZXJzVG9VSW50U3RyaWN0KGNvbnN0IFVDaGFyKiwgc2l6ZV90
LCBib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApOwogaW50NjRfdCBjaGFyYWN0ZXJzVG9JbnQ2
NFN0cmljdChjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEw
KTsKIHVpbnQ2NF90IGNoYXJhY3RlcnNUb1VJbnQ2NFN0cmljdChjb25zdCBVQ2hhciosIHNpemVf
dCwgYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKTsKIGludHB0cl90IGNoYXJhY3RlcnNUb0lu
dFB0clN0cmljdChjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9
IDEwKTsKQEAgLTc5LDcgKzc5LDcgQEAKIHVpbnQ2NF90IGNoYXJhY3RlcnNUb1VJbnQ2NChjb25z
dCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSAwKTsgLy8gaWdub3JlcyB0cmFpbGluZyBnYXJi
YWdlCiBpbnRwdHJfdCBjaGFyYWN0ZXJzVG9JbnRQdHIoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJv
b2wqIG9rID0gMCk7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQogCi1kb3VibGUgY2hhcmFj
dGVyc1RvRG91YmxlKGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDAsIGJvb2wqIGRp
ZFJlYWROdW1iZXIgPSAwKTsKK1dURl9FWFBPUlRfUFJJVkFURSBkb3VibGUgY2hhcmFjdGVyc1Rv
RG91YmxlKGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDAsIGJvb2wqIGRpZFJlYWRO
dW1iZXIgPSAwKTsKIGZsb2F0IGNoYXJhY3RlcnNUb0Zsb2F0KGNvbnN0IFVDaGFyKiwgc2l6ZV90
LCBib29sKiBvayA9IDAsIGJvb2wqIGRpZFJlYWROdW1iZXIgPSAwKTsKIAogdGVtcGxhdGU8Ym9v
bCBpc1NwZWNpYWxDaGFyYWN0ZXIoVUNoYXIpPiBib29sIGlzQWxsU3BlY2lhbENoYXJhY3RlcnMo
Y29uc3QgVUNoYXIqLCBzaXplX3QpOwpAQCAtODcsMTAgKzg3LDEwIEBACiBjbGFzcyBTdHJpbmcg
ewogcHVibGljOgogICAgIC8vIENvbnN0cnVjdCBhIG51bGwgc3RyaW5nLCBkaXN0aW5ndWlzaGFi
bGUgZnJvbSBhbiBlbXB0eSBzdHJpbmcuCi0gICAgU3RyaW5nKCkgeyB9CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIFN0cmluZygpIHsgfQogCiAgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdpdGgg
VVRGLTE2IGRhdGEuCi0gICAgU3RyaW5nKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25l
ZCBsZW5ndGgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcoY29uc3QgVUNoYXIqIGNo
YXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCk7CiAKICAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcg
YnkgY29weWluZyB0aGUgY29udGVudHMgb2YgYSB2ZWN0b3IuICBUbyBhdm9pZAogICAgIC8vIGNv
cHlpbmcsIGNvbnNpZGVyIHVzaW5nIFN0cmluZzo6YWRvcHQgaW5zdGVhZC4KQEAgLTk4LDE4ICs5
OCwxOCBAQAogICAgIGV4cGxpY2l0IFN0cmluZyhjb25zdCBWZWN0b3I8VUNoYXIsIGlubGluZUNh
cGFjaXR5PiYpOwogCiAgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdpdGggVVRGLTE2IGRhdGEs
IGZyb20gYSBudWxsLXRlcm1pbmF0ZWQgc291cmNlLgotICAgIFN0cmluZyhjb25zdCBVQ2hhciop
OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcoY29uc3QgVUNoYXIqKTsKIAogICAgIC8v
IENvbnN0cnVjdCBhIHN0cmluZyB3aXRoIGxhdGluMSBkYXRhLgotICAgIFN0cmluZyhjb25zdCBj
aGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBTdHJpbmcoY29uc3QgY2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKIAogICAg
IC8vIENvbnN0cnVjdCBhIHN0cmluZyB3aXRoIGxhdGluMSBkYXRhLCBmcm9tIGEgbnVsbC10ZXJt
aW5hdGVkIHNvdXJjZS4KLSAgICBTdHJpbmcoY29uc3QgY2hhciogY2hhcmFjdGVycyk7CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyhjb25zdCBjaGFyKiBjaGFyYWN0ZXJzKTsKIAogICAg
IC8vIENvbnN0cnVjdCBhIHN0cmluZyByZWZlcmVuY2luZyBhbiBleGlzdGluZyBTdHJpbmdJbXBs
LgotICAgIFN0cmluZyhTdHJpbmdJbXBsKiBpbXBsKSA6IG1faW1wbChpbXBsKSB7IH0KLSAgICBT
dHJpbmcoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBpbXBsKSA6IG1faW1wbChpbXBsKSB7IH0KLSAg
ICBTdHJpbmcoUmVmUHRyPFN0cmluZ0ltcGw+IGltcGwpIDogbV9pbXBsKGltcGwpIHsgfQorICAg
IFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcoU3RyaW5nSW1wbCogaW1wbCkgOiBtX2ltcGwoaW1w
bCkgeyB9CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyhQYXNzUmVmUHRyPFN0cmluZ0lt
cGw+IGltcGwpIDogbV9pbXBsKGltcGwpIHsgfQorICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJp
bmcoUmVmUHRyPFN0cmluZ0ltcGw+IGltcGwpIDogbV9pbXBsKGltcGwpIHsgfQogCiAgICAgLy8g
SW5saW5lIHRoZSBkZXN0cnVjdG9yLgogICAgIEFMV0FZU19JTkxJTkUgflN0cmluZygpIHsgfQpA
QCAtMTM5LDkgKzEzOSw5IEBACiAgICAgICAgIHJldHVybiBtX2ltcGwtPmNoYXJhY3RlcnMoKTsK
ICAgICB9CiAKLSAgICBDU3RyaW5nIGFzY2lpKCkgY29uc3Q7Ci0gICAgQ1N0cmluZyBsYXRpbjEo
KSBjb25zdDsKLSAgICBDU3RyaW5nIHV0ZjgoYm9vbCBzdHJpY3QgPSBmYWxzZSkgY29uc3Q7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIENTdHJpbmcgYXNjaWkoKSBjb25zdDsKKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgQ1N0cmluZyBsYXRpbjEoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgQ1N0cmluZyB1dGY4KGJvb2wgc3RyaWN0ID0gZmFsc2UpIGNvbnN0OwogCiAgICAgVUNoYXIg
b3BlcmF0b3JbXSh1bnNpZ25lZCBpbmRleCkgY29uc3QKICAgICB7CkBAIC0xNTAsMTUgKzE1MCwx
NSBAQAogICAgICAgICByZXR1cm4gbV9pbXBsLT5jaGFyYWN0ZXJzKClbaW5kZXhdOwogICAgIH0K
IAotICAgIHN0YXRpYyBTdHJpbmcgbnVtYmVyKHNob3J0KTsKLSAgICBzdGF0aWMgU3RyaW5nIG51
bWJlcih1bnNpZ25lZCBzaG9ydCk7Ci0gICAgc3RhdGljIFN0cmluZyBudW1iZXIoaW50KTsKLSAg
ICBzdGF0aWMgU3RyaW5nIG51bWJlcih1bnNpZ25lZCk7Ci0gICAgc3RhdGljIFN0cmluZyBudW1i
ZXIobG9uZyk7Ci0gICAgc3RhdGljIFN0cmluZyBudW1iZXIodW5zaWduZWQgbG9uZyk7Ci0gICAg
c3RhdGljIFN0cmluZyBudW1iZXIobG9uZyBsb25nKTsKLSAgICBzdGF0aWMgU3RyaW5nIG51bWJl
cih1bnNpZ25lZCBsb25nIGxvbmcpOwotICAgIHN0YXRpYyBTdHJpbmcgbnVtYmVyKGRvdWJsZSk7
CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJpbmcgbnVtYmVyKHNob3J0KTsKKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cmluZyBudW1iZXIodW5zaWduZWQgc2hvcnQp
OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RyaW5nIG51bWJlcihpbnQpOworICAg
IFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RyaW5nIG51bWJlcih1bnNpZ25lZCk7CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJpbmcgbnVtYmVyKGxvbmcpOworICAgIFdURl9F
WFBPUlRfUFJJVkFURSBzdGF0aWMgU3RyaW5nIG51bWJlcih1bnNpZ25lZCBsb25nKTsKKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cmluZyBudW1iZXIobG9uZyBsb25nKTsKKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cmluZyBudW1iZXIodW5zaWduZWQgbG9uZyBsb25n
KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cmluZyBudW1iZXIoZG91YmxlKTsK
IAogICAgIC8vIEZpbmQgYSBzaW5nbGUgY2hhcmFjdGVyIG9yIHN0cmluZywgYWxzbyB3aXRoIG1h
dGNoIGZ1bmN0aW9uICYgbGF0aW4xIGZvcm1zLgogICAgIHNpemVfdCBmaW5kKFVDaGFyIGMsIHVu
c2lnbmVkIHN0YXJ0ID0gMCkgY29uc3QKQEAgLTE3Nyw5ICsxNzcsOSBAQAogICAgICAgICB7IHJl
dHVybiBtX2ltcGwgPyBtX2ltcGwtPnJldmVyc2VGaW5kKHN0ci5pbXBsKCksIHN0YXJ0KSA6IG5v
dEZvdW5kOyB9CiAKICAgICAvLyBDYXNlIGluc2Vuc2l0aXZlIHN0cmluZyBtYXRjaGluZy4KLSAg
ICBzaXplX3QgZmluZElnbm9yaW5nQ2FzZShjb25zdCBjaGFyKiBzdHIsIHVuc2lnbmVkIHN0YXJ0
ID0gMCkgY29uc3QKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZpbmRJZ25vcmluZ0Nh
c2UoY29uc3QgY2hhciogc3RyLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0CiAgICAgICAgIHsg
cmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZmluZElnbm9yaW5nQ2FzZShzdHIsIHN0YXJ0KSA6IG5v
dEZvdW5kOyB9Ci0gICAgc2l6ZV90IGZpbmRJZ25vcmluZ0Nhc2UoY29uc3QgU3RyaW5nJiBzdHIs
IHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29uc3QKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90
IGZpbmRJZ25vcmluZ0Nhc2UoY29uc3QgU3RyaW5nJiBzdHIsIHVuc2lnbmVkIHN0YXJ0ID0gMCkg
Y29uc3QKICAgICAgICAgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kSWdub3JpbmdDYXNl
KHN0ci5pbXBsKCksIHN0YXJ0KSA6IG5vdEZvdW5kOyB9CiAgICAgc2l6ZV90IHJldmVyc2VGaW5k
SWdub3JpbmdDYXNlKGNvbnN0IFN0cmluZyYgc3RyLCB1bnNpZ25lZCBzdGFydCA9IFVJTlRfTUFY
KSBjb25zdAogICAgICAgICB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPnJldmVyc2VGaW5kSWdu
b3JpbmdDYXNlKHN0ci5pbXBsKCksIHN0YXJ0KSA6IG5vdEZvdW5kOyB9CkBAIC0xOTIsOSArMTky
LDkgQEAKICAgICBzaXplX3QgcmV2ZXJzZUZpbmQoY29uc3QgU3RyaW5nJiBzdHIsIHVuc2lnbmVk
IHN0YXJ0LCBib29sIGNhc2VTZW5zaXRpdmUpIGNvbnN0CiAgICAgICAgIHsgcmV0dXJuIGNhc2VT
ZW5zaXRpdmUgPyByZXZlcnNlRmluZChzdHIsIHN0YXJ0KSA6IHJldmVyc2VGaW5kSWdub3JpbmdD
YXNlKHN0ciwgc3RhcnQpOyB9CiAKLSAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVyc1dpdGhOdWxs
VGVybWluYXRpb24oKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgY29uc3QgVUNoYXIqIGNoYXJh
Y3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCk7CiAgICAgCi0gICAgVUNoYXIzMiBjaGFyYWN0ZXJT
dGFydGluZ0F0KHVuc2lnbmVkKSBjb25zdDsgLy8gRGl0dG8uCisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIFVDaGFyMzIgY2hhcmFjdGVyU3RhcnRpbmdBdCh1bnNpZ25lZCkgY29uc3Q7IC8vIERpdHRv
LgogICAgIAogICAgIGJvb2wgY29udGFpbnMoVUNoYXIgYykgY29uc3QgeyByZXR1cm4gZmluZChj
KSAhPSBub3RGb3VuZDsgfQogICAgIGJvb2wgY29udGFpbnMoY29uc3QgY2hhciogc3RyLCBib29s
IGNhc2VTZW5zaXRpdmUgPSB0cnVlKSBjb25zdCB7IHJldHVybiBmaW5kKHN0ciwgMCwgY2FzZVNl
bnNpdGl2ZSkgIT0gbm90Rm91bmQ7IH0KQEAgLTIwNSwxMSArMjA1LDExIEBACiAgICAgYm9vbCBl
bmRzV2l0aChjb25zdCBTdHJpbmcmIHMsIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IHRydWUpIGNvbnN0
CiAgICAgICAgIHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZW5kc1dpdGgocy5pbXBsKCksIGNh
c2VTZW5zaXRpdmUpIDogcy5pc0VtcHR5KCk7IH0KIAotICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0
cmluZyYpOwotICAgIHZvaWQgYXBwZW5kKGNoYXIpOwotICAgIHZvaWQgYXBwZW5kKFVDaGFyKTsK
LSAgICB2b2lkIGFwcGVuZChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgdm9p
ZCBpbnNlcnQoY29uc3QgU3RyaW5nJiwgdW5zaWduZWQgcG9zKTsKKyAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5nJik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IHZvaWQgYXBwZW5kKGNoYXIpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGFwcGVuZChV
Q2hhcik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYXBwZW5kKGNvbnN0IFVDaGFyKiwg
dW5zaWduZWQgbGVuZ3RoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBpbnNlcnQoY29u
c3QgU3RyaW5nJiwgdW5zaWduZWQgcG9zKTsKICAgICB2b2lkIGluc2VydChjb25zdCBVQ2hhcios
IHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgcG9zKTsKIAogICAgIFN0cmluZyYgcmVwbGFjZShV
Q2hhciBhLCBVQ2hhciBiKSB7IGlmIChtX2ltcGwpIG1faW1wbCA9IG1faW1wbC0+cmVwbGFjZShh
LCBiKTsgcmV0dXJuICp0aGlzOyB9CkBAIC0yMjEsMzEgKzIyMSwzMSBAQAogICAgIHZvaWQgbWFr
ZVVwcGVyKCkgeyBpZiAobV9pbXBsKSBtX2ltcGwgPSBtX2ltcGwtPnVwcGVyKCk7IH0KICAgICB2
b2lkIG1ha2VTZWN1cmUoVUNoYXIgYUNoYXIpIHsgaWYgKG1faW1wbCkgbV9pbXBsID0gbV9pbXBs
LT5zZWN1cmUoYUNoYXIpOyB9CiAKLSAgICB2b2lkIHRydW5jYXRlKHVuc2lnbmVkIGxlbik7Ci0g
ICAgdm9pZCByZW1vdmUodW5zaWduZWQgcG9zLCBpbnQgbGVuID0gMSk7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHZvaWQgdHJ1bmNhdGUodW5zaWduZWQgbGVuKTsKKyAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgdm9pZCByZW1vdmUodW5zaWduZWQgcG9zLCBpbnQgbGVuID0gMSk7CiAKLSAgICBTdHJp
bmcgc3Vic3RyaW5nKHVuc2lnbmVkIHBvcywgdW5zaWduZWQgbGVuID0gVUlOVF9NQVgpIGNvbnN0
OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgc3Vic3RyaW5nKHVuc2lnbmVkIHBvcywg
dW5zaWduZWQgbGVuID0gVUlOVF9NQVgpIGNvbnN0OwogICAgIFN0cmluZyBzdWJzdHJpbmdTaGFy
aW5nSW1wbCh1bnNpZ25lZCBwb3MsIHVuc2lnbmVkIGxlbiA9IFVJTlRfTUFYKSBjb25zdDsKICAg
ICBTdHJpbmcgbGVmdCh1bnNpZ25lZCBsZW4pIGNvbnN0IHsgcmV0dXJuIHN1YnN0cmluZygwLCBs
ZW4pOyB9CiAgICAgU3RyaW5nIHJpZ2h0KHVuc2lnbmVkIGxlbikgY29uc3QgeyByZXR1cm4gc3Vi
c3RyaW5nKGxlbmd0aCgpIC0gbGVuLCBsZW4pOyB9CiAKICAgICAvLyBSZXR1cm5zIGEgbG93ZXJj
YXNlL3VwcGVyY2FzZSB2ZXJzaW9uIG9mIHRoZSBzdHJpbmcKLSAgICBTdHJpbmcgbG93ZXIoKSBj
b25zdDsKLSAgICBTdHJpbmcgdXBwZXIoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
U3RyaW5nIGxvd2VyKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyB1cHBl
cigpIGNvbnN0OwogCi0gICAgU3RyaW5nIHN0cmlwV2hpdGVTcGFjZSgpIGNvbnN0OwotICAgIFN0
cmluZyBzaW1wbGlmeVdoaXRlU3BhY2UoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
U3RyaW5nIHN0cmlwV2hpdGVTcGFjZSgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBT
dHJpbmcgc2ltcGxpZnlXaGl0ZVNwYWNlKCkgY29uc3Q7CiAKLSAgICBTdHJpbmcgcmVtb3ZlQ2hh
cmFjdGVycyhDaGFyYWN0ZXJNYXRjaEZ1bmN0aW9uUHRyKSBjb25zdDsKKyAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgU3RyaW5nIHJlbW92ZUNoYXJhY3RlcnMoQ2hhcmFjdGVyTWF0Y2hGdW5jdGlvblB0
cikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Ym9vbCBpc1NwZWNpYWxDaGFyYWN0ZXIoVUNoYXIpPiBi
b29sIGlzQWxsU3BlY2lhbENoYXJhY3RlcnMoKSBjb25zdDsKIAogICAgIC8vIFJldHVybiB0aGUg
c3RyaW5nIHdpdGggY2FzZSBmb2xkZWQgZm9yIGNhc2UgaW5zZW5zaXRpdmUgY29tcGFyaXNvbi4K
LSAgICBTdHJpbmcgZm9sZENhc2UoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3Ry
aW5nIGZvbGRDYXNlKCkgY29uc3Q7CiAKICNpZiAhUExBVEZPUk0oUVQpCi0gICAgc3RhdGljIFN0
cmluZyBmb3JtYXQoY29uc3QgY2hhciAqLCAuLi4pIFdURl9BVFRSSUJVVEVfUFJJTlRGKDEsIDIp
OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RyaW5nIGZvcm1hdChjb25zdCBjaGFy
ICosIC4uLikgV1RGX0FUVFJJQlVURV9QUklOVEYoMSwgMik7CiAjZWxzZQotICAgIHN0YXRpYyBT
dHJpbmcgZm9ybWF0KGNvbnN0IGNoYXIgKiwgLi4uKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIFN0cmluZyBmb3JtYXQoY29uc3QgY2hhciAqLCAuLi4pOwogI2VuZGlmCiAKICAgICAv
LyBSZXR1cm5zIGFuIHVuaW5pdGlhbGl6ZWQgc3RyaW5nLiBUaGUgY2hhcmFjdGVycyBuZWVkcyB0
byBiZSB3cml0dGVuCkBAIC0yNTMsMzQgKzI1MywzNCBAQAogICAgIC8vIEZhaWx1cmUgdG8gZG8g
dGhpcyB3aWxsIGhhdmUgdW5wcmVkaWN0YWJsZSByZXN1bHRzLgogICAgIHN0YXRpYyBTdHJpbmcg
Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgsIFVDaGFyKiYgZGF0YSkgeyByZXR1
cm4gU3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgsIGRhdGEpOyB9CiAKLSAg
ICB2b2lkIHNwbGl0KGNvbnN0IFN0cmluZyYgc2VwYXJhdG9yLCBWZWN0b3I8U3RyaW5nPiYgcmVz
dWx0KSBjb25zdDsKLSAgICB2b2lkIHNwbGl0KGNvbnN0IFN0cmluZyYgc2VwYXJhdG9yLCBib29s
IGFsbG93RW1wdHlFbnRyaWVzLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KSBjb25zdDsKLSAgICB2
b2lkIHNwbGl0KFVDaGFyIHNlcGFyYXRvciwgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkgY29uc3Q7
Ci0gICAgdm9pZCBzcGxpdChVQ2hhciBzZXBhcmF0b3IsIGJvb2wgYWxsb3dFbXB0eUVudHJpZXMs
IFZlY3RvcjxTdHJpbmc+JiByZXN1bHQpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2
b2lkIHNwbGl0KGNvbnN0IFN0cmluZyYgc2VwYXJhdG9yLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0
KSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzcGxpdChjb25zdCBTdHJpbmcm
IHNlcGFyYXRvciwgYm9vbCBhbGxvd0VtcHR5RW50cmllcywgVmVjdG9yPFN0cmluZz4mIHJlc3Vs
dCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc3BsaXQoVUNoYXIgc2VwYXJh
dG9yLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgdm9pZCBzcGxpdChVQ2hhciBzZXBhcmF0b3IsIGJvb2wgYWxsb3dFbXB0eUVudHJpZXMsIFZl
Y3RvcjxTdHJpbmc+JiByZXN1bHQpIGNvbnN0OwogCi0gICAgaW50IHRvSW50U3RyaWN0KGJvb2wq
IG9rID0gMCwgaW50IGJhc2UgPSAxMCkgY29uc3Q7Ci0gICAgdW5zaWduZWQgdG9VSW50U3RyaWN0
KGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCkgY29uc3Q7Ci0gICAgaW50NjRfdCB0b0ludDY0
U3RyaWN0KGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCkgY29uc3Q7Ci0gICAgdWludDY0X3Qg
dG9VSW50NjRTdHJpY3QoYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKSBjb25zdDsKLSAgICBp
bnRwdHJfdCB0b0ludFB0clN0cmljdChib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApIGNvbnN0
OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBpbnQgdG9JbnRTdHJpY3QoYm9vbCogb2sgPSAwLCBp
bnQgYmFzZSA9IDEwKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdW5zaWduZWQgdG9V
SW50U3RyaWN0KGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCkgY29uc3Q7CisgICAgV1RGX0VY
UE9SVF9QUklWQVRFIGludDY0X3QgdG9JbnQ2NFN0cmljdChib29sKiBvayA9IDAsIGludCBiYXNl
ID0gMTApIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSB1aW50NjRfdCB0b1VJbnQ2NFN0
cmljdChib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApIGNvbnN0OworICAgIFdURl9FWFBPUlRf
UFJJVkFURSBpbnRwdHJfdCB0b0ludFB0clN0cmljdChib29sKiBvayA9IDAsIGludCBiYXNlID0g
MTApIGNvbnN0OwogCi0gICAgaW50IHRvSW50KGJvb2wqIG9rID0gMCkgY29uc3Q7Ci0gICAgdW5z
aWduZWQgdG9VSW50KGJvb2wqIG9rID0gMCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IGludCB0b0ludChib29sKiBvayA9IDApIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSB1
bnNpZ25lZCB0b1VJbnQoYm9vbCogb2sgPSAwKSBjb25zdDsKICAgICBpbnQ2NF90IHRvSW50NjQo
Ym9vbCogb2sgPSAwKSBjb25zdDsKLSAgICB1aW50NjRfdCB0b1VJbnQ2NChib29sKiBvayA9IDAp
IGNvbnN0OwotICAgIGludHB0cl90IHRvSW50UHRyKGJvb2wqIG9rID0gMCkgY29uc3Q7Ci0gICAg
ZG91YmxlIHRvRG91YmxlKGJvb2wqIG9rID0gMCwgYm9vbCogZGlkUmVhZE51bWJlciA9IDApIGNv
bnN0OwotICAgIGZsb2F0IHRvRmxvYXQoYm9vbCogb2sgPSAwLCBib29sKiBkaWRSZWFkTnVtYmVy
ID0gMCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHVpbnQ2NF90IHRvVUludDY0KGJv
b2wqIG9rID0gMCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGludHB0cl90IHRvSW50
UHRyKGJvb2wqIG9rID0gMCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGRvdWJsZSB0
b0RvdWJsZShib29sKiBvayA9IDAsIGJvb2wqIGRpZFJlYWROdW1iZXIgPSAwKSBjb25zdDsKKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgZmxvYXQgdG9GbG9hdChib29sKiBvayA9IDAsIGJvb2wqIGRp
ZFJlYWROdW1iZXIgPSAwKSBjb25zdDsKIAogICAgIGJvb2wgcGVyY2VudGFnZShpbnQmIHBlcmNl
bnRhZ2UpIGNvbnN0OwogCiAgICAgLy8gUmV0dXJucyBhIFN0cmluZ0ltcGwgc3VpdGFibGUgZm9y
IHVzZSBvbiBhbm90aGVyIHRocmVhZC4KLSAgICBTdHJpbmcgY3Jvc3NUaHJlYWRTdHJpbmcoKSBj
b25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGNyb3NzVGhyZWFkU3RyaW5nKCkg
Y29uc3Q7CiAgICAgLy8gTWFrZXMgYSBkZWVwIGNvcHkuIEhlbHBmdWwgb25seSBpZiB5b3UgbmVl
ZCB0byB1c2UgYSBTdHJpbmcgb24gYW5vdGhlciB0aHJlYWQKICAgICAvLyAodXNlIGNyb3NzVGhy
ZWFkU3RyaW5nIGlmIHRoZSBtZXRob2QgY2FsbCBkb2Vzbid0IG5lZWQgdG8gYmUgdGhyZWFkc2Fm
ZSkuCiAgICAgLy8gU2luY2UgdGhlIHVuZGVybHlpbmcgU3RyaW5nSW1wbCBvYmplY3RzIGFyZSBp
bW11dGFibGUsIHRoZXJlJ3Mgbm8gb3RoZXIgcmVhc29uCiAgICAgLy8gdG8gZXZlciBwcmVmZXIg
Y29weSgpIG92ZXIgcGxhaW4gb2xkIGFzc2lnbm1lbnQuCi0gICAgU3RyaW5nIHRocmVhZHNhZmVD
b3B5KCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyB0aHJlYWRzYWZlQ29w
eSgpIGNvbnN0OwogCiAgICAgLy8gUHJldmVudCBTdHJpbmdzIGZyb20gYmVpbmcgaW1wbGljaXRs
eSBjb252ZXJ0YWJsZSB0byBib29sIGFzIGl0IHdpbGwgYmUgYW1iaWd1b3VzIG9uIGFueSBwbGF0
Zm9ybSB0aGF0CiAgICAgLy8gYWxsb3dzIGltcGxpY2l0IGNvbnZlcnNpb24gdG8gYW5vdGhlciBw
b2ludGVyIHR5cGUgKGUuZy4sIE1hYyBhbGxvd3MgaW1wbGljaXQgY29udmVyc2lvbiB0byBOU1N0
cmluZyopLgpAQCAtMzA5LDggKzMwOSw4IEBACiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKFdYKQot
ICAgIFN0cmluZyhjb25zdCB3eFN0cmluZyYpOwotICAgIG9wZXJhdG9yIHd4U3RyaW5nKCkgY29u
c3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyhjb25zdCB3eFN0cmluZyYpOworICAg
IFdURl9FWFBPUlRfUFJJVkFURSBvcGVyYXRvciB3eFN0cmluZygpIGNvbnN0OwogI2VuZGlmCiAK
ICNpZiBQTEFURk9STShIQUlLVSkKQEAgLTMyNCwxMSArMzI0LDExIEBACiAKICAgICAvLyBTdHJp
bmc6OmZyb21VVEY4IHdpbGwgcmV0dXJuIGEgbnVsbCBzdHJpbmcgaWYKICAgICAvLyB0aGUgaW5w
dXQgZGF0YSBjb250YWlucyBpbnZhbGlkIFVURi04IHNlcXVlbmNlcy4KLSAgICBzdGF0aWMgU3Ry
aW5nIGZyb21VVEY4KGNvbnN0IGNoYXIqLCBzaXplX3QpOwotICAgIHN0YXRpYyBTdHJpbmcgZnJv
bVVURjgoY29uc3QgY2hhciopOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RyaW5n
IGZyb21VVEY4KGNvbnN0IGNoYXIqLCBzaXplX3QpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBz
dGF0aWMgU3RyaW5nIGZyb21VVEY4KGNvbnN0IGNoYXIqKTsKIAogICAgIC8vIFRyaWVzIHRvIGNv
bnZlcnQgdGhlIHBhc3NlZCBpbiBzdHJpbmcgdG8gVVRGLTgsIGJ1dCB3aWxsIGZhbGwgYmFjayB0
byBMYXRpbi0xIGlmIHRoZSBzdHJpbmcgaXMgbm90IHZhbGlkIFVURi04LgotICAgIHN0YXRpYyBT
dHJpbmcgZnJvbVVURjhXaXRoTGF0aW4xRmFsbGJhY2soY29uc3QgY2hhciosIHNpemVfdCk7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJpbmcgZnJvbVVURjhXaXRoTGF0aW4xRmFs
bGJhY2soY29uc3QgY2hhciosIHNpemVfdCk7CiAgICAgCiAgICAgLy8gRGV0ZXJtaW5lcyB0aGUg
d3JpdGluZyBkaXJlY3Rpb24gdXNpbmcgdGhlIFVuaWNvZGUgQmlkaSBBbGdvcml0aG0gcnVsZXMg
UDIgYW5kIFAzLgogICAgIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIGRlZmF1bHRXcml0aW5nRGly
ZWN0aW9uKGJvb2wqIGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5ID0gMCkgY29uc3QKQEAgLTM0NSw3
ICszNDUsNyBAQAogCiAgICAgLy8gSGFzaCB0YWJsZSBkZWxldGVkIHZhbHVlcywgd2hpY2ggYXJl
IG9ubHkgY29uc3RydWN0ZWQgYW5kIG5ldmVyIGNvcGllZCBvciBkZXN0cm95ZWQuCiAgICAgU3Ry
aW5nKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkgOiBtX2ltcGwoV1RGOjpIYXNoVGFi
bGVEZWxldGVkVmFsdWUpIHsgfQotICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBj
b25zdCB7IHJldHVybiBtX2ltcGwuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQorICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyBy
ZXR1cm4gbV9pbXBsLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KIAogcHJpdmF0ZToKICAg
ICBSZWZQdHI8U3RyaW5nSW1wbD4gbV9pbXBsOwpAQCAtMzU2LDkgKzM1Niw5IEBACiBRRGF0YVN0
cmVhbSYgb3BlcmF0b3I+PihRRGF0YVN0cmVhbSYgc3RyZWFtLCBTdHJpbmcmIHN0cik7CiAjZW5k
aWYKIAotU3RyaW5nIG9wZXJhdG9yKyhjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKLVN0
cmluZyBvcGVyYXRvcisoY29uc3QgU3RyaW5nJiwgY29uc3QgY2hhciopOwotU3RyaW5nIG9wZXJh
dG9yKyhjb25zdCBjaGFyKiwgY29uc3QgU3RyaW5nJik7CitXVEZfRVhQT1JUX1BSSVZBVEUgU3Ry
aW5nIG9wZXJhdG9yKyhjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKK1dURl9FWFBPUlRf
UFJJVkFURSBTdHJpbmcgb3BlcmF0b3IrKGNvbnN0IFN0cmluZyYsIGNvbnN0IGNoYXIqKTsKK1dU
Rl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgb3BlcmF0b3IrKGNvbnN0IGNoYXIqLCBjb25zdCBTdHJp
bmcmKTsKIAogaW5saW5lIFN0cmluZyYgb3BlcmF0b3IrPShTdHJpbmcmIGEsIGNvbnN0IFN0cmlu
ZyYgYikgeyBhLmFwcGVuZChiKTsgcmV0dXJuIGE7IH0KIApAQCAtNDE5LDcgKzQxOSw3IEBACiAg
ICAgcmV0dXJuICEob3JlZCAmIDB4RkYwMCk7CiB9CiAKLWludCBjb2RlUG9pbnRDb21wYXJlKGNv
bnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOworV1RGX0VYUE9SVF9QUklWQVRFIGludCBjb2Rl
UG9pbnRDb21wYXJlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOwogCiBpbmxpbmUgc2l6
ZV90IGZpbmQoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgVUNoYXIg
bWF0Y2hDaGFyYWN0ZXIsIHVuc2lnbmVkIGluZGV4ID0gMCkKIHsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAkocmV2aXNpb24gODIwMTApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDEsMTEgKzE0MSwxMSBAQAogICAgIH0KIAogcHVibGljOgotICAgIH5TdHJpbmdJbXBs
KCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIH5TdHJpbmdJbXBsKCk7CiAKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBjcmVhdGUoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5n
dGgpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGNyZWF0ZShjb25zdCBjaGFy
KiwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBj
cmVhdGUoY29uc3QgY2hhciopOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1Jl
ZlB0cjxTdHJpbmdJbXBsPiBjcmVhdGUoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOwor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBjcmVh
dGUoY29uc3QgY2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGNyZWF0ZShjb25zdCBjaGFyKik7CiAgICAg
c3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gY3JlYXRlKGNvbnN0IFVDaGFyKiwgdW5zaWdu
ZWQgbGVuZ3RoLCBQYXNzUmVmUHRyPFNoYXJlZFVDaGFyPiBzaGFyZWRCdWZmZXIpOwogICAgIHN0
YXRpYyBBTFdBWVNfSU5MSU5FIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gY3JlYXRlKFBhc3NSZWZQ
dHI8U3RyaW5nSW1wbD4gcmVwLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKICAg
ICB7CkBAIC0xNTksNyArMTU5LDcgQEAKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdHJp
bmdJbXBsKHJlcC0+bV9kYXRhICsgb2Zmc2V0LCBsZW5ndGgsIG93bmVyUmVwKSk7CiAgICAgfQog
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gY3JlYXRlVW5pbml0aWFsaXplZCh1
bnNpZ25lZCBsZW5ndGgsIFVDaGFyKiYgZGF0YSk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQg
bGVuZ3RoLCBVQ2hhciomIGRhdGEpOwogICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIFBhc3NSZWZQ
dHI8U3RyaW5nSW1wbD4gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgsIFVD
aGFyKiYgb3V0cHV0KQogICAgIHsKICAgICAgICAgaWYgKCFsZW5ndGgpIHsKQEAgLTE5NSwxMCAr
MTk1LDEwIEBACiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGVtcHR5KCk7CiAgICAgfQotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkb3B0KFN0cmluZ0J1ZmZlciYpOworICAg
IFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZG9wdChT
dHJpbmdCdWZmZXImKTsKIAogICAgIFNoYXJlZFVDaGFyKiBzaGFyZWRCdWZmZXIoKTsKLSAgICBj
b25zdCBVQ2hhciogY2hhcmFjdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQorICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBjb25zdCBVQ2hhciogY2hhcmFjdGVycygpIGNvbnN0IHsgcmV0dXJu
IG1fZGF0YTsgfQogCiAgICAgc2l6ZV90IGNvc3QoKQogICAgIHsKQEAgLTI0MSw3ICsyNDEsNyBA
QAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBkZXJlZigpIHsgbV9yZWZDb3VudEFuZEZsYWdzIC09
IHNfcmVmQ291bnRJbmNyZW1lbnQ7IGlmICghKG1fcmVmQ291bnRBbmRGbGFncyAmIChzX3JlZkNv
dW50TWFzayB8IHNfcmVmQ291bnRGbGFnU3RhdGljKSkpIGRlbGV0ZSB0aGlzOyB9CiAgICAgQUxX
QVlTX0lOTElORSBib29sIGhhc09uZVJlZigpIGNvbnN0IHsgcmV0dXJuIChtX3JlZkNvdW50QW5k
RmxhZ3MgJiAoc19yZWZDb3VudE1hc2sgfCBzX3JlZkNvdW50RmxhZ1N0YXRpYykpID09IHNfcmVm
Q291bnRJbmNyZW1lbnQ7IH0KIAotICAgIHN0YXRpYyBTdHJpbmdJbXBsKiBlbXB0eSgpOworICAg
IFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RyaW5nSW1wbCogZW1wdHkoKTsKIAogICAgIHN0
YXRpYyB2b2lkIGNvcHlDaGFycyhVQ2hhciogZGVzdGluYXRpb24sIGNvbnN0IFVDaGFyKiBzb3Vy
Y2UsIHVuc2lnbmVkIG51bUNoYXJhY3RlcnMpCiAgICAgewpAQCAtMjU5LDEyICsyNTksMTIgQEAK
ICAgICAvLyBTaW5jZSBTdHJpbmdJbXBsIG9iamVjdHMgYXJlIGltbXV0YWJsZSwgdGhlcmUncyBu
byBvdGhlciByZWFzb24gdG8gbWFrZSBhIGNvcHkuCiAgICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBs
PiB0aHJlYWRzYWZlQ29weSgpIGNvbnN0OwogCi0gICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBz
dWJzdHJpbmcodW5zaWduZWQgcG9zLCB1bnNpZ25lZCBsZW4gPSBVSU5UX01BWCk7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gc3Vic3RyaW5nKHVuc2lnbmVk
IHBvcywgdW5zaWduZWQgbGVuID0gVUlOVF9NQVgpOwogCiAgICAgVUNoYXIgb3BlcmF0b3JbXSh1
bnNpZ25lZCBpKSB7IEFTU0VSVChpIDwgbV9sZW5ndGgpOyByZXR1cm4gbV9kYXRhW2ldOyB9CiAg
ICAgVUNoYXIzMiBjaGFyYWN0ZXJTdGFydGluZ0F0KHVuc2lnbmVkKTsKIAotICAgIGJvb2wgY29u
dGFpbnNPbmx5V2hpdGVzcGFjZSgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGNvbnRh
aW5zT25seVdoaXRlc3BhY2UoKTsKIAogICAgIGludCB0b0ludFN0cmljdChib29sKiBvayA9IDAs
IGludCBiYXNlID0gMTApOwogICAgIHVuc2lnbmVkIHRvVUludFN0cmljdChib29sKiBvayA9IDAs
IGludCBiYXNlID0gMTApOwpAQCAtMjcyLDcgKzI3Miw3IEBACiAgICAgdWludDY0X3QgdG9VSW50
NjRTdHJpY3QoYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKTsKICAgICBpbnRwdHJfdCB0b0lu
dFB0clN0cmljdChib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApOwogCi0gICAgaW50IHRvSW50
KGJvb2wqIG9rID0gMCk7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQorICAgIFdURl9FWFBP
UlRfUFJJVkFURSBpbnQgdG9JbnQoYm9vbCogb2sgPSAwKTsgLy8gaWdub3JlcyB0cmFpbGluZyBn
YXJiYWdlCiAgICAgdW5zaWduZWQgdG9VSW50KGJvb2wqIG9rID0gMCk7IC8vIGlnbm9yZXMgdHJh
aWxpbmcgZ2FyYmFnZQogICAgIGludDY0X3QgdG9JbnQ2NChib29sKiBvayA9IDApOyAvLyBpZ25v
cmVzIHRyYWlsaW5nIGdhcmJhZ2UKICAgICB1aW50NjRfdCB0b1VJbnQ2NChib29sKiBvayA9IDAp
OyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKQEAgLTI4MSwzOSArMjgxLDM5IEBACiAgICAg
ZG91YmxlIHRvRG91YmxlKGJvb2wqIG9rID0gMCwgYm9vbCogZGlkUmVhZE51bWJlciA9IDApOwog
ICAgIGZsb2F0IHRvRmxvYXQoYm9vbCogb2sgPSAwLCBib29sKiBkaWRSZWFkTnVtYmVyID0gMCk7
CiAKLSAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGxvd2VyKCk7Ci0gICAgUGFzc1JlZlB0cjxT
dHJpbmdJbXBsPiB1cHBlcigpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBQYXNzUmVmUHRyPFN0
cmluZ0ltcGw+IGxvd2VyKCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8U3Ry
aW5nSW1wbD4gdXBwZXIoKTsKIAogICAgIGVudW0gTGFzdENoYXJhY3RlckJlaGF2aW9yIHsgT2Jz
Y3VyZUxhc3RDaGFyYWN0ZXIsIERpc3BsYXlMYXN0Q2hhcmFjdGVyIH07CiAKLSAgICBQYXNzUmVm
UHRyPFN0cmluZ0ltcGw+IHNlY3VyZShVQ2hhciwgTGFzdENoYXJhY3RlckJlaGF2aW9yID0gT2Jz
Y3VyZUxhc3RDaGFyYWN0ZXIpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBQYXNzUmVmUHRyPFN0
cmluZ0ltcGw+IHNlY3VyZShVQ2hhciwgTGFzdENoYXJhY3RlckJlaGF2aW9yID0gT2JzY3VyZUxh
c3RDaGFyYWN0ZXIpOwogICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gZm9sZENhc2UoKTsKIAog
ICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gc3RyaXBXaGl0ZVNwYWNlKCk7Ci0gICAgUGFzc1Jl
ZlB0cjxTdHJpbmdJbXBsPiBzaW1wbGlmeVdoaXRlU3BhY2UoKTsKKyAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBzaW1wbGlmeVdoaXRlU3BhY2UoKTsKIAogICAg
IFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVtb3ZlQ2hhcmFjdGVycyhDaGFyYWN0ZXJNYXRjaEZ1
bmN0aW9uUHRyKTsKIAotICAgIHNpemVfdCBmaW5kKFVDaGFyLCB1bnNpZ25lZCBpbmRleCA9IDAp
OwotICAgIHNpemVfdCBmaW5kKENoYXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIsIHVuc2lnbmVkIGlu
ZGV4ID0gMCk7Ci0gICAgc2l6ZV90IGZpbmQoY29uc3QgY2hhciosIHVuc2lnbmVkIGluZGV4ID0g
MCk7Ci0gICAgc2l6ZV90IGZpbmQoU3RyaW5nSW1wbCosIHVuc2lnbmVkIGluZGV4ID0gMCk7Ci0g
ICAgc2l6ZV90IGZpbmRJZ25vcmluZ0Nhc2UoY29uc3QgY2hhciosIHVuc2lnbmVkIGluZGV4ID0g
MCk7Ci0gICAgc2l6ZV90IGZpbmRJZ25vcmluZ0Nhc2UoU3RyaW5nSW1wbCosIHVuc2lnbmVkIGlu
ZGV4ID0gMCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCBmaW5kKFVDaGFyLCB1bnNp
Z25lZCBpbmRleCA9IDApOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgZmluZChDaGFy
YWN0ZXJNYXRjaEZ1bmN0aW9uUHRyLCB1bnNpZ25lZCBpbmRleCA9IDApOworICAgIFdURl9FWFBP
UlRfUFJJVkFURSBzaXplX3QgZmluZChjb25zdCBjaGFyKiwgdW5zaWduZWQgaW5kZXggPSAwKTsK
KyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZpbmQoU3RyaW5nSW1wbCosIHVuc2lnbmVk
IGluZGV4ID0gMCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCBmaW5kSWdub3JpbmdD
YXNlKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCBpbmRleCA9IDApOworICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBzaXplX3QgZmluZElnbm9yaW5nQ2FzZShTdHJpbmdJbXBsKiwgdW5zaWduZWQgaW5kZXgg
PSAwKTsKIAotICAgIHNpemVfdCByZXZlcnNlRmluZChVQ2hhciwgdW5zaWduZWQgaW5kZXggPSBV
SU5UX01BWCk7Ci0gICAgc2l6ZV90IHJldmVyc2VGaW5kKFN0cmluZ0ltcGwqLCB1bnNpZ25lZCBp
bmRleCA9IFVJTlRfTUFYKTsKLSAgICBzaXplX3QgcmV2ZXJzZUZpbmRJZ25vcmluZ0Nhc2UoU3Ry
aW5nSW1wbCosIHVuc2lnbmVkIGluZGV4ID0gVUlOVF9NQVgpOworICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBzaXplX3QgcmV2ZXJzZUZpbmQoVUNoYXIsIHVuc2lnbmVkIGluZGV4ID0gVUlOVF9NQVgp
OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgcmV2ZXJzZUZpbmQoU3RyaW5nSW1wbCos
IHVuc2lnbmVkIGluZGV4ID0gVUlOVF9NQVgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXpl
X3QgcmV2ZXJzZUZpbmRJZ25vcmluZ0Nhc2UoU3RyaW5nSW1wbCosIHVuc2lnbmVkIGluZGV4ID0g
VUlOVF9NQVgpOwogCiAgICAgYm9vbCBzdGFydHNXaXRoKFN0cmluZ0ltcGwqIHN0ciwgYm9vbCBj
YXNlU2Vuc2l0aXZlID0gdHJ1ZSkgeyByZXR1cm4gKGNhc2VTZW5zaXRpdmUgPyByZXZlcnNlRmlu
ZChzdHIsIDApIDogcmV2ZXJzZUZpbmRJZ25vcmluZ0Nhc2Uoc3RyLCAwKSkgPT0gMDsgfQotICAg
IGJvb2wgZW5kc1dpdGgoU3RyaW5nSW1wbCosIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IHRydWUpOwor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGVuZHNXaXRoKFN0cmluZ0ltcGwqLCBib29sIGNh
c2VTZW5zaXRpdmUgPSB0cnVlKTsKIAotICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwbGFj
ZShVQ2hhciwgVUNoYXIpOwotICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwbGFjZShVQ2hh
ciwgU3RyaW5nSW1wbCopOwotICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwbGFjZShTdHJp
bmdJbXBsKiwgU3RyaW5nSW1wbCopOwotICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwbGFj
ZSh1bnNpZ25lZCBpbmRleCwgdW5zaWduZWQgbGVuLCBTdHJpbmdJbXBsKik7CisgICAgV1RGX0VY
UE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwbGFjZShVQ2hhciwgVUNoYXIp
OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJlcGxhY2Uo
VUNoYXIsIFN0cmluZ0ltcGwqKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgUGFzc1JlZlB0cjxT
dHJpbmdJbXBsPiByZXBsYWNlKFN0cmluZ0ltcGwqLCBTdHJpbmdJbXBsKik7CisgICAgV1RGX0VY
UE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwbGFjZSh1bnNpZ25lZCBpbmRl
eCwgdW5zaWduZWQgbGVuLCBTdHJpbmdJbXBsKik7CiAKLSAgICBXVEY6OlVuaWNvZGU6OkRpcmVj
dGlvbiBkZWZhdWx0V3JpdGluZ0RpcmVjdGlvbihib29sKiBoYXNTdHJvbmdEaXJlY3Rpb25hbGl0
eSA9IDApOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbiBk
ZWZhdWx0V3JpdGluZ0RpcmVjdGlvbihib29sKiBoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSA9IDAp
OwogCiAjaWYgVVNFKENGKQogICAgIENGU3RyaW5nUmVmIGNyZWF0ZUNGU3RyaW5nKCk7CkBAIC0z
MjYsNyArMzI2LDcgQEAKICAgICAvLyBUaGlzIG51bWJlciBtdXN0IGJlIGF0IGxlYXN0IDIgdG8g
YXZvaWQgc2hhcmluZyBlbXB0eSwgbnVsbCBhcyB3ZWxsIGFzIDEgY2hhcmFjdGVyIHN0cmluZ3Mg
ZnJvbSBTbWFsbFN0cmluZ3MuCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfY29weUNoYXJz
SW5saW5lQ3V0T2ZmID0gMjA7CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBj
cmVhdGVTdHJpcHBpbmdOdWxsQ2hhcmFjdGVyc1Nsb3dDYXNlKGNvbnN0IFVDaGFyKiwgdW5zaWdu
ZWQgbGVuZ3RoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8U3Ry
aW5nSW1wbD4gY3JlYXRlU3RyaXBwaW5nTnVsbENoYXJhY3RlcnNTbG93Q2FzZShjb25zdCBVQ2hh
ciosIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgCiAgICAgQnVmZmVyT3duZXJzaGlwIGJ1ZmZlck93
bmVyc2hpcCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEJ1ZmZlck93bmVyc2hpcD4obV9y
ZWZDb3VudEFuZEZsYWdzICYgc19yZWZDb3VudE1hc2tCdWZmZXJPd25lcnNoaXApOyB9CiAgICAg
Ym9vbCBpc1N0YXRpYygpIGNvbnN0IHsgcmV0dXJuIG1fcmVmQ291bnRBbmRGbGFncyAmIHNfcmVm
Q291bnRGbGFnU3RhdGljOyB9CkBAIC0zMzksMTcgKzMzOSwxNyBAQAogICAgIG11dGFibGUgdW5z
aWduZWQgbV9oYXNoOwogfTsKIAotYm9vbCBlcXVhbChjb25zdCBTdHJpbmdJbXBsKiwgY29uc3Qg
U3RyaW5nSW1wbCopOwotYm9vbCBlcXVhbChjb25zdCBTdHJpbmdJbXBsKiwgY29uc3QgY2hhciop
OworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZXF1YWwoY29uc3QgU3RyaW5nSW1wbCosIGNvbnN0
IFN0cmluZ0ltcGwqKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGVxdWFsKGNvbnN0IFN0cmlu
Z0ltcGwqLCBjb25zdCBjaGFyKik7CiBpbmxpbmUgYm9vbCBlcXVhbChjb25zdCBjaGFyKiBhLCBT
dHJpbmdJbXBsKiBiKSB7IHJldHVybiBlcXVhbChiLCBhKTsgfQogCi1ib29sIGVxdWFsSWdub3Jp
bmdDYXNlKFN0cmluZ0ltcGwqLCBTdHJpbmdJbXBsKik7Ci1ib29sIGVxdWFsSWdub3JpbmdDYXNl
KFN0cmluZ0ltcGwqLCBjb25zdCBjaGFyKik7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBlcXVh
bElnbm9yaW5nQ2FzZShTdHJpbmdJbXBsKiwgU3RyaW5nSW1wbCopOworV1RGX0VYUE9SVF9QUklW
QVRFIGJvb2wgZXF1YWxJZ25vcmluZ0Nhc2UoU3RyaW5nSW1wbCosIGNvbnN0IGNoYXIqKTsKIGlu
bGluZSBib29sIGVxdWFsSWdub3JpbmdDYXNlKGNvbnN0IGNoYXIqIGEsIFN0cmluZ0ltcGwqIGIp
IHsgcmV0dXJuIGVxdWFsSWdub3JpbmdDYXNlKGIsIGEpOyB9Ci1ib29sIGVxdWFsSWdub3JpbmdD
YXNlKGNvbnN0IFVDaGFyKiBhLCBjb25zdCBjaGFyKiBiLCB1bnNpZ25lZCBsZW5ndGgpOworV1RG
X0VYUE9SVF9QUklWQVRFIGJvb2wgZXF1YWxJZ25vcmluZ0Nhc2UoY29uc3QgVUNoYXIqLCBjb25z
dCBjaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKIGlubGluZSBib29sIGVxdWFsSWdub3JpbmdDYXNl
KGNvbnN0IGNoYXIqIGEsIGNvbnN0IFVDaGFyKiBiLCB1bnNpZ25lZCBsZW5ndGgpIHsgcmV0dXJu
IGVxdWFsSWdub3JpbmdDYXNlKGIsIGEsIGxlbmd0aCk7IH0KIAotYm9vbCBlcXVhbElnbm9yaW5n
TnVsbGl0eShTdHJpbmdJbXBsKiwgU3RyaW5nSW1wbCopOworV1RGX0VYUE9SVF9QUklWQVRFIGJv
b2wgZXF1YWxJZ25vcmluZ051bGxpdHkoU3RyaW5nSW1wbCosIFN0cmluZ0ltcGwqKTsKIAogdGVt
cGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5PgogYm9vbCBlcXVhbElnbm9yaW5nTnVsbGl0eShj
b25zdCBWZWN0b3I8VUNoYXIsIGlubGluZUNhcGFjaXR5PiYgYSwgU3RyaW5nSW1wbCogYikKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQnl0ZUFycmF5LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9CeXRlQXJyYXkuaAkocmV2aXNpb24gODIwMTApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0J5dGVBcnJheS5oCSh3b3JraW5nIGNvcHkpCkBA
IC04MCw3ICs4MCw3IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxCeXRlQXJyYXk+IGNyZWF0ZShzaXplX3Qgc2l6ZSk7CisgICAgICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxCeXRlQXJyYXk+IGNyZWF0ZShzaXpl
X3QpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgQnl0ZUFycmF5KHNpemVfdCBzaXplKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAkocmV2aXNpb24gODIwMTApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgJKHdvcmtpbmcgY29weSkKQEAgLTEx
OTMsNiArMTE5Myw5IEBACiAgICBzaW5jZSBtb3N0IHBvcnRzIHRyeSB0byBzdXBwb3J0IHN1Yi1w
cm9qZWN0IGluZGVwZW5kZW5jZSwgYWRkaW5nIG5ldyBoZWFkZXJzCiAgICB0byBXVEYgY2F1c2Vz
IG1hbnkgcG9ydHMgdG8gYnJlYWssIGFuZCBzbyB0aGlzIHdheSB3ZSBjYW4gYWRkcmVzcyB0aGUg
YnVpbGQKICAgIGJyZWFrYWdlcyBvbmUgcG9ydCBhdCBhIHRpbWUuICovCisjaWYgUExBVEZPUk0o
V1gpCisjZGVmaW5lIFdURl9VU0VfRVhQT1JUX01BQ1JPUyAxCisjZWxzZQogI2RlZmluZSBXVEZf
VVNFX0VYUE9SVF9NQUNST1MgMAotCisjZW5kaWYKICNlbmRpZiAvKiBXVEZfUGxhdGZvcm1faCAq
LwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmgJKHJldmlzaW9uIDgyMDEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw4ICsxMDAsOCBAQAogICAg
ICAgICBKU1ZhbHVlIGV4ZWN1dGUoRXZhbEV4ZWN1dGFibGUqIGV2YWxOb2RlLCBDYWxsRnJhbWUq
IGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbik7CiAK
ICAgICAgICAgSlNWYWx1ZSByZXRyaWV2ZUFyZ3VtZW50cyhDYWxsRnJhbWUqLCBKU0Z1bmN0aW9u
KikgY29uc3Q7Ci0gICAgICAgIEpTVmFsdWUgcmV0cmlldmVDYWxsZXIoQ2FsbEZyYW1lKiwgSlNG
dW5jdGlvbiopIGNvbnN0OwotICAgICAgICB2b2lkIHJldHJpZXZlTGFzdENhbGxlcihDYWxsRnJh
bWUqLCBpbnQmIGxpbmVOdW1iZXIsIGludHB0cl90JiBzb3VyY2VJRCwgVVN0cmluZyYgc291cmNl
VVJMLCBKU1ZhbHVlJiBmdW5jdGlvbikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IEpTVmFsdWUgcmV0cmlldmVDYWxsZXIoQ2FsbEZyYW1lKiwgSlNGdW5jdGlvbiopIGNvbnN0Owor
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHJldHJpZXZlTGFzdENhbGxlcihDYWxsRnJh
bWUqLCBpbnQmIGxpbmVOdW1iZXIsIGludHB0cl90JiBzb3VyY2VJRCwgVVN0cmluZyYgc291cmNl
VVJMLCBKU1ZhbHVlJiBmdW5jdGlvbikgY29uc3Q7CiAgICAgICAgIAogICAgICAgICB2b2lkIGdl
dEFyZ3VtZW50c0RhdGEoQ2FsbEZyYW1lKiwgSlNGdW5jdGlvbiomLCBwdHJkaWZmX3QmIGZpcnN0
UGFyYW1ldGVySW5kZXgsIFJlZ2lzdGVyKiYgYXJndiwgaW50JiBhcmdjKTsKICAgICAgICAgCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmgJKHJldmlzaW9uIDgy
MDEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzEzLDcgKzMxMyw3IEBACiB9OwogCiBzdHJ1Y3QgWWFyclBhdHRlcm4gewot
ICAgIFlhcnJQYXR0ZXJuKGNvbnN0IFVTdHJpbmcmIHBhdHRlcm4sIGJvb2wgaWdub3JlQ2FzZSwg
Ym9vbCBtdWx0aWxpbmUsIGNvbnN0IGNoYXIqKiBlcnJvcik7CisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgWWFyclBhdHRlcm4oY29uc3QgVVN0cmluZyYgcGF0dGVybiwgYm9vbCBpZ25vcmVDYXNlLCBi
b29sIG11bHRpbGluZSwgY29uc3QgY2hhcioqIGVycm9yKTsKIAogICAgIH5ZYXJyUGF0dGVybigp
CiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnIuaAkocmV2aXNpb24gODIwMTAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTU3LDggKzU3LDggQEAKICAgICBKU1JlZ0V4cEVycm9ySW50ZXJuYWwgPSAtNAogfTsKIAotUGFz
c093blB0cjxCeXRlY29kZVBhdHRlcm4+IGJ5dGVDb21waWxlKFlhcnJQYXR0ZXJuJiwgQnVtcFBv
aW50ZXJBbGxvY2F0b3IqKTsKLWludCBpbnRlcnByZXQoQnl0ZWNvZGVQYXR0ZXJuKiwgY29uc3Qg
VUNoYXIqIGlucHV0LCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBpbnQqIG91dHB1
dCk7CitKU19FWFBPUlRfUFJJVkFURSBQYXNzT3duUHRyPEJ5dGVjb2RlUGF0dGVybj4gYnl0ZUNv
bXBpbGUoWWFyclBhdHRlcm4mLCBCdW1wUG9pbnRlckFsbG9jYXRvciopOworSlNfRVhQT1JUX1BS
SVZBVEUgaW50IGludGVycHJldChCeXRlY29kZVBhdHRlcm4qLCBjb25zdCBVQ2hhciogaW5wdXQs
IHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIGludCogb3V0cHV0KTsKIAogfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OllhcnIKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCShyZXZp
c2lvbiA4MjAyMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxMDQgQEAKKzIwMTEtMDMtMjUgIEtldmluIE9sbGl2aWVyICA8a2V2
aW5vQHRoZW9sbGl2aWVycy5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIGV4cG9ydCBtYWNyb3MgdG8gYWxsIGV4cG9ydGVkIEpTQ29yZSBt
ZXRob2RzLCBhbmQgZW5hYmxlIHRoZW0gZm9yIHRoZSB3eCBwb3J0LgorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzU1MQorCisgICAgICAgICogYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgICogY29sbGVjdG9yL2hhbmRs
ZXMvSGFuZGxlSGVhcC5oOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyLmg6CisgICAgICAg
ICogZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuaDoKKyAgICAgICAgKiBpbnRlcnByZXRlci9J
bnRlcnByZXRlci5oOgorICAgICAgICAqIHBhcnNlci9Tb3VyY2VQcm92aWRlckNhY2hlLmg6Cisg
ICAgICAgICogcHJvZmlsZXIvUHJvZmlsZXIuaDoKKyAgICAgICAgKiBydW50aW1lL0FyZ0xpc3Qu
aDoKKyAgICAgICAgKiBydW50aW1lL0NhbGxEYXRhLmg6CisgICAgICAgICogcnVudGltZS9Db21w
bGV0aW9uLmg6CisgICAgICAgICogcnVudGltZS9Db25zdHJ1Y3REYXRhLmg6CisgICAgICAgICog
cnVudGltZS9EYXRlSW5zdGFuY2UuaDoKKyAgICAgICAgKiBydW50aW1lL0Vycm9yLmg6CisgICAg
ICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmg6CisgICAgICAgICogcnVudGltZS9GdW5j
dGlvbkNvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9IZWFwLmg6CisgICAgICAgICog
cnVudGltZS9JZGVudGlmaWVyLmg6CisgICAgICAgIChKU0M6OklkZW50aWZpZXI6OnRvVUludDMy
KToKKyAgICAgICAgKEpTQzo6SWRlbnRpZmllcjo6ZXF1YWwpOgorICAgICAgICAqIHJ1bnRpbWUv
SW5pdGlhbGl6ZVRocmVhZGluZy5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50ZXJuYWxGdW5jdGlv
bi5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNC
eXRlQXJyYXkuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5oOgorICAgICAgICAoSlNDOjpK
U0NlbGw6OkpTQ2VsbDo6Y2xhc3NJbmZvKToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpKU0NlbGw6
OnZwdHIpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OkpTQ2VsbDo6c2V0VlB0cik6CisgICAgICAg
IChKU0M6OkpTQ2VsbDo6SlNDZWxsOjppc1N0cmluZyk6CisgICAgICAgICogcnVudGltZS9KU0Z1
bmN0aW9uLmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbERhdGEuaDoKKyAgICAgICAgKiBy
dW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU0xvY2suaDoKKyAg
ICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU09iamVjdFdp
dGhHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTVmFsdWUuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTV3JhcHBl
ck9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvTG9va3VwLmg6CisgICAgICAgICogcnVudGlt
ZS9NYXJrZWRTcGFjZS5oOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmg6Cisg
ICAgICAgICogcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuaDoKKyAgICAgICAgKiBydW50aW1l
L1Byb3BlcnR5TmFtZUFycmF5Lmg6CisgICAgICAgIChKU0M6OlByb3BlcnR5TmFtZUFycmF5Ojph
ZGQpOgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlTbG90Lmg6CisgICAgICAgICogcnVudGlt
ZS9SZWdFeHAuaDoKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9iamVjdC5oOgorICAgICAgICAq
IHJ1bnRpbWUvUm9wZUltcGwuaDoKKyAgICAgICAgKiBydW50aW1lL1Njb3BlQ2hhaW4uaDoKKyAg
ICAgICAgKiBydW50aW1lL1NtYWxsU3RyaW5ncy5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5n
T2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuaDoKKyAgICAgICAgKiBydW50
aW1lL1RpbWVvdXRDaGVja2VyLmg6CisgICAgICAgICogcnVudGltZS9VU3RyaW5nLmg6CisgICAg
ICAgIChKU0M6OlVTdHJpbmc6OlVTdHJpbmcpOgorICAgICAgICAqIHdzY3JpcHQ6CisgICAgICAg
ICogd3RmL0J5dGVBcnJheS5oOgorICAgICAgICAqIHd0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRv
bU51bWJlci5oOgorICAgICAgICAqIHd0Zi9DdXJyZW50VGltZS5oOgorICAgICAgICAqIHd0Zi9E
YXRlTWF0aC5oOgorICAgICAgICAqIHd0Zi9EZWNpbWFsTnVtYmVyLmg6CisgICAgICAgICogd3Rm
L0Zhc3RNYWxsb2MuaDoKKyAgICAgICAgKiB3dGYvTUQ1Lmg6CisgICAgICAgICogd3RmL01haW5U
aHJlYWQuaDoKKyAgICAgICAgKiB3dGYvTnVsbFB0ci5jcHA6CisgICAgICAgICogd3RmL051bGxQ
dHIuaDoKKyAgICAgICAgKiB3dGYvT1NBbGxvY2F0b3IuaDoKKyAgICAgICAgKiB3dGYvUGxhdGZv
cm0uaDoKKyAgICAgICAgKiB3dGYvUmFuZG9tTnVtYmVyLmg6CisgICAgICAgICogd3RmL1JlZkNv
dW50ZWRMZWFrQ291bnRlci5oOgorICAgICAgICAqIHd0Zi9UaHJlYWRTcGVjaWZpYy5oOgorICAg
ICAgICAqIHd0Zi9UaHJlYWRpbmcuaDoKKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nUHJpbWl0aXZl
cy5oOgorICAgICAgICAqIHd0Zi9XVEZUaHJlYWREYXRhLmg6CisgICAgICAgICogd3RmL2R0b2Eu
aDoKKyAgICAgICAgKiB3dGYvdGV4dC9BdG9taWNTdHJpbmcuaDoKKyAgICAgICAgKFdURjo6QXRv
bWljU3RyaW5nOjpBdG9taWNTdHJpbmcpOgorICAgICAgICAoV1RGOjpBdG9taWNTdHJpbmc6Omlz
SGFzaFRhYmxlRGVsZXRlZFZhbHVlKToKKyAgICAgICAgKFdURjo6QXRvbWljU3RyaW5nOjp+QXRv
bWljU3RyaW5nKToKKyAgICAgICAgKFdURjo6QXRvbWljU3RyaW5nOjppbXBsKToKKyAgICAgICAg
KiB3dGYvdGV4dC9DU3RyaW5nLmg6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nQnVpbGRlci5o
OgorICAgICAgICAoV1RGOjpTdHJpbmdCdWlsZGVyOjphcHBlbmQpOgorICAgICAgICAqIHd0Zi90
ZXh0L1N0cmluZ0ltcGwuaDoKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6Y2hhcmFjdGVycyk6
CisgICAgICAgICogd3RmL3RleHQvV1RGU3RyaW5nLmg6CisgICAgICAgIChXVEY6OlN0cmluZzo6
U3RyaW5nKToKKyAgICAgICAgKFdURjo6U3RyaW5nOjpmaW5kSWdub3JpbmdDYXNlKToKKyAgICAg
ICAgKFdURjo6U3RyaW5nOjppc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSk6CisgICAgICAgICogd3Rm
L3VuaWNvZGUvQ29sbGF0b3IuaDoKKyAgICAgICAgKiB3dGYvdW5pY29kZS9VVEY4Lmg6CisgICAg
ICAgICogeWFyci9ZYXJyLmg6CisgICAgICAgICogeWFyci9ZYXJyUGF0dGVybi5oOgorCiAyMDEx
LTAzLTI1ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3NjcmlwdAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3NjcmlwdAkocmV2aXNpb24gODIw
MTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3NjcmlwdAkod29ya2luZyBjb3B5KQpAQCAt
NDcsNiArNDcsNyBAQAogZGVmIGJ1aWxkKGJsZCk6CiAgICAgaW1wb3J0IE9wdGlvbnMKIAorICAg
IGJsZC5lbnYuTElCRElSID0gb3V0cHV0X2RpcgogICAgIGZ1bGxfZGlycyA9IGdldF9kaXJzX2Zv
cl9mZWF0dXJlcyhqc2NvcmVfZGlyLCBmZWF0dXJlcz1bYnVpbGRfcG9ydF0sIGRpcnM9anNjb3Jl
X2RpcnMpCiAKICAgICBpbmNsdWRlcyA9IGNvbW1vbl9pbmNsdWRlcyArIGZ1bGxfZGlycwpAQCAt
NTUsOSArNTYsMTAgQEAKIAogICAgICMgMS4gQSBzaW1wbGUgcHJvZ3JhbQogICAgIGpzY29yZSA9
IGJsZC5uZXdfdGFza19nZW4oCi0gICAgICAgIGZlYXR1cmVzID0gJ2N4eCBjc3RhdGljbGliJywK
KyAgICAgICAgZmVhdHVyZXMgPSAnY3h4IGNzaGxpYiBpbXBsaWInLAogICAgICAgICBpbmNsdWRl
cyA9ICcuIC4uIGFzc2VtYmxlciBEZXJpdmVkU291cmNlcyBGb3J3YXJkaW5nSGVhZGVycyAnICsg
JyAnLmpvaW4oaW5jbHVkZXMpLAogICAgICAgICBzb3VyY2UgPSBzb3VyY2VzLAorICAgICAgICBk
ZWZpbmVzID0gWydCVUlMRElOR19KYXZhU2NyaXB0Q29yZSddLAogICAgICAgICB0YXJnZXQgPSAn
anNjb3JlJywKICAgICAgICAgdXNlbGliID0gJ1dYIElDVSAnICsgZ2V0X2NvbmZpZygpLAogICAg
ICAgICB1c2VsaWJfbG9jYWwgPSAnJywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvU291cmNlUHJvdmlkZXJDYWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvU291cmNlUHJvdmlkZXJDYWNoZS5oCShyZXZpc2lvbiA4MjAxMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlkZXJDYWNoZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMywxMCArMzMsMTAgQEAKIGNsYXNzIFNvdXJjZVByb3ZpZGVyQ2FjaGUgewog
cHVibGljOgogICAgIFNvdXJjZVByb3ZpZGVyQ2FjaGUoKSA6IG1fY29udGVudEJ5dGVTaXplKDAp
IHt9Ci0gICAgflNvdXJjZVByb3ZpZGVyQ2FjaGUoKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB+
U291cmNlUHJvdmlkZXJDYWNoZSgpOwogCi0gICAgdm9pZCBjbGVhcigpOwotICAgIHVuc2lnbmVk
IGJ5dGVTaXplKCkgY29uc3Q7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBjbGVhcigpOwor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHVuc2lnbmVkIGJ5dGVTaXplKCkgY29uc3Q7CiAgICAgdm9p
ZCBhZGQoaW50IHNvdXJjZVBvc2l0aW9uLCBQYXNzT3duUHRyPFNvdXJjZVByb3ZpZGVyQ2FjaGVJ
dGVtPiwgdW5zaWduZWQgc2l6ZSk7CiAgICAgY29uc3QgU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0q
IGdldChpbnQgc291cmNlUG9zaXRpb24pIGNvbnN0IHsgcmV0dXJuIG1fbWFwLmdldChzb3VyY2VQ
b3NpdGlvbik7IH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2Zp
bGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2Zp
bGVyLmgJKHJldmlzaW9uIDgyMDEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVy
L1Byb2ZpbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDExICs1MywxMSBAQAogICAgICAgICAg
ICAgcmV0dXJuICZzX3NoYXJlZEVuYWJsZWRQcm9maWxlclJlZmVyZW5jZTsKICAgICAgICAgfQog
Ci0gICAgICAgIHN0YXRpYyBQcm9maWxlciogcHJvZmlsZXIoKTsgCisgICAgICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBQcm9maWxlciogcHJvZmlsZXIoKTsgCiAgICAgICAgIHN0YXRpYyBD
YWxsSWRlbnRpZmllciBjcmVhdGVDYWxsSWRlbnRpZmllcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUsIGNvbnN0IFVTdHJpbmcmIHNvdXJjZVVSTCwgaW50IGxpbmVOdW1iZXIpOwogCi0gICAgICAg
IHZvaWQgc3RhcnRQcm9maWxpbmcoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYgdGl0bGUpOwot
ICAgICAgICBQYXNzUmVmUHRyPFByb2ZpbGU+IHN0b3BQcm9maWxpbmcoRXhlY1N0YXRlKiwgY29u
c3QgVVN0cmluZyYgdGl0bGUpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHN0YXJ0
UHJvZmlsaW5nKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmIHRpdGxlKTsKKyAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgUGFzc1JlZlB0cjxQcm9maWxlPiBzdG9wUHJvZmlsaW5nKEV4ZWNTdGF0
ZSosIGNvbnN0IFVTdHJpbmcmIHRpdGxlKTsKICAgICAgICAgdm9pZCBzdG9wUHJvZmlsaW5nKEpT
R2xvYmFsT2JqZWN0Kik7CiAKICAgICAgICAgdm9pZCB3aWxsRXhlY3V0ZShFeGVjU3RhdGUqIGNh
bGxlckNhbGxGcmFtZSwgSlNWYWx1ZSBmdW5jdGlvbik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuaAkocmV2aXNpb24gODIw
MTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUu
aAkod29ya2luZyBjb3B5KQpAQCAtNTEsMTAgKzUxLDEwIEBACiAgICAgICAgIEpTR2xvYmFsT2Jq
ZWN0KiBkeW5hbWljR2xvYmFsT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9jYWxsRnJhbWUtPmR5
bmFtaWNHbG9iYWxPYmplY3QoKTsgfQogICAgICAgICBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFp
bigpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbEZyYW1lLT5zY29wZUNoYWluKCk7IH0KICAgICAgICAg
Y29uc3QgVVN0cmluZyogZnVuY3Rpb25OYW1lKCkgY29uc3Q7Ci0gICAgICAgIFVTdHJpbmcgY2Fs
Y3VsYXRlZEZ1bmN0aW9uTmFtZSgpIGNvbnN0OwotICAgICAgICBUeXBlIHR5cGUoKSBjb25zdDsK
LSAgICAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QoKSBjb25zdDsKLSAgICAgICAgSlNWYWx1ZSBl
dmFsdWF0ZShjb25zdCBVU3RyaW5nJiwgSlNWYWx1ZSYgZXhjZXB0aW9uKSBjb25zdDsKKyAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgVVN0cmluZyBjYWxjdWxhdGVkRnVuY3Rpb25OYW1lKCkgY29u
c3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFR5cGUgdHlwZSgpIGNvbnN0OworICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogdGhpc09iamVjdCgpIGNvbnN0OworICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIGV2YWx1YXRlKGNvbnN0IFVTdHJpbmcmLCBKU1Zh
bHVlJiBleGNlcHRpb24pIGNvbnN0OwogICAgICAgICBKU1ZhbHVlIGV4Y2VwdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fZXhjZXB0aW9uOyB9CiAKICAgICBwcml2YXRlOgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmgJKHJldmlzaW9uIDgyMDEwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM0LDcgKzM0LDcgQEAKICAgICBjbGFzcyBTb3VyY2VQcm92aWRlcjsKICAgICBjbGFzcyBVU3Ry
aW5nOwogCi0gICAgY2xhc3MgRGVidWdnZXIgeworICAgIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRF
IERlYnVnZ2VyIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgfkRlYnVnZ2VyKCk7CiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb2xsZWN0b3IvaGFuZGxlcy9IYW5kbGVIZWFw
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2NvbGxlY3Rvci9oYW5kbGVz
L0hhbmRsZUhlYXAuaAkocmV2aXNpb24gODIwMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Y29sbGVjdG9yL2hhbmRsZXMvSGFuZGxlSGVhcC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2
Miw3IEBACiAgICAgLy8gU2hvdWxkIG9ubHkgYmUgY2FsbGVkIGR1cmluZyB0ZWFyZG93bi4KICAg
ICB2b2lkIGNsZWFyV2Vha1BvaW50ZXJzKCk7CiAKLSAgICB2b2lkIHdyaXRlQmFycmllcihIYW5k
bGVTbG90LCBjb25zdCBKU1ZhbHVlJik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCB3cml0
ZUJhcnJpZXIoSGFuZGxlU2xvdCwgY29uc3QgSlNWYWx1ZSYpOwogCiAjaWYgIUFTU0VSVF9ESVNB
QkxFRAogICAgIEZpbmFsaXplciogZ2V0RmluYWxpemVyKEhhbmRsZVNsb3QgaGFuZGxlKQpAQCAt
MTEyLDcgKzExMiw3IEBACiAgICAgc3RhdGljIEhhbmRsZVNsb3QgdG9IYW5kbGUoTm9kZSopOwog
ICAgIHN0YXRpYyBOb2RlKiB0b05vZGUoSGFuZGxlU2xvdCk7CiAKLSAgICB2b2lkIGdyb3coKTsK
KyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGdyb3coKTsKIAogICAgIEpTR2xvYmFsRGF0YSog
bV9nbG9iYWxEYXRhOwogICAgIEJsb2NrU3RhY2s8Tm9kZT4gbV9ibG9ja1N0YWNrOwpJbmRleDog
U291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93
eC9DaGFuZ2VMb2cJKHJldmlzaW9uIDgyMDIxKQorKysgU291cmNlL1dlYktpdC93eC9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0wMy0yNSAgS2V2aW4gT2xs
aXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgZXhwb3J0IG1hY3JvcyB0byBhbGwgZXhwb3J0
ZWQgSlNDb3JlIG1ldGhvZHMsIGFuZCBlbmFibGUgdGhlbSBmb3IgdGhlIHd4IHBvcnQuCisKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NTUxCisKKyAg
ICAgICAgKiB3c2NyaXB0OgorCiAyMDExLTAzLTI1ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGVsZSBQZXRlcnNvbi4KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvd3gvd3NjcmlwdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3d4L3dzY3Jp
cHQJKHJldmlzaW9uIDgyMDEwKQorKysgU291cmNlL1dlYktpdC93eC93c2NyaXB0CSh3b3JraW5n
IGNvcHkpCkBAIC02OCw3ICs2OCw3IEBACiAgICAgCiBkZWYgcHJlX2J1aWxkKGJsZCk6CiAgICAg
IiIiCi0gICAgVGhlIHd4V2ViS2l0IGxpYnJhcnkgc2hvdWxkIGJlIHJlYnVpbHQgaWYganNjb3Jl
IG9yIHdlYmNvcmUgY2hhbmdlcywKKyAgICBUaGUgd3hXZWJLaXQgbGlicmFyeSBzaG91bGQgYmUg
cmVidWlsdCBpZiB3ZWJjb3JlIGNoYW5nZXMsCiAgICAgc28gd2UgbWFrZSB0aG9zZSBzdGF0aWMg
bGlicyBhcyBkZXBlbmRlbmNpZXMuCiAgICAgIiIiCiAgICAgCkBAIC03NiwxMyArNzYsMTAgQEAK
ICAgICBpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnd2luJyk6CiAgICAgICAgIGV4dCA9ICcu
bGliJwogICAgIAotICAgIGxpYmpzY29yZSA9IG9zLnBhdGguam9pbihvdXRwdXRfZGlyLCAnbGli
anNjb3JlJXMnICUgZXh0KQogICAgIGxpYndlYmNvcmUgPSBvcy5wYXRoLmpvaW4ob3V0cHV0X2Rp
ciwgJ2xpYndlYmNvcmUlcycgJSBleHQpCiAgICAgCi0gICAgYXNzZXJ0IG9zLnBhdGguZXhpc3Rz
KGxpYmpzY29yZSkKICAgICBhc3NlcnQgb3MucGF0aC5leGlzdHMobGlid2ViY29yZSkKICAgICAK
LSAgICBibGQuZW52LkNYWERFUFNfSlNDT1JFID0gVXRpbHMuaF9maWxlKGxpYmpzY29yZSkKICAg
ICBibGQuZW52LkNYWERFUFNfV0VCQ09SRSA9IFV0aWxzLmhfZmlsZShsaWJ3ZWJjb3JlKQogICAg
IAogZGVmIGJ1aWxkKGJsZCk6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jb25maWcuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb25maWcuaAkocmV2aXNpb24gODIwMTApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9jb25maWcuaAkod29ya2luZyBjb3B5KQpAQCAtNjQsOCArNjQsOCBAQAogI2Vs
c2UKICNkZWZpbmUgV0VCS0lUX0VYUE9SVERBVEEgX19kZWNsc3BlYyhkbGxpbXBvcnQpCiAjZW5k
aWYKLSNkZWZpbmUgV1RGX0VYUE9SVF9QUklWQVRFIEpTX0VYUE9SVERBVEEKLSNkZWZpbmUgSlNf
RVhQT1JUX1BSSVZBVEUgSlNfRVhQT1JUREFUQQorI2RlZmluZSBXVEZfRVhQT1JUX1BSSVZBVEUK
KyNkZWZpbmUgSlNfRVhQT1JUX1BSSVZBVEUKICNkZWZpbmUgSlNfRVhQT1JUQ0xBU1MgSlNfRVhQ
T1JUREFUQQogI2Vsc2UKICNkZWZpbmUgSlNfRVhQT1JUREFUQQpJbmRleDogU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2
aXNpb24gODIwMjEpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSwxNSBAQAogMjAxMS0wMy0yNSAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhl
b2xsaXZpZXJzLmNvbT4KIAorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgZXhwb3J0IG1hY3JvcyB0byBhbGwgZXhwb3J0ZWQgSlNDb3JlIG1ldGhvZHMs
IGFuZCBlbmFibGUgdGhlbSBmb3IgdGhlIHd4IHBvcnQuCisKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NTUxCisKKyAgICAgICAgKiBjb25maWcuaDoK
KworMjAxMS0wMy0yNSAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4K
KwogICAgICAgICBbd3hdIEJ1aWxkIGZpeCwgZG9uJ3QgdXNlIHRoZSBuZXcgRlBEIGltcGxlbWVu
dGF0aW9uIHlldCwgdW50aWwgd2UgY2FuIG1lcmdlIG91cnMgd2l0aCBpdC4KIAogICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaDoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87051</attachid>
            <date>2011-03-26 18:19:08 -0700</date>
            <delta_ts>2011-03-27 10:49:52 -0700</delta_ts>
            <desc>Step 2, part 1, third try: More Win build fixes.</desc>
            <filename>jscore_exports_step2_try3.patch</filename>
            <type>text/plain</type>
            <size>114925</size>
            <attacher name="Kevin Ollivier">kevino</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL3d4L2J1aWxkL3NldHRpbmdzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL3d4
L2J1aWxkL3NldHRpbmdzLnB5CShyZXZpc2lvbiA4MjAxMCkKKysrIFRvb2xzL3d4L2J1aWxkL3Nl
dHRpbmdzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yODMsNyArMjgzLDcgQEAKICAgICBpZiBidWls
ZF9wb3J0ID09ICJ3eCI6CiAgICAgICAgIHVwZGF0ZV93eF9kZXBzKGNvbmYsIHdrX3Jvb3QsIG1z
dmNfdmVyc2lvbikKIAotICAgICAgICBjb25mLmVudi5hcHBlbmRfdmFsdWUoJ0NYWERFRklORVMn
LCBbJ0JVSUxESU5HX1dYX189MScsICdKU19OT19FWFBPUlQnXSkKKyAgICAgICAgY29uZi5lbnYu
YXBwZW5kX3ZhbHVlKCdDWFhERUZJTkVTJywgWydCVUlMRElOR19XWF9fPTEnXSkKIAogICAgICAg
ICBpZiBidWlsZGluZ19vbl93aW4zMjoKICAgICAgICAgICAgIGNvbmYuZW52LmFwcGVuZF92YWx1
ZSgnTElCUEFUSCcsIG9zLnBhdGguam9pbihtc3ZjbGlic19kaXIsICdsaWInKSkKQEAgLTI5NSw2
ICsyOTUsOCBAQAogICAgICAgICAgICAgY29uZi5lbnZbJ0NQUFBBVEhfV1gnXSA9IHd4aW5jbHVk
ZXMKICAgICAgICAgICAgIGNvbmYuZW52WydMSUJfV1gnXSA9IHd4bGlicwogICAgICAgICAgICAg
Y29uZi5lbnZbJ0xJQlBBVEhfV1gnXSA9IHd4bGlicGF0aHMKKyAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgIGNvbmYuZW52LmFwcGVuZF92YWx1ZSgnQ1hYRkxBR1MnLCBbJy1mdmlzaWJpbGl0eT1o
aWRkZW4nXSkKIAogICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdkYXJ3aW4nKToKICAg
ICAgICAgY29uZi5lbnZbJ0xJQl9JQ1UnXSA9IFsnaWN1Y29yZSddCkluZGV4OiBUb29scy9XZWJL
aXRUZXN0UnVubmVyL2NvbmZpZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvY29uZmlnLmgJKHJldmlzaW9uIDgyMDEwKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9j
b25maWcuaAkod29ya2luZyBjb3B5KQpAQCAtNDksOCArNDksOCBAQAogI2RlZmluZSBXRUJLSVRf
RVhQT1JUREFUQQogI2VuZGlmCiAKLSNkZWZpbmUgV1RGX0VYUE9SVF9QUklWQVRFIEpTX0VYUE9S
VERBVEEKLSNkZWZpbmUgSlNfRVhQT1JUX1BSSVZBVEUgSlNfRVhQT1JUREFUQQorI2RlZmluZSBX
VEZfRVhQT1JUX1BSSVZBVEUKKyNkZWZpbmUgSlNfRVhQT1JUX1BSSVZBVEUKIAogI2VuZGlmIC8q
IFVTRShFWFBPUlRfTUFDUk9TKSAqLwogCkluZGV4OiBUb29scy9XZWJLaXRBUElUZXN0L2NvbmZp
Zy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdEFQSVRlc3QvY29uZmlnLmgJKHJldmlzaW9u
IDgyMDEwKQorKysgVG9vbHMvV2ViS2l0QVBJVGVzdC9jb25maWcuaAkod29ya2luZyBjb3B5KQpA
QCAtNDksOCArNDksOCBAQAogI2RlZmluZSBXRUJLSVRfRVhQT1JUREFUQQogI2VuZGlmCiAKLSNk
ZWZpbmUgV1RGX0VYUE9SVF9QUklWQVRFIEpTX0VYUE9SVERBVEEKLSNkZWZpbmUgSlNfRVhQT1JU
X1BSSVZBVEUgSlNfRVhQT1JUREFUQQorI2RlZmluZSBXVEZfRVhQT1JUX1BSSVZBVEUKKyNkZWZp
bmUgSlNfRVhQT1JUX1BSSVZBVEUKIAogI2VuZGlmIC8qIFVTRShFWFBPUlRfTUFDUk9TKSAqLwog
CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9jb25maWcuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9EdW1wUmVuZGVyVHJlZS9jb25maWcuaAkocmV2aXNpb24gODIwMTApCisrKyBUb29scy9EdW1w
UmVuZGVyVHJlZS9jb25maWcuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsOCArNDgsOCBAQAogI2Rl
ZmluZSBXRUJLSVRfRVhQT1JUREFUQQogI2VuZGlmCiAKLSNkZWZpbmUgV1RGX0VYUE9SVF9QUklW
QVRFIEpTX0VYUE9SVERBVEEKLSNkZWZpbmUgSlNfRVhQT1JUX1BSSVZBVEUgSlNfRVhQT1JUREFU
QQorI2RlZmluZSBXVEZfRVhQT1JUX1BSSVZBVEUKKyNkZWZpbmUgSlNfRVhQT1JUX1BSSVZBVEUK
IAogI2VuZGlmIC8qIFVTRShFWFBPUlRfTUFDUk9TKSAqLwogCkluZGV4OiBUb29scy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA4MjA0NCkKKysrIFRv
b2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDExLTAzLTI2
ICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBleHBvcnQgbWFjcm9zIHRv
IGFsbCBleHBvcnRlZCBKU0NvcmUgbWV0aG9kcywgYW5kIGVuYWJsZSB0aGVtIGZvciB0aGUgd3gg
cG9ydC4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
Mjc1NTEKKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2NvbmZpZy5oOgorICAgICAgICAqIFdl
YktpdEFQSVRlc3QvY29uZmlnLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9jb25maWcu
aDoKKyAgICAgICAgKiB3eC9idWlsZC9zZXR0aW5ncy5weToKKwogMjAxMS0wMy0yMyAgTWFydGlu
IFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
WGFuIExvcGV6LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgJKHJl
dmlzaW9uIDgyMDEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMzLDEyICszMywxMiBAQAogICAgIHN0cnVjdCBSZWdFeHBSZXBy
ZXNlbnRhdGlvbjsKICAgICBjbGFzcyBKU0dsb2JhbERhdGE7CiAKLSAgICBSZWdFeHBGbGFncyBy
ZWdFeHBGbGFncyhjb25zdCBVU3RyaW5nJik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVnRXhw
RmxhZ3MgcmVnRXhwRmxhZ3MoY29uc3QgVVN0cmluZyYpOwogCiAgICAgY2xhc3MgUmVnRXhwIDog
cHVibGljIFJlZkNvdW50ZWQ8UmVnRXhwPiB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxSZWdFeHA+IGNyZWF0ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0
IFVTdHJpbmcmIHBhdHRlcm4sIFJlZ0V4cEZsYWdzKTsKLSAgICAgICAgflJlZ0V4cCgpOworICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxSZWdFeHA+IGNyZWF0ZShK
U0dsb2JhbERhdGEqLCBjb25zdCBVU3RyaW5nJiBwYXR0ZXJuLCBSZWdFeHBGbGFncyk7CisgICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIH5SZWdFeHAoKTsKIAogICAgICAgICBib29sIGdsb2JhbCgp
IGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MgJiBGbGFnR2xvYmFsOyB9CiAgICAgICAgIGJvb2wgaWdu
b3JlQ2FzZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MgJiBGbGFnSWdub3JlQ2FzZTsgfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHJldmlzaW9uIDgy
MDEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTczLDExICs3MywxMSBAQAogCiAgICAgICAgIHN0YXRpYyB2b2lkIGR1bXBT
dGF0aXN0aWNzKCk7CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBhZGRQ
cm9wZXJ0eVRyYW5zaXRpb24oU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUsIHNpemVfdCYg
b2Zmc2V0KTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBhZGRQcm9wZXJ0
eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1Zh
bHVlLCBzaXplX3QmIG9mZnNldCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQ
YXNzUmVmUHRyPFN0cnVjdHVyZT4gYWRkUHJvcGVydHlUcmFuc2l0aW9uKFN0cnVjdHVyZSosIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxs
KiBzcGVjaWZpY1ZhbHVlLCBzaXplX3QmIG9mZnNldCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gYWRkUHJvcGVydHlUcmFuc2l0aW9uVG9F
eGlzdGluZ1N0cnVjdHVyZShTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBv
ZmZzZXQpOwogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHJlbW92ZVByb3Bl
cnR5VHJhbnNpdGlvbihTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IHNpemVfdCYgb2Zmc2V0KTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBj
aGFuZ2VQcm90b3R5cGVUcmFuc2l0aW9uKFN0cnVjdHVyZSosIEpTVmFsdWUgcHJvdG90eXBlKTsK
LSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBkZXNwZWNpZnlGdW5jdGlvblRy
YW5zaXRpb24oU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYpOworICAgICAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNoYW5nZVByb3RvdHlwZVRy
YW5zaXRpb24oU3RydWN0dXJlKiwgSlNWYWx1ZSBwcm90b3R5cGUpOworICAgICAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGRlc3BlY2lmeUZ1bmN0aW9u
VHJhbnNpdGlvbihTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJik7CiAgICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gZ2V0dGVyU2V0dGVyVHJhbnNpdGlvbihTdHJ1Y3R1cmUq
KTsKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiB0b0NhY2hlYWJsZURpY3Rp
b25hcnlUcmFuc2l0aW9uKFN0cnVjdHVyZSopOwogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxT
dHJ1Y3R1cmU+IHRvVW5jYWNoZWFibGVEaWN0aW9uYXJ5VHJhbnNpdGlvbihTdHJ1Y3R1cmUqKTsK
QEAgLTkxLDEwICs5MSwxMCBAQAogCiAgICAgICAgIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBmbGF0
dGVuRGljdGlvbmFyeVN0cnVjdHVyZShKU0dsb2JhbERhdGEmLCBKU09iamVjdCopOwogCi0gICAg
ICAgIH5TdHJ1Y3R1cmUoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgflN0cnVjdHVyZSgp
OwogCiAgICAgICAgIC8vIFRoZXNlIHNob3VsZCBiZSB1c2VkIHdpdGggY2F1dGlvbi4gIAotICAg
ICAgICBzaXplX3QgYWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1
ZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHNpemVfdCBhZGRQcm9wZXJ0eVdpdGhvdXRU
cmFuc2l0aW9uKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmli
dXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKTsKICAgICAgICAgc2l6ZV90IHJlbW92ZVByb3Bl
cnR5V2l0aG91dFRyYW5zaXRpb24oY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKICAg
ICAgICAgdm9pZCBzZXRQcm90b3R5cGVXaXRob3V0VHJhbnNpdGlvbihKU1ZhbHVlIHByb3RvdHlw
ZSkgeyBtX3Byb3RvdHlwZSA9IHByb3RvdHlwZTsgfQogICAgICAgICAKQEAgLTExNiw3ICsxMTYs
NyBAQAogICAgICAgICBib29sIGlzVXNpbmdJbmxpbmVTdG9yYWdlKCkgY29uc3Q7CiAKICAgICAg
ICAgc2l6ZV90IGdldChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOwotICAgICAgICBz
aXplX3QgZ2V0KFN0cmluZ0ltcGwqIHByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMs
IEpTQ2VsbComIHNwZWNpZmljVmFsdWUpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzaXpl
X3QgZ2V0KFN0cmluZ0ltcGwqIHByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMsIEpT
Q2VsbComIHNwZWNpZmljVmFsdWUpOwogICAgICAgICBzaXplX3QgZ2V0KGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMsIEpTQ2VsbComIHNwZWNpZmlj
VmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVCghcHJvcGVydHlOYW1lLmlzTnVs
bCgpKTsKQEAgLTEzMyw3ICsxMzMsNyBAQAogICAgICAgICAKICAgICAgICAgYm9vbCBpc0VtcHR5
KCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0eVRhYmxlID8gbV9wcm9wZXJ0eVRhYmxlLT5pc0Vt
cHR5KCkgOiBtX29mZnNldCA9PSBub09mZnNldDsgfQogCi0gICAgICAgIHZvaWQgZGVzcGVjaWZ5
RGljdGlvbmFyeUZ1bmN0aW9uKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CisgICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZGVzcGVjaWZ5RGljdGlvbmFyeUZ1bmN0aW9uKGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIHZvaWQgZGlzYWJsZVNwZWNp
ZmljRnVuY3Rpb25UcmFja2luZygpIHsgbV9zcGVjaWZpY0Z1bmN0aW9uVGhyYXNoQ291bnQgPSBt
YXhTcGVjaWZpY0Z1bmN0aW9uVGhyYXNoQ291bnQ7IH0KIAogICAgICAgICB2b2lkIHNldEVudW1l
cmF0aW9uQ2FjaGUoSlNHbG9iYWxEYXRhJiwgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciogZW51bWVy
YXRpb25DYWNoZSk7IC8vIERlZmluZWQgaW4gSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oLgpAQCAt
MTYxLDcgKzE2MSw3IEBACiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIFN0cnVj
dHVyZShKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8mLCB1bnNpZ25lZCBhbm9ueW1v
dXNTbG90Q291bnQsIGNvbnN0IENsYXNzSW5mbyopOworICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSBTdHJ1Y3R1cmUoSlNWYWx1ZSBwcm90b3R5cGUsIGNvbnN0IFR5cGVJbmZvJiwgdW5zaWduZWQg
YW5vbnltb3VzU2xvdENvdW50LCBjb25zdCBDbGFzc0luZm8qKTsKICAgICAgICAgU3RydWN0dXJl
KGNvbnN0IFN0cnVjdHVyZSopOwogCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVy
ZT4gY3JlYXRlKGNvbnN0IFN0cnVjdHVyZSogc3RydWN0dXJlKQpAQCAtMTg2LDcgKzE4Niw3IEBA
CiAgICAgICAgIHZvaWQgZGVzcGVjaWZ5QWxsRnVuY3Rpb25zKCk7CiAKICAgICAgICAgUHJvcGVy
dHlUYWJsZSogY29weVByb3BlcnR5VGFibGUoKTsKLSAgICAgICAgdm9pZCBtYXRlcmlhbGl6ZVBy
b3BlcnR5TWFwKCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgbWF0ZXJpYWxpemVQ
cm9wZXJ0eU1hcCgpOwogICAgICAgICB2b2lkIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vz
c2FyeSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9wcm9wZXJ0eVRhYmxlICYmIG1f
cHJldmlvdXMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJ
KHJldmlzaW9uIDgyMDEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuaAkod29ya2luZyBjb3B5KQpAQCAtNzMsMTEgKzczLDExIEBACiAgICAgdHlwZWRlZiBXcml0
ZUJhcnJpZXJCYXNlPFVua25vd24+KiBQcm9wZXJ0eVN0b3JhZ2U7CiAgICAgdHlwZWRlZiBjb25z
dCBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBDb25zdFByb3BlcnR5U3RvcmFnZTsKIAotICAg
IGNsYXNzIEpTT2JqZWN0IDogcHVibGljIEpTQ2VsbCB7CisgICAgY2xhc3MgSlNfRVhQT1JUREFU
QSBKU09iamVjdCA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICBmcmllbmQgY2xhc3MgQmF0Y2hl
ZFRyYW5zaXRpb25PcHRpbWl6ZXI7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAgICAg
IGZyaWVuZCBjbGFzcyBKU0NlbGw7Ci0gICAgICAgIGZyaWVuZCB2b2lkIHNldFVwU3RhdGljRnVu
Y3Rpb25TbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSwgSlNPYmpl
Y3QqIHRoaXNPYmosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
JiBzbG90KTsKKyAgICAgICAgZnJpZW5kIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0VXBTdGF0
aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSGFzaEVudHJ5KiwgSlNPYmplY3QqIHRo
aXNPYmosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAK
ICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBtYXJrQ2hpbGRyZW4oTWFya1N0YWNr
Jik7CkBAIC0yNDcsNyArMjQ3LDcgQEAKIAogICAgICAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9m
SW5saW5lU3RvcmFnZSgpOwogICAgICAgICAKLSAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEg
Y29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKKyAgICAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBz
X2luZm87CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVj
dHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBw
cm90b3R5cGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmpl
Y3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBP
YmplY3QuaAkocmV2aXNpb24gODIwMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogICAgIHB1
YmxpYzoKICAgICAgICAgdHlwZWRlZiBKU09iamVjdFdpdGhHbG9iYWxPYmplY3QgQmFzZTsKIAot
ICAgICAgICBSZWdFeHBPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm9uTnVs
bFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgTm9uTnVsbFBhc3NSZWZQdHI8UmVnRXhwPik7CisgICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZ0V4cE9iamVjdChKU0dsb2JhbE9iamVjdCosIE5vbk51
bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIE5vbk51bGxQYXNzUmVmUHRyPFJlZ0V4cD4pOwogICAg
ICAgICB2aXJ0dWFsIH5SZWdFeHBPYmplY3QoKTsKIAogICAgICAgICB2b2lkIHNldFJlZ0V4cChQ
YXNzUmVmUHRyPFJlZ0V4cD4gcikgeyBkLT5yZWdFeHAgPSByOyB9CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oCShyZXZpc2lvbiA4
MjAxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMu
aAkod29ya2luZyBjb3B5KQpAQCAtNDMsOSArNDMsOSBAQAogICAgIGNsYXNzIE5vZGU7CiAgICAg
c3RydWN0IEluc3RydWN0aW9uOwogICAgIAotICAgIEpTT2JqZWN0KiBjcmVhdGVJbnRlcnJ1cHRl
ZEV4ZWN1dGlvbkV4Y2VwdGlvbihKU0dsb2JhbERhdGEqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSBKU09iamVjdCogY3JlYXRlSW50ZXJydXB0ZWRFeGVjdXRpb25FeGNlcHRpb24oSlNHbG9iYWxE
YXRhKik7CiAgICAgSlNPYmplY3QqIGNyZWF0ZVRlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24o
SlNHbG9iYWxEYXRhKik7Ci0gICAgSlNPYmplY3QqIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihF
eGVjU3RhdGUqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogY3JlYXRlU3RhY2tP
dmVyZmxvd0Vycm9yKEV4ZWNTdGF0ZSopOwogICAgIEpTT2JqZWN0KiBjcmVhdGVTdGFja092ZXJm
bG93RXJyb3IoSlNHbG9iYWxPYmplY3QqKTsKICAgICBKU09iamVjdCogY3JlYXRlT3V0T2ZNZW1v
cnlFcnJvcihKU0dsb2JhbE9iamVjdCopOwogICAgIEpTT2JqZWN0KiBjcmVhdGVVbmRlZmluZWRW
YXJpYWJsZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgJKHJldmlzaW9uIDgyMDEwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC00NSwxMiArNDUsMTIgQEAKICAgICAgICAgdHlwZWRlZiBKU09iamVjdFdpdGhHbG9i
YWxPYmplY3QgQmFzZTsKIAogICAgIHB1YmxpYzoKLSAgICAgICAgSlNGdW5jdGlvbihFeGVjU3Rh
dGUqLCBKU0dsb2JhbE9iamVjdCosIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIGludCBs
ZW5ndGgsIGNvbnN0IElkZW50aWZpZXImLCBOYXRpdmVGdW5jdGlvbik7CisgICAgICAgIEpTX0VY
UE9SVF9QUklWQVRFIEpTRnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBOb25O
dWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBpbnQgbGVuZ3RoLCBjb25zdCBJZGVudGlmaWVyJiwg
TmF0aXZlRnVuY3Rpb24pOwogICAgICAgICBKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFs
T2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgaW50IGxlbmd0aCwgY29uc3Qg
SWRlbnRpZmllciYsIE5hdGl2ZUV4ZWN1dGFibGUqKTsKICAgICAgICAgSlNGdW5jdGlvbihFeGVj
U3RhdGUqLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBTY29wZUNoYWluTm9kZSopOwogICAgICAgICB2
aXJ0dWFsIH5KU0Z1bmN0aW9uKCk7CiAKLSAgICAgICAgY29uc3QgVVN0cmluZyYgbmFtZShFeGVj
U3RhdGUqKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgY29uc3QgVVN0cmluZyYgbmFtZShF
eGVjU3RhdGUqKTsKICAgICAgICAgY29uc3QgVVN0cmluZyBkaXNwbGF5TmFtZShFeGVjU3RhdGUq
KTsKICAgICAgICAgY29uc3QgVVN0cmluZyBjYWxjdWxhdGVkRGlzcGxheU5hbWUoRXhlY1N0YXRl
Kik7CiAKQEAgLTg5LDcgKzg5LDcgQEAKICAgICBwcml2YXRlOgogICAgICAgICBKU0Z1bmN0aW9u
KE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIFZQdHJIYWNrRXhlY3V0YWJsZSopOwogCi0g
ICAgICAgIGJvb2wgaXNIb3N0RnVuY3Rpb25Ob25JbmxpbmUoKSBjb25zdDsKKyAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgYm9vbCBpc0hvc3RGdW5jdGlvbk5vbklubGluZSgpIGNvbnN0OwogCiAg
ICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0
eURlc2NyaXB0b3ImKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVj
dFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09iamVjdFByb3RvdHlwZS5oCShyZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICsz
Niw3IEBACiAgICAgICAgIGJvb2wgbV9oYXNOb1Byb3BlcnRpZXNXaXRoVUludDMyTmFtZXM7CiAg
ICAgfTsKIAotICAgIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5j
VG9TdHJpbmcoRXhlY1N0YXRlKik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqKTsKIAog
fSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FyZ0xpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cmdMaXN0LmgJKHJldmlzaW9uIDgyMDEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJnTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQsNyArMTQ0LDcgQEAKICAgICAgICAg
c3RhdGljIHZvaWQgbWFya0xpc3RzKEhlYXBSb290TWFya2VyJiwgTGlzdFNldCYpOwogCiAgICAg
cHJpdmF0ZToKLSAgICAgICAgdm9pZCBzbG93QXBwZW5kKEpTVmFsdWUpOworICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSB2b2lkIHNsb3dBcHBlbmQoSlNWYWx1ZSk7CiAgICAgICAgIAogICAgICAg
ICBSZWdpc3RlciogbV9idWZmZXI7CiAgICAgICAgIHNpemVfdCBtX3NpemU7CkBAIC0yMzQsNyAr
MjM0LDcgQEAKICAgICAgICAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBt
X2FyZ3M7IH0KICAgICAgICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9h
cmdzICsgbV9hcmdDb3VudDsgfQogCi0gICAgICAgIHZvaWQgZ2V0U2xpY2UoaW50IHN0YXJ0SW5k
ZXgsIEFyZ0xpc3QmIHJlc3VsdCkgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZv
aWQgZ2V0U2xpY2UoaW50IHN0YXJ0SW5kZXgsIEFyZ0xpc3QmIHJlc3VsdCkgY29uc3Q7CiAgICAg
cHJpdmF0ZToKICAgICAgICAgSlNWYWx1ZSogbV9hcmdzOwogICAgICAgICBzaXplX3QgbV9hcmdD
b3VudDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgJKHJldmlz
aW9uIDgyMDEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCSh3
b3JraW5nIGNvcHkpCkBAIC01Nyw3ICs1Nyw4IEBACiAKICAgICBlbnVtIEFycmF5Q3JlYXRpb25N
b2RlIHsgQ3JlYXRlQ29tcGFjdCwgQ3JlYXRlSW5pdGlhbGl6ZWQgfTsKIAotICAgIGNsYXNzIEpT
QXJyYXkgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CisgICAgY2xhc3MgSlNfRVhQT1JUREFU
QSBKU0FycmF5IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworICAgICAgICBmcmllbmQgY2xh
c3MgSklUOwogICAgICAgICBmcmllbmQgY2xhc3MgV2Fsa2VyOwogCiAgICAgcHVibGljOgpAQCAt
NzQsNyArNzUsNyBAQAogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsK
ICAgICAgICAgdmlydHVhbCB2b2lkIHB1dChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUpOyAvLyBGSVhNRTogTWFrZSBwcm90ZWN0ZWQgYW5kIGFkZCBzZXRJdGVtLgog
Ci0gICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNzSW5mbyBzX2luZm87Cisg
ICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogICAgICAgICAKICAgICAgICAg
dW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9zdG9yYWdlLT5tX2xlbmd0aDsgfQog
ICAgICAgICB2b2lkIHNldExlbmd0aCh1bnNpZ25lZCk7IC8vIE9LIHRvIHVzZSBvbiBuZXcgYXJy
YXlzLCBidXQgbm90IGlmIGl0IG1pZ2h0IGJlIGEgUmVnRXhwTWF0Y2hBcnJheS4KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgJKHJl
dmlzaW9uIDgyMDEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxG
dW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw5ICszMSw5IEBACiAKICAgICBjbGFzcyBG
dW5jdGlvblByb3RvdHlwZTsKIAotICAgIGNsYXNzIEludGVybmFsRnVuY3Rpb24gOiBwdWJsaWMg
SlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0IHsKKyAgICBjbGFzcyBKU19FWFBPUlREQVRBIEludGVy
bmFsRnVuY3Rpb24gOiBwdWJsaWMgSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0IHsKICAgICBwdWJs
aWM6Ci0gICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNzSW5mbyBzX2luZm87
CisgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCiAgICAgICAgIGNvbnN0
IFVTdHJpbmcmIG5hbWUoRXhlY1N0YXRlKik7CiAgICAgICAgIGNvbnN0IFVTdHJpbmcgZGlzcGxh
eU5hbWUoRXhlY1N0YXRlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
ZGVudGlmaWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SWRlbnRpZmllci5oCShyZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0lkZW50aWZpZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsMTUgKzUzLDE1IEBACiAg
ICAgICAgIAogICAgICAgICBDU3RyaW5nIGFzY2lpKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcu
YXNjaWkoKTsgfQogICAgICAgICAKLSAgICAgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbShFeGVj
U3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHkpOwotICAgICAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9t
KEV4ZWNTdGF0ZSogZXhlYywgaW50IHkpOwotICAgICAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9t
KEV4ZWNTdGF0ZSogZXhlYywgZG91YmxlIHkpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgSWRlbnRpZmllciBmcm9tKEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHkpOworICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSWRlbnRpZmllciBmcm9tKEV4ZWNTdGF0ZSosIGludCB5
KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIElkZW50aWZpZXIgZnJvbShFeGVj
U3RhdGUqLCBkb3VibGUgeSk7CiAgICAgICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb20oSlNHbG9i
YWxEYXRhKiwgdW5zaWduZWQgeSk7CiAgICAgICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb20oSlNH
bG9iYWxEYXRhKiwgaW50IHkpOwogICAgICAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9tKEpTR2xv
YmFsRGF0YSosIGRvdWJsZSB5KTsKIAotICAgICAgICBzdGF0aWMgdWludDMyX3QgdG9VSW50MzIo
Y29uc3QgVVN0cmluZyYsIGJvb2wmIG9rKTsKLSAgICAgICAgdWludDMyX3QgdG9VSW50MzIoYm9v
bCYgb2spIGNvbnN0IHsgcmV0dXJuIHRvVUludDMyKG1fc3RyaW5nLCBvayk7IH0KKyAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHVpbnQzMl90IHRvVUludDMyKGNvbnN0IFVTdHJpbmcm
LCBib29sJiBvayk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHVpbnQzMl90IHRvVUludDMy
KGJvb2wmIG9rKSBjb25zdCB7IHJldHVybiB0b1VJbnQzMihtX3N0cmluZywgb2spOyB9CiAgICAg
ICAgIHVuc2lnbmVkIHRvQXJyYXlJbmRleChib29sJiBvaykgY29uc3Q7CiAKICAgICAgICAgYm9v
bCBpc051bGwoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5pc051bGwoKTsgfQpAQCAtNzMsMTIg
KzczLDEyIEBACiAgICAgICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgSWRlbnRpZmll
ciYsIGNvbnN0IGNoYXIqKTsKICAgICAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJ
ZGVudGlmaWVyJiwgY29uc3QgY2hhciopOwogICAgIAotICAgICAgICBzdGF0aWMgYm9vbCBlcXVh
bChjb25zdCBTdHJpbmdJbXBsKiwgY29uc3QgY2hhciopOwotICAgICAgICBzdGF0aWMgYm9vbCBl
cXVhbChjb25zdCBTdHJpbmdJbXBsKiwgY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOwot
ICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBTdHJpbmdJbXBsKiBhLCBjb25zdCBTdHJp
bmdJbXBsKiBiKSB7IHJldHVybiA6OmVxdWFsKGEsIGIpOyB9CisgICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqLCBjb25zdCBjaGFyKik7
CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFN0cmlu
Z0ltcGwqLCBjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqIGEsIGNvbnN0IFN0
cmluZ0ltcGwqIGIpIHsgcmV0dXJuIDo6ZXF1YWwoYSwgYik7IH0KIAotICAgICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGQoRXhlY1N0YXRlKiwgY29uc3QgY2hhciopOyAvLyBP
bmx5IHRvIGJlIHVzZWQgd2l0aCBzdHJpbmcgbGl0ZXJhbHMuCi0gICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFN0cmluZ0ltcGw+IGFkZChKU0dsb2JhbERhdGEqLCBjb25zdCBjaGFyKik7IC8vIE9u
bHkgdG8gYmUgdXNlZCB3aXRoIHN0cmluZyBsaXRlcmFscy4KKyAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRkKEV4ZWNTdGF0ZSosIGNvbnN0
IGNoYXIqKTsgLy8gT25seSB0byBiZSB1c2VkIHdpdGggc3RyaW5nIGxpdGVyYWxzLgorICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGQoSlNH
bG9iYWxEYXRhKiwgY29uc3QgY2hhciopOyAvLyBPbmx5IHRvIGJlIHVzZWQgd2l0aCBzdHJpbmcg
bGl0ZXJhbHMuCiAKICAgICBwcml2YXRlOgogICAgICAgICBVU3RyaW5nIG1fc3RyaW5nOwpAQCAt
MTA4LDEwICsxMDgsMTAgQEAKICAgICAgICAgICAgIHJldHVybiBhZGRTbG93Q2FzZShnbG9iYWxE
YXRhLCByKTsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0lt
cGw+IGFkZFNsb3dDYXNlKEV4ZWNTdGF0ZSosIFN0cmluZ0ltcGwqIHIpOwotICAgICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGRTbG93Q2FzZShKU0dsb2JhbERhdGEqLCBTdHJp
bmdJbXBsKiByKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8
U3RyaW5nSW1wbD4gYWRkU2xvd0Nhc2UoRXhlY1N0YXRlKiwgU3RyaW5nSW1wbCopOworICAgICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGRTbG93Q2FzZShKU0dsb2JhbERhdGEq
LCBTdHJpbmdJbXBsKik7CiAKLSAgICAgICAgc3RhdGljIHZvaWQgY2hlY2tDdXJyZW50SWRlbnRp
ZmllclRhYmxlKEV4ZWNTdGF0ZSopOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
dm9pZCBjaGVja0N1cnJlbnRJZGVudGlmaWVyVGFibGUoRXhlY1N0YXRlKik7CiAgICAgICAgIHN0
YXRpYyB2b2lkIGNoZWNrQ3VycmVudElkZW50aWZpZXJUYWJsZShKU0dsb2JhbERhdGEqKTsKICAg
ICB9OwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2Jq
ZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5n
T2JqZWN0LmgJKHJldmlzaW9uIDgyMDEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaW5nT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKIAogbmFt
ZXNwYWNlIEpTQyB7CiAKLSAgICBjbGFzcyBTdHJpbmdPYmplY3QgOiBwdWJsaWMgSlNXcmFwcGVy
T2JqZWN0IHsKKyAgICBjbGFzcyBKU19FWFBPUlREQVRBIFN0cmluZ09iamVjdCA6IHB1YmxpYyBK
U1dyYXBwZXJPYmplY3QgewogICAgIHB1YmxpYzoKICAgICAgICAgU3RyaW5nT2JqZWN0KEV4ZWNT
dGF0ZSosIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4pOwogICAgICAgICBTdHJpbmdPYmpl
Y3QoRXhlY1N0YXRlKiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgY29uc3QgVVN0cmlu
ZyYpOwpAQCAtNDEsNyArNDEsNyBAQAogICAgICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlUHJvcGVy
dHkoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKICAgICAgICAg
dmlydHVhbCB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
QXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSA9IEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMp
OwogCi0gICAgICAgIHN0YXRpYyBjb25zdCBKU19FWFBPUlREQVRBIENsYXNzSW5mbyBzX2luZm87
CisgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCiAgICAgICAgIEpTU3Ry
aW5nKiBpbnRlcm5hbFZhbHVlKCkgY29uc3QgeyByZXR1cm4gYXNTdHJpbmcoSlNXcmFwcGVyT2Jq
ZWN0OjppbnRlcm5hbFZhbHVlKCkpO30KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNCeXRlQXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0J5dGVBcnJheS5oCShyZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTc1LDggKzc1
LDggQEAKICAgICAgICAgICAgICAgICBzZXRJbmRleChpLCBieXRlVmFsdWUpOwogICAgICAgICB9
CiAKLSAgICAgICAgSlNCeXRlQXJyYXkoRXhlY1N0YXRlKiwgTm9uTnVsbFBhc3NSZWZQdHI8U3Ry
dWN0dXJlPiwgV1RGOjpCeXRlQXJyYXkqIHN0b3JhZ2UpOwotICAgICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmLCBKU1ZhbHVlIHBy
b3RvdHlwZSwgY29uc3QgSlNDOjpDbGFzc0luZm8qID0gJnNfZGVmYXVsdEluZm8pOworICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSBKU0J5dGVBcnJheShFeGVjU3RhdGUqLCBOb25OdWxsUGFzc1Jl
ZlB0cjxTdHJ1Y3R1cmU+LCBXVEY6OkJ5dGVBcnJheSogc3RvcmFnZSk7CisgICAgICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJl
KEpTR2xvYmFsRGF0YSYsIEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBKU0M6OkNsYXNzSW5mbyog
PSAmc19kZWZhdWx0SW5mbyk7CiAKICAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5
U2xvdChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBKU0M6OlByb3BlcnR5U2xvdCYpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90KEpTQzo6RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU0M6OlByb3Bl
cnR5U2xvdCYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlv
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRp
b24uaAkocmV2aXNpb24gODIwMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21wbGV0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDggKzU1LDggQEAKICAgICAgICAgSlNW
YWx1ZSBtX3ZhbHVlOwogICAgIH07CiAKLSAgICBDb21wbGV0aW9uIGNoZWNrU3ludGF4KEV4ZWNT
dGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmKTsKLSAgICBDb21wbGV0aW9uIGV2YWx1YXRlKEV4ZWNT
dGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKiwgY29uc3QgU291cmNlQ29kZSYsIEpTVmFsdWUgdGhpc1Zh
bHVlID0gSlNWYWx1ZSgpKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBDb21wbGV0aW9uIGNoZWNr
U3ludGF4KEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmKTsKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSBDb21wbGV0aW9uIGV2YWx1YXRlKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKiwgY29u
c3QgU291cmNlQ29kZSYsIEpTVmFsdWUgdGhpc1ZhbHVlID0gSlNWYWx1ZSgpKTsKIAogfSAvLyBu
YW1lc3BhY2UgSlNDCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFy
aWFibGVPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1ZhcmlhYmxlT2JqZWN0LmgJKHJldmlzaW9uIDgyMDEwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3
ICs0MCw3IEBACiAKICAgICBjbGFzcyBSZWdpc3RlcjsKIAotICAgIGNsYXNzIEpTVmFyaWFibGVP
YmplY3QgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CisgICAgY2xhc3MgSlNfRVhQT1JUX1BS
SVZBVEUgSlNWYXJpYWJsZU9iamVjdCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICAg
ICAgZnJpZW5kIGNsYXNzIEpJVDsKIAogICAgIHB1YmxpYzoKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0xvb2t1cC5oCShyZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDAsNyArMTQwLDcg
QEAKICAgICAgICAgICAgICAgICBjcmVhdGVUYWJsZSgmZXhlYy0+Z2xvYmFsRGF0YSgpKTsKICAg
ICAgICAgfQogCi0gICAgICAgIHZvaWQgZGVsZXRlVGFibGUoKSBjb25zdDsKKyAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgdm9pZCBkZWxldGVUYWJsZSgpIGNvbnN0OwogCiAgICAgICAgIC8vIEZp
bmQgYW4gZW50cnkgaW4gdGhlIHRhYmxlLCBhbmQgcmV0dXJuIHRoZSBlbnRyeS4KICAgICAgICAg
QUxXQVlTX0lOTElORSBjb25zdCBIYXNoRW50cnkqIGVudHJ5KEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikgY29uc3QKQEAgLTE3NSwxMCArMTc1
LDEwIEBACiAgICAgICAgIH0KIAogICAgICAgICAvLyBDb252ZXJ0IHRoZSBoYXNoIHRhYmxlIGtl
eXMgdG8gaWRlbnRpZmllcnMuCi0gICAgICAgIHZvaWQgY3JlYXRlVGFibGUoSlNHbG9iYWxEYXRh
KikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgY3JlYXRlVGFibGUoSlNH
bG9iYWxEYXRhKikgY29uc3Q7CiAgICAgfTsKIAotICAgIHZvaWQgc2V0VXBTdGF0aWNGdW5jdGlv
blNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSGFzaEVudHJ5KiwgSlNPYmplY3QqIHRoaXNPYmplY3Qs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChFeGVjU3RhdGUqLCBj
b25zdCBIYXNoRW50cnkqLCBKU09iamVjdCogdGhpc09iamVjdCwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKIAogICAgIC8qKgogICAgICAqIFRoaXMgbWV0
aG9kIGRvZXMgaXQgYWxsIChsb29raW5nIGluIHRoZSBoYXNodGFibGUsIGNoZWNraW5nIGZvciBm
dW5jdGlvbgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHJldmlz
aW9uIDgyMDEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHdv
cmtpbmcgY29weSkKQEAgLTY4LDggKzY4LDggQEAKICAgICAgICAgZnJpZW5kIGNsYXNzIFNjb3Bl
Q2hhaW5Ob2RlOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgZXhwbGljaXQgSlNDZWxsKFN0cnVj
dHVyZSopOwotICAgICAgICB2aXJ0dWFsIH5KU0NlbGwoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgZXhwbGljaXQgSlNDZWxsKFN0cnVjdHVyZSopOworICAgICAgICBKU19FWFBPUlRfUFJJ
VkFURSB2aXJ0dWFsIH5KU0NlbGwoKTsKIAogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFBh
c3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVEdW1teVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEpCkBAIC03OCw5ICs3OCw5IEBACiAgICAgICAgIH0KIAogICAgICAgICAvLyBRdWVy
eWluZyB0aGUgdHlwZS4KLSAgICAgICAgYm9vbCBpc1N0cmluZygpIGNvbnN0OwotICAgICAgICBi
b29sIGlzT2JqZWN0KCkgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBpc0dldHRlclNldHRl
cigpIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGlzU3RyaW5nKCkgY29u
c3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNPYmplY3QoKSBjb25zdDsKKyAg
ICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCBib29sIGlzR2V0dGVyU2V0dGVyKCkgY29u
c3Q7CiAgICAgICAgIGJvb2wgaW5oZXJpdHMoY29uc3QgQ2xhc3NJbmZvKikgY29uc3Q7CiAgICAg
ICAgIHZpcnR1YWwgYm9vbCBpc0FQSVZhbHVlV3JhcHBlcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1Byb3BlcnR5TmFtZUl0ZXJhdG9yKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KQEAgLTg4LDI1ICs4OCwyNSBAQAogICAgICAgICBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSgpIGNvbnN0OwogCiAgICAgICAgIC8vIEV4dHJhY3RpbmcgdGhlIHZhbHVlLgot
ICAgICAgICBib29sIGdldFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIFVTdHJpbmcmKSBjb25zdDsK
LSAgICAgICAgVVN0cmluZyBnZXRTdHJpbmcoRXhlY1N0YXRlKiBleGVjKSBjb25zdDsgLy8gbnVs
bCBzdHJpbmcgaWYgbm90IGEgc3RyaW5nCi0gICAgICAgIEpTT2JqZWN0KiBnZXRPYmplY3QoKTsg
Ly8gTlVMTCBpZiBub3QgYW4gb2JqZWN0Ci0gICAgICAgIGNvbnN0IEpTT2JqZWN0KiBnZXRPYmpl
Y3QoKSBjb25zdDsgLy8gTlVMTCBpZiBub3QgYW4gb2JqZWN0CisgICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIGJvb2wgZ2V0U3RyaW5nKEV4ZWNTdGF0ZSosIFVTdHJpbmcmKSBjb25zdDsKKyAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgVVN0cmluZyBnZXRTdHJpbmcoRXhlY1N0YXRlKikgY29uc3Q7
IC8vIG51bGwgc3RyaW5nIGlmIG5vdCBhIHN0cmluZworICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSBKU09iamVjdCogZ2V0T2JqZWN0KCk7IC8vIDAgaWYgbm90IGFuIG9iamVjdAorICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSBjb25zdCBKU09iamVjdCogZ2V0T2JqZWN0KCkgY29uc3Q7IC8vIDAg
aWYgbm90IGFuIG9iamVjdAogICAgICAgICAKLSAgICAgICAgdmlydHVhbCBDYWxsVHlwZSBnZXRD
YWxsRGF0YShDYWxsRGF0YSYpOwotICAgICAgICB2aXJ0dWFsIENvbnN0cnVjdFR5cGUgZ2V0Q29u
c3RydWN0RGF0YShDb25zdHJ1Y3REYXRhJik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZp
cnR1YWwgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoQ2FsbERhdGEmKTsKKyAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgdmlydHVhbCBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoQ29uc3RydWN0
RGF0YSYpOwogCiAgICAgICAgIC8vIEV4dHJhY3RpbmcgaW50ZWdlciB2YWx1ZXMuCiAgICAgICAg
IC8vIEZJWE1FOiByZW1vdmUgdGhlc2UgbWV0aG9kcywgY2FuIGNoZWNrIGlzTnVtYmVyQ2VsbCBp
biBKU1ZhbHVlICYmIHRoZW4gY2FsbCBhc051bWJlckNlbGw6OiouCi0gICAgICAgIHZpcnR1YWwg
Ym9vbCBnZXRVSW50MzIodWludDMyX3QmKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgdmlydHVhbCBib29sIGdldFVJbnQzMih1aW50MzJfdCYpIGNvbnN0OwogCiAgICAgICAgIC8v
IEJhc2ljIGNvbnZlcnNpb25zLgotICAgICAgICB2aXJ0dWFsIEpTVmFsdWUgdG9QcmltaXRpdmUo
RXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkgY29uc3Q7Ci0gICAgICAgIHZpcnR1
YWwgYm9vbCBnZXRQcmltaXRpdmVOdW1iZXIoRXhlY1N0YXRlKiwgZG91YmxlJiBudW1iZXIsIEpT
VmFsdWUmKTsKLSAgICAgICAgdmlydHVhbCBib29sIHRvQm9vbGVhbihFeGVjU3RhdGUqKSBjb25z
dDsKLSAgICAgICAgdmlydHVhbCBkb3VibGUgdG9OdW1iZXIoRXhlY1N0YXRlKikgY29uc3Q7Ci0g
ICAgICAgIHZpcnR1YWwgVVN0cmluZyB0b1N0cmluZyhFeGVjU3RhdGUqKSBjb25zdDsKLSAgICAg
ICAgdmlydHVhbCBKU09iamVjdCogdG9PYmplY3QoRXhlY1N0YXRlKikgY29uc3Q7CisgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgSlNWYWx1ZSB0b1ByaW1pdGl2ZShFeGVjU3RhdGUq
LCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgdmlydHVhbCBib29sIGdldFByaW1pdGl2ZU51bWJlcihFeGVjU3RhdGUqLCBkb3VibGUmIG51
bWJlciwgSlNWYWx1ZSYpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIGJvb2wg
dG9Cb29sZWFuKEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2
aXJ0dWFsIGRvdWJsZSB0b051bWJlcihFeGVjU3RhdGUqKSBjb25zdDsKKyAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgdmlydHVhbCBVU3RyaW5nIHRvU3RyaW5nKEV4ZWNTdGF0ZSopIGNvbnN0Owor
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIEpTT2JqZWN0KiB0b09iamVjdChFeGVj
U3RhdGUqKSBjb25zdDsKIAogICAgICAgICAvLyBHYXJiYWdlIGNvbGxlY3Rpb24uCiAgICAgICAg
IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIEV4ZWNTdGF0ZSopOwpAQCAtMTE5LDE2ICsxMTks
MTYgQEAKICNlbmRpZgogCiAgICAgICAgIC8vIE9iamVjdCBvcGVyYXRpb25zLCB3aXRoIHRoZSB0
b09iamVjdCBvcGVyYXRpb24gaW5jbHVkZWQuCi0gICAgICAgIGNvbnN0IENsYXNzSW5mbyogY2xh
c3NJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9zdHJ1Y3R1cmUtPmNsYXNzSW5mbygpOyB9Ci0gICAg
ICAgIHZpcnR1YWwgdm9pZCBwdXQoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgdmlydHVhbCB2b2lk
IHB1dChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUpOwotICAgICAg
ICB2aXJ0dWFsIGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lKTsKLSAgICAgICAgdmlydHVhbCBib29sIGRlbGV0ZVByb3BlcnR5KEV4
ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9zdHJ1Y3R1
cmUtPmNsYXNzSW5mbygpOyB9CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgdm9p
ZCBwdXQoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCB2
b2lkIHB1dChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUpOworICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0
YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgdmlydHVhbCBib29sIGRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIHVuc2lnbmVk
IHByb3BlcnR5TmFtZSk7CiAKLSAgICAgICAgdmlydHVhbCBKU09iamVjdCogdG9UaGlzT2JqZWN0
KEV4ZWNTdGF0ZSopIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIEpTVmFsdWUgZ2V0SlNOdW1iZXIo
KTsKLSAgICAgICAgdm9pZCogdnB0cigpIHsgcmV0dXJuICpyZWludGVycHJldF9jYXN0PHZvaWQq
Kj4odGhpcyk7IH0KLSAgICAgICAgdm9pZCBzZXRWUHRyKHZvaWQqIHZwdHIpIHsgKnJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCoqPih0aGlzKSA9IHZwdHI7IH0KKyAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgdmlydHVhbCBKU09iamVjdCogdG9UaGlzT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0OworICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIEpTVmFsdWUgZ2V0SlNOdW1iZXIoKTsKKyAg
ICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCogdnB0cigpIHsgcmV0dXJuICpyZWludGVycHJl
dF9jYXN0PHZvaWQqKj4odGhpcyk7IH0KKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBz
ZXRWUHRyKHZvaWQqIHZwdHIpIHsgKnJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPih0aGlzKSA9IHZw
dHI7IH0KIAogICAgICAgICAvLyBGSVhNRTogUmVuYW1lIGdldE93blByb3BlcnR5U2xvdCB0byB2
aXJ0dWFsR2V0T3duUHJvcGVydHlTbG90LCBhbmQKICAgICAgICAgLy8gZmFzdEdldE93blByb3Bl
cnR5U2xvdCB0byBnZXRPd25Qcm9wZXJ0eVNsb3QuIENhbGxlcnMgc2hvdWxkIGFsd2F5cwpAQCAt
MTUxLDggKzE1MSw4IEBACiAKICAgICBwcml2YXRlOgogICAgICAgICAvLyBCYXNlIGltcGxlbWVu
dGF0aW9uOyBmb3Igbm9uLW9iamVjdCBjbGFzc2VzIGltcGxlbWVudHMgZ2V0UHJvcGVydHlTbG90
LgotICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAgIHZp
cnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVh
bCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2
aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIAogICAgICAgICBTdHJ1Y3R1cmUqIG1f
c3RydWN0dXJlOwogICAgIH07CkBAIC0xNzEsNyArMTcxLDcgQEAKICAgICAgICAgcmV0dXJuIG1f
c3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBPYmplY3RUeXBlOwogICAgIH0KIAotICAg
IGlubGluZSBib29sIEpTQ2VsbDo6aXNTdHJpbmcoKSBjb25zdAorICAgIEpTX0VYUE9SVF9QUklW
QVRFIGlubGluZSBib29sIEpTQ2VsbDo6aXNTdHJpbmcoKSBjb25zdAogICAgIHsKICAgICAgICAg
cmV0dXJuIG1fc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBTdHJpbmdUeXBlOwogICAg
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCShyZXZpc2lvbiA4
MjAxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCSh3b3JraW5n
IGNvcHkpCkBAIC01Niw3ICs1Niw3IEBACiAgICAgY2xhc3MgSlNMb2NrIHsKICAgICAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoSlNMb2NrKTsKICAgICBwdWJsaWM6Ci0gICAgICAgIEpTTG9jayhF
eGVjU3RhdGUqKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNMb2NrKEV4ZWNTdGF0ZSop
OwogICAgICAgICBKU0xvY2soSlNHbG9iYWxEYXRhKik7CiAKICAgICAgICAgSlNMb2NrKEpTTG9j
a0JlaGF2aW9yIGxvY2tCZWhhdmlvcikKQEAgLTgwLDEzICs4MCwxMyBAQAogICAgICAgICAgICAg
dW5sb2NrKG1fbG9ja0JlaGF2aW9yKTsgCiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIHN0
YXRpYyB2b2lkIGxvY2soSlNMb2NrQmVoYXZpb3IpOwotICAgICAgICBzdGF0aWMgdm9pZCB1bmxv
Y2soSlNMb2NrQmVoYXZpb3IpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9p
ZCBsb2NrKEpTTG9ja0JlaGF2aW9yKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IHZvaWQgdW5sb2NrKEpTTG9ja0JlaGF2aW9yKTsKICAgICAgICAgc3RhdGljIHZvaWQgbG9jayhF
eGVjU3RhdGUqKTsKICAgICAgICAgc3RhdGljIHZvaWQgdW5sb2NrKEV4ZWNTdGF0ZSopOwogCi0g
ICAgICAgIHN0YXRpYyBpbnRwdHJfdCBsb2NrQ291bnQoKTsKLSAgICAgICAgc3RhdGljIGJvb2wg
Y3VycmVudFRocmVhZElzSG9sZGluZ0xvY2soKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIGludHB0cl90IGxvY2tDb3VudCgpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgYm9vbCBjdXJyZW50VGhyZWFkSXNIb2xkaW5nTG9jaygpOwogCiAgICAgICAgIEpTTG9j
a0JlaGF2aW9yIG1fbG9ja0JlaGF2aW9yOwogCkBAIC05NCw4ICs5NCw4IEBACiAgICAgICAgICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShEcm9wQWxsTG9ja3MpOwogICAgICAgICBwdWJsaWM6CiAg
ICAgICAgICAgICBEcm9wQWxsTG9ja3MoRXhlY1N0YXRlKiBleGVjKTsKLSAgICAgICAgICAgIERy
b3BBbGxMb2NrcyhKU0xvY2tCZWhhdmlvcik7Ci0gICAgICAgICAgICB+RHJvcEFsbExvY2tzKCk7
CisgICAgICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBEcm9wQWxsTG9ja3MoSlNMb2NrQmVoYXZp
b3IpOworICAgICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgfkRyb3BBbGxMb2NrcygpOwogICAg
ICAgICAgICAgCiAgICAgICAgIHByaXZhdGU6CiAgICAgICAgICAgICBpbnRwdHJfdCBtX2xvY2tD
b3VudDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xv
dC5oCShyZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3BlcnR5U2xvdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMjAsNyArMjIwLDcgQEAKICAgICAgICAg
ICAgIHJldHVybiBtX2dldFZhbHVlOwogICAgICAgICB9CiAgICAgcHJpdmF0ZToKLSAgICAgICAg
SlNWYWx1ZSBmdW5jdGlvbkdldHRlcihFeGVjU3RhdGUqKSBjb25zdDsKKyAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgSlNWYWx1ZSBmdW5jdGlvbkdldHRlcihFeGVjU3RhdGUqKSBjb25zdDsKIAog
ICAgICAgICBHZXRWYWx1ZUZ1bmMgbV9nZXRWYWx1ZTsKICAgICAgICAgR2V0SW5kZXhWYWx1ZUZ1
bmMgbV9nZXRJbmRleFZhbHVlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RnVuY3Rpb25Db25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaAkocmV2aXNpb24gODIwMTApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM2LDcgKzM2LDcgQEAKICAgICAgICAgdmlydHVhbCBDYWxsVHlwZSBnZXRDYWxs
RGF0YShDYWxsRGF0YSYpOwogICAgIH07CiAKLSAgICBKU09iamVjdCogY29uc3RydWN0RnVuY3Rp
b24oRXhlY1N0YXRlKiwgY29uc3QgQXJnTGlzdCYsIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9u
TmFtZSwgY29uc3QgVVN0cmluZyYgc291cmNlVVJMLCBpbnQgbGluZU51bWJlcik7CisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSosIGNv
bnN0IEFyZ0xpc3QmLCBjb25zdCBJZGVudGlmaWVyJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFVTdHJp
bmcmIHNvdXJjZVVSTCwgaW50IGxpbmVOdW1iZXIpOwogICAgIEpTT2JqZWN0KiBjb25zdHJ1Y3RG
dW5jdGlvbihFeGVjU3RhdGUqLCBjb25zdCBBcmdMaXN0Jik7CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmgJ
KHJldmlzaW9uIDgyMDEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxT
dHJpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDggKzczLDggQEAKICAgICBwcml2YXRlOgog
ICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc2luZ2xlQ2hhcmFjdGVyU3RyaW5nQ291bnQg
PSBtYXhTaW5nbGVDaGFyYWN0ZXJTdHJpbmcgKyAxOwogCi0gICAgICAgIHZvaWQgY3JlYXRlRW1w
dHlTdHJpbmcoSlNHbG9iYWxEYXRhKik7Ci0gICAgICAgIHZvaWQgY3JlYXRlU2luZ2xlQ2hhcmFj
dGVyU3RyaW5nKEpTR2xvYmFsRGF0YSosIHVuc2lnbmVkIGNoYXIpOworICAgICAgICBKU19FWFBP
UlRfUFJJVkFURSB2b2lkIGNyZWF0ZUVtcHR5U3RyaW5nKEpTR2xvYmFsRGF0YSopOworICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGNyZWF0ZVNpbmdsZUNoYXJhY3RlclN0cmluZyhKU0ds
b2JhbERhdGEqLCB1bnNpZ25lZCBjaGFyKTsKIAogICAgICAgICBKU1N0cmluZyogbV9lbXB0eVN0
cmluZzsKICAgICAgICAgSlNTdHJpbmcqIG1fc2luZ2xlQ2hhcmFjdGVyU3RyaW5nc1tzaW5nbGVD
aGFyYWN0ZXJTdHJpbmdDb3VudF07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm9wZXJ0eU5hbWVBcnJheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmgJKHJldmlzaW9uIDgyMDEwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuaAkod29ya2luZyBjb3B5
KQpAQCAtNjgsOCArNjgsOCBAQAogCiAgICAgICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSgp
IHsgcmV0dXJuIG1fZ2xvYmFsRGF0YTsgfQogCi0gICAgICAgIHZvaWQgYWRkKGNvbnN0IElkZW50
aWZpZXImIGlkZW50aWZpZXIpIHsgYWRkKGlkZW50aWZpZXIuaW1wbCgpKTsgfQotICAgICAgICB2
b2lkIGFkZChTdHJpbmdJbXBsKik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgYWRk
KGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpIHsgYWRkKGlkZW50aWZpZXIuaW1wbCgpKTsg
fQorICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGFkZChTdHJpbmdJbXBsKik7CiAgICAg
ICAgIHZvaWQgYWRkS25vd25VbmlxdWUoU3RyaW5nSW1wbCogaWRlbnRpZmllcikgeyBtX2RhdGEt
PnByb3BlcnR5TmFtZVZlY3RvcigpLmFwcGVuZChJZGVudGlmaWVyKG1fZ2xvYmFsRGF0YSwgaWRl
bnRpZmllcikpOyB9CiAKICAgICAgICAgSWRlbnRpZmllciYgb3BlcmF0b3JbXSh1bnNpZ25lZCBp
KSB7IHJldHVybiBtX2RhdGEtPnByb3BlcnR5TmFtZVZlY3RvcigpW2ldOyB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgJKHJldmlzaW9uIDgyMDEwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTIg
KzQ1LDEyIEBACiAgICAgSlNPYmplY3QqIGNyZWF0ZVR5cGVFcnJvcihKU0dsb2JhbE9iamVjdCos
IGNvbnN0IFVTdHJpbmcmKTsKICAgICBKU09iamVjdCogY3JlYXRlVVJJRXJyb3IoSlNHbG9iYWxP
YmplY3QqLCBjb25zdCBVU3RyaW5nJik7CiAgICAgLy8gRXhlY1N0YXRlIHdyYXBwZXJzLgotICAg
IEpTT2JqZWN0KiBjcmVhdGVFcnJvcihFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJik7CisgICAg
SlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIGNyZWF0ZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0
IFVTdHJpbmcmKTsKICAgICBKU09iamVjdCogY3JlYXRlRXZhbEVycm9yKEV4ZWNTdGF0ZSosIGNv
bnN0IFVTdHJpbmcmKTsKLSAgICBKU09iamVjdCogY3JlYXRlUmFuZ2VFcnJvcihFeGVjU3RhdGUq
LCBjb25zdCBVU3RyaW5nJik7Ci0gICAgSlNPYmplY3QqIGNyZWF0ZVJlZmVyZW5jZUVycm9yKEV4
ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmKTsKLSAgICBKU09iamVjdCogY3JlYXRlU3ludGF4RXJy
b3IoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYpOwotICAgIEpTT2JqZWN0KiBjcmVhdGVUeXBl
RXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYpOworICAgIEpTX0VYUE9SVF9QUklWQVRF
IEpTT2JqZWN0KiBjcmVhdGVSYW5nZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmKTsK
KyAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogY3JlYXRlUmVmZXJlbmNlRXJyb3IoRXhl
Y1N0YXRlKiwgY29uc3QgVVN0cmluZyYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0
KiBjcmVhdGVTeW50YXhFcnJvcihFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJik7CisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIGNyZWF0ZVR5cGVFcnJvcihFeGVjU3RhdGUqLCBjb25z
dCBVU3RyaW5nJik7CiAgICAgSlNPYmplY3QqIGNyZWF0ZVVSSUVycm9yKEV4ZWNTdGF0ZSosIGNv
bnN0IFVTdHJpbmcmKTsKIAogICAgIC8vIE1ldGhvZHMgdG8gYWRkIApAQCAtNjAsMTIgKzYwLDEy
IEBACiAgICAgSlNPYmplY3QqIGFkZEVycm9ySW5mbyhFeGVjU3RhdGUqLCBKU09iamVjdCogZXJy
b3IsIGludCBsaW5lLCBjb25zdCBTb3VyY2VDb2RlJik7CiAKICAgICAvLyBNZXRob2RzIHRvIHRo
cm93IEVycm9ycy4KLSAgICBKU1ZhbHVlIHRocm93RXJyb3IoRXhlY1N0YXRlKiwgSlNWYWx1ZSk7
Ci0gICAgSlNPYmplY3QqIHRocm93RXJyb3IoRXhlY1N0YXRlKiwgSlNPYmplY3QqKTsKKyAgICBK
U19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIHRocm93RXJyb3IoRXhlY1N0YXRlKiwgSlNWYWx1ZSk7
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93RXJyb3IoRXhlY1N0YXRlKiwg
SlNPYmplY3QqKTsKIAogICAgIC8vIENvbnZlbmllbmNlIHdyYXBwZXJzLCBjcmVhdGUgYW4gdGhy
b3cgYW4gZXhjZXB0aW9uIHdpdGggYSBkZWZhdWx0IG1lc3NhZ2UuCi0gICAgSlNPYmplY3QqIHRo
cm93VHlwZUVycm9yKEV4ZWNTdGF0ZSopOwotICAgIEpTT2JqZWN0KiB0aHJvd1N5bnRheEVycm9y
KEV4ZWNTdGF0ZSopOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd1R5cGVF
cnJvcihFeGVjU3RhdGUqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogdGhyb3dT
eW50YXhFcnJvcihFeGVjU3RhdGUqKTsKIAogICAgIC8vIENvbnZlbmllbmNlIHdyYXBwZXJzLCB3
cmFwIHJlc3VsdCBhcyBhbiBFbmNvZGVkSlNWYWx1ZS4KICAgICBpbmxpbmUgRW5jb2RlZEpTVmFs
dWUgdGhyb3dWTUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBlcnJvcikgeyByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRocm93RXJyb3IoZXhlYywgZXJyb3IpKTsgfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuaAkocmV2aXNpb24gODIwMTApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTMw
LDI0ICszMCwyNCBAQAogY2xhc3MgVVN0cmluZyB7CiBwdWJsaWM6CiAgICAgLy8gQ29uc3RydWN0
IGEgbnVsbCBzdHJpbmcsIGRpc3Rpbmd1aXNoYWJsZSBmcm9tIGFuIGVtcHR5IHN0cmluZy4KLSAg
ICBVU3RyaW5nKCkgeyB9CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgVVN0cmluZygpIHsgfQogCiAg
ICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdpdGggVVRGLTE2IGRhdGEuCi0gICAgVVN0cmluZyhj
b25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBKU19FWFBPUlRf
UFJJVkFURSBVU3RyaW5nKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgp
OwogCiAgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdpdGggVVRGLTE2IGRhdGEsIGZyb20gYSBu
dWxsLXRlcm1pbmF0ZWQgc291cmNlLgotICAgIFVTdHJpbmcoY29uc3QgVUNoYXIqKTsKKyAgICBK
U19FWFBPUlRfUFJJVkFURSBVU3RyaW5nKGNvbnN0IFVDaGFyKik7CiAKICAgICAvLyBDb25zdHJ1
Y3QgYSBzdHJpbmcgd2l0aCBsYXRpbjEgZGF0YS4KLSAgICBVU3RyaW5nKGNvbnN0IGNoYXIqIGNo
YXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgVVN0cmlu
Zyhjb25zdCBjaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpOwogCiAgICAgLy8gQ29u
c3RydWN0IGEgc3RyaW5nIHdpdGggbGF0aW4xIGRhdGEsIGZyb20gYSBudWxsLXRlcm1pbmF0ZWQg
c291cmNlLgotICAgIFVTdHJpbmcoY29uc3QgY2hhciogY2hhcmFjdGVycyk7CisgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgVVN0cmluZyhjb25zdCBjaGFyKiBjaGFyYWN0ZXJzKTsKIAogICAgIC8vIENv
bnN0cnVjdCBhIHN0cmluZyByZWZlcmVuY2luZyBhbiBleGlzdGluZyBTdHJpbmdJbXBsLgotICAg
IFVTdHJpbmcoU3RyaW5nSW1wbCogaW1wbCkgOiBtX2ltcGwoaW1wbCkgeyB9Ci0gICAgVVN0cmlu
ZyhQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGltcGwpIDogbV9pbXBsKGltcGwpIHsgfQotICAgIFVT
dHJpbmcoUmVmUHRyPFN0cmluZ0ltcGw+IGltcGwpIDogbV9pbXBsKGltcGwpIHsgfQorICAgIEpT
X0VYUE9SVF9QUklWQVRFIFVTdHJpbmcoU3RyaW5nSW1wbCogaW1wbCkgOiBtX2ltcGwoaW1wbCkg
eyB9CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgVVN0cmluZyhQYXNzUmVmUHRyPFN0cmluZ0ltcGw+
IGltcGwpIDogbV9pbXBsKGltcGwpIHsgfQorICAgIEpTX0VYUE9SVF9QUklWQVRFIFVTdHJpbmco
UmVmUHRyPFN0cmluZ0ltcGw+IGltcGwpIDogbV9pbXBsKGltcGwpIHsgfQogCiAgICAgLy8gSW5s
aW5lIHRoZSBkZXN0cnVjdG9yLgogICAgIEFMV0FZU19JTkxJTkUgflVTdHJpbmcoKSB7IH0KQEAg
LTc2LDkgKzc2LDkgQEAKICAgICAgICAgcmV0dXJuIG1faW1wbC0+Y2hhcmFjdGVycygpOwogICAg
IH0KIAotICAgIENTdHJpbmcgYXNjaWkoKSBjb25zdDsKLSAgICBDU3RyaW5nIGxhdGluMSgpIGNv
bnN0OwotICAgIENTdHJpbmcgdXRmOChib29sIHN0cmljdCA9IGZhbHNlKSBjb25zdDsKKyAgICBK
U19FWFBPUlRfUFJJVkFURSBDU3RyaW5nIGFzY2lpKCkgY29uc3Q7CisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgQ1N0cmluZyBsYXRpbjEoKSBjb25zdDsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBDU3Ry
aW5nIHV0ZjgoYm9vbCBzdHJpY3QgPSBmYWxzZSkgY29uc3Q7CiAKICAgICBVQ2hhciBvcGVyYXRv
cltdKHVuc2lnbmVkIGluZGV4KSBjb25zdAogICAgIHsKQEAgLTg3LDExICs4NywxMSBAQAogICAg
ICAgICByZXR1cm4gbV9pbXBsLT5jaGFyYWN0ZXJzKClbaW5kZXhdOwogICAgIH0KIAotICAgIHN0
YXRpYyBVU3RyaW5nIG51bWJlcihpbnQpOwotICAgIHN0YXRpYyBVU3RyaW5nIG51bWJlcih1bnNp
Z25lZCk7Ci0gICAgc3RhdGljIFVTdHJpbmcgbnVtYmVyKGxvbmcpOwotICAgIHN0YXRpYyBVU3Ry
aW5nIG51bWJlcihsb25nIGxvbmcpOwotICAgIHN0YXRpYyBVU3RyaW5nIG51bWJlcihkb3VibGUp
OworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBVU3RyaW5nIG51bWJlcihpbnQpOworICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBVU3RyaW5nIG51bWJlcih1bnNpZ25lZCk7CisgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFVTdHJpbmcgbnVtYmVyKGxvbmcpOworICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBVU3RyaW5nIG51bWJlcihsb25nIGxvbmcpOworICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBVU3RyaW5nIG51bWJlcihkb3VibGUpOwogCiAgICAgLy8gRmlu
ZCBhIHNpbmdsZSBjaGFyYWN0ZXIgb3Igc3RyaW5nLCBhbHNvIHdpdGggbWF0Y2ggZnVuY3Rpb24g
JiBsYXRpbjEgZm9ybXMuCiAgICAgc2l6ZV90IGZpbmQoVUNoYXIgYywgdW5zaWduZWQgc3RhcnQg
PSAwKSBjb25zdApAQCAtMTA3LDcgKzEwNyw3IEBACiAgICAgc2l6ZV90IHJldmVyc2VGaW5kKGNv
bnN0IFVTdHJpbmcmIHN0ciwgdW5zaWduZWQgc3RhcnQgPSBVSU5UX01BWCkgY29uc3QKICAgICAg
ICAgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5yZXZlcnNlRmluZChzdHIuaW1wbCgpLCBzdGFy
dCkgOiBub3RGb3VuZDsgfQogCi0gICAgVVN0cmluZyBzdWJzdHJpbmdTaGFyaW5nSW1wbCh1bnNp
Z25lZCBwb3MsIHVuc2lnbmVkIGxlbiA9IFVJTlRfTUFYKSBjb25zdDsKKyAgICBKU19FWFBPUlRf
UFJJVkFURSBVU3RyaW5nIHN1YnN0cmluZ1NoYXJpbmdJbXBsKHVuc2lnbmVkIHBvcywgdW5zaWdu
ZWQgbGVuID0gVUlOVF9NQVgpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIFJlZlB0cjxTdHJpbmdJ
bXBsPiBtX2ltcGw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5z
dGFuY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRl
SW5zdGFuY2UuaAkocmV2aXNpb24gODIwMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9EYXRlSW5zdGFuY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsOCArMzEsOCBAQAogCiAg
ICAgY2xhc3MgRGF0ZUluc3RhbmNlIDogcHVibGljIEpTV3JhcHBlck9iamVjdCB7CiAgICAgcHVi
bGljOgotICAgICAgICBEYXRlSW5zdGFuY2UoRXhlY1N0YXRlKiwgZG91YmxlKTsKLSAgICAgICAg
RGF0ZUluc3RhbmNlKEV4ZWNTdGF0ZSosIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIGRv
dWJsZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIERhdGVJbnN0YW5jZShFeGVjU3RhdGUq
LCBkb3VibGUpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBEYXRlSW5zdGFuY2UoRXhlY1N0
YXRlKiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgZG91YmxlKTsKICAgICAgICAgZXhw
bGljaXQgRGF0ZUluc3RhbmNlKEV4ZWNTdGF0ZSosIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVy
ZT4pOwogCiAgICAgICAgIGRvdWJsZSBpbnRlcm5hbE51bWJlcigpIGNvbnN0IHsgcmV0dXJuIGlu
dGVybmFsVmFsdWUoKS51bmNoZWNrZWRHZXROdW1iZXIoKTsgfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUm9wZUltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Sb3BlSW1wbC5oCShyZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JvcGVJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTgzLDcg
KzgzLDcgQEAKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBkZXN0cnVjdE5vblJlY3Vyc2l2ZSgp
OworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZGVzdHJ1Y3ROb25SZWN1cnNpdmUoKTsKICAg
ICB2b2lkIGRlcmVmRmliZXJzTm9uUmVjdXJzaXZlKFZlY3RvcjxSb3BlSW1wbCosIDMyPiYgd29y
a1F1ZXVlKTsKIAogICAgIGJvb2wgaGFzT25lUmVmKCkgeyByZXR1cm4gKG1fcmVmQ291bnRBbmRG
bGFncyAmIHNfcmVmQ291bnRNYXNrKSA9PSBzX3JlZkNvdW50SW5jcmVtZW50OyB9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAkocmV2aXNpb24g
ODIwMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAko
d29ya2luZyBjb3B5KQpAQCAtMTEzLDcgKzExMyw3IEBACiAgICAgICAgIC8vIHRoZSBvcmlnaW5h
bCBBUEkuCiAgICAgICAgIGVudW0gR2xvYmFsRGF0YVR5cGUgeyBEZWZhdWx0LCBBUElDb250ZXh0
R3JvdXAsIEFQSVNoYXJlZCB9OwogCi0gICAgICAgIHN0cnVjdCBDbGllbnREYXRhIHsKKyAgICAg
ICAgc3RydWN0IEpTX0VYUE9SVF9QUklWQVRFIENsaWVudERhdGEgewogICAgICAgICAgICAgdmly
dHVhbCB+Q2xpZW50RGF0YSgpID0gMDsKICAgICAgICAgfTsKIApAQCAtMTIyLDEwICsxMjIsMTAg
QEAKICAgICAgICAgc3RhdGljIGJvb2wgc2hhcmVkSW5zdGFuY2VFeGlzdHMoKTsKICAgICAgICAg
c3RhdGljIEpTR2xvYmFsRGF0YSYgc2hhcmVkSW5zdGFuY2UoKTsKIAotICAgICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxKU0dsb2JhbERhdGE+IGNyZWF0ZShUaHJlYWRTdGFja1R5cGUpOwotICAgICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxKU0dsb2JhbERhdGE+IGNyZWF0ZUxlYWtlZChUaHJlYWRTdGFj
a1R5cGUpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxKU0ds
b2JhbERhdGE+IGNyZWF0ZShUaHJlYWRTdGFja1R5cGUpOworICAgICAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgUGFzc1JlZlB0cjxKU0dsb2JhbERhdGE+IGNyZWF0ZUxlYWtlZChUaHJlYWRT
dGFja1R5cGUpOwogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxKU0dsb2JhbERhdGE+IGNyZWF0
ZUNvbnRleHRHcm91cChUaHJlYWRTdGFja1R5cGUpOwotICAgICAgICB+SlNHbG9iYWxEYXRhKCk7
CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIH5KU0dsb2JhbERhdGEoKTsKIAogI2lmIEVOQUJM
RShKU0NfTVVMVElQTEVfVEhSRUFEUykKICAgICAgICAgLy8gV2lsbCBzdGFydCB0cmFja2luZyB0
aHJlYWRzIHRoYXQgdXNlIHRoZSBoZWFwLCB3aGljaCBpcyByZXNvdXJjZS1oZWF2eS4KQEAgLTI0
OCw5ICsyNDgsOSBAQAogCiAgICAgICAgIHZvaWQgcmVzZXREYXRlQ2FjaGUoKTsKIAotICAgICAg
ICB2b2lkIHN0YXJ0U2FtcGxpbmcoKTsKLSAgICAgICAgdm9pZCBzdG9wU2FtcGxpbmcoKTsKLSAg
ICAgICAgdm9pZCBkdW1wU2FtcGxlRGF0YShFeGVjU3RhdGUqIGV4ZWMpOworICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSB2b2lkIHN0YXJ0U2FtcGxpbmcoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgdm9pZCBzdG9wU2FtcGxpbmcoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBkdW1wU2FtcGxlRGF0YShFeGVjU3RhdGUqKTsKICAgICAgICAgdm9pZCByZWNvbXBpbGVBbGxK
U0Z1bmN0aW9ucygpOwogICAgICAgICBSZWdFeHBDYWNoZSogcmVnRXhwQ2FjaGUoKSB7IHJldHVy
biBtX3JlZ0V4cENhY2hlOyB9CiAjaWYgRU5BQkxFKFJFR0VYUF9UUkFDSU5HKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGltZW91dENoZWNrZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UaW1lb3V0Q2hlY2tlci5oCShyZXZpc2lv
biA4MjAxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RpbWVvdXRDaGVja2Vy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDkgKzU3LDkgQEAKICAgICAgICAgICAgIC0tbV9zdGFy
dENvdW50OwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCByZXNldCgpOworICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSB2b2lkIHJlc2V0KCk7CiAKLSAgICAgICAgYm9vbCBkaWRUaW1lT3V0KEV4
ZWNTdGF0ZSopOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGRpZFRpbWVPdXQoRXhl
Y1N0YXRlKik7CiAKICAgICBwcml2YXRlOgogICAgICAgICB1bnNpZ25lZCBtX3RpbWVvdXRJbnRl
cnZhbDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hlYXAuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IZWFwLmgJKHJldmlzaW9uIDgy
MDEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGVhcC5oCSh3b3JraW5nIGNv
cHkpCkBAIC02MywyOCArNjMsMjggQEAKICAgICAgICAgCiAgICAgICAgIEhlYXAoSlNHbG9iYWxE
YXRhKik7CiAgICAgICAgIH5IZWFwKCk7Ci0gICAgICAgIHZvaWQgZGVzdHJveSgpOyAvLyBKU0ds
b2JhbERhdGEgbXVzdCBjYWxsIGRlc3Ryb3koKSBiZWZvcmUgfkhlYXAoKS4KKyAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgdm9pZCBkZXN0cm95KCk7IC8vIEpTR2xvYmFsRGF0YSBtdXN0IGNhbGwg
ZGVzdHJveSgpIGJlZm9yZSB+SGVhcCgpLgogCiAgICAgICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFsRGF0YTsgfQogICAgICAgICBNYXJrZWRTcGFj
ZSYgbWFya2VkU3BhY2UoKSB7IHJldHVybiBtX21hcmtlZFNwYWNlOyB9CiAgICAgICAgIE1hY2hp
bmVUaHJlYWRzJiBtYWNoaW5lVGhyZWFkcygpIHsgcmV0dXJuIG1fbWFjaGluZVRocmVhZHM7IH0K
IAotICAgICAgICBHQ0FjdGl2aXR5Q2FsbGJhY2sqIGFjdGl2aXR5Q2FsbGJhY2soKTsKKyAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgR0NBY3Rpdml0eUNhbGxiYWNrKiBhY3Rpdml0eUNhbGxiYWNr
KCk7CiAgICAgICAgIHZvaWQgc2V0QWN0aXZpdHlDYWxsYmFjayhQYXNzT3duUHRyPEdDQWN0aXZp
dHlDYWxsYmFjaz4pOwogCi0gICAgICAgIGJvb2wgaXNCdXN5KCk7IC8vIHRydWUgaWYgYW4gYWxs
b2NhdGlvbiBvciBjb2xsZWN0aW9uIGlzIGluIHByb2dyZXNzCi0gICAgICAgIHZvaWQqIGFsbG9j
YXRlKHNpemVfdCk7Ci0gICAgICAgIHZvaWQgY29sbGVjdEFsbEdhcmJhZ2UoKTsKKyAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0J1c3koKTsgLy8gdHJ1ZSBpZiBhbiBhbGxvY2F0aW9u
IG9yIGNvbGxlY3Rpb24gaXMgaW4gcHJvZ3Jlc3MKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCogYWxsb2NhdGUoc2l6ZV90KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBj
b2xsZWN0QWxsR2FyYmFnZSgpOwogCi0gICAgICAgIHZvaWQgcmVwb3J0RXh0cmFNZW1vcnlDb3N0
KHNpemVfdCBjb3N0KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCByZXBvcnRFeHRy
YU1lbW9yeUNvc3Qoc2l6ZV90IGNvc3QpOwogCi0gICAgICAgIHZvaWQgcHJvdGVjdChKU1ZhbHVl
KTsKLSAgICAgICAgYm9vbCB1bnByb3RlY3QoSlNWYWx1ZSk7IC8vIFRydWUgd2hlbiB0aGUgcHJv
dGVjdCBjb3VudCBkcm9wcyB0byAwLgorICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHBy
b3RlY3QoSlNWYWx1ZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgdW5wcm90ZWN0
KEpTVmFsdWUpOyAvLyBUcnVlIHdoZW4gdGhlIHByb3RlY3QgY291bnQgZHJvcHMgdG8gMC4KIAog
ICAgICAgICBib29sIGNvbnRhaW5zKHZvaWQqKTsKIAotICAgICAgICBzaXplX3Qgc2l6ZSgpIGNv
bnN0OwotICAgICAgICBzaXplX3QgY2FwYWNpdHkoKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc2l6ZV90IHNpemUoKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c2l6ZV90IGNhcGFjaXR5KCkgY29uc3Q7CiAgICAgICAgIHNpemVfdCBvYmplY3RDb3VudCgpIGNv
bnN0OwogICAgICAgICBzaXplX3QgZ2xvYmFsT2JqZWN0Q291bnQoKTsKICAgICAgICAgc2l6ZV90
IHByb3RlY3RlZE9iamVjdENvdW50KCk7CkBAIC0xMTAsOCArMTEwLDggQEAKICAgICAgICAgc3Rh
dGljIGNvbnN0IHNpemVfdCBtaW5FeHRyYUNvc3QgPSAyNTY7CiAgICAgICAgIHN0YXRpYyBjb25z
dCBzaXplX3QgbWF4RXh0cmFDb3N0ID0gMTAyNCAqIDEwMjQ7CiAKLSAgICAgICAgdm9pZCogYWxs
b2NhdGVTbG93Q2FzZShzaXplX3QpOwotICAgICAgICB2b2lkIHJlcG9ydEV4dHJhTWVtb3J5Q29z
dFNsb3dDYXNlKHNpemVfdCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQqIGFsbG9j
YXRlU2xvd0Nhc2Uoc2l6ZV90KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCByZXBv
cnRFeHRyYU1lbW9yeUNvc3RTbG93Q2FzZShzaXplX3QpOwogCiAgICAgICAgIHZvaWQgbWFya1Jv
b3RzKCk7CiAgICAgICAgIHZvaWQgbWFya1Byb3RlY3RlZE9iamVjdHMoSGVhcFJvb3RNYXJrZXIm
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaAkocmV2aXNpb24gODIwMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBACiAKICAgICB0
eXBlZGVmIFZlY3RvcjxFeGVjU3RhdGUqLCAxNj4gRXhlY1N0YXRlU3RhY2s7CiAgICAgCi0gICAg
Y2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNWYXJpYWJsZU9iamVjdCB7CisgICAgY2xh
c3MgSlNfRVhQT1JUX1BSSVZBVEUgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNWYXJpYWJsZU9i
amVjdCB7CiAgICAgcHJvdGVjdGVkOgogICAgICAgICB0eXBlZGVmIEhhc2hTZXQ8UmVmUHRyPE9w
YXF1ZUpTV2Vha09iamVjdE1hcD4gPiBXZWFrTWFwU2V0OwogCkBAIC00MzQsNyArNDM0LDcgQEAK
ICAgICBjbGFzcyBEeW5hbWljR2xvYmFsT2JqZWN0U2NvcGUgewogICAgICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShEeW5hbWljR2xvYmFsT2JqZWN0U2NvcGUpOwogICAgIHB1YmxpYzoKLSAgICAg
ICAgRHluYW1pY0dsb2JhbE9iamVjdFNjb3BlKEpTR2xvYmFsRGF0YSYsIEpTR2xvYmFsT2JqZWN0
Kik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIER5bmFtaWNHbG9iYWxPYmplY3RTY29wZShK
U0dsb2JhbERhdGEmLCBKU0dsb2JhbE9iamVjdCopOwogCiAgICAgICAgIH5EeW5hbWljR2xvYmFs
T2JqZWN0U2NvcGUoKQogICAgICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdFdpdGhHbG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdFdpdGhHbG9iYWxPYmplY3QuaAkocmV2aXNpb24g
ODIwMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdFdpdGhHbG9i
YWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzksMTAgKzM5LDEwIEBACiAgICAgICAgIHJl
dHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90bywgVHlwZUluZm8oT2JqZWN0
VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8pOwogICAg
IH0KIAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoKSBjb25zdDsKKyAgICBKU19F
WFBPUlRfUFJJVkFURSBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KCkgY29uc3Q7CiAKIHBy
b3RlY3RlZDoKLSAgICBKU09iamVjdFdpdGhHbG9iYWxPYmplY3QoSlNHbG9iYWxPYmplY3QqLCBO
b25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU09i
amVjdFdpdGhHbG9iYWxPYmplY3QoSlNHbG9iYWxPYmplY3QqLCBOb25OdWxsUGFzc1JlZlB0cjxT
dHJ1Y3R1cmU+KTsKIAogICAgIEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdChOb25OdWxsUGFzc1Jl
ZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSkKICAgICAgICAgOiBKU05vbkZpbmFsT2JqZWN0KHN0
cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgJKHJl
dmlzaW9uIDgyMDEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC04MCwxMCArODAsMTAgQEAKICNlbmRpZgogICAgIH07CiAKLSAg
ICBkb3VibGUgbm9uSW5saW5lTmFOKCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgZG91YmxlIG5v
bklubGluZU5hTigpOwogCiAgICAgLy8gVGhpcyBpbXBsZW1lbnRzIFRvSW50MzIsIGRlZmluZWQg
aW4gRUNNQS0yNjIgOS41LgotICAgIGludDMyX3QgdG9JbnQzMihkb3VibGUpOworICAgIEpTX0VY
UE9SVF9QUklWQVRFIGludDMyX3QgdG9JbnQzMihkb3VibGUpOwogCiAgICAgLy8gVGhpcyBpbXBs
ZW1lbnRzIFRvVUludDMyLCBkZWZpbmVkIGluIEVDTUEtMjYyIDkuNi4KICAgICBpbmxpbmUgdWlu
dDMyX3QgdG9VSW50MzIoZG91YmxlIG51bWJlcikKQEAgLTE5MSw3ICsxOTEsNyBAQAogICAgICAg
ICBKU09iamVjdCogdG9PYmplY3QoRXhlY1N0YXRlKikgY29uc3Q7CiAKICAgICAgICAgLy8gSW50
ZWdlciBjb252ZXJzaW9ucy4KLSAgICAgICAgZG91YmxlIHRvSW50ZWdlcihFeGVjU3RhdGUqKSBj
b25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgZG91YmxlIHRvSW50ZWdlcihFeGVjU3Rh
dGUqKSBjb25zdDsKICAgICAgICAgZG91YmxlIHRvSW50ZWdlclByZXNlcnZlTmFOKEV4ZWNTdGF0
ZSopIGNvbnN0OwogICAgICAgICBpbnQzMl90IHRvSW50MzIoRXhlY1N0YXRlKikgY29uc3Q7CiAg
ICAgICAgIHVpbnQzMl90IHRvVUludDMyKEV4ZWNTdGF0ZSopIGNvbnN0OwpAQCAtMjMwLDcgKzIz
MCw3IEBACiAKICAgICAgICAgYm9vbCBpc0NlbGwoKSBjb25zdDsKICAgICAgICAgSlNDZWxsKiBh
c0NlbGwoKSBjb25zdDsKLSAgICAgICAgYm9vbCBpc1ZhbGlkQ2FsbGVlKCk7CisgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIGJvb2wgaXNWYWxpZENhbGxlZSgpOwogCiAjaWZuZGVmIE5ERUJVRwog
ICAgICAgICBjaGFyKiBkZXNjcmlwdGlvbigpOwpAQCAtMjQ0LDEwICsyNDQsMTAgQEAKICAgICAg
ICAgSlNWYWx1ZShIYXNoVGFibGVEZWxldGVkVmFsdWVUYWcpOwogCiAgICAgICAgIGlubGluZSBj
b25zdCBKU1ZhbHVlIGFzVmFsdWUoKSBjb25zdCB7IHJldHVybiAqdGhpczsgfQotICAgICAgICBK
U09iamVjdCogdG9PYmplY3RTbG93Q2FzZShFeGVjU3RhdGUqKSBjb25zdDsKLSAgICAgICAgSlNP
YmplY3QqIHRvVGhpc09iamVjdFNsb3dDYXNlKEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogdG9PYmplY3RTbG93Q2FzZShFeGVjU3RhdGUqKSBj
b25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRvVGhpc09iamVjdFNs
b3dDYXNlKEV4ZWNTdGF0ZSopIGNvbnN0OwogCi0gICAgICAgIEpTT2JqZWN0KiBzeW50aGVzaXpl
UHJvdG90eXBlKEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBK
U09iamVjdCogc3ludGhlc2l6ZVByb3RvdHlwZShFeGVjU3RhdGUqKSBjb25zdDsKICAgICAgICAg
SlNPYmplY3QqIHN5bnRoZXNpemVPYmplY3QoRXhlY1N0YXRlKikgY29uc3Q7CiAKICNpZiBVU0Uo
SlNWQUxVRTMyXzY0KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVy
dHlEZXNjcmlwdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJvcGVydHlEZXNjcmlwdG9yLmgJKHJldmlzaW9uIDgyMDEwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ2LDggKzQ2LDggQEAKICAgICAgICAgSlNWYWx1ZSB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dmFsdWU7IH0KICAgICAgICAgSlNWYWx1ZSBnZXR0ZXIoKSBjb25zdDsKICAgICAgICAgSlNWYWx1
ZSBzZXR0ZXIoKSBjb25zdDsKLSAgICAgICAgdm9pZCBzZXRVbmRlZmluZWQoKTsKLSAgICAgICAg
dm9pZCBzZXREZXNjcmlwdG9yKEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwor
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldFVuZGVmaW5lZCgpOworICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSB2b2lkIHNldERlc2NyaXB0b3IoSlNWYWx1ZSwgdW5zaWduZWQgYXR0
cmlidXRlcyk7CiAgICAgICAgIHZvaWQgc2V0QWNjZXNzb3JEZXNjcmlwdG9yKEpTVmFsdWUgZ2V0
dGVyLCBKU1ZhbHVlIHNldHRlciwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAgICAgIHZvaWQg
c2V0V3JpdGFibGUoYm9vbCk7CiAgICAgICAgIHZvaWQgc2V0RW51bWVyYWJsZShib29sKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9iamVjdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9iamVjdC5o
CShyZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3Jh
cHBlck9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAKICAgICAvLyBU
aGlzIGNsYXNzIGlzIHVzZWQgYXMgYSBiYXNlIGZvciBjbGFzc2VzIHN1Y2ggYXMgU3RyaW5nLAog
ICAgIC8vIE51bWJlciwgQm9vbGVhbiBhbmQgRGF0ZSB3aGljaCBhcmUgd3JhcHBlcnMgZm9yIHBy
aW1pdGl2ZSB0eXBlcy4KLSAgICBjbGFzcyBKU1dyYXBwZXJPYmplY3QgOiBwdWJsaWMgSlNOb25G
aW5hbE9iamVjdCB7CisgICAgY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgSlNXcmFwcGVyT2JqZWN0
IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIHByb3RlY3RlZDoKICAgICAgICAgZXhw
bGljaXQgSlNXcmFwcGVyT2JqZWN0KE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4pOwogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWxsRGF0YS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhbGxEYXRhLmgJKHJldmlzaW9uIDgy
MDEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FsbERhdGEuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTcsNyArNTcsNyBAQAogICAgICAgICB9IGpzOwogICAgIH07CiAKLSAgICBK
U1ZhbHVlIGNhbGwoRXhlY1N0YXRlKiwgSlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwgQ2FsbFR5cGUs
IGNvbnN0IENhbGxEYXRhJiwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3QmKTsKKyAg
ICBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIGNhbGwoRXhlY1N0YXRlKiwgSlNWYWx1ZSBmdW5j
dGlvbk9iamVjdCwgQ2FsbFR5cGUsIGNvbnN0IENhbGxEYXRhJiwgSlNWYWx1ZSB0aGlzVmFsdWUs
IGNvbnN0IEFyZ0xpc3QmKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmgJKHJldmlzaW9uIDgyMDEwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMiw3ICszMiw3IEBACiAgICAgY2xhc3MgTWFya1N0YWNrOwogICAgIGNsYXNzIFNjb3Bl
Q2hhaW5JdGVyYXRvcjsKICAgICAKLSAgICBjbGFzcyBTY29wZUNoYWluTm9kZSA6IHB1YmxpYyBK
U0NlbGwgeworICAgIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIFNjb3BlQ2hhaW5Ob2RlIDogcHVi
bGljIEpTQ2VsbCB7CiAgICAgcHVibGljOgogICAgICAgICBTY29wZUNoYWluTm9kZShTY29wZUNo
YWluTm9kZSogbmV4dCwgSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRh
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogZ2xvYmFsVGhpcykKICAg
ICAgICAgICAgIDogSlNDZWxsKGdsb2JhbERhdGEtPnNjb3BlQ2hhaW5Ob2RlU3RydWN0dXJlLmdl
dCgpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc3RydWN0RGF0YS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0cnVjdERh
dGEuaAkocmV2aXNpb24gODIwMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b25zdHJ1Y3REYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDcgKzU3LDcgQEAKICAgICAgICAg
fSBqczsKICAgICB9OwogCi0gICAgSlNPYmplY3QqIGNvbnN0cnVjdChFeGVjU3RhdGUqLCBKU1Zh
bHVlIGNvbnN0cnVjdG9yLCBDb25zdHJ1Y3RUeXBlLCBjb25zdCBDb25zdHJ1Y3REYXRhJiwgY29u
c3QgQXJnTGlzdCYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBjb25zdHJ1Y3Qo
RXhlY1N0YXRlKiwgSlNWYWx1ZSBjb25zdHJ1Y3RvciwgQ29uc3RydWN0VHlwZSwgY29uc3QgQ29u
c3RydWN0RGF0YSYsIGNvbnN0IEFyZ0xpc3QmKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcmtlZFNwYWNlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFya2VkU3BhY2UuaAkocmV2aXNp
b24gODIwMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXJrZWRTcGFjZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDUsNyArMTA1LDcgQEAKICAgICAgICAgdm9pZCBmcmVlQmxv
Y2tzKERvdWJseUxpbmtlZExpc3Q8TWFya2VkQmxvY2s+Jik7CiAKICAgICAgICAgU2l6ZUNsYXNz
JiBzaXplQ2xhc3NGb3Ioc2l6ZV90KTsKLSAgICAgICAgdm9pZCogYWxsb2NhdGVGcm9tU2l6ZUNs
YXNzKFNpemVDbGFzcyYpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkKiBhbGxvY2F0
ZUZyb21TaXplQ2xhc3MoU2l6ZUNsYXNzJik7CiAKICAgICAgICAgdm9pZCBjbGVhck1hcmtzKE1h
cmtlZEJsb2NrKik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRp
YWxpemVUaHJlYWRpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmgJKHJldmlzaW9uIDgyMDEwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMyw3ICszMyw3IEBACiAKICAgICAvLyBUaGlzIGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVk
IGZyb20gdGhlIG1haW4gdGhyZWFkLiBJdCBpcyBzYWZlIHRvIGNhbGwgaXQgcmVwZWF0ZWRseS4K
ICAgICAvLyBEYXJ3aW4gaXMgYW4gZXhjZXB0aW9uIHRvIHRoaXMgcnVsZTogaXQgaXMgT0sgdG8g
Y2FsbCB0aGlzIGZ1bmN0aW9uIGZyb20gYW55IHRocmVhZCwgZXZlbiByZWVudHJhbnRseS4KLSAg
ICB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lk
IGluaXRpYWxpemVUaHJlYWRpbmcoKTsKIAogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvY29uZmlnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2NvbmZpZy5o
CShyZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb25maWcuaAkod29y
a2luZyBjb3B5KQpAQCAtNTksOCArNTksOCBAQAogI2RlZmluZSBKU19FWFBPUlRDTEFTUwogI2Vu
ZGlmCiAKLSNkZWZpbmUgV1RGX0VYUE9SVF9QUklWQVRFIEpTX0VYUE9SVERBVEEKLSNkZWZpbmUg
SlNfRVhQT1JUX1BSSVZBVEUgSlNfRVhQT1JUREFUQQorI2RlZmluZSBXVEZfRVhQT1JUX1BSSVZB
VEUKKyNkZWZpbmUgSlNfRVhQT1JUX1BSSVZBVEUKIAogI2VuZGlmIC8qIFVTRShFWFBPUlRfTUFD
Uk9TKSAqLwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCShyZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAkod29ya2luZyBj
b3B5KQpAQCAtODksNyArODksNyBAQAogICAgICAgICB0eXBlZGVmIERlY2xhcmF0aW9uU3RhY2tz
OjpWYXJTdGFjayBWYXJTdGFjazsKICAgICAgICAgdHlwZWRlZiBEZWNsYXJhdGlvblN0YWNrczo6
RnVuY3Rpb25TdGFjayBGdW5jdGlvblN0YWNrOwogCi0gICAgICAgIHN0YXRpYyB2b2lkIHNldER1
bXBzR2VuZXJhdGVkQ29kZShib29sIGR1bXBzR2VuZXJhdGVkQ29kZSk7CisgICAgICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHNldER1bXBzR2VuZXJhdGVkQ29kZShib29sKTsKICAg
ICAgICAgc3RhdGljIGJvb2wgZHVtcHNHZW5lcmF0ZWRDb2RlKCk7CiAKICAgICAgICAgQnl0ZWNv
ZGVHZW5lcmF0b3IoUHJvZ3JhbU5vZGUqLCBTY29wZUNoYWluTm9kZSosIFN5bWJvbFRhYmxlKiwg
UHJvZ3JhbUNvZGVCbG9jayopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9SZWZD
b3VudGVkTGVha0NvdW50ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oCShyZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDcgKzI2LDcgQEAKIAogbmFtZXNwYWNlIFdURiB7CiAgICAgCi0gICAgc3RydWN0IFJl
ZkNvdW50ZWRMZWFrQ291bnRlciB7CisgICAgc3RydWN0IFdURl9FWFBPUlRfUFJJVkFURSBSZWZD
b3VudGVkTGVha0NvdW50ZXIgewogICAgICAgICBzdGF0aWMgdm9pZCBzdXBwcmVzc01lc3NhZ2Vz
KGNvbnN0IGNoYXIqKTsKICAgICAgICAgc3RhdGljIHZvaWQgY2FuY2VsTWVzc2FnZVN1cHByZXNz
aW9uKGNvbnN0IGNoYXIqKTsKICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL051bGxQdHIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL051
bGxQdHIuaAkocmV2aXNpb24gODIwMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL051
bGxQdHIuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsMTAgKzQyLDEwIEBACiAjZWxzZQogCiBuYW1l
c3BhY2Ugc3RkIHsKLSAgICBjbGFzcyBudWxscHRyX3QgeyB9OworY2xhc3MgV1RGX0VYUE9SVF9Q
UklWQVRFIG51bGxwdHJfdCB7IH07CiB9CiAKLWV4dGVybiBzdGQ6Om51bGxwdHJfdCBudWxscHRy
OworZXh0ZXJuIFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om51bGxwdHJfdCBudWxscHRyOwogCiAj
ZW5kaWYKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmcuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZy5oCShyZXZpc2lv
biA4MjAxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nLmgJKHdvcmtp
bmcgY29weSkKQEAgLTg0LDI3ICs4NCwyNyBAQAogLy8gVGhpcyBmdW5jdGlvbiBtdXN0IGJlIGNh
bGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4gSXQgaXMgc2FmZSB0byBjYWxsIGl0IHJlcGVhdGVk
bHkuCiAvLyBEYXJ3aW4gaXMgYW4gZXhjZXB0aW9uIHRvIHRoaXMgcnVsZTogaXQgaXMgT0sgdG8g
Y2FsbCBpdCBmcm9tIGFueSB0aHJlYWQsIHRoZSBvbmx5IAogLy8gcmVxdWlyZW1lbnQgaXMgdGhh
dCB0aGUgY2FsbHMgYXJlIG5vdCByZWVudHJhbnQuCi12b2lkIGluaXRpYWxpemVUaHJlYWRpbmco
KTsKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKTsKIAogLy8g
UmV0dXJucyAwIGlmIHRocmVhZCBjcmVhdGlvbiBmYWlsZWQuCiAvLyBUaGUgdGhyZWFkIG5hbWUg
bXVzdCBiZSBhIGxpdGVyYWwgc2luY2Ugb24gc29tZSBwbGF0Zm9ybXMgaXQncyBwYXNzZWQgaW4g
dG8gdGhlIHRocmVhZC4KLVRocmVhZElkZW50aWZpZXIgY3JlYXRlVGhyZWFkKFRocmVhZEZ1bmN0
aW9uLCB2b2lkKiwgY29uc3QgY2hhciogdGhyZWFkTmFtZSk7CitXVEZfRVhQT1JUX1BSSVZBVEUg
VGhyZWFkSWRlbnRpZmllciBjcmVhdGVUaHJlYWQoVGhyZWFkRnVuY3Rpb24sIHZvaWQqLCBjb25z
dCBjaGFyKiB0aHJlYWROYW1lKTsKIAogLy8gSW50ZXJuYWwgcGxhdGZvcm0tc3BlY2lmaWMgY3Jl
YXRlVGhyZWFkIGltcGxlbWVudGF0aW9uLgotVGhyZWFkSWRlbnRpZmllciBjcmVhdGVUaHJlYWRJ
bnRlcm5hbChUaHJlYWRGdW5jdGlvbiwgdm9pZCosIGNvbnN0IGNoYXIqIHRocmVhZE5hbWUpOwor
V1RGX0VYUE9SVF9QUklWQVRFIFRocmVhZElkZW50aWZpZXIgY3JlYXRlVGhyZWFkSW50ZXJuYWwo
VGhyZWFkRnVuY3Rpb24sIHZvaWQqLCBjb25zdCBjaGFyKiB0aHJlYWROYW1lKTsKIAogLy8gQ2Fs
bGVkIGluIHRoZSB0aHJlYWQgZHVyaW5nIGluaXRpYWxpemF0aW9uLgogLy8gSGVscGZ1bCBmb3Ig
cGxhdGZvcm1zIHdoZXJlIHRoZSB0aHJlYWQgbmFtZSBtdXN0IGJlIHNldCBmcm9tIHdpdGhpbiB0
aGUgdGhyZWFkLgogdm9pZCBpbml0aWFsaXplQ3VycmVudFRocmVhZEludGVybmFsKGNvbnN0IGNo
YXIqIHRocmVhZE5hbWUpOwogCi1UaHJlYWRJZGVudGlmaWVyIGN1cnJlbnRUaHJlYWQoKTsKLWlu
dCB3YWl0Rm9yVGhyZWFkQ29tcGxldGlvbihUaHJlYWRJZGVudGlmaWVyLCB2b2lkKiopOwotdm9p
ZCBkZXRhY2hUaHJlYWQoVGhyZWFkSWRlbnRpZmllcik7CitXVEZfRVhQT1JUX1BSSVZBVEUgVGhy
ZWFkSWRlbnRpZmllciBjdXJyZW50VGhyZWFkKCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgaW50IHdh
aXRGb3JUaHJlYWRDb21wbGV0aW9uKFRocmVhZElkZW50aWZpZXIsIHZvaWQqKik7CitXVEZfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBkZXRhY2hUaHJlYWQoVGhyZWFkSWRlbnRpZmllcik7CiAKLXZvaWQg
eWllbGQoKTsKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIHlpZWxkKCk7CiAKLXZvaWQgbG9ja0F0
b21pY2FsbHlJbml0aWFsaXplZFN0YXRpY011dGV4KCk7Ci12b2lkIHVubG9ja0F0b21pY2FsbHlJ
bml0aWFsaXplZFN0YXRpY011dGV4KCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBsb2NrQXRv
bWljYWxseUluaXRpYWxpemVkU3RhdGljTXV0ZXgoKTsKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lk
IHVubG9ja0F0b21pY2FsbHlJbml0aWFsaXplZFN0YXRpY011dGV4KCk7CiAKIH0gLy8gbmFtZXNw
YWNlIFdURgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL01haW5UaHJlYWQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL01haW5UaHJlYWQuaAkocmV2
aXNpb24gODIwMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL01haW5UaHJlYWQuaAko
d29ya2luZyBjb3B5KQpAQCAtMzgsMTUgKzM4LDE1IEBACiB0eXBlZGVmIHZvaWQgTWFpblRocmVh
ZEZ1bmN0aW9uKHZvaWQqKTsKIAogLy8gTXVzdCBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJl
YWQuCi12b2lkIGluaXRpYWxpemVNYWluVGhyZWFkKCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBpbml0aWFsaXplTWFpblRocmVhZCgpOwogCi12b2lkIGNhbGxPbk1haW5UaHJlYWQoTWFpblRo
cmVhZEZ1bmN0aW9uKiwgdm9pZCogY29udGV4dCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBj
YWxsT25NYWluVGhyZWFkKE1haW5UaHJlYWRGdW5jdGlvbiosIHZvaWQqIGNvbnRleHQpOwogdm9p
ZCBjYWxsT25NYWluVGhyZWFkQW5kV2FpdChNYWluVGhyZWFkRnVuY3Rpb24qLCB2b2lkKiBjb250
ZXh0KTsKIHZvaWQgY2FuY2VsQ2FsbE9uTWFpblRocmVhZChNYWluVGhyZWFkRnVuY3Rpb24qLCB2
b2lkKiBjb250ZXh0KTsKIAotdm9pZCBzZXRNYWluVGhyZWFkQ2FsbGJhY2tzUGF1c2VkKGJvb2wg
cGF1c2VkKTsKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNldE1haW5UaHJlYWRDYWxsYmFja3NQ
YXVzZWQoYm9vbCk7CiAKLWJvb2wgaXNNYWluVGhyZWFkKCk7CitXVEZfRVhQT1JUX1BSSVZBVEUg
Ym9vbCBpc01haW5UaHJlYWQoKTsKIAogLy8gTk9URTogdGhlc2UgZnVuY3Rpb25zIGFyZSBpbnRl
cm5hbCB0byB0aGUgY2FsbE9uTWFpblRocmVhZCBpbXBsZW1lbnRhdGlvbi4KIHZvaWQgaW5pdGlh
bGl6ZU1haW5UaHJlYWRQbGF0Zm9ybSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi9PU0FsbG9jYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
T1NBbGxvY2F0b3IuaAkocmV2aXNpb24gODIwMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL09TQWxsb2NhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAKICAgICAv
LyByZWxlYXNlRGVjb21taXR0ZWQgc2hvdWxkIGJlIGNhbGxlZCBvbiBhIHJlZ2lvbiBvZiBWTSBh
bGxvY2F0ZWQgYnkgYSBzaW5nbGUgcmVzZXJ2YXRpb24sCiAgICAgLy8gdGhlIG1lbW9yeSBtdXN0
IGFsbCBjdXJyZW50bHkgYmUgaW4gYSBkZWNvbW1pdHRlZCBzdGF0ZS4KICAgICBzdGF0aWMgdm9p
ZCogcmVzZXJ2ZVVuY29tbWl0dGVkKHNpemVfdCwgVXNhZ2UgPSBVbmtub3duVXNhZ2UsIGJvb2wg
d3JpdGFibGUgPSB0cnVlLCBib29sIGV4ZWN1dGFibGUgPSBmYWxzZSk7Ci0gICAgc3RhdGljIHZv
aWQgcmVsZWFzZURlY29tbWl0dGVkKHZvaWQqLCBzaXplX3QpOworICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgdm9pZCByZWxlYXNlRGVjb21taXR0ZWQodm9pZCosIHNpemVfdCk7CiAKICAg
ICAvLyBUaGVzZSBtZXRob2RzIGFyZSBzeW1tZXRyaWM7IHRoZXkgY29tbWl0IG9yIGRlY29tbWl0
IGEgcmVnaW9uIG9mIFZNICh1bmNvbW1pdHRlZCBWTSBzaG91bGQKICAgICAvLyBuZXZlciBiZSBh
Y2Nlc3NlZCwgc2luY2UgdGhlIE9TIG1heSBub3QgaGF2ZSBhdHRhY2hlZCBwaHlzaWNhbCBtZW1v
cnkgZm9yIHRoZXNlIHJlZ2lvbnMpLgpAQCAtNTcsNyArNTcsNyBAQAogICAgIC8vIFRoZXNlIG1l
dGhvZHMgYXJlIHN5bW1ldHJpYzsgcmVzZXJ2ZUFuZENvbW1pdCBhbGxvY2F0ZXMgVk0gaW4gYW4g
Y29tbWl0dGVkIHN0YXRlLAogICAgIC8vIGRlY29tbWl0QW5kUmVsZWFzZSBzaG91bGQgYmUgY2Fs
bGVkIG9uIGEgcmVnaW9uIG9mIFZNIGFsbG9jYXRlZCBieSBhIHNpbmdsZSByZXNlcnZhdGlvbiwK
ICAgICAvLyB0aGUgbWVtb3J5IG11c3QgYWxsIGN1cnJlbnRseSBiZSBpbiBhIGNvbW1pdHRlZCBz
dGF0ZS4KLSAgICBzdGF0aWMgdm9pZCogcmVzZXJ2ZUFuZENvbW1pdChzaXplX3QsIFVzYWdlID0g
VW5rbm93blVzYWdlLCBib29sIHdyaXRhYmxlID0gdHJ1ZSwgYm9vbCBleGVjdXRhYmxlID0gZmFs
c2UpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCogcmVzZXJ2ZUFuZENvbW1p
dChzaXplX3QsIFVzYWdlID0gVW5rbm93blVzYWdlLCBib29sIHdyaXRhYmxlID0gdHJ1ZSwgYm9v
bCBleGVjdXRhYmxlID0gZmFsc2UpOwogICAgIHN0YXRpYyB2b2lkIGRlY29tbWl0QW5kUmVsZWFz
ZSh2b2lkKiBiYXNlLCBzaXplX3Qgc2l6ZSk7CiAKICAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSBh
a2luIHRvIHJlc2VydmVBbmRDb21taXQvZGVjb21taXRBbmRSZWxlYXNlLCBhYm92ZSAtIGhvd2V2
ZXIgcmF0aGVyIHRoYW4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvRmFzdE1hbGxv
Yy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvRmFzdE1hbGxvYy5o
CShyZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvRmFzdE1hbGxv
Yy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMiArMjksMTIgQEAKIG5hbWVzcGFjZSBXVEYgewog
CiAgICAgLy8gVGhlc2UgZnVuY3Rpb25zIGNhbGwgQ1JBU0goKSBpZiBhbiBhbGxvY2F0aW9uIGZh
aWxzLgotICAgIHZvaWQqIGZhc3RNYWxsb2Moc2l6ZV90KTsKLSAgICB2b2lkKiBmYXN0WmVyb2Vk
TWFsbG9jKHNpemVfdCk7Ci0gICAgdm9pZCogZmFzdENhbGxvYyhzaXplX3QgbnVtRWxlbWVudHMs
IHNpemVfdCBlbGVtZW50U2l6ZSk7Ci0gICAgdm9pZCogZmFzdFJlYWxsb2Modm9pZCosIHNpemVf
dCk7Ci0gICAgY2hhciogZmFzdFN0ckR1cChjb25zdCBjaGFyKik7Ci0gICAgc2l6ZV90IGZhc3RN
YWxsb2NTaXplKGNvbnN0IHZvaWQqKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCogZmFz
dE1hbGxvYyhzaXplX3QpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkKiBmYXN0WmVyb2Vk
TWFsbG9jKHNpemVfdCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQqIGZhc3RDYWxsb2Mo
c2l6ZV90IG51bUVsZW1lbnRzLCBzaXplX3QgZWxlbWVudFNpemUpOworICAgIFdURl9FWFBPUlRf
UFJJVkFURSB2b2lkKiBmYXN0UmVhbGxvYyh2b2lkKiwgc2l6ZV90KTsKKyAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgY2hhciogZmFzdFN0ckR1cChjb25zdCBjaGFyKik7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHNpemVfdCBmYXN0TWFsbG9jU2l6ZShjb25zdCB2b2lkKik7CiAKICAgICBzdHJ1Y3Qg
VHJ5TWFsbG9jUmV0dXJuVmFsdWUgewogICAgICAgICBUcnlNYWxsb2NSZXR1cm5WYWx1ZSh2b2lk
KiBkYXRhKQpAQCAtNjgsMTIgKzY4LDEyIEBACiAgICAgICAgIHJldHVybiByZXR1cm5WYWx1ZTsK
ICAgICB9CiAKLSAgICBUcnlNYWxsb2NSZXR1cm5WYWx1ZSB0cnlGYXN0TWFsbG9jKHNpemVfdCBu
KTsKLSAgICBUcnlNYWxsb2NSZXR1cm5WYWx1ZSB0cnlGYXN0WmVyb2VkTWFsbG9jKHNpemVfdCBu
KTsKLSAgICBUcnlNYWxsb2NSZXR1cm5WYWx1ZSB0cnlGYXN0Q2FsbG9jKHNpemVfdCBuX2VsZW1l
bnRzLCBzaXplX3QgZWxlbWVudF9zaXplKTsKLSAgICBUcnlNYWxsb2NSZXR1cm5WYWx1ZSB0cnlG
YXN0UmVhbGxvYyh2b2lkKiBwLCBzaXplX3Qgbik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFRy
eU1hbGxvY1JldHVyblZhbHVlIHRyeUZhc3RNYWxsb2Moc2l6ZV90IG4pOworICAgIFdURl9FWFBP
UlRfUFJJVkFURSBUcnlNYWxsb2NSZXR1cm5WYWx1ZSB0cnlGYXN0WmVyb2VkTWFsbG9jKHNpemVf
dCBuKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgVHJ5TWFsbG9jUmV0dXJuVmFsdWUgdHJ5RmFz
dENhbGxvYyhzaXplX3Qgbl9lbGVtZW50cywgc2l6ZV90IGVsZW1lbnRfc2l6ZSk7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIFRyeU1hbGxvY1JldHVyblZhbHVlIHRyeUZhc3RSZWFsbG9jKHZvaWQq
IHAsIHNpemVfdCBuKTsKIAotICAgIHZvaWQgZmFzdEZyZWUodm9pZCopOworICAgIFdURl9FWFBP
UlRfUFJJVkFURSB2b2lkIGZhc3RGcmVlKHZvaWQqKTsKIAogI2lmbmRlZiBOREVCVUcgICAgCiAg
ICAgdm9pZCBmYXN0TWFsbG9jRm9yYmlkKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL1RocmVhZFNwZWNpZmljLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi9UaHJlYWRTcGVjaWZpYy5oCShyZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvVGhyZWFkU3BlY2lmaWMuaAkod29ya2luZyBjb3B5KQpAQCAtMjE2LDggKzIx
Niw4IEBACiAvLyAyKSBXZSBkbyBub3QgbmVlZCB0byBob2xkIG1hbnkgaW5zdGFuY2VzIG9mIFRo
cmVhZFNwZWNpZmljPD4gZGF0YS4gVGhpcyBmaXhlZCBudW1iZXIgc2hvdWxkIGJlIGZhciBlbm91
Z2guCiBjb25zdCBpbnQga01heFRsc0tleVNpemUgPSAyNTY7CiAKLWxvbmcmIHRsc0tleUNvdW50
KCk7Ci1EV09SRCogdGxzS2V5cygpOworV1RGX0VYUE9SVF9QUklWQVRFIGxvbmcmIHRsc0tleUNv
dW50KCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgRFdPUkQqIHRsc0tleXMoKTsKIAogdGVtcGxhdGU8
dHlwZW5hbWUgVD4KIGlubGluZSBUaHJlYWRTcGVjaWZpYzxUPjo6VGhyZWFkU3BlY2lmaWMoKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9XVEZUaHJlYWREYXRhLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9XVEZUaHJlYWREYXRhLmgJKHJldmlzaW9u
IDgyMDEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9XVEZUaHJlYWREYXRhLmgJKHdv
cmtpbmcgY29weSkKQEAgLTg5LDggKzg5LDggQEAKIGNsYXNzIFdURlRocmVhZERhdGEgewogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKFdURlRocmVhZERhdGEpOwogcHVibGljOgotICAgIFdURlRo
cmVhZERhdGEoKTsKLSAgICB+V1RGVGhyZWFkRGF0YSgpOworICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBXVEZUaHJlYWREYXRhKCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIH5XVEZUaHJlYWREYXRh
KCk7CiAKICAgICBBdG9taWNTdHJpbmdUYWJsZSogYXRvbWljU3RyaW5nVGFibGUoKQogICAgIHsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvRGF0ZU1hdGguaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0RhdGVNYXRoLmgJKHJldmlzaW9uIDgyMDEwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9EYXRlTWF0aC5oCSh3b3JraW5nIGNvcHkpCkBA
IC01OSw3ICs1OSw3IEBACiAKIC8vIE5vdCByZWFsbHkgbWF0aCByZWxhdGVkLCBidXQgdGhpcyBp
cyBjdXJyZW50bHkgdGhlIG9ubHkgc2hhcmVkIHBsYWNlIHRvIHB1dCB0aGVzZS4KIGRvdWJsZSBw
YXJzZUVTNURhdGVGcm9tTnVsbFRlcm1pbmF0ZWRDaGFyYWN0ZXJzKGNvbnN0IGNoYXIqIGRhdGVT
dHJpbmcpOwotZG91YmxlIHBhcnNlRGF0ZUZyb21OdWxsVGVybWluYXRlZENoYXJhY3RlcnMoY29u
c3QgY2hhciogZGF0ZVN0cmluZyk7CitXVEZfRVhQT1JUX1BSSVZBVEUgZG91YmxlIHBhcnNlRGF0
ZUZyb21OdWxsVGVybWluYXRlZENoYXJhY3RlcnMoY29uc3QgY2hhciogZGF0ZVN0cmluZyk7CiBk
b3VibGUgdGltZUNsaXAoZG91YmxlKTsKIAogaW5saW5lIGRvdWJsZSBqc0N1cnJlbnRUaW1lKCkK
QEAgLTgyLDE1ICs4MiwxNSBAQAogY29uc3QgZG91YmxlIG1zUGVyTW9udGggPSAyNTkyMDAwMDAw
LjA7CiAKIC8vIFJldHVybnMgdGhlIG51bWJlciBvZiBkYXlzIGZyb20gMTk3MC0wMS0wMSB0byB0
aGUgc3BlY2lmaWVkIGRhdGUuCi1kb3VibGUgZGF0ZVRvRGF5c0Zyb20xOTcwKGludCB5ZWFyLCBp
bnQgbW9udGgsIGludCBkYXkpOwotaW50IG1zVG9ZZWFyKGRvdWJsZSBtcyk7Ci1pbnQgZGF5SW5Z
ZWFyKGRvdWJsZSBtcywgaW50IHllYXIpOwotaW50IG1vbnRoRnJvbURheUluWWVhcihpbnQgZGF5
SW5ZZWFyLCBib29sIGxlYXBZZWFyKTsKLWludCBkYXlJbk1vbnRoRnJvbURheUluWWVhcihpbnQg
ZGF5SW5ZZWFyLCBib29sIGxlYXBZZWFyKTsKK1dURl9FWFBPUlRfUFJJVkFURSBkb3VibGUgZGF0
ZVRvRGF5c0Zyb20xOTcwKGludCB5ZWFyLCBpbnQgbW9udGgsIGludCBkYXkpOworV1RGX0VYUE9S
VF9QUklWQVRFIGludCBtc1RvWWVhcihkb3VibGUgbXMpOworV1RGX0VYUE9SVF9QUklWQVRFIGlu
dCBkYXlJblllYXIoZG91YmxlIG1zLCBpbnQgeWVhcik7CitXVEZfRVhQT1JUX1BSSVZBVEUgaW50
IG1vbnRoRnJvbURheUluWWVhcihpbnQgZGF5SW5ZZWFyLCBib29sIGxlYXBZZWFyKTsKK1dURl9F
WFBPUlRfUFJJVkFURSBpbnQgZGF5SW5Nb250aEZyb21EYXlJblllYXIoaW50IGRheUluWWVhciwg
Ym9vbCBsZWFwWWVhcik7CiAKIC8vIFJldHVybnMgb2Zmc2V0IG1pbGxpc2Vjb25kcyBmb3IgVVRD
IGFuZCBEU1QuCi1pbnQzMl90IGNhbGN1bGF0ZVVUQ09mZnNldCgpOwotZG91YmxlIGNhbGN1bGF0
ZURTVE9mZnNldChkb3VibGUgbXMsIGRvdWJsZSB1dGNPZmZzZXQpOworV1RGX0VYUE9SVF9QUklW
QVRFIGludDMyX3QgY2FsY3VsYXRlVVRDT2Zmc2V0KCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgZG91
YmxlIGNhbGN1bGF0ZURTVE9mZnNldChkb3VibGUgbXMsIGRvdWJsZSB1dGNPZmZzZXQpOwogCiB9
IC8vIG5hbWVzcGFjZSBXVEYKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi91bmlj
b2RlL0NvbGxhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi91
bmljb2RlL0NvbGxhdG9yLmgJKHJldmlzaW9uIDgyMDEwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3d0Zi91bmljb2RlL0NvbGxhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDEzICs0NSwx
MyBAQAogICAgIHB1YmxpYzoKICAgICAgICAgZW51bSBSZXN1bHQgeyBFcXVhbCA9IDAsIEdyZWF0
ZXIgPSAxLCBMZXNzID0gLTEgfTsKIAotICAgICAgICBDb2xsYXRvcihjb25zdCBjaGFyKiBsb2Nh
bGUpOyAvLyBQYXJzaW5nIGlzIGxlbmllbnQ7IGUuZy4gbGFuZ3VhZ2UgaWRlbnRpZmllcnMgKHN1
Y2ggYXMgImVuLVVTIikgYXJlIGFjY2VwdGVkLCB0b28uCi0gICAgICAgIH5Db2xsYXRvcigpOwot
ICAgICAgICB2b2lkIHNldE9yZGVyTG93ZXJGaXJzdChib29sKTsKKyAgICAgICAgV1RGX0VYUE9S
VF9QUklWQVRFIENvbGxhdG9yKGNvbnN0IGNoYXIqIGxvY2FsZSk7IC8vIFBhcnNpbmcgaXMgbGVu
aWVudDsgZS5nLiBsYW5ndWFnZSBpZGVudGlmaWVycyAoc3VjaCBhcyAiZW4tVVMiKSBhcmUgYWNj
ZXB0ZWQsIHRvby4KKyAgICAgICAgV1RGX0VYUE9SVF9QUklWQVRFIH5Db2xsYXRvcigpOworICAg
ICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRPcmRlckxvd2VyRmlyc3QoYm9vbCk7CiAK
ICAgICAgICAgc3RhdGljIFBhc3NPd25QdHI8Q29sbGF0b3I+IHVzZXJEZWZhdWx0KCk7CiAKLSAg
ICAgICAgUmVzdWx0IGNvbGxhdGUoY29uc3QgOjpVQ2hhciosIHNpemVfdCwgY29uc3QgOjpVQ2hh
ciosIHNpemVfdCkgY29uc3Q7CisgICAgICAgIFdURl9FWFBPUlRfUFJJVkFURSBSZXN1bHQgY29s
bGF0ZShjb25zdCA6OlVDaGFyKiwgc2l6ZV90LCBjb25zdCA6OlVDaGFyKiwgc2l6ZV90KSBjb25z
dDsKIAogICAgIHByaXZhdGU6CiAjaWYgVVNFKElDVV9VTklDT0RFKSAmJiAhVUNPTkZJR19OT19D
T0xMQVRJT04KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdW5pY29kZS9VVEY4LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi91bmljb2RlL1VURjguaAko
cmV2aXNpb24gODIwMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUvVVRG
OC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MiwxMSArNjIsMTEgQEAKICAgICAvLyB0byB0aGUgcmVw
bGFjZW1lbnQgY2hhcmFjdGVyOyBvdGhlcndpc2UgKHdoZW4gdGhlIGZsYWcgaXMgc2V0IHRvIHN0
cmljdCkKICAgICAvLyB0aGV5IGNvbnN0aXR1dGUgYW4gZXJyb3IuCiAKLSAgICBDb252ZXJzaW9u
UmVzdWx0IGNvbnZlcnRVVEY4VG9VVEYxNigKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgQ29udmVy
c2lvblJlc3VsdCBjb252ZXJ0VVRGOFRvVVRGMTYoCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIqKiBzb3VyY2VTdGFydCwgY29uc3QgY2hhciogc291cmNlRW5kLCAKICAgICAgICAgICAg
ICAgICAgICAgVUNoYXIqKiB0YXJnZXRTdGFydCwgVUNoYXIqIHRhcmdldEVuZCwgYm9vbCBzdHJp
Y3QgPSB0cnVlKTsKIAotICAgIENvbnZlcnNpb25SZXN1bHQgY29udmVydFVURjE2VG9VVEY4KAor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBDb252ZXJzaW9uUmVzdWx0IGNvbnZlcnRVVEYxNlRvVVRG
OCgKICAgICAgICAgICAgICAgICAgICAgY29uc3QgVUNoYXIqKiBzb3VyY2VTdGFydCwgY29uc3Qg
VUNoYXIqIHNvdXJjZUVuZCwgCiAgICAgICAgICAgICAgICAgICAgIGNoYXIqKiB0YXJnZXRTdGFy
dCwgY2hhciogdGFyZ2V0RW5kLCBib29sIHN0cmljdCA9IHRydWUpOwogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL0N1cnJlbnRUaW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi9DdXJyZW50VGltZS5oCShyZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvQ3VycmVudFRpbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMzks
NyArMzksNyBAQAogLy8gUmV0dXJucyB0aGUgY3VycmVudCBVVEMgdGltZSBpbiBzZWNvbmRzLCBj
b3VudGVkIGZyb20gSmFudWFyeSAxLCAxOTcwLgogLy8gUHJlY2lzaW9uIHZhcmllcyBkZXBlbmRp
bmcgb24gcGxhdGZvcm0gYnV0IGlzIHVzdWFsbHkgYXMgZ29vZCBvciBiZXR0ZXIKIC8vIHRoYW4g
YSBtaWxsaXNlY29uZC4KLWRvdWJsZSBjdXJyZW50VGltZSgpOworV1RGX0VYUE9SVF9QUklWQVRF
IGRvdWJsZSBjdXJyZW50VGltZSgpOwogCiAvLyBTYW1lIHRoaW5nLCBpbiBtaWxsaXNlY29uZHMu
CiBpbmxpbmUgZG91YmxlIGN1cnJlbnRUaW1lTVMoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3d0Zi9EZWNpbWFsTnVtYmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3d0Zi9EZWNpbWFsTnVtYmVyLmgJKHJldmlzaW9uIDgyMDEwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi9EZWNpbWFsTnVtYmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTgxLDEwICs4
MSwxMCBAQAogICAgICAgICBBU1NFUlQobV9zaWduaWZpY2FuZFswXSAhPSAnMCcgfHwgIW1fZXhw
b25lbnQpOwogICAgIH0KIAotICAgIHVuc2lnbmVkIGJ1ZmZlckxlbmd0aEZvclN0cmluZ0RlY2lt
YWwoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdW5zaWduZWQgYnVmZmVyTGVuZ3Ro
Rm9yU3RyaW5nRGVjaW1hbCgpIGNvbnN0OwogICAgIHVuc2lnbmVkIGJ1ZmZlckxlbmd0aEZvclN0
cmluZ0V4cG9uZW50aWFsKCkgY29uc3Q7CiAKLSAgICB1bnNpZ25lZCB0b1N0cmluZ0RlY2ltYWwo
VUNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgYnVmZmVyTGVuZ3RoKSBjb25zdDsKKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgdW5zaWduZWQgdG9TdHJpbmdEZWNpbWFsKFVDaGFyKiBidWZmZXIsIHVuc2ln
bmVkIGJ1ZmZlckxlbmd0aCkgY29uc3Q7CiAgICAgdW5zaWduZWQgdG9TdHJpbmdFeHBvbmVudGlh
bChVQ2hhciogYnVmZmVyLCB1bnNpZ25lZCBidWZmZXJMZW5ndGgpIGNvbnN0OwogCiAgICAgYm9v
bCBzaWduKCkgY29uc3QgeyByZXR1cm4gbV9zaWduOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL01ENS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
TUQ1LmgJKHJldmlzaW9uIDgyMDEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9NRDUu
aAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAot
Y2xhc3MgTUQ1IHsKK2NsYXNzIFdURl9FWFBPUlRfUFJJVkFURSBNRDUgewogcHVibGljOgogICAg
IE1ENSgpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL2R0b2EuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL2R0b2EuaAkocmV2aXNpb24gODIwMTAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL2R0b2EuaAkod29ya2luZyBjb3B5KQpAQCAt
MzAsMTggKzMwLDE4IEBACiAKIC8vIHMwMDogaW5wdXQgc3RyaW5nLiBNdXN0IG5vdCBiZSAwIGFu
ZCBtdXN0IGJlIHRlcm1pbmF0ZWQgYnkgMC4KIC8vIHNlOiAqc2Ugd2lsbCBoYXZlIHRoZSBsYXN0
IGNvbnN1bWVkIGNoYXJhY3RlciBwb3NpdGlvbiArIDEuCi1kb3VibGUgc3RydG9kKGNvbnN0IGNo
YXIqIHMwMCwgY2hhcioqIHNlKTsKK1dURl9FWFBPUlRfUFJJVkFURSBkb3VibGUgc3RydG9kKGNv
bnN0IGNoYXIqIHMwMCwgY2hhcioqIHNlKTsKIAogdHlwZWRlZiBjaGFyIER0b2FCdWZmZXJbODBd
OwogCi12b2lkIGR0b2EoRHRvYUJ1ZmZlciByZXN1bHQsIGRvdWJsZSBkZCwgYm9vbCYgc2lnbiwg
aW50JiBleHBvbmVudCwgdW5zaWduZWQmIHByZWNpc2lvbik7CitXVEZfRVhQT1JUX1BSSVZBVEUg
dm9pZCBkdG9hKER0b2FCdWZmZXIgcmVzdWx0LCBkb3VibGUgZGQsIGJvb2wmIHNpZ24sIGludCYg
ZXhwb25lbnQsIHVuc2lnbmVkJiBwcmVjaXNpb24pOwogdm9pZCBkdG9hUm91bmRTRihEdG9hQnVm
ZmVyIHJlc3VsdCwgZG91YmxlIGRkLCBpbnQgbmRpZ2l0cywgYm9vbCYgc2lnbiwgaW50JiBleHBv
bmVudCwgdW5zaWduZWQmIHByZWNpc2lvbik7CiB2b2lkIGR0b2FSb3VuZERQKER0b2FCdWZmZXIg
cmVzdWx0LCBkb3VibGUgZGQsIGludCBuZGlnaXRzLCBib29sJiBzaWduLCBpbnQmIGV4cG9uZW50
LCB1bnNpZ25lZCYgcHJlY2lzaW9uKTsKIAogLy8gU2l6ZSA9IDgwIGZvciBzaXplb2YoRHRvYUJ1
ZmZlcikgKyBzb21lIHNpZ24gYml0cywgZGVjaW1hbCBwb2ludCwgJ2UnLCBleHBvbmVudCBkaWdp
dHMuCiBjb25zdCB1bnNpZ25lZCBOdW1iZXJUb1N0cmluZ0J1ZmZlckxlbmd0aCA9IDk2OwogdHlw
ZWRlZiBVQ2hhciBOdW1iZXJUb1N0cmluZ0J1ZmZlcltOdW1iZXJUb1N0cmluZ0J1ZmZlckxlbmd0
aF07Ci11bnNpZ25lZCBudW1iZXJUb1N0cmluZyhkb3VibGUsIE51bWJlclRvU3RyaW5nQnVmZmVy
KTsKK1dURl9FWFBPUlRfUFJJVkFURSB1bnNpZ25lZCBudW1iZXJUb1N0cmluZyhkb3VibGUsIE51
bWJlclRvU3RyaW5nQnVmZmVyKTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvTnVsbFB0ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi9OdWxsUHRyLmNwcAkocmV2aXNpb24gODIwMTApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL051bGxQdHIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsy
NCw3IEBACiAKICovCiAKKyNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJOdWxsUHRyLmgi
CiAKICNpbmNsdWRlICJQbGF0Zm9ybS5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaAkocmV2aXNp
b24gODIwMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0NyeXB0b2dyYXBoaWNhbGx5
UmFuZG9tTnVtYmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKIAogI2lmIFVT
RShPU19SQU5ET01ORVNTKQogdWludDMyX3QgY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIo
KTsKLXZvaWQgY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21WYWx1ZXModm9pZCogYnVmZmVyLCBzaXpl
X3QgbGVuZ3RoKTsKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIGNyeXB0b2dyYXBoaWNhbGx5UmFu
ZG9tVmFsdWVzKHZvaWQqIGJ1ZmZlciwgc2l6ZV90IGxlbmd0aCk7CiAjZW5kaWYKIAogfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmgJ
KHJldmlzaW9uIDgyMDEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdQ
cmltaXRpdmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMCwxMiArMTAwLDEyIEBACiBjbGFzcyBN
dXRleCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTXV0ZXgpOyBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKLSAgICBNdXRleCgpOwotICAgIH5NdXRleCgpOworICAgIFdURl9F
WFBPUlRfUFJJVkFURSBNdXRleCgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB+TXV0ZXgoKTsK
IAotICAgIHZvaWQgbG9jaygpOwotICAgIGJvb2wgdHJ5TG9jaygpOwotICAgIHZvaWQgdW5sb2Nr
KCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgbG9jaygpOworICAgIFdURl9FWFBPUlRf
UFJJVkFURSBib29sIHRyeUxvY2soKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCB1bmxv
Y2soKTsKIAogcHVibGljOgogICAgIFBsYXRmb3JtTXV0ZXgmIGltcGwoKSB7IHJldHVybiBtX211
dGV4OyB9CkBAIC0xMzYsMTUgKzEzNiwxNSBAQAogY2xhc3MgVGhyZWFkQ29uZGl0aW9uIHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShUaHJlYWRDb25kaXRpb24pOwogcHVibGljOgotICAgIFRo
cmVhZENvbmRpdGlvbigpOwotICAgIH5UaHJlYWRDb25kaXRpb24oKTsKKyAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgVGhyZWFkQ29uZGl0aW9uKCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIH5UaHJl
YWRDb25kaXRpb24oKTsKICAgICAKLSAgICB2b2lkIHdhaXQoTXV0ZXgmIG11dGV4KTsKKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgdm9pZCB3YWl0KE11dGV4Jik7CiAgICAgLy8gUmV0dXJucyB0cnVl
IGlmIHRoZSBjb25kaXRpb24gd2FzIHNpZ25hbGVkIGJlZm9yZSBhYnNvbHV0ZVRpbWUsIGZhbHNl
IGlmIHRoZSBhYnNvbHV0ZVRpbWUgd2FzIHJlYWNoZWQgb3IgaXMgaW4gdGhlIHBhc3QuCiAgICAg
Ly8gVGhlIGFic29sdXRlVGltZSBpcyBpbiBzZWNvbmRzLCBzdGFydGluZyBvbiBKYW51YXJ5IDEs
IDE5NzAuIFRoZSB0aW1lIGlzIGFzc3VtZWQgdG8gdXNlIHRoZSBzYW1lIHRpbWUgem9uZSBhcyBX
VEY6OmN1cnJlbnRUaW1lKCkuCi0gICAgYm9vbCB0aW1lZFdhaXQoTXV0ZXgmLCBkb3VibGUgYWJz
b2x1dGVUaW1lKTsKLSAgICB2b2lkIHNpZ25hbCgpOwotICAgIHZvaWQgYnJvYWRjYXN0KCk7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgdGltZWRXYWl0KE11dGV4JiwgZG91YmxlIGFic29s
dXRlVGltZSk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2lnbmFsKCk7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIHZvaWQgYnJvYWRjYXN0KCk7CiAgICAgCiBwcml2YXRlOgogICAgIFBs
YXRmb3JtQ29uZGl0aW9uIG1fY29uZGl0aW9uOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi9SYW5kb21OdW1iZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL1JhbmRvbU51bWJlci5oCShyZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvUmFuZG9tTnVtYmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAK
IAogICAgIC8vIFJldHVybnMgYSBwc2V1ZG8tcmFuZG9tIG51bWJlciBpbiB0aGUgcmFuZ2UgWzAs
IDEpLCBhdHRlbXB0cyB0byBiZQogICAgIC8vIGNyeXB0b2dyYXBoaWNhbGx5IHNlY3VyZSBpZiBw
b3NzaWJsZSBvbiB0aGUgdGFyZ2V0IHBsYXRmb3JtCi0gICAgZG91YmxlIHJhbmRvbU51bWJlcigp
OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBkb3VibGUgcmFuZG9tTnVtYmVyKCk7CiAKIH0KIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9BdG9taWNTdHJpbmcuaAko
cmV2aXNpb24gODIwMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvQXRvbWlj
U3RyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDI3ICszOCwzMSBAQAogCiBjbGFzcyBBdG9t
aWNTdHJpbmcgewogcHVibGljOgotICAgIHN0YXRpYyB2b2lkIGluaXQoKTsKKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgaW5pdCgpOwogCi0gICAgQXRvbWljU3RyaW5nKCkgeyB9
Ci0gICAgQXRvbWljU3RyaW5nKGNvbnN0IGNoYXIqIHMpIDogbV9zdHJpbmcoYWRkKHMpKSB7IH0K
KyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgQXRvbWljU3RyaW5nKCkgeyB9CisgICAgLy8gY29weSBj
b25zdHJ1Y3RvciBuZWVkcyB0byBiZSBleHBsaWNpdGx5IGRlZmluZWQgc28gd2UgY2FuIHNwZWNp
ZnkgcHJvcGVyIGRsbCBsaW5rYWdlCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIEF0b21pY1N0cmlu
Zyhjb25zdCBBdG9taWNTdHJpbmcmIHMpIDogbV9zdHJpbmcocy5tX3N0cmluZykgeyB9CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIEF0b21pY1N0cmluZyhjb25zdCBjaGFyKiBzKSA6IG1fc3RyaW5n
KGFkZChzKSkgeyB9CiAgICAgQXRvbWljU3RyaW5nKGNvbnN0IFVDaGFyKiBzLCB1bnNpZ25lZCBs
ZW5ndGgpIDogbV9zdHJpbmcoYWRkKHMsIGxlbmd0aCkpIHsgfQogICAgIEF0b21pY1N0cmluZyhj
b25zdCBVQ2hhciogcywgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBleGlzdGluZ0hhc2gpIDog
bV9zdHJpbmcoYWRkKHMsIGxlbmd0aCwgZXhpc3RpbmdIYXNoKSkgeyB9CiAgICAgQXRvbWljU3Ry
aW5nKGNvbnN0IFVDaGFyKiBzKSA6IG1fc3RyaW5nKGFkZChzKSkgeyB9CiAgICAgQVRPTUlDU1RS
SU5HX0NPTlZFUlNJT04gQXRvbWljU3RyaW5nKFN0cmluZ0ltcGwqIGltcCkgOiBtX3N0cmluZyhh
ZGQoaW1wKSkgeyB9CiAgICAgQXRvbWljU3RyaW5nKEF0b21pY1N0cmluZ0ltcGwqIGltcCkgOiBt
X3N0cmluZyhpbXApIHsgfQotICAgIEFUT01JQ1NUUklOR19DT05WRVJTSU9OIEF0b21pY1N0cmlu
Zyhjb25zdCBTdHJpbmcmIHMpIDogbV9zdHJpbmcoYWRkKHMuaW1wbCgpKSkgeyB9CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIEFUT01JQ1NUUklOR19DT05WRVJTSU9OIEF0b21pY1N0cmluZyhjb25z
dCBTdHJpbmcmIHMpIDogbV9zdHJpbmcoYWRkKHMuaW1wbCgpKSkgeyB9CiAKICAgICAvLyBIYXNo
IHRhYmxlIGRlbGV0ZWQgdmFsdWVzLCB3aGljaCBhcmUgb25seSBjb25zdHJ1Y3RlZCBhbmQgbmV2
ZXIgY29waWVkIG9yIGRlc3Ryb3llZC4KLSAgICBBdG9taWNTdHJpbmcoV1RGOjpIYXNoVGFibGVE
ZWxldGVkVmFsdWVUeXBlKSA6IG1fc3RyaW5nKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKSB7
IH0KLSAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9z
dHJpbmcuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQorICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBBdG9taWNTdHJpbmcoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKSA6IG1fc3RyaW5n
KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKSB7IH0KKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
Ym9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmlz
SGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KIAotICAgIHN0YXRpYyBBdG9taWNTdHJpbmdJbXBs
KiBmaW5kKGNvbnN0IFVDaGFyKiBzLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIGV4aXN0aW5n
SGFzaCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIH5BdG9taWNTdHJpbmcoKSB7IH0KIAorICAg
IFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgQXRvbWljU3RyaW5nSW1wbCogZmluZChjb25zdCBV
Q2hhciosIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgZXhpc3RpbmdIYXNoKTsKKwogICAgIG9w
ZXJhdG9yIGNvbnN0IFN0cmluZyYoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfQogICAgIGNv
bnN0IFN0cmluZyYgc3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH07CiAKLSAgICBB
dG9taWNTdHJpbmdJbXBsKiBpbXBsKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXRvbWlj
U3RyaW5nSW1wbCAqPihtX3N0cmluZy5pbXBsKCkpOyB9CisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IEF0b21pY1N0cmluZ0ltcGwqIGltcGwoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxBdG9t
aWNTdHJpbmdJbXBsICo+KG1fc3RyaW5nLmltcGwoKSk7IH0KICAgICAKICAgICBjb25zdCBVQ2hh
ciogY2hhcmFjdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmNoYXJhY3RlcnMoKTsgfQog
ICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmxlbmd0aCgpOyB9
CkBAIC04Miw3ICs4Niw3IEBACiAgICAgYm9vbCBlbmRzV2l0aChjb25zdCBTdHJpbmcmIHMsIGJv
b2wgY2FzZVNlbnNpdGl2ZSA9IHRydWUpIGNvbnN0CiAgICAgICAgIHsgcmV0dXJuIG1fc3RyaW5n
LmVuZHNXaXRoKHMsIGNhc2VTZW5zaXRpdmUpOyB9CiAgICAgCi0gICAgQXRvbWljU3RyaW5nIGxv
d2VyKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIEF0b21pY1N0cmluZyBsb3dlcigp
IGNvbnN0OwogICAgIEF0b21pY1N0cmluZyB1cHBlcigpIGNvbnN0IHsgcmV0dXJuIEF0b21pY1N0
cmluZyhpbXBsKCktPnVwcGVyKCkpOyB9CiAgICAgCiAgICAgaW50IHRvSW50KGJvb2wqIG9rID0g
MCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcudG9JbnQob2spOyB9CkBAIC0xMTAsMTQgKzExNCwx
NCBAQAogCiAgICAgLy8gQXRvbWljU3RyaW5nOjpmcm9tVVRGOCB3aWxsIHJldHVybiBhIG51bGwg
c3RyaW5nIGlmCiAgICAgLy8gdGhlIGlucHV0IGRhdGEgY29udGFpbnMgaW52YWxpZCBVVEYtOCBz
ZXF1ZW5jZXMuCi0gICAgc3RhdGljIEF0b21pY1N0cmluZyBmcm9tVVRGOChjb25zdCBjaGFyKiwg
c2l6ZV90KTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIGZyb21VVEY4KGNvbnN0IGNoYXIqKTsK
KyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEF0b21pY1N0cmluZyBmcm9tVVRGOChjb25z
dCBjaGFyKiwgc2l6ZV90KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEF0b21pY1N0
cmluZyBmcm9tVVRGOChjb25zdCBjaGFyKik7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fc3Ry
aW5nOwogICAgIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChjb25zdCBj
aGFyKik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRkKGNvbnN0IFVDaGFy
KiwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NS
ZWZQdHI8U3RyaW5nSW1wbD4gYWRkKGNvbnN0IGNoYXIqKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRkKGNvbnN0IFVDaGFyKiwgdW5zaWdu
ZWQgbGVuZ3RoKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGQoY29uc3Qg
VUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIGV4aXN0aW5nSGFzaCk7CiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRkKGNvbnN0IFVDaGFyKik7CiAgICAgQUxXQVlT
X0lOTElORSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChTdHJpbmdJbXBsKiByKQpAQCAtMTI2
LDEyICsxMzAsMTIgQEAKICAgICAgICAgICAgIHJldHVybiByOwogICAgICAgICByZXR1cm4gYWRk
U2xvd0Nhc2Uocik7CiAgICAgfQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFk
ZFNsb3dDYXNlKFN0cmluZ0ltcGwqKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBh
c3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRkU2xvd0Nhc2UoU3RyaW5nSW1wbCopOwogfTsKIAogaW5s
aW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBdG9taWNTdHJpbmcmIGEsIGNvbnN0IEF0b21pY1N0
cmluZyYgYikgeyByZXR1cm4gYS5pbXBsKCkgPT0gYi5pbXBsKCk7IH0KLWJvb2wgb3BlcmF0b3I9
PShjb25zdCBBdG9taWNTdHJpbmcmIGEsIGNvbnN0IGNoYXIqIGIpOwotYm9vbCBvcGVyYXRvcj09
KGNvbnN0IEF0b21pY1N0cmluZyYgYSwgY29uc3QgVmVjdG9yPFVDaGFyPiYgYik7CitXVEZfRVhQ
T1JUX1BSSVZBVEUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IGNo
YXIqKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIG9wZXJhdG9yPT0oY29uc3QgQXRvbWljU3Ry
aW5nJiwgY29uc3QgVmVjdG9yPFVDaGFyPiYpOwogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBBdG9taWNTdHJpbmcmIGEsIGNvbnN0IFN0cmluZyYgYikgeyByZXR1cm4gZXF1YWwoYS5pbXBs
KCksIGIuaW1wbCgpKTsgfQogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBjaGFyKiBhLCBj
b25zdCBBdG9taWNTdHJpbmcmIGIpIHsgcmV0dXJuIGIgPT0gYTsgfQogaW5saW5lIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBTdHJpbmcmIGEsIGNvbnN0IEF0b21pY1N0cmluZyYgYikgeyByZXR1cm4g
ZXF1YWwoYS5pbXBsKCksIGIuaW1wbCgpKTsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi90ZXh0L0NTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL3RleHQvQ1N0cmluZy5oCShyZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvdGV4dC9DU3RyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDEwICs1MiwxMCBA
QAogY2xhc3MgQ1N0cmluZyB7CiBwdWJsaWM6CiAgICAgQ1N0cmluZygpIHsgfQotICAgIENTdHJp
bmcoY29uc3QgY2hhciopOwotICAgIENTdHJpbmcoY29uc3QgY2hhciosIHNpemVfdCBsZW5ndGgp
OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBDU3RyaW5nKGNvbnN0IGNoYXIqKTsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgQ1N0cmluZyhjb25zdCBjaGFyKiwgc2l6ZV90IGxlbmd0aCk7CiAgICAg
Q1N0cmluZyhDU3RyaW5nQnVmZmVyKiBidWZmZXIpIDogbV9idWZmZXIoYnVmZmVyKSB7IH0KLSAg
ICBzdGF0aWMgQ1N0cmluZyBuZXdVbmluaXRpYWxpemVkKHNpemVfdCBsZW5ndGgsIGNoYXIqJiBj
aGFyYWN0ZXJCdWZmZXIpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgQ1N0cmluZyBu
ZXdVbmluaXRpYWxpemVkKHNpemVfdCBsZW5ndGgsIGNoYXIqJiBjaGFyYWN0ZXJCdWZmZXIpOwog
CiAgICAgY29uc3QgY2hhciogZGF0YSgpIGNvbnN0CiAgICAgewpAQCAtNzcsNyArNzcsNyBAQAog
ICAgIFJlZlB0cjxDU3RyaW5nQnVmZmVyPiBtX2J1ZmZlcjsKIH07CiAKLWJvb2wgb3BlcmF0b3I9
PShjb25zdCBDU3RyaW5nJiBhLCBjb25zdCBDU3RyaW5nJiBiKTsKK1dURl9FWFBPUlRfUFJJVkFU
RSBib29sIG9wZXJhdG9yPT0oY29uc3QgQ1N0cmluZyYgYSwgY29uc3QgQ1N0cmluZyYgYik7CiBp
bmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENTdHJpbmcmIGEsIGNvbnN0IENTdHJpbmcmIGIp
IHsgcmV0dXJuICEoYSA9PSBiKTsgfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaAkocmV2aXNpb24g
ODIwMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zOCw4ICszOCw4IEBACiAgICAgewogICAgIH0KIAotICAgIHZv
aWQgYXBwZW5kKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQpOwotICAgIHZvaWQgYXBwZW5kKGNvbnN0
IGNoYXIqLCB1bnNpZ25lZCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYXBwZW5kKGNv
bnN0IFVDaGFyKiwgdW5zaWduZWQpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGFwcGVu
ZChjb25zdCBjaGFyKiwgdW5zaWduZWQpOwogCiAgICAgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5n
JiBzdHJpbmcpCiAgICAgewpAQCAtOTksMTEgKzk5LDExIEBACiAKICAgICBib29sIGlzRW1wdHko
KSBjb25zdCB7IHJldHVybiAhbGVuZ3RoKCk7IH0KIAotICAgIHZvaWQgcmVzZXJ2ZUNhcGFjaXR5
KHVuc2lnbmVkIG5ld0NhcGFjaXR5KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCByZXNl
cnZlQ2FwYWNpdHkodW5zaWduZWQgbmV3Q2FwYWNpdHkpOwogCi0gICAgdm9pZCByZXNpemUodW5z
aWduZWQgbmV3U2l6ZSk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVzaXplKHVuc2ln
bmVkIG5ld1NpemUpOwogCi0gICAgdm9pZCBzaHJpbmtUb0ZpdCgpOworICAgIFdURl9FWFBPUlRf
UFJJVkFURSB2b2lkIHNocmlua1RvRml0KCk7CiAKICAgICBVQ2hhciBvcGVyYXRvcltdKHVuc2ln
bmVkIGkpIGNvbnN0CiAgICAgewpAQCAtMTI0LDcgKzEyNCw3IEBACiBwcml2YXRlOgogICAgIHZv
aWQgYWxsb2NhdGVCdWZmZXIoY29uc3QgVUNoYXIqIGN1cnJlbnRDaGFyYWN0ZXJzLCB1bnNpZ25l
ZCByZXF1aXJlZExlbmd0aCk7CiAgICAgVUNoYXIqIGFwcGVuZFVuaW5pdGlhbGl6ZWQodW5zaWdu
ZWQgbGVuZ3RoKTsKLSAgICB2b2lkIHJlaWZ5U3RyaW5nKCk7CisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHZvaWQgcmVpZnlTdHJpbmcoKTsKIAogICAgIHVuc2lnbmVkIG1fbGVuZ3RoOwogICAgIFN0
cmluZyBtX3N0cmluZzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9XVEZT
dHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvV1RG
U3RyaW5nLmgJKHJldmlzaW9uIDgyMDEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90
ZXh0L1dURlN0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw4ICs2Nyw4IEBACiAKIGJvb2wg
Y2hhcmFjdGVyc0FyZUFsbEFTQ0lJKGNvbnN0IFVDaGFyKiwgc2l6ZV90KTsKIGJvb2wgY2hhcmFj
dGVyc0FyZUFsbExhdGluMShjb25zdCBVQ2hhciosIHNpemVfdCk7Ci1pbnQgY2hhcmFjdGVyc1Rv
SW50U3RyaWN0KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDAsIGludCBiYXNlID0g
MTApOwotdW5zaWduZWQgY2hhcmFjdGVyc1RvVUludFN0cmljdChjb25zdCBVQ2hhciosIHNpemVf
dCwgYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKTsKK1dURl9FWFBPUlRfUFJJVkFURSBpbnQg
Y2hhcmFjdGVyc1RvSW50U3RyaWN0KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDAs
IGludCBiYXNlID0gMTApOworV1RGX0VYUE9SVF9QUklWQVRFIHVuc2lnbmVkIGNoYXJhY3RlcnNU
b1VJbnRTdHJpY3QoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gMCwgaW50IGJhc2Ug
PSAxMCk7CiBpbnQ2NF90IGNoYXJhY3RlcnNUb0ludDY0U3RyaWN0KGNvbnN0IFVDaGFyKiwgc2l6
ZV90LCBib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApOwogdWludDY0X3QgY2hhcmFjdGVyc1Rv
VUludDY0U3RyaWN0KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDAsIGludCBiYXNl
ID0gMTApOwogaW50cHRyX3QgY2hhcmFjdGVyc1RvSW50UHRyU3RyaWN0KGNvbnN0IFVDaGFyKiwg
c2l6ZV90LCBib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApOwpAQCAtNzksNyArNzksNyBAQAog
dWludDY0X3QgY2hhcmFjdGVyc1RvVUludDY0KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBv
ayA9IDApOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKIGludHB0cl90IGNoYXJhY3RlcnNU
b0ludFB0cihjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSAwKTsgLy8gaWdub3JlcyB0
cmFpbGluZyBnYXJiYWdlCiAKLWRvdWJsZSBjaGFyYWN0ZXJzVG9Eb3VibGUoY29uc3QgVUNoYXIq
LCBzaXplX3QsIGJvb2wqIG9rID0gMCwgYm9vbCogZGlkUmVhZE51bWJlciA9IDApOworV1RGX0VY
UE9SVF9QUklWQVRFIGRvdWJsZSBjaGFyYWN0ZXJzVG9Eb3VibGUoY29uc3QgVUNoYXIqLCBzaXpl
X3QsIGJvb2wqIG9rID0gMCwgYm9vbCogZGlkUmVhZE51bWJlciA9IDApOwogZmxvYXQgY2hhcmFj
dGVyc1RvRmxvYXQoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gMCwgYm9vbCogZGlk
UmVhZE51bWJlciA9IDApOwogCiB0ZW1wbGF0ZTxib29sIGlzU3BlY2lhbENoYXJhY3RlcihVQ2hh
cik+IGJvb2wgaXNBbGxTcGVjaWFsQ2hhcmFjdGVycyhjb25zdCBVQ2hhciosIHNpemVfdCk7CkBA
IC04NywxMCArODcsMTAgQEAKIGNsYXNzIFN0cmluZyB7CiBwdWJsaWM6CiAgICAgLy8gQ29uc3Ry
dWN0IGEgbnVsbCBzdHJpbmcsIGRpc3Rpbmd1aXNoYWJsZSBmcm9tIGFuIGVtcHR5IHN0cmluZy4K
LSAgICBTdHJpbmcoKSB7IH0KKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nKCkgeyB9CiAK
ICAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBVVEYtMTYgZGF0YS4KLSAgICBTdHJpbmco
Y29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIFN0cmluZyhjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3Ro
KTsKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyBieSBjb3B5aW5nIHRoZSBjb250ZW50cyBv
ZiBhIHZlY3Rvci4gIFRvIGF2b2lkCiAgICAgLy8gY29weWluZywgY29uc2lkZXIgdXNpbmcgU3Ry
aW5nOjphZG9wdCBpbnN0ZWFkLgpAQCAtOTgsMTggKzk4LDE4IEBACiAgICAgZXhwbGljaXQgU3Ry
aW5nKGNvbnN0IFZlY3RvcjxVQ2hhciwgaW5saW5lQ2FwYWNpdHk+Jik7CiAKICAgICAvLyBDb25z
dHJ1Y3QgYSBzdHJpbmcgd2l0aCBVVEYtMTYgZGF0YSwgZnJvbSBhIG51bGwtdGVybWluYXRlZCBz
b3VyY2UuCi0gICAgU3RyaW5nKGNvbnN0IFVDaGFyKik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IFN0cmluZyhjb25zdCBVQ2hhciopOwogCiAgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdpdGgg
bGF0aW4xIGRhdGEuCi0gICAgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVk
IGxlbmd0aCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyhjb25zdCBjaGFyKiBjaGFy
YWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpOwogCiAgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdp
dGggbGF0aW4xIGRhdGEsIGZyb20gYSBudWxsLXRlcm1pbmF0ZWQgc291cmNlLgotICAgIFN0cmlu
Zyhjb25zdCBjaGFyKiBjaGFyYWN0ZXJzKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5n
KGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOwogCiAgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHJl
ZmVyZW5jaW5nIGFuIGV4aXN0aW5nIFN0cmluZ0ltcGwuCi0gICAgU3RyaW5nKFN0cmluZ0ltcGwq
IGltcGwpIDogbV9pbXBsKGltcGwpIHsgfQotICAgIFN0cmluZyhQYXNzUmVmUHRyPFN0cmluZ0lt
cGw+IGltcGwpIDogbV9pbXBsKGltcGwpIHsgfQotICAgIFN0cmluZyhSZWZQdHI8U3RyaW5nSW1w
bD4gaW1wbCkgOiBtX2ltcGwoaW1wbCkgeyB9CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmlu
ZyhTdHJpbmdJbXBsKiBpbXBsKSA6IG1faW1wbChpbXBsKSB7IH0KKyAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgU3RyaW5nKFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gaW1wbCkgOiBtX2ltcGwoaW1wbCkg
eyB9CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyhSZWZQdHI8U3RyaW5nSW1wbD4gaW1w
bCkgOiBtX2ltcGwoaW1wbCkgeyB9CiAKICAgICAvLyBJbmxpbmUgdGhlIGRlc3RydWN0b3IuCiAg
ICAgQUxXQVlTX0lOTElORSB+U3RyaW5nKCkgeyB9CkBAIC0xMzksOSArMTM5LDkgQEAKICAgICAg
ICAgcmV0dXJuIG1faW1wbC0+Y2hhcmFjdGVycygpOwogICAgIH0KIAotICAgIENTdHJpbmcgYXNj
aWkoKSBjb25zdDsKLSAgICBDU3RyaW5nIGxhdGluMSgpIGNvbnN0OwotICAgIENTdHJpbmcgdXRm
OChib29sIHN0cmljdCA9IGZhbHNlKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgQ1N0
cmluZyBhc2NpaSgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBDU3RyaW5nIGxhdGlu
MSgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBDU3RyaW5nIHV0ZjgoYm9vbCBzdHJp
Y3QgPSBmYWxzZSkgY29uc3Q7CiAKICAgICBVQ2hhciBvcGVyYXRvcltdKHVuc2lnbmVkIGluZGV4
KSBjb25zdAogICAgIHsKQEAgLTE1MCwxNSArMTUwLDE1IEBACiAgICAgICAgIHJldHVybiBtX2lt
cGwtPmNoYXJhY3RlcnMoKVtpbmRleF07CiAgICAgfQogCi0gICAgc3RhdGljIFN0cmluZyBudW1i
ZXIoc2hvcnQpOwotICAgIHN0YXRpYyBTdHJpbmcgbnVtYmVyKHVuc2lnbmVkIHNob3J0KTsKLSAg
ICBzdGF0aWMgU3RyaW5nIG51bWJlcihpbnQpOwotICAgIHN0YXRpYyBTdHJpbmcgbnVtYmVyKHVu
c2lnbmVkKTsKLSAgICBzdGF0aWMgU3RyaW5nIG51bWJlcihsb25nKTsKLSAgICBzdGF0aWMgU3Ry
aW5nIG51bWJlcih1bnNpZ25lZCBsb25nKTsKLSAgICBzdGF0aWMgU3RyaW5nIG51bWJlcihsb25n
IGxvbmcpOwotICAgIHN0YXRpYyBTdHJpbmcgbnVtYmVyKHVuc2lnbmVkIGxvbmcgbG9uZyk7Ci0g
ICAgc3RhdGljIFN0cmluZyBudW1iZXIoZG91YmxlKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIFN0cmluZyBudW1iZXIoc2hvcnQpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0
aWMgU3RyaW5nIG51bWJlcih1bnNpZ25lZCBzaG9ydCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBTdHJpbmcgbnVtYmVyKGludCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBTdHJpbmcgbnVtYmVyKHVuc2lnbmVkKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IFN0cmluZyBudW1iZXIobG9uZyk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJp
bmcgbnVtYmVyKHVuc2lnbmVkIGxvbmcpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMg
U3RyaW5nIG51bWJlcihsb25nIGxvbmcpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMg
U3RyaW5nIG51bWJlcih1bnNpZ25lZCBsb25nIGxvbmcpOworICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgU3RyaW5nIG51bWJlcihkb3VibGUpOwogCiAgICAgLy8gRmluZCBhIHNpbmdsZSBj
aGFyYWN0ZXIgb3Igc3RyaW5nLCBhbHNvIHdpdGggbWF0Y2ggZnVuY3Rpb24gJiBsYXRpbjEgZm9y
bXMuCiAgICAgc2l6ZV90IGZpbmQoVUNoYXIgYywgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdApA
QCAtMTc3LDkgKzE3Nyw5IEBACiAgICAgICAgIHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+cmV2
ZXJzZUZpbmQoc3RyLmltcGwoKSwgc3RhcnQpIDogbm90Rm91bmQ7IH0KIAogICAgIC8vIENhc2Ug
aW5zZW5zaXRpdmUgc3RyaW5nIG1hdGNoaW5nLgotICAgIHNpemVfdCBmaW5kSWdub3JpbmdDYXNl
KGNvbnN0IGNoYXIqIHN0ciwgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdAorICAgIFdURl9FWFBP
UlRfUFJJVkFURSBzaXplX3QgZmluZElnbm9yaW5nQ2FzZShjb25zdCBjaGFyKiBzdHIsIHVuc2ln
bmVkIHN0YXJ0ID0gMCkgY29uc3QKICAgICAgICAgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5m
aW5kSWdub3JpbmdDYXNlKHN0ciwgc3RhcnQpIDogbm90Rm91bmQ7IH0KLSAgICBzaXplX3QgZmlu
ZElnbm9yaW5nQ2FzZShjb25zdCBTdHJpbmcmIHN0ciwgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25z
dAorICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgZmluZElnbm9yaW5nQ2FzZShjb25zdCBT
dHJpbmcmIHN0ciwgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdAogICAgICAgICB7IHJldHVybiBt
X2ltcGwgPyBtX2ltcGwtPmZpbmRJZ25vcmluZ0Nhc2Uoc3RyLmltcGwoKSwgc3RhcnQpIDogbm90
Rm91bmQ7IH0KICAgICBzaXplX3QgcmV2ZXJzZUZpbmRJZ25vcmluZ0Nhc2UoY29uc3QgU3RyaW5n
JiBzdHIsIHVuc2lnbmVkIHN0YXJ0ID0gVUlOVF9NQVgpIGNvbnN0CiAgICAgICAgIHsgcmV0dXJu
IG1faW1wbCA/IG1faW1wbC0+cmV2ZXJzZUZpbmRJZ25vcmluZ0Nhc2Uoc3RyLmltcGwoKSwgc3Rh
cnQpIDogbm90Rm91bmQ7IH0KQEAgLTE5Miw5ICsxOTIsOSBAQAogICAgIHNpemVfdCByZXZlcnNl
RmluZChjb25zdCBTdHJpbmcmIHN0ciwgdW5zaWduZWQgc3RhcnQsIGJvb2wgY2FzZVNlbnNpdGl2
ZSkgY29uc3QKICAgICAgICAgeyByZXR1cm4gY2FzZVNlbnNpdGl2ZSA/IHJldmVyc2VGaW5kKHN0
ciwgc3RhcnQpIDogcmV2ZXJzZUZpbmRJZ25vcmluZ0Nhc2Uoc3RyLCBzdGFydCk7IH0KIAotICAg
IGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpOworICAgIFdURl9F
WFBPUlRfUFJJVkFURSBjb25zdCBVQ2hhciogY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24o
KTsKICAgICAKLSAgICBVQ2hhcjMyIGNoYXJhY3RlclN0YXJ0aW5nQXQodW5zaWduZWQpIGNvbnN0
OyAvLyBEaXR0by4KKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgVUNoYXIzMiBjaGFyYWN0ZXJTdGFy
dGluZ0F0KHVuc2lnbmVkKSBjb25zdDsgLy8gRGl0dG8uCiAgICAgCiAgICAgYm9vbCBjb250YWlu
cyhVQ2hhciBjKSBjb25zdCB7IHJldHVybiBmaW5kKGMpICE9IG5vdEZvdW5kOyB9CiAgICAgYm9v
bCBjb250YWlucyhjb25zdCBjaGFyKiBzdHIsIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IHRydWUpIGNv
bnN0IHsgcmV0dXJuIGZpbmQoc3RyLCAwLCBjYXNlU2Vuc2l0aXZlKSAhPSBub3RGb3VuZDsgfQpA
QCAtMjA1LDExICsyMDUsMTEgQEAKICAgICBib29sIGVuZHNXaXRoKGNvbnN0IFN0cmluZyYgcywg
Ym9vbCBjYXNlU2Vuc2l0aXZlID0gdHJ1ZSkgY29uc3QKICAgICAgICAgeyByZXR1cm4gbV9pbXBs
ID8gbV9pbXBsLT5lbmRzV2l0aChzLmltcGwoKSwgY2FzZVNlbnNpdGl2ZSkgOiBzLmlzRW1wdHko
KTsgfQogCi0gICAgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBhcHBlbmQo
Y2hhcik7Ci0gICAgdm9pZCBhcHBlbmQoVUNoYXIpOwotICAgIHZvaWQgYXBwZW5kKGNvbnN0IFVD
aGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICB2b2lkIGluc2VydChjb25zdCBTdHJpbmcmLCB1
bnNpZ25lZCBwb3MpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGFwcGVuZChjb25zdCBT
dHJpbmcmKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmQoY2hhcik7CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYXBwZW5kKFVDaGFyKTsKKyAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgdm9pZCBhcHBlbmQoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSB2b2lkIGluc2VydChjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBwb3Mp
OwogICAgIHZvaWQgaW5zZXJ0KGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25l
ZCBwb3MpOwogCiAgICAgU3RyaW5nJiByZXBsYWNlKFVDaGFyIGEsIFVDaGFyIGIpIHsgaWYgKG1f
aW1wbCkgbV9pbXBsID0gbV9pbXBsLT5yZXBsYWNlKGEsIGIpOyByZXR1cm4gKnRoaXM7IH0KQEAg
LTIyMSwzMSArMjIxLDMxIEBACiAgICAgdm9pZCBtYWtlVXBwZXIoKSB7IGlmIChtX2ltcGwpIG1f
aW1wbCA9IG1faW1wbC0+dXBwZXIoKTsgfQogICAgIHZvaWQgbWFrZVNlY3VyZShVQ2hhciBhQ2hh
cikgeyBpZiAobV9pbXBsKSBtX2ltcGwgPSBtX2ltcGwtPnNlY3VyZShhQ2hhcik7IH0KIAotICAg
IHZvaWQgdHJ1bmNhdGUodW5zaWduZWQgbGVuKTsKLSAgICB2b2lkIHJlbW92ZSh1bnNpZ25lZCBw
b3MsIGludCBsZW4gPSAxKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCB0cnVuY2F0ZSh1
bnNpZ25lZCBsZW4pOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHJlbW92ZSh1bnNpZ25l
ZCBwb3MsIGludCBsZW4gPSAxKTsKIAotICAgIFN0cmluZyBzdWJzdHJpbmcodW5zaWduZWQgcG9z
LCB1bnNpZ25lZCBsZW4gPSBVSU5UX01BWCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IFN0cmluZyBzdWJzdHJpbmcodW5zaWduZWQgcG9zLCB1bnNpZ25lZCBsZW4gPSBVSU5UX01BWCkg
Y29uc3Q7CiAgICAgU3RyaW5nIHN1YnN0cmluZ1NoYXJpbmdJbXBsKHVuc2lnbmVkIHBvcywgdW5z
aWduZWQgbGVuID0gVUlOVF9NQVgpIGNvbnN0OwogICAgIFN0cmluZyBsZWZ0KHVuc2lnbmVkIGxl
bikgY29uc3QgeyByZXR1cm4gc3Vic3RyaW5nKDAsIGxlbik7IH0KICAgICBTdHJpbmcgcmlnaHQo
dW5zaWduZWQgbGVuKSBjb25zdCB7IHJldHVybiBzdWJzdHJpbmcobGVuZ3RoKCkgLSBsZW4sIGxl
bik7IH0KIAogICAgIC8vIFJldHVybnMgYSBsb3dlcmNhc2UvdXBwZXJjYXNlIHZlcnNpb24gb2Yg
dGhlIHN0cmluZwotICAgIFN0cmluZyBsb3dlcigpIGNvbnN0OwotICAgIFN0cmluZyB1cHBlcigp
IGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgbG93ZXIoKSBjb25zdDsKKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHVwcGVyKCkgY29uc3Q7CiAKLSAgICBTdHJpbmcg
c3RyaXBXaGl0ZVNwYWNlKCkgY29uc3Q7Ci0gICAgU3RyaW5nIHNpbXBsaWZ5V2hpdGVTcGFjZSgp
IGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgc3RyaXBXaGl0ZVNwYWNlKCkg
Y29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBzaW1wbGlmeVdoaXRlU3BhY2Uo
KSBjb25zdDsKIAotICAgIFN0cmluZyByZW1vdmVDaGFyYWN0ZXJzKENoYXJhY3Rlck1hdGNoRnVu
Y3Rpb25QdHIpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcmVtb3ZlQ2hh
cmFjdGVycyhDaGFyYWN0ZXJNYXRjaEZ1bmN0aW9uUHRyKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxi
b29sIGlzU3BlY2lhbENoYXJhY3RlcihVQ2hhcik+IGJvb2wgaXNBbGxTcGVjaWFsQ2hhcmFjdGVy
cygpIGNvbnN0OwogCiAgICAgLy8gUmV0dXJuIHRoZSBzdHJpbmcgd2l0aCBjYXNlIGZvbGRlZCBm
b3IgY2FzZSBpbnNlbnNpdGl2ZSBjb21wYXJpc29uLgotICAgIFN0cmluZyBmb2xkQ2FzZSgpIGNv
bnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgZm9sZENhc2UoKSBjb25zdDsKIAog
I2lmICFQTEFURk9STShRVCkKLSAgICBzdGF0aWMgU3RyaW5nIGZvcm1hdChjb25zdCBjaGFyICos
IC4uLikgV1RGX0FUVFJJQlVURV9QUklOVEYoMSwgMik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBTdHJpbmcgZm9ybWF0KGNvbnN0IGNoYXIgKiwgLi4uKSBXVEZfQVRUUklCVVRFX1BS
SU5URigxLCAyKTsKICNlbHNlCi0gICAgc3RhdGljIFN0cmluZyBmb3JtYXQoY29uc3QgY2hhciAq
LCAuLi4pOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RyaW5nIGZvcm1hdChjb25z
dCBjaGFyICosIC4uLik7CiAjZW5kaWYKIAogICAgIC8vIFJldHVybnMgYW4gdW5pbml0aWFsaXpl
ZCBzdHJpbmcuIFRoZSBjaGFyYWN0ZXJzIG5lZWRzIHRvIGJlIHdyaXR0ZW4KQEAgLTI1MywzNCAr
MjUzLDM0IEBACiAgICAgLy8gRmFpbHVyZSB0byBkbyB0aGlzIHdpbGwgaGF2ZSB1bnByZWRpY3Rh
YmxlIHJlc3VsdHMuCiAgICAgc3RhdGljIFN0cmluZyBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2ln
bmVkIGxlbmd0aCwgVUNoYXIqJiBkYXRhKSB7IHJldHVybiBTdHJpbmdJbXBsOjpjcmVhdGVVbmlu
aXRpYWxpemVkKGxlbmd0aCwgZGF0YSk7IH0KIAotICAgIHZvaWQgc3BsaXQoY29uc3QgU3RyaW5n
JiBzZXBhcmF0b3IsIFZlY3RvcjxTdHJpbmc+JiByZXN1bHQpIGNvbnN0OwotICAgIHZvaWQgc3Bs
aXQoY29uc3QgU3RyaW5nJiBzZXBhcmF0b3IsIGJvb2wgYWxsb3dFbXB0eUVudHJpZXMsIFZlY3Rv
cjxTdHJpbmc+JiByZXN1bHQpIGNvbnN0OwotICAgIHZvaWQgc3BsaXQoVUNoYXIgc2VwYXJhdG9y
LCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KSBjb25zdDsKLSAgICB2b2lkIHNwbGl0KFVDaGFyIHNl
cGFyYXRvciwgYm9vbCBhbGxvd0VtcHR5RW50cmllcywgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkg
Y29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc3BsaXQoY29uc3QgU3RyaW5nJiBz
ZXBhcmF0b3IsIFZlY3RvcjxTdHJpbmc+JiByZXN1bHQpIGNvbnN0OworICAgIFdURl9FWFBPUlRf
UFJJVkFURSB2b2lkIHNwbGl0KGNvbnN0IFN0cmluZyYgc2VwYXJhdG9yLCBib29sIGFsbG93RW1w
dHlFbnRyaWVzLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KSBjb25zdDsKKyAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgdm9pZCBzcGxpdChVQ2hhciBzZXBhcmF0b3IsIFZlY3RvcjxTdHJpbmc+JiByZXN1
bHQpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNwbGl0KFVDaGFyIHNlcGFy
YXRvciwgYm9vbCBhbGxvd0VtcHR5RW50cmllcywgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkgY29u
c3Q7CiAKLSAgICBpbnQgdG9JbnRTdHJpY3QoYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKSBj
b25zdDsKLSAgICB1bnNpZ25lZCB0b1VJbnRTdHJpY3QoYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9
IDEwKSBjb25zdDsKLSAgICBpbnQ2NF90IHRvSW50NjRTdHJpY3QoYm9vbCogb2sgPSAwLCBpbnQg
YmFzZSA9IDEwKSBjb25zdDsKLSAgICB1aW50NjRfdCB0b1VJbnQ2NFN0cmljdChib29sKiBvayA9
IDAsIGludCBiYXNlID0gMTApIGNvbnN0OwotICAgIGludHB0cl90IHRvSW50UHRyU3RyaWN0KGJv
b2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IGludCB0b0ludFN0cmljdChib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApIGNvbnN0OworICAg
IFdURl9FWFBPUlRfUFJJVkFURSB1bnNpZ25lZCB0b1VJbnRTdHJpY3QoYm9vbCogb2sgPSAwLCBp
bnQgYmFzZSA9IDEwKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgaW50NjRfdCB0b0lu
dDY0U3RyaWN0KGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCkgY29uc3Q7CisgICAgV1RGX0VY
UE9SVF9QUklWQVRFIHVpbnQ2NF90IHRvVUludDY0U3RyaWN0KGJvb2wqIG9rID0gMCwgaW50IGJh
c2UgPSAxMCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGludHB0cl90IHRvSW50UHRy
U3RyaWN0KGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCkgY29uc3Q7CiAKLSAgICBpbnQgdG9J
bnQoYm9vbCogb2sgPSAwKSBjb25zdDsKLSAgICB1bnNpZ25lZCB0b1VJbnQoYm9vbCogb2sgPSAw
KSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgaW50IHRvSW50KGJvb2wqIG9rID0gMCkg
Y29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHVuc2lnbmVkIHRvVUludChib29sKiBvayA9
IDApIGNvbnN0OwogICAgIGludDY0X3QgdG9JbnQ2NChib29sKiBvayA9IDApIGNvbnN0OwotICAg
IHVpbnQ2NF90IHRvVUludDY0KGJvb2wqIG9rID0gMCkgY29uc3Q7Ci0gICAgaW50cHRyX3QgdG9J
bnRQdHIoYm9vbCogb2sgPSAwKSBjb25zdDsKLSAgICBkb3VibGUgdG9Eb3VibGUoYm9vbCogb2sg
PSAwLCBib29sKiBkaWRSZWFkTnVtYmVyID0gMCkgY29uc3Q7Ci0gICAgZmxvYXQgdG9GbG9hdChi
b29sKiBvayA9IDAsIGJvb2wqIGRpZFJlYWROdW1iZXIgPSAwKSBjb25zdDsKKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgdWludDY0X3QgdG9VSW50NjQoYm9vbCogb2sgPSAwKSBjb25zdDsKKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgaW50cHRyX3QgdG9JbnRQdHIoYm9vbCogb2sgPSAwKSBjb25zdDsK
KyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgZG91YmxlIHRvRG91YmxlKGJvb2wqIG9rID0gMCwgYm9v
bCogZGlkUmVhZE51bWJlciA9IDApIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBmbG9h
dCB0b0Zsb2F0KGJvb2wqIG9rID0gMCwgYm9vbCogZGlkUmVhZE51bWJlciA9IDApIGNvbnN0Owog
CiAgICAgYm9vbCBwZXJjZW50YWdlKGludCYgcGVyY2VudGFnZSkgY29uc3Q7CiAKICAgICAvLyBS
ZXR1cm5zIGEgU3RyaW5nSW1wbCBzdWl0YWJsZSBmb3IgdXNlIG9uIGFub3RoZXIgdGhyZWFkLgot
ICAgIFN0cmluZyBjcm9zc1RocmVhZFN0cmluZygpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBTdHJpbmcgY3Jvc3NUaHJlYWRTdHJpbmcoKSBjb25zdDsKICAgICAvLyBNYWtlcyBhIGRl
ZXAgY29weS4gSGVscGZ1bCBvbmx5IGlmIHlvdSBuZWVkIHRvIHVzZSBhIFN0cmluZyBvbiBhbm90
aGVyIHRocmVhZAogICAgIC8vICh1c2UgY3Jvc3NUaHJlYWRTdHJpbmcgaWYgdGhlIG1ldGhvZCBj
YWxsIGRvZXNuJ3QgbmVlZCB0byBiZSB0aHJlYWRzYWZlKS4KICAgICAvLyBTaW5jZSB0aGUgdW5k
ZXJseWluZyBTdHJpbmdJbXBsIG9iamVjdHMgYXJlIGltbXV0YWJsZSwgdGhlcmUncyBubyBvdGhl
ciByZWFzb24KICAgICAvLyB0byBldmVyIHByZWZlciBjb3B5KCkgb3ZlciBwbGFpbiBvbGQgYXNz
aWdubWVudC4KLSAgICBTdHJpbmcgdGhyZWFkc2FmZUNvcHkoKSBjb25zdDsKKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgU3RyaW5nIHRocmVhZHNhZmVDb3B5KCkgY29uc3Q7CiAKICAgICAvLyBQcmV2
ZW50IFN0cmluZ3MgZnJvbSBiZWluZyBpbXBsaWNpdGx5IGNvbnZlcnRhYmxlIHRvIGJvb2wgYXMg
aXQgd2lsbCBiZSBhbWJpZ3VvdXMgb24gYW55IHBsYXRmb3JtIHRoYXQKICAgICAvLyBhbGxvd3Mg
aW1wbGljaXQgY29udmVyc2lvbiB0byBhbm90aGVyIHBvaW50ZXIgdHlwZSAoZS5nLiwgTWFjIGFs
bG93cyBpbXBsaWNpdCBjb252ZXJzaW9uIHRvIE5TU3RyaW5nKikuCkBAIC0zMDksOCArMzA5LDgg
QEAKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oV1gpCi0gICAgU3RyaW5nKGNvbnN0IHd4U3RyaW5n
Jik7Ci0gICAgb3BlcmF0b3Igd3hTdHJpbmcoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgU3RyaW5nKGNvbnN0IHd4U3RyaW5nJik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIG9wZXJh
dG9yIHd4U3RyaW5nKCkgY29uc3Q7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKEhBSUtVKQpAQCAt
MzI0LDExICszMjQsMTEgQEAKIAogICAgIC8vIFN0cmluZzo6ZnJvbVVURjggd2lsbCByZXR1cm4g
YSBudWxsIHN0cmluZyBpZgogICAgIC8vIHRoZSBpbnB1dCBkYXRhIGNvbnRhaW5zIGludmFsaWQg
VVRGLTggc2VxdWVuY2VzLgotICAgIHN0YXRpYyBTdHJpbmcgZnJvbVVURjgoY29uc3QgY2hhcios
IHNpemVfdCk7Ci0gICAgc3RhdGljIFN0cmluZyBmcm9tVVRGOChjb25zdCBjaGFyKik7CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJpbmcgZnJvbVVURjgoY29uc3QgY2hhciosIHNp
emVfdCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJpbmcgZnJvbVVURjgoY29u
c3QgY2hhciopOwogCiAgICAgLy8gVHJpZXMgdG8gY29udmVydCB0aGUgcGFzc2VkIGluIHN0cmlu
ZyB0byBVVEYtOCwgYnV0IHdpbGwgZmFsbCBiYWNrIHRvIExhdGluLTEgaWYgdGhlIHN0cmluZyBp
cyBub3QgdmFsaWQgVVRGLTguCi0gICAgc3RhdGljIFN0cmluZyBmcm9tVVRGOFdpdGhMYXRpbjFG
YWxsYmFjayhjb25zdCBjaGFyKiwgc2l6ZV90KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIFN0cmluZyBmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjayhjb25zdCBjaGFyKiwgc2l6ZV90
KTsKICAgICAKICAgICAvLyBEZXRlcm1pbmVzIHRoZSB3cml0aW5nIGRpcmVjdGlvbiB1c2luZyB0
aGUgVW5pY29kZSBCaWRpIEFsZ29yaXRobSBydWxlcyBQMiBhbmQgUDMuCiAgICAgV1RGOjpVbmlj
b2RlOjpEaXJlY3Rpb24gZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oYm9vbCogaGFzU3Ryb25nRGly
ZWN0aW9uYWxpdHkgPSAwKSBjb25zdApAQCAtMzQ1LDcgKzM0NSw3IEBACiAKICAgICAvLyBIYXNo
IHRhYmxlIGRlbGV0ZWQgdmFsdWVzLCB3aGljaCBhcmUgb25seSBjb25zdHJ1Y3RlZCBhbmQgbmV2
ZXIgY29waWVkIG9yIGRlc3Ryb3llZC4KICAgICBTdHJpbmcoV1RGOjpIYXNoVGFibGVEZWxldGVk
VmFsdWVUeXBlKSA6IG1faW1wbChXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkgeyB9Ci0gICAg
Ym9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1wbC5pc0hh
c2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNI
YXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2ltcGwuaXNIYXNoVGFibGVE
ZWxldGVkVmFsdWUoKTsgfQogCiBwcml2YXRlOgogICAgIFJlZlB0cjxTdHJpbmdJbXBsPiBtX2lt
cGw7CkBAIC0zNTYsOSArMzU2LDkgQEAKIFFEYXRhU3RyZWFtJiBvcGVyYXRvcj4+KFFEYXRhU3Ry
ZWFtJiBzdHJlYW0sIFN0cmluZyYgc3RyKTsKICNlbmRpZgogCi1TdHJpbmcgb3BlcmF0b3IrKGNv
bnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOwotU3RyaW5nIG9wZXJhdG9yKyhjb25zdCBTdHJp
bmcmLCBjb25zdCBjaGFyKik7Ci1TdHJpbmcgb3BlcmF0b3IrKGNvbnN0IGNoYXIqLCBjb25zdCBT
dHJpbmcmKTsKK1dURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgb3BlcmF0b3IrKGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYpOworV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBvcGVyYXRvciso
Y29uc3QgU3RyaW5nJiwgY29uc3QgY2hhciopOworV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBv
cGVyYXRvcisoY29uc3QgY2hhciosIGNvbnN0IFN0cmluZyYpOwogCiBpbmxpbmUgU3RyaW5nJiBv
cGVyYXRvcis9KFN0cmluZyYgYSwgY29uc3QgU3RyaW5nJiBiKSB7IGEuYXBwZW5kKGIpOyByZXR1
cm4gYTsgfQogCkBAIC00MTksNyArNDE5LDcgQEAKICAgICByZXR1cm4gIShvcmVkICYgMHhGRjAw
KTsKIH0KIAotaW50IGNvZGVQb2ludENvbXBhcmUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
Jik7CitXVEZfRVhQT1JUX1BSSVZBVEUgaW50IGNvZGVQb2ludENvbXBhcmUoY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJik7CiAKIGlubGluZSBzaXplX3QgZmluZChjb25zdCBVQ2hhciogY2hh
cmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBVQ2hhciBtYXRjaENoYXJhY3RlciwgdW5zaWduZWQg
aW5kZXggPSAwKQogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmlu
Z0ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3Ry
aW5nSW1wbC5oCShyZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
dGV4dC9TdHJpbmdJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0MSwxMSArMTQxLDExIEBACiAg
ICAgfQogCiBwdWJsaWM6Ci0gICAgflN0cmluZ0ltcGwoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgflN0cmluZ0ltcGwoKTsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGNy
ZWF0ZShjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8U3RyaW5nSW1wbD4gY3JlYXRlKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOwotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGNyZWF0ZShjb25zdCBjaGFyKik7CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGNyZWF0ZShj
b25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGNyZWF0ZShjb25zdCBjaGFyKiwgdW5zaWduZWQg
bGVuZ3RoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5n
SW1wbD4gY3JlYXRlKGNvbnN0IGNoYXIqKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJ
bXBsPiBjcmVhdGUoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgsIFBhc3NSZWZQdHI8U2hh
cmVkVUNoYXI+IHNoYXJlZEJ1ZmZlcik7CiAgICAgc3RhdGljIEFMV0FZU19JTkxJTkUgUGFzc1Jl
ZlB0cjxTdHJpbmdJbXBsPiBjcmVhdGUoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXAsIHVuc2ln
bmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQogICAgIHsKQEAgLTE1OSw3ICsxNTksNyBAQAog
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0cmluZ0ltcGwocmVwLT5tX2RhdGEgKyBvZmZz
ZXQsIGxlbmd0aCwgb3duZXJSZXApKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxT
dHJpbmdJbXBsPiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCwgVUNoYXIqJiBk
YXRhKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1w
bD4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgsIFVDaGFyKiYgZGF0YSk7CiAg
ICAgc3RhdGljIEFMV0FZU19JTkxJTkUgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiB0cnlDcmVhdGVV
bmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCwgVUNoYXIqJiBvdXRwdXQpCiAgICAgewogICAg
ICAgICBpZiAoIWxlbmd0aCkgewpAQCAtMTk1LDEwICsxOTUsMTAgQEAKICAgICAgICAgfQogICAg
ICAgICByZXR1cm4gZW1wdHkoKTsKICAgICB9Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5n
SW1wbD4gYWRvcHQoU3RyaW5nQnVmZmVyJik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkb3B0KFN0cmluZ0J1ZmZlciYpOwogCiAgICAgU2hh
cmVkVUNoYXIqIHNoYXJlZEJ1ZmZlcigpOwotICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzKCkg
Y29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGNvbnN0IFVD
aGFyKiBjaGFyYWN0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CiAKICAgICBzaXplX3Qg
Y29zdCgpCiAgICAgewpAQCAtMjQxLDcgKzI0MSw3IEBACiAgICAgQUxXQVlTX0lOTElORSB2b2lk
IGRlcmVmKCkgeyBtX3JlZkNvdW50QW5kRmxhZ3MgLT0gc19yZWZDb3VudEluY3JlbWVudDsgaWYg
KCEobV9yZWZDb3VudEFuZEZsYWdzICYgKHNfcmVmQ291bnRNYXNrIHwgc19yZWZDb3VudEZsYWdT
dGF0aWMpKSkgZGVsZXRlIHRoaXM7IH0KICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaGFzT25lUmVm
KCkgY29uc3QgeyByZXR1cm4gKG1fcmVmQ291bnRBbmRGbGFncyAmIChzX3JlZkNvdW50TWFzayB8
IHNfcmVmQ291bnRGbGFnU3RhdGljKSkgPT0gc19yZWZDb3VudEluY3JlbWVudDsgfQogCi0gICAg
c3RhdGljIFN0cmluZ0ltcGwqIGVtcHR5KCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBTdHJpbmdJbXBsKiBlbXB0eSgpOwogCiAgICAgc3RhdGljIHZvaWQgY29weUNoYXJzKFVDaGFy
KiBkZXN0aW5hdGlvbiwgY29uc3QgVUNoYXIqIHNvdXJjZSwgdW5zaWduZWQgbnVtQ2hhcmFjdGVy
cykKICAgICB7CkBAIC0yNTksMTIgKzI1OSwxMiBAQAogICAgIC8vIFNpbmNlIFN0cmluZ0ltcGwg
b2JqZWN0cyBhcmUgaW1tdXRhYmxlLCB0aGVyZSdzIG5vIG90aGVyIHJlYXNvbiB0byBtYWtlIGEg
Y29weS4KICAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHRocmVhZHNhZmVDb3B5KCkgY29uc3Q7
CiAKLSAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHN1YnN0cmluZyh1bnNpZ25lZCBwb3MsIHVu
c2lnbmVkIGxlbiA9IFVJTlRfTUFYKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgUGFzc1JlZlB0
cjxTdHJpbmdJbXBsPiBzdWJzdHJpbmcodW5zaWduZWQgcG9zLCB1bnNpZ25lZCBsZW4gPSBVSU5U
X01BWCk7CiAKICAgICBVQ2hhciBvcGVyYXRvcltdKHVuc2lnbmVkIGkpIHsgQVNTRVJUKGkgPCBt
X2xlbmd0aCk7IHJldHVybiBtX2RhdGFbaV07IH0KICAgICBVQ2hhcjMyIGNoYXJhY3RlclN0YXJ0
aW5nQXQodW5zaWduZWQpOwogCi0gICAgYm9vbCBjb250YWluc09ubHlXaGl0ZXNwYWNlKCk7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgY29udGFpbnNPbmx5V2hpdGVzcGFjZSgpOwogCiAg
ICAgaW50IHRvSW50U3RyaWN0KGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCk7CiAgICAgdW5z
aWduZWQgdG9VSW50U3RyaWN0KGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCk7CkBAIC0yNzIs
NyArMjcyLDcgQEAKICAgICB1aW50NjRfdCB0b1VJbnQ2NFN0cmljdChib29sKiBvayA9IDAsIGlu
dCBiYXNlID0gMTApOwogICAgIGludHB0cl90IHRvSW50UHRyU3RyaWN0KGJvb2wqIG9rID0gMCwg
aW50IGJhc2UgPSAxMCk7CiAKLSAgICBpbnQgdG9JbnQoYm9vbCogb2sgPSAwKTsgLy8gaWdub3Jl
cyB0cmFpbGluZyBnYXJiYWdlCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGludCB0b0ludChib29s
KiBvayA9IDApOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKICAgICB1bnNpZ25lZCB0b1VJ
bnQoYm9vbCogb2sgPSAwKTsgLy8gaWdub3JlcyB0cmFpbGluZyBnYXJiYWdlCiAgICAgaW50NjRf
dCB0b0ludDY0KGJvb2wqIG9rID0gMCk7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQogICAg
IHVpbnQ2NF90IHRvVUludDY0KGJvb2wqIG9rID0gMCk7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2Fy
YmFnZQpAQCAtMjgxLDM5ICsyODEsMzkgQEAKICAgICBkb3VibGUgdG9Eb3VibGUoYm9vbCogb2sg
PSAwLCBib29sKiBkaWRSZWFkTnVtYmVyID0gMCk7CiAgICAgZmxvYXQgdG9GbG9hdChib29sKiBv
ayA9IDAsIGJvb2wqIGRpZFJlYWROdW1iZXIgPSAwKTsKIAotICAgIFBhc3NSZWZQdHI8U3RyaW5n
SW1wbD4gbG93ZXIoKTsKLSAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHVwcGVyKCk7CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gbG93ZXIoKTsKKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiB1cHBlcigpOwogCiAgICAg
ZW51bSBMYXN0Q2hhcmFjdGVyQmVoYXZpb3IgeyBPYnNjdXJlTGFzdENoYXJhY3RlciwgRGlzcGxh
eUxhc3RDaGFyYWN0ZXIgfTsKIAotICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gc2VjdXJlKFVD
aGFyLCBMYXN0Q2hhcmFjdGVyQmVoYXZpb3IgPSBPYnNjdXJlTGFzdENoYXJhY3Rlcik7CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gc2VjdXJlKFVDaGFyLCBM
YXN0Q2hhcmFjdGVyQmVoYXZpb3IgPSBPYnNjdXJlTGFzdENoYXJhY3Rlcik7CiAgICAgUGFzc1Jl
ZlB0cjxTdHJpbmdJbXBsPiBmb2xkQ2FzZSgpOwogCiAgICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBs
PiBzdHJpcFdoaXRlU3BhY2UoKTsKLSAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHNpbXBsaWZ5
V2hpdGVTcGFjZSgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBQYXNzUmVmUHRyPFN0cmluZ0lt
cGw+IHNpbXBsaWZ5V2hpdGVTcGFjZSgpOwogCiAgICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBy
ZW1vdmVDaGFyYWN0ZXJzKENoYXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIpOwogCi0gICAgc2l6ZV90
IGZpbmQoVUNoYXIsIHVuc2lnbmVkIGluZGV4ID0gMCk7Ci0gICAgc2l6ZV90IGZpbmQoQ2hhcmFj
dGVyTWF0Y2hGdW5jdGlvblB0ciwgdW5zaWduZWQgaW5kZXggPSAwKTsKLSAgICBzaXplX3QgZmlu
ZChjb25zdCBjaGFyKiwgdW5zaWduZWQgaW5kZXggPSAwKTsKLSAgICBzaXplX3QgZmluZChTdHJp
bmdJbXBsKiwgdW5zaWduZWQgaW5kZXggPSAwKTsKLSAgICBzaXplX3QgZmluZElnbm9yaW5nQ2Fz
ZShjb25zdCBjaGFyKiwgdW5zaWduZWQgaW5kZXggPSAwKTsKLSAgICBzaXplX3QgZmluZElnbm9y
aW5nQ2FzZShTdHJpbmdJbXBsKiwgdW5zaWduZWQgaW5kZXggPSAwKTsKKyAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgc2l6ZV90IGZpbmQoVUNoYXIsIHVuc2lnbmVkIGluZGV4ID0gMCk7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIHNpemVfdCBmaW5kKENoYXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIsIHVu
c2lnbmVkIGluZGV4ID0gMCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCBmaW5kKGNv
bnN0IGNoYXIqLCB1bnNpZ25lZCBpbmRleCA9IDApOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBz
aXplX3QgZmluZChTdHJpbmdJbXBsKiwgdW5zaWduZWQgaW5kZXggPSAwKTsKKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgc2l6ZV90IGZpbmRJZ25vcmluZ0Nhc2UoY29uc3QgY2hhciosIHVuc2lnbmVk
IGluZGV4ID0gMCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCBmaW5kSWdub3JpbmdD
YXNlKFN0cmluZ0ltcGwqLCB1bnNpZ25lZCBpbmRleCA9IDApOwogCi0gICAgc2l6ZV90IHJldmVy
c2VGaW5kKFVDaGFyLCB1bnNpZ25lZCBpbmRleCA9IFVJTlRfTUFYKTsKLSAgICBzaXplX3QgcmV2
ZXJzZUZpbmQoU3RyaW5nSW1wbCosIHVuc2lnbmVkIGluZGV4ID0gVUlOVF9NQVgpOwotICAgIHNp
emVfdCByZXZlcnNlRmluZElnbm9yaW5nQ2FzZShTdHJpbmdJbXBsKiwgdW5zaWduZWQgaW5kZXgg
PSBVSU5UX01BWCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCByZXZlcnNlRmluZChV
Q2hhciwgdW5zaWduZWQgaW5kZXggPSBVSU5UX01BWCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IHNpemVfdCByZXZlcnNlRmluZChTdHJpbmdJbXBsKiwgdW5zaWduZWQgaW5kZXggPSBVSU5UX01B
WCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCByZXZlcnNlRmluZElnbm9yaW5nQ2Fz
ZShTdHJpbmdJbXBsKiwgdW5zaWduZWQgaW5kZXggPSBVSU5UX01BWCk7CiAKICAgICBib29sIHN0
YXJ0c1dpdGgoU3RyaW5nSW1wbCogc3RyLCBib29sIGNhc2VTZW5zaXRpdmUgPSB0cnVlKSB7IHJl
dHVybiAoY2FzZVNlbnNpdGl2ZSA/IHJldmVyc2VGaW5kKHN0ciwgMCkgOiByZXZlcnNlRmluZEln
bm9yaW5nQ2FzZShzdHIsIDApKSA9PSAwOyB9Ci0gICAgYm9vbCBlbmRzV2l0aChTdHJpbmdJbXBs
KiwgYm9vbCBjYXNlU2Vuc2l0aXZlID0gdHJ1ZSk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJv
b2wgZW5kc1dpdGgoU3RyaW5nSW1wbCosIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IHRydWUpOwogCi0g
ICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXBsYWNlKFVDaGFyLCBVQ2hhcik7Ci0gICAgUGFz
c1JlZlB0cjxTdHJpbmdJbXBsPiByZXBsYWNlKFVDaGFyLCBTdHJpbmdJbXBsKik7Ci0gICAgUGFz
c1JlZlB0cjxTdHJpbmdJbXBsPiByZXBsYWNlKFN0cmluZ0ltcGwqLCBTdHJpbmdJbXBsKik7Ci0g
ICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXBsYWNlKHVuc2lnbmVkIGluZGV4LCB1bnNpZ25l
ZCBsZW4sIFN0cmluZ0ltcGwqKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgUGFzc1JlZlB0cjxT
dHJpbmdJbXBsPiByZXBsYWNlKFVDaGFyLCBVQ2hhcik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwbGFjZShVQ2hhciwgU3RyaW5nSW1wbCopOworICAg
IFdURl9FWFBPUlRfUFJJVkFURSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJlcGxhY2UoU3RyaW5n
SW1wbCosIFN0cmluZ0ltcGwqKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgUGFzc1JlZlB0cjxT
dHJpbmdJbXBsPiByZXBsYWNlKHVuc2lnbmVkIGluZGV4LCB1bnNpZ25lZCBsZW4sIFN0cmluZ0lt
cGwqKTsKIAotICAgIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIGRlZmF1bHRXcml0aW5nRGlyZWN0
aW9uKGJvb2wqIGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5ID0gMCk7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIGRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKGJv
b2wqIGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5ID0gMCk7CiAKICNpZiBVU0UoQ0YpCiAgICAgQ0ZT
dHJpbmdSZWYgY3JlYXRlQ0ZTdHJpbmcoKTsKQEAgLTMyNiw3ICszMjYsNyBAQAogICAgIC8vIFRo
aXMgbnVtYmVyIG11c3QgYmUgYXQgbGVhc3QgMiB0byBhdm9pZCBzaGFyaW5nIGVtcHR5LCBudWxs
IGFzIHdlbGwgYXMgMSBjaGFyYWN0ZXIgc3RyaW5ncyBmcm9tIFNtYWxsU3RyaW5ncy4KICAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgc19jb3B5Q2hhcnNJbmxpbmVDdXRPZmYgPSAyMDsKIAotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGNyZWF0ZVN0cmlwcGluZ051bGxDaGFyYWN0
ZXJzU2xvd0Nhc2UoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIFdURl9FWFBP
UlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBjcmVhdGVTdHJpcHBpbmdO
dWxsQ2hhcmFjdGVyc1Nsb3dDYXNlKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKICAg
ICAKICAgICBCdWZmZXJPd25lcnNoaXAgYnVmZmVyT3duZXJzaGlwKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8QnVmZmVyT3duZXJzaGlwPihtX3JlZkNvdW50QW5kRmxhZ3MgJiBzX3JlZkNv
dW50TWFza0J1ZmZlck93bmVyc2hpcCk7IH0KICAgICBib29sIGlzU3RhdGljKCkgY29uc3QgeyBy
ZXR1cm4gbV9yZWZDb3VudEFuZEZsYWdzICYgc19yZWZDb3VudEZsYWdTdGF0aWM7IH0KQEAgLTMz
OSwxNyArMzM5LDE3IEBACiAgICAgbXV0YWJsZSB1bnNpZ25lZCBtX2hhc2g7CiB9OwogCi1ib29s
IGVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqLCBjb25zdCBTdHJpbmdJbXBsKik7Ci1ib29sIGVxdWFs
KGNvbnN0IFN0cmluZ0ltcGwqLCBjb25zdCBjaGFyKik7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9v
bCBlcXVhbChjb25zdCBTdHJpbmdJbXBsKiwgY29uc3QgU3RyaW5nSW1wbCopOworV1RGX0VYUE9S
VF9QUklWQVRFIGJvb2wgZXF1YWwoY29uc3QgU3RyaW5nSW1wbCosIGNvbnN0IGNoYXIqKTsKIGlu
bGluZSBib29sIGVxdWFsKGNvbnN0IGNoYXIqIGEsIFN0cmluZ0ltcGwqIGIpIHsgcmV0dXJuIGVx
dWFsKGIsIGEpOyB9CiAKLWJvb2wgZXF1YWxJZ25vcmluZ0Nhc2UoU3RyaW5nSW1wbCosIFN0cmlu
Z0ltcGwqKTsKLWJvb2wgZXF1YWxJZ25vcmluZ0Nhc2UoU3RyaW5nSW1wbCosIGNvbnN0IGNoYXIq
KTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGVxdWFsSWdub3JpbmdDYXNlKFN0cmluZ0ltcGwq
LCBTdHJpbmdJbXBsKik7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBlcXVhbElnbm9yaW5nQ2Fz
ZShTdHJpbmdJbXBsKiwgY29uc3QgY2hhciopOwogaW5saW5lIGJvb2wgZXF1YWxJZ25vcmluZ0Nh
c2UoY29uc3QgY2hhciogYSwgU3RyaW5nSW1wbCogYikgeyByZXR1cm4gZXF1YWxJZ25vcmluZ0Nh
c2UoYiwgYSk7IH0KLWJvb2wgZXF1YWxJZ25vcmluZ0Nhc2UoY29uc3QgVUNoYXIqIGEsIGNvbnN0
IGNoYXIqIGIsIHVuc2lnbmVkIGxlbmd0aCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBlcXVh
bElnbm9yaW5nQ2FzZShjb25zdCBVQ2hhciosIGNvbnN0IGNoYXIqLCB1bnNpZ25lZCBsZW5ndGgp
OwogaW5saW5lIGJvb2wgZXF1YWxJZ25vcmluZ0Nhc2UoY29uc3QgY2hhciogYSwgY29uc3QgVUNo
YXIqIGIsIHVuc2lnbmVkIGxlbmd0aCkgeyByZXR1cm4gZXF1YWxJZ25vcmluZ0Nhc2UoYiwgYSwg
bGVuZ3RoKTsgfQogCi1ib29sIGVxdWFsSWdub3JpbmdOdWxsaXR5KFN0cmluZ0ltcGwqLCBTdHJp
bmdJbXBsKik7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBlcXVhbElnbm9yaW5nTnVsbGl0eShT
dHJpbmdJbXBsKiwgU3RyaW5nSW1wbCopOwogCiB0ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNp
dHk+CiBib29sIGVxdWFsSWdub3JpbmdOdWxsaXR5KGNvbnN0IFZlY3RvcjxVQ2hhciwgaW5saW5l
Q2FwYWNpdHk+JiBhLCBTdHJpbmdJbXBsKiBiKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi9CeXRlQXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L0J5dGVBcnJheS5oCShyZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvQnl0ZUFycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTgwLDcgKzgwLDcgQEAKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJ5dGVBcnJheT4g
Y3JlYXRlKHNpemVfdCBzaXplKTsKKyAgICAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQ
YXNzUmVmUHRyPEJ5dGVBcnJheT4gY3JlYXRlKHNpemVfdCk7CiAKICAgICBwcml2YXRlOgogICAg
ICAgICBCeXRlQXJyYXkoc2l6ZV90IHNpemUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL1BsYXRmb3JtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9Q
bGF0Zm9ybS5oCShyZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
UGxhdGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtMTE5Myw2ICsxMTkzLDkgQEAKICAgIHNpbmNl
IG1vc3QgcG9ydHMgdHJ5IHRvIHN1cHBvcnQgc3ViLXByb2plY3QgaW5kZXBlbmRlbmNlLCBhZGRp
bmcgbmV3IGhlYWRlcnMKICAgIHRvIFdURiBjYXVzZXMgbWFueSBwb3J0cyB0byBicmVhaywgYW5k
IHNvIHRoaXMgd2F5IHdlIGNhbiBhZGRyZXNzIHRoZSBidWlsZAogICAgYnJlYWthZ2VzIG9uZSBw
b3J0IGF0IGEgdGltZS4gKi8KKyNpZiBQTEFURk9STShXWCkKKyNkZWZpbmUgV1RGX1VTRV9FWFBP
UlRfTUFDUk9TIDEKKyNlbHNlCiAjZGVmaW5lIFdURl9VU0VfRVhQT1JUX01BQ1JPUyAwCi0KKyNl
bmRpZgogI2VuZGlmIC8qIFdURl9QbGF0Zm9ybV9oICovCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkocmV2aXNpb24gODIwMTApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTAwLDggKzEwMCw4IEBACiAgICAgICAgIEpTVmFsdWUgZXhlY3V0ZShFdmFs
RXhlY3V0YWJsZSogZXZhbE5vZGUsIENhbGxGcmFtZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmos
IFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluKTsKIAogICAgICAgICBKU1ZhbHVlIHJldHJpZXZl
QXJndW1lbnRzKENhbGxGcmFtZSosIEpTRnVuY3Rpb24qKSBjb25zdDsKLSAgICAgICAgSlNWYWx1
ZSByZXRyaWV2ZUNhbGxlcihDYWxsRnJhbWUqLCBKU0Z1bmN0aW9uKikgY29uc3Q7Ci0gICAgICAg
IHZvaWQgcmV0cmlldmVMYXN0Q2FsbGVyKENhbGxGcmFtZSosIGludCYgbGluZU51bWJlciwgaW50
cHRyX3QmIHNvdXJjZUlELCBVU3RyaW5nJiBzb3VyY2VVUkwsIEpTVmFsdWUmIGZ1bmN0aW9uKSBj
b25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSByZXRyaWV2ZUNhbGxlcihD
YWxsRnJhbWUqLCBKU0Z1bmN0aW9uKikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IHZvaWQgcmV0cmlldmVMYXN0Q2FsbGVyKENhbGxGcmFtZSosIGludCYgbGluZU51bWJlciwgaW50
cHRyX3QmIHNvdXJjZUlELCBVU3RyaW5nJiBzb3VyY2VVUkwsIEpTVmFsdWUmIGZ1bmN0aW9uKSBj
b25zdDsKICAgICAgICAgCiAgICAgICAgIHZvaWQgZ2V0QXJndW1lbnRzRGF0YShDYWxsRnJhbWUq
LCBKU0Z1bmN0aW9uKiYsIHB0cmRpZmZfdCYgZmlyc3RQYXJhbWV0ZXJJbmRleCwgUmVnaXN0ZXIq
JiBhcmd2LCBpbnQmIGFyZ2MpOwogICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS95YXJyL1lhcnJQYXR0ZXJuLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3lhcnIvWWFyclBhdHRlcm4uaAkocmV2aXNpb24gODIwMTApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUveWFyci9ZYXJyUGF0dGVybi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMTMsNyArMzEzLDcg
QEAKIH07CiAKIHN0cnVjdCBZYXJyUGF0dGVybiB7Ci0gICAgWWFyclBhdHRlcm4oY29uc3QgVVN0
cmluZyYgcGF0dGVybiwgYm9vbCBpZ25vcmVDYXNlLCBib29sIG11bHRpbGluZSwgY29uc3QgY2hh
cioqIGVycm9yKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBZYXJyUGF0dGVybihjb25zdCBVU3Ry
aW5nJiBwYXR0ZXJuLCBib29sIGlnbm9yZUNhc2UsIGJvb2wgbXVsdGlsaW5lLCBjb25zdCBjaGFy
KiogZXJyb3IpOwogCiAgICAgfllhcnJQYXR0ZXJuKCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUveWFyci9ZYXJyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3lhcnIvWWFyci5oCShyZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS95YXJyL1lhcnIuaAkod29ya2luZyBjb3B5KQpAQCAtNTcsOCArNTcsOCBAQAogICAgIEpTUmVn
RXhwRXJyb3JJbnRlcm5hbCA9IC00CiB9OwogCi1QYXNzT3duUHRyPEJ5dGVjb2RlUGF0dGVybj4g
Ynl0ZUNvbXBpbGUoWWFyclBhdHRlcm4mLCBCdW1wUG9pbnRlckFsbG9jYXRvciopOwotaW50IGlu
dGVycHJldChCeXRlY29kZVBhdHRlcm4qLCBjb25zdCBVQ2hhciogaW5wdXQsIHVuc2lnbmVkIHN0
YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIGludCogb3V0cHV0KTsKK0pTX0VYUE9SVF9QUklWQVRFIFBh
c3NPd25QdHI8Qnl0ZWNvZGVQYXR0ZXJuPiBieXRlQ29tcGlsZShZYXJyUGF0dGVybiYsIEJ1bXBQ
b2ludGVyQWxsb2NhdG9yKik7CitKU19FWFBPUlRfUFJJVkFURSBpbnQgaW50ZXJwcmV0KEJ5dGVj
b2RlUGF0dGVybiosIGNvbnN0IFVDaGFyKiBpbnB1dCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVk
IGxlbmd0aCwgaW50KiBvdXRwdXQpOwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6WWFycgogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgyMDQ0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMiBAQAor
MjAxMS0wMy0yNiAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOZWVkIGEgc2hv
cnQgZGVzY3JpcHRpb24gYW5kIGJ1ZyBVUkwgKE9PUFMhKQorCisgICAgICAgICogYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgICogY29sbGVjdG9yL2hhbmRsZXMvSGFu
ZGxlSGVhcC5oOgorICAgICAgICAqIGNvbmZpZy5oOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVn
Z2VyLmg6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuaDoKKyAgICAgICAg
KiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAqIHBhcnNlci9Tb3VyY2VQcm92
aWRlckNhY2hlLmg6CisgICAgICAgICogcHJvZmlsZXIvUHJvZmlsZXIuaDoKKyAgICAgICAgKiBy
dW50aW1lL0FyZ0xpc3QuaDoKKyAgICAgICAgKiBydW50aW1lL0NhbGxEYXRhLmg6CisgICAgICAg
ICogcnVudGltZS9Db21wbGV0aW9uLmg6CisgICAgICAgICogcnVudGltZS9Db25zdHJ1Y3REYXRh
Lmg6CisgICAgICAgICogcnVudGltZS9EYXRlSW5zdGFuY2UuaDoKKyAgICAgICAgKiBydW50aW1l
L0Vycm9yLmg6CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmg6CisgICAgICAg
ICogcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9IZWFw
Lmg6CisgICAgICAgICogcnVudGltZS9JZGVudGlmaWVyLmg6CisgICAgICAgIChKU0M6OklkZW50
aWZpZXI6OnRvVUludDMyKToKKyAgICAgICAgKEpTQzo6SWRlbnRpZmllcjo6ZXF1YWwpOgorICAg
ICAgICAqIHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5oOgorICAgICAgICAqIHJ1bnRpbWUv
SW50ZXJuYWxGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5oOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNCeXRlQXJyYXkuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5oOgor
ICAgICAgICAoSlNDOjpKU0NlbGw6OkpTQ2VsbDo6Y2xhc3NJbmZvKToKKyAgICAgICAgKEpTQzo6
SlNDZWxsOjpKU0NlbGw6OnZwdHIpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OkpTQ2VsbDo6c2V0
VlB0cik6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6SlNDZWxsOjppc1N0cmluZyk6CisgICAgICAg
ICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbERhdGEu
aDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgICogcnVudGlt
ZS9KU0xvY2suaDoKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgICogcnVu
dGltZS9KU09iamVjdFdpdGhHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTVmFs
dWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaDoKKyAgICAgICAgKiBy
dW50aW1lL0pTV3JhcHBlck9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvTG9va3VwLmg6Cisg
ICAgICAgICogcnVudGltZS9NYXJrZWRTcGFjZS5oOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0
UHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuaDoKKyAg
ICAgICAgKiBydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5Lmg6CisgICAgICAgIChKU0M6OlByb3Bl
cnR5TmFtZUFycmF5OjphZGQpOgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlTbG90Lmg6Cisg
ICAgICAgICogcnVudGltZS9SZWdFeHAuaDoKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9iamVj
dC5oOgorICAgICAgICAqIHJ1bnRpbWUvUm9wZUltcGwuaDoKKyAgICAgICAgKiBydW50aW1lL1Nj
b3BlQ2hhaW4uaDoKKyAgICAgICAgKiBydW50aW1lL1NtYWxsU3RyaW5ncy5oOgorICAgICAgICAq
IHJ1bnRpbWUvU3RyaW5nT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuaDoK
KyAgICAgICAgKiBydW50aW1lL1RpbWVvdXRDaGVja2VyLmg6CisgICAgICAgICogcnVudGltZS9V
U3RyaW5nLmg6CisgICAgICAgIChKU0M6OlVTdHJpbmc6OlVTdHJpbmcpOgorICAgICAgICAqIHdz
Y3JpcHQ6CisgICAgICAgICogd3RmL0J5dGVBcnJheS5oOgorICAgICAgICAqIHd0Zi9DcnlwdG9n
cmFwaGljYWxseVJhbmRvbU51bWJlci5oOgorICAgICAgICAqIHd0Zi9DdXJyZW50VGltZS5oOgor
ICAgICAgICAqIHd0Zi9EYXRlTWF0aC5oOgorICAgICAgICAqIHd0Zi9EZWNpbWFsTnVtYmVyLmg6
CisgICAgICAgICogd3RmL0Zhc3RNYWxsb2MuaDoKKyAgICAgICAgKiB3dGYvTUQ1Lmg6CisgICAg
ICAgICogd3RmL01haW5UaHJlYWQuaDoKKyAgICAgICAgKiB3dGYvTnVsbFB0ci5jcHA6CisgICAg
ICAgICogd3RmL051bGxQdHIuaDoKKyAgICAgICAgKiB3dGYvT1NBbGxvY2F0b3IuaDoKKyAgICAg
ICAgKiB3dGYvUGxhdGZvcm0uaDoKKyAgICAgICAgKiB3dGYvUmFuZG9tTnVtYmVyLmg6CisgICAg
ICAgICogd3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oOgorICAgICAgICAqIHd0Zi9UaHJlYWRT
cGVjaWZpYy5oOgorICAgICAgICAqIHd0Zi9UaHJlYWRpbmcuaDoKKyAgICAgICAgKiB3dGYvVGhy
ZWFkaW5nUHJpbWl0aXZlcy5oOgorICAgICAgICAqIHd0Zi9XVEZUaHJlYWREYXRhLmg6CisgICAg
ICAgICogd3RmL2R0b2EuaDoKKyAgICAgICAgKiB3dGYvdGV4dC9BdG9taWNTdHJpbmcuaDoKKyAg
ICAgICAgKFdURjo6QXRvbWljU3RyaW5nOjpBdG9taWNTdHJpbmcpOgorICAgICAgICAoV1RGOjpB
dG9taWNTdHJpbmc6OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKToKKyAgICAgICAgKFdURjo6QXRv
bWljU3RyaW5nOjp+QXRvbWljU3RyaW5nKToKKyAgICAgICAgKFdURjo6QXRvbWljU3RyaW5nOjpp
bXBsKToKKyAgICAgICAgKiB3dGYvdGV4dC9DU3RyaW5nLmg6CisgICAgICAgICogd3RmL3RleHQv
U3RyaW5nQnVpbGRlci5oOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuaDoKKyAgICAg
ICAgKFdURjo6U3RyaW5nSW1wbDo6Y2hhcmFjdGVycyk6CisgICAgICAgICogd3RmL3RleHQvV1RG
U3RyaW5nLmg6CisgICAgICAgIChXVEY6OlN0cmluZzo6U3RyaW5nKToKKyAgICAgICAgKFdURjo6
U3RyaW5nOjpmaW5kSWdub3JpbmdDYXNlKToKKyAgICAgICAgKFdURjo6U3RyaW5nOjppc0hhc2hU
YWJsZURlbGV0ZWRWYWx1ZSk6CisgICAgICAgICogd3RmL3VuaWNvZGUvQ29sbGF0b3IuaDoKKyAg
ICAgICAgKiB3dGYvdW5pY29kZS9VVEY4Lmg6CisgICAgICAgICogeWFyci9ZYXJyLmg6CisgICAg
ICAgICogeWFyci9ZYXJyUGF0dGVybi5oOgorCiAyMDExLTAzLTI1ICBPbGl2ZXIgSHVudCAgPG9s
aXZlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3NjcmlwdAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3NjcmlwdAkocmV2aXNpb24gODIwMTApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3NjcmlwdAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsNyBAQAogZGVmIGJ1aWxk
KGJsZCk6CiAgICAgaW1wb3J0IE9wdGlvbnMKIAorICAgIGJsZC5lbnYuTElCRElSID0gb3V0cHV0
X2RpcgogICAgIGZ1bGxfZGlycyA9IGdldF9kaXJzX2Zvcl9mZWF0dXJlcyhqc2NvcmVfZGlyLCBm
ZWF0dXJlcz1bYnVpbGRfcG9ydF0sIGRpcnM9anNjb3JlX2RpcnMpCiAKICAgICBpbmNsdWRlcyA9
IGNvbW1vbl9pbmNsdWRlcyArIGZ1bGxfZGlycwpAQCAtNTUsOSArNTYsMTAgQEAKIAogICAgICMg
MS4gQSBzaW1wbGUgcHJvZ3JhbQogICAgIGpzY29yZSA9IGJsZC5uZXdfdGFza19nZW4oCi0gICAg
ICAgIGZlYXR1cmVzID0gJ2N4eCBjc3RhdGljbGliJywKKyAgICAgICAgZmVhdHVyZXMgPSAnY3h4
IGNzaGxpYiBpbXBsaWInLAogICAgICAgICBpbmNsdWRlcyA9ICcuIC4uIGFzc2VtYmxlciBEZXJp
dmVkU291cmNlcyBGb3J3YXJkaW5nSGVhZGVycyAnICsgJyAnLmpvaW4oaW5jbHVkZXMpLAogICAg
ICAgICBzb3VyY2UgPSBzb3VyY2VzLAorICAgICAgICBkZWZpbmVzID0gWydCVUlMRElOR19KYXZh
U2NyaXB0Q29yZSddLAogICAgICAgICB0YXJnZXQgPSAnanNjb3JlJywKICAgICAgICAgdXNlbGli
ID0gJ1dYIElDVSAnICsgZ2V0X2NvbmZpZygpLAogICAgICAgICB1c2VsaWJfbG9jYWwgPSAnJywK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlkZXJDYWNoZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlk
ZXJDYWNoZS5oCShyZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvU291cmNlUHJvdmlkZXJDYWNoZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMCArMzMsMTAg
QEAKIGNsYXNzIFNvdXJjZVByb3ZpZGVyQ2FjaGUgewogcHVibGljOgogICAgIFNvdXJjZVByb3Zp
ZGVyQ2FjaGUoKSA6IG1fY29udGVudEJ5dGVTaXplKDApIHt9Ci0gICAgflNvdXJjZVByb3ZpZGVy
Q2FjaGUoKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB+U291cmNlUHJvdmlkZXJDYWNoZSgpOwog
Ci0gICAgdm9pZCBjbGVhcigpOwotICAgIHVuc2lnbmVkIGJ5dGVTaXplKCkgY29uc3Q7CisgICAg
SlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBjbGVhcigpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHVu
c2lnbmVkIGJ5dGVTaXplKCkgY29uc3Q7CiAgICAgdm9pZCBhZGQoaW50IHNvdXJjZVBvc2l0aW9u
LCBQYXNzT3duUHRyPFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtPiwgdW5zaWduZWQgc2l6ZSk7CiAg
ICAgY29uc3QgU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0qIGdldChpbnQgc291cmNlUG9zaXRpb24p
IGNvbnN0IHsgcmV0dXJuIG1fbWFwLmdldChzb3VyY2VQb3NpdGlvbik7IH0KIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyLmgJKHJldmlzaW9uIDgyMDEwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTUzLDExICs1MywxMSBAQAogICAgICAgICAgICAgcmV0dXJuICZzX3NoYXJlZEVuYWJs
ZWRQcm9maWxlclJlZmVyZW5jZTsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBQcm9maWxl
ciogcHJvZmlsZXIoKTsgCisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQcm9maWxl
ciogcHJvZmlsZXIoKTsgCiAgICAgICAgIHN0YXRpYyBDYWxsSWRlbnRpZmllciBjcmVhdGVDYWxs
SWRlbnRpZmllcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUsIGNvbnN0IFVTdHJpbmcmIHNvdXJj
ZVVSTCwgaW50IGxpbmVOdW1iZXIpOwogCi0gICAgICAgIHZvaWQgc3RhcnRQcm9maWxpbmcoRXhl
Y1N0YXRlKiwgY29uc3QgVVN0cmluZyYgdGl0bGUpOwotICAgICAgICBQYXNzUmVmUHRyPFByb2Zp
bGU+IHN0b3BQcm9maWxpbmcoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYgdGl0bGUpOworICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHN0YXJ0UHJvZmlsaW5nKEV4ZWNTdGF0ZSosIGNv
bnN0IFVTdHJpbmcmIHRpdGxlKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgUGFzc1JlZlB0
cjxQcm9maWxlPiBzdG9wUHJvZmlsaW5nKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmIHRpdGxl
KTsKICAgICAgICAgdm9pZCBzdG9wUHJvZmlsaW5nKEpTR2xvYmFsT2JqZWN0Kik7CiAKICAgICAg
ICAgdm9pZCB3aWxsRXhlY3V0ZShFeGVjU3RhdGUqIGNhbGxlckNhbGxGcmFtZSwgSlNWYWx1ZSBm
dW5jdGlvbik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJD
YWxsRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIv
RGVidWdnZXJDYWxsRnJhbWUuaAkocmV2aXNpb24gODIwMTApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtNTEs
MTAgKzUxLDEwIEBACiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBkeW5hbWljR2xvYmFsT2JqZWN0
KCkgY29uc3QgeyByZXR1cm4gbV9jYWxsRnJhbWUtPmR5bmFtaWNHbG9iYWxPYmplY3QoKTsgfQog
ICAgICAgICBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbigpIGNvbnN0IHsgcmV0dXJuIG1fY2Fs
bEZyYW1lLT5zY29wZUNoYWluKCk7IH0KICAgICAgICAgY29uc3QgVVN0cmluZyogZnVuY3Rpb25O
YW1lKCkgY29uc3Q7Ci0gICAgICAgIFVTdHJpbmcgY2FsY3VsYXRlZEZ1bmN0aW9uTmFtZSgpIGNv
bnN0OwotICAgICAgICBUeXBlIHR5cGUoKSBjb25zdDsKLSAgICAgICAgSlNPYmplY3QqIHRoaXNP
YmplY3QoKSBjb25zdDsKLSAgICAgICAgSlNWYWx1ZSBldmFsdWF0ZShjb25zdCBVU3RyaW5nJiwg
SlNWYWx1ZSYgZXhjZXB0aW9uKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgVVN0
cmluZyBjYWxjdWxhdGVkRnVuY3Rpb25OYW1lKCkgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIFR5cGUgdHlwZSgpIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBKU09i
amVjdCogdGhpc09iamVjdCgpIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBKU1Zh
bHVlIGV2YWx1YXRlKGNvbnN0IFVTdHJpbmcmLCBKU1ZhbHVlJiBleGNlcHRpb24pIGNvbnN0Owog
ICAgICAgICBKU1ZhbHVlIGV4Y2VwdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZXhjZXB0aW9uOyB9
CiAKICAgICBwcml2YXRlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0Rl
YnVnZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0Rl
YnVnZ2VyLmgJKHJldmlzaW9uIDgyMDEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVn
Z2VyL0RlYnVnZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAKICAgICBjbGFz
cyBTb3VyY2VQcm92aWRlcjsKICAgICBjbGFzcyBVU3RyaW5nOwogCi0gICAgY2xhc3MgRGVidWdn
ZXIgeworICAgIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIERlYnVnZ2VyIHsKICAgICBwdWJsaWM6
CiAgICAgICAgIHZpcnR1YWwgfkRlYnVnZ2VyKCk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9jb2xsZWN0b3IvaGFuZGxlcy9IYW5kbGVIZWFwLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2NvbGxlY3Rvci9oYW5kbGVzL0hhbmRsZUhlYXAuaAkocmV2aXNpb24g
ODIwMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvY29sbGVjdG9yL2hhbmRsZXMvSGFuZGxl
SGVhcC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2Miw3IEBACiAgICAgLy8gU2hvdWxkIG9u
bHkgYmUgY2FsbGVkIGR1cmluZyB0ZWFyZG93bi4KICAgICB2b2lkIGNsZWFyV2Vha1BvaW50ZXJz
KCk7CiAKLSAgICB2b2lkIHdyaXRlQmFycmllcihIYW5kbGVTbG90LCBjb25zdCBKU1ZhbHVlJik7
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCB3cml0ZUJhcnJpZXIoSGFuZGxlU2xvdCwgY29u
c3QgSlNWYWx1ZSYpOwogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIEZpbmFsaXplciogZ2V0
RmluYWxpemVyKEhhbmRsZVNsb3QgaGFuZGxlKQpAQCAtMTEyLDcgKzExMiw3IEBACiAgICAgc3Rh
dGljIEhhbmRsZVNsb3QgdG9IYW5kbGUoTm9kZSopOwogICAgIHN0YXRpYyBOb2RlKiB0b05vZGUo
SGFuZGxlU2xvdCk7CiAKLSAgICB2b2lkIGdyb3coKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2
b2lkIGdyb3coKTsKIAogICAgIEpTR2xvYmFsRGF0YSogbV9nbG9iYWxEYXRhOwogICAgIEJsb2Nr
U3RhY2s8Tm9kZT4gbV9ibG9ja1N0YWNrOwpJbmRleDogU291cmNlL1dlYktpdC93eC9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cJKHJldmlzaW9uIDgy
MDQ0KQorKysgU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxMyBAQAorMjAxMS0wMy0yNiAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZp
ZXJzLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGQgZXhwb3J0IG1hY3JvcyB0byBhbGwgZXhwb3J0ZWQgSlNDb3JlIG1ldGhvZHMsIGFuZCBl
bmFibGUgdGhlbSBmb3IgdGhlIHd4IHBvcnQuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NTUxCisKKyAgICAgICAgKiB3c2NyaXB0OgorCiAyMDEx
LTAzLTI1ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBBZGVsZSBQZXRlcnNvbi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd3gvd3NjcmlwdAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3d4L3dzY3JpcHQJKHJldmlzaW9uIDgyMDEwKQorKysg
U291cmNlL1dlYktpdC93eC93c2NyaXB0CSh3b3JraW5nIGNvcHkpCkBAIC02OCw3ICs2OCw3IEBA
CiAgICAgCiBkZWYgcHJlX2J1aWxkKGJsZCk6CiAgICAgIiIiCi0gICAgVGhlIHd4V2ViS2l0IGxp
YnJhcnkgc2hvdWxkIGJlIHJlYnVpbHQgaWYganNjb3JlIG9yIHdlYmNvcmUgY2hhbmdlcywKKyAg
ICBUaGUgd3hXZWJLaXQgbGlicmFyeSBzaG91bGQgYmUgcmVidWlsdCBpZiB3ZWJjb3JlIGNoYW5n
ZXMsCiAgICAgc28gd2UgbWFrZSB0aG9zZSBzdGF0aWMgbGlicyBhcyBkZXBlbmRlbmNpZXMuCiAg
ICAgIiIiCiAgICAgCkBAIC03NiwxMyArNzYsMTAgQEAKICAgICBpZiBzeXMucGxhdGZvcm0uc3Rh
cnRzd2l0aCgnd2luJyk6CiAgICAgICAgIGV4dCA9ICcubGliJwogICAgIAotICAgIGxpYmpzY29y
ZSA9IG9zLnBhdGguam9pbihvdXRwdXRfZGlyLCAnbGlianNjb3JlJXMnICUgZXh0KQogICAgIGxp
YndlYmNvcmUgPSBvcy5wYXRoLmpvaW4ob3V0cHV0X2RpciwgJ2xpYndlYmNvcmUlcycgJSBleHQp
CiAgICAgCi0gICAgYXNzZXJ0IG9zLnBhdGguZXhpc3RzKGxpYmpzY29yZSkKICAgICBhc3NlcnQg
b3MucGF0aC5leGlzdHMobGlid2ViY29yZSkKICAgICAKLSAgICBibGQuZW52LkNYWERFUFNfSlND
T1JFID0gVXRpbHMuaF9maWxlKGxpYmpzY29yZSkKICAgICBibGQuZW52LkNYWERFUFNfV0VCQ09S
RSA9IFV0aWxzLmhfZmlsZShsaWJ3ZWJjb3JlKQogICAgIAogZGVmIGJ1aWxkKGJsZCk6CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9jb25maWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9j
b25maWcuaAkocmV2aXNpb24gODIwMTApCisrKyBTb3VyY2UvV2ViQ29yZS9jb25maWcuaAkod29y
a2luZyBjb3B5KQpAQCAtNjQsOCArNjQsOCBAQAogI2Vsc2UKICNkZWZpbmUgV0VCS0lUX0VYUE9S
VERBVEEgX19kZWNsc3BlYyhkbGxpbXBvcnQpCiAjZW5kaWYKLSNkZWZpbmUgV1RGX0VYUE9SVF9Q
UklWQVRFIEpTX0VYUE9SVERBVEEKLSNkZWZpbmUgSlNfRVhQT1JUX1BSSVZBVEUgSlNfRVhQT1JU
REFUQQorI2RlZmluZSBXVEZfRVhQT1JUX1BSSVZBVEUKKyNkZWZpbmUgSlNfRVhQT1JUX1BSSVZB
VEUKICNkZWZpbmUgSlNfRVhQT1JUQ0xBU1MgSlNfRVhQT1JUREFUQQogI2Vsc2UKICNkZWZpbmUg
SlNfRVhQT1JUREFUQQpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODIwNDQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0w
My0yNiAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgZXhwb3J0IG1hY3Jv
cyB0byBhbGwgZXhwb3J0ZWQgSlNDb3JlIG1ldGhvZHMsIGFuZCBlbmFibGUgdGhlbSBmb3IgdGhl
IHd4IHBvcnQuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTI3NTUxCisKKyAgICAgICAgKiBjb25maWcuaDoKKwogMjAxMS0wMy0yNiAgS3dhbmcgWXVs
IFNlbyAgPHNreXVsQGNvbXBhbnkxMDAubmV0PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEJlbmph
bWluIFBvdWxhaW4uCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87077</attachid>
            <date>2011-03-27 10:49:52 -0700</date>
            <delta_ts>2011-03-30 19:39:04 -0700</delta_ts>
            <desc>Step 2, part 1: this time, just add the macros, don&apos;t flip the switch for wx port</desc>
            <filename>jscore_export_step2_try4.patch</filename>
            <type>text/plain</type>
            <size>111689</size>
            <attacher name="Kevin Ollivier">kevino</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29uZmlnLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9jb25maWcuaAkocmV2aXNpb24gODIwMTApCisrKyBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL2NvbmZpZy5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw4ICs0OSw4IEBA
CiAjZGVmaW5lIFdFQktJVF9FWFBPUlREQVRBCiAjZW5kaWYKIAotI2RlZmluZSBXVEZfRVhQT1JU
X1BSSVZBVEUgSlNfRVhQT1JUREFUQQotI2RlZmluZSBKU19FWFBPUlRfUFJJVkFURSBKU19FWFBP
UlREQVRBCisjZGVmaW5lIFdURl9FWFBPUlRfUFJJVkFURQorI2RlZmluZSBKU19FWFBPUlRfUFJJ
VkFURQogCiAjZW5kaWYgLyogVVNFKEVYUE9SVF9NQUNST1MpICovCiAKSW5kZXg6IFRvb2xzL1dl
YktpdEFQSVRlc3QvY29uZmlnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0QVBJVGVzdC9j
b25maWcuaAkocmV2aXNpb24gODIwMTApCisrKyBUb29scy9XZWJLaXRBUElUZXN0L2NvbmZpZy5o
CSh3b3JraW5nIGNvcHkpCkBAIC00OSw4ICs0OSw4IEBACiAjZGVmaW5lIFdFQktJVF9FWFBPUlRE
QVRBCiAjZW5kaWYKIAotI2RlZmluZSBXVEZfRVhQT1JUX1BSSVZBVEUgSlNfRVhQT1JUREFUQQot
I2RlZmluZSBKU19FWFBPUlRfUFJJVkFURSBKU19FWFBPUlREQVRBCisjZGVmaW5lIFdURl9FWFBP
UlRfUFJJVkFURQorI2RlZmluZSBKU19FWFBPUlRfUFJJVkFURQogCiAjZW5kaWYgLyogVVNFKEVY
UE9SVF9NQUNST1MpICovCiAKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2NvbmZpZy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2NvbmZpZy5oCShyZXZpc2lvbiA4MjAx
MCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2NvbmZpZy5oCSh3b3JraW5nIGNvcHkpCkBAIC00
OCw4ICs0OCw4IEBACiAjZGVmaW5lIFdFQktJVF9FWFBPUlREQVRBCiAjZW5kaWYKIAotI2RlZmlu
ZSBXVEZfRVhQT1JUX1BSSVZBVEUgSlNfRVhQT1JUREFUQQotI2RlZmluZSBKU19FWFBPUlRfUFJJ
VkFURSBKU19FWFBPUlREQVRBCisjZGVmaW5lIFdURl9FWFBPUlRfUFJJVkFURQorI2RlZmluZSBK
U19FWFBPUlRfUFJJVkFURQogCiAjZW5kaWYgLyogVVNFKEVYUE9SVF9NQUNST1MpICovCiAKSW5k
ZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlz
aW9uIDgyMDcyKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTUgQEAKKzIwMTEtMDMtMjcgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
IGV4cG9ydCBtYWNyb3MgdG8gYWxsIGV4cG9ydGVkIEpTQ29yZSBtZXRob2RzLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzU1MQorCisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvY29uZmlnLmg6CisgICAgICAgICogV2ViS2l0QVBJVGVzdC9jb25m
aWcuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2NvbmZpZy5oOgorCiAyMDExLTAzLTI2
ICBNYWNpZWogU3RhY2hvd2lhayAgPG1qc0BhcHBsZS5jb20+CiAKICAgICAgICAgUmV2ZXJ0IGlu
YWR2ZXJ0YW50bHkgY29tbWl0dGVkIGNoYW5nZXMuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHAuaAkocmV2aXNpb24gODIwMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHAuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTIgKzMzLDEyIEBACiAg
ICAgc3RydWN0IFJlZ0V4cFJlcHJlc2VudGF0aW9uOwogICAgIGNsYXNzIEpTR2xvYmFsRGF0YTsK
IAotICAgIFJlZ0V4cEZsYWdzIHJlZ0V4cEZsYWdzKGNvbnN0IFVTdHJpbmcmKTsKKyAgICBKU19F
WFBPUlRfUFJJVkFURSBSZWdFeHBGbGFncyByZWdFeHBGbGFncyhjb25zdCBVU3RyaW5nJik7CiAK
ICAgICBjbGFzcyBSZWdFeHAgOiBwdWJsaWMgUmVmQ291bnRlZDxSZWdFeHA+IHsKICAgICBwdWJs
aWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlZ0V4cD4gY3JlYXRlKEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgcGF0dGVybiwgUmVnRXhwRmxhZ3MpOwotICAg
ICAgICB+UmVnRXhwKCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQYXNzUmVm
UHRyPFJlZ0V4cD4gY3JlYXRlKEpTR2xvYmFsRGF0YSosIGNvbnN0IFVTdHJpbmcmIHBhdHRlcm4s
IFJlZ0V4cEZsYWdzKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgflJlZ0V4cCgpOwogCiAg
ICAgICAgIGJvb2wgZ2xvYmFsKCkgY29uc3QgeyByZXR1cm4gbV9mbGFncyAmIEZsYWdHbG9iYWw7
IH0KICAgICAgICAgYm9vbCBpZ25vcmVDYXNlKCkgY29uc3QgeyByZXR1cm4gbV9mbGFncyAmIEZs
YWdJZ25vcmVDYXNlOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuaAkocmV2aXNpb24gODIwMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmUuaAkod29ya2luZyBjb3B5KQpAQCAtNzMsMTEgKzczLDExIEBACiAKICAgICAg
ICAgc3RhdGljIHZvaWQgZHVtcFN0YXRpc3RpY3MoKTsKIAotICAgICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxTdHJ1Y3R1cmU+IGFkZFByb3BlcnR5VHJhbnNpdGlvbihTdHJ1Y3R1cmUqLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3Bl
Y2lmaWNWYWx1ZSwgc2l6ZV90JiBvZmZzZXQpOwotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxT
dHJ1Y3R1cmU+IGFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUoU3RydWN0
dXJlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVz
LCBKU0NlbGwqIHNwZWNpZmljVmFsdWUsIHNpemVfdCYgb2Zmc2V0KTsKKyAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBhZGRQcm9wZXJ0eVRyYW5z
aXRpb24oU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25l
ZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUsIHNpemVfdCYgb2Zmc2V0KTsKKyAg
ICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBhZGRQ
cm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVyZSosIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVj
aWZpY1ZhbHVlLCBzaXplX3QmIG9mZnNldCk7CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0
cnVjdHVyZT4gcmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKFN0cnVjdHVyZSosIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgc2l6ZV90JiBvZmZzZXQpOwotICAgICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTdHJ1Y3R1cmU+IGNoYW5nZVByb3RvdHlwZVRyYW5zaXRpb24oU3RydWN0dXJlKiwg
SlNWYWx1ZSBwcm90b3R5cGUpOwotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+
IGRlc3BlY2lmeUZ1bmN0aW9uVHJhbnNpdGlvbihTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVy
Jik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVy
ZT4gY2hhbmdlUHJvdG90eXBlVHJhbnNpdGlvbihTdHJ1Y3R1cmUqLCBKU1ZhbHVlIHByb3RvdHlw
ZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVy
ZT4gZGVzcGVjaWZ5RnVuY3Rpb25UcmFuc2l0aW9uKFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZp
ZXImKTsKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBnZXR0ZXJTZXR0ZXJU
cmFuc2l0aW9uKFN0cnVjdHVyZSopOwogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1
cmU+IHRvQ2FjaGVhYmxlRGljdGlvbmFyeVRyYW5zaXRpb24oU3RydWN0dXJlKik7CiAgICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gdG9VbmNhY2hlYWJsZURpY3Rpb25hcnlUcmFu
c2l0aW9uKFN0cnVjdHVyZSopOwpAQCAtOTEsMTAgKzkxLDEwIEBACiAKICAgICAgICAgUGFzc1Jl
ZlB0cjxTdHJ1Y3R1cmU+IGZsYXR0ZW5EaWN0aW9uYXJ5U3RydWN0dXJlKEpTR2xvYmFsRGF0YSYs
IEpTT2JqZWN0Kik7CiAKLSAgICAgICAgflN0cnVjdHVyZSgpOworICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSB+U3RydWN0dXJlKCk7CiAKICAgICAgICAgLy8gVGhlc2Ugc2hvdWxkIGJlIHVzZWQg
d2l0aCBjYXV0aW9uLiAgCi0gICAgICAgIHNpemVfdCBhZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0
aW9uKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywg
SlNDZWxsKiBzcGVjaWZpY1ZhbHVlKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc2l6ZV90
IGFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpOwogICAgICAg
ICBzaXplX3QgcmVtb3ZlUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUpOwogICAgICAgICB2b2lkIHNldFByb3RvdHlwZVdpdGhvdXRUcmFuc2l0
aW9uKEpTVmFsdWUgcHJvdG90eXBlKSB7IG1fcHJvdG90eXBlID0gcHJvdG90eXBlOyB9CiAgICAg
ICAgIApAQCAtMTE2LDcgKzExNiw3IEBACiAgICAgICAgIGJvb2wgaXNVc2luZ0lubGluZVN0b3Jh
Z2UoKSBjb25zdDsKIAogICAgICAgICBzaXplX3QgZ2V0KGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSk7Ci0gICAgICAgIHNpemVfdCBnZXQoU3RyaW5nSW1wbCogcHJvcGVydHlOYW1lLCB1
bnNpZ25lZCYgYXR0cmlidXRlcywgSlNDZWxsKiYgc3BlY2lmaWNWYWx1ZSk7CisgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIHNpemVfdCBnZXQoU3RyaW5nSW1wbCogcHJvcGVydHlOYW1lLCB1bnNp
Z25lZCYgYXR0cmlidXRlcywgSlNDZWxsKiYgc3BlY2lmaWNWYWx1ZSk7CiAgICAgICAgIHNpemVf
dCBnZXQoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRl
cywgSlNDZWxsKiYgc3BlY2lmaWNWYWx1ZSkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJU
KCFwcm9wZXJ0eU5hbWUuaXNOdWxsKCkpOwpAQCAtMTMzLDcgKzEzMyw3IEBACiAgICAgICAgIAog
ICAgICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX3Byb3BlcnR5VGFibGUgPyBt
X3Byb3BlcnR5VGFibGUtPmlzRW1wdHkoKSA6IG1fb2Zmc2V0ID09IG5vT2Zmc2V0OyB9CiAKLSAg
ICAgICAgdm9pZCBkZXNwZWNpZnlEaWN0aW9uYXJ5RnVuY3Rpb24oY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkZXNwZWNpZnlE
aWN0aW9uYXJ5RnVuY3Rpb24oY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKICAgICAg
ICAgdm9pZCBkaXNhYmxlU3BlY2lmaWNGdW5jdGlvblRyYWNraW5nKCkgeyBtX3NwZWNpZmljRnVu
Y3Rpb25UaHJhc2hDb3VudCA9IG1heFNwZWNpZmljRnVuY3Rpb25UaHJhc2hDb3VudDsgfQogCiAg
ICAgICAgIHZvaWQgc2V0RW51bWVyYXRpb25DYWNoZShKU0dsb2JhbERhdGEmLCBKU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yKiBlbnVtZXJhdGlvbkNhY2hlKTsgLy8gRGVmaW5lZCBpbiBKU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yLmguCkBAIC0xNjEsNyArMTYxLDcgQEAKICAgICAgICAgfQogCiAgICAgcHJp
dmF0ZToKLSAgICAgICAgU3RydWN0dXJlKEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBUeXBlSW5m
byYsIHVuc2lnbmVkIGFub255bW91c1Nsb3RDb3VudCwgY29uc3QgQ2xhc3NJbmZvKik7CisgICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0cnVjdHVyZShKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3Qg
VHlwZUluZm8mLCB1bnNpZ25lZCBhbm9ueW1vdXNTbG90Q291bnQsIGNvbnN0IENsYXNzSW5mbyop
OwogICAgICAgICBTdHJ1Y3R1cmUoY29uc3QgU3RydWN0dXJlKik7CiAKICAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGUoY29uc3QgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CkBAIC0xODYsNyArMTg2LDcgQEAKICAgICAgICAgdm9pZCBkZXNwZWNpZnlBbGxGdW5jdGlvbnMo
KTsKIAogICAgICAgICBQcm9wZXJ0eVRhYmxlKiBjb3B5UHJvcGVydHlUYWJsZSgpOwotICAgICAg
ICB2b2lkIG1hdGVyaWFsaXplUHJvcGVydHlNYXAoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgdm9pZCBtYXRlcmlhbGl6ZVByb3BlcnR5TWFwKCk7CiAgICAgICAgIHZvaWQgbWF0ZXJpYWxp
emVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KCkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFt
X3Byb3BlcnR5VGFibGUgJiYgbV9wcmV2aW91cykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuaAkocmV2aXNpb24gODIwMTApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC03MywxMSArNzMsMTEg
QEAKICAgICB0eXBlZGVmIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIFByb3BlcnR5U3RvcmFn
ZTsKICAgICB0eXBlZGVmIGNvbnN0IFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIENvbnN0UHJv
cGVydHlTdG9yYWdlOwogCi0gICAgY2xhc3MgSlNPYmplY3QgOiBwdWJsaWMgSlNDZWxsIHsKKyAg
ICBjbGFzcyBKU19FWFBPUlREQVRBIEpTT2JqZWN0IDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAg
IGZyaWVuZCBjbGFzcyBCYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplcjsKICAgICAgICAgZnJpZW5k
IGNsYXNzIEpJVDsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpTQ2VsbDsKLSAgICAgICAgZnJpZW5k
IHZvaWQgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBIYXNo
RW50cnkqIGVudHJ5LCBKU09iamVjdCogdGhpc09iaiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpOworICAgICAgICBmcmllbmQgSlNfRVhQT1JUX1BS
SVZBVEUgdm9pZCBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChFeGVjU3RhdGUqLCBjb25zdCBIYXNo
RW50cnkqLCBKU09iamVjdCogdGhpc09iaiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmKTsKIAogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIG1h
cmtDaGlsZHJlbihNYXJrU3RhY2smKTsKQEAgLTI0Nyw3ICsyNDcsNyBAQAogCiAgICAgICAgIHN0
YXRpYyBzaXplX3Qgb2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCk7CiAgICAgICAgIAotICAgICAgICBz
dGF0aWMgSlNfRVhQT1JUREFUQSBjb25zdCBDbGFzc0luZm8gc19pbmZvOworICAgICAgICBzdGF0
aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCShyZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
MCw3ICszMCw3IEBACiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIEpTT2JqZWN0V2l0aEds
b2JhbE9iamVjdCBCYXNlOwogCi0gICAgICAgIFJlZ0V4cE9iamVjdChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBOb25OdWxsUGFzc1Jl
ZlB0cjxSZWdFeHA+KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVnRXhwT2JqZWN0KEpT
R2xvYmFsT2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgTm9uTnVsbFBhc3NS
ZWZQdHI8UmVnRXhwPik7CiAgICAgICAgIHZpcnR1YWwgflJlZ0V4cE9iamVjdCgpOwogCiAgICAg
ICAgIHZvaWQgc2V0UmVnRXhwKFBhc3NSZWZQdHI8UmVnRXhwPiByKSB7IGQtPnJlZ0V4cCA9IHI7
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25I
ZWxwZXJzLmgJKHJldmlzaW9uIDgyMDEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhjZXB0aW9uSGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw5ICs0Myw5IEBACiAg
ICAgY2xhc3MgTm9kZTsKICAgICBzdHJ1Y3QgSW5zdHJ1Y3Rpb247CiAgICAgCi0gICAgSlNPYmpl
Y3QqIGNyZWF0ZUludGVycnVwdGVkRXhlY3V0aW9uRXhjZXB0aW9uKEpTR2xvYmFsRGF0YSopOwor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBjcmVhdGVJbnRlcnJ1cHRlZEV4ZWN1dGlv
bkV4Y2VwdGlvbihKU0dsb2JhbERhdGEqKTsKICAgICBKU09iamVjdCogY3JlYXRlVGVybWluYXRl
ZEV4ZWN1dGlvbkV4Y2VwdGlvbihKU0dsb2JhbERhdGEqKTsKLSAgICBKU09iamVjdCogY3JlYXRl
U3RhY2tPdmVyZmxvd0Vycm9yKEV4ZWNTdGF0ZSopOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpT
T2JqZWN0KiBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoRXhlY1N0YXRlKik7CiAgICAgSlNPYmpl
Y3QqIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihKU0dsb2JhbE9iamVjdCopOwogICAgIEpTT2Jq
ZWN0KiBjcmVhdGVPdXRPZk1lbW9yeUVycm9yKEpTR2xvYmFsT2JqZWN0Kik7CiAgICAgSlNPYmpl
Y3QqIGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRp
ZmllciYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24u
aAkocmV2aXNpb24gODIwMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1
bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDEyICs0NSwxMiBAQAogICAgICAgICB0eXBl
ZGVmIEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdCBCYXNlOwogCiAgICAgcHVibGljOgotICAgICAg
ICBKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQ
dHI8U3RydWN0dXJlPiwgaW50IGxlbmd0aCwgY29uc3QgSWRlbnRpZmllciYsIE5hdGl2ZUZ1bmN0
aW9uKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNGdW5jdGlvbihFeGVjU3RhdGUqLCBK
U0dsb2JhbE9iamVjdCosIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIGludCBsZW5ndGgs
IGNvbnN0IElkZW50aWZpZXImLCBOYXRpdmVGdW5jdGlvbik7CiAgICAgICAgIEpTRnVuY3Rpb24o
RXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+
LCBpbnQgbGVuZ3RoLCBjb25zdCBJZGVudGlmaWVyJiwgTmF0aXZlRXhlY3V0YWJsZSopOwogICAg
ICAgICBKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSosIEZ1bmN0aW9uRXhlY3V0YWJsZSosIFNjb3BlQ2hh
aW5Ob2RlKik7CiAgICAgICAgIHZpcnR1YWwgfkpTRnVuY3Rpb24oKTsKIAotICAgICAgICBjb25z
dCBVU3RyaW5nJiBuYW1lKEV4ZWNTdGF0ZSopOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBj
b25zdCBVU3RyaW5nJiBuYW1lKEV4ZWNTdGF0ZSopOwogICAgICAgICBjb25zdCBVU3RyaW5nIGRp
c3BsYXlOYW1lKEV4ZWNTdGF0ZSopOwogICAgICAgICBjb25zdCBVU3RyaW5nIGNhbGN1bGF0ZWRE
aXNwbGF5TmFtZShFeGVjU3RhdGUqKTsKIApAQCAtODksNyArODksNyBAQAogICAgIHByaXZhdGU6
CiAgICAgICAgIEpTRnVuY3Rpb24oTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgVlB0ckhh
Y2tFeGVjdXRhYmxlKik7CiAKLSAgICAgICAgYm9vbCBpc0hvc3RGdW5jdGlvbk5vbklubGluZSgp
IGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGlzSG9zdEZ1bmN0aW9uTm9u
SW5saW5lKCkgY29uc3Q7CiAKICAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xv
dChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7CiAgICAgICAg
IHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmgJKHJldmlzaW9uIDgyMDEwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAKICAgICAgICAgYm9vbCBtX2hhc05vUHJvcGVydGll
c1dpdGhVSW50MzJOYW1lczsKICAgICB9OwogCi0gICAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBvYmplY3RQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqKTsKKyAgICBKU19FWFBPUlRf
UFJJVkFURSBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY1RvU3Ry
aW5nKEV4ZWNTdGF0ZSopOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuaAkocmV2aXNpb24gODIwMTApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0NCw3
ICsxNDQsNyBAQAogICAgICAgICBzdGF0aWMgdm9pZCBtYXJrTGlzdHMoSGVhcFJvb3RNYXJrZXIm
LCBMaXN0U2V0Jik7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2b2lkIHNsb3dBcHBlbmQoSlNW
YWx1ZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2xvd0FwcGVuZChKU1ZhbHVl
KTsKICAgICAgICAgCiAgICAgICAgIFJlZ2lzdGVyKiBtX2J1ZmZlcjsKICAgICAgICAgc2l6ZV90
IG1fc2l6ZTsKQEAgLTIzNCw3ICsyMzQsNyBAQAogICAgICAgICBjb25zdF9pdGVyYXRvciBiZWdp
bigpIGNvbnN0IHsgcmV0dXJuIG1fYXJnczsgfQogICAgICAgICBjb25zdF9pdGVyYXRvciBlbmQo
KSBjb25zdCB7IHJldHVybiBtX2FyZ3MgKyBtX2FyZ0NvdW50OyB9CiAKLSAgICAgICAgdm9pZCBn
ZXRTbGljZShpbnQgc3RhcnRJbmRleCwgQXJnTGlzdCYgcmVzdWx0KSBjb25zdDsKKyAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBnZXRTbGljZShpbnQgc3RhcnRJbmRleCwgQXJnTGlzdCYg
cmVzdWx0KSBjb25zdDsKICAgICBwcml2YXRlOgogICAgICAgICBKU1ZhbHVlKiBtX2FyZ3M7CiAg
ICAgICAgIHNpemVfdCBtX2FyZ0NvdW50OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBcnJheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXkuaAkocmV2aXNpb24gODIwMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDcgKzU3LDggQEAKIAogICAg
IGVudW0gQXJyYXlDcmVhdGlvbk1vZGUgeyBDcmVhdGVDb21wYWN0LCBDcmVhdGVJbml0aWFsaXpl
ZCB9OwogCi0gICAgY2xhc3MgSlNBcnJheSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKKyAg
ICBjbGFzcyBKU19FWFBPUlREQVRBIEpTQXJyYXkgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7
CisgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBXYWxrZXI7
CiAKICAgICBwdWJsaWM6CkBAIC03NCw3ICs3NSw3IEBACiAgICAgICAgIHZpcnR1YWwgYm9vbCBn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFBy
b3BlcnR5RGVzY3JpcHRvciYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcHV0KEV4ZWNTdGF0ZSos
IHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSk7IC8vIEZJWE1FOiBNYWtlIHByb3RlY3Rl
ZCBhbmQgYWRkIHNldEl0ZW0uCiAKLSAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3Qg
Q2xhc3NJbmZvIHNfaW5mbzsKKyAgICAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87
CiAgICAgICAgIAogICAgICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX3N0
b3JhZ2UtPm1fbGVuZ3RoOyB9CiAgICAgICAgIHZvaWQgc2V0TGVuZ3RoKHVuc2lnbmVkKTsgLy8g
T0sgdG8gdXNlIG9uIG5ldyBhcnJheXMsIGJ1dCBub3QgaWYgaXQgbWlnaHQgYmUgYSBSZWdFeHBN
YXRjaEFycmF5LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxG
dW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGVybmFsRnVuY3Rpb24uaAkocmV2aXNpb24gODIwMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDkgKzMx
LDkgQEAKIAogICAgIGNsYXNzIEZ1bmN0aW9uUHJvdG90eXBlOwogCi0gICAgY2xhc3MgSW50ZXJu
YWxGdW5jdGlvbiA6IHB1YmxpYyBKU09iamVjdFdpdGhHbG9iYWxPYmplY3QgeworICAgIGNsYXNz
IEpTX0VYUE9SVERBVEEgSW50ZXJuYWxGdW5jdGlvbiA6IHB1YmxpYyBKU09iamVjdFdpdGhHbG9i
YWxPYmplY3QgewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29u
c3QgQ2xhc3NJbmZvIHNfaW5mbzsKKyAgICAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2lu
Zm87CiAKICAgICAgICAgY29uc3QgVVN0cmluZyYgbmFtZShFeGVjU3RhdGUqKTsKICAgICAgICAg
Y29uc3QgVVN0cmluZyBkaXNwbGF5TmFtZShFeGVjU3RhdGUqKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmgJKHJldmlzaW9uIDgyMDEwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCSh3b3JraW5nIGNvcHkpCkBA
IC01MywxNSArNTMsMTUgQEAKICAgICAgICAgCiAgICAgICAgIENTdHJpbmcgYXNjaWkoKSBjb25z
dCB7IHJldHVybiBtX3N0cmluZy5hc2NpaSgpOyB9CiAgICAgICAgIAotICAgICAgICBzdGF0aWMg
SWRlbnRpZmllciBmcm9tKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgeSk7Ci0gICAgICAgIHN0
YXRpYyBJZGVudGlmaWVyIGZyb20oRXhlY1N0YXRlKiBleGVjLCBpbnQgeSk7Ci0gICAgICAgIHN0
YXRpYyBJZGVudGlmaWVyIGZyb20oRXhlY1N0YXRlKiBleGVjLCBkb3VibGUgeSk7CisgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBJZGVudGlmaWVyIGZyb20oRXhlY1N0YXRlKiwgdW5z
aWduZWQgeSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBJZGVudGlmaWVyIGZy
b20oRXhlY1N0YXRlKiwgaW50IHkpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
SWRlbnRpZmllciBmcm9tKEV4ZWNTdGF0ZSosIGRvdWJsZSB5KTsKICAgICAgICAgc3RhdGljIElk
ZW50aWZpZXIgZnJvbShKU0dsb2JhbERhdGEqLCB1bnNpZ25lZCB5KTsKICAgICAgICAgc3RhdGlj
IElkZW50aWZpZXIgZnJvbShKU0dsb2JhbERhdGEqLCBpbnQgeSk7CiAgICAgICAgIHN0YXRpYyBJ
ZGVudGlmaWVyIGZyb20oSlNHbG9iYWxEYXRhKiwgZG91YmxlIHkpOwogCi0gICAgICAgIHN0YXRp
YyB1aW50MzJfdCB0b1VJbnQzMihjb25zdCBVU3RyaW5nJiwgYm9vbCYgb2spOwotICAgICAgICB1
aW50MzJfdCB0b1VJbnQzMihib29sJiBvaykgY29uc3QgeyByZXR1cm4gdG9VSW50MzIobV9zdHJp
bmcsIG9rKTsgfQorICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdWludDMyX3QgdG9V
SW50MzIoY29uc3QgVVN0cmluZyYsIGJvb2wmIG9rKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgdWludDMyX3QgdG9VSW50MzIoYm9vbCYgb2spIGNvbnN0IHsgcmV0dXJuIHRvVUludDMyKG1f
c3RyaW5nLCBvayk7IH0KICAgICAgICAgdW5zaWduZWQgdG9BcnJheUluZGV4KGJvb2wmIG9rKSBj
b25zdDsKIAogICAgICAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmlz
TnVsbCgpOyB9CkBAIC03MywxMiArNzMsMTIgQEAKICAgICAgICAgZnJpZW5kIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgY2hhciopOwogICAgICAgICBmcmllbmQgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBjaGFyKik7CiAgICAgCi0gICAg
ICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqLCBjb25zdCBjaGFyKik7Ci0g
ICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqLCBjb25zdCBVQ2hhcios
IHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFN0cmlu
Z0ltcGwqIGEsIGNvbnN0IFN0cmluZ0ltcGwqIGIpIHsgcmV0dXJuIDo6ZXF1YWwoYSwgYik7IH0K
KyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgU3RyaW5n
SW1wbCosIGNvbnN0IGNoYXIqKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJv
b2wgZXF1YWwoY29uc3QgU3RyaW5nSW1wbCosIGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3Ro
KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgU3Ry
aW5nSW1wbCogYSwgY29uc3QgU3RyaW5nSW1wbCogYikgeyByZXR1cm4gOjplcXVhbChhLCBiKTsg
fQogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChFeGVjU3RhdGUq
LCBjb25zdCBjaGFyKik7IC8vIE9ubHkgdG8gYmUgdXNlZCB3aXRoIHN0cmluZyBsaXRlcmFscy4K
LSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRkKEpTR2xvYmFsRGF0YSos
IGNvbnN0IGNoYXIqKTsgLy8gT25seSB0byBiZSB1c2VkIHdpdGggc3RyaW5nIGxpdGVyYWxzLgor
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBh
ZGQoRXhlY1N0YXRlKiwgY29uc3QgY2hhciopOyAvLyBPbmx5IHRvIGJlIHVzZWQgd2l0aCBzdHJp
bmcgbGl0ZXJhbHMuCisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmUHRy
PFN0cmluZ0ltcGw+IGFkZChKU0dsb2JhbERhdGEqLCBjb25zdCBjaGFyKik7IC8vIE9ubHkgdG8g
YmUgdXNlZCB3aXRoIHN0cmluZyBsaXRlcmFscy4KIAogICAgIHByaXZhdGU6CiAgICAgICAgIFVT
dHJpbmcgbV9zdHJpbmc7CkBAIC0xMDgsMTAgKzEwOCwxMCBAQAogICAgICAgICAgICAgcmV0dXJu
IGFkZFNsb3dDYXNlKGdsb2JhbERhdGEsIHIpOwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRkU2xvd0Nhc2UoRXhlY1N0YXRlKiwgU3RyaW5nSW1w
bCogcik7Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZFNsb3dDYXNl
KEpTR2xvYmFsRGF0YSosIFN0cmluZ0ltcGwqIHIpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGRTbG93Q2FzZShFeGVjU3RhdGUqLCBT
dHJpbmdJbXBsKik7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZFNs
b3dDYXNlKEpTR2xvYmFsRGF0YSosIFN0cmluZ0ltcGwqKTsKIAotICAgICAgICBzdGF0aWMgdm9p
ZCBjaGVja0N1cnJlbnRJZGVudGlmaWVyVGFibGUoRXhlY1N0YXRlKik7CisgICAgICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGNoZWNrQ3VycmVudElkZW50aWZpZXJUYWJsZShFeGVj
U3RhdGUqKTsKICAgICAgICAgc3RhdGljIHZvaWQgY2hlY2tDdXJyZW50SWRlbnRpZmllclRhYmxl
KEpTR2xvYmFsRGF0YSopOwogICAgIH07CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAkocmV2aXNpb24gODIwMTApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAt
MjYsNyArMjYsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotICAgIGNsYXNzIFN0cmluZ09iamVj
dCA6IHB1YmxpYyBKU1dyYXBwZXJPYmplY3QgeworICAgIGNsYXNzIEpTX0VYUE9SVERBVEEgU3Ry
aW5nT2JqZWN0IDogcHVibGljIEpTV3JhcHBlck9iamVjdCB7CiAgICAgcHVibGljOgogICAgICAg
ICBTdHJpbmdPYmplY3QoRXhlY1N0YXRlKiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPik7
CiAgICAgICAgIFN0cmluZ09iamVjdChFeGVjU3RhdGUqLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1
Y3R1cmU+LCBjb25zdCBVU3RyaW5nJik7CkBAIC00MSw3ICs0MSw3IEBACiAgICAgICAgIHZpcnR1
YWwgYm9vbCBkZWxldGVQcm9wZXJ0eShFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSBtb2RlID0gRXhjbHVk
ZURvbnRFbnVtUHJvcGVydGllcyk7CiAKLSAgICAgICAgc3RhdGljIGNvbnN0IEpTX0VYUE9SVERB
VEEgQ2xhc3NJbmZvIHNfaW5mbzsKKyAgICAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2lu
Zm87CiAKICAgICAgICAgSlNTdHJpbmcqIGludGVybmFsVmFsdWUoKSBjb25zdCB7IHJldHVybiBh
c1N0cmluZyhKU1dyYXBwZXJPYmplY3Q6OmludGVybmFsVmFsdWUoKSk7fQogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJheS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5LmgJKHJldmlzaW9uIDgyMDEw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNzUsOCArNzUsOCBAQAogICAgICAgICAgICAgICAgIHNldEluZGV4KGksIGJ5
dGVWYWx1ZSk7CiAgICAgICAgIH0KIAotICAgICAgICBKU0J5dGVBcnJheShFeGVjU3RhdGUqLCBO
b25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBXVEY6OkJ5dGVBcnJheSogc3RvcmFnZSk7Ci0g
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTR2xv
YmFsRGF0YSYsIEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBKU0M6OkNsYXNzSW5mbyogPSAmc19k
ZWZhdWx0SW5mbyk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTQnl0ZUFycmF5KEV4ZWNT
dGF0ZSosIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIFdURjo6Qnl0ZUFycmF5KiBzdG9y
YWdlKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0
dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiwgSlNWYWx1ZSBwcm90b3R5cGUsIGNv
bnN0IEpTQzo6Q2xhc3NJbmZvKiA9ICZzX2RlZmF1bHRJbmZvKTsKIAogICAgICAgICB2aXJ0dWFs
IGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAgICAgICAgIHZpcnR1
YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9w
ZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21wbGV0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tcGxldGlvbi5oCShyZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNTUsOCAr
NTUsOCBAQAogICAgICAgICBKU1ZhbHVlIG1fdmFsdWU7CiAgICAgfTsKIAotICAgIENvbXBsZXRp
b24gY2hlY2tTeW50YXgoRXhlY1N0YXRlKiwgY29uc3QgU291cmNlQ29kZSYpOwotICAgIENvbXBs
ZXRpb24gZXZhbHVhdGUoRXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqLCBjb25zdCBTb3VyY2VD
b2RlJiwgSlNWYWx1ZSB0aGlzVmFsdWUgPSBKU1ZhbHVlKCkpOworICAgIEpTX0VYUE9SVF9QUklW
QVRFIENvbXBsZXRpb24gY2hlY2tTeW50YXgoRXhlY1N0YXRlKiwgY29uc3QgU291cmNlQ29kZSYp
OworICAgIEpTX0VYUE9SVF9QUklWQVRFIENvbXBsZXRpb24gZXZhbHVhdGUoRXhlY1N0YXRlKiwg
U2NvcGVDaGFpbk5vZGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNWYWx1ZSB0aGlzVmFsdWUgPSBK
U1ZhbHVlKCkpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAkocmV2aXNpb24gODIwMTAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAKIAogICAgIGNsYXNzIFJlZ2lzdGVyOwogCi0g
ICAgY2xhc3MgSlNWYXJpYWJsZU9iamVjdCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKKyAg
ICBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBKU1ZhcmlhYmxlT2JqZWN0IDogcHVibGljIEpTTm9u
RmluYWxPYmplY3QgewogICAgICAgICBmcmllbmQgY2xhc3MgSklUOwogCiAgICAgcHVibGljOgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgJKHJldmlzaW9uIDgyMDEw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE0MCw3ICsxNDAsNyBAQAogICAgICAgICAgICAgICAgIGNyZWF0ZVRhYmxlKCZleGVj
LT5nbG9iYWxEYXRhKCkpOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBkZWxldGVUYWJsZSgp
IGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGRlbGV0ZVRhYmxlKCkgY29u
c3Q7CiAKICAgICAgICAgLy8gRmluZCBhbiBlbnRyeSBpbiB0aGUgdGFibGUsIGFuZCByZXR1cm4g
dGhlIGVudHJ5LgogICAgICAgICBBTFdBWVNfSU5MSU5FIGNvbnN0IEhhc2hFbnRyeSogZW50cnko
SlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSBj
b25zdApAQCAtMTc1LDEwICsxNzUsMTAgQEAKICAgICAgICAgfQogCiAgICAgICAgIC8vIENvbnZl
cnQgdGhlIGhhc2ggdGFibGUga2V5cyB0byBpZGVudGlmaWVycy4KLSAgICAgICAgdm9pZCBjcmVh
dGVUYWJsZShKU0dsb2JhbERhdGEqKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCBjcmVhdGVUYWJsZShKU0dsb2JhbERhdGEqKSBjb25zdDsKICAgICB9OwogCi0gICAgdm9p
ZCBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChFeGVjU3RhdGUqLCBjb25zdCBIYXNoRW50cnkqLCBK
U09iamVjdCogdGhpc09iamVjdCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldFVwU3RhdGljRnVuY3Rp
b25TbG90KEV4ZWNTdGF0ZSosIGNvbnN0IEhhc2hFbnRyeSosIEpTT2JqZWN0KiB0aGlzT2JqZWN0
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogCiAgICAg
LyoqCiAgICAgICogVGhpcyBtZXRob2QgZG9lcyBpdCBhbGwgKGxvb2tpbmcgaW4gdGhlIGhhc2h0
YWJsZSwgY2hlY2tpbmcgZm9yIGZ1bmN0aW9uCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NlbGwuaAkocmV2aXNpb24gODIwMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NlbGwuaAkod29ya2luZyBjb3B5KQpAQCAtNjgsOCArNjgsOCBAQAogICAgICAg
ICBmcmllbmQgY2xhc3MgU2NvcGVDaGFpbk5vZGU7CiAKICAgICBwcml2YXRlOgotICAgICAgICBl
eHBsaWNpdCBKU0NlbGwoU3RydWN0dXJlKik7Ci0gICAgICAgIHZpcnR1YWwgfkpTQ2VsbCgpOwor
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBleHBsaWNpdCBKU0NlbGwoU3RydWN0dXJlKik7Cisg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgfkpTQ2VsbCgpOwogCiAgICAgcHVibGlj
OgogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZUR1bW15U3RydWN0
dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKQEAgLTc4LDkgKzc4LDkgQEAKICAgICAgICAg
fQogCiAgICAgICAgIC8vIFF1ZXJ5aW5nIHRoZSB0eXBlLgotICAgICAgICBib29sIGlzU3RyaW5n
KCkgY29uc3Q7Ci0gICAgICAgIGJvb2wgaXNPYmplY3QoKSBjb25zdDsKLSAgICAgICAgdmlydHVh
bCBib29sIGlzR2V0dGVyU2V0dGVyKCkgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IGJvb2wgaXNTdHJpbmcoKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBp
c09iamVjdCgpIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIGJvb2wg
aXNHZXR0ZXJTZXR0ZXIoKSBjb25zdDsKICAgICAgICAgYm9vbCBpbmhlcml0cyhjb25zdCBDbGFz
c0luZm8qKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBib29sIGlzQVBJVmFsdWVXcmFwcGVyKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzUHJvcGVydHlO
YW1lSXRlcmF0b3IoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtODgsMjUgKzg4LDI1IEBA
CiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlKCkgY29uc3Q7CiAKICAgICAgICAgLy8gRXh0
cmFjdGluZyB0aGUgdmFsdWUuCi0gICAgICAgIGJvb2wgZ2V0U3RyaW5nKEV4ZWNTdGF0ZSogZXhl
YywgVVN0cmluZyYpIGNvbnN0OwotICAgICAgICBVU3RyaW5nIGdldFN0cmluZyhFeGVjU3RhdGUq
IGV4ZWMpIGNvbnN0OyAvLyBudWxsIHN0cmluZyBpZiBub3QgYSBzdHJpbmcKLSAgICAgICAgSlNP
YmplY3QqIGdldE9iamVjdCgpOyAvLyBOVUxMIGlmIG5vdCBhbiBvYmplY3QKLSAgICAgICAgY29u
c3QgSlNPYmplY3QqIGdldE9iamVjdCgpIGNvbnN0OyAvLyBOVUxMIGlmIG5vdCBhbiBvYmplY3QK
KyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBnZXRTdHJpbmcoRXhlY1N0YXRlKiwgVVN0
cmluZyYpIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBVU3RyaW5nIGdldFN0cmlu
ZyhFeGVjU3RhdGUqKSBjb25zdDsgLy8gbnVsbCBzdHJpbmcgaWYgbm90IGEgc3RyaW5nCisgICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBnZXRPYmplY3QoKTsgLy8gMCBpZiBub3Qg
YW4gb2JqZWN0CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGNvbnN0IEpTT2JqZWN0KiBnZXRP
YmplY3QoKSBjb25zdDsgLy8gMCBpZiBub3QgYW4gb2JqZWN0CiAgICAgICAgIAotICAgICAgICB2
aXJ0dWFsIENhbGxUeXBlIGdldENhbGxEYXRhKENhbGxEYXRhJik7Ci0gICAgICAgIHZpcnR1YWwg
Q29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKENvbnN0cnVjdERhdGEmKTsKKyAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCBDYWxsVHlwZSBnZXRDYWxsRGF0YShDYWxsRGF0YSYp
OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIENvbnN0cnVjdFR5cGUgZ2V0Q29u
c3RydWN0RGF0YShDb25zdHJ1Y3REYXRhJik7CiAKICAgICAgICAgLy8gRXh0cmFjdGluZyBpbnRl
Z2VyIHZhbHVlcy4KICAgICAgICAgLy8gRklYTUU6IHJlbW92ZSB0aGVzZSBtZXRob2RzLCBjYW4g
Y2hlY2sgaXNOdW1iZXJDZWxsIGluIEpTVmFsdWUgJiYgdGhlbiBjYWxsIGFzTnVtYmVyQ2VsbDo6
Ki4KLSAgICAgICAgdmlydHVhbCBib29sIGdldFVJbnQzMih1aW50MzJfdCYpIGNvbnN0OworICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIGJvb2wgZ2V0VUludDMyKHVpbnQzMl90Jikg
Y29uc3Q7CiAKICAgICAgICAgLy8gQmFzaWMgY29udmVyc2lvbnMuCi0gICAgICAgIHZpcnR1YWwg
SlNWYWx1ZSB0b1ByaW1pdGl2ZShFeGVjU3RhdGUqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKSBj
b25zdDsKLSAgICAgICAgdmlydHVhbCBib29sIGdldFByaW1pdGl2ZU51bWJlcihFeGVjU3RhdGUq
LCBkb3VibGUmIG51bWJlciwgSlNWYWx1ZSYpOwotICAgICAgICB2aXJ0dWFsIGJvb2wgdG9Cb29s
ZWFuKEV4ZWNTdGF0ZSopIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIGRvdWJsZSB0b051bWJlcihF
eGVjU3RhdGUqKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCBVU3RyaW5nIHRvU3RyaW5nKEV4ZWNT
dGF0ZSopIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiB0b09iamVjdChFeGVjU3Rh
dGUqKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCBKU1ZhbHVlIHRv
UHJpbWl0aXZlKEV4ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpIGNvbnN0OworICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIGJvb2wgZ2V0UHJpbWl0aXZlTnVtYmVyKEV4
ZWNTdGF0ZSosIGRvdWJsZSYgbnVtYmVyLCBKU1ZhbHVlJik7CisgICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHZpcnR1YWwgYm9vbCB0b0Jvb2xlYW4oRXhlY1N0YXRlKikgY29uc3Q7CisgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgZG91YmxlIHRvTnVtYmVyKEV4ZWNTdGF0ZSopIGNv
bnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIFVTdHJpbmcgdG9TdHJpbmco
RXhlY1N0YXRlKikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgSlNP
YmplY3QqIHRvT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0OwogCiAgICAgICAgIC8vIEdhcmJhZ2Ug
Y29sbGVjdGlvbi4KICAgICAgICAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgRXhlY1N0YXRl
Kik7CkBAIC0xMTksMTYgKzExOSwxNiBAQAogI2VuZGlmCiAKICAgICAgICAgLy8gT2JqZWN0IG9w
ZXJhdGlvbnMsIHdpdGggdGhlIHRvT2JqZWN0IG9wZXJhdGlvbiBpbmNsdWRlZC4KLSAgICAgICAg
Y29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8oKSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVyZS0+
Y2xhc3NJbmZvKCk7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIHB1dChFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwot
ICAgICAgICB2aXJ0dWFsIHZvaWQgcHV0KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSk7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBkZWxldGVQcm9wZXJ0eShFeGVjU3Rh
dGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOwotICAgICAgICB2aXJ0dWFsIGJv
b2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKKyAg
ICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8oKSBjb25z
dCB7IHJldHVybiBtX3N0cnVjdHVyZS0+Y2xhc3NJbmZvKCk7IH0KKyAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgdmlydHVhbCB2b2lkIHB1dChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgICAgICBKU19FWFBP
UlRfUFJJVkFURSB2aXJ0dWFsIHZvaWQgcHV0KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgYm9vbCBk
ZWxldGVQcm9wZXJ0eShFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUp
OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIGJvb2wgZGVsZXRlUHJvcGVydHko
RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKIAotICAgICAgICB2aXJ0dWFsIEpT
T2JqZWN0KiB0b1RoaXNPYmplY3QoRXhlY1N0YXRlKikgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwg
SlNWYWx1ZSBnZXRKU051bWJlcigpOwotICAgICAgICB2b2lkKiB2cHRyKCkgeyByZXR1cm4gKnJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPih0aGlzKTsgfQotICAgICAgICB2b2lkIHNldFZQdHIodm9p
ZCogdnB0cikgeyAqcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KHRoaXMpID0gdnB0cjsgfQorICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIEpTT2JqZWN0KiB0b1RoaXNPYmplY3QoRXhl
Y1N0YXRlKikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgSlNWYWx1
ZSBnZXRKU051bWJlcigpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkKiB2cHRyKCkg
eyByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPih0aGlzKTsgfQorICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSB2b2lkIHNldFZQdHIodm9pZCogdnB0cikgeyAqcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKio+KHRoaXMpID0gdnB0cjsgfQogCiAgICAgICAgIC8vIEZJWE1FOiBSZW5hbWUgZ2V0
T3duUHJvcGVydHlTbG90IHRvIHZpcnR1YWxHZXRPd25Qcm9wZXJ0eVNsb3QsIGFuZAogICAgICAg
ICAvLyBmYXN0R2V0T3duUHJvcGVydHlTbG90IHRvIGdldE93blByb3BlcnR5U2xvdC4gQ2FsbGVy
cyBzaG91bGQgYWx3YXlzCkBAIC0xNTEsOCArMTUxLDggQEAKIAogICAgIHByaXZhdGU6CiAgICAg
ICAgIC8vIEJhc2UgaW1wbGVtZW50YXRpb247IGZvciBub24tb2JqZWN0IGNsYXNzZXMgaW1wbGVt
ZW50cyBnZXRQcm9wZXJ0eVNsb3QuCi0gICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0
eVNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmKTsKLSAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3Rh
dGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSos
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0
YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgCiAg
ICAgICAgIFN0cnVjdHVyZSogbV9zdHJ1Y3R1cmU7CiAgICAgfTsKQEAgLTE3MSw3ICsxNzEsNyBA
QAogICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IE9iamVj
dFR5cGU7CiAgICAgfQogCi0gICAgaW5saW5lIGJvb2wgSlNDZWxsOjppc1N0cmluZygpIGNvbnN0
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgaW5saW5lIGJvb2wgSlNDZWxsOjppc1N0cmluZygpIGNv
bnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgp
ID09IFN0cmluZ1R5cGU7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNMb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNMb2NrLmgJKHJldmlzaW9uIDgyMDEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNMb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAKICAgICBjbGFzcyBK
U0xvY2sgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShKU0xvY2spOwogICAgIHB1Ymxp
YzoKLSAgICAgICAgSlNMb2NrKEV4ZWNTdGF0ZSopOworICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSBKU0xvY2soRXhlY1N0YXRlKik7CiAgICAgICAgIEpTTG9jayhKU0dsb2JhbERhdGEqKTsKIAog
ICAgICAgICBKU0xvY2soSlNMb2NrQmVoYXZpb3IgbG9ja0JlaGF2aW9yKQpAQCAtODAsMTMgKzgw
LDEzIEBACiAgICAgICAgICAgICB1bmxvY2sobV9sb2NrQmVoYXZpb3IpOyAKICAgICAgICAgfQog
ICAgICAgICAKLSAgICAgICAgc3RhdGljIHZvaWQgbG9jayhKU0xvY2tCZWhhdmlvcik7Ci0gICAg
ICAgIHN0YXRpYyB2b2lkIHVubG9jayhKU0xvY2tCZWhhdmlvcik7CisgICAgICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyB2b2lkIGxvY2soSlNMb2NrQmVoYXZpb3IpOworICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCB1bmxvY2soSlNMb2NrQmVoYXZpb3IpOwogICAgICAg
ICBzdGF0aWMgdm9pZCBsb2NrKEV4ZWNTdGF0ZSopOwogICAgICAgICBzdGF0aWMgdm9pZCB1bmxv
Y2soRXhlY1N0YXRlKik7CiAKLSAgICAgICAgc3RhdGljIGludHB0cl90IGxvY2tDb3VudCgpOwot
ICAgICAgICBzdGF0aWMgYm9vbCBjdXJyZW50VGhyZWFkSXNIb2xkaW5nTG9jaygpOworICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgaW50cHRyX3QgbG9ja0NvdW50KCk7CisgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGN1cnJlbnRUaHJlYWRJc0hvbGRpbmdMb2Nr
KCk7CiAKICAgICAgICAgSlNMb2NrQmVoYXZpb3IgbV9sb2NrQmVoYXZpb3I7CiAKQEAgLTk0LDgg
Kzk0LDggQEAKICAgICAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERyb3BBbGxMb2Nrcyk7
CiAgICAgICAgIHB1YmxpYzoKICAgICAgICAgICAgIERyb3BBbGxMb2NrcyhFeGVjU3RhdGUqIGV4
ZWMpOwotICAgICAgICAgICAgRHJvcEFsbExvY2tzKEpTTG9ja0JlaGF2aW9yKTsKLSAgICAgICAg
ICAgIH5Ecm9wQWxsTG9ja3MoKTsKKyAgICAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIERyb3BB
bGxMb2NrcyhKU0xvY2tCZWhhdmlvcik7CisgICAgICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB+
RHJvcEFsbExvY2tzKCk7CiAgICAgICAgICAgICAKICAgICAgICAgcHJpdmF0ZToKICAgICAgICAg
ICAgIGludHB0cl90IG1fbG9ja0NvdW50OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJvcGVydHlTbG90LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUHJvcGVydHlTbG90LmgJKHJldmlzaW9uIDgyMDEwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgJKHdvcmtpbmcgY29weSkKQEAgLTIyMCw3
ICsyMjAsNyBAQAogICAgICAgICAgICAgcmV0dXJuIG1fZ2V0VmFsdWU7CiAgICAgICAgIH0KICAg
ICBwcml2YXRlOgotICAgICAgICBKU1ZhbHVlIGZ1bmN0aW9uR2V0dGVyKEV4ZWNTdGF0ZSopIGNv
bnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIGZ1bmN0aW9uR2V0dGVyKEV4
ZWNTdGF0ZSopIGNvbnN0OwogCiAgICAgICAgIEdldFZhbHVlRnVuYyBtX2dldFZhbHVlOwogICAg
ICAgICBHZXRJbmRleFZhbHVlRnVuYyBtX2dldEluZGV4VmFsdWU7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCShyZXZp
c2lvbiA4MjAxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29u
c3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQAogICAgICAgICB2aXJ0
dWFsIENhbGxUeXBlIGdldENhbGxEYXRhKENhbGxEYXRhJik7CiAgICAgfTsKIAotICAgIEpTT2Jq
ZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqLCBjb25zdCBBcmdMaXN0JiwgY29uc3Qg
SWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBVU3RyaW5nJiBzb3VyY2VVUkwsIGludCBs
aW5lTnVtYmVyKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogY29uc3RydWN0RnVu
Y3Rpb24oRXhlY1N0YXRlKiwgY29uc3QgQXJnTGlzdCYsIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0
aW9uTmFtZSwgY29uc3QgVVN0cmluZyYgc291cmNlVVJMLCBpbnQgbGluZU51bWJlcik7CiAgICAg
SlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSosIGNvbnN0IEFyZ0xpc3QmKTsK
IAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TbWFsbFN0cmluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TbWFsbFN0cmluZ3MuaAkocmV2aXNpb24gODIwMTApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3MuaAkod29ya2luZyBjb3B5KQpAQCAtNzMsOCArNzMs
OCBAQAogICAgIHByaXZhdGU6CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzaW5nbGVD
aGFyYWN0ZXJTdHJpbmdDb3VudCA9IG1heFNpbmdsZUNoYXJhY3RlclN0cmluZyArIDE7CiAKLSAg
ICAgICAgdm9pZCBjcmVhdGVFbXB0eVN0cmluZyhKU0dsb2JhbERhdGEqKTsKLSAgICAgICAgdm9p
ZCBjcmVhdGVTaW5nbGVDaGFyYWN0ZXJTdHJpbmcoSlNHbG9iYWxEYXRhKiwgdW5zaWduZWQgY2hh
cik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgY3JlYXRlRW1wdHlTdHJpbmcoSlNH
bG9iYWxEYXRhKik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgY3JlYXRlU2luZ2xl
Q2hhcmFjdGVyU3RyaW5nKEpTR2xvYmFsRGF0YSosIHVuc2lnbmVkIGNoYXIpOwogCiAgICAgICAg
IEpTU3RyaW5nKiBtX2VtcHR5U3RyaW5nOwogICAgICAgICBKU1N0cmluZyogbV9zaW5nbGVDaGFy
YWN0ZXJTdHJpbmdzW3NpbmdsZUNoYXJhY3RlclN0cmluZ0NvdW50XTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuaAkocmV2aXNp
b24gODIwMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVB
cnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCw4ICs2OCw4IEBACiAKICAgICAgICAgSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhKCkgeyByZXR1cm4gbV9nbG9iYWxEYXRhOyB9CiAKLSAgICAgICAg
dm9pZCBhZGQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikgeyBhZGQoaWRlbnRpZmllci5p
bXBsKCkpOyB9Ci0gICAgICAgIHZvaWQgYWRkKFN0cmluZ0ltcGwqKTsKKyAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBhZGQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikgeyBhZGQo
aWRlbnRpZmllci5pbXBsKCkpOyB9CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgYWRk
KFN0cmluZ0ltcGwqKTsKICAgICAgICAgdm9pZCBhZGRLbm93blVuaXF1ZShTdHJpbmdJbXBsKiBp
ZGVudGlmaWVyKSB7IG1fZGF0YS0+cHJvcGVydHlOYW1lVmVjdG9yKCkuYXBwZW5kKElkZW50aWZp
ZXIobV9nbG9iYWxEYXRhLCBpZGVudGlmaWVyKSk7IH0KIAogICAgICAgICBJZGVudGlmaWVyJiBv
cGVyYXRvcltdKHVuc2lnbmVkIGkpIHsgcmV0dXJuIG1fZGF0YS0+cHJvcGVydHlOYW1lVmVjdG9y
KClbaV07IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaAkocmV2aXNp
b24gODIwMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NSwxMiArNDUsMTIgQEAKICAgICBKU09iamVjdCogY3JlYXRlVHlwZUVy
cm9yKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgVVN0cmluZyYpOwogICAgIEpTT2JqZWN0KiBjcmVh
dGVVUklFcnJvcihKU0dsb2JhbE9iamVjdCosIGNvbnN0IFVTdHJpbmcmKTsKICAgICAvLyBFeGVj
U3RhdGUgd3JhcHBlcnMuCi0gICAgSlNPYmplY3QqIGNyZWF0ZUVycm9yKEV4ZWNTdGF0ZSosIGNv
bnN0IFVTdHJpbmcmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogY3JlYXRlRXJy
b3IoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYpOwogICAgIEpTT2JqZWN0KiBjcmVhdGVFdmFs
RXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYpOwotICAgIEpTT2JqZWN0KiBjcmVhdGVS
YW5nZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmKTsKLSAgICBKU09iamVjdCogY3Jl
YXRlUmVmZXJlbmNlRXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYpOwotICAgIEpTT2Jq
ZWN0KiBjcmVhdGVTeW50YXhFcnJvcihFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJik7Ci0gICAg
SlNPYmplY3QqIGNyZWF0ZVR5cGVFcnJvcihFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJik7Cisg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIGNyZWF0ZVJhbmdlRXJyb3IoRXhlY1N0YXRl
KiwgY29uc3QgVVN0cmluZyYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBjcmVh
dGVSZWZlcmVuY2VFcnJvcihFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJik7CisgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgSlNPYmplY3QqIGNyZWF0ZVN5bnRheEVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0
IFVTdHJpbmcmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogY3JlYXRlVHlwZUVy
cm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmKTsKICAgICBKU09iamVjdCogY3JlYXRlVVJJ
RXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYpOwogCiAgICAgLy8gTWV0aG9kcyB0byBh
ZGQgCkBAIC02MCwxMiArNjAsMTIgQEAKICAgICBKU09iamVjdCogYWRkRXJyb3JJbmZvKEV4ZWNT
dGF0ZSosIEpTT2JqZWN0KiBlcnJvciwgaW50IGxpbmUsIGNvbnN0IFNvdXJjZUNvZGUmKTsKIAog
ICAgIC8vIE1ldGhvZHMgdG8gdGhyb3cgRXJyb3JzLgotICAgIEpTVmFsdWUgdGhyb3dFcnJvcihF
eGVjU3RhdGUqLCBKU1ZhbHVlKTsKLSAgICBKU09iamVjdCogdGhyb3dFcnJvcihFeGVjU3RhdGUq
LCBKU09iamVjdCopOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgdGhyb3dFcnJvcihF
eGVjU3RhdGUqLCBKU1ZhbHVlKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogdGhy
b3dFcnJvcihFeGVjU3RhdGUqLCBKU09iamVjdCopOwogCiAgICAgLy8gQ29udmVuaWVuY2Ugd3Jh
cHBlcnMsIGNyZWF0ZSBhbiB0aHJvdyBhbiBleGNlcHRpb24gd2l0aCBhIGRlZmF1bHQgbWVzc2Fn
ZS4KLSAgICBKU09iamVjdCogdGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRlKik7Ci0gICAgSlNPYmpl
Y3QqIHRocm93U3ludGF4RXJyb3IoRXhlY1N0YXRlKik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
SlNPYmplY3QqIHRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSopOworICAgIEpTX0VYUE9SVF9QUklW
QVRFIEpTT2JqZWN0KiB0aHJvd1N5bnRheEVycm9yKEV4ZWNTdGF0ZSopOwogCiAgICAgLy8gQ29u
dmVuaWVuY2Ugd3JhcHBlcnMsIHdyYXAgcmVzdWx0IGFzIGFuIEVuY29kZWRKU1ZhbHVlLgogICAg
IGlubGluZSBFbmNvZGVkSlNWYWx1ZSB0aHJvd1ZNRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlIGVycm9yKSB7IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFcnJvcihleGVjLCBlcnJv
cikpOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZy5oCShyZXZp
c2lvbiA4MjAxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuaAko
d29ya2luZyBjb3B5KQpAQCAtMzAsMjQgKzMwLDI0IEBACiBjbGFzcyBVU3RyaW5nIHsKIHB1Ymxp
YzoKICAgICAvLyBDb25zdHJ1Y3QgYSBudWxsIHN0cmluZywgZGlzdGluZ3Vpc2hhYmxlIGZyb20g
YW4gZW1wdHkgc3RyaW5nLgotICAgIFVTdHJpbmcoKSB7IH0KKyAgICBKU19FWFBPUlRfUFJJVkFU
RSBVU3RyaW5nKCkgeyB9CiAKICAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBVVEYtMTYg
ZGF0YS4KLSAgICBVU3RyaW5nKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5n
dGgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIFVTdHJpbmcoY29uc3QgVUNoYXIqIGNoYXJhY3Rl
cnMsIHVuc2lnbmVkIGxlbmd0aCk7CiAKICAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBV
VEYtMTYgZGF0YSwgZnJvbSBhIG51bGwtdGVybWluYXRlZCBzb3VyY2UuCi0gICAgVVN0cmluZyhj
b25zdCBVQ2hhciopOworICAgIEpTX0VYUE9SVF9QUklWQVRFIFVTdHJpbmcoY29uc3QgVUNoYXIq
KTsKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyB3aXRoIGxhdGluMSBkYXRhLgotICAgIFVT
dHJpbmcoY29uc3QgY2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBKU19F
WFBPUlRfUFJJVkFURSBVU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxl
bmd0aCk7CiAKICAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBsYXRpbjEgZGF0YSwgZnJv
bSBhIG51bGwtdGVybWluYXRlZCBzb3VyY2UuCi0gICAgVVN0cmluZyhjb25zdCBjaGFyKiBjaGFy
YWN0ZXJzKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBVU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJh
Y3RlcnMpOwogCiAgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHJlZmVyZW5jaW5nIGFuIGV4aXN0
aW5nIFN0cmluZ0ltcGwuCi0gICAgVVN0cmluZyhTdHJpbmdJbXBsKiBpbXBsKSA6IG1faW1wbChp
bXBsKSB7IH0KLSAgICBVU3RyaW5nKFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gaW1wbCkgOiBtX2lt
cGwoaW1wbCkgeyB9Ci0gICAgVVN0cmluZyhSZWZQdHI8U3RyaW5nSW1wbD4gaW1wbCkgOiBtX2lt
cGwoaW1wbCkgeyB9CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgVVN0cmluZyhTdHJpbmdJbXBsKiBp
bXBsKSA6IG1faW1wbChpbXBsKSB7IH0KKyAgICBKU19FWFBPUlRfUFJJVkFURSBVU3RyaW5nKFBh
c3NSZWZQdHI8U3RyaW5nSW1wbD4gaW1wbCkgOiBtX2ltcGwoaW1wbCkgeyB9CisgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgVVN0cmluZyhSZWZQdHI8U3RyaW5nSW1wbD4gaW1wbCkgOiBtX2ltcGwoaW1w
bCkgeyB9CiAKICAgICAvLyBJbmxpbmUgdGhlIGRlc3RydWN0b3IuCiAgICAgQUxXQVlTX0lOTElO
RSB+VVN0cmluZygpIHsgfQpAQCAtNzYsOSArNzYsOSBAQAogICAgICAgICByZXR1cm4gbV9pbXBs
LT5jaGFyYWN0ZXJzKCk7CiAgICAgfQogCi0gICAgQ1N0cmluZyBhc2NpaSgpIGNvbnN0OwotICAg
IENTdHJpbmcgbGF0aW4xKCkgY29uc3Q7Ci0gICAgQ1N0cmluZyB1dGY4KGJvb2wgc3RyaWN0ID0g
ZmFsc2UpIGNvbnN0OworICAgIEpTX0VYUE9SVF9QUklWQVRFIENTdHJpbmcgYXNjaWkoKSBjb25z
dDsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBDU3RyaW5nIGxhdGluMSgpIGNvbnN0OworICAgIEpT
X0VYUE9SVF9QUklWQVRFIENTdHJpbmcgdXRmOChib29sIHN0cmljdCA9IGZhbHNlKSBjb25zdDsK
IAogICAgIFVDaGFyIG9wZXJhdG9yW10odW5zaWduZWQgaW5kZXgpIGNvbnN0CiAgICAgewpAQCAt
ODcsMTEgKzg3LDExIEBACiAgICAgICAgIHJldHVybiBtX2ltcGwtPmNoYXJhY3RlcnMoKVtpbmRl
eF07CiAgICAgfQogCi0gICAgc3RhdGljIFVTdHJpbmcgbnVtYmVyKGludCk7Ci0gICAgc3RhdGlj
IFVTdHJpbmcgbnVtYmVyKHVuc2lnbmVkKTsKLSAgICBzdGF0aWMgVVN0cmluZyBudW1iZXIobG9u
Zyk7Ci0gICAgc3RhdGljIFVTdHJpbmcgbnVtYmVyKGxvbmcgbG9uZyk7Ci0gICAgc3RhdGljIFVT
dHJpbmcgbnVtYmVyKGRvdWJsZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFVTdHJp
bmcgbnVtYmVyKGludCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFVTdHJpbmcgbnVt
YmVyKHVuc2lnbmVkKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgVVN0cmluZyBudW1i
ZXIobG9uZyk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFVTdHJpbmcgbnVtYmVyKGxv
bmcgbG9uZyk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFVTdHJpbmcgbnVtYmVyKGRv
dWJsZSk7CiAKICAgICAvLyBGaW5kIGEgc2luZ2xlIGNoYXJhY3RlciBvciBzdHJpbmcsIGFsc28g
d2l0aCBtYXRjaCBmdW5jdGlvbiAmIGxhdGluMSBmb3Jtcy4KICAgICBzaXplX3QgZmluZChVQ2hh
ciBjLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0CkBAIC0xMDcsNyArMTA3LDcgQEAKICAgICBz
aXplX3QgcmV2ZXJzZUZpbmQoY29uc3QgVVN0cmluZyYgc3RyLCB1bnNpZ25lZCBzdGFydCA9IFVJ
TlRfTUFYKSBjb25zdAogICAgICAgICB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPnJldmVyc2VG
aW5kKHN0ci5pbXBsKCksIHN0YXJ0KSA6IG5vdEZvdW5kOyB9CiAKLSAgICBVU3RyaW5nIHN1YnN0
cmluZ1NoYXJpbmdJbXBsKHVuc2lnbmVkIHBvcywgdW5zaWduZWQgbGVuID0gVUlOVF9NQVgpIGNv
bnN0OworICAgIEpTX0VYUE9SVF9QUklWQVRFIFVTdHJpbmcgc3Vic3RyaW5nU2hhcmluZ0ltcGwo
dW5zaWduZWQgcG9zLCB1bnNpZ25lZCBsZW4gPSBVSU5UX01BWCkgY29uc3Q7CiAKIHByaXZhdGU6
CiAgICAgUmVmUHRyPFN0cmluZ0ltcGw+IG1faW1wbDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5jZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5jZS5oCShyZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5jZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMSw4ICszMSw4IEBACiAKICAgICBjbGFzcyBEYXRlSW5zdGFuY2UgOiBwdWJsaWMgSlNXcmFw
cGVyT2JqZWN0IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIERhdGVJbnN0YW5jZShFeGVjU3RhdGUq
LCBkb3VibGUpOwotICAgICAgICBEYXRlSW5zdGFuY2UoRXhlY1N0YXRlKiwgTm9uTnVsbFBhc3NS
ZWZQdHI8U3RydWN0dXJlPiwgZG91YmxlKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgRGF0
ZUluc3RhbmNlKEV4ZWNTdGF0ZSosIGRvdWJsZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IERhdGVJbnN0YW5jZShFeGVjU3RhdGUqLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBk
b3VibGUpOwogICAgICAgICBleHBsaWNpdCBEYXRlSW5zdGFuY2UoRXhlY1N0YXRlKiwgTm9uTnVs
bFBhc3NSZWZQdHI8U3RydWN0dXJlPik7CiAKICAgICAgICAgZG91YmxlIGludGVybmFsTnVtYmVy
KCkgY29uc3QgeyByZXR1cm4gaW50ZXJuYWxWYWx1ZSgpLnVuY2hlY2tlZEdldE51bWJlcigpOyB9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Sb3BlSW1wbC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JvcGVJbXBsLmgJKHJldmlzaW9u
IDgyMDEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUm9wZUltcGwuaAkod29y
a2luZyBjb3B5KQpAQCAtODMsNyArODMsNyBAQAogICAgIHsKICAgICB9CiAKLSAgICB2b2lkIGRl
c3RydWN0Tm9uUmVjdXJzaXZlKCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkZXN0cnVj
dE5vblJlY3Vyc2l2ZSgpOwogICAgIHZvaWQgZGVyZWZGaWJlcnNOb25SZWN1cnNpdmUoVmVjdG9y
PFJvcGVJbXBsKiwgMzI+JiB3b3JrUXVldWUpOwogCiAgICAgYm9vbCBoYXNPbmVSZWYoKSB7IHJl
dHVybiAobV9yZWZDb3VudEFuZEZsYWdzICYgc19yZWZDb3VudE1hc2spID09IHNfcmVmQ291bnRJ
bmNyZW1lbnQ7IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
RGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsRGF0YS5oCShyZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNyArMTEzLDcgQEAKICAg
ICAgICAgLy8gdGhlIG9yaWdpbmFsIEFQSS4KICAgICAgICAgZW51bSBHbG9iYWxEYXRhVHlwZSB7
IERlZmF1bHQsIEFQSUNvbnRleHRHcm91cCwgQVBJU2hhcmVkIH07CiAKLSAgICAgICAgc3RydWN0
IENsaWVudERhdGEgeworICAgICAgICBzdHJ1Y3QgSlNfRVhQT1JUX1BSSVZBVEUgQ2xpZW50RGF0
YSB7CiAgICAgICAgICAgICB2aXJ0dWFsIH5DbGllbnREYXRhKCkgPSAwOwogICAgICAgICB9Owog
CkBAIC0xMjIsMTAgKzEyMiwxMCBAQAogICAgICAgICBzdGF0aWMgYm9vbCBzaGFyZWRJbnN0YW5j
ZUV4aXN0cygpOwogICAgICAgICBzdGF0aWMgSlNHbG9iYWxEYXRhJiBzaGFyZWRJbnN0YW5jZSgp
OwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTR2xvYmFsRGF0YT4gY3JlYXRlKFRocmVh
ZFN0YWNrVHlwZSk7Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTR2xvYmFsRGF0YT4gY3Jl
YXRlTGVha2VkKFRocmVhZFN0YWNrVHlwZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBQYXNzUmVmUHRyPEpTR2xvYmFsRGF0YT4gY3JlYXRlKFRocmVhZFN0YWNrVHlwZSk7Cisg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPEpTR2xvYmFsRGF0YT4g
Y3JlYXRlTGVha2VkKFRocmVhZFN0YWNrVHlwZSk7CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEpTR2xvYmFsRGF0YT4gY3JlYXRlQ29udGV4dEdyb3VwKFRocmVhZFN0YWNrVHlwZSk7Ci0gICAg
ICAgIH5KU0dsb2JhbERhdGEoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgfkpTR2xvYmFs
RGF0YSgpOwogCiAjaWYgRU5BQkxFKEpTQ19NVUxUSVBMRV9USFJFQURTKQogICAgICAgICAvLyBX
aWxsIHN0YXJ0IHRyYWNraW5nIHRocmVhZHMgdGhhdCB1c2UgdGhlIGhlYXAsIHdoaWNoIGlzIHJl
c291cmNlLWhlYXZ5LgpAQCAtMjQ4LDkgKzI0OCw5IEBACiAKICAgICAgICAgdm9pZCByZXNldERh
dGVDYWNoZSgpOwogCi0gICAgICAgIHZvaWQgc3RhcnRTYW1wbGluZygpOwotICAgICAgICB2b2lk
IHN0b3BTYW1wbGluZygpOwotICAgICAgICB2b2lkIGR1bXBTYW1wbGVEYXRhKEV4ZWNTdGF0ZSog
ZXhlYyk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc3RhcnRTYW1wbGluZygpOwor
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHN0b3BTYW1wbGluZygpOworICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSB2b2lkIGR1bXBTYW1wbGVEYXRhKEV4ZWNTdGF0ZSopOwogICAgICAg
ICB2b2lkIHJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKCk7CiAgICAgICAgIFJlZ0V4cENhY2hlKiBy
ZWdFeHBDYWNoZSgpIHsgcmV0dXJuIG1fcmVnRXhwQ2FjaGU7IH0KICNpZiBFTkFCTEUoUkVHRVhQ
X1RSQUNJTkcpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UaW1lb3V0Q2hl
Y2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RpbWVv
dXRDaGVja2VyLmgJKHJldmlzaW9uIDgyMDEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVGltZW91dENoZWNrZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTcsOSArNTcsOSBAQAog
ICAgICAgICAgICAgLS1tX3N0YXJ0Q291bnQ7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIHJl
c2V0KCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVzZXQoKTsKIAotICAgICAg
ICBib29sIGRpZFRpbWVPdXQoRXhlY1N0YXRlKik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IGJvb2wgZGlkVGltZU91dChFeGVjU3RhdGUqKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHVu
c2lnbmVkIG1fdGltZW91dEludGVydmFsOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSGVhcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0hlYXAuaAkocmV2aXNpb24gODIwMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDI4ICs2MywyOCBAQAogICAgICAgICAKICAg
ICAgICAgSGVhcChKU0dsb2JhbERhdGEqKTsKICAgICAgICAgfkhlYXAoKTsKLSAgICAgICAgdm9p
ZCBkZXN0cm95KCk7IC8vIEpTR2xvYmFsRGF0YSBtdXN0IGNhbGwgZGVzdHJveSgpIGJlZm9yZSB+
SGVhcCgpLgorICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGRlc3Ryb3koKTsgLy8gSlNH
bG9iYWxEYXRhIG11c3QgY2FsbCBkZXN0cm95KCkgYmVmb3JlIH5IZWFwKCkuCiAKICAgICAgICAg
SlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxEYXRhOyB9
CiAgICAgICAgIE1hcmtlZFNwYWNlJiBtYXJrZWRTcGFjZSgpIHsgcmV0dXJuIG1fbWFya2VkU3Bh
Y2U7IH0KICAgICAgICAgTWFjaGluZVRocmVhZHMmIG1hY2hpbmVUaHJlYWRzKCkgeyByZXR1cm4g
bV9tYWNoaW5lVGhyZWFkczsgfQogCi0gICAgICAgIEdDQWN0aXZpdHlDYWxsYmFjayogYWN0aXZp
dHlDYWxsYmFjaygpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBHQ0FjdGl2aXR5Q2FsbGJh
Y2sqIGFjdGl2aXR5Q2FsbGJhY2soKTsKICAgICAgICAgdm9pZCBzZXRBY3Rpdml0eUNhbGxiYWNr
KFBhc3NPd25QdHI8R0NBY3Rpdml0eUNhbGxiYWNrPik7CiAKLSAgICAgICAgYm9vbCBpc0J1c3ko
KTsgLy8gdHJ1ZSBpZiBhbiBhbGxvY2F0aW9uIG9yIGNvbGxlY3Rpb24gaXMgaW4gcHJvZ3Jlc3MK
LSAgICAgICAgdm9pZCogYWxsb2NhdGUoc2l6ZV90KTsKLSAgICAgICAgdm9pZCBjb2xsZWN0QWxs
R2FyYmFnZSgpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGlzQnVzeSgpOyAvLyB0
cnVlIGlmIGFuIGFsbG9jYXRpb24gb3IgY29sbGVjdGlvbiBpcyBpbiBwcm9ncmVzcworICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSB2b2lkKiBhbGxvY2F0ZShzaXplX3QpOworICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSB2b2lkIGNvbGxlY3RBbGxHYXJiYWdlKCk7CiAKLSAgICAgICAgdm9pZCBy
ZXBvcnRFeHRyYU1lbW9yeUNvc3Qoc2l6ZV90IGNvc3QpOworICAgICAgICBKU19FWFBPUlRfUFJJ
VkFURSB2b2lkIHJlcG9ydEV4dHJhTWVtb3J5Q29zdChzaXplX3QgY29zdCk7CiAKLSAgICAgICAg
dm9pZCBwcm90ZWN0KEpTVmFsdWUpOwotICAgICAgICBib29sIHVucHJvdGVjdChKU1ZhbHVlKTsg
Ly8gVHJ1ZSB3aGVuIHRoZSBwcm90ZWN0IGNvdW50IGRyb3BzIHRvIDAuCisgICAgICAgIEpTX0VY
UE9SVF9QUklWQVRFIHZvaWQgcHJvdGVjdChKU1ZhbHVlKTsKKyAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgYm9vbCB1bnByb3RlY3QoSlNWYWx1ZSk7IC8vIFRydWUgd2hlbiB0aGUgcHJvdGVjdCBj
b3VudCBkcm9wcyB0byAwLgogCiAgICAgICAgIGJvb2wgY29udGFpbnModm9pZCopOwogCi0gICAg
ICAgIHNpemVfdCBzaXplKCkgY29uc3Q7Ci0gICAgICAgIHNpemVfdCBjYXBhY2l0eSgpIGNvbnN0
OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzaXplX3Qgc2l6ZSgpIGNvbnN0OworICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSBzaXplX3QgY2FwYWNpdHkoKSBjb25zdDsKICAgICAgICAgc2l6
ZV90IG9iamVjdENvdW50KCkgY29uc3Q7CiAgICAgICAgIHNpemVfdCBnbG9iYWxPYmplY3RDb3Vu
dCgpOwogICAgICAgICBzaXplX3QgcHJvdGVjdGVkT2JqZWN0Q291bnQoKTsKQEAgLTExMCw4ICsx
MTAsOCBAQAogICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG1pbkV4dHJhQ29zdCA9IDI1NjsK
ICAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhFeHRyYUNvc3QgPSAxMDI0ICogMTAyNDsK
IAotICAgICAgICB2b2lkKiBhbGxvY2F0ZVNsb3dDYXNlKHNpemVfdCk7Ci0gICAgICAgIHZvaWQg
cmVwb3J0RXh0cmFNZW1vcnlDb3N0U2xvd0Nhc2Uoc2l6ZV90KTsKKyAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgdm9pZCogYWxsb2NhdGVTbG93Q2FzZShzaXplX3QpOworICAgICAgICBKU19FWFBP
UlRfUFJJVkFURSB2b2lkIHJlcG9ydEV4dHJhTWVtb3J5Q29zdFNsb3dDYXNlKHNpemVfdCk7CiAK
ICAgICAgICAgdm9pZCBtYXJrUm9vdHMoKTsKICAgICAgICAgdm9pZCBtYXJrUHJvdGVjdGVkT2Jq
ZWN0cyhIZWFwUm9vdE1hcmtlciYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oCShyZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTUy
LDcgKzUyLDcgQEAKIAogICAgIHR5cGVkZWYgVmVjdG9yPEV4ZWNTdGF0ZSosIDE2PiBFeGVjU3Rh
dGVTdGFjazsKICAgICAKLSAgICBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1Zhcmlh
YmxlT2JqZWN0IHsKKyAgICBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBKU0dsb2JhbE9iamVjdCA6
IHB1YmxpYyBKU1ZhcmlhYmxlT2JqZWN0IHsKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHR5cGVk
ZWYgSGFzaFNldDxSZWZQdHI8T3BhcXVlSlNXZWFrT2JqZWN0TWFwPiA+IFdlYWtNYXBTZXQ7CiAK
QEAgLTQzNCw3ICs0MzQsNyBAQAogICAgIGNsYXNzIER5bmFtaWNHbG9iYWxPYmplY3RTY29wZSB7
CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKER5bmFtaWNHbG9iYWxPYmplY3RTY29wZSk7
CiAgICAgcHVibGljOgotICAgICAgICBEeW5hbWljR2xvYmFsT2JqZWN0U2NvcGUoSlNHbG9iYWxE
YXRhJiwgSlNHbG9iYWxPYmplY3QqKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgRHluYW1p
Y0dsb2JhbE9iamVjdFNjb3BlKEpTR2xvYmFsRGF0YSYsIEpTR2xvYmFsT2JqZWN0Kik7CiAKICAg
ICAgICAgfkR5bmFtaWNHbG9iYWxPYmplY3RTY29wZSgpCiAgICAgICAgIHsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0V2l0aEdsb2JhbE9iamVjdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0V2l0aEdsb2Jh
bE9iamVjdC5oCShyZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0V2l0aEdsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMCAr
MzksMTAgQEAKICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHBy
b3RvLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RD
b3VudCwgJnNfaW5mbyk7CiAgICAgfQogCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCgpIGNvbnN0OworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QoKSBjb25zdDsKIAogcHJvdGVjdGVkOgotICAgIEpTT2JqZWN0V2l0aEdsb2JhbE9iamVj
dChKU0dsb2JhbE9iamVjdCosIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4pOworICAgIEpT
X0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdChKU0dsb2JhbE9iamVjdCos
IE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4pOwogCiAgICAgSlNPYmplY3RXaXRoR2xvYmFs
T2JqZWN0KE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlKQogICAgICAgICA6
IEpTTm9uRmluYWxPYmplY3Qoc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTVmFsdWUuaAkocmV2aXNpb24gODIwMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTgwLDEwICs4MCwxMCBAQAog
I2VuZGlmCiAgICAgfTsKIAotICAgIGRvdWJsZSBub25JbmxpbmVOYU4oKTsKKyAgICBKU19FWFBP
UlRfUFJJVkFURSBkb3VibGUgbm9uSW5saW5lTmFOKCk7CiAKICAgICAvLyBUaGlzIGltcGxlbWVu
dHMgVG9JbnQzMiwgZGVmaW5lZCBpbiBFQ01BLTI2MiA5LjUuCi0gICAgaW50MzJfdCB0b0ludDMy
KGRvdWJsZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgaW50MzJfdCB0b0ludDMyKGRvdWJsZSk7
CiAKICAgICAvLyBUaGlzIGltcGxlbWVudHMgVG9VSW50MzIsIGRlZmluZWQgaW4gRUNNQS0yNjIg
OS42LgogICAgIGlubGluZSB1aW50MzJfdCB0b1VJbnQzMihkb3VibGUgbnVtYmVyKQpAQCAtMTkx
LDcgKzE5MSw3IEBACiAgICAgICAgIEpTT2JqZWN0KiB0b09iamVjdChFeGVjU3RhdGUqKSBjb25z
dDsKIAogICAgICAgICAvLyBJbnRlZ2VyIGNvbnZlcnNpb25zLgotICAgICAgICBkb3VibGUgdG9J
bnRlZ2VyKEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBkb3Vi
bGUgdG9JbnRlZ2VyKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgICAgICBkb3VibGUgdG9JbnRlZ2Vy
UHJlc2VydmVOYU4oRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgICAgIGludDMyX3QgdG9JbnQzMihF
eGVjU3RhdGUqKSBjb25zdDsKICAgICAgICAgdWludDMyX3QgdG9VSW50MzIoRXhlY1N0YXRlKikg
Y29uc3Q7CkBAIC0yMzAsNyArMjMwLDcgQEAKIAogICAgICAgICBib29sIGlzQ2VsbCgpIGNvbnN0
OwogICAgICAgICBKU0NlbGwqIGFzQ2VsbCgpIGNvbnN0OwotICAgICAgICBib29sIGlzVmFsaWRD
YWxsZWUoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc1ZhbGlkQ2FsbGVlKCk7
CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgIGNoYXIqIGRlc2NyaXB0aW9uKCk7CkBAIC0yNDQs
MTAgKzI0NCwxMCBAQAogICAgICAgICBKU1ZhbHVlKEhhc2hUYWJsZURlbGV0ZWRWYWx1ZVRhZyk7
CiAKICAgICAgICAgaW5saW5lIGNvbnN0IEpTVmFsdWUgYXNWYWx1ZSgpIGNvbnN0IHsgcmV0dXJu
ICp0aGlzOyB9Ci0gICAgICAgIEpTT2JqZWN0KiB0b09iamVjdFNsb3dDYXNlKEV4ZWNTdGF0ZSop
IGNvbnN0OwotICAgICAgICBKU09iamVjdCogdG9UaGlzT2JqZWN0U2xvd0Nhc2UoRXhlY1N0YXRl
KikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0b09iamVjdFNs
b3dDYXNlKEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBKU09i
amVjdCogdG9UaGlzT2JqZWN0U2xvd0Nhc2UoRXhlY1N0YXRlKikgY29uc3Q7CiAKLSAgICAgICAg
SlNPYmplY3QqIHN5bnRoZXNpemVQcm90b3R5cGUoRXhlY1N0YXRlKikgY29uc3Q7CisgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBzeW50aGVzaXplUHJvdG90eXBlKEV4ZWNTdGF0
ZSopIGNvbnN0OwogICAgICAgICBKU09iamVjdCogc3ludGhlc2l6ZU9iamVjdChFeGVjU3RhdGUq
KSBjb25zdDsKIAogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuaAkocmV2aXNpb24gODIw
MTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3Iu
aAkod29ya2luZyBjb3B5KQpAQCAtNDYsOCArNDYsOCBAQAogICAgICAgICBKU1ZhbHVlIHZhbHVl
KCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQogICAgICAgICBKU1ZhbHVlIGdldHRlcigpIGNv
bnN0OwogICAgICAgICBKU1ZhbHVlIHNldHRlcigpIGNvbnN0OwotICAgICAgICB2b2lkIHNldFVu
ZGVmaW5lZCgpOwotICAgICAgICB2b2lkIHNldERlc2NyaXB0b3IoSlNWYWx1ZSB2YWx1ZSwgdW5z
aWduZWQgYXR0cmlidXRlcyk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0VW5k
ZWZpbmVkKCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0RGVzY3JpcHRvcihK
U1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKICAgICAgICAgdm9pZCBzZXRBY2Nlc3NvckRl
c2NyaXB0b3IoSlNWYWx1ZSBnZXR0ZXIsIEpTVmFsdWUgc2V0dGVyLCB1bnNpZ25lZCBhdHRyaWJ1
dGVzKTsKICAgICAgICAgdm9pZCBzZXRXcml0YWJsZShib29sKTsKICAgICAgICAgdm9pZCBzZXRF
bnVtZXJhYmxlKGJvb2wpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNX
cmFwcGVyT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNXcmFwcGVyT2JqZWN0LmgJKHJldmlzaW9uIDgyMDEwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcg
KzI4LDcgQEAKIAogICAgIC8vIFRoaXMgY2xhc3MgaXMgdXNlZCBhcyBhIGJhc2UgZm9yIGNsYXNz
ZXMgc3VjaCBhcyBTdHJpbmcsCiAgICAgLy8gTnVtYmVyLCBCb29sZWFuIGFuZCBEYXRlIHdoaWNo
IGFyZSB3cmFwcGVycyBmb3IgcHJpbWl0aXZlIHR5cGVzLgotICAgIGNsYXNzIEpTV3JhcHBlck9i
amVjdCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKKyAgICBjbGFzcyBKU19FWFBPUlRfUFJJ
VkFURSBKU1dyYXBwZXJPYmplY3QgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgcHJv
dGVjdGVkOgogICAgICAgICBleHBsaWNpdCBKU1dyYXBwZXJPYmplY3QoTm9uTnVsbFBhc3NSZWZQ
dHI8U3RydWN0dXJlPik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nh
bGxEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2Fs
bERhdGEuaAkocmV2aXNpb24gODIwMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9DYWxsRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw3ICs1Nyw3IEBACiAgICAgICAgIH0g
anM7CiAgICAgfTsKIAotICAgIEpTVmFsdWUgY2FsbChFeGVjU3RhdGUqLCBKU1ZhbHVlIGZ1bmN0
aW9uT2JqZWN0LCBDYWxsVHlwZSwgY29uc3QgQ2FsbERhdGEmLCBKU1ZhbHVlIHRoaXNWYWx1ZSwg
Y29uc3QgQXJnTGlzdCYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgY2FsbChFeGVj
U3RhdGUqLCBKU1ZhbHVlIGZ1bmN0aW9uT2JqZWN0LCBDYWxsVHlwZSwgY29uc3QgQ2FsbERhdGEm
LCBKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgQXJnTGlzdCYpOwogCiB9IC8vIG5hbWVzcGFjZSBK
U0MKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaAko
cmV2aXNpb24gODIwMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNo
YWluLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKICAgICBjbGFzcyBNYXJrU3Rh
Y2s7CiAgICAgY2xhc3MgU2NvcGVDaGFpbkl0ZXJhdG9yOwogICAgIAotICAgIGNsYXNzIFNjb3Bl
Q2hhaW5Ob2RlIDogcHVibGljIEpTQ2VsbCB7CisgICAgY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUg
U2NvcGVDaGFpbk5vZGUgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFNj
b3BlQ2hhaW5Ob2RlKFNjb3BlQ2hhaW5Ob2RlKiBuZXh0LCBKU09iamVjdCogb2JqZWN0LCBKU0ds
b2JhbERhdGEqIGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2Jq
ZWN0KiBnbG9iYWxUaGlzKQogICAgICAgICAgICAgOiBKU0NlbGwoZ2xvYmFsRGF0YS0+c2NvcGVD
aGFpbk5vZGVTdHJ1Y3R1cmUuZ2V0KCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db25zdHJ1Y3REYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29uc3RydWN0RGF0YS5oCShyZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0cnVjdERhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtNTcs
NyArNTcsNyBAQAogICAgICAgICB9IGpzOwogICAgIH07CiAKLSAgICBKU09iamVjdCogY29uc3Ry
dWN0KEV4ZWNTdGF0ZSosIEpTVmFsdWUgY29uc3RydWN0b3IsIENvbnN0cnVjdFR5cGUsIGNvbnN0
IENvbnN0cnVjdERhdGEmLCBjb25zdCBBcmdMaXN0Jik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
SlNPYmplY3QqIGNvbnN0cnVjdChFeGVjU3RhdGUqLCBKU1ZhbHVlIGNvbnN0cnVjdG9yLCBDb25z
dHJ1Y3RUeXBlLCBjb25zdCBDb25zdHJ1Y3REYXRhJiwgY29uc3QgQXJnTGlzdCYpOwogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFy
a2VkU3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9N
YXJrZWRTcGFjZS5oCShyZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL01hcmtlZFNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw3ICsxMDUsNyBAQAog
ICAgICAgICB2b2lkIGZyZWVCbG9ja3MoRG91Ymx5TGlua2VkTGlzdDxNYXJrZWRCbG9jaz4mKTsK
IAogICAgICAgICBTaXplQ2xhc3MmIHNpemVDbGFzc0ZvcihzaXplX3QpOwotICAgICAgICB2b2lk
KiBhbGxvY2F0ZUZyb21TaXplQ2xhc3MoU2l6ZUNsYXNzJik7CisgICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHZvaWQqIGFsbG9jYXRlRnJvbVNpemVDbGFzcyhTaXplQ2xhc3MmKTsKIAogICAgICAg
ICB2b2lkIGNsZWFyTWFya3MoTWFya2VkQmxvY2sqKTsKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuaAkocmV2aXNpb24g
ODIwMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFk
aW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAKIAogICAgIC8vIFRoaXMgZnVu
Y3Rpb24gbXVzdCBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQuIEl0IGlzIHNhZmUgdG8g
Y2FsbCBpdCByZXBlYXRlZGx5LgogICAgIC8vIERhcndpbiBpcyBhbiBleGNlcHRpb24gdG8gdGhp
cyBydWxlOiBpdCBpcyBPSyB0byBjYWxsIHRoaXMgZnVuY3Rpb24gZnJvbSBhbnkgdGhyZWFkLCBl
dmVuIHJlZW50cmFudGx5LgotICAgIHZvaWQgaW5pdGlhbGl6ZVRocmVhZGluZygpOworICAgIEpT
X0VYUE9SVF9QUklWQVRFIHZvaWQgaW5pdGlhbGl6ZVRocmVhZGluZygpOwogCiB9CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb25maWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvY29uZmlnLmgJKHJldmlzaW9uIDgyMDEwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2NvbmZpZy5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw4ICs1OSw4IEBACiAjZGVmaW5l
IEpTX0VYUE9SVENMQVNTCiAjZW5kaWYKIAotI2RlZmluZSBXVEZfRVhQT1JUX1BSSVZBVEUgSlNf
RVhQT1JUREFUQQotI2RlZmluZSBKU19FWFBPUlRfUFJJVkFURSBKU19FWFBPUlREQVRBCisjZGVm
aW5lIFdURl9FWFBPUlRfUFJJVkFURQorI2RlZmluZSBKU19FWFBPUlRfUFJJVkFURQogCiAjZW5k
aWYgLyogVVNFKEVYUE9SVF9NQUNST1MpICovCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHJldmlzaW9u
IDgyMDEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC04OSw3ICs4OSw3IEBACiAgICAgICAgIHR5cGVk
ZWYgRGVjbGFyYXRpb25TdGFja3M6OlZhclN0YWNrIFZhclN0YWNrOwogICAgICAgICB0eXBlZGVm
IERlY2xhcmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNrIEZ1bmN0aW9uU3RhY2s7CiAKLSAgICAg
ICAgc3RhdGljIHZvaWQgc2V0RHVtcHNHZW5lcmF0ZWRDb2RlKGJvb2wgZHVtcHNHZW5lcmF0ZWRD
b2RlKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgc2V0RHVtcHNHZW5l
cmF0ZWRDb2RlKGJvb2wpOwogICAgICAgICBzdGF0aWMgYm9vbCBkdW1wc0dlbmVyYXRlZENvZGUo
KTsKIAogICAgICAgICBCeXRlY29kZUdlbmVyYXRvcihQcm9ncmFtTm9kZSosIFNjb3BlQ2hhaW5O
b2RlKiwgU3ltYm9sVGFibGUqLCBQcm9ncmFtQ29kZUJsb2NrKik7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmgJKHJldmlzaW9u
IDgyMDEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9SZWZDb3VudGVkTGVha0NvdW50
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogCiBuYW1lc3BhY2UgV1RGIHsK
ICAgICAKLSAgICBzdHJ1Y3QgUmVmQ291bnRlZExlYWtDb3VudGVyIHsKKyAgICBzdHJ1Y3QgV1RG
X0VYUE9SVF9QUklWQVRFIFJlZkNvdW50ZWRMZWFrQ291bnRlciB7CiAgICAgICAgIHN0YXRpYyB2
b2lkIHN1cHByZXNzTWVzc2FnZXMoY29uc3QgY2hhciopOwogICAgICAgICBzdGF0aWMgdm9pZCBj
YW5jZWxNZXNzYWdlU3VwcHJlc3Npb24oY29uc3QgY2hhciopOwogICAgICAgICAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvTnVsbFB0ci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvTnVsbFB0ci5oCShyZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvTnVsbFB0ci5oCSh3b3JraW5nIGNvcHkpCkBAIC00MiwxMCArNDIs
MTAgQEAKICNlbHNlCiAKIG5hbWVzcGFjZSBzdGQgewotICAgIGNsYXNzIG51bGxwdHJfdCB7IH07
CitjbGFzcyBXVEZfRVhQT1JUX1BSSVZBVEUgbnVsbHB0cl90IHsgfTsKIH0KIAotZXh0ZXJuIHN0
ZDo6bnVsbHB0cl90IG51bGxwdHI7CitleHRlcm4gV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6bnVs
bHB0cl90IG51bGxwdHI7CiAKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL1RocmVhZGluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
VGhyZWFkaW5nLmgJKHJldmlzaW9uIDgyMDEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi9UaHJlYWRpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtODQsMjcgKzg0LDI3IEBACiAvLyBUaGlz
IGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVkIGZyb20gdGhlIG1haW4gdGhyZWFkLiBJdCBpcyBzYWZl
IHRvIGNhbGwgaXQgcmVwZWF0ZWRseS4KIC8vIERhcndpbiBpcyBhbiBleGNlcHRpb24gdG8gdGhp
cyBydWxlOiBpdCBpcyBPSyB0byBjYWxsIGl0IGZyb20gYW55IHRocmVhZCwgdGhlIG9ubHkgCiAv
LyByZXF1aXJlbWVudCBpcyB0aGF0IHRoZSBjYWxscyBhcmUgbm90IHJlZW50cmFudC4KLXZvaWQg
aW5pdGlhbGl6ZVRocmVhZGluZygpOworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgaW5pdGlhbGl6
ZVRocmVhZGluZygpOwogCiAvLyBSZXR1cm5zIDAgaWYgdGhyZWFkIGNyZWF0aW9uIGZhaWxlZC4K
IC8vIFRoZSB0aHJlYWQgbmFtZSBtdXN0IGJlIGEgbGl0ZXJhbCBzaW5jZSBvbiBzb21lIHBsYXRm
b3JtcyBpdCdzIHBhc3NlZCBpbiB0byB0aGUgdGhyZWFkLgotVGhyZWFkSWRlbnRpZmllciBjcmVh
dGVUaHJlYWQoVGhyZWFkRnVuY3Rpb24sIHZvaWQqLCBjb25zdCBjaGFyKiB0aHJlYWROYW1lKTsK
K1dURl9FWFBPUlRfUFJJVkFURSBUaHJlYWRJZGVudGlmaWVyIGNyZWF0ZVRocmVhZChUaHJlYWRG
dW5jdGlvbiwgdm9pZCosIGNvbnN0IGNoYXIqIHRocmVhZE5hbWUpOwogCiAvLyBJbnRlcm5hbCBw
bGF0Zm9ybS1zcGVjaWZpYyBjcmVhdGVUaHJlYWQgaW1wbGVtZW50YXRpb24uCi1UaHJlYWRJZGVu
dGlmaWVyIGNyZWF0ZVRocmVhZEludGVybmFsKFRocmVhZEZ1bmN0aW9uLCB2b2lkKiwgY29uc3Qg
Y2hhciogdGhyZWFkTmFtZSk7CitXVEZfRVhQT1JUX1BSSVZBVEUgVGhyZWFkSWRlbnRpZmllciBj
cmVhdGVUaHJlYWRJbnRlcm5hbChUaHJlYWRGdW5jdGlvbiwgdm9pZCosIGNvbnN0IGNoYXIqIHRo
cmVhZE5hbWUpOwogCiAvLyBDYWxsZWQgaW4gdGhlIHRocmVhZCBkdXJpbmcgaW5pdGlhbGl6YXRp
b24uCiAvLyBIZWxwZnVsIGZvciBwbGF0Zm9ybXMgd2hlcmUgdGhlIHRocmVhZCBuYW1lIG11c3Qg
YmUgc2V0IGZyb20gd2l0aGluIHRoZSB0aHJlYWQuCiB2b2lkIGluaXRpYWxpemVDdXJyZW50VGhy
ZWFkSW50ZXJuYWwoY29uc3QgY2hhciogdGhyZWFkTmFtZSk7CiAKLVRocmVhZElkZW50aWZpZXIg
Y3VycmVudFRocmVhZCgpOwotaW50IHdhaXRGb3JUaHJlYWRDb21wbGV0aW9uKFRocmVhZElkZW50
aWZpZXIsIHZvaWQqKik7Ci12b2lkIGRldGFjaFRocmVhZChUaHJlYWRJZGVudGlmaWVyKTsKK1dU
Rl9FWFBPUlRfUFJJVkFURSBUaHJlYWRJZGVudGlmaWVyIGN1cnJlbnRUaHJlYWQoKTsKK1dURl9F
WFBPUlRfUFJJVkFURSBpbnQgd2FpdEZvclRocmVhZENvbXBsZXRpb24oVGhyZWFkSWRlbnRpZmll
ciwgdm9pZCoqKTsKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIGRldGFjaFRocmVhZChUaHJlYWRJ
ZGVudGlmaWVyKTsKIAotdm9pZCB5aWVsZCgpOworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgeWll
bGQoKTsKIAotdm9pZCBsb2NrQXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljTXV0ZXgoKTsKLXZv
aWQgdW5sb2NrQXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljTXV0ZXgoKTsKK1dURl9FWFBPUlRf
UFJJVkFURSB2b2lkIGxvY2tBdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleCgpOworV1RG
X0VYUE9SVF9QUklWQVRFIHZvaWQgdW5sb2NrQXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljTXV0
ZXgoKTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvTWFpblRocmVhZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvTWFpblRocmVhZC5oCShyZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvTWFpblRocmVhZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxNSArMzgsMTUgQEAKIHR5
cGVkZWYgdm9pZCBNYWluVGhyZWFkRnVuY3Rpb24odm9pZCopOwogCiAvLyBNdXN0IGJlIGNhbGxl
ZCBmcm9tIHRoZSBtYWluIHRocmVhZC4KLXZvaWQgaW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKK1dU
Rl9FWFBPUlRfUFJJVkFURSB2b2lkIGluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAKLXZvaWQgY2Fs
bE9uTWFpblRocmVhZChNYWluVGhyZWFkRnVuY3Rpb24qLCB2b2lkKiBjb250ZXh0KTsKK1dURl9F
WFBPUlRfUFJJVkFURSB2b2lkIGNhbGxPbk1haW5UaHJlYWQoTWFpblRocmVhZEZ1bmN0aW9uKiwg
dm9pZCogY29udGV4dCk7CiB2b2lkIGNhbGxPbk1haW5UaHJlYWRBbmRXYWl0KE1haW5UaHJlYWRG
dW5jdGlvbiosIHZvaWQqIGNvbnRleHQpOwogdm9pZCBjYW5jZWxDYWxsT25NYWluVGhyZWFkKE1h
aW5UaHJlYWRGdW5jdGlvbiosIHZvaWQqIGNvbnRleHQpOwogCi12b2lkIHNldE1haW5UaHJlYWRD
YWxsYmFja3NQYXVzZWQoYm9vbCBwYXVzZWQpOworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0
TWFpblRocmVhZENhbGxiYWNrc1BhdXNlZChib29sKTsKIAotYm9vbCBpc01haW5UaHJlYWQoKTsK
K1dURl9FWFBPUlRfUFJJVkFURSBib29sIGlzTWFpblRocmVhZCgpOwogCiAvLyBOT1RFOiB0aGVz
ZSBmdW5jdGlvbnMgYXJlIGludGVybmFsIHRvIHRoZSBjYWxsT25NYWluVGhyZWFkIGltcGxlbWVu
dGF0aW9uLgogdm9pZCBpbml0aWFsaXplTWFpblRocmVhZFBsYXRmb3JtKCk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL09TQWxsb2NhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9PU0FsbG9jYXRvci5oCShyZXZpc2lvbiA4MjAxMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvT1NBbGxvY2F0b3IuaAkod29ya2luZyBjb3B5KQpAQCAt
NDYsNyArNDYsNyBAQAogICAgIC8vIHJlbGVhc2VEZWNvbW1pdHRlZCBzaG91bGQgYmUgY2FsbGVk
IG9uIGEgcmVnaW9uIG9mIFZNIGFsbG9jYXRlZCBieSBhIHNpbmdsZSByZXNlcnZhdGlvbiwKICAg
ICAvLyB0aGUgbWVtb3J5IG11c3QgYWxsIGN1cnJlbnRseSBiZSBpbiBhIGRlY29tbWl0dGVkIHN0
YXRlLgogICAgIHN0YXRpYyB2b2lkKiByZXNlcnZlVW5jb21taXR0ZWQoc2l6ZV90LCBVc2FnZSA9
IFVua25vd25Vc2FnZSwgYm9vbCB3cml0YWJsZSA9IHRydWUsIGJvb2wgZXhlY3V0YWJsZSA9IGZh
bHNlKTsKLSAgICBzdGF0aWMgdm9pZCByZWxlYXNlRGVjb21taXR0ZWQodm9pZCosIHNpemVfdCk7
CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHJlbGVhc2VEZWNvbW1pdHRlZCh2
b2lkKiwgc2l6ZV90KTsKIAogICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJlIHN5bW1ldHJpYzsgdGhl
eSBjb21taXQgb3IgZGVjb21taXQgYSByZWdpb24gb2YgVk0gKHVuY29tbWl0dGVkIFZNIHNob3Vs
ZAogICAgIC8vIG5ldmVyIGJlIGFjY2Vzc2VkLCBzaW5jZSB0aGUgT1MgbWF5IG5vdCBoYXZlIGF0
dGFjaGVkIHBoeXNpY2FsIG1lbW9yeSBmb3IgdGhlc2UgcmVnaW9ucykuCkBAIC01Nyw3ICs1Nyw3
IEBACiAgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgc3ltbWV0cmljOyByZXNlcnZlQW5kQ29tbWl0
IGFsbG9jYXRlcyBWTSBpbiBhbiBjb21taXR0ZWQgc3RhdGUsCiAgICAgLy8gZGVjb21taXRBbmRS
ZWxlYXNlIHNob3VsZCBiZSBjYWxsZWQgb24gYSByZWdpb24gb2YgVk0gYWxsb2NhdGVkIGJ5IGEg
c2luZ2xlIHJlc2VydmF0aW9uLAogICAgIC8vIHRoZSBtZW1vcnkgbXVzdCBhbGwgY3VycmVudGx5
IGJlIGluIGEgY29tbWl0dGVkIHN0YXRlLgotICAgIHN0YXRpYyB2b2lkKiByZXNlcnZlQW5kQ29t
bWl0KHNpemVfdCwgVXNhZ2UgPSBVbmtub3duVXNhZ2UsIGJvb2wgd3JpdGFibGUgPSB0cnVlLCBi
b29sIGV4ZWN1dGFibGUgPSBmYWxzZSk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2
b2lkKiByZXNlcnZlQW5kQ29tbWl0KHNpemVfdCwgVXNhZ2UgPSBVbmtub3duVXNhZ2UsIGJvb2wg
d3JpdGFibGUgPSB0cnVlLCBib29sIGV4ZWN1dGFibGUgPSBmYWxzZSk7CiAgICAgc3RhdGljIHZv
aWQgZGVjb21taXRBbmRSZWxlYXNlKHZvaWQqIGJhc2UsIHNpemVfdCBzaXplKTsKIAogICAgIC8v
IFRoZXNlIG1ldGhvZHMgYXJlIGFraW4gdG8gcmVzZXJ2ZUFuZENvbW1pdC9kZWNvbW1pdEFuZFJl
bGVhc2UsIGFib3ZlIC0gaG93ZXZlciByYXRoZXIgdGhhbgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi9GYXN0TWFsbG9jLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3d0Zi9GYXN0TWFsbG9jLmgJKHJldmlzaW9uIDgyMDEwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi9GYXN0TWFsbG9jLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDEyICsyOSwxMiBA
QAogbmFtZXNwYWNlIFdURiB7CiAKICAgICAvLyBUaGVzZSBmdW5jdGlvbnMgY2FsbCBDUkFTSCgp
IGlmIGFuIGFsbG9jYXRpb24gZmFpbHMuCi0gICAgdm9pZCogZmFzdE1hbGxvYyhzaXplX3QpOwot
ICAgIHZvaWQqIGZhc3RaZXJvZWRNYWxsb2Moc2l6ZV90KTsKLSAgICB2b2lkKiBmYXN0Q2FsbG9j
KHNpemVfdCBudW1FbGVtZW50cywgc2l6ZV90IGVsZW1lbnRTaXplKTsKLSAgICB2b2lkKiBmYXN0
UmVhbGxvYyh2b2lkKiwgc2l6ZV90KTsKLSAgICBjaGFyKiBmYXN0U3RyRHVwKGNvbnN0IGNoYXIq
KTsKLSAgICBzaXplX3QgZmFzdE1hbGxvY1NpemUoY29uc3Qgdm9pZCopOworICAgIFdURl9FWFBP
UlRfUFJJVkFURSB2b2lkKiBmYXN0TWFsbG9jKHNpemVfdCk7CisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHZvaWQqIGZhc3RaZXJvZWRNYWxsb2Moc2l6ZV90KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgdm9pZCogZmFzdENhbGxvYyhzaXplX3QgbnVtRWxlbWVudHMsIHNpemVfdCBlbGVtZW50U2l6
ZSk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQqIGZhc3RSZWFsbG9jKHZvaWQqLCBzaXpl
X3QpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBjaGFyKiBmYXN0U3RyRHVwKGNvbnN0IGNoYXIq
KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZhc3RNYWxsb2NTaXplKGNvbnN0IHZv
aWQqKTsKIAogICAgIHN0cnVjdCBUcnlNYWxsb2NSZXR1cm5WYWx1ZSB7CiAgICAgICAgIFRyeU1h
bGxvY1JldHVyblZhbHVlKHZvaWQqIGRhdGEpCkBAIC02OCwxMiArNjgsMTIgQEAKICAgICAgICAg
cmV0dXJuIHJldHVyblZhbHVlOwogICAgIH0KIAotICAgIFRyeU1hbGxvY1JldHVyblZhbHVlIHRy
eUZhc3RNYWxsb2Moc2l6ZV90IG4pOwotICAgIFRyeU1hbGxvY1JldHVyblZhbHVlIHRyeUZhc3Ra
ZXJvZWRNYWxsb2Moc2l6ZV90IG4pOwotICAgIFRyeU1hbGxvY1JldHVyblZhbHVlIHRyeUZhc3RD
YWxsb2Moc2l6ZV90IG5fZWxlbWVudHMsIHNpemVfdCBlbGVtZW50X3NpemUpOwotICAgIFRyeU1h
bGxvY1JldHVyblZhbHVlIHRyeUZhc3RSZWFsbG9jKHZvaWQqIHAsIHNpemVfdCBuKTsKKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgVHJ5TWFsbG9jUmV0dXJuVmFsdWUgdHJ5RmFzdE1hbGxvYyhzaXpl
X3Qgbik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFRyeU1hbGxvY1JldHVyblZhbHVlIHRyeUZh
c3RaZXJvZWRNYWxsb2Moc2l6ZV90IG4pOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBUcnlNYWxs
b2NSZXR1cm5WYWx1ZSB0cnlGYXN0Q2FsbG9jKHNpemVfdCBuX2VsZW1lbnRzLCBzaXplX3QgZWxl
bWVudF9zaXplKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgVHJ5TWFsbG9jUmV0dXJuVmFsdWUg
dHJ5RmFzdFJlYWxsb2Modm9pZCogcCwgc2l6ZV90IG4pOwogCi0gICAgdm9pZCBmYXN0RnJlZSh2
b2lkKik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZmFzdEZyZWUodm9pZCopOwogCiAj
aWZuZGVmIE5ERUJVRyAgICAKICAgICB2b2lkIGZhc3RNYWxsb2NGb3JiaWQoKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkU3BlY2lmaWMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZFNwZWNpZmljLmgJKHJldmlzaW9uIDgyMDEw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRTcGVjaWZpYy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMTYsOCArMjE2LDggQEAKIC8vIDIpIFdlIGRvIG5vdCBuZWVkIHRvIGhvbGQg
bWFueSBpbnN0YW5jZXMgb2YgVGhyZWFkU3BlY2lmaWM8PiBkYXRhLiBUaGlzIGZpeGVkIG51bWJl
ciBzaG91bGQgYmUgZmFyIGVub3VnaC4KIGNvbnN0IGludCBrTWF4VGxzS2V5U2l6ZSA9IDI1NjsK
IAotbG9uZyYgdGxzS2V5Q291bnQoKTsKLURXT1JEKiB0bHNLZXlzKCk7CitXVEZfRVhQT1JUX1BS
SVZBVEUgbG9uZyYgdGxzS2V5Q291bnQoKTsKK1dURl9FWFBPUlRfUFJJVkFURSBEV09SRCogdGxz
S2V5cygpOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogaW5saW5lIFRocmVhZFNwZWNpZmljPFQ+
OjpUaHJlYWRTcGVjaWZpYygpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1dURlRo
cmVhZERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1dURlRo
cmVhZERhdGEuaAkocmV2aXNpb24gODIwMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L1dURlRocmVhZERhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtODksOCArODksOCBAQAogY2xhc3Mg
V1RGVGhyZWFkRGF0YSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV1RGVGhyZWFkRGF0YSk7
CiBwdWJsaWM6Ci0gICAgV1RGVGhyZWFkRGF0YSgpOwotICAgIH5XVEZUaHJlYWREYXRhKCk7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIFdURlRocmVhZERhdGEoKTsKKyAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgfldURlRocmVhZERhdGEoKTsKIAogICAgIEF0b21pY1N0cmluZ1RhYmxlKiBhdG9taWNT
dHJpbmdUYWJsZSgpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9EYXRl
TWF0aC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvRGF0ZU1hdGgu
aAkocmV2aXNpb24gODIwMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0RhdGVNYXRo
LmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDcgQEAKIAogLy8gTm90IHJlYWxseSBtYXRo
IHJlbGF0ZWQsIGJ1dCB0aGlzIGlzIGN1cnJlbnRseSB0aGUgb25seSBzaGFyZWQgcGxhY2UgdG8g
cHV0IHRoZXNlLgogZG91YmxlIHBhcnNlRVM1RGF0ZUZyb21OdWxsVGVybWluYXRlZENoYXJhY3Rl
cnMoY29uc3QgY2hhciogZGF0ZVN0cmluZyk7Ci1kb3VibGUgcGFyc2VEYXRlRnJvbU51bGxUZXJt
aW5hdGVkQ2hhcmFjdGVycyhjb25zdCBjaGFyKiBkYXRlU3RyaW5nKTsKK1dURl9FWFBPUlRfUFJJ
VkFURSBkb3VibGUgcGFyc2VEYXRlRnJvbU51bGxUZXJtaW5hdGVkQ2hhcmFjdGVycyhjb25zdCBj
aGFyKiBkYXRlU3RyaW5nKTsKIGRvdWJsZSB0aW1lQ2xpcChkb3VibGUpOwogCiBpbmxpbmUgZG91
YmxlIGpzQ3VycmVudFRpbWUoKQpAQCAtODIsMTUgKzgyLDE1IEBACiBjb25zdCBkb3VibGUgbXNQ
ZXJNb250aCA9IDI1OTIwMDAwMDAuMDsKIAogLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIGRheXMg
ZnJvbSAxOTcwLTAxLTAxIHRvIHRoZSBzcGVjaWZpZWQgZGF0ZS4KLWRvdWJsZSBkYXRlVG9EYXlz
RnJvbTE5NzAoaW50IHllYXIsIGludCBtb250aCwgaW50IGRheSk7Ci1pbnQgbXNUb1llYXIoZG91
YmxlIG1zKTsKLWludCBkYXlJblllYXIoZG91YmxlIG1zLCBpbnQgeWVhcik7Ci1pbnQgbW9udGhG
cm9tRGF5SW5ZZWFyKGludCBkYXlJblllYXIsIGJvb2wgbGVhcFllYXIpOwotaW50IGRheUluTW9u
dGhGcm9tRGF5SW5ZZWFyKGludCBkYXlJblllYXIsIGJvb2wgbGVhcFllYXIpOworV1RGX0VYUE9S
VF9QUklWQVRFIGRvdWJsZSBkYXRlVG9EYXlzRnJvbTE5NzAoaW50IHllYXIsIGludCBtb250aCwg
aW50IGRheSk7CitXVEZfRVhQT1JUX1BSSVZBVEUgaW50IG1zVG9ZZWFyKGRvdWJsZSBtcyk7CitX
VEZfRVhQT1JUX1BSSVZBVEUgaW50IGRheUluWWVhcihkb3VibGUgbXMsIGludCB5ZWFyKTsKK1dU
Rl9FWFBPUlRfUFJJVkFURSBpbnQgbW9udGhGcm9tRGF5SW5ZZWFyKGludCBkYXlJblllYXIsIGJv
b2wgbGVhcFllYXIpOworV1RGX0VYUE9SVF9QUklWQVRFIGludCBkYXlJbk1vbnRoRnJvbURheUlu
WWVhcihpbnQgZGF5SW5ZZWFyLCBib29sIGxlYXBZZWFyKTsKIAogLy8gUmV0dXJucyBvZmZzZXQg
bWlsbGlzZWNvbmRzIGZvciBVVEMgYW5kIERTVC4KLWludDMyX3QgY2FsY3VsYXRlVVRDT2Zmc2V0
KCk7Ci1kb3VibGUgY2FsY3VsYXRlRFNUT2Zmc2V0KGRvdWJsZSBtcywgZG91YmxlIHV0Y09mZnNl
dCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgaW50MzJfdCBjYWxjdWxhdGVVVENPZmZzZXQoKTsKK1dU
Rl9FWFBPUlRfUFJJVkFURSBkb3VibGUgY2FsY3VsYXRlRFNUT2Zmc2V0KGRvdWJsZSBtcywgZG91
YmxlIHV0Y09mZnNldCk7CiAKIH0gLy8gbmFtZXNwYWNlIFdURgogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUvQ29sbGF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUvQ29sbGF0b3IuaAkocmV2aXNpb24gODIwMTApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUvQ29sbGF0b3IuaAkod29ya2luZyBj
b3B5KQpAQCAtNDUsMTMgKzQ1LDEzIEBACiAgICAgcHVibGljOgogICAgICAgICBlbnVtIFJlc3Vs
dCB7IEVxdWFsID0gMCwgR3JlYXRlciA9IDEsIExlc3MgPSAtMSB9OwogCi0gICAgICAgIENvbGxh
dG9yKGNvbnN0IGNoYXIqIGxvY2FsZSk7IC8vIFBhcnNpbmcgaXMgbGVuaWVudDsgZS5nLiBsYW5n
dWFnZSBpZGVudGlmaWVycyAoc3VjaCBhcyAiZW4tVVMiKSBhcmUgYWNjZXB0ZWQsIHRvby4KLSAg
ICAgICAgfkNvbGxhdG9yKCk7Ci0gICAgICAgIHZvaWQgc2V0T3JkZXJMb3dlckZpcnN0KGJvb2wp
OworICAgICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgQ29sbGF0b3IoY29uc3QgY2hhciogbG9jYWxl
KTsgLy8gUGFyc2luZyBpcyBsZW5pZW50OyBlLmcuIGxhbmd1YWdlIGlkZW50aWZpZXJzIChzdWNo
IGFzICJlbi1VUyIpIGFyZSBhY2NlcHRlZCwgdG9vLgorICAgICAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgfkNvbGxhdG9yKCk7CisgICAgICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNldE9yZGVy
TG93ZXJGaXJzdChib29sKTsKIAogICAgICAgICBzdGF0aWMgUGFzc093blB0cjxDb2xsYXRvcj4g
dXNlckRlZmF1bHQoKTsKIAotICAgICAgICBSZXN1bHQgY29sbGF0ZShjb25zdCA6OlVDaGFyKiwg
c2l6ZV90LCBjb25zdCA6OlVDaGFyKiwgc2l6ZV90KSBjb25zdDsKKyAgICAgICAgV1RGX0VYUE9S
VF9QUklWQVRFIFJlc3VsdCBjb2xsYXRlKGNvbnN0IDo6VUNoYXIqLCBzaXplX3QsIGNvbnN0IDo6
VUNoYXIqLCBzaXplX3QpIGNvbnN0OwogCiAgICAgcHJpdmF0ZToKICNpZiBVU0UoSUNVX1VOSUNP
REUpICYmICFVQ09ORklHX05PX0NPTExBVElPTgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi91bmljb2RlL1VURjguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL3VuaWNvZGUvVVRGOC5oCShyZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvdW5pY29kZS9VVEY4LmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDExICs2MiwxMSBA
QAogICAgIC8vIHRvIHRoZSByZXBsYWNlbWVudCBjaGFyYWN0ZXI7IG90aGVyd2lzZSAod2hlbiB0
aGUgZmxhZyBpcyBzZXQgdG8gc3RyaWN0KQogICAgIC8vIHRoZXkgY29uc3RpdHV0ZSBhbiBlcnJv
ci4KIAotICAgIENvbnZlcnNpb25SZXN1bHQgY29udmVydFVURjhUb1VURjE2KAorICAgIFdURl9F
WFBPUlRfUFJJVkFURSBDb252ZXJzaW9uUmVzdWx0IGNvbnZlcnRVVEY4VG9VVEYxNigKICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgY2hhcioqIHNvdXJjZVN0YXJ0LCBjb25zdCBjaGFyKiBzb3Vy
Y2VFbmQsIAogICAgICAgICAgICAgICAgICAgICBVQ2hhcioqIHRhcmdldFN0YXJ0LCBVQ2hhciog
dGFyZ2V0RW5kLCBib29sIHN0cmljdCA9IHRydWUpOwogCi0gICAgQ29udmVyc2lvblJlc3VsdCBj
b252ZXJ0VVRGMTZUb1VURjgoCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIENvbnZlcnNpb25SZXN1
bHQgY29udmVydFVURjE2VG9VVEY4KAogICAgICAgICAgICAgICAgICAgICBjb25zdCBVQ2hhcioq
IHNvdXJjZVN0YXJ0LCBjb25zdCBVQ2hhciogc291cmNlRW5kLCAKICAgICAgICAgICAgICAgICAg
ICAgY2hhcioqIHRhcmdldFN0YXJ0LCBjaGFyKiB0YXJnZXRFbmQsIGJvb2wgc3RyaWN0ID0gdHJ1
ZSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQ3VycmVudFRpbWUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0N1cnJlbnRUaW1lLmgJKHJldmlz
aW9uIDgyMDEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9DdXJyZW50VGltZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBACiAvLyBSZXR1cm5zIHRoZSBjdXJyZW50IFVU
QyB0aW1lIGluIHNlY29uZHMsIGNvdW50ZWQgZnJvbSBKYW51YXJ5IDEsIDE5NzAuCiAvLyBQcmVj
aXNpb24gdmFyaWVzIGRlcGVuZGluZyBvbiBwbGF0Zm9ybSBidXQgaXMgdXN1YWxseSBhcyBnb29k
IG9yIGJldHRlcgogLy8gdGhhbiBhIG1pbGxpc2Vjb25kLgotZG91YmxlIGN1cnJlbnRUaW1lKCk7
CitXVEZfRVhQT1JUX1BSSVZBVEUgZG91YmxlIGN1cnJlbnRUaW1lKCk7CiAKIC8vIFNhbWUgdGhp
bmcsIGluIG1pbGxpc2Vjb25kcy4KIGlubGluZSBkb3VibGUgY3VycmVudFRpbWVNUygpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0RlY2ltYWxOdW1iZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0RlY2ltYWxOdW1iZXIuaAkocmV2aXNpb24gODIw
MTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0RlY2ltYWxOdW1iZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtODEsMTAgKzgxLDEwIEBACiAgICAgICAgIEFTU0VSVChtX3NpZ25pZmljYW5k
WzBdICE9ICcwJyB8fCAhbV9leHBvbmVudCk7CiAgICAgfQogCi0gICAgdW5zaWduZWQgYnVmZmVy
TGVuZ3RoRm9yU3RyaW5nRGVjaW1hbCgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSB1
bnNpZ25lZCBidWZmZXJMZW5ndGhGb3JTdHJpbmdEZWNpbWFsKCkgY29uc3Q7CiAgICAgdW5zaWdu
ZWQgYnVmZmVyTGVuZ3RoRm9yU3RyaW5nRXhwb25lbnRpYWwoKSBjb25zdDsKIAotICAgIHVuc2ln
bmVkIHRvU3RyaW5nRGVjaW1hbChVQ2hhciogYnVmZmVyLCB1bnNpZ25lZCBidWZmZXJMZW5ndGgp
IGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSB1bnNpZ25lZCB0b1N0cmluZ0RlY2ltYWwo
VUNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgYnVmZmVyTGVuZ3RoKSBjb25zdDsKICAgICB1bnNpZ25l
ZCB0b1N0cmluZ0V4cG9uZW50aWFsKFVDaGFyKiBidWZmZXIsIHVuc2lnbmVkIGJ1ZmZlckxlbmd0
aCkgY29uc3Q7CiAKICAgICBib29sIHNpZ24oKSBjb25zdCB7IHJldHVybiBtX3NpZ247IH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvTUQ1LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9NRDUuaAkocmV2aXNpb24gODIwMTApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL01ENS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAK
IG5hbWVzcGFjZSBXVEYgewogCi1jbGFzcyBNRDUgeworY2xhc3MgV1RGX0VYUE9SVF9QUklWQVRF
IE1ENSB7CiBwdWJsaWM6CiAgICAgTUQ1KCk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvZHRvYS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvZHRv
YS5oCShyZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvZHRvYS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxOCArMzAsMTggQEAKIAogLy8gczAwOiBpbnB1dCBzdHJp
bmcuIE11c3Qgbm90IGJlIDAgYW5kIG11c3QgYmUgdGVybWluYXRlZCBieSAwLgogLy8gc2U6ICpz
ZSB3aWxsIGhhdmUgdGhlIGxhc3QgY29uc3VtZWQgY2hhcmFjdGVyIHBvc2l0aW9uICsgMS4KLWRv
dWJsZSBzdHJ0b2QoY29uc3QgY2hhciogczAwLCBjaGFyKiogc2UpOworV1RGX0VYUE9SVF9QUklW
QVRFIGRvdWJsZSBzdHJ0b2QoY29uc3QgY2hhciogczAwLCBjaGFyKiogc2UpOwogCiB0eXBlZGVm
IGNoYXIgRHRvYUJ1ZmZlcls4MF07CiAKLXZvaWQgZHRvYShEdG9hQnVmZmVyIHJlc3VsdCwgZG91
YmxlIGRkLCBib29sJiBzaWduLCBpbnQmIGV4cG9uZW50LCB1bnNpZ25lZCYgcHJlY2lzaW9uKTsK
K1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIGR0b2EoRHRvYUJ1ZmZlciByZXN1bHQsIGRvdWJsZSBk
ZCwgYm9vbCYgc2lnbiwgaW50JiBleHBvbmVudCwgdW5zaWduZWQmIHByZWNpc2lvbik7CiB2b2lk
IGR0b2FSb3VuZFNGKER0b2FCdWZmZXIgcmVzdWx0LCBkb3VibGUgZGQsIGludCBuZGlnaXRzLCBi
b29sJiBzaWduLCBpbnQmIGV4cG9uZW50LCB1bnNpZ25lZCYgcHJlY2lzaW9uKTsKIHZvaWQgZHRv
YVJvdW5kRFAoRHRvYUJ1ZmZlciByZXN1bHQsIGRvdWJsZSBkZCwgaW50IG5kaWdpdHMsIGJvb2wm
IHNpZ24sIGludCYgZXhwb25lbnQsIHVuc2lnbmVkJiBwcmVjaXNpb24pOwogCiAvLyBTaXplID0g
ODAgZm9yIHNpemVvZihEdG9hQnVmZmVyKSArIHNvbWUgc2lnbiBiaXRzLCBkZWNpbWFsIHBvaW50
LCAnZScsIGV4cG9uZW50IGRpZ2l0cy4KIGNvbnN0IHVuc2lnbmVkIE51bWJlclRvU3RyaW5nQnVm
ZmVyTGVuZ3RoID0gOTY7CiB0eXBlZGVmIFVDaGFyIE51bWJlclRvU3RyaW5nQnVmZmVyW051bWJl
clRvU3RyaW5nQnVmZmVyTGVuZ3RoXTsKLXVuc2lnbmVkIG51bWJlclRvU3RyaW5nKGRvdWJsZSwg
TnVtYmVyVG9TdHJpbmdCdWZmZXIpOworV1RGX0VYUE9SVF9QUklWQVRFIHVuc2lnbmVkIG51bWJl
clRvU3RyaW5nKGRvdWJsZSwgTnVtYmVyVG9TdHJpbmdCdWZmZXIpOwogCiB9IC8vIG5hbWVzcGFj
ZSBXVEYKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9OdWxsUHRyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL051bGxQdHIuY3BwCShyZXZpc2lv
biA4MjAxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvTnVsbFB0ci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI0LDYgKzI0LDcgQEAKIAogKi8KIAorI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIk51bGxQdHIuaCIKIAogI2luY2x1ZGUgIlBsYXRmb3JtLmgiCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9DcnlwdG9ncmFwaGljYWxseVJh
bmRvbU51bWJlci5oCShyZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzIs
NyArMzIsNyBAQAogCiAjaWYgVVNFKE9TX1JBTkRPTU5FU1MpCiB1aW50MzJfdCBjcnlwdG9ncmFw
aGljYWxseVJhbmRvbU51bWJlcigpOwotdm9pZCBjcnlwdG9ncmFwaGljYWxseVJhbmRvbVZhbHVl
cyh2b2lkKiBidWZmZXIsIHNpemVfdCBsZW5ndGgpOworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQg
Y3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21WYWx1ZXModm9pZCogYnVmZmVyLCBzaXplX3QgbGVuZ3Ro
KTsKICNlbmRpZgogCiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGlu
Z1ByaW1pdGl2ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1Ro
cmVhZGluZ1ByaW1pdGl2ZXMuaAkocmV2aXNpb24gODIwMTApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDEy
ICsxMDAsMTIgQEAKIGNsYXNzIE11dGV4IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShNdXRl
eCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIE11dGV4KCk7Ci0gICAg
fk11dGV4KCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIE11dGV4KCk7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIH5NdXRleCgpOwogCi0gICAgdm9pZCBsb2NrKCk7Ci0gICAgYm9vbCB0cnlMb2Nr
KCk7Ci0gICAgdm9pZCB1bmxvY2soKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBsb2Nr
KCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgdHJ5TG9jaygpOworICAgIFdURl9FWFBP
UlRfUFJJVkFURSB2b2lkIHVubG9jaygpOwogCiBwdWJsaWM6CiAgICAgUGxhdGZvcm1NdXRleCYg
aW1wbCgpIHsgcmV0dXJuIG1fbXV0ZXg7IH0KQEAgLTEzNiwxNSArMTM2LDE1IEBACiBjbGFzcyBU
aHJlYWRDb25kaXRpb24gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRocmVhZENvbmRpdGlv
bik7CiBwdWJsaWM6Ci0gICAgVGhyZWFkQ29uZGl0aW9uKCk7Ci0gICAgflRocmVhZENvbmRpdGlv
bigpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBUaHJlYWRDb25kaXRpb24oKTsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgflRocmVhZENvbmRpdGlvbigpOwogICAgIAotICAgIHZvaWQgd2FpdChN
dXRleCYgbXV0ZXgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHdhaXQoTXV0ZXgmKTsK
ICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGNvbmRpdGlvbiB3YXMgc2lnbmFsZWQgYmVmb3Jl
IGFic29sdXRlVGltZSwgZmFsc2UgaWYgdGhlIGFic29sdXRlVGltZSB3YXMgcmVhY2hlZCBvciBp
cyBpbiB0aGUgcGFzdC4KICAgICAvLyBUaGUgYWJzb2x1dGVUaW1lIGlzIGluIHNlY29uZHMsIHN0
YXJ0aW5nIG9uIEphbnVhcnkgMSwgMTk3MC4gVGhlIHRpbWUgaXMgYXNzdW1lZCB0byB1c2UgdGhl
IHNhbWUgdGltZSB6b25lIGFzIFdURjo6Y3VycmVudFRpbWUoKS4KLSAgICBib29sIHRpbWVkV2Fp
dChNdXRleCYsIGRvdWJsZSBhYnNvbHV0ZVRpbWUpOwotICAgIHZvaWQgc2lnbmFsKCk7Ci0gICAg
dm9pZCBicm9hZGNhc3QoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCB0aW1lZFdhaXQo
TXV0ZXgmLCBkb3VibGUgYWJzb2x1dGVUaW1lKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBzaWduYWwoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBicm9hZGNhc3QoKTsKICAg
ICAKIHByaXZhdGU6CiAgICAgUGxhdGZvcm1Db25kaXRpb24gbV9jb25kaXRpb247CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1JhbmRvbU51bWJlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUmFuZG9tTnVtYmVyLmgJKHJldmlzaW9uIDgyMDEwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9SYW5kb21OdW1iZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMzAsNyArMzAsNyBAQAogCiAgICAgLy8gUmV0dXJucyBhIHBzZXVkby1yYW5kb20gbnVt
YmVyIGluIHRoZSByYW5nZSBbMCwgMSksIGF0dGVtcHRzIHRvIGJlCiAgICAgLy8gY3J5cHRvZ3Jh
cGhpY2FsbHkgc2VjdXJlIGlmIHBvc3NpYmxlIG9uIHRoZSB0YXJnZXQgcGxhdGZvcm0KLSAgICBk
b3VibGUgcmFuZG9tTnVtYmVyKCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGRvdWJsZSByYW5k
b21OdW1iZXIoKTsKIAogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQv
QXRvbWljU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90
ZXh0L0F0b21pY1N0cmluZy5oCShyZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvdGV4dC9BdG9taWNTdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsMjcgKzM4
LDMxIEBACiAKIGNsYXNzIEF0b21pY1N0cmluZyB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQg
aW5pdCgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBpbml0KCk7CiAKLSAg
ICBBdG9taWNTdHJpbmcoKSB7IH0KLSAgICBBdG9taWNTdHJpbmcoY29uc3QgY2hhciogcykgOiBt
X3N0cmluZyhhZGQocykpIHsgfQorICAgIFdURl9FWFBPUlRfUFJJVkFURSBBdG9taWNTdHJpbmco
KSB7IH0KKyAgICAvLyBjb3B5IGNvbnN0cnVjdG9yIG5lZWRzIHRvIGJlIGV4cGxpY2l0bHkgZGVm
aW5lZCBzbyB3ZSBjYW4gc3BlY2lmeSBwcm9wZXIgZGxsIGxpbmthZ2UKKyAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgQXRvbWljU3RyaW5nKGNvbnN0IEF0b21pY1N0cmluZyYgcykgOiBtX3N0cmluZyhz
Lm1fc3RyaW5nKSB7IH0KKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgQXRvbWljU3RyaW5nKGNvbnN0
IGNoYXIqIHMpIDogbV9zdHJpbmcoYWRkKHMpKSB7IH0KICAgICBBdG9taWNTdHJpbmcoY29uc3Qg
VUNoYXIqIHMsIHVuc2lnbmVkIGxlbmd0aCkgOiBtX3N0cmluZyhhZGQocywgbGVuZ3RoKSkgeyB9
CiAgICAgQXRvbWljU3RyaW5nKGNvbnN0IFVDaGFyKiBzLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2ln
bmVkIGV4aXN0aW5nSGFzaCkgOiBtX3N0cmluZyhhZGQocywgbGVuZ3RoLCBleGlzdGluZ0hhc2gp
KSB7IH0KICAgICBBdG9taWNTdHJpbmcoY29uc3QgVUNoYXIqIHMpIDogbV9zdHJpbmcoYWRkKHMp
KSB7IH0KICAgICBBVE9NSUNTVFJJTkdfQ09OVkVSU0lPTiBBdG9taWNTdHJpbmcoU3RyaW5nSW1w
bCogaW1wKSA6IG1fc3RyaW5nKGFkZChpbXApKSB7IH0KICAgICBBdG9taWNTdHJpbmcoQXRvbWlj
U3RyaW5nSW1wbCogaW1wKSA6IG1fc3RyaW5nKGltcCkgeyB9Ci0gICAgQVRPTUlDU1RSSU5HX0NP
TlZFUlNJT04gQXRvbWljU3RyaW5nKGNvbnN0IFN0cmluZyYgcykgOiBtX3N0cmluZyhhZGQocy5p
bXBsKCkpKSB7IH0KKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgQVRPTUlDU1RSSU5HX0NPTlZFUlNJ
T04gQXRvbWljU3RyaW5nKGNvbnN0IFN0cmluZyYgcykgOiBtX3N0cmluZyhhZGQocy5pbXBsKCkp
KSB7IH0KIAogICAgIC8vIEhhc2ggdGFibGUgZGVsZXRlZCB2YWx1ZXMsIHdoaWNoIGFyZSBvbmx5
IGNvbnN0cnVjdGVkIGFuZCBuZXZlciBjb3BpZWQgb3IgZGVzdHJveWVkLgotICAgIEF0b21pY1N0
cmluZyhXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpIDogbV9zdHJpbmcoV1RGOjpIYXNo
VGFibGVEZWxldGVkVmFsdWUpIHsgfQotICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUo
KSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIEF0b21pY1N0cmluZyhXVEY6Okhhc2hUYWJsZURlbGV0ZWRW
YWx1ZVR5cGUpIDogbV9zdHJpbmcoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpIHsgfQorICAg
IFdURl9FWFBPUlRfUFJJVkFURSBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3Qg
eyByZXR1cm4gbV9zdHJpbmcuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQogCi0gICAgc3Rh
dGljIEF0b21pY1N0cmluZ0ltcGwqIGZpbmQoY29uc3QgVUNoYXIqIHMsIHVuc2lnbmVkIGxlbmd0
aCwgdW5zaWduZWQgZXhpc3RpbmdIYXNoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgfkF0b21p
Y1N0cmluZygpIHsgfQogCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBBdG9taWNTdHJp
bmdJbXBsKiBmaW5kKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBleGlz
dGluZ0hhc2gpOworCiAgICAgb3BlcmF0b3IgY29uc3QgU3RyaW5nJigpIGNvbnN0IHsgcmV0dXJu
IG1fc3RyaW5nOyB9CiAgICAgY29uc3QgU3RyaW5nJiBzdHJpbmcoKSBjb25zdCB7IHJldHVybiBt
X3N0cmluZzsgfTsKIAotICAgIEF0b21pY1N0cmluZ0ltcGwqIGltcGwoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxBdG9taWNTdHJpbmdJbXBsICo+KG1fc3RyaW5nLmltcGwoKSk7IH0KKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgQXRvbWljU3RyaW5nSW1wbCogaW1wbCgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PEF0b21pY1N0cmluZ0ltcGwgKj4obV9zdHJpbmcuaW1wbCgpKTsgfQog
ICAgIAogICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9zdHJp
bmcuY2hhcmFjdGVycygpOyB9CiAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4g
bV9zdHJpbmcubGVuZ3RoKCk7IH0KQEAgLTgyLDcgKzg2LDcgQEAKICAgICBib29sIGVuZHNXaXRo
KGNvbnN0IFN0cmluZyYgcywgYm9vbCBjYXNlU2Vuc2l0aXZlID0gdHJ1ZSkgY29uc3QKICAgICAg
ICAgeyByZXR1cm4gbV9zdHJpbmcuZW5kc1dpdGgocywgY2FzZVNlbnNpdGl2ZSk7IH0KICAgICAK
LSAgICBBdG9taWNTdHJpbmcgbG93ZXIoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
QXRvbWljU3RyaW5nIGxvd2VyKCkgY29uc3Q7CiAgICAgQXRvbWljU3RyaW5nIHVwcGVyKCkgY29u
c3QgeyByZXR1cm4gQXRvbWljU3RyaW5nKGltcGwoKS0+dXBwZXIoKSk7IH0KICAgICAKICAgICBp
bnQgdG9JbnQoYm9vbCogb2sgPSAwKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy50b0ludChvayk7
IH0KQEAgLTExMCwxNCArMTE0LDE0IEBACiAKICAgICAvLyBBdG9taWNTdHJpbmc6OmZyb21VVEY4
IHdpbGwgcmV0dXJuIGEgbnVsbCBzdHJpbmcgaWYKICAgICAvLyB0aGUgaW5wdXQgZGF0YSBjb250
YWlucyBpbnZhbGlkIFVURi04IHNlcXVlbmNlcy4KLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIGZy
b21VVEY4KGNvbnN0IGNoYXIqLCBzaXplX3QpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgZnJv
bVVURjgoY29uc3QgY2hhciopOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgQXRvbWlj
U3RyaW5nIGZyb21VVEY4KGNvbnN0IGNoYXIqLCBzaXplX3QpOworICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgQXRvbWljU3RyaW5nIGZyb21VVEY4KGNvbnN0IGNoYXIqKTsKIAogcHJpdmF0
ZToKICAgICBTdHJpbmcgbV9zdHJpbmc7CiAgICAgCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3Ry
aW5nSW1wbD4gYWRkKGNvbnN0IGNoYXIqKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJ
bXBsPiBhZGQoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIFdURl9FWFBPUlRf
UFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGQoY29uc3QgY2hhciopOwor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGQo
Y29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0
cmluZ0ltcGw+IGFkZChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgZXhp
c3RpbmdIYXNoKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGQoY29uc3Qg
VUNoYXIqKTsKICAgICBBTFdBWVNfSU5MSU5FIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRkKFN0
cmluZ0ltcGwqIHIpCkBAIC0xMjYsMTIgKzEzMCwxMiBAQAogICAgICAgICAgICAgcmV0dXJuIHI7
CiAgICAgICAgIHJldHVybiBhZGRTbG93Q2FzZShyKTsKICAgICB9Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8U3RyaW5nSW1wbD4gYWRkU2xvd0Nhc2UoU3RyaW5nSW1wbCopOworICAgIFdURl9FWFBP
UlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGRTbG93Q2FzZShTdHJp
bmdJbXBsKik7CiB9OwogCiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEF0b21pY1N0cmlu
ZyYgYSwgY29uc3QgQXRvbWljU3RyaW5nJiBiKSB7IHJldHVybiBhLmltcGwoKSA9PSBiLmltcGwo
KTsgfQotYm9vbCBvcGVyYXRvcj09KGNvbnN0IEF0b21pY1N0cmluZyYgYSwgY29uc3QgY2hhciog
Yik7Ci1ib29sIG9wZXJhdG9yPT0oY29uc3QgQXRvbWljU3RyaW5nJiBhLCBjb25zdCBWZWN0b3I8
VUNoYXI+JiBiKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIG9wZXJhdG9yPT0oY29uc3QgQXRv
bWljU3RyaW5nJiwgY29uc3QgY2hhciopOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBWZWN0b3I8VUNoYXI+Jik7CiBpbmxpbmUg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IEF0b21pY1N0cmluZyYgYSwgY29uc3QgU3RyaW5nJiBiKSB7
IHJldHVybiBlcXVhbChhLmltcGwoKSwgYi5pbXBsKCkpOyB9CiBpbmxpbmUgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IGNoYXIqIGEsIGNvbnN0IEF0b21pY1N0cmluZyYgYikgeyByZXR1cm4gYiA9PSBh
OyB9CiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0cmluZyYgYSwgY29uc3QgQXRvbWlj
U3RyaW5nJiBiKSB7IHJldHVybiBlcXVhbChhLmltcGwoKSwgYi5pbXBsKCkpOyB9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvQ1N0cmluZy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9DU3RyaW5nLmgJKHJldmlzaW9uIDgyMDEwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L0NTdHJpbmcuaAkod29ya2luZyBjb3B5
KQpAQCAtNTIsMTAgKzUyLDEwIEBACiBjbGFzcyBDU3RyaW5nIHsKIHB1YmxpYzoKICAgICBDU3Ry
aW5nKCkgeyB9Ci0gICAgQ1N0cmluZyhjb25zdCBjaGFyKik7Ci0gICAgQ1N0cmluZyhjb25zdCBj
aGFyKiwgc2l6ZV90IGxlbmd0aCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIENTdHJpbmcoY29u
c3QgY2hhciopOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBDU3RyaW5nKGNvbnN0IGNoYXIqLCBz
aXplX3QgbGVuZ3RoKTsKICAgICBDU3RyaW5nKENTdHJpbmdCdWZmZXIqIGJ1ZmZlcikgOiBtX2J1
ZmZlcihidWZmZXIpIHsgfQotICAgIHN0YXRpYyBDU3RyaW5nIG5ld1VuaW5pdGlhbGl6ZWQoc2l6
ZV90IGxlbmd0aCwgY2hhciomIGNoYXJhY3RlckJ1ZmZlcik7CisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBDU3RyaW5nIG5ld1VuaW5pdGlhbGl6ZWQoc2l6ZV90IGxlbmd0aCwgY2hhciom
IGNoYXJhY3RlckJ1ZmZlcik7CiAKICAgICBjb25zdCBjaGFyKiBkYXRhKCkgY29uc3QKICAgICB7
CkBAIC03Nyw3ICs3Nyw3IEBACiAgICAgUmVmUHRyPENTdHJpbmdCdWZmZXI+IG1fYnVmZmVyOwog
fTsKIAotYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTdHJpbmcmIGEsIGNvbnN0IENTdHJpbmcmIGIp
OworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDU3RyaW5nJiBhLCBj
b25zdCBDU3RyaW5nJiBiKTsKIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgQ1N0cmluZyYg
YSwgY29uc3QgQ1N0cmluZyYgYikgeyByZXR1cm4gIShhID09IGIpOyB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdURgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0J1aWxk
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5n
QnVpbGRlci5oCShyZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
dGV4dC9TdHJpbmdCdWlsZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDggKzM4LDggQEAKICAg
ICB7CiAgICAgfQogCi0gICAgdm9pZCBhcHBlbmQoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCk7Ci0g
ICAgdm9pZCBhcHBlbmQoY29uc3QgY2hhciosIHVuc2lnbmVkKTsKKyAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgdm9pZCBhcHBlbmQoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCk7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCk7CiAKICAgICB2b2lk
IGFwcGVuZChjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICB7CkBAIC05OSwxMSArOTksMTEgQEAK
IAogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFsZW5ndGgoKTsgfQogCi0gICAg
dm9pZCByZXNlcnZlQ2FwYWNpdHkodW5zaWduZWQgbmV3Q2FwYWNpdHkpOworICAgIFdURl9FWFBP
UlRfUFJJVkFURSB2b2lkIHJlc2VydmVDYXBhY2l0eSh1bnNpZ25lZCBuZXdDYXBhY2l0eSk7CiAK
LSAgICB2b2lkIHJlc2l6ZSh1bnNpZ25lZCBuZXdTaXplKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgdm9pZCByZXNpemUodW5zaWduZWQgbmV3U2l6ZSk7CiAKLSAgICB2b2lkIHNocmlua1RvRml0
KCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2hyaW5rVG9GaXQoKTsKIAogICAgIFVD
aGFyIG9wZXJhdG9yW10odW5zaWduZWQgaSkgY29uc3QKICAgICB7CkBAIC0xMjQsNyArMTI0LDcg
QEAKIHByaXZhdGU6CiAgICAgdm9pZCBhbGxvY2F0ZUJ1ZmZlcihjb25zdCBVQ2hhciogY3VycmVu
dENoYXJhY3RlcnMsIHVuc2lnbmVkIHJlcXVpcmVkTGVuZ3RoKTsKICAgICBVQ2hhciogYXBwZW5k
VW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpOwotICAgIHZvaWQgcmVpZnlTdHJpbmcoKTsK
KyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCByZWlmeVN0cmluZygpOwogCiAgICAgdW5zaWdu
ZWQgbV9sZW5ndGg7CiAgICAgU3RyaW5nIG1fc3RyaW5nOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvdGV4dC9XVEZTdHJpbmcuaAkocmV2aXNpb24gODIwMTApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL3RleHQvV1RGU3RyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTY3
LDggKzY3LDggQEAKIAogYm9vbCBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoY29uc3QgVUNoYXIqLCBz
aXplX3QpOwogYm9vbCBjaGFyYWN0ZXJzQXJlQWxsTGF0aW4xKGNvbnN0IFVDaGFyKiwgc2l6ZV90
KTsKLWludCBjaGFyYWN0ZXJzVG9JbnRTdHJpY3QoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wq
IG9rID0gMCwgaW50IGJhc2UgPSAxMCk7Ci11bnNpZ25lZCBjaGFyYWN0ZXJzVG9VSW50U3RyaWN0
KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApOworV1RG
X0VYUE9SVF9QUklWQVRFIGludCBjaGFyYWN0ZXJzVG9JbnRTdHJpY3QoY29uc3QgVUNoYXIqLCBz
aXplX3QsIGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCk7CitXVEZfRVhQT1JUX1BSSVZBVEUg
dW5zaWduZWQgY2hhcmFjdGVyc1RvVUludFN0cmljdChjb25zdCBVQ2hhciosIHNpemVfdCwgYm9v
bCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKTsKIGludDY0X3QgY2hhcmFjdGVyc1RvSW50NjRTdHJp
Y3QoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCk7CiB1
aW50NjRfdCBjaGFyYWN0ZXJzVG9VSW50NjRTdHJpY3QoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJv
b2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCk7CiBpbnRwdHJfdCBjaGFyYWN0ZXJzVG9JbnRQdHJT
dHJpY3QoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCk7
CkBAIC03OSw3ICs3OSw3IEBACiB1aW50NjRfdCBjaGFyYWN0ZXJzVG9VSW50NjQoY29uc3QgVUNo
YXIqLCBzaXplX3QsIGJvb2wqIG9rID0gMCk7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQog
aW50cHRyX3QgY2hhcmFjdGVyc1RvSW50UHRyKGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBv
ayA9IDApOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKIAotZG91YmxlIGNoYXJhY3RlcnNU
b0RvdWJsZShjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSAwLCBib29sKiBkaWRSZWFk
TnVtYmVyID0gMCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgZG91YmxlIGNoYXJhY3RlcnNUb0RvdWJs
ZShjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSAwLCBib29sKiBkaWRSZWFkTnVtYmVy
ID0gMCk7CiBmbG9hdCBjaGFyYWN0ZXJzVG9GbG9hdChjb25zdCBVQ2hhciosIHNpemVfdCwgYm9v
bCogb2sgPSAwLCBib29sKiBkaWRSZWFkTnVtYmVyID0gMCk7CiAKIHRlbXBsYXRlPGJvb2wgaXNT
cGVjaWFsQ2hhcmFjdGVyKFVDaGFyKT4gYm9vbCBpc0FsbFNwZWNpYWxDaGFyYWN0ZXJzKGNvbnN0
IFVDaGFyKiwgc2l6ZV90KTsKQEAgLTg3LDEwICs4NywxMCBAQAogY2xhc3MgU3RyaW5nIHsKIHB1
YmxpYzoKICAgICAvLyBDb25zdHJ1Y3QgYSBudWxsIHN0cmluZywgZGlzdGluZ3Vpc2hhYmxlIGZy
b20gYW4gZW1wdHkgc3RyaW5nLgotICAgIFN0cmluZygpIHsgfQorICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBTdHJpbmcoKSB7IH0KIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyB3aXRoIFVURi0x
NiBkYXRhLgotICAgIFN0cmluZyhjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVu
Z3RoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IFVDaGFyKiBjaGFyYWN0
ZXJzLCB1bnNpZ25lZCBsZW5ndGgpOwogCiAgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIGJ5IGNv
cHlpbmcgdGhlIGNvbnRlbnRzIG9mIGEgdmVjdG9yLiAgVG8gYXZvaWQKICAgICAvLyBjb3B5aW5n
LCBjb25zaWRlciB1c2luZyBTdHJpbmc6OmFkb3B0IGluc3RlYWQuCkBAIC05OCwxOCArOTgsMTgg
QEAKICAgICBleHBsaWNpdCBTdHJpbmcoY29uc3QgVmVjdG9yPFVDaGFyLCBpbmxpbmVDYXBhY2l0
eT4mKTsKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyB3aXRoIFVURi0xNiBkYXRhLCBmcm9t
IGEgbnVsbC10ZXJtaW5hdGVkIHNvdXJjZS4KLSAgICBTdHJpbmcoY29uc3QgVUNoYXIqKTsKKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IFVDaGFyKik7CiAKICAgICAvLyBDb25z
dHJ1Y3QgYSBzdHJpbmcgd2l0aCBsYXRpbjEgZGF0YS4KLSAgICBTdHJpbmcoY29uc3QgY2hhciog
Y2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3Ry
aW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCk7CiAKICAgICAvLyBD
b25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBsYXRpbjEgZGF0YSwgZnJvbSBhIG51bGwtdGVybWluYXRl
ZCBzb3VyY2UuCi0gICAgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOworICAgIFdURl9F
WFBPUlRfUFJJVkFURSBTdHJpbmcoY29uc3QgY2hhciogY2hhcmFjdGVycyk7CiAKICAgICAvLyBD
b25zdHJ1Y3QgYSBzdHJpbmcgcmVmZXJlbmNpbmcgYW4gZXhpc3RpbmcgU3RyaW5nSW1wbC4KLSAg
ICBTdHJpbmcoU3RyaW5nSW1wbCogaW1wbCkgOiBtX2ltcGwoaW1wbCkgeyB9Ci0gICAgU3RyaW5n
KFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gaW1wbCkgOiBtX2ltcGwoaW1wbCkgeyB9Ci0gICAgU3Ry
aW5nKFJlZlB0cjxTdHJpbmdJbXBsPiBpbXBsKSA6IG1faW1wbChpbXBsKSB7IH0KKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKFN0cmluZ0ltcGwqIGltcGwpIDogbV9pbXBsKGltcGwpIHsg
fQorICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBp
bXBsKSA6IG1faW1wbChpbXBsKSB7IH0KKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nKFJl
ZlB0cjxTdHJpbmdJbXBsPiBpbXBsKSA6IG1faW1wbChpbXBsKSB7IH0KIAogICAgIC8vIElubGlu
ZSB0aGUgZGVzdHJ1Y3Rvci4KICAgICBBTFdBWVNfSU5MSU5FIH5TdHJpbmcoKSB7IH0KQEAgLTEz
OSw5ICsxMzksOSBAQAogICAgICAgICByZXR1cm4gbV9pbXBsLT5jaGFyYWN0ZXJzKCk7CiAgICAg
fQogCi0gICAgQ1N0cmluZyBhc2NpaSgpIGNvbnN0OwotICAgIENTdHJpbmcgbGF0aW4xKCkgY29u
c3Q7Ci0gICAgQ1N0cmluZyB1dGY4KGJvb2wgc3RyaWN0ID0gZmFsc2UpIGNvbnN0OworICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBDU3RyaW5nIGFzY2lpKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIENTdHJpbmcgbGF0aW4xKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIENT
dHJpbmcgdXRmOChib29sIHN0cmljdCA9IGZhbHNlKSBjb25zdDsKIAogICAgIFVDaGFyIG9wZXJh
dG9yW10odW5zaWduZWQgaW5kZXgpIGNvbnN0CiAgICAgewpAQCAtMTUwLDE1ICsxNTAsMTUgQEAK
ICAgICAgICAgcmV0dXJuIG1faW1wbC0+Y2hhcmFjdGVycygpW2luZGV4XTsKICAgICB9CiAKLSAg
ICBzdGF0aWMgU3RyaW5nIG51bWJlcihzaG9ydCk7Ci0gICAgc3RhdGljIFN0cmluZyBudW1iZXIo
dW5zaWduZWQgc2hvcnQpOwotICAgIHN0YXRpYyBTdHJpbmcgbnVtYmVyKGludCk7Ci0gICAgc3Rh
dGljIFN0cmluZyBudW1iZXIodW5zaWduZWQpOwotICAgIHN0YXRpYyBTdHJpbmcgbnVtYmVyKGxv
bmcpOwotICAgIHN0YXRpYyBTdHJpbmcgbnVtYmVyKHVuc2lnbmVkIGxvbmcpOwotICAgIHN0YXRp
YyBTdHJpbmcgbnVtYmVyKGxvbmcgbG9uZyk7Ci0gICAgc3RhdGljIFN0cmluZyBudW1iZXIodW5z
aWduZWQgbG9uZyBsb25nKTsKLSAgICBzdGF0aWMgU3RyaW5nIG51bWJlcihkb3VibGUpOworICAg
IFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RyaW5nIG51bWJlcihzaG9ydCk7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJpbmcgbnVtYmVyKHVuc2lnbmVkIHNob3J0KTsKKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cmluZyBudW1iZXIoaW50KTsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cmluZyBudW1iZXIodW5zaWduZWQpOworICAgIFdURl9F
WFBPUlRfUFJJVkFURSBzdGF0aWMgU3RyaW5nIG51bWJlcihsb25nKTsKKyAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIFN0cmluZyBudW1iZXIodW5zaWduZWQgbG9uZyk7CisgICAgV1RGX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBTdHJpbmcgbnVtYmVyKGxvbmcgbG9uZyk7CisgICAgV1RGX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBTdHJpbmcgbnVtYmVyKHVuc2lnbmVkIGxvbmcgbG9uZyk7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJpbmcgbnVtYmVyKGRvdWJsZSk7CiAKICAg
ICAvLyBGaW5kIGEgc2luZ2xlIGNoYXJhY3RlciBvciBzdHJpbmcsIGFsc28gd2l0aCBtYXRjaCBm
dW5jdGlvbiAmIGxhdGluMSBmb3Jtcy4KICAgICBzaXplX3QgZmluZChVQ2hhciBjLCB1bnNpZ25l
ZCBzdGFydCA9IDApIGNvbnN0CkBAIC0xNzcsOSArMTc3LDkgQEAKICAgICAgICAgeyByZXR1cm4g
bV9pbXBsID8gbV9pbXBsLT5yZXZlcnNlRmluZChzdHIuaW1wbCgpLCBzdGFydCkgOiBub3RGb3Vu
ZDsgfQogCiAgICAgLy8gQ2FzZSBpbnNlbnNpdGl2ZSBzdHJpbmcgbWF0Y2hpbmcuCi0gICAgc2l6
ZV90IGZpbmRJZ25vcmluZ0Nhc2UoY29uc3QgY2hhciogc3RyLCB1bnNpZ25lZCBzdGFydCA9IDAp
IGNvbnN0CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCBmaW5kSWdub3JpbmdDYXNlKGNv
bnN0IGNoYXIqIHN0ciwgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdAogICAgICAgICB7IHJldHVy
biBtX2ltcGwgPyBtX2ltcGwtPmZpbmRJZ25vcmluZ0Nhc2Uoc3RyLCBzdGFydCkgOiBub3RGb3Vu
ZDsgfQotICAgIHNpemVfdCBmaW5kSWdub3JpbmdDYXNlKGNvbnN0IFN0cmluZyYgc3RyLCB1bnNp
Z25lZCBzdGFydCA9IDApIGNvbnN0CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCBmaW5k
SWdub3JpbmdDYXNlKGNvbnN0IFN0cmluZyYgc3RyLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0
CiAgICAgICAgIHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZmluZElnbm9yaW5nQ2FzZShzdHIu
aW1wbCgpLCBzdGFydCkgOiBub3RGb3VuZDsgfQogICAgIHNpemVfdCByZXZlcnNlRmluZElnbm9y
aW5nQ2FzZShjb25zdCBTdHJpbmcmIHN0ciwgdW5zaWduZWQgc3RhcnQgPSBVSU5UX01BWCkgY29u
c3QKICAgICAgICAgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5yZXZlcnNlRmluZElnbm9yaW5n
Q2FzZShzdHIuaW1wbCgpLCBzdGFydCkgOiBub3RGb3VuZDsgfQpAQCAtMTkyLDkgKzE5Miw5IEBA
CiAgICAgc2l6ZV90IHJldmVyc2VGaW5kKGNvbnN0IFN0cmluZyYgc3RyLCB1bnNpZ25lZCBzdGFy
dCwgYm9vbCBjYXNlU2Vuc2l0aXZlKSBjb25zdAogICAgICAgICB7IHJldHVybiBjYXNlU2Vuc2l0
aXZlID8gcmV2ZXJzZUZpbmQoc3RyLCBzdGFydCkgOiByZXZlcnNlRmluZElnbm9yaW5nQ2FzZShz
dHIsIHN0YXJ0KTsgfQogCi0gICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnNXaXRoTnVsbFRlcm1p
bmF0aW9uKCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJz
V2l0aE51bGxUZXJtaW5hdGlvbigpOwogICAgIAotICAgIFVDaGFyMzIgY2hhcmFjdGVyU3RhcnRp
bmdBdCh1bnNpZ25lZCkgY29uc3Q7IC8vIERpdHRvLgorICAgIFdURl9FWFBPUlRfUFJJVkFURSBV
Q2hhcjMyIGNoYXJhY3RlclN0YXJ0aW5nQXQodW5zaWduZWQpIGNvbnN0OyAvLyBEaXR0by4KICAg
ICAKICAgICBib29sIGNvbnRhaW5zKFVDaGFyIGMpIGNvbnN0IHsgcmV0dXJuIGZpbmQoYykgIT0g
bm90Rm91bmQ7IH0KICAgICBib29sIGNvbnRhaW5zKGNvbnN0IGNoYXIqIHN0ciwgYm9vbCBjYXNl
U2Vuc2l0aXZlID0gdHJ1ZSkgY29uc3QgeyByZXR1cm4gZmluZChzdHIsIDAsIGNhc2VTZW5zaXRp
dmUpICE9IG5vdEZvdW5kOyB9CkBAIC0yMDUsMTEgKzIwNSwxMSBAQAogICAgIGJvb2wgZW5kc1dp
dGgoY29uc3QgU3RyaW5nJiBzLCBib29sIGNhc2VTZW5zaXRpdmUgPSB0cnVlKSBjb25zdAogICAg
ICAgICB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmVuZHNXaXRoKHMuaW1wbCgpLCBjYXNlU2Vu
c2l0aXZlKSA6IHMuaXNFbXB0eSgpOyB9CiAKLSAgICB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcm
KTsKLSAgICB2b2lkIGFwcGVuZChjaGFyKTsKLSAgICB2b2lkIGFwcGVuZChVQ2hhcik7Ci0gICAg
dm9pZCBhcHBlbmQoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHZvaWQgaW5z
ZXJ0KGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIHBvcyk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lk
IGFwcGVuZChjaGFyKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmQoVUNoYXIp
OworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGFwcGVuZChjb25zdCBVQ2hhciosIHVuc2ln
bmVkIGxlbmd0aCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgaW5zZXJ0KGNvbnN0IFN0
cmluZyYsIHVuc2lnbmVkIHBvcyk7CiAgICAgdm9pZCBpbnNlcnQoY29uc3QgVUNoYXIqLCB1bnNp
Z25lZCBsZW5ndGgsIHVuc2lnbmVkIHBvcyk7CiAKICAgICBTdHJpbmcmIHJlcGxhY2UoVUNoYXIg
YSwgVUNoYXIgYikgeyBpZiAobV9pbXBsKSBtX2ltcGwgPSBtX2ltcGwtPnJlcGxhY2UoYSwgYik7
IHJldHVybiAqdGhpczsgfQpAQCAtMjIxLDMxICsyMjEsMzEgQEAKICAgICB2b2lkIG1ha2VVcHBl
cigpIHsgaWYgKG1faW1wbCkgbV9pbXBsID0gbV9pbXBsLT51cHBlcigpOyB9CiAgICAgdm9pZCBt
YWtlU2VjdXJlKFVDaGFyIGFDaGFyKSB7IGlmIChtX2ltcGwpIG1faW1wbCA9IG1faW1wbC0+c2Vj
dXJlKGFDaGFyKTsgfQogCi0gICAgdm9pZCB0cnVuY2F0ZSh1bnNpZ25lZCBsZW4pOwotICAgIHZv
aWQgcmVtb3ZlKHVuc2lnbmVkIHBvcywgaW50IGxlbiA9IDEpOworICAgIFdURl9FWFBPUlRfUFJJ
VkFURSB2b2lkIHRydW5jYXRlKHVuc2lnbmVkIGxlbik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IHZvaWQgcmVtb3ZlKHVuc2lnbmVkIHBvcywgaW50IGxlbiA9IDEpOwogCi0gICAgU3RyaW5nIHN1
YnN0cmluZyh1bnNpZ25lZCBwb3MsIHVuc2lnbmVkIGxlbiA9IFVJTlRfTUFYKSBjb25zdDsKKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHN1YnN0cmluZyh1bnNpZ25lZCBwb3MsIHVuc2ln
bmVkIGxlbiA9IFVJTlRfTUFYKSBjb25zdDsKICAgICBTdHJpbmcgc3Vic3RyaW5nU2hhcmluZ0lt
cGwodW5zaWduZWQgcG9zLCB1bnNpZ25lZCBsZW4gPSBVSU5UX01BWCkgY29uc3Q7CiAgICAgU3Ry
aW5nIGxlZnQodW5zaWduZWQgbGVuKSBjb25zdCB7IHJldHVybiBzdWJzdHJpbmcoMCwgbGVuKTsg
fQogICAgIFN0cmluZyByaWdodCh1bnNpZ25lZCBsZW4pIGNvbnN0IHsgcmV0dXJuIHN1YnN0cmlu
ZyhsZW5ndGgoKSAtIGxlbiwgbGVuKTsgfQogCiAgICAgLy8gUmV0dXJucyBhIGxvd2VyY2FzZS91
cHBlcmNhc2UgdmVyc2lvbiBvZiB0aGUgc3RyaW5nCi0gICAgU3RyaW5nIGxvd2VyKCkgY29uc3Q7
Ci0gICAgU3RyaW5nIHVwcGVyKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmlu
ZyBsb3dlcigpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgdXBwZXIoKSBj
b25zdDsKIAotICAgIFN0cmluZyBzdHJpcFdoaXRlU3BhY2UoKSBjb25zdDsKLSAgICBTdHJpbmcg
c2ltcGxpZnlXaGl0ZVNwYWNlKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmlu
ZyBzdHJpcFdoaXRlU3BhY2UoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5n
IHNpbXBsaWZ5V2hpdGVTcGFjZSgpIGNvbnN0OwogCi0gICAgU3RyaW5nIHJlbW92ZUNoYXJhY3Rl
cnMoQ2hhcmFjdGVyTWF0Y2hGdW5jdGlvblB0cikgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIFN0cmluZyByZW1vdmVDaGFyYWN0ZXJzKENoYXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIpIGNv
bnN0OwogICAgIHRlbXBsYXRlPGJvb2wgaXNTcGVjaWFsQ2hhcmFjdGVyKFVDaGFyKT4gYm9vbCBp
c0FsbFNwZWNpYWxDaGFyYWN0ZXJzKCkgY29uc3Q7CiAKICAgICAvLyBSZXR1cm4gdGhlIHN0cmlu
ZyB3aXRoIGNhc2UgZm9sZGVkIGZvciBjYXNlIGluc2Vuc2l0aXZlIGNvbXBhcmlzb24uCi0gICAg
U3RyaW5nIGZvbGRDYXNlKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBm
b2xkQ2FzZSgpIGNvbnN0OwogCiAjaWYgIVBMQVRGT1JNKFFUKQotICAgIHN0YXRpYyBTdHJpbmcg
Zm9ybWF0KGNvbnN0IGNoYXIgKiwgLi4uKSBXVEZfQVRUUklCVVRFX1BSSU5URigxLCAyKTsKKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cmluZyBmb3JtYXQoY29uc3QgY2hhciAqLCAu
Li4pIFdURl9BVFRSSUJVVEVfUFJJTlRGKDEsIDIpOwogI2Vsc2UKLSAgICBzdGF0aWMgU3RyaW5n
IGZvcm1hdChjb25zdCBjaGFyICosIC4uLik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBTdHJpbmcgZm9ybWF0KGNvbnN0IGNoYXIgKiwgLi4uKTsKICNlbmRpZgogCiAgICAgLy8gUmV0
dXJucyBhbiB1bmluaXRpYWxpemVkIHN0cmluZy4gVGhlIGNoYXJhY3RlcnMgbmVlZHMgdG8gYmUg
d3JpdHRlbgpAQCAtMjUzLDM0ICsyNTMsMzQgQEAKICAgICAvLyBGYWlsdXJlIHRvIGRvIHRoaXMg
d2lsbCBoYXZlIHVucHJlZGljdGFibGUgcmVzdWx0cy4KICAgICBzdGF0aWMgU3RyaW5nIGNyZWF0
ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoLCBVQ2hhciomIGRhdGEpIHsgcmV0dXJuIFN0
cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBkYXRhKTsgfQogCi0gICAgdm9p
ZCBzcGxpdChjb25zdCBTdHJpbmcmIHNlcGFyYXRvciwgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkg
Y29uc3Q7Ci0gICAgdm9pZCBzcGxpdChjb25zdCBTdHJpbmcmIHNlcGFyYXRvciwgYm9vbCBhbGxv
d0VtcHR5RW50cmllcywgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkgY29uc3Q7Ci0gICAgdm9pZCBz
cGxpdChVQ2hhciBzZXBhcmF0b3IsIFZlY3RvcjxTdHJpbmc+JiByZXN1bHQpIGNvbnN0OwotICAg
IHZvaWQgc3BsaXQoVUNoYXIgc2VwYXJhdG9yLCBib29sIGFsbG93RW1wdHlFbnRyaWVzLCBWZWN0
b3I8U3RyaW5nPiYgcmVzdWx0KSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBz
cGxpdChjb25zdCBTdHJpbmcmIHNlcGFyYXRvciwgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkgY29u
c3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc3BsaXQoY29uc3QgU3RyaW5nJiBzZXBh
cmF0b3IsIGJvb2wgYWxsb3dFbXB0eUVudHJpZXMsIFZlY3RvcjxTdHJpbmc+JiByZXN1bHQpIGNv
bnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNwbGl0KFVDaGFyIHNlcGFyYXRvciwg
VmVjdG9yPFN0cmluZz4mIHJlc3VsdCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZv
aWQgc3BsaXQoVUNoYXIgc2VwYXJhdG9yLCBib29sIGFsbG93RW1wdHlFbnRyaWVzLCBWZWN0b3I8
U3RyaW5nPiYgcmVzdWx0KSBjb25zdDsKIAotICAgIGludCB0b0ludFN0cmljdChib29sKiBvayA9
IDAsIGludCBiYXNlID0gMTApIGNvbnN0OwotICAgIHVuc2lnbmVkIHRvVUludFN0cmljdChib29s
KiBvayA9IDAsIGludCBiYXNlID0gMTApIGNvbnN0OwotICAgIGludDY0X3QgdG9JbnQ2NFN0cmlj
dChib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApIGNvbnN0OwotICAgIHVpbnQ2NF90IHRvVUlu
dDY0U3RyaWN0KGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCkgY29uc3Q7Ci0gICAgaW50cHRy
X3QgdG9JbnRQdHJTdHJpY3QoYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKSBjb25zdDsKKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgaW50IHRvSW50U3RyaWN0KGJvb2wqIG9rID0gMCwgaW50IGJh
c2UgPSAxMCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHVuc2lnbmVkIHRvVUludFN0
cmljdChib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApIGNvbnN0OworICAgIFdURl9FWFBPUlRf
UFJJVkFURSBpbnQ2NF90IHRvSW50NjRTdHJpY3QoYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEw
KSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdWludDY0X3QgdG9VSW50NjRTdHJpY3Qo
Ym9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgaW50cHRyX3QgdG9JbnRQdHJTdHJpY3QoYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKSBj
b25zdDsKIAotICAgIGludCB0b0ludChib29sKiBvayA9IDApIGNvbnN0OwotICAgIHVuc2lnbmVk
IHRvVUludChib29sKiBvayA9IDApIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBpbnQg
dG9JbnQoYm9vbCogb2sgPSAwKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdW5zaWdu
ZWQgdG9VSW50KGJvb2wqIG9rID0gMCkgY29uc3Q7CiAgICAgaW50NjRfdCB0b0ludDY0KGJvb2wq
IG9rID0gMCkgY29uc3Q7Ci0gICAgdWludDY0X3QgdG9VSW50NjQoYm9vbCogb2sgPSAwKSBjb25z
dDsKLSAgICBpbnRwdHJfdCB0b0ludFB0cihib29sKiBvayA9IDApIGNvbnN0OwotICAgIGRvdWJs
ZSB0b0RvdWJsZShib29sKiBvayA9IDAsIGJvb2wqIGRpZFJlYWROdW1iZXIgPSAwKSBjb25zdDsK
LSAgICBmbG9hdCB0b0Zsb2F0KGJvb2wqIG9rID0gMCwgYm9vbCogZGlkUmVhZE51bWJlciA9IDAp
IGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSB1aW50NjRfdCB0b1VJbnQ2NChib29sKiBv
ayA9IDApIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBpbnRwdHJfdCB0b0ludFB0cihi
b29sKiBvayA9IDApIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBkb3VibGUgdG9Eb3Vi
bGUoYm9vbCogb2sgPSAwLCBib29sKiBkaWRSZWFkTnVtYmVyID0gMCkgY29uc3Q7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIGZsb2F0IHRvRmxvYXQoYm9vbCogb2sgPSAwLCBib29sKiBkaWRSZWFk
TnVtYmVyID0gMCkgY29uc3Q7CiAKICAgICBib29sIHBlcmNlbnRhZ2UoaW50JiBwZXJjZW50YWdl
KSBjb25zdDsKIAogICAgIC8vIFJldHVybnMgYSBTdHJpbmdJbXBsIHN1aXRhYmxlIGZvciB1c2Ug
b24gYW5vdGhlciB0aHJlYWQuCi0gICAgU3RyaW5nIGNyb3NzVGhyZWFkU3RyaW5nKCkgY29uc3Q7
CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBjcm9zc1RocmVhZFN0cmluZygpIGNvbnN0
OwogICAgIC8vIE1ha2VzIGEgZGVlcCBjb3B5LiBIZWxwZnVsIG9ubHkgaWYgeW91IG5lZWQgdG8g
dXNlIGEgU3RyaW5nIG9uIGFub3RoZXIgdGhyZWFkCiAgICAgLy8gKHVzZSBjcm9zc1RocmVhZFN0
cmluZyBpZiB0aGUgbWV0aG9kIGNhbGwgZG9lc24ndCBuZWVkIHRvIGJlIHRocmVhZHNhZmUpLgog
ICAgIC8vIFNpbmNlIHRoZSB1bmRlcmx5aW5nIFN0cmluZ0ltcGwgb2JqZWN0cyBhcmUgaW1tdXRh
YmxlLCB0aGVyZSdzIG5vIG90aGVyIHJlYXNvbgogICAgIC8vIHRvIGV2ZXIgcHJlZmVyIGNvcHko
KSBvdmVyIHBsYWluIG9sZCBhc3NpZ25tZW50LgotICAgIFN0cmluZyB0aHJlYWRzYWZlQ29weSgp
IGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgdGhyZWFkc2FmZUNvcHkoKSBj
b25zdDsKIAogICAgIC8vIFByZXZlbnQgU3RyaW5ncyBmcm9tIGJlaW5nIGltcGxpY2l0bHkgY29u
dmVydGFibGUgdG8gYm9vbCBhcyBpdCB3aWxsIGJlIGFtYmlndW91cyBvbiBhbnkgcGxhdGZvcm0g
dGhhdAogICAgIC8vIGFsbG93cyBpbXBsaWNpdCBjb252ZXJzaW9uIHRvIGFub3RoZXIgcG9pbnRl
ciB0eXBlIChlLmcuLCBNYWMgYWxsb3dzIGltcGxpY2l0IGNvbnZlcnNpb24gdG8gTlNTdHJpbmcq
KS4KQEAgLTMwOSw4ICszMDksOCBAQAogI2VuZGlmCiAKICNpZiBQTEFURk9STShXWCkKLSAgICBT
dHJpbmcoY29uc3Qgd3hTdHJpbmcmKTsKLSAgICBvcGVyYXRvciB3eFN0cmluZygpIGNvbnN0Owor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcoY29uc3Qgd3hTdHJpbmcmKTsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgb3BlcmF0b3Igd3hTdHJpbmcoKSBjb25zdDsKICNlbmRpZgogCiAjaWYg
UExBVEZPUk0oSEFJS1UpCkBAIC0zMjQsMTEgKzMyNCwxMSBAQAogCiAgICAgLy8gU3RyaW5nOjpm
cm9tVVRGOCB3aWxsIHJldHVybiBhIG51bGwgc3RyaW5nIGlmCiAgICAgLy8gdGhlIGlucHV0IGRh
dGEgY29udGFpbnMgaW52YWxpZCBVVEYtOCBzZXF1ZW5jZXMuCi0gICAgc3RhdGljIFN0cmluZyBm
cm9tVVRGOChjb25zdCBjaGFyKiwgc2l6ZV90KTsKLSAgICBzdGF0aWMgU3RyaW5nIGZyb21VVEY4
KGNvbnN0IGNoYXIqKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cmluZyBmcm9t
VVRGOChjb25zdCBjaGFyKiwgc2l6ZV90KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IFN0cmluZyBmcm9tVVRGOChjb25zdCBjaGFyKik7CiAKICAgICAvLyBUcmllcyB0byBjb252ZXJ0
IHRoZSBwYXNzZWQgaW4gc3RyaW5nIHRvIFVURi04LCBidXQgd2lsbCBmYWxsIGJhY2sgdG8gTGF0
aW4tMSBpZiB0aGUgc3RyaW5nIGlzIG5vdCB2YWxpZCBVVEYtOC4KLSAgICBzdGF0aWMgU3RyaW5n
IGZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNrKGNvbnN0IGNoYXIqLCBzaXplX3QpOworICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RyaW5nIGZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNr
KGNvbnN0IGNoYXIqLCBzaXplX3QpOwogICAgIAogICAgIC8vIERldGVybWluZXMgdGhlIHdyaXRp
bmcgZGlyZWN0aW9uIHVzaW5nIHRoZSBVbmljb2RlIEJpZGkgQWxnb3JpdGhtIHJ1bGVzIFAyIGFu
ZCBQMy4KICAgICBXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbiBkZWZhdWx0V3JpdGluZ0RpcmVjdGlv
bihib29sKiBoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSA9IDApIGNvbnN0CkBAIC0zNDUsNyArMzQ1
LDcgQEAKIAogICAgIC8vIEhhc2ggdGFibGUgZGVsZXRlZCB2YWx1ZXMsIHdoaWNoIGFyZSBvbmx5
IGNvbnN0cnVjdGVkIGFuZCBuZXZlciBjb3BpZWQgb3IgZGVzdHJveWVkLgogICAgIFN0cmluZyhX
VEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpIDogbV9pbXBsKFdURjo6SGFzaFRhYmxlRGVs
ZXRlZFZhbHVlKSB7IH0KLSAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3Qg
eyByZXR1cm4gbV9pbXBsLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJu
IG1faW1wbC5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9CiAKIHByaXZhdGU6CiAgICAgUmVm
UHRyPFN0cmluZ0ltcGw+IG1faW1wbDsKQEAgLTM1Niw5ICszNTYsOSBAQAogUURhdGFTdHJlYW0m
IG9wZXJhdG9yPj4oUURhdGFTdHJlYW0mIHN0cmVhbSwgU3RyaW5nJiBzdHIpOwogI2VuZGlmCiAK
LVN0cmluZyBvcGVyYXRvcisoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7Ci1TdHJpbmcg
b3BlcmF0b3IrKGNvbnN0IFN0cmluZyYsIGNvbnN0IGNoYXIqKTsKLVN0cmluZyBvcGVyYXRvciso
Y29uc3QgY2hhciosIGNvbnN0IFN0cmluZyYpOworV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBv
cGVyYXRvcisoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7CitXVEZfRVhQT1JUX1BSSVZB
VEUgU3RyaW5nIG9wZXJhdG9yKyhjb25zdCBTdHJpbmcmLCBjb25zdCBjaGFyKik7CitXVEZfRVhQ
T1JUX1BSSVZBVEUgU3RyaW5nIG9wZXJhdG9yKyhjb25zdCBjaGFyKiwgY29uc3QgU3RyaW5nJik7
CiAKIGlubGluZSBTdHJpbmcmIG9wZXJhdG9yKz0oU3RyaW5nJiBhLCBjb25zdCBTdHJpbmcmIGIp
IHsgYS5hcHBlbmQoYik7IHJldHVybiBhOyB9CiAKQEAgLTQxOSw3ICs0MTksNyBAQAogICAgIHJl
dHVybiAhKG9yZWQgJiAweEZGMDApOwogfQogCi1pbnQgY29kZVBvaW50Q29tcGFyZShjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKK1dURl9FWFBPUlRfUFJJVkFURSBpbnQgY29kZVBvaW50
Q29tcGFyZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKIAogaW5saW5lIHNpemVfdCBm
aW5kKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIFVDaGFyIG1hdGNo
Q2hhcmFjdGVyLCB1bnNpZ25lZCBpbmRleCA9IDApCiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgJKHJldmlzaW9uIDgyMDEwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAkod29ya2luZyBjb3B5KQpAQCAt
MTQxLDExICsxNDEsMTEgQEAKICAgICB9CiAKIHB1YmxpYzoKLSAgICB+U3RyaW5nSW1wbCgpOwor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSB+U3RyaW5nSW1wbCgpOwogCi0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8U3RyaW5nSW1wbD4gY3JlYXRlKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBjcmVhdGUoY29uc3QgY2hhciosIHVu
c2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gY3JlYXRl
KGNvbnN0IGNoYXIqKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8
U3RyaW5nSW1wbD4gY3JlYXRlKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gY3JlYXRlKGNv
bnN0IGNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0
aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBjcmVhdGUoY29uc3QgY2hhciopOwogICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGNyZWF0ZShjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxl
bmd0aCwgUGFzc1JlZlB0cjxTaGFyZWRVQ2hhcj4gc2hhcmVkQnVmZmVyKTsKICAgICBzdGF0aWMg
QUxXQVlTX0lOTElORSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGNyZWF0ZShQYXNzUmVmUHRyPFN0
cmluZ0ltcGw+IHJlcCwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgewpA
QCAtMTU5LDcgKzE1OSw3IEBACiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3RyaW5nSW1w
bChyZXAtPm1fZGF0YSArIG9mZnNldCwgbGVuZ3RoLCBvd25lclJlcCkpOwogICAgIH0KIAotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWdu
ZWQgbGVuZ3RoLCBVQ2hhciomIGRhdGEpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMg
UGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0
aCwgVUNoYXIqJiBkYXRhKTsKICAgICBzdGF0aWMgQUxXQVlTX0lOTElORSBQYXNzUmVmUHRyPFN0
cmluZ0ltcGw+IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoLCBVQ2hhciom
IG91dHB1dCkKICAgICB7CiAgICAgICAgIGlmICghbGVuZ3RoKSB7CkBAIC0xOTUsMTAgKzE5NSwx
MCBAQAogICAgICAgICB9CiAgICAgICAgIHJldHVybiBlbXB0eSgpOwogICAgIH0KLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZG9wdChTdHJpbmdCdWZmZXImKTsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRvcHQoU3RyaW5n
QnVmZmVyJik7CiAKICAgICBTaGFyZWRVQ2hhciogc2hhcmVkQnVmZmVyKCk7Ci0gICAgY29uc3Qg
VUNoYXIqIGNoYXJhY3RlcnMoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMoKSBjb25zdCB7IHJldHVybiBtX2Rh
dGE7IH0KIAogICAgIHNpemVfdCBjb3N0KCkKICAgICB7CkBAIC0yNDEsNyArMjQxLDcgQEAKICAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgZGVyZWYoKSB7IG1fcmVmQ291bnRBbmRGbGFncyAtPSBzX3Jl
ZkNvdW50SW5jcmVtZW50OyBpZiAoIShtX3JlZkNvdW50QW5kRmxhZ3MgJiAoc19yZWZDb3VudE1h
c2sgfCBzX3JlZkNvdW50RmxhZ1N0YXRpYykpKSBkZWxldGUgdGhpczsgfQogICAgIEFMV0FZU19J
TkxJTkUgYm9vbCBoYXNPbmVSZWYoKSBjb25zdCB7IHJldHVybiAobV9yZWZDb3VudEFuZEZsYWdz
ICYgKHNfcmVmQ291bnRNYXNrIHwgc19yZWZDb3VudEZsYWdTdGF0aWMpKSA9PSBzX3JlZkNvdW50
SW5jcmVtZW50OyB9CiAKLSAgICBzdGF0aWMgU3RyaW5nSW1wbCogZW1wdHkoKTsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cmluZ0ltcGwqIGVtcHR5KCk7CiAKICAgICBzdGF0aWMg
dm9pZCBjb3B5Q2hhcnMoVUNoYXIqIGRlc3RpbmF0aW9uLCBjb25zdCBVQ2hhciogc291cmNlLCB1
bnNpZ25lZCBudW1DaGFyYWN0ZXJzKQogICAgIHsKQEAgLTI1OSwxMiArMjU5LDEyIEBACiAgICAg
Ly8gU2luY2UgU3RyaW5nSW1wbCBvYmplY3RzIGFyZSBpbW11dGFibGUsIHRoZXJlJ3Mgbm8gb3Ro
ZXIgcmVhc29uIHRvIG1ha2UgYSBjb3B5LgogICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gdGhy
ZWFkc2FmZUNvcHkoKSBjb25zdDsKIAotICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gc3Vic3Ry
aW5nKHVuc2lnbmVkIHBvcywgdW5zaWduZWQgbGVuID0gVUlOVF9NQVgpOworICAgIFdURl9FWFBP
UlRfUFJJVkFURSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHN1YnN0cmluZyh1bnNpZ25lZCBwb3Ms
IHVuc2lnbmVkIGxlbiA9IFVJTlRfTUFYKTsKIAogICAgIFVDaGFyIG9wZXJhdG9yW10odW5zaWdu
ZWQgaSkgeyBBU1NFUlQoaSA8IG1fbGVuZ3RoKTsgcmV0dXJuIG1fZGF0YVtpXTsgfQogICAgIFVD
aGFyMzIgY2hhcmFjdGVyU3RhcnRpbmdBdCh1bnNpZ25lZCk7CiAKLSAgICBib29sIGNvbnRhaW5z
T25seVdoaXRlc3BhY2UoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjb250YWluc09u
bHlXaGl0ZXNwYWNlKCk7CiAKICAgICBpbnQgdG9JbnRTdHJpY3QoYm9vbCogb2sgPSAwLCBpbnQg
YmFzZSA9IDEwKTsKICAgICB1bnNpZ25lZCB0b1VJbnRTdHJpY3QoYm9vbCogb2sgPSAwLCBpbnQg
YmFzZSA9IDEwKTsKQEAgLTI3Miw3ICsyNzIsNyBAQAogICAgIHVpbnQ2NF90IHRvVUludDY0U3Ry
aWN0KGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCk7CiAgICAgaW50cHRyX3QgdG9JbnRQdHJT
dHJpY3QoYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKTsKIAotICAgIGludCB0b0ludChib29s
KiBvayA9IDApOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKKyAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgaW50IHRvSW50KGJvb2wqIG9rID0gMCk7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFn
ZQogICAgIHVuc2lnbmVkIHRvVUludChib29sKiBvayA9IDApOyAvLyBpZ25vcmVzIHRyYWlsaW5n
IGdhcmJhZ2UKICAgICBpbnQ2NF90IHRvSW50NjQoYm9vbCogb2sgPSAwKTsgLy8gaWdub3JlcyB0
cmFpbGluZyBnYXJiYWdlCiAgICAgdWludDY0X3QgdG9VSW50NjQoYm9vbCogb2sgPSAwKTsgLy8g
aWdub3JlcyB0cmFpbGluZyBnYXJiYWdlCkBAIC0yODEsMzkgKzI4MSwzOSBAQAogICAgIGRvdWJs
ZSB0b0RvdWJsZShib29sKiBvayA9IDAsIGJvb2wqIGRpZFJlYWROdW1iZXIgPSAwKTsKICAgICBm
bG9hdCB0b0Zsb2F0KGJvb2wqIG9rID0gMCwgYm9vbCogZGlkUmVhZE51bWJlciA9IDApOwogCi0g
ICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBsb3dlcigpOwotICAgIFBhc3NSZWZQdHI8U3RyaW5n
SW1wbD4gdXBwZXIoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgUGFzc1JlZlB0cjxTdHJpbmdJ
bXBsPiBsb3dlcigpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBQYXNzUmVmUHRyPFN0cmluZ0lt
cGw+IHVwcGVyKCk7CiAKICAgICBlbnVtIExhc3RDaGFyYWN0ZXJCZWhhdmlvciB7IE9ic2N1cmVM
YXN0Q2hhcmFjdGVyLCBEaXNwbGF5TGFzdENoYXJhY3RlciB9OwogCi0gICAgUGFzc1JlZlB0cjxT
dHJpbmdJbXBsPiBzZWN1cmUoVUNoYXIsIExhc3RDaGFyYWN0ZXJCZWhhdmlvciA9IE9ic2N1cmVM
YXN0Q2hhcmFjdGVyKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgUGFzc1JlZlB0cjxTdHJpbmdJ
bXBsPiBzZWN1cmUoVUNoYXIsIExhc3RDaGFyYWN0ZXJCZWhhdmlvciA9IE9ic2N1cmVMYXN0Q2hh
cmFjdGVyKTsKICAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGZvbGRDYXNlKCk7CiAKICAgICBQ
YXNzUmVmUHRyPFN0cmluZ0ltcGw+IHN0cmlwV2hpdGVTcGFjZSgpOwotICAgIFBhc3NSZWZQdHI8
U3RyaW5nSW1wbD4gc2ltcGxpZnlXaGl0ZVNwYWNlKCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gc2ltcGxpZnlXaGl0ZVNwYWNlKCk7CiAKICAgICBQYXNz
UmVmUHRyPFN0cmluZ0ltcGw+IHJlbW92ZUNoYXJhY3RlcnMoQ2hhcmFjdGVyTWF0Y2hGdW5jdGlv
blB0cik7CiAKLSAgICBzaXplX3QgZmluZChVQ2hhciwgdW5zaWduZWQgaW5kZXggPSAwKTsKLSAg
ICBzaXplX3QgZmluZChDaGFyYWN0ZXJNYXRjaEZ1bmN0aW9uUHRyLCB1bnNpZ25lZCBpbmRleCA9
IDApOwotICAgIHNpemVfdCBmaW5kKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCBpbmRleCA9IDApOwot
ICAgIHNpemVfdCBmaW5kKFN0cmluZ0ltcGwqLCB1bnNpZ25lZCBpbmRleCA9IDApOwotICAgIHNp
emVfdCBmaW5kSWdub3JpbmdDYXNlKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCBpbmRleCA9IDApOwot
ICAgIHNpemVfdCBmaW5kSWdub3JpbmdDYXNlKFN0cmluZ0ltcGwqLCB1bnNpZ25lZCBpbmRleCA9
IDApOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgZmluZChVQ2hhciwgdW5zaWduZWQg
aW5kZXggPSAwKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZpbmQoQ2hhcmFjdGVy
TWF0Y2hGdW5jdGlvblB0ciwgdW5zaWduZWQgaW5kZXggPSAwKTsKKyAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgc2l6ZV90IGZpbmQoY29uc3QgY2hhciosIHVuc2lnbmVkIGluZGV4ID0gMCk7CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCBmaW5kKFN0cmluZ0ltcGwqLCB1bnNpZ25lZCBpbmRl
eCA9IDApOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgZmluZElnbm9yaW5nQ2FzZShj
b25zdCBjaGFyKiwgdW5zaWduZWQgaW5kZXggPSAwKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
c2l6ZV90IGZpbmRJZ25vcmluZ0Nhc2UoU3RyaW5nSW1wbCosIHVuc2lnbmVkIGluZGV4ID0gMCk7
CiAKLSAgICBzaXplX3QgcmV2ZXJzZUZpbmQoVUNoYXIsIHVuc2lnbmVkIGluZGV4ID0gVUlOVF9N
QVgpOwotICAgIHNpemVfdCByZXZlcnNlRmluZChTdHJpbmdJbXBsKiwgdW5zaWduZWQgaW5kZXgg
PSBVSU5UX01BWCk7Ci0gICAgc2l6ZV90IHJldmVyc2VGaW5kSWdub3JpbmdDYXNlKFN0cmluZ0lt
cGwqLCB1bnNpZ25lZCBpbmRleCA9IFVJTlRfTUFYKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
c2l6ZV90IHJldmVyc2VGaW5kKFVDaGFyLCB1bnNpZ25lZCBpbmRleCA9IFVJTlRfTUFYKTsKKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IHJldmVyc2VGaW5kKFN0cmluZ0ltcGwqLCB1bnNp
Z25lZCBpbmRleCA9IFVJTlRfTUFYKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IHJl
dmVyc2VGaW5kSWdub3JpbmdDYXNlKFN0cmluZ0ltcGwqLCB1bnNpZ25lZCBpbmRleCA9IFVJTlRf
TUFYKTsKIAogICAgIGJvb2wgc3RhcnRzV2l0aChTdHJpbmdJbXBsKiBzdHIsIGJvb2wgY2FzZVNl
bnNpdGl2ZSA9IHRydWUpIHsgcmV0dXJuIChjYXNlU2Vuc2l0aXZlID8gcmV2ZXJzZUZpbmQoc3Ry
LCAwKSA6IHJldmVyc2VGaW5kSWdub3JpbmdDYXNlKHN0ciwgMCkpID09IDA7IH0KLSAgICBib29s
IGVuZHNXaXRoKFN0cmluZ0ltcGwqLCBib29sIGNhc2VTZW5zaXRpdmUgPSB0cnVlKTsKKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBlbmRzV2l0aChTdHJpbmdJbXBsKiwgYm9vbCBjYXNlU2Vu
c2l0aXZlID0gdHJ1ZSk7CiAKLSAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJlcGxhY2UoVUNo
YXIsIFVDaGFyKTsKLSAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJlcGxhY2UoVUNoYXIsIFN0
cmluZ0ltcGwqKTsKLSAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJlcGxhY2UoU3RyaW5nSW1w
bCosIFN0cmluZ0ltcGwqKTsKLSAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJlcGxhY2UodW5z
aWduZWQgaW5kZXgsIHVuc2lnbmVkIGxlbiwgU3RyaW5nSW1wbCopOworICAgIFdURl9FWFBPUlRf
UFJJVkFURSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJlcGxhY2UoVUNoYXIsIFVDaGFyKTsKKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXBsYWNlKFVDaGFy
LCBTdHJpbmdJbXBsKik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8U3RyaW5n
SW1wbD4gcmVwbGFjZShTdHJpbmdJbXBsKiwgU3RyaW5nSW1wbCopOworICAgIFdURl9FWFBPUlRf
UFJJVkFURSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJlcGxhY2UodW5zaWduZWQgaW5kZXgsIHVu
c2lnbmVkIGxlbiwgU3RyaW5nSW1wbCopOwogCi0gICAgV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24g
ZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oYm9vbCogaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkgPSAw
KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24gZGVmYXVs
dFdyaXRpbmdEaXJlY3Rpb24oYm9vbCogaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkgPSAwKTsKIAog
I2lmIFVTRShDRikKICAgICBDRlN0cmluZ1JlZiBjcmVhdGVDRlN0cmluZygpOwpAQCAtMzI2LDcg
KzMyNiw3IEBACiAgICAgLy8gVGhpcyBudW1iZXIgbXVzdCBiZSBhdCBsZWFzdCAyIHRvIGF2b2lk
IHNoYXJpbmcgZW1wdHksIG51bGwgYXMgd2VsbCBhcyAxIGNoYXJhY3RlciBzdHJpbmdzIGZyb20g
U21hbGxTdHJpbmdzLgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2NvcHlDaGFyc0lubGlu
ZUN1dE9mZiA9IDIwOwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gY3JlYXRl
U3RyaXBwaW5nTnVsbENoYXJhY3RlcnNTbG93Q2FzZShjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxl
bmd0aCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0lt
cGw+IGNyZWF0ZVN0cmlwcGluZ051bGxDaGFyYWN0ZXJzU2xvd0Nhc2UoY29uc3QgVUNoYXIqLCB1
bnNpZ25lZCBsZW5ndGgpOwogICAgIAogICAgIEJ1ZmZlck93bmVyc2hpcCBidWZmZXJPd25lcnNo
aXAoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxCdWZmZXJPd25lcnNoaXA+KG1fcmVmQ291
bnRBbmRGbGFncyAmIHNfcmVmQ291bnRNYXNrQnVmZmVyT3duZXJzaGlwKTsgfQogICAgIGJvb2wg
aXNTdGF0aWMoKSBjb25zdCB7IHJldHVybiBtX3JlZkNvdW50QW5kRmxhZ3MgJiBzX3JlZkNvdW50
RmxhZ1N0YXRpYzsgfQpAQCAtMzM5LDE3ICszMzksMTcgQEAKICAgICBtdXRhYmxlIHVuc2lnbmVk
IG1faGFzaDsKIH07CiAKLWJvb2wgZXF1YWwoY29uc3QgU3RyaW5nSW1wbCosIGNvbnN0IFN0cmlu
Z0ltcGwqKTsKLWJvb2wgZXF1YWwoY29uc3QgU3RyaW5nSW1wbCosIGNvbnN0IGNoYXIqKTsKK1dU
Rl9FWFBPUlRfUFJJVkFURSBib29sIGVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqLCBjb25zdCBTdHJp
bmdJbXBsKik7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBlcXVhbChjb25zdCBTdHJpbmdJbXBs
KiwgY29uc3QgY2hhciopOwogaW5saW5lIGJvb2wgZXF1YWwoY29uc3QgY2hhciogYSwgU3RyaW5n
SW1wbCogYikgeyByZXR1cm4gZXF1YWwoYiwgYSk7IH0KIAotYm9vbCBlcXVhbElnbm9yaW5nQ2Fz
ZShTdHJpbmdJbXBsKiwgU3RyaW5nSW1wbCopOwotYm9vbCBlcXVhbElnbm9yaW5nQ2FzZShTdHJp
bmdJbXBsKiwgY29uc3QgY2hhciopOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZXF1YWxJZ25v
cmluZ0Nhc2UoU3RyaW5nSW1wbCosIFN0cmluZ0ltcGwqKTsKK1dURl9FWFBPUlRfUFJJVkFURSBi
b29sIGVxdWFsSWdub3JpbmdDYXNlKFN0cmluZ0ltcGwqLCBjb25zdCBjaGFyKik7CiBpbmxpbmUg
Ym9vbCBlcXVhbElnbm9yaW5nQ2FzZShjb25zdCBjaGFyKiBhLCBTdHJpbmdJbXBsKiBiKSB7IHJl
dHVybiBlcXVhbElnbm9yaW5nQ2FzZShiLCBhKTsgfQotYm9vbCBlcXVhbElnbm9yaW5nQ2FzZShj
b25zdCBVQ2hhciogYSwgY29uc3QgY2hhciogYiwgdW5zaWduZWQgbGVuZ3RoKTsKK1dURl9FWFBP
UlRfUFJJVkFURSBib29sIGVxdWFsSWdub3JpbmdDYXNlKGNvbnN0IFVDaGFyKiwgY29uc3QgY2hh
ciosIHVuc2lnbmVkIGxlbmd0aCk7CiBpbmxpbmUgYm9vbCBlcXVhbElnbm9yaW5nQ2FzZShjb25z
dCBjaGFyKiBhLCBjb25zdCBVQ2hhciogYiwgdW5zaWduZWQgbGVuZ3RoKSB7IHJldHVybiBlcXVh
bElnbm9yaW5nQ2FzZShiLCBhLCBsZW5ndGgpOyB9CiAKLWJvb2wgZXF1YWxJZ25vcmluZ051bGxp
dHkoU3RyaW5nSW1wbCosIFN0cmluZ0ltcGwqKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGVx
dWFsSWdub3JpbmdOdWxsaXR5KFN0cmluZ0ltcGwqLCBTdHJpbmdJbXBsKik7CiAKIHRlbXBsYXRl
PHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KIGJvb2wgZXF1YWxJZ25vcmluZ051bGxpdHkoY29uc3Qg
VmVjdG9yPFVDaGFyLCBpbmxpbmVDYXBhY2l0eT4mIGEsIFN0cmluZ0ltcGwqIGIpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0J5dGVBcnJheS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvQnl0ZUFycmF5LmgJKHJldmlzaW9uIDgyMDEwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9CeXRlQXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtODAs
NyArODAsNyBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIFBh
c3NSZWZQdHI8Qnl0ZUFycmF5PiBjcmVhdGUoc2l6ZV90IHNpemUpOworICAgICAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBjcmVhdGUoc2l6ZV90KTsK
IAogICAgIHByaXZhdGU6CiAgICAgICAgIEJ5dGVBcnJheShzaXplX3Qgc2l6ZSkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgJKHJldmlzaW9uIDgyMDEwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTkzLDYg
KzExOTMsOSBAQAogICAgc2luY2UgbW9zdCBwb3J0cyB0cnkgdG8gc3VwcG9ydCBzdWItcHJvamVj
dCBpbmRlcGVuZGVuY2UsIGFkZGluZyBuZXcgaGVhZGVycwogICAgdG8gV1RGIGNhdXNlcyBtYW55
IHBvcnRzIHRvIGJyZWFrLCBhbmQgc28gdGhpcyB3YXkgd2UgY2FuIGFkZHJlc3MgdGhlIGJ1aWxk
CiAgICBicmVha2FnZXMgb25lIHBvcnQgYXQgYSB0aW1lLiAqLworI2lmIFBMQVRGT1JNKFdYKQor
I2RlZmluZSBXVEZfVVNFX0VYUE9SVF9NQUNST1MgMQorI2Vsc2UKICNkZWZpbmUgV1RGX1VTRV9F
WFBPUlRfTUFDUk9TIDAKLQorI2VuZGlmCiAjZW5kaWYgLyogV1RGX1BsYXRmb3JtX2ggKi8KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5o
CShyZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsOCArMTAwLDggQEAKICAgICAgICAg
SlNWYWx1ZSBleGVjdXRlKEV2YWxFeGVjdXRhYmxlKiBldmFsTm9kZSwgQ2FsbEZyYW1lKiBleGVj
LCBKU09iamVjdCogdGhpc09iaiwgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW4pOwogCiAgICAg
ICAgIEpTVmFsdWUgcmV0cmlldmVBcmd1bWVudHMoQ2FsbEZyYW1lKiwgSlNGdW5jdGlvbiopIGNv
bnN0OwotICAgICAgICBKU1ZhbHVlIHJldHJpZXZlQ2FsbGVyKENhbGxGcmFtZSosIEpTRnVuY3Rp
b24qKSBjb25zdDsKLSAgICAgICAgdm9pZCByZXRyaWV2ZUxhc3RDYWxsZXIoQ2FsbEZyYW1lKiwg
aW50JiBsaW5lTnVtYmVyLCBpbnRwdHJfdCYgc291cmNlSUQsIFVTdHJpbmcmIHNvdXJjZVVSTCwg
SlNWYWx1ZSYgZnVuY3Rpb24pIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBKU1Zh
bHVlIHJldHJpZXZlQ2FsbGVyKENhbGxGcmFtZSosIEpTRnVuY3Rpb24qKSBjb25zdDsKKyAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCByZXRyaWV2ZUxhc3RDYWxsZXIoQ2FsbEZyYW1lKiwg
aW50JiBsaW5lTnVtYmVyLCBpbnRwdHJfdCYgc291cmNlSUQsIFVTdHJpbmcmIHNvdXJjZVVSTCwg
SlNWYWx1ZSYgZnVuY3Rpb24pIGNvbnN0OwogICAgICAgICAKICAgICAgICAgdm9pZCBnZXRBcmd1
bWVudHNEYXRhKENhbGxGcmFtZSosIEpTRnVuY3Rpb24qJiwgcHRyZGlmZl90JiBmaXJzdFBhcmFt
ZXRlckluZGV4LCBSZWdpc3RlciomIGFyZ3YsIGludCYgYXJnYyk7CiAgICAgICAgIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5oCShyZXZpc2lvbiA4MjAxMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMxMyw3ICszMTMsNyBAQAogfTsKIAogc3RydWN0IFlhcnJQYXR0ZXJuIHsKLSAgICBZ
YXJyUGF0dGVybihjb25zdCBVU3RyaW5nJiBwYXR0ZXJuLCBib29sIGlnbm9yZUNhc2UsIGJvb2wg
bXVsdGlsaW5lLCBjb25zdCBjaGFyKiogZXJyb3IpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIFlh
cnJQYXR0ZXJuKGNvbnN0IFVTdHJpbmcmIHBhdHRlcm4sIGJvb2wgaWdub3JlQ2FzZSwgYm9vbCBt
dWx0aWxpbmUsIGNvbnN0IGNoYXIqKiBlcnJvcik7CiAKICAgICB+WWFyclBhdHRlcm4oKQogICAg
IHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyLmgJKHJldmlzaW9uIDgyMDEwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyci5oCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw4
ICs1Nyw4IEBACiAgICAgSlNSZWdFeHBFcnJvckludGVybmFsID0gLTQKIH07CiAKLVBhc3NPd25Q
dHI8Qnl0ZWNvZGVQYXR0ZXJuPiBieXRlQ29tcGlsZShZYXJyUGF0dGVybiYsIEJ1bXBQb2ludGVy
QWxsb2NhdG9yKik7Ci1pbnQgaW50ZXJwcmV0KEJ5dGVjb2RlUGF0dGVybiosIGNvbnN0IFVDaGFy
KiBpbnB1dCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgaW50KiBvdXRwdXQpOwor
SlNfRVhQT1JUX1BSSVZBVEUgUGFzc093blB0cjxCeXRlY29kZVBhdHRlcm4+IGJ5dGVDb21waWxl
KFlhcnJQYXR0ZXJuJiwgQnVtcFBvaW50ZXJBbGxvY2F0b3IqKTsKK0pTX0VYUE9SVF9QUklWQVRF
IGludCBpbnRlcnByZXQoQnl0ZWNvZGVQYXR0ZXJuKiwgY29uc3QgVUNoYXIqIGlucHV0LCB1bnNp
Z25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBpbnQqIG91dHB1dCk7CiAKIH0gfSAvLyBuYW1l
c3BhY2UgSlNDOjpZYXJyCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24g
ODIwNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTAzIEBACisyMDExLTAzLTI3ICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0
aGVvbGxpdmllcnMuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZCBleHBvcnQgbWFjcm9zIHRvIGFsbCBleHBvcnRlZCBKU0NvcmUgbWV0aG9k
cy4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc1
NTEKKworICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAg
ICAqIGNvbGxlY3Rvci9oYW5kbGVzL0hhbmRsZUhlYXAuaDoKKyAgICAgICAgKiBjb25maWcuaDoK
KyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlci5oOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVn
Z2VyQ2FsbEZyYW1lLmg6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAg
ICAgICAgKiBwYXJzZXIvU291cmNlUHJvdmlkZXJDYWNoZS5oOgorICAgICAgICAqIHByb2ZpbGVy
L1Byb2ZpbGVyLmg6CisgICAgICAgICogcnVudGltZS9BcmdMaXN0Lmg6CisgICAgICAgICogcnVu
dGltZS9DYWxsRGF0YS5oOgorICAgICAgICAqIHJ1bnRpbWUvQ29tcGxldGlvbi5oOgorICAgICAg
ICAqIHJ1bnRpbWUvQ29uc3RydWN0RGF0YS5oOgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZUluc3Rh
bmNlLmg6CisgICAgICAgICogcnVudGltZS9FcnJvci5oOgorICAgICAgICAqIHJ1bnRpbWUvRXhj
ZXB0aW9uSGVscGVycy5oOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5o
OgorICAgICAgICAqIHJ1bnRpbWUvSGVhcC5oOgorICAgICAgICAqIHJ1bnRpbWUvSWRlbnRpZmll
ci5oOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyOjp0b1VJbnQzMik6CisgICAgICAgIChKU0M6
OklkZW50aWZpZXI6OmVxdWFsKToKKyAgICAgICAgKiBydW50aW1lL0luaXRpYWxpemVUaHJlYWRp
bmcuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaDoKKyAgICAgICAgKiBy
dW50aW1lL0pTQXJyYXkuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQnl0ZUFycmF5Lmg6CisgICAg
ICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpKU0NlbGw6OmNs
YXNzSW5mbyk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6SlNDZWxsOjp2cHRyKToKKyAgICAgICAg
KEpTQzo6SlNDZWxsOjpKU0NlbGw6OnNldFZQdHIpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OkpT
Q2VsbDo6aXNTdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5oOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNMb2NrLmg6CisgICAgICAgICogcnVudGltZS9K
U09iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0Lmg6
CisgICAgICAgICogcnVudGltZS9KU1ZhbHVlLmg6CisgICAgICAgICogcnVudGltZS9KU1Zhcmlh
YmxlT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU1dyYXBwZXJPYmplY3QuaDoKKyAgICAg
ICAgKiBydW50aW1lL0xvb2t1cC5oOgorICAgICAgICAqIHJ1bnRpbWUvTWFya2VkU3BhY2UuaDoK
KyAgICAgICAgKiBydW50aW1lL09iamVjdFByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUv
UHJvcGVydHlEZXNjcmlwdG9yLmg6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJh
eS5oOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eU5hbWVBcnJheTo6YWRkKToKKyAgICAgICAgKiBy
dW50aW1lL1Byb3BlcnR5U2xvdC5oOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwLmg6CisgICAg
ICAgICogcnVudGltZS9SZWdFeHBPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL1JvcGVJbXBs
Lmg6CisgICAgICAgICogcnVudGltZS9TY29wZUNoYWluLmg6CisgICAgICAgICogcnVudGltZS9T
bWFsbFN0cmluZ3MuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ09iamVjdC5oOgorICAgICAg
ICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgICogcnVudGltZS9UaW1lb3V0Q2hlY2tl
ci5oOgorICAgICAgICAqIHJ1bnRpbWUvVVN0cmluZy5oOgorICAgICAgICAoSlNDOjpVU3RyaW5n
OjpVU3RyaW5nKToKKyAgICAgICAgKiB3dGYvQnl0ZUFycmF5Lmg6CisgICAgICAgICogd3RmL0Ny
eXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmg6CisgICAgICAgICogd3RmL0N1cnJlbnRUaW1l
Lmg6CisgICAgICAgICogd3RmL0RhdGVNYXRoLmg6CisgICAgICAgICogd3RmL0RlY2ltYWxOdW1i
ZXIuaDoKKyAgICAgICAgKiB3dGYvRmFzdE1hbGxvYy5oOgorICAgICAgICAqIHd0Zi9NRDUuaDoK
KyAgICAgICAgKiB3dGYvTWFpblRocmVhZC5oOgorICAgICAgICAqIHd0Zi9OdWxsUHRyLmNwcDoK
KyAgICAgICAgKiB3dGYvTnVsbFB0ci5oOgorICAgICAgICAqIHd0Zi9PU0FsbG9jYXRvci5oOgor
ICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorICAgICAgICAqIHd0Zi9SYW5kb21OdW1iZXIuaDoK
KyAgICAgICAgKiB3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg6CisgICAgICAgICogd3RmL1Ro
cmVhZFNwZWNpZmljLmg6CisgICAgICAgICogd3RmL1RocmVhZGluZy5oOgorICAgICAgICAqIHd0
Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg6CisgICAgICAgICogd3RmL1dURlRocmVhZERhdGEuaDoK
KyAgICAgICAgKiB3dGYvZHRvYS5oOgorICAgICAgICAqIHd0Zi90ZXh0L0F0b21pY1N0cmluZy5o
OgorICAgICAgICAoV1RGOjpBdG9taWNTdHJpbmc6OkF0b21pY1N0cmluZyk6CisgICAgICAgIChX
VEY6OkF0b21pY1N0cmluZzo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUpOgorICAgICAgICAoV1RG
OjpBdG9taWNTdHJpbmc6On5BdG9taWNTdHJpbmcpOgorICAgICAgICAoV1RGOjpBdG9taWNTdHJp
bmc6OmltcGwpOgorICAgICAgICAqIHd0Zi90ZXh0L0NTdHJpbmcuaDoKKyAgICAgICAgKiB3dGYv
dGV4dC9TdHJpbmdCdWlsZGVyLmg6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5oOgor
ICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpjaGFyYWN0ZXJzKToKKyAgICAgICAgKiB3dGYvdGV4
dC9XVEZTdHJpbmcuaDoKKyAgICAgICAgKFdURjo6U3RyaW5nOjpTdHJpbmcpOgorICAgICAgICAo
V1RGOjpTdHJpbmc6OmZpbmRJZ25vcmluZ0Nhc2UpOgorICAgICAgICAoV1RGOjpTdHJpbmc6Omlz
SGFzaFRhYmxlRGVsZXRlZFZhbHVlKToKKyAgICAgICAgKiB3dGYvdW5pY29kZS9Db2xsYXRvci5o
OgorICAgICAgICAqIHd0Zi91bmljb2RlL1VURjguaDoKKyAgICAgICAgKiB5YXJyL1lhcnIuaDoK
KyAgICAgICAgKiB5YXJyL1lhcnJQYXR0ZXJuLmg6CisKIDIwMTEtMDMtMjcgIEJlbiBUYXlsb3Ig
IDxiZW50YXlsb3Iuc29seDg2QGdtYWlsLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbGV4
ZXkgUHJvc2t1cnlha292LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3Vy
Y2VQcm92aWRlckNhY2hlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9Tb3VyY2VQcm92aWRlckNhY2hlLmgJKHJldmlzaW9uIDgyMDEwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlckNhY2hlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMzLDEwICszMywxMCBAQAogY2xhc3MgU291cmNlUHJvdmlkZXJDYWNoZSB7CiBwdWJsaWM6
CiAgICAgU291cmNlUHJvdmlkZXJDYWNoZSgpIDogbV9jb250ZW50Qnl0ZVNpemUoMCkge30KLSAg
ICB+U291cmNlUHJvdmlkZXJDYWNoZSgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIH5Tb3VyY2VQ
cm92aWRlckNhY2hlKCk7CiAKLSAgICB2b2lkIGNsZWFyKCk7Ci0gICAgdW5zaWduZWQgYnl0ZVNp
emUoKSBjb25zdDsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGNsZWFyKCk7CisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgdW5zaWduZWQgYnl0ZVNpemUoKSBjb25zdDsKICAgICB2b2lkIGFkZChp
bnQgc291cmNlUG9zaXRpb24sIFBhc3NPd25QdHI8U291cmNlUHJvdmlkZXJDYWNoZUl0ZW0+LCB1
bnNpZ25lZCBzaXplKTsKICAgICBjb25zdCBTb3VyY2VQcm92aWRlckNhY2hlSXRlbSogZ2V0KGlu
dCBzb3VyY2VQb3NpdGlvbikgY29uc3QgeyByZXR1cm4gbV9tYXAuZ2V0KHNvdXJjZVBvc2l0aW9u
KTsgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXIuaAko
cmV2aXNpb24gODIwMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmls
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsMTEgKzUzLDExIEBACiAgICAgICAgICAgICByZXR1
cm4gJnNfc2hhcmVkRW5hYmxlZFByb2ZpbGVyUmVmZXJlbmNlOwogICAgICAgICB9CiAKLSAgICAg
ICAgc3RhdGljIFByb2ZpbGVyKiBwcm9maWxlcigpOyAKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIFByb2ZpbGVyKiBwcm9maWxlcigpOyAKICAgICAgICAgc3RhdGljIENhbGxJZGVu
dGlmaWVyIGNyZWF0ZUNhbGxJZGVudGlmaWVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSwgY29u
c3QgVVN0cmluZyYgc291cmNlVVJMLCBpbnQgbGluZU51bWJlcik7CiAKLSAgICAgICAgdm9pZCBz
dGFydFByb2ZpbGluZyhFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJiB0aXRsZSk7Ci0gICAgICAg
IFBhc3NSZWZQdHI8UHJvZmlsZT4gc3RvcFByb2ZpbGluZyhFeGVjU3RhdGUqLCBjb25zdCBVU3Ry
aW5nJiB0aXRsZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc3RhcnRQcm9maWxp
bmcoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYgdGl0bGUpOworICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSBQYXNzUmVmUHRyPFByb2ZpbGU+IHN0b3BQcm9maWxpbmcoRXhlY1N0YXRlKiwgY29u
c3QgVVN0cmluZyYgdGl0bGUpOwogICAgICAgICB2b2lkIHN0b3BQcm9maWxpbmcoSlNHbG9iYWxP
YmplY3QqKTsKIAogICAgICAgICB2b2lkIHdpbGxFeGVjdXRlKEV4ZWNTdGF0ZSogY2FsbGVyQ2Fs
bEZyYW1lLCBKU1ZhbHVlIGZ1bmN0aW9uKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5oCShyZXZpc2lvbiA4MjAxMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MSwxMCArNTEsMTAgQEAKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGR5
bmFtaWNHbG9iYWxPYmplY3QoKSBjb25zdCB7IHJldHVybiBtX2NhbGxGcmFtZS0+ZHluYW1pY0ds
b2JhbE9iamVjdCgpOyB9CiAgICAgICAgIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluKCkgY29u
c3QgeyByZXR1cm4gbV9jYWxsRnJhbWUtPnNjb3BlQ2hhaW4oKTsgfQogICAgICAgICBjb25zdCBV
U3RyaW5nKiBmdW5jdGlvbk5hbWUoKSBjb25zdDsKLSAgICAgICAgVVN0cmluZyBjYWxjdWxhdGVk
RnVuY3Rpb25OYW1lKCkgY29uc3Q7Ci0gICAgICAgIFR5cGUgdHlwZSgpIGNvbnN0OwotICAgICAg
ICBKU09iamVjdCogdGhpc09iamVjdCgpIGNvbnN0OwotICAgICAgICBKU1ZhbHVlIGV2YWx1YXRl
KGNvbnN0IFVTdHJpbmcmLCBKU1ZhbHVlJiBleGNlcHRpb24pIGNvbnN0OworICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSBVU3RyaW5nIGNhbGN1bGF0ZWRGdW5jdGlvbk5hbWUoKSBjb25zdDsKKyAg
ICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgVHlwZSB0eXBlKCkgY29uc3Q7CisgICAgICAgIEpTX0VY
UE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aGlzT2JqZWN0KCkgY29uc3Q7CisgICAgICAgIEpTX0VY
UE9SVF9QUklWQVRFIEpTVmFsdWUgZXZhbHVhdGUoY29uc3QgVVN0cmluZyYsIEpTVmFsdWUmIGV4
Y2VwdGlvbikgY29uc3Q7CiAgICAgICAgIEpTVmFsdWUgZXhjZXB0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9leGNlcHRpb247IH0KIAogICAgIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGVidWdnZXIvRGVidWdnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGVidWdnZXIvRGVidWdnZXIuaAkocmV2aXNpb24gODIwMTApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyAr
MzQsNyBAQAogICAgIGNsYXNzIFNvdXJjZVByb3ZpZGVyOwogICAgIGNsYXNzIFVTdHJpbmc7CiAK
LSAgICBjbGFzcyBEZWJ1Z2dlciB7CisgICAgY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgRGVidWdn
ZXIgewogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+RGVidWdnZXIoKTsKIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2NvbGxlY3Rvci9oYW5kbGVzL0hhbmRsZUhlYXAuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvY29sbGVjdG9yL2hhbmRsZXMvSGFuZGxl
SGVhcC5oCShyZXZpc2lvbiA4MjAxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb2xsZWN0
b3IvaGFuZGxlcy9IYW5kbGVIZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDcgKzYyLDcgQEAK
ICAgICAvLyBTaG91bGQgb25seSBiZSBjYWxsZWQgZHVyaW5nIHRlYXJkb3duLgogICAgIHZvaWQg
Y2xlYXJXZWFrUG9pbnRlcnMoKTsKIAotICAgIHZvaWQgd3JpdGVCYXJyaWVyKEhhbmRsZVNsb3Qs
IGNvbnN0IEpTVmFsdWUmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHdyaXRlQmFycmll
cihIYW5kbGVTbG90LCBjb25zdCBKU1ZhbHVlJik7CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAg
ICAgRmluYWxpemVyKiBnZXRGaW5hbGl6ZXIoSGFuZGxlU2xvdCBoYW5kbGUpCkBAIC0xMTIsNyAr
MTEyLDcgQEAKICAgICBzdGF0aWMgSGFuZGxlU2xvdCB0b0hhbmRsZShOb2RlKik7CiAgICAgc3Rh
dGljIE5vZGUqIHRvTm9kZShIYW5kbGVTbG90KTsKIAotICAgIHZvaWQgZ3JvdygpOworICAgIEpT
X0VYUE9SVF9QUklWQVRFIHZvaWQgZ3JvdygpOwogCiAgICAgSlNHbG9iYWxEYXRhKiBtX2dsb2Jh
bERhdGE7CiAgICAgQmxvY2tTdGFjazxOb2RlPiBtX2Jsb2NrU3RhY2s7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9jb25maWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb25maWcuaAko
cmV2aXNpb24gODIwMTApCisrKyBTb3VyY2UvV2ViQ29yZS9jb25maWcuaAkod29ya2luZyBjb3B5
KQpAQCAtNjQsOCArNjQsOCBAQAogI2Vsc2UKICNkZWZpbmUgV0VCS0lUX0VYUE9SVERBVEEgX19k
ZWNsc3BlYyhkbGxpbXBvcnQpCiAjZW5kaWYKLSNkZWZpbmUgV1RGX0VYUE9SVF9QUklWQVRFIEpT
X0VYUE9SVERBVEEKLSNkZWZpbmUgSlNfRVhQT1JUX1BSSVZBVEUgSlNfRVhQT1JUREFUQQorI2Rl
ZmluZSBXVEZfRVhQT1JUX1BSSVZBVEUKKyNkZWZpbmUgSlNfRVhQT1JUX1BSSVZBVEUKICNkZWZp
bmUgSlNfRVhQT1JUQ0xBU1MgSlNfRVhQT1JUREFUQQogI2Vsc2UKICNkZWZpbmUgSlNfRVhQT1JU
REFUQQpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODIwNzIpCisrKyBTb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0wMy0yNyAgS2V2
aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgZXhwb3J0IG1hY3JvcyB0byBhbGwg
ZXhwb3J0ZWQgSlNDb3JlIG1ldGhvZHMuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTI3NTUxCisKKyAgICAgICAgKiBjb25maWcuaDoKKwogMjAxMS0w
My0yNyAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87659</attachid>
            <date>2011-03-30 19:39:04 -0700</date>
            <delta_ts>2011-04-06 15:31:12 -0700</delta_ts>
            <desc>Step 2, part 1: same as previous patch, just updated to deal with bit rot</desc>
            <filename>jscore_exports_step2_try5.patch</filename>
            <type>text/plain</type>
            <size>112674</size>
            <attacher name="Kevin Ollivier">kevino</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29uZmlnLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9jb25maWcuaAkocmV2aXNpb24gODI1MTMpCisrKyBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL2NvbmZpZy5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw4ICs0OSw4IEBA
CiAjZGVmaW5lIFdFQktJVF9FWFBPUlREQVRBCiAjZW5kaWYKIAotI2RlZmluZSBXVEZfRVhQT1JU
X1BSSVZBVEUgSlNfRVhQT1JUREFUQQotI2RlZmluZSBKU19FWFBPUlRfUFJJVkFURSBKU19FWFBP
UlREQVRBCisjZGVmaW5lIFdURl9FWFBPUlRfUFJJVkFURQorI2RlZmluZSBKU19FWFBPUlRfUFJJ
VkFURQogCiAjZW5kaWYgLyogVVNFKEVYUE9SVF9NQUNST1MpICovCiAKSW5kZXg6IFRvb2xzL1dl
YktpdEFQSVRlc3QvY29uZmlnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0QVBJVGVzdC9j
b25maWcuaAkocmV2aXNpb24gODI1MTMpCisrKyBUb29scy9XZWJLaXRBUElUZXN0L2NvbmZpZy5o
CSh3b3JraW5nIGNvcHkpCkBAIC00OSw4ICs0OSw4IEBACiAjZGVmaW5lIFdFQktJVF9FWFBPUlRE
QVRBCiAjZW5kaWYKIAotI2RlZmluZSBXVEZfRVhQT1JUX1BSSVZBVEUgSlNfRVhQT1JUREFUQQot
I2RlZmluZSBKU19FWFBPUlRfUFJJVkFURSBKU19FWFBPUlREQVRBCisjZGVmaW5lIFdURl9FWFBP
UlRfUFJJVkFURQorI2RlZmluZSBKU19FWFBPUlRfUFJJVkFURQogCiAjZW5kaWYgLyogVVNFKEVY
UE9SVF9NQUNST1MpICovCiAKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2NvbmZpZy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2NvbmZpZy5oCShyZXZpc2lvbiA4MjUx
MykKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2NvbmZpZy5oCSh3b3JraW5nIGNvcHkpCkBAIC00
OCw4ICs0OCw4IEBACiAjZGVmaW5lIFdFQktJVF9FWFBPUlREQVRBCiAjZW5kaWYKIAotI2RlZmlu
ZSBXVEZfRVhQT1JUX1BSSVZBVEUgSlNfRVhQT1JUREFUQQotI2RlZmluZSBKU19FWFBPUlRfUFJJ
VkFURSBKU19FWFBPUlREQVRBCisjZGVmaW5lIFdURl9FWFBPUlRfUFJJVkFURQorI2RlZmluZSBK
U19FWFBPUlRfUFJJVkFURQogCiAjZW5kaWYgLyogVVNFKEVYUE9SVF9NQUNST1MpICovCiAKSW5k
ZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlz
aW9uIDgyNTM1KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTUgQEAKKzIwMTEtMDMtMzAgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
IGV4cG9ydCBtYWNyb3MgdG8gYWxsIGV4cG9ydGVkIEpTQ29yZSBtZXRob2RzLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzU1MQorCisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvY29uZmlnLmg6CisgICAgICAgICogV2ViS2l0QVBJVGVzdC9jb25m
aWcuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2NvbmZpZy5oOgorCiAyMDExLTAzLTMw
ICBNYXR0aGV3IERlbGFuZXkgIDxtZGVsYW5leUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgQ2hyaXMgTWFycmluLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVn
RXhwLmgJKHJldmlzaW9uIDgyNTEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDEyICszMywxMiBAQAogICAgIHN0cnVjdCBS
ZWdFeHBSZXByZXNlbnRhdGlvbjsKICAgICBjbGFzcyBKU0dsb2JhbERhdGE7CiAKLSAgICBSZWdF
eHBGbGFncyByZWdFeHBGbGFncyhjb25zdCBVU3RyaW5nJik7CisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgUmVnRXhwRmxhZ3MgcmVnRXhwRmxhZ3MoY29uc3QgVVN0cmluZyYpOwogCiAgICAgY2xhc3Mg
UmVnRXhwIDogcHVibGljIFJlZkNvdW50ZWQ8UmVnRXhwPiB7CiAgICAgcHVibGljOgotICAgICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxSZWdFeHA+IGNyZWF0ZShKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEsIGNvbnN0IFVTdHJpbmcmIHBhdHRlcm4sIFJlZ0V4cEZsYWdzKTsKLSAgICAgICAgflJlZ0V4
cCgpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxSZWdFeHA+
IGNyZWF0ZShKU0dsb2JhbERhdGEqLCBjb25zdCBVU3RyaW5nJiBwYXR0ZXJuLCBSZWdFeHBGbGFn
cyk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIH5SZWdFeHAoKTsKIAogICAgICAgICBib29s
IGdsb2JhbCgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MgJiBGbGFnR2xvYmFsOyB9CiAgICAgICAg
IGJvb2wgaWdub3JlQ2FzZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MgJiBGbGFnSWdub3JlQ2Fz
ZTsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHJl
dmlzaW9uIDgyNTEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDExICs3MywxMSBAQAogCiAgICAgICAgIHN0YXRpYyB2
b2lkIGR1bXBTdGF0aXN0aWNzKCk7CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0
dXJlPiBhZGRQcm9wZXJ0eVRyYW5zaXRpb24oU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUs
IHNpemVfdCYgb2Zmc2V0KTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBh
ZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVyZSosIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBz
cGVjaWZpY1ZhbHVlLCBzaXplX3QmIG9mZnNldCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gYWRkUHJvcGVydHlUcmFuc2l0aW9uKFN0cnVj
dHVyZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRl
cywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBzaXplX3QmIG9mZnNldCk7CisgICAgICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gYWRkUHJvcGVydHlUcmFu
c2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZShTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwg
c2l6ZV90JiBvZmZzZXQpOwogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHJl
bW92ZVByb3BlcnR5VHJhbnNpdGlvbihTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIHNpemVfdCYgb2Zmc2V0KTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3Ry
dWN0dXJlPiBjaGFuZ2VQcm90b3R5cGVUcmFuc2l0aW9uKFN0cnVjdHVyZSosIEpTVmFsdWUgcHJv
dG90eXBlKTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBkZXNwZWNpZnlG
dW5jdGlvblRyYW5zaXRpb24oU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYpOworICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNoYW5nZVBy
b3RvdHlwZVRyYW5zaXRpb24oU3RydWN0dXJlKiwgSlNWYWx1ZSBwcm90b3R5cGUpOworICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGRlc3BlY2lm
eUZ1bmN0aW9uVHJhbnNpdGlvbihTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJik7CiAgICAg
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gZ2V0dGVyU2V0dGVyVHJhbnNpdGlvbihT
dHJ1Y3R1cmUqKTsKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiB0b0NhY2hl
YWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKFN0cnVjdHVyZSopOwogICAgICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTdHJ1Y3R1cmU+IHRvVW5jYWNoZWFibGVEaWN0aW9uYXJ5VHJhbnNpdGlvbihTdHJ1
Y3R1cmUqKTsKQEAgLTkxLDEwICs5MSwxMCBAQAogCiAgICAgICAgIFBhc3NSZWZQdHI8U3RydWN0
dXJlPiBmbGF0dGVuRGljdGlvbmFyeVN0cnVjdHVyZShKU0dsb2JhbERhdGEmLCBKU09iamVjdCop
OwogCi0gICAgICAgIH5TdHJ1Y3R1cmUoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgflN0
cnVjdHVyZSgpOwogCiAgICAgICAgIC8vIFRoZXNlIHNob3VsZCBiZSB1c2VkIHdpdGggY2F1dGlv
bi4gIAotICAgICAgICBzaXplX3QgYWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3Bl
Y2lmaWNWYWx1ZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHNpemVfdCBhZGRQcm9wZXJ0
eVdpdGhvdXRUcmFuc2l0aW9uKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWdu
ZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKTsKICAgICAgICAgc2l6ZV90IHJl
bW92ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lKTsKICAgICAgICAgdm9pZCBzZXRQcm90b3R5cGVXaXRob3V0VHJhbnNpdGlvbihKU1ZhbHVl
IHByb3RvdHlwZSkgeyBtX3Byb3RvdHlwZSA9IHByb3RvdHlwZTsgfQogICAgICAgICAKQEAgLTEx
Nyw3ICsxMTcsNyBAQAogICAgICAgICBib29sIGlzVXNpbmdJbmxpbmVTdG9yYWdlKCkgY29uc3Q7
CiAKICAgICAgICAgc2l6ZV90IGdldChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOwot
ICAgICAgICBzaXplX3QgZ2V0KFN0cmluZ0ltcGwqIHByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0
dHJpYnV0ZXMsIEpTQ2VsbComIHNwZWNpZmljVmFsdWUpOworICAgICAgICBKU19FWFBPUlRfUFJJ
VkFURSBzaXplX3QgZ2V0KFN0cmluZ0ltcGwqIHByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJp
YnV0ZXMsIEpTQ2VsbComIHNwZWNpZmljVmFsdWUpOwogICAgICAgICBzaXplX3QgZ2V0KGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMsIEpTQ2VsbCom
IHNwZWNpZmljVmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVCghcHJvcGVydHlO
YW1lLmlzTnVsbCgpKTsKQEAgLTEzNCw3ICsxMzQsNyBAQAogICAgICAgICAKICAgICAgICAgYm9v
bCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0eVRhYmxlID8gbV9wcm9wZXJ0eVRh
YmxlLT5pc0VtcHR5KCkgOiBtX29mZnNldCA9PSBub09mZnNldDsgfQogCi0gICAgICAgIHZvaWQg
ZGVzcGVjaWZ5RGljdGlvbmFyeUZ1bmN0aW9uKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZGVzcGVjaWZ5RGljdGlvbmFyeUZ1
bmN0aW9uKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIHZvaWQgZGlz
YWJsZVNwZWNpZmljRnVuY3Rpb25UcmFja2luZygpIHsgbV9zcGVjaWZpY0Z1bmN0aW9uVGhyYXNo
Q291bnQgPSBtYXhTcGVjaWZpY0Z1bmN0aW9uVGhyYXNoQ291bnQ7IH0KIAogICAgICAgICB2b2lk
IHNldEVudW1lcmF0aW9uQ2FjaGUoSlNHbG9iYWxEYXRhJiwgSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
ciogZW51bWVyYXRpb25DYWNoZSk7IC8vIERlZmluZWQgaW4gSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
ci5oLgpAQCAtMTYyLDcgKzE2Miw3IEBACiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6Ci0gICAg
ICAgIFN0cnVjdHVyZShKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8mLCB1bnNpZ25l
ZCBhbm9ueW1vdXNTbG90Q291bnQsIGNvbnN0IENsYXNzSW5mbyopOworICAgICAgICBKU19FWFBP
UlRfUFJJVkFURSBTdHJ1Y3R1cmUoSlNWYWx1ZSBwcm90b3R5cGUsIGNvbnN0IFR5cGVJbmZvJiwg
dW5zaWduZWQgYW5vbnltb3VzU2xvdENvdW50LCBjb25zdCBDbGFzc0luZm8qKTsKICAgICAgICAg
U3RydWN0dXJlKGNvbnN0IFN0cnVjdHVyZSopOwogCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFN0cnVjdHVyZT4gY3JlYXRlKGNvbnN0IFN0cnVjdHVyZSogc3RydWN0dXJlKQpAQCAtMTg3LDcg
KzE4Nyw3IEBACiAgICAgICAgIHZvaWQgZGVzcGVjaWZ5QWxsRnVuY3Rpb25zKCk7CiAKICAgICAg
ICAgUHJvcGVydHlUYWJsZSogY29weVByb3BlcnR5VGFibGUoKTsKLSAgICAgICAgdm9pZCBtYXRl
cmlhbGl6ZVByb3BlcnR5TWFwKCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgbWF0
ZXJpYWxpemVQcm9wZXJ0eU1hcCgpOwogICAgICAgICB2b2lkIG1hdGVyaWFsaXplUHJvcGVydHlN
YXBJZk5lY2Vzc2FyeSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9wcm9wZXJ0eVRh
YmxlICYmIG1fcHJldmlvdXMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0LmgJKHJldmlzaW9uIDgyNTEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNzMsMTEgKzczLDExIEBACiAgICAgdHlw
ZWRlZiBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBQcm9wZXJ0eVN0b3JhZ2U7CiAgICAgdHlw
ZWRlZiBjb25zdCBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBDb25zdFByb3BlcnR5U3RvcmFn
ZTsKIAotICAgIGNsYXNzIEpTT2JqZWN0IDogcHVibGljIEpTQ2VsbCB7CisgICAgY2xhc3MgSlNf
RVhQT1JUREFUQSBKU09iamVjdCA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICBmcmllbmQgY2xh
c3MgQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXI7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7
CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKU0NlbGw7Ci0gICAgICAgIGZyaWVuZCB2b2lkIHNldFVw
U3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaEVudHJ5KiBlbnRy
eSwgSlNPYmplY3QqIHRoaXNPYmosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90JiBzbG90KTsKKyAgICAgICAgZnJpZW5kIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQg
c2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSGFzaEVudHJ5KiwgSlNP
YmplY3QqIHRoaXNPYmosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90Jik7CiAKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBtYXJrQ2hpbGRyZW4o
TWFya1N0YWNrJik7CkBAIC0yNDcsNyArMjQ3LDcgQEAKIAogICAgICAgICBzdGF0aWMgc2l6ZV90
IG9mZnNldE9mSW5saW5lU3RvcmFnZSgpOwogICAgICAgICAKLSAgICAgICAgc3RhdGljIEpTX0VY
UE9SVERBVEEgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKKyAgICAgICAgc3RhdGljIGNvbnN0IENs
YXNzSW5mbyBzX2luZm87CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
SlNWYWx1ZSBwcm90b3R5cGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
eGNlcHRpb25IZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oCShyZXZpc2lvbiA4MjUxMykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaAkod29ya2luZyBjb3B5KQpAQCAt
NDMsOSArNDMsOSBAQAogICAgIGNsYXNzIE5vZGU7CiAgICAgc3RydWN0IEluc3RydWN0aW9uOwog
ICAgIAotICAgIEpTT2JqZWN0KiBjcmVhdGVJbnRlcnJ1cHRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihK
U0dsb2JhbERhdGEqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogY3JlYXRlSW50
ZXJydXB0ZWRFeGVjdXRpb25FeGNlcHRpb24oSlNHbG9iYWxEYXRhKik7CiAgICAgSlNPYmplY3Qq
IGNyZWF0ZVRlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oSlNHbG9iYWxEYXRhKik7Ci0gICAg
SlNPYmplY3QqIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihFeGVjU3RhdGUqKTsKKyAgICBKU19F
WFBPUlRfUFJJVkFURSBKU09iamVjdCogY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKEV4ZWNTdGF0
ZSopOwogICAgIEpTT2JqZWN0KiBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoSlNHbG9iYWxPYmpl
Y3QqKTsKICAgICBKU09iamVjdCogY3JlYXRlT3V0T2ZNZW1vcnlFcnJvcihKU0dsb2JhbE9iamVj
dCopOwogICAgIEpTT2JqZWN0KiBjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKEV4ZWNTdGF0
ZSosIGNvbnN0IElkZW50aWZpZXImKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cE9iamVjdC5oCShyZXZpc2lvbiA4MjUxMykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICsz
MCw3IEBACiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIEpTT2JqZWN0V2l0aEdsb2JhbE9i
amVjdCBCYXNlOwogCi0gICAgICAgIFJlZ0V4cE9iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBOb25OdWxsUGFzc1JlZlB0cjxS
ZWdFeHA+KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVnRXhwT2JqZWN0KEpTR2xvYmFs
T2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgTm9uTnVsbFBhc3NSZWZQdHI8
UmVnRXhwPik7CiAgICAgICAgIHZpcnR1YWwgflJlZ0V4cE9iamVjdCgpOwogCiAgICAgICAgIHZv
aWQgc2V0UmVnRXhwKFBhc3NSZWZQdHI8UmVnRXhwPiByKSB7IGQtPnJlZ0V4cCA9IHI7IH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgJKHJldmlzaW9u
IDgyNTEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC00NSwxMiArNDUsMTIgQEAKICAgICAgICAgdHlwZWRlZiBKU09iamVj
dFdpdGhHbG9iYWxPYmplY3QgQmFzZTsKIAogICAgIHB1YmxpYzoKLSAgICAgICAgSlNGdW5jdGlv
bihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVy
ZT4sIGludCBsZW5ndGgsIGNvbnN0IElkZW50aWZpZXImLCBOYXRpdmVGdW5jdGlvbik7CisgICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTRnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmpl
Y3QqLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBpbnQgbGVuZ3RoLCBjb25zdCBJZGVu
dGlmaWVyJiwgTmF0aXZlRnVuY3Rpb24pOwogICAgICAgICBKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSos
IEpTR2xvYmFsT2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgaW50IGxlbmd0
aCwgY29uc3QgSWRlbnRpZmllciYsIE5hdGl2ZUV4ZWN1dGFibGUqKTsKICAgICAgICAgSlNGdW5j
dGlvbihFeGVjU3RhdGUqLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBTY29wZUNoYWluTm9kZSopOwog
ICAgICAgICB2aXJ0dWFsIH5KU0Z1bmN0aW9uKCk7CiAKLSAgICAgICAgY29uc3QgVVN0cmluZyYg
bmFtZShFeGVjU3RhdGUqKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgY29uc3QgVVN0cmlu
ZyYgbmFtZShFeGVjU3RhdGUqKTsKICAgICAgICAgY29uc3QgVVN0cmluZyBkaXNwbGF5TmFtZShF
eGVjU3RhdGUqKTsKICAgICAgICAgY29uc3QgVVN0cmluZyBjYWxjdWxhdGVkRGlzcGxheU5hbWUo
RXhlY1N0YXRlKik7CiAKQEAgLTg5LDcgKzg5LDcgQEAKICAgICBwcml2YXRlOgogICAgICAgICBK
U0Z1bmN0aW9uKE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIFZQdHJIYWNrRXhlY3V0YWJs
ZSopOwogCi0gICAgICAgIGJvb2wgaXNIb3N0RnVuY3Rpb25Ob25JbmxpbmUoKSBjb25zdDsKKyAg
ICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0hvc3RGdW5jdGlvbk5vbklubGluZSgpIGNv
bnN0OwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRl
KiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOwogICAgICAgICB2aXJ0dWFsIGJv
b2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXIm
LCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09iamVjdFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5oCShyZXZpc2lvbiA4MjUxMykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNiw3ICszNiw3IEBACiAgICAgICAgIGJvb2wgbV9oYXNOb1Byb3BlcnRpZXNXaXRoVUludDMy
TmFtZXM7CiAgICAgfTsKIAotICAgIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0
UHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3Rh
dGUqKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FyZ0xpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcmdMaXN0LmgJKHJldmlzaW9uIDgyNTEzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJnTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQsNyArMTQ0LDcgQEAK
ICAgICAgICAgc3RhdGljIHZvaWQgbWFya0xpc3RzKEhlYXBSb290TWFya2VyJiwgTGlzdFNldCYp
OwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCBzbG93QXBwZW5kKEpTVmFsdWUpOworICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNsb3dBcHBlbmQoSlNWYWx1ZSk7CiAgICAgICAg
IAogICAgICAgICBSZWdpc3RlciogbV9idWZmZXI7CiAgICAgICAgIHNpemVfdCBtX3NpemU7CkBA
IC0yMzQsNyArMjM0LDcgQEAKICAgICAgICAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7
IHJldHVybiBtX2FyZ3M7IH0KICAgICAgICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyBy
ZXR1cm4gbV9hcmdzICsgbV9hcmdDb3VudDsgfQogCi0gICAgICAgIHZvaWQgZ2V0U2xpY2UoaW50
IHN0YXJ0SW5kZXgsIEFyZ0xpc3QmIHJlc3VsdCkgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHZvaWQgZ2V0U2xpY2UoaW50IHN0YXJ0SW5kZXgsIEFyZ0xpc3QmIHJlc3VsdCkgY29u
c3Q7CiAgICAgcHJpdmF0ZToKICAgICAgICAgSlNWYWx1ZSogbV9hcmdzOwogICAgICAgICBzaXpl
X3QgbV9hcmdDb3VudDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJy
YXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
LmgJKHJldmlzaW9uIDgyNTEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
cnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw3ICs1Nyw4IEBACiAKICAgICBlbnVtIEFycmF5
Q3JlYXRpb25Nb2RlIHsgQ3JlYXRlQ29tcGFjdCwgQ3JlYXRlSW5pdGlhbGl6ZWQgfTsKIAotICAg
IGNsYXNzIEpTQXJyYXkgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CisgICAgY2xhc3MgSlNf
RVhQT1JUREFUQSBKU0FycmF5IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworICAgICAgICBm
cmllbmQgY2xhc3MgSklUOwogICAgICAgICBmcmllbmQgY2xhc3MgV2Fsa2VyOwogCiAgICAgcHVi
bGljOgpAQCAtNzQsNyArNzUsNyBAQAogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2Ny
aXB0b3ImKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHB1dChFeGVjU3RhdGUqLCB1bnNpZ25lZCBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUpOyAvLyBGSVhNRTogTWFrZSBwcm90ZWN0ZWQgYW5kIGFkZCBz
ZXRJdGVtLgogCi0gICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNzSW5mbyBz
X2luZm87CisgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogICAgICAgICAK
ICAgICAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9zdG9yYWdlLT5tX2xl
bmd0aDsgfQogICAgICAgICB2b2lkIHNldExlbmd0aCh1bnNpZ25lZCk7IC8vIE9LIHRvIHVzZSBv
biBuZXcgYXJyYXlzLCBidXQgbm90IGlmIGl0IG1pZ2h0IGJlIGEgUmVnRXhwTWF0Y2hBcnJheS4K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0
aW9uLmgJKHJldmlzaW9uIDgyNTEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50ZXJuYWxGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw5ICszMSw5IEBACiAKICAg
ICBjbGFzcyBGdW5jdGlvblByb3RvdHlwZTsKIAotICAgIGNsYXNzIEludGVybmFsRnVuY3Rpb24g
OiBwdWJsaWMgSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0IHsKKyAgICBjbGFzcyBKU19FWFBPUlRE
QVRBIEludGVybmFsRnVuY3Rpb24gOiBwdWJsaWMgSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0IHsK
ICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNzSW5m
byBzX2luZm87CisgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCiAgICAg
ICAgIGNvbnN0IFVTdHJpbmcmIG5hbWUoRXhlY1N0YXRlKik7CiAgICAgICAgIGNvbnN0IFVTdHJp
bmcgZGlzcGxheU5hbWUoRXhlY1N0YXRlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JZGVudGlmaWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSWRlbnRpZmllci5oCShyZXZpc2lvbiA4MjUxMykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsMTUgKzUz
LDE1IEBACiAgICAgICAgIAogICAgICAgICBDU3RyaW5nIGFzY2lpKCkgY29uc3QgeyByZXR1cm4g
bV9zdHJpbmcuYXNjaWkoKTsgfQogICAgICAgICAKLSAgICAgICAgc3RhdGljIElkZW50aWZpZXIg
ZnJvbShFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHkpOwotICAgICAgICBzdGF0aWMgSWRlbnRp
ZmllciBmcm9tKEV4ZWNTdGF0ZSogZXhlYywgaW50IHkpOwotICAgICAgICBzdGF0aWMgSWRlbnRp
ZmllciBmcm9tKEV4ZWNTdGF0ZSogZXhlYywgZG91YmxlIHkpOworICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgSWRlbnRpZmllciBmcm9tKEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHkpOwor
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSWRlbnRpZmllciBmcm9tKEV4ZWNTdGF0
ZSosIGludCB5KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIElkZW50aWZpZXIg
ZnJvbShFeGVjU3RhdGUqLCBkb3VibGUgeSk7CiAgICAgICAgIHN0YXRpYyBJZGVudGlmaWVyIGZy
b20oSlNHbG9iYWxEYXRhKiwgdW5zaWduZWQgeSk7CiAgICAgICAgIHN0YXRpYyBJZGVudGlmaWVy
IGZyb20oSlNHbG9iYWxEYXRhKiwgaW50IHkpOwogICAgICAgICBzdGF0aWMgSWRlbnRpZmllciBm
cm9tKEpTR2xvYmFsRGF0YSosIGRvdWJsZSB5KTsKIAotICAgICAgICBzdGF0aWMgdWludDMyX3Qg
dG9VSW50MzIoY29uc3QgVVN0cmluZyYsIGJvb2wmIG9rKTsKLSAgICAgICAgdWludDMyX3QgdG9V
SW50MzIoYm9vbCYgb2spIGNvbnN0IHsgcmV0dXJuIHRvVUludDMyKG1fc3RyaW5nLCBvayk7IH0K
KyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHVpbnQzMl90IHRvVUludDMyKGNvbnN0
IFVTdHJpbmcmLCBib29sJiBvayk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHVpbnQzMl90
IHRvVUludDMyKGJvb2wmIG9rKSBjb25zdCB7IHJldHVybiB0b1VJbnQzMihtX3N0cmluZywgb2sp
OyB9CiAgICAgICAgIHVuc2lnbmVkIHRvQXJyYXlJbmRleChib29sJiBvaykgY29uc3Q7CiAKICAg
ICAgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5pc051bGwoKTsgfQpA
QCAtNzMsMTIgKzczLDEyIEBACiAgICAgICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3Qg
SWRlbnRpZmllciYsIGNvbnN0IGNoYXIqKTsKICAgICAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgY2hhciopOwogICAgIAotICAgICAgICBzdGF0aWMg
Ym9vbCBlcXVhbChjb25zdCBTdHJpbmdJbXBsKiwgY29uc3QgY2hhciopOwotICAgICAgICBzdGF0
aWMgYm9vbCBlcXVhbChjb25zdCBTdHJpbmdJbXBsKiwgY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBs
ZW5ndGgpOwotICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBTdHJpbmdJbXBsKiBhLCBj
b25zdCBTdHJpbmdJbXBsKiBiKSB7IHJldHVybiA6OmVxdWFsKGEsIGIpOyB9CisgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqLCBjb25z
dCBjaGFyKik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGVxdWFsKGNv
bnN0IFN0cmluZ0ltcGwqLCBjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqIGEs
IGNvbnN0IFN0cmluZ0ltcGwqIGIpIHsgcmV0dXJuIDo6ZXF1YWwoYSwgYik7IH0KIAotICAgICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGQoRXhlY1N0YXRlKiwgY29uc3QgY2hh
ciopOyAvLyBPbmx5IHRvIGJlIHVzZWQgd2l0aCBzdHJpbmcgbGl0ZXJhbHMuCi0gICAgICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChKU0dsb2JhbERhdGEqLCBjb25zdCBjaGFy
Kik7IC8vIE9ubHkgdG8gYmUgdXNlZCB3aXRoIHN0cmluZyBsaXRlcmFscy4KKyAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRkKEV4ZWNTdGF0
ZSosIGNvbnN0IGNoYXIqKTsgLy8gT25seSB0byBiZSB1c2VkIHdpdGggc3RyaW5nIGxpdGVyYWxz
LgorICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBs
PiBhZGQoSlNHbG9iYWxEYXRhKiwgY29uc3QgY2hhciopOyAvLyBPbmx5IHRvIGJlIHVzZWQgd2l0
aCBzdHJpbmcgbGl0ZXJhbHMuCiAKICAgICBwcml2YXRlOgogICAgICAgICBVU3RyaW5nIG1fc3Ry
aW5nOwpAQCAtMTA4LDEwICsxMDgsMTAgQEAKICAgICAgICAgICAgIHJldHVybiBhZGRTbG93Q2Fz
ZShnbG9iYWxEYXRhLCByKTsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFN0cmluZ0ltcGw+IGFkZFNsb3dDYXNlKEV4ZWNTdGF0ZSosIFN0cmluZ0ltcGwqIHIpOwotICAg
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGRTbG93Q2FzZShKU0dsb2JhbERh
dGEqLCBTdHJpbmdJbXBsKiByKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBh
c3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRkU2xvd0Nhc2UoRXhlY1N0YXRlKiwgU3RyaW5nSW1wbCop
OworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGRTbG93Q2FzZShKU0ds
b2JhbERhdGEqLCBTdHJpbmdJbXBsKik7CiAKLSAgICAgICAgc3RhdGljIHZvaWQgY2hlY2tDdXJy
ZW50SWRlbnRpZmllclRhYmxlKEV4ZWNTdGF0ZSopOworICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgdm9pZCBjaGVja0N1cnJlbnRJZGVudGlmaWVyVGFibGUoRXhlY1N0YXRlKik7CiAg
ICAgICAgIHN0YXRpYyB2b2lkIGNoZWNrQ3VycmVudElkZW50aWZpZXJUYWJsZShKU0dsb2JhbERh
dGEqKTsKICAgICB9OwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RyaW5nT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaW5nT2JqZWN0LmgJKHJldmlzaW9uIDgyNTEzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcg
QEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLSAgICBjbGFzcyBTdHJpbmdPYmplY3QgOiBwdWJsaWMg
SlNXcmFwcGVyT2JqZWN0IHsKKyAgICBjbGFzcyBKU19FWFBPUlREQVRBIFN0cmluZ09iamVjdCA6
IHB1YmxpYyBKU1dyYXBwZXJPYmplY3QgewogICAgIHB1YmxpYzoKICAgICAgICAgU3RyaW5nT2Jq
ZWN0KEV4ZWNTdGF0ZSosIE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4pOwogICAgICAgICBT
dHJpbmdPYmplY3QoRXhlY1N0YXRlKiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgY29u
c3QgVVN0cmluZyYpOwpAQCAtNDEsNyArNDEsNyBAQAogICAgICAgICB2aXJ0dWFsIGJvb2wgZGVs
ZXRlUHJvcGVydHkoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsK
ICAgICAgICAgdmlydHVhbCB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSA9IEV4Y2x1ZGVEb250RW51bVBy
b3BlcnRpZXMpOwogCi0gICAgICAgIHN0YXRpYyBjb25zdCBKU19FWFBPUlREQVRBIENsYXNzSW5m
byBzX2luZm87CisgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCiAgICAg
ICAgIEpTU3RyaW5nKiBpbnRlcm5hbFZhbHVlKCkgY29uc3QgeyByZXR1cm4gYXNTdHJpbmcoSlNX
cmFwcGVyT2JqZWN0OjppbnRlcm5hbFZhbHVlKCkpO30KIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJheS5oCShyZXZpc2lvbiA4MjUxMykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5LmgJKHdvcmtpbmcgY29weSkKQEAg
LTc1LDggKzc1LDggQEAKICAgICAgICAgICAgICAgICBzZXRJbmRleChpLCBieXRlVmFsdWUpOwog
ICAgICAgICB9CiAKLSAgICAgICAgSlNCeXRlQXJyYXkoRXhlY1N0YXRlKiwgTm9uTnVsbFBhc3NS
ZWZQdHI8U3RydWN0dXJlPiwgV1RGOjpCeXRlQXJyYXkqIHN0b3JhZ2UpOwotICAgICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmLCBK
U1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgSlNDOjpDbGFzc0luZm8qID0gJnNfZGVmYXVsdEluZm8p
OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBKU0J5dGVBcnJheShFeGVjU3RhdGUqLCBOb25O
dWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBXVEY6OkJ5dGVBcnJheSogc3RvcmFnZSk7CisgICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRl
U3RydWN0dXJlKEpTR2xvYmFsRGF0YSYsIEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBKU0M6OkNs
YXNzSW5mbyogPSAmc19kZWZhdWx0SW5mbyk7CiAKICAgICAgICAgdmlydHVhbCBib29sIGdldE93
blByb3BlcnR5U2xvdChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0
T3duUHJvcGVydHlTbG90KEpTQzo6RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBK
U0M6OlByb3BlcnR5U2xvdCYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TG9va3VwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9v
a3VwLmgJKHJldmlzaW9uIDgyNTEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TG9va3VwLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0MCw3ICsxNDAsNyBAQAogICAgICAgICAgICAg
ICAgIGNyZWF0ZVRhYmxlKCZleGVjLT5nbG9iYWxEYXRhKCkpOwogICAgICAgICB9CiAKLSAgICAg
ICAgdm9pZCBkZWxldGVUYWJsZSgpIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2
b2lkIGRlbGV0ZVRhYmxlKCkgY29uc3Q7CiAKICAgICAgICAgLy8gRmluZCBhbiBlbnRyeSBpbiB0
aGUgdGFibGUsIGFuZCByZXR1cm4gdGhlIGVudHJ5LgogICAgICAgICBBTFdBWVNfSU5MSU5FIGNv
bnN0IEhhc2hFbnRyeSogZW50cnkoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBJZGVu
dGlmaWVyJiBpZGVudGlmaWVyKSBjb25zdApAQCAtMTc1LDEwICsxNzUsMTAgQEAKICAgICAgICAg
fQogCiAgICAgICAgIC8vIENvbnZlcnQgdGhlIGhhc2ggdGFibGUga2V5cyB0byBpZGVudGlmaWVy
cy4KLSAgICAgICAgdm9pZCBjcmVhdGVUYWJsZShKU0dsb2JhbERhdGEqKSBjb25zdDsKKyAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBjcmVhdGVUYWJsZShKU0dsb2JhbERhdGEqKSBjb25z
dDsKICAgICB9OwogCi0gICAgdm9pZCBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChFeGVjU3RhdGUq
LCBjb25zdCBIYXNoRW50cnkqLCBKU09iamVjdCogdGhpc09iamVjdCwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2
b2lkIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSosIGNvbnN0IEhhc2hFbnRyeSos
IEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYpOwogCiAgICAgLyoqCiAgICAgICogVGhpcyBtZXRob2QgZG9lcyBpdCBhbGwg
KGxvb2tpbmcgaW4gdGhlIGhhc2h0YWJsZSwgY2hlY2tpbmcgZm9yIGZ1bmN0aW9uCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oCShy
ZXZpc2lvbiA4MjUxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFi
bGVPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQAogCiAgICAgY2xhc3Mg
UmVnaXN0ZXI7CiAKLSAgICBjbGFzcyBKU1ZhcmlhYmxlT2JqZWN0IDogcHVibGljIEpTTm9uRmlu
YWxPYmplY3QgeworICAgIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFyaWFibGVPYmplY3Qg
OiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAK
ICAgICBwdWJsaWM6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0
aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxl
dGlvbi5oCShyZXZpc2lvbiA4MjUxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbXBsZXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNTUsOCArNTUsOCBAQAogICAgICAgICBK
U1ZhbHVlIG1fdmFsdWU7CiAgICAgfTsKIAotICAgIENvbXBsZXRpb24gY2hlY2tTeW50YXgoRXhl
Y1N0YXRlKiwgY29uc3QgU291cmNlQ29kZSYpOwotICAgIENvbXBsZXRpb24gZXZhbHVhdGUoRXhl
Y1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBKU1ZhbHVlKCkpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIENvbXBsZXRpb24gY2hl
Y2tTeW50YXgoRXhlY1N0YXRlKiwgY29uc3QgU291cmNlQ29kZSYpOworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIENvbXBsZXRpb24gZXZhbHVhdGUoRXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqLCBj
b25zdCBTb3VyY2VDb2RlJiwgSlNWYWx1ZSB0aGlzVmFsdWUgPSBKU1ZhbHVlKCkpOwogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
ZWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxs
LmgJKHJldmlzaW9uIDgyNTEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
ZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTcxLDggKzcxLDggQEAKICAgICAgICAgZnJpZW5kIGNs
YXNzIFN0cnVjdHVyZUNoYWluOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgZXhwbGljaXQgSlND
ZWxsKFN0cnVjdHVyZSopOwotICAgICAgICB2aXJ0dWFsIH5KU0NlbGwoKTsKKyAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgZXhwbGljaXQgSlNDZWxsKFN0cnVjdHVyZSopOworICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSB2aXJ0dWFsIH5KU0NlbGwoKTsKIAogICAgIHB1YmxpYzoKICAgICAgICAg
c3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVEdW1teVN0cnVjdHVyZShKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEpCkBAIC04MSw5ICs4MSw5IEBACiAgICAgICAgIH0KIAogICAgICAg
ICAvLyBRdWVyeWluZyB0aGUgdHlwZS4KLSAgICAgICAgYm9vbCBpc1N0cmluZygpIGNvbnN0Owot
ICAgICAgICBib29sIGlzT2JqZWN0KCkgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBpc0dl
dHRlclNldHRlcigpIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGlzU3Ry
aW5nKCkgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNPYmplY3QoKSBj
b25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCBib29sIGlzR2V0dGVyU2V0
dGVyKCkgY29uc3Q7CiAgICAgICAgIGJvb2wgaW5oZXJpdHMoY29uc3QgQ2xhc3NJbmZvKikgY29u
c3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0FQSVZhbHVlV3JhcHBlcigpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1Byb3BlcnR5TmFtZUl0ZXJhdG9y
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTkxLDI1ICs5MSwyNSBAQAogICAgICAgICBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSgpIGNvbnN0OwogCiAgICAgICAgIC8vIEV4dHJhY3RpbmcgdGhl
IHZhbHVlLgotICAgICAgICBib29sIGdldFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIFVTdHJpbmcm
KSBjb25zdDsKLSAgICAgICAgVVN0cmluZyBnZXRTdHJpbmcoRXhlY1N0YXRlKiBleGVjKSBjb25z
dDsgLy8gbnVsbCBzdHJpbmcgaWYgbm90IGEgc3RyaW5nCi0gICAgICAgIEpTT2JqZWN0KiBnZXRP
YmplY3QoKTsgLy8gTlVMTCBpZiBub3QgYW4gb2JqZWN0Ci0gICAgICAgIGNvbnN0IEpTT2JqZWN0
KiBnZXRPYmplY3QoKSBjb25zdDsgLy8gTlVMTCBpZiBub3QgYW4gb2JqZWN0CisgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIGJvb2wgZ2V0U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgVVN0cmluZyYp
IGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBVU3RyaW5nIGdldFN0cmluZyhFeGVj
U3RhdGUqIGV4ZWMpIGNvbnN0OyAvLyBudWxsIHN0cmluZyBpZiBub3QgYSBzdHJpbmcKKyAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIGdldE9iamVjdCgpOyAvLyAwIGlmIG5vdCBh
biBvYmplY3QKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgY29uc3QgSlNPYmplY3QqIGdldE9i
amVjdCgpIGNvbnN0OyAvLyAwIGlmIG5vdCBhbiBvYmplY3QKICAgICAgICAgCi0gICAgICAgIHZp
cnR1YWwgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoQ2FsbERhdGEmKTsKLSAgICAgICAgdmlydHVhbCBD
b25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoQ29uc3RydWN0RGF0YSYpOworICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIENhbGxUeXBlIGdldENhbGxEYXRhKENhbGxEYXRhJik7
CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgQ29uc3RydWN0VHlwZSBnZXRDb25z
dHJ1Y3REYXRhKENvbnN0cnVjdERhdGEmKTsKIAogICAgICAgICAvLyBFeHRyYWN0aW5nIGludGVn
ZXIgdmFsdWVzLgogICAgICAgICAvLyBGSVhNRTogcmVtb3ZlIHRoZXNlIG1ldGhvZHMsIGNhbiBj
aGVjayBpc051bWJlckNlbGwgaW4gSlNWYWx1ZSAmJiB0aGVuIGNhbGwgYXNOdW1iZXJDZWxsOjoq
LgotICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0VUludDMyKHVpbnQzMl90JikgY29uc3Q7CisgICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgYm9vbCBnZXRVSW50MzIodWludDMyX3QmKSBj
b25zdDsKIAogICAgICAgICAvLyBCYXNpYyBjb252ZXJzaW9ucy4KLSAgICAgICAgdmlydHVhbCBK
U1ZhbHVlIHRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpIGNv
bnN0OwotICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0UHJpbWl0aXZlTnVtYmVyKEV4ZWNTdGF0ZSos
IGRvdWJsZSYgbnVtYmVyLCBKU1ZhbHVlJik7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCB0b0Jvb2xl
YW4oRXhlY1N0YXRlKikgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgZG91YmxlIHRvTnVtYmVyKEV4
ZWNTdGF0ZSopIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIFVTdHJpbmcgdG9TdHJpbmcoRXhlY1N0
YXRlKikgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgSlNPYmplY3QqIHRvT2JqZWN0KEV4ZWNTdGF0
ZSosIEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZp
cnR1YWwgSlNWYWx1ZSB0b1ByaW1pdGl2ZShFeGVjU3RhdGUqLCBQcmVmZXJyZWRQcmltaXRpdmVU
eXBlKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCBib29sIGdldFBy
aW1pdGl2ZU51bWJlcihFeGVjU3RhdGUqLCBkb3VibGUmIG51bWJlciwgSlNWYWx1ZSYpOworICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIGJvb2wgdG9Cb29sZWFuKEV4ZWNTdGF0ZSop
IGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIGRvdWJsZSB0b051bWJl
cihFeGVjU3RhdGUqKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCBV
U3RyaW5nIHRvU3RyaW5nKEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJ
VkFURSB2aXJ0dWFsIEpTT2JqZWN0KiB0b09iamVjdChFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVj
dCopIGNvbnN0OwogCiAgICAgICAgIC8vIEdhcmJhZ2UgY29sbGVjdGlvbi4KICAgICAgICAgdm9p
ZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgRXhlY1N0YXRlKik7CkBAIC0xMjIsMTYgKzEyMiwxNiBA
QAogI2VuZGlmCiAKICAgICAgICAgLy8gT2JqZWN0IG9wZXJhdGlvbnMsIHdpdGggdGhlIHRvT2Jq
ZWN0IG9wZXJhdGlvbiBpbmNsdWRlZC4KLSAgICAgICAgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0lu
Zm8oKSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVyZS0+Y2xhc3NJbmZvKCk7IH0KLSAgICAgICAg
dmlydHVhbCB2b2lkIHB1dChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcHV0
KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSk7Ci0gICAgICAgIHZp
cnR1YWwgYm9vbCBkZWxldGVQcm9wZXJ0eShFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUpOwotICAgICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0
YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
Y29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8oKSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVyZS0+
Y2xhc3NJbmZvKCk7IH0KKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCB2b2lkIHB1
dChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIHZvaWQg
cHV0KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSk7CisgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgYm9vbCBkZWxldGVQcm9wZXJ0eShFeGVjU3RhdGUq
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOworICAgICAgICBKU19FWFBPUlRfUFJJ
VkFURSB2aXJ0dWFsIGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJv
cGVydHlOYW1lKTsKIAotICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiB0b1RoaXNPYmplY3QoRXhl
Y1N0YXRlKikgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgSlNWYWx1ZSBnZXRKU051bWJlcigpOwot
ICAgICAgICB2b2lkKiB2cHRyKCkgeyByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPih0
aGlzKTsgfQotICAgICAgICB2b2lkIHNldFZQdHIodm9pZCogdnB0cikgeyAqcmVpbnRlcnByZXRf
Y2FzdDx2b2lkKio+KHRoaXMpID0gdnB0cjsgfQorICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2
aXJ0dWFsIEpTT2JqZWN0KiB0b1RoaXNPYmplY3QoRXhlY1N0YXRlKikgY29uc3Q7CisgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgSlNWYWx1ZSBnZXRKU051bWJlcigpOworICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSB2b2lkKiB2cHRyKCkgeyByZXR1cm4gKnJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCoqPih0aGlzKTsgfQorICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldFZQ
dHIodm9pZCogdnB0cikgeyAqcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KHRoaXMpID0gdnB0cjsg
fQogCiAgICAgICAgIC8vIEZJWE1FOiBSZW5hbWUgZ2V0T3duUHJvcGVydHlTbG90IHRvIHZpcnR1
YWxHZXRPd25Qcm9wZXJ0eVNsb3QsIGFuZAogICAgICAgICAvLyBmYXN0R2V0T3duUHJvcGVydHlT
bG90IHRvIGdldE93blByb3BlcnR5U2xvdC4gQ2FsbGVycyBzaG91bGQgYWx3YXlzCkBAIC0xNTQs
OCArMTU0LDggQEAKIAogICAgIHByaXZhdGU6CiAgICAgICAgIC8vIEJhc2UgaW1wbGVtZW50YXRp
b247IGZvciBub24tb2JqZWN0IGNsYXNzZXMgaW1wbGVtZW50cyBnZXRQcm9wZXJ0eVNsb3QuCi0g
ICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgdmlydHVh
bCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIGJv
b2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1
YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgCiAgICAgICAgIFN0cnVjdHVyZSogbV9zdHJ1
Y3R1cmU7CiAgICAgfTsKQEAgLTE3NCw3ICsxNzQsNyBAQAogICAgICAgICByZXR1cm4gbV9zdHJ1
Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IE9iamVjdFR5cGU7CiAgICAgfQogCi0gICAgaW5s
aW5lIGJvb2wgSlNDZWxsOjppc1N0cmluZygpIGNvbnN0CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
aW5saW5lIGJvb2wgSlNDZWxsOjppc1N0cmluZygpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1
cm4gbV9zdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IFN0cmluZ1R5cGU7CiAgICAgfQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmgJKHJldmlzaW9uIDgyNTEz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTU2LDcgKzU2LDcgQEAKICAgICBjbGFzcyBKU0xvY2sgewogICAgICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShKU0xvY2spOwogICAgIHB1YmxpYzoKLSAgICAgICAgSlNMb2NrKEV4ZWNT
dGF0ZSopOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBKU0xvY2soRXhlY1N0YXRlKik7CiAg
ICAgICAgIEpTTG9jayhKU0dsb2JhbERhdGEqKTsKIAogICAgICAgICBKU0xvY2soSlNMb2NrQmVo
YXZpb3IgbG9ja0JlaGF2aW9yKQpAQCAtODAsMTMgKzgwLDEzIEBACiAgICAgICAgICAgICB1bmxv
Y2sobV9sb2NrQmVoYXZpb3IpOyAKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgc3RhdGlj
IHZvaWQgbG9jayhKU0xvY2tCZWhhdmlvcik7Ci0gICAgICAgIHN0YXRpYyB2b2lkIHVubG9jayhK
U0xvY2tCZWhhdmlvcik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGxv
Y2soSlNMb2NrQmVoYXZpb3IpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9p
ZCB1bmxvY2soSlNMb2NrQmVoYXZpb3IpOwogICAgICAgICBzdGF0aWMgdm9pZCBsb2NrKEV4ZWNT
dGF0ZSopOwogICAgICAgICBzdGF0aWMgdm9pZCB1bmxvY2soRXhlY1N0YXRlKik7CiAKLSAgICAg
ICAgc3RhdGljIGludHB0cl90IGxvY2tDb3VudCgpOwotICAgICAgICBzdGF0aWMgYm9vbCBjdXJy
ZW50VGhyZWFkSXNIb2xkaW5nTG9jaygpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgaW50cHRyX3QgbG9ja0NvdW50KCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBib29sIGN1cnJlbnRUaHJlYWRJc0hvbGRpbmdMb2NrKCk7CiAKICAgICAgICAgSlNMb2NrQmVo
YXZpb3IgbV9sb2NrQmVoYXZpb3I7CiAKQEAgLTk0LDggKzk0LDggQEAKICAgICAgICAgICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKERyb3BBbGxMb2Nrcyk7CiAgICAgICAgIHB1YmxpYzoKICAgICAg
ICAgICAgIERyb3BBbGxMb2NrcyhFeGVjU3RhdGUqIGV4ZWMpOwotICAgICAgICAgICAgRHJvcEFs
bExvY2tzKEpTTG9ja0JlaGF2aW9yKTsKLSAgICAgICAgICAgIH5Ecm9wQWxsTG9ja3MoKTsKKyAg
ICAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIERyb3BBbGxMb2NrcyhKU0xvY2tCZWhhdmlvcik7
CisgICAgICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB+RHJvcEFsbExvY2tzKCk7CiAgICAgICAg
ICAgICAKICAgICAgICAgcHJpdmF0ZToKICAgICAgICAgICAgIGludHB0cl90IG1fbG9ja0NvdW50
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgJ
KHJldmlzaW9uIDgyNTEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVy
dHlTbG90LmgJKHdvcmtpbmcgY29weSkKQEAgLTIyMCw3ICsyMjAsNyBAQAogICAgICAgICAgICAg
cmV0dXJuIG1fZ2V0VmFsdWU7CiAgICAgICAgIH0KICAgICBwcml2YXRlOgotICAgICAgICBKU1Zh
bHVlIGZ1bmN0aW9uR2V0dGVyKEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSBKU1ZhbHVlIGZ1bmN0aW9uR2V0dGVyKEV4ZWNTdGF0ZSopIGNvbnN0OwogCiAgICAg
ICAgIEdldFZhbHVlRnVuYyBtX2dldFZhbHVlOwogICAgICAgICBHZXRJbmRleFZhbHVlRnVuYyBt
X2dldEluZGV4VmFsdWU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5j
dGlvbkNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCShyZXZpc2lvbiA4MjUxMykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5
KQpAQCAtMzYsNyArMzYsNyBAQAogICAgICAgICB2aXJ0dWFsIENhbGxUeXBlIGdldENhbGxEYXRh
KENhbGxEYXRhJik7CiAgICAgfTsKIAotICAgIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihF
eGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IEFyZ0xpc3QmLCBjb25zdCBJZGVudGlm
aWVyJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFVTdHJpbmcmIHNvdXJjZVVSTCwgaW50IGxpbmVOdW1i
ZXIpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihF
eGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IEFyZ0xpc3QmLCBjb25zdCBJZGVudGlm
aWVyJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFVTdHJpbmcmIHNvdXJjZVVSTCwgaW50IGxpbmVOdW1i
ZXIpOwogICAgIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqLCBKU0dsb2Jh
bE9iamVjdCosIGNvbnN0IEFyZ0xpc3QmKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3MuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3MuaAkocmV2aXNpb24g
ODI1MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3MuaAko
d29ya2luZyBjb3B5KQpAQCAtNzMsOCArNzMsOCBAQAogICAgIHByaXZhdGU6CiAgICAgICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBzaW5nbGVDaGFyYWN0ZXJTdHJpbmdDb3VudCA9IG1heFNpbmds
ZUNoYXJhY3RlclN0cmluZyArIDE7CiAKLSAgICAgICAgdm9pZCBjcmVhdGVFbXB0eVN0cmluZyhK
U0dsb2JhbERhdGEqKTsKLSAgICAgICAgdm9pZCBjcmVhdGVTaW5nbGVDaGFyYWN0ZXJTdHJpbmco
SlNHbG9iYWxEYXRhKiwgdW5zaWduZWQgY2hhcik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IHZvaWQgY3JlYXRlRW1wdHlTdHJpbmcoSlNHbG9iYWxEYXRhKik7CisgICAgICAgIEpTX0VYUE9S
VF9QUklWQVRFIHZvaWQgY3JlYXRlU2luZ2xlQ2hhcmFjdGVyU3RyaW5nKEpTR2xvYmFsRGF0YSos
IHVuc2lnbmVkIGNoYXIpOwogCiAgICAgICAgIEpTU3RyaW5nKiBtX2VtcHR5U3RyaW5nOwogICAg
ICAgICBKU1N0cmluZyogbV9zaW5nbGVDaGFyYWN0ZXJTdHJpbmdzW3NpbmdsZUNoYXJhY3RlclN0
cmluZ0NvdW50XTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5
TmFtZUFycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UHJvcGVydHlOYW1lQXJyYXkuaAkocmV2aXNpb24gODI1MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCw4
ICs2OCw4IEBACiAKICAgICAgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKCkgeyByZXR1cm4g
bV9nbG9iYWxEYXRhOyB9CiAKLSAgICAgICAgdm9pZCBhZGQoY29uc3QgSWRlbnRpZmllciYgaWRl
bnRpZmllcikgeyBhZGQoaWRlbnRpZmllci5pbXBsKCkpOyB9Ci0gICAgICAgIHZvaWQgYWRkKFN0
cmluZ0ltcGwqKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBhZGQoY29uc3QgSWRl
bnRpZmllciYgaWRlbnRpZmllcikgeyBhZGQoaWRlbnRpZmllci5pbXBsKCkpOyB9CisgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgYWRkKFN0cmluZ0ltcGwqKTsKICAgICAgICAgdm9pZCBh
ZGRLbm93blVuaXF1ZShTdHJpbmdJbXBsKiBpZGVudGlmaWVyKSB7IG1fZGF0YS0+cHJvcGVydHlO
YW1lVmVjdG9yKCkuYXBwZW5kKElkZW50aWZpZXIobV9nbG9iYWxEYXRhLCBpZGVudGlmaWVyKSk7
IH0KIAogICAgICAgICBJZGVudGlmaWVyJiBvcGVyYXRvcltdKHVuc2lnbmVkIGkpIHsgcmV0dXJu
IG1fZGF0YS0+cHJvcGVydHlOYW1lVmVjdG9yKClbaV07IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Vycm9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXJyb3IuaAkocmV2aXNpb24gODI1MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FcnJvci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSwxMiArNDUsMTIgQEAK
ICAgICBKU09iamVjdCogY3JlYXRlVHlwZUVycm9yKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgVVN0
cmluZyYpOwogICAgIEpTT2JqZWN0KiBjcmVhdGVVUklFcnJvcihKU0dsb2JhbE9iamVjdCosIGNv
bnN0IFVTdHJpbmcmKTsKICAgICAvLyBFeGVjU3RhdGUgd3JhcHBlcnMuCi0gICAgSlNPYmplY3Qq
IGNyZWF0ZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmKTsKKyAgICBKU19FWFBPUlRf
UFJJVkFURSBKU09iamVjdCogY3JlYXRlRXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYp
OwogICAgIEpTT2JqZWN0KiBjcmVhdGVFdmFsRXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmlu
ZyYpOwotICAgIEpTT2JqZWN0KiBjcmVhdGVSYW5nZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFVT
dHJpbmcmKTsKLSAgICBKU09iamVjdCogY3JlYXRlUmVmZXJlbmNlRXJyb3IoRXhlY1N0YXRlKiwg
Y29uc3QgVVN0cmluZyYpOwotICAgIEpTT2JqZWN0KiBjcmVhdGVTeW50YXhFcnJvcihFeGVjU3Rh
dGUqLCBjb25zdCBVU3RyaW5nJik7Ci0gICAgSlNPYmplY3QqIGNyZWF0ZVR5cGVFcnJvcihFeGVj
U3RhdGUqLCBjb25zdCBVU3RyaW5nJik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3Qq
IGNyZWF0ZVJhbmdlRXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYpOworICAgIEpTX0VY
UE9SVF9QUklWQVRFIEpTT2JqZWN0KiBjcmVhdGVSZWZlcmVuY2VFcnJvcihFeGVjU3RhdGUqLCBj
b25zdCBVU3RyaW5nJik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIGNyZWF0ZVN5
bnRheEVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmKTsKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSBKU09iamVjdCogY3JlYXRlVHlwZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcm
KTsKICAgICBKU09iamVjdCogY3JlYXRlVVJJRXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmlu
ZyYpOwogCiAgICAgLy8gTWV0aG9kcyB0byBhZGQgCkBAIC02MCwxMiArNjAsMTIgQEAKICAgICBK
U09iamVjdCogYWRkRXJyb3JJbmZvKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiBlcnJvciwgaW50IGxp
bmUsIGNvbnN0IFNvdXJjZUNvZGUmKTsKIAogICAgIC8vIE1ldGhvZHMgdG8gdGhyb3cgRXJyb3Jz
LgotICAgIEpTVmFsdWUgdGhyb3dFcnJvcihFeGVjU3RhdGUqLCBKU1ZhbHVlKTsKLSAgICBKU09i
amVjdCogdGhyb3dFcnJvcihFeGVjU3RhdGUqLCBKU09iamVjdCopOworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIEpTVmFsdWUgdGhyb3dFcnJvcihFeGVjU3RhdGUqLCBKU1ZhbHVlKTsKKyAgICBKU19F
WFBPUlRfUFJJVkFURSBKU09iamVjdCogdGhyb3dFcnJvcihFeGVjU3RhdGUqLCBKU09iamVjdCop
OwogCiAgICAgLy8gQ29udmVuaWVuY2Ugd3JhcHBlcnMsIGNyZWF0ZSBhbiB0aHJvdyBhbiBleGNl
cHRpb24gd2l0aCBhIGRlZmF1bHQgbWVzc2FnZS4KLSAgICBKU09iamVjdCogdGhyb3dUeXBlRXJy
b3IoRXhlY1N0YXRlKik7Ci0gICAgSlNPYmplY3QqIHRocm93U3ludGF4RXJyb3IoRXhlY1N0YXRl
Kik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93VHlwZUVycm9yKEV4ZWNT
dGF0ZSopOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd1N5bnRheEVycm9y
KEV4ZWNTdGF0ZSopOwogCiAgICAgLy8gQ29udmVuaWVuY2Ugd3JhcHBlcnMsIHdyYXAgcmVzdWx0
IGFzIGFuIEVuY29kZWRKU1ZhbHVlLgogICAgIGlubGluZSBFbmNvZGVkSlNWYWx1ZSB0aHJvd1ZN
RXJyb3IoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGVycm9yKSB7IHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodGhyb3dFcnJvcihleGVjLCBlcnJvcikpOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9VU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVVN0cmluZy5oCShyZXZpc2lvbiA4MjUxMykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsMjQgKzMwLDI0
IEBACiBjbGFzcyBVU3RyaW5nIHsKIHB1YmxpYzoKICAgICAvLyBDb25zdHJ1Y3QgYSBudWxsIHN0
cmluZywgZGlzdGluZ3Vpc2hhYmxlIGZyb20gYW4gZW1wdHkgc3RyaW5nLgotICAgIFVTdHJpbmco
KSB7IH0KKyAgICBKU19FWFBPUlRfUFJJVkFURSBVU3RyaW5nKCkgeyB9CiAKICAgICAvLyBDb25z
dHJ1Y3QgYSBzdHJpbmcgd2l0aCBVVEYtMTYgZGF0YS4KLSAgICBVU3RyaW5nKGNvbnN0IFVDaGFy
KiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIFVT
dHJpbmcoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCk7CiAKICAgICAv
LyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBVVEYtMTYgZGF0YSwgZnJvbSBhIG51bGwtdGVybWlu
YXRlZCBzb3VyY2UuCi0gICAgVVN0cmluZyhjb25zdCBVQ2hhciopOworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIFVTdHJpbmcoY29uc3QgVUNoYXIqKTsKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmlu
ZyB3aXRoIGxhdGluMSBkYXRhLgotICAgIFVTdHJpbmcoY29uc3QgY2hhciogY2hhcmFjdGVycywg
dW5zaWduZWQgbGVuZ3RoKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBVU3RyaW5nKGNvbnN0IGNo
YXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCk7CiAKICAgICAvLyBDb25zdHJ1Y3QgYSBz
dHJpbmcgd2l0aCBsYXRpbjEgZGF0YSwgZnJvbSBhIG51bGwtdGVybWluYXRlZCBzb3VyY2UuCi0g
ICAgVVN0cmluZyhjb25zdCBjaGFyKiBjaGFyYWN0ZXJzKTsKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSBVU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOwogCiAgICAgLy8gQ29uc3RydWN0IGEg
c3RyaW5nIHJlZmVyZW5jaW5nIGFuIGV4aXN0aW5nIFN0cmluZ0ltcGwuCi0gICAgVVN0cmluZyhT
dHJpbmdJbXBsKiBpbXBsKSA6IG1faW1wbChpbXBsKSB7IH0KLSAgICBVU3RyaW5nKFBhc3NSZWZQ
dHI8U3RyaW5nSW1wbD4gaW1wbCkgOiBtX2ltcGwoaW1wbCkgeyB9Ci0gICAgVVN0cmluZyhSZWZQ
dHI8U3RyaW5nSW1wbD4gaW1wbCkgOiBtX2ltcGwoaW1wbCkgeyB9CisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgVVN0cmluZyhTdHJpbmdJbXBsKiBpbXBsKSA6IG1faW1wbChpbXBsKSB7IH0KKyAgICBK
U19FWFBPUlRfUFJJVkFURSBVU3RyaW5nKFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gaW1wbCkgOiBt
X2ltcGwoaW1wbCkgeyB9CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgVVN0cmluZyhSZWZQdHI8U3Ry
aW5nSW1wbD4gaW1wbCkgOiBtX2ltcGwoaW1wbCkgeyB9CiAKICAgICAvLyBJbmxpbmUgdGhlIGRl
c3RydWN0b3IuCiAgICAgQUxXQVlTX0lOTElORSB+VVN0cmluZygpIHsgfQpAQCAtNzYsOSArNzYs
OSBAQAogICAgICAgICByZXR1cm4gbV9pbXBsLT5jaGFyYWN0ZXJzKCk7CiAgICAgfQogCi0gICAg
Q1N0cmluZyBhc2NpaSgpIGNvbnN0OwotICAgIENTdHJpbmcgbGF0aW4xKCkgY29uc3Q7Ci0gICAg
Q1N0cmluZyB1dGY4KGJvb2wgc3RyaWN0ID0gZmFsc2UpIGNvbnN0OworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIENTdHJpbmcgYXNjaWkoKSBjb25zdDsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBDU3Ry
aW5nIGxhdGluMSgpIGNvbnN0OworICAgIEpTX0VYUE9SVF9QUklWQVRFIENTdHJpbmcgdXRmOChi
b29sIHN0cmljdCA9IGZhbHNlKSBjb25zdDsKIAogICAgIFVDaGFyIG9wZXJhdG9yW10odW5zaWdu
ZWQgaW5kZXgpIGNvbnN0CiAgICAgewpAQCAtODcsMTEgKzg3LDExIEBACiAgICAgICAgIHJldHVy
biBtX2ltcGwtPmNoYXJhY3RlcnMoKVtpbmRleF07CiAgICAgfQogCi0gICAgc3RhdGljIFVTdHJp
bmcgbnVtYmVyKGludCk7Ci0gICAgc3RhdGljIFVTdHJpbmcgbnVtYmVyKHVuc2lnbmVkKTsKLSAg
ICBzdGF0aWMgVVN0cmluZyBudW1iZXIobG9uZyk7Ci0gICAgc3RhdGljIFVTdHJpbmcgbnVtYmVy
KGxvbmcgbG9uZyk7Ci0gICAgc3RhdGljIFVTdHJpbmcgbnVtYmVyKGRvdWJsZSk7CisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIFVTdHJpbmcgbnVtYmVyKGludCk7CisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIFVTdHJpbmcgbnVtYmVyKHVuc2lnbmVkKTsKKyAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgVVN0cmluZyBudW1iZXIobG9uZyk7CisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIFVTdHJpbmcgbnVtYmVyKGxvbmcgbG9uZyk7CisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIFVTdHJpbmcgbnVtYmVyKGRvdWJsZSk7CiAKICAgICAvLyBGaW5kIGEgc2luZ2xl
IGNoYXJhY3RlciBvciBzdHJpbmcsIGFsc28gd2l0aCBtYXRjaCBmdW5jdGlvbiAmIGxhdGluMSBm
b3Jtcy4KICAgICBzaXplX3QgZmluZChVQ2hhciBjLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0
CkBAIC0xMDcsNyArMTA3LDcgQEAKICAgICBzaXplX3QgcmV2ZXJzZUZpbmQoY29uc3QgVVN0cmlu
ZyYgc3RyLCB1bnNpZ25lZCBzdGFydCA9IFVJTlRfTUFYKSBjb25zdAogICAgICAgICB7IHJldHVy
biBtX2ltcGwgPyBtX2ltcGwtPnJldmVyc2VGaW5kKHN0ci5pbXBsKCksIHN0YXJ0KSA6IG5vdEZv
dW5kOyB9CiAKLSAgICBVU3RyaW5nIHN1YnN0cmluZ1NoYXJpbmdJbXBsKHVuc2lnbmVkIHBvcywg
dW5zaWduZWQgbGVuID0gVUlOVF9NQVgpIGNvbnN0OworICAgIEpTX0VYUE9SVF9QUklWQVRFIFVT
dHJpbmcgc3Vic3RyaW5nU2hhcmluZ0ltcGwodW5zaWduZWQgcG9zLCB1bnNpZ25lZCBsZW4gPSBV
SU5UX01BWCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgUmVmUHRyPFN0cmluZ0ltcGw+IG1faW1w
bDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5jZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5jZS5o
CShyZXZpc2lvbiA4MjUxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJ
bnN0YW5jZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw4ICszMSw4IEBACiAKICAgICBjbGFzcyBE
YXRlSW5zdGFuY2UgOiBwdWJsaWMgSlNXcmFwcGVyT2JqZWN0IHsKICAgICBwdWJsaWM6Ci0gICAg
ICAgIERhdGVJbnN0YW5jZShFeGVjU3RhdGUqLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+
LCBkb3VibGUpOwotICAgICAgICBleHBsaWNpdCBEYXRlSW5zdGFuY2UoRXhlY1N0YXRlKiwgTm9u
TnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIERh
dGVJbnN0YW5jZShFeGVjU3RhdGUqLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBkb3Vi
bGUpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBleHBsaWNpdCBEYXRlSW5zdGFuY2UoRXhl
Y1N0YXRlKiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPik7CiAKICAgICAgICAgZG91Ymxl
IGludGVybmFsTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gaW50ZXJuYWxWYWx1ZSgpLnVuY2hlY2tl
ZEdldE51bWJlcigpOyB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Jv
cGVJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUm9w
ZUltcGwuaAkocmV2aXNpb24gODI1MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Sb3BlSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC04Myw3ICs4Myw3IEBACiAgICAgewogICAg
IH0KIAotICAgIHZvaWQgZGVzdHJ1Y3ROb25SZWN1cnNpdmUoKTsKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSB2b2lkIGRlc3RydWN0Tm9uUmVjdXJzaXZlKCk7CiAgICAgdm9pZCBkZXJlZkZpYmVyc05v
blJlY3Vyc2l2ZShWZWN0b3I8Um9wZUltcGwqLCAzMj4mIHdvcmtRdWV1ZSk7CiAKICAgICBib29s
IGhhc09uZVJlZigpIHsgcmV0dXJuIChtX3JlZkNvdW50QW5kRmxhZ3MgJiBzX3JlZkNvdW50TWFz
aykgPT0gc19yZWZDb3VudEluY3JlbWVudDsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgJKHJldmlzaW9uIDgyNTEzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTEx
Myw3ICsxMTMsNyBAQAogICAgICAgICAvLyB0aGUgb3JpZ2luYWwgQVBJLgogICAgICAgICBlbnVt
IEdsb2JhbERhdGFUeXBlIHsgRGVmYXVsdCwgQVBJQ29udGV4dEdyb3VwLCBBUElTaGFyZWQgfTsK
IAotICAgICAgICBzdHJ1Y3QgQ2xpZW50RGF0YSB7CisgICAgICAgIHN0cnVjdCBKU19FWFBPUlRf
UFJJVkFURSBDbGllbnREYXRhIHsKICAgICAgICAgICAgIHZpcnR1YWwgfkNsaWVudERhdGEoKSA9
IDA7CiAgICAgICAgIH07CiAKQEAgLTEyMiwxMCArMTIyLDEwIEBACiAgICAgICAgIHN0YXRpYyBi
b29sIHNoYXJlZEluc3RhbmNlRXhpc3RzKCk7CiAgICAgICAgIHN0YXRpYyBKU0dsb2JhbERhdGEm
IHNoYXJlZEluc3RhbmNlKCk7CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SlNHbG9iYWxE
YXRhPiBjcmVhdGUoVGhyZWFkU3RhY2tUeXBlKTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8
SlNHbG9iYWxEYXRhPiBjcmVhdGVMZWFrZWQoVGhyZWFkU3RhY2tUeXBlKTsKKyAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8SlNHbG9iYWxEYXRhPiBjcmVhdGUoVGhy
ZWFkU3RhY2tUeXBlKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQ
dHI8SlNHbG9iYWxEYXRhPiBjcmVhdGVMZWFrZWQoVGhyZWFkU3RhY2tUeXBlKTsKICAgICAgICAg
c3RhdGljIFBhc3NSZWZQdHI8SlNHbG9iYWxEYXRhPiBjcmVhdGVDb250ZXh0R3JvdXAoVGhyZWFk
U3RhY2tUeXBlKTsKLSAgICAgICAgfkpTR2xvYmFsRGF0YSgpOworICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSB+SlNHbG9iYWxEYXRhKCk7CiAKICNpZiBFTkFCTEUoSlNDX01VTFRJUExFX1RIUkVB
RFMpCiAgICAgICAgIC8vIFdpbGwgc3RhcnQgdHJhY2tpbmcgdGhyZWFkcyB0aGF0IHVzZSB0aGUg
aGVhcCwgd2hpY2ggaXMgcmVzb3VyY2UtaGVhdnkuCkBAIC0yNDksOSArMjQ5LDkgQEAKIAogICAg
ICAgICB2b2lkIHJlc2V0RGF0ZUNhY2hlKCk7CiAKLSAgICAgICAgdm9pZCBzdGFydFNhbXBsaW5n
KCk7Ci0gICAgICAgIHZvaWQgc3RvcFNhbXBsaW5nKCk7Ci0gICAgICAgIHZvaWQgZHVtcFNhbXBs
ZURhdGEoRXhlY1N0YXRlKiBleGVjKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBz
dGFydFNhbXBsaW5nKCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc3RvcFNhbXBs
aW5nKCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZHVtcFNhbXBsZURhdGEoRXhl
Y1N0YXRlKik7CiAgICAgICAgIHZvaWQgcmVjb21waWxlQWxsSlNGdW5jdGlvbnMoKTsKICAgICAg
ICAgUmVnRXhwQ2FjaGUqIHJlZ0V4cENhY2hlKCkgeyByZXR1cm4gbV9yZWdFeHBDYWNoZTsgfQog
I2lmIEVOQUJMRShSRUdFWFBfVFJBQ0lORykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1RpbWVvdXRDaGVja2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVGltZW91dENoZWNrZXIuaAkocmV2aXNpb24gODI1MTMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9UaW1lb3V0Q2hlY2tlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC01Nyw5ICs1Nyw5IEBACiAgICAgICAgICAgICAtLW1fc3RhcnRDb3VudDsKICAgICAgICAgfQog
Ci0gICAgICAgIHZvaWQgcmVzZXQoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBy
ZXNldCgpOwogCi0gICAgICAgIGJvb2wgZGlkVGltZU91dChFeGVjU3RhdGUqKTsKKyAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBkaWRUaW1lT3V0KEV4ZWNTdGF0ZSopOwogCiAgICAgcHJp
dmF0ZToKICAgICAgICAgdW5zaWduZWQgbV90aW1lb3V0SW50ZXJ2YWw7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9IZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSGVhcC5oCShyZXZpc2lvbiA4MjUxMykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0hlYXAuaAkod29ya2luZyBjb3B5KQpAQCAtNjMsMjggKzYzLDI4
IEBACiAgICAgICAgIAogICAgICAgICBIZWFwKEpTR2xvYmFsRGF0YSopOwogICAgICAgICB+SGVh
cCgpOwotICAgICAgICB2b2lkIGRlc3Ryb3koKTsgLy8gSlNHbG9iYWxEYXRhIG11c3QgY2FsbCBk
ZXN0cm95KCkgYmVmb3JlIH5IZWFwKCkuCisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQg
ZGVzdHJveSgpOyAvLyBKU0dsb2JhbERhdGEgbXVzdCBjYWxsIGRlc3Ryb3koKSBiZWZvcmUgfkhl
YXAoKS4KIAogICAgICAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEoKSBjb25zdCB7IHJldHVy
biBtX2dsb2JhbERhdGE7IH0KICAgICAgICAgTWFya2VkU3BhY2UmIG1hcmtlZFNwYWNlKCkgeyBy
ZXR1cm4gbV9tYXJrZWRTcGFjZTsgfQogICAgICAgICBNYWNoaW5lVGhyZWFkcyYgbWFjaGluZVRo
cmVhZHMoKSB7IHJldHVybiBtX21hY2hpbmVUaHJlYWRzOyB9CiAKLSAgICAgICAgR0NBY3Rpdml0
eUNhbGxiYWNrKiBhY3Rpdml0eUNhbGxiYWNrKCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IEdDQWN0aXZpdHlDYWxsYmFjayogYWN0aXZpdHlDYWxsYmFjaygpOwogICAgICAgICB2b2lkIHNl
dEFjdGl2aXR5Q2FsbGJhY2soUGFzc093blB0cjxHQ0FjdGl2aXR5Q2FsbGJhY2s+KTsKIAotICAg
ICAgICBib29sIGlzQnVzeSgpOyAvLyB0cnVlIGlmIGFuIGFsbG9jYXRpb24gb3IgY29sbGVjdGlv
biBpcyBpbiBwcm9ncmVzcwotICAgICAgICB2b2lkKiBhbGxvY2F0ZShzaXplX3QpOwotICAgICAg
ICB2b2lkIGNvbGxlY3RBbGxHYXJiYWdlKCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGJv
b2wgaXNCdXN5KCk7IC8vIHRydWUgaWYgYW4gYWxsb2NhdGlvbiBvciBjb2xsZWN0aW9uIGlzIGlu
IHByb2dyZXNzCisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQqIGFsbG9jYXRlKHNpemVf
dCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgY29sbGVjdEFsbEdhcmJhZ2UoKTsK
IAotICAgICAgICB2b2lkIHJlcG9ydEV4dHJhTWVtb3J5Q29zdChzaXplX3QgY29zdCk7CisgICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVwb3J0RXh0cmFNZW1vcnlDb3N0KHNpemVfdCBj
b3N0KTsKIAotICAgICAgICB2b2lkIHByb3RlY3QoSlNWYWx1ZSk7Ci0gICAgICAgIGJvb2wgdW5w
cm90ZWN0KEpTVmFsdWUpOyAvLyBUcnVlIHdoZW4gdGhlIHByb3RlY3QgY291bnQgZHJvcHMgdG8g
MC4KKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBwcm90ZWN0KEpTVmFsdWUpOworICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIHVucHJvdGVjdChKU1ZhbHVlKTsgLy8gVHJ1ZSB3
aGVuIHRoZSBwcm90ZWN0IGNvdW50IGRyb3BzIHRvIDAuCiAKICAgICAgICAgYm9vbCBjb250YWlu
cyh2b2lkKik7CiAKLSAgICAgICAgc2l6ZV90IHNpemUoKSBjb25zdDsKLSAgICAgICAgc2l6ZV90
IGNhcGFjaXR5KCkgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHNpemVfdCBzaXpl
KCkgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHNpemVfdCBjYXBhY2l0eSgpIGNv
bnN0OwogICAgICAgICBzaXplX3Qgb2JqZWN0Q291bnQoKSBjb25zdDsKICAgICAgICAgc2l6ZV90
IGdsb2JhbE9iamVjdENvdW50KCk7CiAgICAgICAgIHNpemVfdCBwcm90ZWN0ZWRPYmplY3RDb3Vu
dCgpOwpAQCAtMTEwLDggKzExMCw4IEBACiAgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbWlu
RXh0cmFDb3N0ID0gMjU2OwogICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heEV4dHJhQ29z
dCA9IDEwMjQgKiAxMDI0OwogCi0gICAgICAgIHZvaWQqIGFsbG9jYXRlU2xvd0Nhc2Uoc2l6ZV90
KTsKLSAgICAgICAgdm9pZCByZXBvcnRFeHRyYU1lbW9yeUNvc3RTbG93Q2FzZShzaXplX3QpOwor
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkKiBhbGxvY2F0ZVNsb3dDYXNlKHNpemVfdCk7
CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVwb3J0RXh0cmFNZW1vcnlDb3N0U2xv
d0Nhc2Uoc2l6ZV90KTsKIAogICAgICAgICB2b2lkIG1hcmtSb290cygpOwogICAgICAgICB2b2lk
IG1hcmtQcm90ZWN0ZWRPYmplY3RzKEhlYXBSb290TWFya2VyJik7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDgyNTEz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkod29y
a2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQAogCiAgICAgdHlwZWRlZiBWZWN0b3I8RXhlY1N0
YXRlKiwgMTY+IEV4ZWNTdGF0ZVN0YWNrOwogICAgIAotICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0
IDogcHVibGljIEpTVmFyaWFibGVPYmplY3QgeworICAgIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRF
IEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTVmFyaWFibGVPYmplY3QgewogICAgIHByb3RlY3Rl
ZDoKICAgICAgICAgdHlwZWRlZiBIYXNoU2V0PFJlZlB0cjxPcGFxdWVKU1dlYWtPYmplY3RNYXA+
ID4gV2Vha01hcFNldDsKIApAQCAtNDM1LDcgKzQzNSw3IEBACiAgICAgY2xhc3MgRHluYW1pY0ds
b2JhbE9iamVjdFNjb3BlIHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRHluYW1pY0ds
b2JhbE9iamVjdFNjb3BlKTsKICAgICBwdWJsaWM6Ci0gICAgICAgIER5bmFtaWNHbG9iYWxPYmpl
Y3RTY29wZShKU0dsb2JhbERhdGEmLCBKU0dsb2JhbE9iamVjdCopOworICAgICAgICBKU19FWFBP
UlRfUFJJVkFURSBEeW5hbWljR2xvYmFsT2JqZWN0U2NvcGUoSlNHbG9iYWxEYXRhJiwgSlNHbG9i
YWxPYmplY3QqKTsKIAogICAgICAgICB+RHluYW1pY0dsb2JhbE9iamVjdFNjb3BlKCkKICAgICAg
ICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RXaXRoR2xv
YmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDgyNTEzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM5LDEwICszOSwxMCBAQAogICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVh
dGUoZ2xvYmFsRGF0YSwgcHJvdG8sIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdz
KSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsKICAgICB9CiAKLSAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KCkgY29uc3Q7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCgpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6Ci0gICAgSlNPYmpl
Y3RXaXRoR2xvYmFsT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3Ry
dWN0dXJlPik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0
KEpTR2xvYmFsT2JqZWN0KiwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPik7CiAKICAgICBK
U09iamVjdFdpdGhHbG9iYWxPYmplY3QoTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1
Y3R1cmUpCiAgICAgICAgIDogSlNOb25GaW5hbE9iamVjdChzdHJ1Y3R1cmUpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCShyZXZpc2lvbiA4MjUxMykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAt
ODEsMTAgKzgxLDEwIEBACiAjZW5kaWYKICAgICB9OwogCi0gICAgZG91YmxlIG5vbklubGluZU5h
TigpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIGRvdWJsZSBub25JbmxpbmVOYU4oKTsKIAogICAg
IC8vIFRoaXMgaW1wbGVtZW50cyBUb0ludDMyLCBkZWZpbmVkIGluIEVDTUEtMjYyIDkuNS4KLSAg
ICBpbnQzMl90IHRvSW50MzIoZG91YmxlKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBpbnQzMl90
IHRvSW50MzIoZG91YmxlKTsKIAogICAgIC8vIFRoaXMgaW1wbGVtZW50cyBUb1VJbnQzMiwgZGVm
aW5lZCBpbiBFQ01BLTI2MiA5LjYuCiAgICAgaW5saW5lIHVpbnQzMl90IHRvVUludDMyKGRvdWJs
ZSBudW1iZXIpCkBAIC0xOTMsNyArMTkzLDcgQEAKICAgICAgICAgSlNPYmplY3QqIHRvT2JqZWN0
KEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CiAKICAgICAgICAgLy8gSW50ZWdl
ciBjb252ZXJzaW9ucy4KLSAgICAgICAgZG91YmxlIHRvSW50ZWdlcihFeGVjU3RhdGUqKSBjb25z
dDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgZG91YmxlIHRvSW50ZWdlcihFeGVjU3RhdGUq
KSBjb25zdDsKICAgICAgICAgZG91YmxlIHRvSW50ZWdlclByZXNlcnZlTmFOKEV4ZWNTdGF0ZSop
IGNvbnN0OwogICAgICAgICBpbnQzMl90IHRvSW50MzIoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAg
ICAgIHVpbnQzMl90IHRvVUludDMyKEV4ZWNTdGF0ZSopIGNvbnN0OwpAQCAtMjMyLDcgKzIzMiw3
IEBACiAKICAgICAgICAgYm9vbCBpc0NlbGwoKSBjb25zdDsKICAgICAgICAgSlNDZWxsKiBhc0Nl
bGwoKSBjb25zdDsKLSAgICAgICAgYm9vbCBpc1ZhbGlkQ2FsbGVlKCk7CisgICAgICAgIEpTX0VY
UE9SVF9QUklWQVRFIGJvb2wgaXNWYWxpZENhbGxlZSgpOwogCiAjaWZuZGVmIE5ERUJVRwogICAg
ICAgICBjaGFyKiBkZXNjcmlwdGlvbigpOwpAQCAtMjQ2LDEwICsyNDYsMTAgQEAKICAgICAgICAg
SlNWYWx1ZShIYXNoVGFibGVEZWxldGVkVmFsdWVUYWcpOwogCiAgICAgICAgIGlubGluZSBjb25z
dCBKU1ZhbHVlIGFzVmFsdWUoKSBjb25zdCB7IHJldHVybiAqdGhpczsgfQotICAgICAgICBKU09i
amVjdCogdG9PYmplY3RTbG93Q2FzZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCopIGNvbnN0
OwotICAgICAgICBKU09iamVjdCogdG9UaGlzT2JqZWN0U2xvd0Nhc2UoRXhlY1N0YXRlKikgY29u
c3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0b09iamVjdFNsb3dDYXNl
KEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIEpTT2JqZWN0KiB0b1RoaXNPYmplY3RTbG93Q2FzZShFeGVjU3RhdGUqKSBjb25zdDsK
IAotICAgICAgICBKU09iamVjdCogc3ludGhlc2l6ZVByb3RvdHlwZShFeGVjU3RhdGUqKSBjb25z
dDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHN5bnRoZXNpemVQcm90b3R5
cGUoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgICAgIEpTT2JqZWN0KiBzeW50aGVzaXplT2JqZWN0
KEV4ZWNTdGF0ZSopIGNvbnN0OwogCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5oCShy
ZXZpc2lvbiA4MjUxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5
RGVzY3JpcHRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw4ICs0Niw4IEBACiAgICAgICAgIEpT
VmFsdWUgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CiAgICAgICAgIEpTVmFsdWUg
Z2V0dGVyKCkgY29uc3Q7CiAgICAgICAgIEpTVmFsdWUgc2V0dGVyKCkgY29uc3Q7Ci0gICAgICAg
IHZvaWQgc2V0VW5kZWZpbmVkKCk7Ci0gICAgICAgIHZvaWQgc2V0RGVzY3JpcHRvcihKU1ZhbHVl
IHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCBzZXRVbmRlZmluZWQoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRE
ZXNjcmlwdG9yKEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgICAgICB2b2lkIHNl
dEFjY2Vzc29yRGVzY3JpcHRvcihKU1ZhbHVlIGdldHRlciwgSlNWYWx1ZSBzZXR0ZXIsIHVuc2ln
bmVkIGF0dHJpYnV0ZXMpOwogICAgICAgICB2b2lkIHNldFdyaXRhYmxlKGJvb2wpOwogICAgICAg
ICB2b2lkIHNldEVudW1lcmFibGUoYm9vbCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1dyYXBwZXJPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1dyYXBwZXJPYmplY3QuaAkocmV2aXNpb24gODI1MTMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dyYXBwZXJPYmplY3QuaAkod29ya2luZyBjb3B5
KQpAQCAtMjgsNyArMjgsNyBAQAogCiAgICAgLy8gVGhpcyBjbGFzcyBpcyB1c2VkIGFzIGEgYmFz
ZSBmb3IgY2xhc3NlcyBzdWNoIGFzIFN0cmluZywKICAgICAvLyBOdW1iZXIsIEJvb2xlYW4gYW5k
IERhdGUgd2hpY2ggYXJlIHdyYXBwZXJzIGZvciBwcmltaXRpdmUgdHlwZXMuCi0gICAgY2xhc3Mg
SlNXcmFwcGVyT2JqZWN0IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworICAgIGNsYXNzIEpT
X0VYUE9SVF9QUklWQVRFIEpTV3JhcHBlck9iamVjdCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0
IHsKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIGV4cGxpY2l0IEpTV3JhcHBlck9iamVjdChOb25O
dWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+KTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ2FsbERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9DYWxsRGF0YS5oCShyZXZpc2lvbiA4MjUxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NhbGxEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDcgKzU3LDcgQEAK
ICAgICAgICAgfSBqczsKICAgICB9OwogCi0gICAgSlNWYWx1ZSBjYWxsKEV4ZWNTdGF0ZSosIEpT
VmFsdWUgZnVuY3Rpb25PYmplY3QsIENhbGxUeXBlLCBjb25zdCBDYWxsRGF0YSYsIEpTVmFsdWUg
dGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0Jik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1
ZSBjYWxsKEV4ZWNTdGF0ZSosIEpTVmFsdWUgZnVuY3Rpb25PYmplY3QsIENhbGxUeXBlLCBjb25z
dCBDYWxsRGF0YSYsIEpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0Jik7CiAKIH0gLy8g
bmFtZXNwYWNlIEpTQwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29w
ZUNoYWluLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2Nv
cGVDaGFpbi5oCShyZXZpc2lvbiA4MjUxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Njb3BlQ2hhaW4uaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAogICAgIGNs
YXNzIE1hcmtTdGFjazsKICAgICBjbGFzcyBTY29wZUNoYWluSXRlcmF0b3I7CiAgICAgCi0gICAg
Y2xhc3MgU2NvcGVDaGFpbk5vZGUgOiBwdWJsaWMgSlNDZWxsIHsKKyAgICBjbGFzcyBKU19FWFBP
UlRfUFJJVkFURSBTY29wZUNoYWluTm9kZSA6IHB1YmxpYyBKU0NlbGwgewogICAgIHB1YmxpYzoK
ICAgICAgICAgU2NvcGVDaGFpbk5vZGUoU2NvcGVDaGFpbk5vZGUqIG5leHQsIEpTT2JqZWN0KiBv
YmplY3QsIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNPYmplY3QqIGdsb2JhbFRoaXMpCiAgICAgICAgICAgICA6IEpTQ2VsbChnbG9iYWxE
YXRhLT5zY29wZUNoYWluTm9kZVN0cnVjdHVyZS5nZXQoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbnN0cnVjdERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db25zdHJ1Y3REYXRhLmgJKHJldmlzaW9uIDgyNTEzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc3RydWN0RGF0YS5oCSh3b3JraW5nIGNv
cHkpCkBAIC01Nyw3ICs1Nyw3IEBACiAgICAgICAgIH0ganM7CiAgICAgfTsKIAotICAgIEpTT2Jq
ZWN0KiBjb25zdHJ1Y3QoRXhlY1N0YXRlKiwgSlNWYWx1ZSBjb25zdHJ1Y3RvciwgQ29uc3RydWN0
VHlwZSwgY29uc3QgQ29uc3RydWN0RGF0YSYsIGNvbnN0IEFyZ0xpc3QmKTsKKyAgICBKU19FWFBP
UlRfUFJJVkFURSBKU09iamVjdCogY29uc3RydWN0KEV4ZWNTdGF0ZSosIEpTVmFsdWUgY29uc3Ry
dWN0b3IsIENvbnN0cnVjdFR5cGUsIGNvbnN0IENvbnN0cnVjdERhdGEmLCBjb25zdCBBcmdMaXN0
Jik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9NYXJrZWRTcGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL01hcmtlZFNwYWNlLmgJKHJldmlzaW9uIDgyNTEzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTWFya2VkU3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTA1LDcg
KzEwNSw3IEBACiAgICAgICAgIHZvaWQgZnJlZUJsb2NrcyhEb3VibHlMaW5rZWRMaXN0PE1hcmtl
ZEJsb2NrPiYpOwogCiAgICAgICAgIFNpemVDbGFzcyYgc2l6ZUNsYXNzRm9yKHNpemVfdCk7Ci0g
ICAgICAgIHZvaWQqIGFsbG9jYXRlRnJvbVNpemVDbGFzcyhTaXplQ2xhc3MmKTsKKyAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgdm9pZCogYWxsb2NhdGVGcm9tU2l6ZUNsYXNzKFNpemVDbGFzcyYp
OwogCiAgICAgICAgIHZvaWQgY2xlYXJNYXJrcyhNYXJrZWRCbG9jayopOwogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5o
CShyZXZpc2lvbiA4MjUxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRp
YWxpemVUaHJlYWRpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQAogCiAgICAg
Ly8gVGhpcyBmdW5jdGlvbiBtdXN0IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4gSXQg
aXMgc2FmZSB0byBjYWxsIGl0IHJlcGVhdGVkbHkuCiAgICAgLy8gRGFyd2luIGlzIGFuIGV4Y2Vw
dGlvbiB0byB0aGlzIHJ1bGU6IGl0IGlzIE9LIHRvIGNhbGwgdGhpcyBmdW5jdGlvbiBmcm9tIGFu
eSB0aHJlYWQsIGV2ZW4gcmVlbnRyYW50bHkuCi0gICAgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5n
KCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nKCk7CiAK
IH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2NvbmZpZy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb25maWcuaAkocmV2aXNpb24gODI1MTMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvY29uZmlnLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDggKzU5LDgg
QEAKICNkZWZpbmUgSlNfRVhQT1JUQ0xBU1MKICNlbmRpZgogCi0jZGVmaW5lIFdURl9FWFBPUlRf
UFJJVkFURSBKU19FWFBPUlREQVRBCi0jZGVmaW5lIEpTX0VYUE9SVF9QUklWQVRFIEpTX0VYUE9S
VERBVEEKKyNkZWZpbmUgV1RGX0VYUE9SVF9QUklWQVRFCisjZGVmaW5lIEpTX0VYUE9SVF9QUklW
QVRFCiAKICNlbmRpZiAvKiBVU0UoRVhQT1JUX01BQ1JPUykgKi8KIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
aAkocmV2aXNpb24gODI1MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTg5LDcgKzg5LDcgQEAKICAg
ICAgICAgdHlwZWRlZiBEZWNsYXJhdGlvblN0YWNrczo6VmFyU3RhY2sgVmFyU3RhY2s7CiAgICAg
ICAgIHR5cGVkZWYgRGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0aW9uU3RhY2sgRnVuY3Rpb25TdGFj
azsKIAotICAgICAgICBzdGF0aWMgdm9pZCBzZXREdW1wc0dlbmVyYXRlZENvZGUoYm9vbCBkdW1w
c0dlbmVyYXRlZENvZGUpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBz
ZXREdW1wc0dlbmVyYXRlZENvZGUoYm9vbCk7CiAgICAgICAgIHN0YXRpYyBib29sIGR1bXBzR2Vu
ZXJhdGVkQ29kZSgpOwogCiAgICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yKFByb2dyYW1Ob2RlKiwg
U2NvcGVDaGFpbk5vZGUqLCBTeW1ib2xUYWJsZSosIFByb2dyYW1Db2RlQmxvY2sqKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIu
aAkocmV2aXNpb24gODI1MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1JlZkNvdW50
ZWRMZWFrQ291bnRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAKIG5hbWVz
cGFjZSBXVEYgewogICAgIAotICAgIHN0cnVjdCBSZWZDb3VudGVkTGVha0NvdW50ZXIgeworICAg
IHN0cnVjdCBXVEZfRVhQT1JUX1BSSVZBVEUgUmVmQ291bnRlZExlYWtDb3VudGVyIHsKICAgICAg
ICAgc3RhdGljIHZvaWQgc3VwcHJlc3NNZXNzYWdlcyhjb25zdCBjaGFyKik7CiAgICAgICAgIHN0
YXRpYyB2b2lkIGNhbmNlbE1lc3NhZ2VTdXBwcmVzc2lvbihjb25zdCBjaGFyKik7CiAgICAgICAg
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9OdWxsUHRyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9OdWxsUHRyLmgJKHJldmlzaW9uIDgyNTEzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9OdWxsUHRyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQyLDEwICs0MiwxMCBAQAogI2Vsc2UKIAogbmFtZXNwYWNlIHN0ZCB7Ci0gICAgY2xhc3MgbnVs
bHB0cl90IHsgfTsKK2NsYXNzIFdURl9FWFBPUlRfUFJJVkFURSBudWxscHRyX3QgeyB9OwogfQog
Ci1leHRlcm4gc3RkOjpudWxscHRyX3QgbnVsbHB0cjsKK2V4dGVybiBXVEZfRVhQT1JUX1BSSVZB
VEUgc3RkOjpudWxscHRyX3QgbnVsbHB0cjsKIAogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi9UaHJlYWRpbmcuaAkocmV2aXNpb24gODI1MTMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL1RocmVhZGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC04NCwyNyArODQsMjcg
QEAKIC8vIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQu
IEl0IGlzIHNhZmUgdG8gY2FsbCBpdCByZXBlYXRlZGx5LgogLy8gRGFyd2luIGlzIGFuIGV4Y2Vw
dGlvbiB0byB0aGlzIHJ1bGU6IGl0IGlzIE9LIHRvIGNhbGwgaXQgZnJvbSBhbnkgdGhyZWFkLCB0
aGUgb25seSAKIC8vIHJlcXVpcmVtZW50IGlzIHRoYXQgdGhlIGNhbGxzIGFyZSBub3QgcmVlbnRy
YW50Lgotdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nKCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBpbml0aWFsaXplVGhyZWFkaW5nKCk7CiAKIC8vIFJldHVybnMgMCBpZiB0aHJlYWQgY3JlYXRp
b24gZmFpbGVkLgogLy8gVGhlIHRocmVhZCBuYW1lIG11c3QgYmUgYSBsaXRlcmFsIHNpbmNlIG9u
IHNvbWUgcGxhdGZvcm1zIGl0J3MgcGFzc2VkIGluIHRvIHRoZSB0aHJlYWQuCi1UaHJlYWRJZGVu
dGlmaWVyIGNyZWF0ZVRocmVhZChUaHJlYWRGdW5jdGlvbiwgdm9pZCosIGNvbnN0IGNoYXIqIHRo
cmVhZE5hbWUpOworV1RGX0VYUE9SVF9QUklWQVRFIFRocmVhZElkZW50aWZpZXIgY3JlYXRlVGhy
ZWFkKFRocmVhZEZ1bmN0aW9uLCB2b2lkKiwgY29uc3QgY2hhciogdGhyZWFkTmFtZSk7CiAKIC8v
IEludGVybmFsIHBsYXRmb3JtLXNwZWNpZmljIGNyZWF0ZVRocmVhZCBpbXBsZW1lbnRhdGlvbi4K
LVRocmVhZElkZW50aWZpZXIgY3JlYXRlVGhyZWFkSW50ZXJuYWwoVGhyZWFkRnVuY3Rpb24sIHZv
aWQqLCBjb25zdCBjaGFyKiB0aHJlYWROYW1lKTsKK1dURl9FWFBPUlRfUFJJVkFURSBUaHJlYWRJ
ZGVudGlmaWVyIGNyZWF0ZVRocmVhZEludGVybmFsKFRocmVhZEZ1bmN0aW9uLCB2b2lkKiwgY29u
c3QgY2hhciogdGhyZWFkTmFtZSk7CiAKIC8vIENhbGxlZCBpbiB0aGUgdGhyZWFkIGR1cmluZyBp
bml0aWFsaXphdGlvbi4KIC8vIEhlbHBmdWwgZm9yIHBsYXRmb3JtcyB3aGVyZSB0aGUgdGhyZWFk
IG5hbWUgbXVzdCBiZSBzZXQgZnJvbSB3aXRoaW4gdGhlIHRocmVhZC4KIHZvaWQgaW5pdGlhbGl6
ZUN1cnJlbnRUaHJlYWRJbnRlcm5hbChjb25zdCBjaGFyKiB0aHJlYWROYW1lKTsKIAotVGhyZWFk
SWRlbnRpZmllciBjdXJyZW50VGhyZWFkKCk7Ci1pbnQgd2FpdEZvclRocmVhZENvbXBsZXRpb24o
VGhyZWFkSWRlbnRpZmllciwgdm9pZCoqKTsKLXZvaWQgZGV0YWNoVGhyZWFkKFRocmVhZElkZW50
aWZpZXIpOworV1RGX0VYUE9SVF9QUklWQVRFIFRocmVhZElkZW50aWZpZXIgY3VycmVudFRocmVh
ZCgpOworV1RGX0VYUE9SVF9QUklWQVRFIGludCB3YWl0Rm9yVGhyZWFkQ29tcGxldGlvbihUaHJl
YWRJZGVudGlmaWVyLCB2b2lkKiopOworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZGV0YWNoVGhy
ZWFkKFRocmVhZElkZW50aWZpZXIpOwogCi12b2lkIHlpZWxkKCk7CitXVEZfRVhQT1JUX1BSSVZB
VEUgdm9pZCB5aWVsZCgpOwogCi12b2lkIGxvY2tBdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNN
dXRleCgpOwotdm9pZCB1bmxvY2tBdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleCgpOwor
V1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgbG9ja0F0b21pY2FsbHlJbml0aWFsaXplZFN0YXRpY011
dGV4KCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCB1bmxvY2tBdG9taWNhbGx5SW5pdGlhbGl6
ZWRTdGF0aWNNdXRleCgpOwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi9NYWluVGhyZWFkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi9NYWluVGhyZWFkLmgJKHJldmlzaW9uIDgyNTEzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi9NYWluVGhyZWFkLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDE1ICsz
OCwxNSBAQAogdHlwZWRlZiB2b2lkIE1haW5UaHJlYWRGdW5jdGlvbih2b2lkKik7CiAKIC8vIE11
c3QgYmUgY2FsbGVkIGZyb20gdGhlIG1haW4gdGhyZWFkLgotdm9pZCBpbml0aWFsaXplTWFpblRo
cmVhZCgpOworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgaW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsK
IAotdm9pZCBjYWxsT25NYWluVGhyZWFkKE1haW5UaHJlYWRGdW5jdGlvbiosIHZvaWQqIGNvbnRl
eHQpOworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgY2FsbE9uTWFpblRocmVhZChNYWluVGhyZWFk
RnVuY3Rpb24qLCB2b2lkKiBjb250ZXh0KTsKIHZvaWQgY2FsbE9uTWFpblRocmVhZEFuZFdhaXQo
TWFpblRocmVhZEZ1bmN0aW9uKiwgdm9pZCogY29udGV4dCk7CiB2b2lkIGNhbmNlbENhbGxPbk1h
aW5UaHJlYWQoTWFpblRocmVhZEZ1bmN0aW9uKiwgdm9pZCogY29udGV4dCk7CiAKLXZvaWQgc2V0
TWFpblRocmVhZENhbGxiYWNrc1BhdXNlZChib29sIHBhdXNlZCk7CitXVEZfRVhQT1JUX1BSSVZB
VEUgdm9pZCBzZXRNYWluVGhyZWFkQ2FsbGJhY2tzUGF1c2VkKGJvb2wpOwogCi1ib29sIGlzTWFp
blRocmVhZCgpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNNYWluVGhyZWFkKCk7CiAKIC8v
IE5PVEU6IHRoZXNlIGZ1bmN0aW9ucyBhcmUgaW50ZXJuYWwgdG8gdGhlIGNhbGxPbk1haW5UaHJl
YWQgaW1wbGVtZW50YXRpb24uCiB2b2lkIGluaXRpYWxpemVNYWluVGhyZWFkUGxhdGZvcm0oKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvT1NBbGxvY2F0b3IuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL09TQWxsb2NhdG9yLmgJKHJldmlzaW9uIDgy
NTEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9PU0FsbG9jYXRvci5oCSh3b3JraW5n
IGNvcHkpCkBAIC00Niw3ICs0Niw3IEBACiAgICAgLy8gcmVsZWFzZURlY29tbWl0dGVkIHNob3Vs
ZCBiZSBjYWxsZWQgb24gYSByZWdpb24gb2YgVk0gYWxsb2NhdGVkIGJ5IGEgc2luZ2xlIHJlc2Vy
dmF0aW9uLAogICAgIC8vIHRoZSBtZW1vcnkgbXVzdCBhbGwgY3VycmVudGx5IGJlIGluIGEgZGVj
b21taXR0ZWQgc3RhdGUuCiAgICAgc3RhdGljIHZvaWQqIHJlc2VydmVVbmNvbW1pdHRlZChzaXpl
X3QsIFVzYWdlID0gVW5rbm93blVzYWdlLCBib29sIHdyaXRhYmxlID0gdHJ1ZSwgYm9vbCBleGVj
dXRhYmxlID0gZmFsc2UpOwotICAgIHN0YXRpYyB2b2lkIHJlbGVhc2VEZWNvbW1pdHRlZCh2b2lk
Kiwgc2l6ZV90KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgcmVsZWFzZURl
Y29tbWl0dGVkKHZvaWQqLCBzaXplX3QpOwogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgc3lt
bWV0cmljOyB0aGV5IGNvbW1pdCBvciBkZWNvbW1pdCBhIHJlZ2lvbiBvZiBWTSAodW5jb21taXR0
ZWQgVk0gc2hvdWxkCiAgICAgLy8gbmV2ZXIgYmUgYWNjZXNzZWQsIHNpbmNlIHRoZSBPUyBtYXkg
bm90IGhhdmUgYXR0YWNoZWQgcGh5c2ljYWwgbWVtb3J5IGZvciB0aGVzZSByZWdpb25zKS4KQEAg
LTU3LDcgKzU3LDcgQEAKICAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSBzeW1tZXRyaWM7IHJlc2Vy
dmVBbmRDb21taXQgYWxsb2NhdGVzIFZNIGluIGFuIGNvbW1pdHRlZCBzdGF0ZSwKICAgICAvLyBk
ZWNvbW1pdEFuZFJlbGVhc2Ugc2hvdWxkIGJlIGNhbGxlZCBvbiBhIHJlZ2lvbiBvZiBWTSBhbGxv
Y2F0ZWQgYnkgYSBzaW5nbGUgcmVzZXJ2YXRpb24sCiAgICAgLy8gdGhlIG1lbW9yeSBtdXN0IGFs
bCBjdXJyZW50bHkgYmUgaW4gYSBjb21taXR0ZWQgc3RhdGUuCi0gICAgc3RhdGljIHZvaWQqIHJl
c2VydmVBbmRDb21taXQoc2l6ZV90LCBVc2FnZSA9IFVua25vd25Vc2FnZSwgYm9vbCB3cml0YWJs
ZSA9IHRydWUsIGJvb2wgZXhlY3V0YWJsZSA9IGZhbHNlKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIHZvaWQqIHJlc2VydmVBbmRDb21taXQoc2l6ZV90LCBVc2FnZSA9IFVua25vd25V
c2FnZSwgYm9vbCB3cml0YWJsZSA9IHRydWUsIGJvb2wgZXhlY3V0YWJsZSA9IGZhbHNlKTsKICAg
ICBzdGF0aWMgdm9pZCBkZWNvbW1pdEFuZFJlbGVhc2Uodm9pZCogYmFzZSwgc2l6ZV90IHNpemUp
OwogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgYWtpbiB0byByZXNlcnZlQW5kQ29tbWl0L2Rl
Y29tbWl0QW5kUmVsZWFzZSwgYWJvdmUgLSBob3dldmVyIHJhdGhlciB0aGFuCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL0Zhc3RNYWxsb2MuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL0Zhc3RNYWxsb2MuaAkocmV2aXNpb24gODI1MTMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL0Zhc3RNYWxsb2MuaAkod29ya2luZyBjb3B5KQpAQCAtMjks
MTIgKzI5LDEyIEBACiBuYW1lc3BhY2UgV1RGIHsKIAogICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyBj
YWxsIENSQVNIKCkgaWYgYW4gYWxsb2NhdGlvbiBmYWlscy4KLSAgICB2b2lkKiBmYXN0TWFsbG9j
KHNpemVfdCk7Ci0gICAgdm9pZCogZmFzdFplcm9lZE1hbGxvYyhzaXplX3QpOwotICAgIHZvaWQq
IGZhc3RDYWxsb2Moc2l6ZV90IG51bUVsZW1lbnRzLCBzaXplX3QgZWxlbWVudFNpemUpOwotICAg
IHZvaWQqIGZhc3RSZWFsbG9jKHZvaWQqLCBzaXplX3QpOwotICAgIGNoYXIqIGZhc3RTdHJEdXAo
Y29uc3QgY2hhciopOwotICAgIHNpemVfdCBmYXN0TWFsbG9jU2l6ZShjb25zdCB2b2lkKik7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQqIGZhc3RNYWxsb2Moc2l6ZV90KTsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgdm9pZCogZmFzdFplcm9lZE1hbGxvYyhzaXplX3QpOworICAgIFdURl9F
WFBPUlRfUFJJVkFURSB2b2lkKiBmYXN0Q2FsbG9jKHNpemVfdCBudW1FbGVtZW50cywgc2l6ZV90
IGVsZW1lbnRTaXplKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCogZmFzdFJlYWxsb2Mo
dm9pZCosIHNpemVfdCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGNoYXIqIGZhc3RTdHJEdXAo
Y29uc3QgY2hhciopOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgZmFzdE1hbGxvY1Np
emUoY29uc3Qgdm9pZCopOwogCiAgICAgc3RydWN0IFRyeU1hbGxvY1JldHVyblZhbHVlIHsKICAg
ICAgICAgVHJ5TWFsbG9jUmV0dXJuVmFsdWUodm9pZCogZGF0YSkKQEAgLTY4LDEyICs2OCwxMiBA
QAogICAgICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiAgICAgfQogCi0gICAgVHJ5TWFsbG9jUmV0
dXJuVmFsdWUgdHJ5RmFzdE1hbGxvYyhzaXplX3Qgbik7Ci0gICAgVHJ5TWFsbG9jUmV0dXJuVmFs
dWUgdHJ5RmFzdFplcm9lZE1hbGxvYyhzaXplX3Qgbik7Ci0gICAgVHJ5TWFsbG9jUmV0dXJuVmFs
dWUgdHJ5RmFzdENhbGxvYyhzaXplX3Qgbl9lbGVtZW50cywgc2l6ZV90IGVsZW1lbnRfc2l6ZSk7
Ci0gICAgVHJ5TWFsbG9jUmV0dXJuVmFsdWUgdHJ5RmFzdFJlYWxsb2Modm9pZCogcCwgc2l6ZV90
IG4pOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBUcnlNYWxsb2NSZXR1cm5WYWx1ZSB0cnlGYXN0
TWFsbG9jKHNpemVfdCBuKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgVHJ5TWFsbG9jUmV0dXJu
VmFsdWUgdHJ5RmFzdFplcm9lZE1hbGxvYyhzaXplX3Qgbik7CisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIFRyeU1hbGxvY1JldHVyblZhbHVlIHRyeUZhc3RDYWxsb2Moc2l6ZV90IG5fZWxlbWVudHMs
IHNpemVfdCBlbGVtZW50X3NpemUpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBUcnlNYWxsb2NS
ZXR1cm5WYWx1ZSB0cnlGYXN0UmVhbGxvYyh2b2lkKiBwLCBzaXplX3Qgbik7CiAKLSAgICB2b2lk
IGZhc3RGcmVlKHZvaWQqKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBmYXN0RnJlZSh2
b2lkKik7CiAKICNpZm5kZWYgTkRFQlVHICAgIAogICAgIHZvaWQgZmFzdE1hbGxvY0ZvcmJpZCgp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRTcGVjaWZpYy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkU3BlY2lmaWMuaAkocmV2
aXNpb24gODI1MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZFNwZWNpZmlj
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIxNiw4ICsyMTYsOCBAQAogLy8gMikgV2UgZG8gbm90IG5l
ZWQgdG8gaG9sZCBtYW55IGluc3RhbmNlcyBvZiBUaHJlYWRTcGVjaWZpYzw+IGRhdGEuIFRoaXMg
Zml4ZWQgbnVtYmVyIHNob3VsZCBiZSBmYXIgZW5vdWdoLgogY29uc3QgaW50IGtNYXhUbHNLZXlT
aXplID0gMjU2OwogCi1sb25nJiB0bHNLZXlDb3VudCgpOwotRFdPUkQqIHRsc0tleXMoKTsKK1dU
Rl9FWFBPUlRfUFJJVkFURSBsb25nJiB0bHNLZXlDb3VudCgpOworV1RGX0VYUE9SVF9QUklWQVRF
IERXT1JEKiB0bHNLZXlzKCk7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBpbmxpbmUgVGhyZWFk
U3BlY2lmaWM8VD46OlRocmVhZFNwZWNpZmljKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvV1RGVGhyZWFkRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvV1RGVGhyZWFkRGF0YS5oCShyZXZpc2lvbiA4MjUxMykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvV1RGVGhyZWFkRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC04OSw4ICs4OSw4
IEBACiBjbGFzcyBXVEZUaHJlYWREYXRhIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXVEZU
aHJlYWREYXRhKTsKIHB1YmxpYzoKLSAgICBXVEZUaHJlYWREYXRhKCk7Ci0gICAgfldURlRocmVh
ZERhdGEoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgV1RGVGhyZWFkRGF0YSgpOworICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSB+V1RGVGhyZWFkRGF0YSgpOwogCiAgICAgQXRvbWljU3RyaW5nVGFi
bGUqIGF0b21pY1N0cmluZ1RhYmxlKCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL0RhdGVNYXRoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi9EYXRlTWF0aC5oCShyZXZpc2lvbiA4MjUxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvRGF0ZU1hdGguaAkod29ya2luZyBjb3B5KQpAQCAtNTksNyArNTksNyBAQAogCiAvLyBOb3Qg
cmVhbGx5IG1hdGggcmVsYXRlZCwgYnV0IHRoaXMgaXMgY3VycmVudGx5IHRoZSBvbmx5IHNoYXJl
ZCBwbGFjZSB0byBwdXQgdGhlc2UuCiBkb3VibGUgcGFyc2VFUzVEYXRlRnJvbU51bGxUZXJtaW5h
dGVkQ2hhcmFjdGVycyhjb25zdCBjaGFyKiBkYXRlU3RyaW5nKTsKLWRvdWJsZSBwYXJzZURhdGVG
cm9tTnVsbFRlcm1pbmF0ZWRDaGFyYWN0ZXJzKGNvbnN0IGNoYXIqIGRhdGVTdHJpbmcpOworV1RG
X0VYUE9SVF9QUklWQVRFIGRvdWJsZSBwYXJzZURhdGVGcm9tTnVsbFRlcm1pbmF0ZWRDaGFyYWN0
ZXJzKGNvbnN0IGNoYXIqIGRhdGVTdHJpbmcpOwogZG91YmxlIHRpbWVDbGlwKGRvdWJsZSk7CiAK
IGlubGluZSBkb3VibGUganNDdXJyZW50VGltZSgpCkBAIC04MiwxNSArODIsMTUgQEAKIGNvbnN0
IGRvdWJsZSBtc1Blck1vbnRoID0gMjU5MjAwMDAwMC4wOwogCiAvLyBSZXR1cm5zIHRoZSBudW1i
ZXIgb2YgZGF5cyBmcm9tIDE5NzAtMDEtMDEgdG8gdGhlIHNwZWNpZmllZCBkYXRlLgotZG91Ymxl
IGRhdGVUb0RheXNGcm9tMTk3MChpbnQgeWVhciwgaW50IG1vbnRoLCBpbnQgZGF5KTsKLWludCBt
c1RvWWVhcihkb3VibGUgbXMpOwotaW50IGRheUluWWVhcihkb3VibGUgbXMsIGludCB5ZWFyKTsK
LWludCBtb250aEZyb21EYXlJblllYXIoaW50IGRheUluWWVhciwgYm9vbCBsZWFwWWVhcik7Ci1p
bnQgZGF5SW5Nb250aEZyb21EYXlJblllYXIoaW50IGRheUluWWVhciwgYm9vbCBsZWFwWWVhcik7
CitXVEZfRVhQT1JUX1BSSVZBVEUgZG91YmxlIGRhdGVUb0RheXNGcm9tMTk3MChpbnQgeWVhciwg
aW50IG1vbnRoLCBpbnQgZGF5KTsKK1dURl9FWFBPUlRfUFJJVkFURSBpbnQgbXNUb1llYXIoZG91
YmxlIG1zKTsKK1dURl9FWFBPUlRfUFJJVkFURSBpbnQgZGF5SW5ZZWFyKGRvdWJsZSBtcywgaW50
IHllYXIpOworV1RGX0VYUE9SVF9QUklWQVRFIGludCBtb250aEZyb21EYXlJblllYXIoaW50IGRh
eUluWWVhciwgYm9vbCBsZWFwWWVhcik7CitXVEZfRVhQT1JUX1BSSVZBVEUgaW50IGRheUluTW9u
dGhGcm9tRGF5SW5ZZWFyKGludCBkYXlJblllYXIsIGJvb2wgbGVhcFllYXIpOwogCiAvLyBSZXR1
cm5zIG9mZnNldCBtaWxsaXNlY29uZHMgZm9yIFVUQyBhbmQgRFNULgotaW50MzJfdCBjYWxjdWxh
dGVVVENPZmZzZXQoKTsKLWRvdWJsZSBjYWxjdWxhdGVEU1RPZmZzZXQoZG91YmxlIG1zLCBkb3Vi
bGUgdXRjT2Zmc2V0KTsKK1dURl9FWFBPUlRfUFJJVkFURSBpbnQzMl90IGNhbGN1bGF0ZVVUQ09m
ZnNldCgpOworV1RGX0VYUE9SVF9QUklWQVRFIGRvdWJsZSBjYWxjdWxhdGVEU1RPZmZzZXQoZG91
YmxlIG1zLCBkb3VibGUgdXRjT2Zmc2V0KTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdW5pY29kZS9Db2xsYXRvci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdW5pY29kZS9Db2xsYXRvci5oCShyZXZpc2lv
biA4MjUxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdW5pY29kZS9Db2xsYXRvci5o
CSh3b3JraW5nIGNvcHkpCkBAIC00NSwxMyArNDUsMTMgQEAKICAgICBwdWJsaWM6CiAgICAgICAg
IGVudW0gUmVzdWx0IHsgRXF1YWwgPSAwLCBHcmVhdGVyID0gMSwgTGVzcyA9IC0xIH07CiAKLSAg
ICAgICAgQ29sbGF0b3IoY29uc3QgY2hhciogbG9jYWxlKTsgLy8gUGFyc2luZyBpcyBsZW5pZW50
OyBlLmcuIGxhbmd1YWdlIGlkZW50aWZpZXJzIChzdWNoIGFzICJlbi1VUyIpIGFyZSBhY2NlcHRl
ZCwgdG9vLgotICAgICAgICB+Q29sbGF0b3IoKTsKLSAgICAgICAgdm9pZCBzZXRPcmRlckxvd2Vy
Rmlyc3QoYm9vbCk7CisgICAgICAgIFdURl9FWFBPUlRfUFJJVkFURSBDb2xsYXRvcihjb25zdCBj
aGFyKiBsb2NhbGUpOyAvLyBQYXJzaW5nIGlzIGxlbmllbnQ7IGUuZy4gbGFuZ3VhZ2UgaWRlbnRp
ZmllcnMgKHN1Y2ggYXMgImVuLVVTIikgYXJlIGFjY2VwdGVkLCB0b28uCisgICAgICAgIFdURl9F
WFBPUlRfUFJJVkFURSB+Q29sbGF0b3IoKTsKKyAgICAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZv
aWQgc2V0T3JkZXJMb3dlckZpcnN0KGJvb2wpOwogCiAgICAgICAgIHN0YXRpYyBQYXNzT3duUHRy
PENvbGxhdG9yPiB1c2VyRGVmYXVsdCgpOwogCi0gICAgICAgIFJlc3VsdCBjb2xsYXRlKGNvbnN0
IDo6VUNoYXIqLCBzaXplX3QsIGNvbnN0IDo6VUNoYXIqLCBzaXplX3QpIGNvbnN0OworICAgICAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgUmVzdWx0IGNvbGxhdGUoY29uc3QgOjpVQ2hhciosIHNpemVf
dCwgY29uc3QgOjpVQ2hhciosIHNpemVfdCkgY29uc3Q7CiAKICAgICBwcml2YXRlOgogI2lmIFVT
RShJQ1VfVU5JQ09ERSkgJiYgIVVDT05GSUdfTk9fQ09MTEFUSU9OCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUvVVRGOC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvdW5pY29kZS9VVEY4LmgJKHJldmlzaW9uIDgyNTEzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi91bmljb2RlL1VURjguaAkod29ya2luZyBjb3B5KQpAQCAtNjIs
MTEgKzYyLDExIEBACiAgICAgLy8gdG8gdGhlIHJlcGxhY2VtZW50IGNoYXJhY3Rlcjsgb3RoZXJ3
aXNlICh3aGVuIHRoZSBmbGFnIGlzIHNldCB0byBzdHJpY3QpCiAgICAgLy8gdGhleSBjb25zdGl0
dXRlIGFuIGVycm9yLgogCi0gICAgQ29udmVyc2lvblJlc3VsdCBjb252ZXJ0VVRGOFRvVVRGMTYo
CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIENvbnZlcnNpb25SZXN1bHQgY29udmVydFVURjhUb1VU
RjE2KAogICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiogc291cmNlU3RhcnQsIGNvbnN0
IGNoYXIqIHNvdXJjZUVuZCwgCiAgICAgICAgICAgICAgICAgICAgIFVDaGFyKiogdGFyZ2V0U3Rh
cnQsIFVDaGFyKiB0YXJnZXRFbmQsIGJvb2wgc3RyaWN0ID0gdHJ1ZSk7CiAKLSAgICBDb252ZXJz
aW9uUmVzdWx0IGNvbnZlcnRVVEYxNlRvVVRGOCgKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgQ29u
dmVyc2lvblJlc3VsdCBjb252ZXJ0VVRGMTZUb1VURjgoCiAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFVDaGFyKiogc291cmNlU3RhcnQsIGNvbnN0IFVDaGFyKiBzb3VyY2VFbmQsIAogICAgICAg
ICAgICAgICAgICAgICBjaGFyKiogdGFyZ2V0U3RhcnQsIGNoYXIqIHRhcmdldEVuZCwgYm9vbCBz
dHJpY3QgPSB0cnVlKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9DdXJyZW50
VGltZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQ3VycmVudFRp
bWUuaAkocmV2aXNpb24gODI1MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0N1cnJl
bnRUaW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAKIC8vIFJldHVybnMgdGhl
IGN1cnJlbnQgVVRDIHRpbWUgaW4gc2Vjb25kcywgY291bnRlZCBmcm9tIEphbnVhcnkgMSwgMTk3
MC4KIC8vIFByZWNpc2lvbiB2YXJpZXMgZGVwZW5kaW5nIG9uIHBsYXRmb3JtIGJ1dCBpcyB1c3Vh
bGx5IGFzIGdvb2Qgb3IgYmV0dGVyCiAvLyB0aGFuIGEgbWlsbGlzZWNvbmQuCi1kb3VibGUgY3Vy
cmVudFRpbWUoKTsKK1dURl9FWFBPUlRfUFJJVkFURSBkb3VibGUgY3VycmVudFRpbWUoKTsKIAog
Ly8gU2FtZSB0aGluZywgaW4gbWlsbGlzZWNvbmRzLgogaW5saW5lIGRvdWJsZSBjdXJyZW50VGlt
ZU1TKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvRGVjaW1hbE51bWJlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvRGVjaW1hbE51bWJlci5oCShy
ZXZpc2lvbiA4MjUxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvRGVjaW1hbE51bWJl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC04MSwxMCArODEsMTAgQEAKICAgICAgICAgQVNTRVJUKG1f
c2lnbmlmaWNhbmRbMF0gIT0gJzAnIHx8ICFtX2V4cG9uZW50KTsKICAgICB9CiAKLSAgICB1bnNp
Z25lZCBidWZmZXJMZW5ndGhGb3JTdHJpbmdEZWNpbWFsKCkgY29uc3Q7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHVuc2lnbmVkIGJ1ZmZlckxlbmd0aEZvclN0cmluZ0RlY2ltYWwoKSBjb25zdDsK
ICAgICB1bnNpZ25lZCBidWZmZXJMZW5ndGhGb3JTdHJpbmdFeHBvbmVudGlhbCgpIGNvbnN0Owog
Ci0gICAgdW5zaWduZWQgdG9TdHJpbmdEZWNpbWFsKFVDaGFyKiBidWZmZXIsIHVuc2lnbmVkIGJ1
ZmZlckxlbmd0aCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHVuc2lnbmVkIHRvU3Ry
aW5nRGVjaW1hbChVQ2hhciogYnVmZmVyLCB1bnNpZ25lZCBidWZmZXJMZW5ndGgpIGNvbnN0Owog
ICAgIHVuc2lnbmVkIHRvU3RyaW5nRXhwb25lbnRpYWwoVUNoYXIqIGJ1ZmZlciwgdW5zaWduZWQg
YnVmZmVyTGVuZ3RoKSBjb25zdDsKIAogICAgIGJvb2wgc2lnbigpIGNvbnN0IHsgcmV0dXJuIG1f
c2lnbjsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9NRDUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL01ENS5oCShyZXZpc2lvbiA4MjUxMykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvTUQ1LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcg
KzM1LDcgQEAKIAogbmFtZXNwYWNlIFdURiB7CiAKLWNsYXNzIE1ENSB7CitjbGFzcyBXVEZfRVhQ
T1JUX1BSSVZBVEUgTUQ1IHsKIHB1YmxpYzoKICAgICBNRDUoKTsKIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi9kdG9hLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3d0Zi9kdG9hLmgJKHJldmlzaW9uIDgyNTEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi9kdG9hLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDE4ICszMCwxOCBAQAogCiAvLyBzMDA6
IGlucHV0IHN0cmluZy4gTXVzdCBub3QgYmUgMCBhbmQgbXVzdCBiZSB0ZXJtaW5hdGVkIGJ5IDAu
CiAvLyBzZTogKnNlIHdpbGwgaGF2ZSB0aGUgbGFzdCBjb25zdW1lZCBjaGFyYWN0ZXIgcG9zaXRp
b24gKyAxLgotZG91YmxlIHN0cnRvZChjb25zdCBjaGFyKiBzMDAsIGNoYXIqKiBzZSk7CitXVEZf
RVhQT1JUX1BSSVZBVEUgZG91YmxlIHN0cnRvZChjb25zdCBjaGFyKiBzMDAsIGNoYXIqKiBzZSk7
CiAKIHR5cGVkZWYgY2hhciBEdG9hQnVmZmVyWzgwXTsKIAotdm9pZCBkdG9hKER0b2FCdWZmZXIg
cmVzdWx0LCBkb3VibGUgZGQsIGJvb2wmIHNpZ24sIGludCYgZXhwb25lbnQsIHVuc2lnbmVkJiBw
cmVjaXNpb24pOworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZHRvYShEdG9hQnVmZmVyIHJlc3Vs
dCwgZG91YmxlIGRkLCBib29sJiBzaWduLCBpbnQmIGV4cG9uZW50LCB1bnNpZ25lZCYgcHJlY2lz
aW9uKTsKIHZvaWQgZHRvYVJvdW5kU0YoRHRvYUJ1ZmZlciByZXN1bHQsIGRvdWJsZSBkZCwgaW50
IG5kaWdpdHMsIGJvb2wmIHNpZ24sIGludCYgZXhwb25lbnQsIHVuc2lnbmVkJiBwcmVjaXNpb24p
Owogdm9pZCBkdG9hUm91bmREUChEdG9hQnVmZmVyIHJlc3VsdCwgZG91YmxlIGRkLCBpbnQgbmRp
Z2l0cywgYm9vbCYgc2lnbiwgaW50JiBleHBvbmVudCwgdW5zaWduZWQmIHByZWNpc2lvbik7CiAK
IC8vIFNpemUgPSA4MCBmb3Igc2l6ZW9mKER0b2FCdWZmZXIpICsgc29tZSBzaWduIGJpdHMsIGRl
Y2ltYWwgcG9pbnQsICdlJywgZXhwb25lbnQgZGlnaXRzLgogY29uc3QgdW5zaWduZWQgTnVtYmVy
VG9TdHJpbmdCdWZmZXJMZW5ndGggPSA5NjsKIHR5cGVkZWYgVUNoYXIgTnVtYmVyVG9TdHJpbmdC
dWZmZXJbTnVtYmVyVG9TdHJpbmdCdWZmZXJMZW5ndGhdOwotdW5zaWduZWQgbnVtYmVyVG9TdHJp
bmcoZG91YmxlLCBOdW1iZXJUb1N0cmluZ0J1ZmZlcik7CitXVEZfRVhQT1JUX1BSSVZBVEUgdW5z
aWduZWQgbnVtYmVyVG9TdHJpbmcoZG91YmxlLCBOdW1iZXJUb1N0cmluZ0J1ZmZlcik7CiAKIH0g
Ly8gbmFtZXNwYWNlIFdURgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL051bGxQ
dHIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvTnVsbFB0ci5j
cHAJKHJldmlzaW9uIDgyNTEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9OdWxsUHRy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQAogCiAqLwogCisjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiTnVsbFB0ci5oIgogCiAjaW5jbHVkZSAiUGxhdGZvcm0uaCIK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21O
dW1iZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0NyeXB0b2dy
YXBoaWNhbGx5UmFuZG9tTnVtYmVyLmgJKHJldmlzaW9uIDgyNTEzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMiw3ICszMiw3IEBACiAKICNpZiBVU0UoT1NfUkFORE9NTkVTUykKIHVpbnQzMl90
IGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyKCk7Ci12b2lkIGNyeXB0b2dyYXBoaWNhbGx5
UmFuZG9tVmFsdWVzKHZvaWQqIGJ1ZmZlciwgc2l6ZV90IGxlbmd0aCk7CitXVEZfRVhQT1JUX1BS
SVZBVEUgdm9pZCBjcnlwdG9ncmFwaGljYWxseVJhbmRvbVZhbHVlcyh2b2lkKiBidWZmZXIsIHNp
emVfdCBsZW5ndGgpOwogI2VuZGlmCiAKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oCShyZXZpc2lvbiA4MjUxMykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDAsMTIgKzEwMCwxMiBAQAogY2xhc3MgTXV0ZXggewogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKE11dGV4KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgTXV0
ZXgoKTsKLSAgICB+TXV0ZXgoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgTXV0ZXgoKTsKKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgfk11dGV4KCk7CiAKLSAgICB2b2lkIGxvY2soKTsKLSAgICBi
b29sIHRyeUxvY2soKTsKLSAgICB2b2lkIHVubG9jaygpOworICAgIFdURl9FWFBPUlRfUFJJVkFU
RSB2b2lkIGxvY2soKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCB0cnlMb2NrKCk7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgdW5sb2NrKCk7CiAKIHB1YmxpYzoKICAgICBQbGF0
Zm9ybU11dGV4JiBpbXBsKCkgeyByZXR1cm4gbV9tdXRleDsgfQpAQCAtMTM2LDE1ICsxMzYsMTUg
QEAKIGNsYXNzIFRocmVhZENvbmRpdGlvbiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVGhy
ZWFkQ29uZGl0aW9uKTsKIHB1YmxpYzoKLSAgICBUaHJlYWRDb25kaXRpb24oKTsKLSAgICB+VGhy
ZWFkQ29uZGl0aW9uKCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFRocmVhZENvbmRpdGlvbigp
OworICAgIFdURl9FWFBPUlRfUFJJVkFURSB+VGhyZWFkQ29uZGl0aW9uKCk7CiAgICAgCi0gICAg
dm9pZCB3YWl0KE11dGV4JiBtdXRleCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgd2Fp
dChNdXRleCYpOwogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgY29uZGl0aW9uIHdhcyBzaWdu
YWxlZCBiZWZvcmUgYWJzb2x1dGVUaW1lLCBmYWxzZSBpZiB0aGUgYWJzb2x1dGVUaW1lIHdhcyBy
ZWFjaGVkIG9yIGlzIGluIHRoZSBwYXN0LgogICAgIC8vIFRoZSBhYnNvbHV0ZVRpbWUgaXMgaW4g
c2Vjb25kcywgc3RhcnRpbmcgb24gSmFudWFyeSAxLCAxOTcwLiBUaGUgdGltZSBpcyBhc3N1bWVk
IHRvIHVzZSB0aGUgc2FtZSB0aW1lIHpvbmUgYXMgV1RGOjpjdXJyZW50VGltZSgpLgotICAgIGJv
b2wgdGltZWRXYWl0KE11dGV4JiwgZG91YmxlIGFic29sdXRlVGltZSk7Ci0gICAgdm9pZCBzaWdu
YWwoKTsKLSAgICB2b2lkIGJyb2FkY2FzdCgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29s
IHRpbWVkV2FpdChNdXRleCYsIGRvdWJsZSBhYnNvbHV0ZVRpbWUpOworICAgIFdURl9FWFBPUlRf
UFJJVkFURSB2b2lkIHNpZ25hbCgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGJyb2Fk
Y2FzdCgpOwogICAgIAogcHJpdmF0ZToKICAgICBQbGF0Zm9ybUNvbmRpdGlvbiBtX2NvbmRpdGlv
bjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUmFuZG9tTnVtYmVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9SYW5kb21OdW1iZXIuaAkocmV2aXNp
b24gODI1MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1JhbmRvbU51bWJlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAKICAgICAvLyBSZXR1cm5zIGEgcHNldWRv
LXJhbmRvbSBudW1iZXIgaW4gdGhlIHJhbmdlIFswLCAxKSwgYXR0ZW1wdHMgdG8gYmUKICAgICAv
LyBjcnlwdG9ncmFwaGljYWxseSBzZWN1cmUgaWYgcG9zc2libGUgb24gdGhlIHRhcmdldCBwbGF0
Zm9ybQotICAgIGRvdWJsZSByYW5kb21OdW1iZXIoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
ZG91YmxlIHJhbmRvbU51bWJlcigpOwogCiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvdGV4dC9BdG9taWNTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL3RleHQvQXRvbWljU3RyaW5nLmgJKHJldmlzaW9uIDgyNTEzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zOCwyNyArMzgsMzEgQEAKIAogY2xhc3MgQXRvbWljU3RyaW5nIHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgdm9pZCBpbml0KCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGlu
aXQoKTsKIAotICAgIEF0b21pY1N0cmluZygpIHsgfQotICAgIEF0b21pY1N0cmluZyhjb25zdCBj
aGFyKiBzKSA6IG1fc3RyaW5nKGFkZChzKSkgeyB9CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIEF0
b21pY1N0cmluZygpIHsgfQorICAgIC8vIGNvcHkgY29uc3RydWN0b3IgbmVlZHMgdG8gYmUgZXhw
bGljaXRseSBkZWZpbmVkIHNvIHdlIGNhbiBzcGVjaWZ5IHByb3BlciBkbGwgbGlua2FnZQorICAg
IFdURl9FWFBPUlRfUFJJVkFURSBBdG9taWNTdHJpbmcoY29uc3QgQXRvbWljU3RyaW5nJiBzKSA6
IG1fc3RyaW5nKHMubV9zdHJpbmcpIHsgfQorICAgIFdURl9FWFBPUlRfUFJJVkFURSBBdG9taWNT
dHJpbmcoY29uc3QgY2hhciogcykgOiBtX3N0cmluZyhhZGQocykpIHsgfQogICAgIEF0b21pY1N0
cmluZyhjb25zdCBVQ2hhciogcywgdW5zaWduZWQgbGVuZ3RoKSA6IG1fc3RyaW5nKGFkZChzLCBs
ZW5ndGgpKSB7IH0KICAgICBBdG9taWNTdHJpbmcoY29uc3QgVUNoYXIqIHMsIHVuc2lnbmVkIGxl
bmd0aCwgdW5zaWduZWQgZXhpc3RpbmdIYXNoKSA6IG1fc3RyaW5nKGFkZChzLCBsZW5ndGgsIGV4
aXN0aW5nSGFzaCkpIHsgfQogICAgIEF0b21pY1N0cmluZyhjb25zdCBVQ2hhciogcykgOiBtX3N0
cmluZyhhZGQocykpIHsgfQogICAgIEFUT01JQ1NUUklOR19DT05WRVJTSU9OIEF0b21pY1N0cmlu
ZyhTdHJpbmdJbXBsKiBpbXApIDogbV9zdHJpbmcoYWRkKGltcCkpIHsgfQogICAgIEF0b21pY1N0
cmluZyhBdG9taWNTdHJpbmdJbXBsKiBpbXApIDogbV9zdHJpbmcoaW1wKSB7IH0KLSAgICBBVE9N
SUNTVFJJTkdfQ09OVkVSU0lPTiBBdG9taWNTdHJpbmcoY29uc3QgU3RyaW5nJiBzKSA6IG1fc3Ry
aW5nKGFkZChzLmltcGwoKSkpIHsgfQorICAgIFdURl9FWFBPUlRfUFJJVkFURSBBVE9NSUNTVFJJ
TkdfQ09OVkVSU0lPTiBBdG9taWNTdHJpbmcoY29uc3QgU3RyaW5nJiBzKSA6IG1fc3RyaW5nKGFk
ZChzLmltcGwoKSkpIHsgfQogCiAgICAgLy8gSGFzaCB0YWJsZSBkZWxldGVkIHZhbHVlcywgd2hp
Y2ggYXJlIG9ubHkgY29uc3RydWN0ZWQgYW5kIG5ldmVyIGNvcGllZCBvciBkZXN0cm95ZWQuCi0g
ICAgQXRvbWljU3RyaW5nKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkgOiBtX3N0cmlu
ZyhXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkgeyB9Ci0gICAgYm9vbCBpc0hhc2hUYWJsZURl
bGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmlzSGFzaFRhYmxlRGVsZXRlZFZh
bHVlKCk7IH0KKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgQXRvbWljU3RyaW5nKFdURjo6SGFzaFRh
YmxlRGVsZXRlZFZhbHVlVHlwZSkgOiBtX3N0cmluZyhXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1
ZSkgeyB9CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFs
dWUoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9
CiAKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nSW1wbCogZmluZChjb25zdCBVQ2hhciogcywgdW5z
aWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBleGlzdGluZ0hhc2gpOworICAgIFdURl9FWFBPUlRfUFJJ
VkFURSB+QXRvbWljU3RyaW5nKCkgeyB9CiAKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IEF0b21pY1N0cmluZ0ltcGwqIGZpbmQoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgsIHVu
c2lnbmVkIGV4aXN0aW5nSGFzaCk7CisKICAgICBvcGVyYXRvciBjb25zdCBTdHJpbmcmKCkgY29u
c3QgeyByZXR1cm4gbV9zdHJpbmc7IH0KICAgICBjb25zdCBTdHJpbmcmIHN0cmluZygpIGNvbnN0
IHsgcmV0dXJuIG1fc3RyaW5nOyB9OwogCi0gICAgQXRvbWljU3RyaW5nSW1wbCogaW1wbCgpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEF0b21pY1N0cmluZ0ltcGwgKj4obV9zdHJpbmcuaW1w
bCgpKTsgfQorICAgIFdURl9FWFBPUlRfUFJJVkFURSBBdG9taWNTdHJpbmdJbXBsKiBpbXBsKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXRvbWljU3RyaW5nSW1wbCAqPihtX3N0cmluZy5p
bXBsKCkpOyB9CiAgICAgCiAgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMoKSBjb25zdCB7IHJl
dHVybiBtX3N0cmluZy5jaGFyYWN0ZXJzKCk7IH0KICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25z
dCB7IHJldHVybiBtX3N0cmluZy5sZW5ndGgoKTsgfQpAQCAtODIsNyArODYsNyBAQAogICAgIGJv
b2wgZW5kc1dpdGgoY29uc3QgU3RyaW5nJiBzLCBib29sIGNhc2VTZW5zaXRpdmUgPSB0cnVlKSBj
b25zdAogICAgICAgICB7IHJldHVybiBtX3N0cmluZy5lbmRzV2l0aChzLCBjYXNlU2Vuc2l0aXZl
KTsgfQogICAgIAotICAgIEF0b21pY1N0cmluZyBsb3dlcigpIGNvbnN0OworICAgIFdURl9FWFBP
UlRfUFJJVkFURSBBdG9taWNTdHJpbmcgbG93ZXIoKSBjb25zdDsKICAgICBBdG9taWNTdHJpbmcg
dXBwZXIoKSBjb25zdCB7IHJldHVybiBBdG9taWNTdHJpbmcoaW1wbCgpLT51cHBlcigpKTsgfQog
ICAgIAogICAgIGludCB0b0ludChib29sKiBvayA9IDApIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5n
LnRvSW50KG9rKTsgfQpAQCAtMTEwLDE0ICsxMTQsMTQgQEAKIAogICAgIC8vIEF0b21pY1N0cmlu
Zzo6ZnJvbVVURjggd2lsbCByZXR1cm4gYSBudWxsIHN0cmluZyBpZgogICAgIC8vIHRoZSBpbnB1
dCBkYXRhIGNvbnRhaW5zIGludmFsaWQgVVRGLTggc2VxdWVuY2VzLgotICAgIHN0YXRpYyBBdG9t
aWNTdHJpbmcgZnJvbVVURjgoY29uc3QgY2hhciosIHNpemVfdCk7Ci0gICAgc3RhdGljIEF0b21p
Y1N0cmluZyBmcm9tVVRGOChjb25zdCBjaGFyKik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBBdG9taWNTdHJpbmcgZnJvbVVURjgoY29uc3QgY2hhciosIHNpemVfdCk7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBBdG9taWNTdHJpbmcgZnJvbVVURjgoY29uc3QgY2hhciop
OwogCiBwcml2YXRlOgogICAgIFN0cmluZyBtX3N0cmluZzsKICAgICAKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTdHJpbmdJbXBsPiBhZGQoY29uc3QgY2hhciopOwotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFN0cmluZ0ltcGw+IGFkZChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChjb25z
dCBjaGFyKik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmlu
Z0ltcGw+IGFkZChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRkKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoLCB1
bnNpZ25lZCBleGlzdGluZ0hhc2gpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+
IGFkZChjb25zdCBVQ2hhciopOwogICAgIEFMV0FZU19JTkxJTkUgUGFzc1JlZlB0cjxTdHJpbmdJ
bXBsPiBhZGQoU3RyaW5nSW1wbCogcikKQEAgLTEyNiwxMiArMTMwLDEyIEBACiAgICAgICAgICAg
ICByZXR1cm4gcjsKICAgICAgICAgcmV0dXJuIGFkZFNsb3dDYXNlKHIpOwogICAgIH0KLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGRTbG93Q2FzZShTdHJpbmdJbXBsKik7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZFNs
b3dDYXNlKFN0cmluZ0ltcGwqKTsKIH07CiAKIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3Qg
QXRvbWljU3RyaW5nJiBhLCBjb25zdCBBdG9taWNTdHJpbmcmIGIpIHsgcmV0dXJuIGEuaW1wbCgp
ID09IGIuaW1wbCgpOyB9Ci1ib29sIG9wZXJhdG9yPT0oY29uc3QgQXRvbWljU3RyaW5nJiBhLCBj
b25zdCBjaGFyKiBiKTsKLWJvb2wgb3BlcmF0b3I9PShjb25zdCBBdG9taWNTdHJpbmcmIGEsIGNv
bnN0IFZlY3RvcjxVQ2hhcj4mIGIpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBjaGFyKik7CitXVEZfRVhQT1JUX1BSSVZBVEUg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IFZlY3RvcjxVQ2hhcj4m
KTsKIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgQXRvbWljU3RyaW5nJiBhLCBjb25zdCBT
dHJpbmcmIGIpIHsgcmV0dXJuIGVxdWFsKGEuaW1wbCgpLCBiLmltcGwoKSk7IH0KIGlubGluZSBi
b29sIG9wZXJhdG9yPT0oY29uc3QgY2hhciogYSwgY29uc3QgQXRvbWljU3RyaW5nJiBiKSB7IHJl
dHVybiBiID09IGE7IH0KIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgU3RyaW5nJiBhLCBj
b25zdCBBdG9taWNTdHJpbmcmIGIpIHsgcmV0dXJuIGVxdWFsKGEuaW1wbCgpLCBiLmltcGwoKSk7
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9DU3RyaW5nLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L0NTdHJpbmcuaAkocmV2aXNp
b24gODI1MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvQ1N0cmluZy5oCSh3
b3JraW5nIGNvcHkpCkBAIC01MiwxMCArNTIsMTAgQEAKIGNsYXNzIENTdHJpbmcgewogcHVibGlj
OgogICAgIENTdHJpbmcoKSB7IH0KLSAgICBDU3RyaW5nKGNvbnN0IGNoYXIqKTsKLSAgICBDU3Ry
aW5nKGNvbnN0IGNoYXIqLCBzaXplX3QgbGVuZ3RoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
Q1N0cmluZyhjb25zdCBjaGFyKik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIENTdHJpbmcoY29u
c3QgY2hhciosIHNpemVfdCBsZW5ndGgpOwogICAgIENTdHJpbmcoQ1N0cmluZ0J1ZmZlciogYnVm
ZmVyKSA6IG1fYnVmZmVyKGJ1ZmZlcikgeyB9Ci0gICAgc3RhdGljIENTdHJpbmcgbmV3VW5pbml0
aWFsaXplZChzaXplX3QgbGVuZ3RoLCBjaGFyKiYgY2hhcmFjdGVyQnVmZmVyKTsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIENTdHJpbmcgbmV3VW5pbml0aWFsaXplZChzaXplX3QgbGVu
Z3RoLCBjaGFyKiYgY2hhcmFjdGVyQnVmZmVyKTsKIAogICAgIGNvbnN0IGNoYXIqIGRhdGEoKSBj
b25zdAogICAgIHsKQEAgLTc3LDcgKzc3LDcgQEAKICAgICBSZWZQdHI8Q1N0cmluZ0J1ZmZlcj4g
bV9idWZmZXI7CiB9OwogCi1ib29sIG9wZXJhdG9yPT0oY29uc3QgQ1N0cmluZyYgYSwgY29uc3Qg
Q1N0cmluZyYgYik7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENT
dHJpbmcmIGEsIGNvbnN0IENTdHJpbmcmIGIpOwogaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBDU3RyaW5nJiBhLCBjb25zdCBDU3RyaW5nJiBiKSB7IHJldHVybiAhKGEgPT0gYik7IH0KIAog
fSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQv
U3RyaW5nQnVpbGRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
dGV4dC9TdHJpbmdCdWlsZGVyLmgJKHJldmlzaW9uIDgyNTEzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsOCAr
MzgsOCBAQAogICAgIHsKICAgICB9CiAKLSAgICB2b2lkIGFwcGVuZChjb25zdCBVQ2hhciosIHVu
c2lnbmVkKTsKLSAgICB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiwgdW5zaWduZWQpOworICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSB2b2lkIGFwcGVuZChjb25zdCBVQ2hhciosIHVuc2lnbmVkKTsKKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmQoY29uc3QgY2hhciosIHVuc2lnbmVkKTsK
IAogICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIHsKQEAgLTk5LDEx
ICs5OSwxMSBAQAogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIWxlbmd0aCgp
OyB9CiAKLSAgICB2b2lkIHJlc2VydmVDYXBhY2l0eSh1bnNpZ25lZCBuZXdDYXBhY2l0eSk7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVzZXJ2ZUNhcGFjaXR5KHVuc2lnbmVkIG5ld0Nh
cGFjaXR5KTsKIAotICAgIHZvaWQgcmVzaXplKHVuc2lnbmVkIG5ld1NpemUpOworICAgIFdURl9F
WFBPUlRfUFJJVkFURSB2b2lkIHJlc2l6ZSh1bnNpZ25lZCBuZXdTaXplKTsKIAotICAgIHZvaWQg
c2hyaW5rVG9GaXQoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzaHJpbmtUb0ZpdCgp
OwogCiAgICAgVUNoYXIgb3BlcmF0b3JbXSh1bnNpZ25lZCBpKSBjb25zdAogICAgIHsKQEAgLTEy
NCw3ICsxMjQsNyBAQAogcHJpdmF0ZToKICAgICB2b2lkIGFsbG9jYXRlQnVmZmVyKGNvbnN0IFVD
aGFyKiBjdXJyZW50Q2hhcmFjdGVycywgdW5zaWduZWQgcmVxdWlyZWRMZW5ndGgpOwogICAgIFVD
aGFyKiBhcHBlbmRVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgdm9pZCByZWlm
eVN0cmluZygpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHJlaWZ5U3RyaW5nKCk7CiAK
ICAgICB1bnNpZ25lZCBtX2xlbmd0aDsKICAgICBTdHJpbmcgbV9zdHJpbmc7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvV1RGU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5oCShyZXZpc2lvbiA4MjUxMykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9XVEZTdHJpbmcuaAkod29ya2luZyBj
b3B5KQpAQCAtNjcsOCArNjcsOCBAQAogCiBib29sIGNoYXJhY3RlcnNBcmVBbGxBU0NJSShjb25z
dCBVQ2hhciosIHNpemVfdCk7CiBib29sIGNoYXJhY3RlcnNBcmVBbGxMYXRpbjEoY29uc3QgVUNo
YXIqLCBzaXplX3QpOwotaW50IGNoYXJhY3RlcnNUb0ludFN0cmljdChjb25zdCBVQ2hhciosIHNp
emVfdCwgYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKTsKLXVuc2lnbmVkIGNoYXJhY3RlcnNU
b1VJbnRTdHJpY3QoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gMCwgaW50IGJhc2Ug
PSAxMCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgaW50IGNoYXJhY3RlcnNUb0ludFN0cmljdChjb25z
dCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKTsKK1dURl9FWFBP
UlRfUFJJVkFURSB1bnNpZ25lZCBjaGFyYWN0ZXJzVG9VSW50U3RyaWN0KGNvbnN0IFVDaGFyKiwg
c2l6ZV90LCBib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApOwogaW50NjRfdCBjaGFyYWN0ZXJz
VG9JbnQ2NFN0cmljdChjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSAwLCBpbnQgYmFz
ZSA9IDEwKTsKIHVpbnQ2NF90IGNoYXJhY3RlcnNUb1VJbnQ2NFN0cmljdChjb25zdCBVQ2hhcios
IHNpemVfdCwgYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKTsKIGludHB0cl90IGNoYXJhY3Rl
cnNUb0ludFB0clN0cmljdChjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSAwLCBpbnQg
YmFzZSA9IDEwKTsKQEAgLTc5LDcgKzc5LDcgQEAKIHVpbnQ2NF90IGNoYXJhY3RlcnNUb1VJbnQ2
NChjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSAwKTsgLy8gaWdub3JlcyB0cmFpbGlu
ZyBnYXJiYWdlCiBpbnRwdHJfdCBjaGFyYWN0ZXJzVG9JbnRQdHIoY29uc3QgVUNoYXIqLCBzaXpl
X3QsIGJvb2wqIG9rID0gMCk7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQogCi1kb3VibGUg
Y2hhcmFjdGVyc1RvRG91YmxlKGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDAsIGJv
b2wqIGRpZFJlYWROdW1iZXIgPSAwKTsKK1dURl9FWFBPUlRfUFJJVkFURSBkb3VibGUgY2hhcmFj
dGVyc1RvRG91YmxlKGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDAsIGJvb2wqIGRp
ZFJlYWROdW1iZXIgPSAwKTsKIGZsb2F0IGNoYXJhY3RlcnNUb0Zsb2F0KGNvbnN0IFVDaGFyKiwg
c2l6ZV90LCBib29sKiBvayA9IDAsIGJvb2wqIGRpZFJlYWROdW1iZXIgPSAwKTsKIAogdGVtcGxh
dGU8Ym9vbCBpc1NwZWNpYWxDaGFyYWN0ZXIoVUNoYXIpPiBib29sIGlzQWxsU3BlY2lhbENoYXJh
Y3RlcnMoY29uc3QgVUNoYXIqLCBzaXplX3QpOwpAQCAtODcsMTAgKzg3LDEwIEBACiBjbGFzcyBT
dHJpbmcgewogcHVibGljOgogICAgIC8vIENvbnN0cnVjdCBhIG51bGwgc3RyaW5nLCBkaXN0aW5n
dWlzaGFibGUgZnJvbSBhbiBlbXB0eSBzdHJpbmcuCi0gICAgU3RyaW5nKCkgeyB9CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIFN0cmluZygpIHsgfQogCiAgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5n
IHdpdGggVVRGLTE2IGRhdGEuCi0gICAgU3RyaW5nKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1
bnNpZ25lZCBsZW5ndGgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcoY29uc3QgVUNo
YXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCk7CiAKICAgICAvLyBDb25zdHJ1Y3QgYSBz
dHJpbmcgYnkgY29weWluZyB0aGUgY29udGVudHMgb2YgYSB2ZWN0b3IuICBUbyBhdm9pZAogICAg
IC8vIGNvcHlpbmcsIGNvbnNpZGVyIHVzaW5nIFN0cmluZzo6YWRvcHQgaW5zdGVhZC4KQEAgLTk4
LDE4ICs5OCwxOCBAQAogICAgIGV4cGxpY2l0IFN0cmluZyhjb25zdCBWZWN0b3I8VUNoYXIsIGlu
bGluZUNhcGFjaXR5PiYpOwogCiAgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdpdGggVVRGLTE2
IGRhdGEsIGZyb20gYSBudWxsLXRlcm1pbmF0ZWQgc291cmNlLgotICAgIFN0cmluZyhjb25zdCBV
Q2hhciopOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcoY29uc3QgVUNoYXIqKTsKIAog
ICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyB3aXRoIGxhdGluMSBkYXRhLgotICAgIFN0cmluZyhj
b25zdCBjaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIFdURl9FWFBPUlRf
UFJJVkFURSBTdHJpbmcoY29uc3QgY2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsK
IAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyB3aXRoIGxhdGluMSBkYXRhLCBmcm9tIGEgbnVs
bC10ZXJtaW5hdGVkIHNvdXJjZS4KLSAgICBTdHJpbmcoY29uc3QgY2hhciogY2hhcmFjdGVycyk7
CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyhjb25zdCBjaGFyKiBjaGFyYWN0ZXJzKTsK
IAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyByZWZlcmVuY2luZyBhbiBleGlzdGluZyBTdHJp
bmdJbXBsLgotICAgIFN0cmluZyhTdHJpbmdJbXBsKiBpbXBsKSA6IG1faW1wbChpbXBsKSB7IH0K
LSAgICBTdHJpbmcoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBpbXBsKSA6IG1faW1wbChpbXBsKSB7
IH0KLSAgICBTdHJpbmcoUmVmUHRyPFN0cmluZ0ltcGw+IGltcGwpIDogbV9pbXBsKGltcGwpIHsg
fQorICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcoU3RyaW5nSW1wbCogaW1wbCkgOiBtX2lt
cGwoaW1wbCkgeyB9CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyhQYXNzUmVmUHRyPFN0
cmluZ0ltcGw+IGltcGwpIDogbV9pbXBsKGltcGwpIHsgfQorICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBTdHJpbmcoUmVmUHRyPFN0cmluZ0ltcGw+IGltcGwpIDogbV9pbXBsKGltcGwpIHsgfQogCiAg
ICAgLy8gSW5saW5lIHRoZSBkZXN0cnVjdG9yLgogICAgIEFMV0FZU19JTkxJTkUgflN0cmluZygp
IHsgfQpAQCAtMTM5LDkgKzEzOSw5IEBACiAgICAgICAgIHJldHVybiBtX2ltcGwtPmNoYXJhY3Rl
cnMoKTsKICAgICB9CiAKLSAgICBDU3RyaW5nIGFzY2lpKCkgY29uc3Q7Ci0gICAgQ1N0cmluZyBs
YXRpbjEoKSBjb25zdDsKLSAgICBDU3RyaW5nIHV0ZjgoYm9vbCBzdHJpY3QgPSBmYWxzZSkgY29u
c3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIENTdHJpbmcgYXNjaWkoKSBjb25zdDsKKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgQ1N0cmluZyBsYXRpbjEoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgQ1N0cmluZyB1dGY4KGJvb2wgc3RyaWN0ID0gZmFsc2UpIGNvbnN0OwogCiAgICAg
VUNoYXIgb3BlcmF0b3JbXSh1bnNpZ25lZCBpbmRleCkgY29uc3QKICAgICB7CkBAIC0xNTAsMTUg
KzE1MCwxNSBAQAogICAgICAgICByZXR1cm4gbV9pbXBsLT5jaGFyYWN0ZXJzKClbaW5kZXhdOwog
ICAgIH0KIAotICAgIHN0YXRpYyBTdHJpbmcgbnVtYmVyKHNob3J0KTsKLSAgICBzdGF0aWMgU3Ry
aW5nIG51bWJlcih1bnNpZ25lZCBzaG9ydCk7Ci0gICAgc3RhdGljIFN0cmluZyBudW1iZXIoaW50
KTsKLSAgICBzdGF0aWMgU3RyaW5nIG51bWJlcih1bnNpZ25lZCk7Ci0gICAgc3RhdGljIFN0cmlu
ZyBudW1iZXIobG9uZyk7Ci0gICAgc3RhdGljIFN0cmluZyBudW1iZXIodW5zaWduZWQgbG9uZyk7
Ci0gICAgc3RhdGljIFN0cmluZyBudW1iZXIobG9uZyBsb25nKTsKLSAgICBzdGF0aWMgU3RyaW5n
IG51bWJlcih1bnNpZ25lZCBsb25nIGxvbmcpOwotICAgIHN0YXRpYyBTdHJpbmcgbnVtYmVyKGRv
dWJsZSk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJpbmcgbnVtYmVyKHNob3J0
KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cmluZyBudW1iZXIodW5zaWduZWQg
c2hvcnQpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RyaW5nIG51bWJlcihpbnQp
OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RyaW5nIG51bWJlcih1bnNpZ25lZCk7
CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJpbmcgbnVtYmVyKGxvbmcpOworICAg
IFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RyaW5nIG51bWJlcih1bnNpZ25lZCBsb25nKTsK
KyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cmluZyBudW1iZXIobG9uZyBsb25nKTsK
KyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cmluZyBudW1iZXIodW5zaWduZWQgbG9u
ZyBsb25nKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cmluZyBudW1iZXIoZG91
YmxlKTsKIAogICAgIC8vIEZpbmQgYSBzaW5nbGUgY2hhcmFjdGVyIG9yIHN0cmluZywgYWxzbyB3
aXRoIG1hdGNoIGZ1bmN0aW9uICYgbGF0aW4xIGZvcm1zLgogICAgIHNpemVfdCBmaW5kKFVDaGFy
IGMsIHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29uc3QKQEAgLTE3Nyw5ICsxNzcsOSBAQAogICAgICAg
ICB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPnJldmVyc2VGaW5kKHN0ci5pbXBsKCksIHN0YXJ0
KSA6IG5vdEZvdW5kOyB9CiAKICAgICAvLyBDYXNlIGluc2Vuc2l0aXZlIHN0cmluZyBtYXRjaGlu
Zy4KLSAgICBzaXplX3QgZmluZElnbm9yaW5nQ2FzZShjb25zdCBjaGFyKiBzdHIsIHVuc2lnbmVk
IHN0YXJ0ID0gMCkgY29uc3QKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZpbmRJZ25v
cmluZ0Nhc2UoY29uc3QgY2hhciogc3RyLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0CiAgICAg
ICAgIHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZmluZElnbm9yaW5nQ2FzZShzdHIsIHN0YXJ0
KSA6IG5vdEZvdW5kOyB9Ci0gICAgc2l6ZV90IGZpbmRJZ25vcmluZ0Nhc2UoY29uc3QgU3RyaW5n
JiBzdHIsIHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29uc3QKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
c2l6ZV90IGZpbmRJZ25vcmluZ0Nhc2UoY29uc3QgU3RyaW5nJiBzdHIsIHVuc2lnbmVkIHN0YXJ0
ID0gMCkgY29uc3QKICAgICAgICAgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kSWdub3Jp
bmdDYXNlKHN0ci5pbXBsKCksIHN0YXJ0KSA6IG5vdEZvdW5kOyB9CiAgICAgc2l6ZV90IHJldmVy
c2VGaW5kSWdub3JpbmdDYXNlKGNvbnN0IFN0cmluZyYgc3RyLCB1bnNpZ25lZCBzdGFydCA9IFVJ
TlRfTUFYKSBjb25zdAogICAgICAgICB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPnJldmVyc2VG
aW5kSWdub3JpbmdDYXNlKHN0ci5pbXBsKCksIHN0YXJ0KSA6IG5vdEZvdW5kOyB9CkBAIC0xOTIs
OSArMTkyLDkgQEAKICAgICBzaXplX3QgcmV2ZXJzZUZpbmQoY29uc3QgU3RyaW5nJiBzdHIsIHVu
c2lnbmVkIHN0YXJ0LCBib29sIGNhc2VTZW5zaXRpdmUpIGNvbnN0CiAgICAgICAgIHsgcmV0dXJu
IGNhc2VTZW5zaXRpdmUgPyByZXZlcnNlRmluZChzdHIsIHN0YXJ0KSA6IHJldmVyc2VGaW5kSWdu
b3JpbmdDYXNlKHN0ciwgc3RhcnQpOyB9CiAKLSAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVyc1dp
dGhOdWxsVGVybWluYXRpb24oKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgY29uc3QgVUNoYXIq
IGNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCk7CiAgICAgCi0gICAgVUNoYXIzMiBjaGFy
YWN0ZXJTdGFydGluZ0F0KHVuc2lnbmVkKSBjb25zdDsgLy8gRGl0dG8uCisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIFVDaGFyMzIgY2hhcmFjdGVyU3RhcnRpbmdBdCh1bnNpZ25lZCkgY29uc3Q7IC8v
IERpdHRvLgogICAgIAogICAgIGJvb2wgY29udGFpbnMoVUNoYXIgYykgY29uc3QgeyByZXR1cm4g
ZmluZChjKSAhPSBub3RGb3VuZDsgfQogICAgIGJvb2wgY29udGFpbnMoY29uc3QgY2hhciogc3Ry
LCBib29sIGNhc2VTZW5zaXRpdmUgPSB0cnVlKSBjb25zdCB7IHJldHVybiBmaW5kKHN0ciwgMCwg
Y2FzZVNlbnNpdGl2ZSkgIT0gbm90Rm91bmQ7IH0KQEAgLTIwNSwxMSArMjA1LDExIEBACiAgICAg
Ym9vbCBlbmRzV2l0aChjb25zdCBTdHJpbmcmIHMsIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IHRydWUp
IGNvbnN0CiAgICAgICAgIHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZW5kc1dpdGgocy5pbXBs
KCksIGNhc2VTZW5zaXRpdmUpIDogcy5pc0VtcHR5KCk7IH0KIAotICAgIHZvaWQgYXBwZW5kKGNv
bnN0IFN0cmluZyYpOwotICAgIHZvaWQgYXBwZW5kKGNoYXIpOwotICAgIHZvaWQgYXBwZW5kKFVD
aGFyKTsKLSAgICB2b2lkIGFwcGVuZChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7Ci0g
ICAgdm9pZCBpbnNlcnQoY29uc3QgU3RyaW5nJiwgdW5zaWduZWQgcG9zKTsKKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5nJik7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHZvaWQgYXBwZW5kKGNoYXIpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGFw
cGVuZChVQ2hhcik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYXBwZW5kKGNvbnN0IFVD
aGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBpbnNl
cnQoY29uc3QgU3RyaW5nJiwgdW5zaWduZWQgcG9zKTsKICAgICB2b2lkIGluc2VydChjb25zdCBV
Q2hhciosIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgcG9zKTsKIAogICAgIFN0cmluZyYgcmVw
bGFjZShVQ2hhciBhLCBVQ2hhciBiKSB7IGlmIChtX2ltcGwpIG1faW1wbCA9IG1faW1wbC0+cmVw
bGFjZShhLCBiKTsgcmV0dXJuICp0aGlzOyB9CkBAIC0yMjEsMzEgKzIyMSwzMSBAQAogICAgIHZv
aWQgbWFrZVVwcGVyKCkgeyBpZiAobV9pbXBsKSBtX2ltcGwgPSBtX2ltcGwtPnVwcGVyKCk7IH0K
ICAgICB2b2lkIG1ha2VTZWN1cmUoVUNoYXIgYUNoYXIpIHsgaWYgKG1faW1wbCkgbV9pbXBsID0g
bV9pbXBsLT5zZWN1cmUoYUNoYXIpOyB9CiAKLSAgICB2b2lkIHRydW5jYXRlKHVuc2lnbmVkIGxl
bik7Ci0gICAgdm9pZCByZW1vdmUodW5zaWduZWQgcG9zLCBpbnQgbGVuID0gMSk7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIHZvaWQgdHJ1bmNhdGUodW5zaWduZWQgbGVuKTsKKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgdm9pZCByZW1vdmUodW5zaWduZWQgcG9zLCBpbnQgbGVuID0gMSk7CiAKLSAg
ICBTdHJpbmcgc3Vic3RyaW5nKHVuc2lnbmVkIHBvcywgdW5zaWduZWQgbGVuID0gVUlOVF9NQVgp
IGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgc3Vic3RyaW5nKHVuc2lnbmVk
IHBvcywgdW5zaWduZWQgbGVuID0gVUlOVF9NQVgpIGNvbnN0OwogICAgIFN0cmluZyBzdWJzdHJp
bmdTaGFyaW5nSW1wbCh1bnNpZ25lZCBwb3MsIHVuc2lnbmVkIGxlbiA9IFVJTlRfTUFYKSBjb25z
dDsKICAgICBTdHJpbmcgbGVmdCh1bnNpZ25lZCBsZW4pIGNvbnN0IHsgcmV0dXJuIHN1YnN0cmlu
ZygwLCBsZW4pOyB9CiAgICAgU3RyaW5nIHJpZ2h0KHVuc2lnbmVkIGxlbikgY29uc3QgeyByZXR1
cm4gc3Vic3RyaW5nKGxlbmd0aCgpIC0gbGVuLCBsZW4pOyB9CiAKICAgICAvLyBSZXR1cm5zIGEg
bG93ZXJjYXNlL3VwcGVyY2FzZSB2ZXJzaW9uIG9mIHRoZSBzdHJpbmcKLSAgICBTdHJpbmcgbG93
ZXIoKSBjb25zdDsKLSAgICBTdHJpbmcgdXBwZXIoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgU3RyaW5nIGxvd2VyKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmlu
ZyB1cHBlcigpIGNvbnN0OwogCi0gICAgU3RyaW5nIHN0cmlwV2hpdGVTcGFjZSgpIGNvbnN0Owot
ICAgIFN0cmluZyBzaW1wbGlmeVdoaXRlU3BhY2UoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgU3RyaW5nIHN0cmlwV2hpdGVTcGFjZSgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBTdHJpbmcgc2ltcGxpZnlXaGl0ZVNwYWNlKCkgY29uc3Q7CiAKLSAgICBTdHJpbmcgcmVt
b3ZlQ2hhcmFjdGVycyhDaGFyYWN0ZXJNYXRjaEZ1bmN0aW9uUHRyKSBjb25zdDsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nIHJlbW92ZUNoYXJhY3RlcnMoQ2hhcmFjdGVyTWF0Y2hGdW5j
dGlvblB0cikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Ym9vbCBpc1NwZWNpYWxDaGFyYWN0ZXIoVUNo
YXIpPiBib29sIGlzQWxsU3BlY2lhbENoYXJhY3RlcnMoKSBjb25zdDsKIAogICAgIC8vIFJldHVy
biB0aGUgc3RyaW5nIHdpdGggY2FzZSBmb2xkZWQgZm9yIGNhc2UgaW5zZW5zaXRpdmUgY29tcGFy
aXNvbi4KLSAgICBTdHJpbmcgZm9sZENhc2UoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgU3RyaW5nIGZvbGRDYXNlKCkgY29uc3Q7CiAKICNpZiAhUExBVEZPUk0oUVQpCi0gICAgc3Rh
dGljIFN0cmluZyBmb3JtYXQoY29uc3QgY2hhciAqLCAuLi4pIFdURl9BVFRSSUJVVEVfUFJJTlRG
KDEsIDIpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RyaW5nIGZvcm1hdChjb25z
dCBjaGFyICosIC4uLikgV1RGX0FUVFJJQlVURV9QUklOVEYoMSwgMik7CiAjZWxzZQotICAgIHN0
YXRpYyBTdHJpbmcgZm9ybWF0KGNvbnN0IGNoYXIgKiwgLi4uKTsKKyAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIFN0cmluZyBmb3JtYXQoY29uc3QgY2hhciAqLCAuLi4pOwogI2VuZGlmCiAK
ICAgICAvLyBSZXR1cm5zIGFuIHVuaW5pdGlhbGl6ZWQgc3RyaW5nLiBUaGUgY2hhcmFjdGVycyBu
ZWVkcyB0byBiZSB3cml0dGVuCkBAIC0yNTMsMzQgKzI1MywzNCBAQAogICAgIC8vIEZhaWx1cmUg
dG8gZG8gdGhpcyB3aWxsIGhhdmUgdW5wcmVkaWN0YWJsZSByZXN1bHRzLgogICAgIHN0YXRpYyBT
dHJpbmcgY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgsIFVDaGFyKiYgZGF0YSkg
eyByZXR1cm4gU3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgsIGRhdGEpOyB9
CiAKLSAgICB2b2lkIHNwbGl0KGNvbnN0IFN0cmluZyYgc2VwYXJhdG9yLCBWZWN0b3I8U3RyaW5n
PiYgcmVzdWx0KSBjb25zdDsKLSAgICB2b2lkIHNwbGl0KGNvbnN0IFN0cmluZyYgc2VwYXJhdG9y
LCBib29sIGFsbG93RW1wdHlFbnRyaWVzLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KSBjb25zdDsK
LSAgICB2b2lkIHNwbGl0KFVDaGFyIHNlcGFyYXRvciwgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkg
Y29uc3Q7Ci0gICAgdm9pZCBzcGxpdChVQ2hhciBzZXBhcmF0b3IsIGJvb2wgYWxsb3dFbXB0eUVu
dHJpZXMsIFZlY3RvcjxTdHJpbmc+JiByZXN1bHQpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJ
VkFURSB2b2lkIHNwbGl0KGNvbnN0IFN0cmluZyYgc2VwYXJhdG9yLCBWZWN0b3I8U3RyaW5nPiYg
cmVzdWx0KSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzcGxpdChjb25zdCBT
dHJpbmcmIHNlcGFyYXRvciwgYm9vbCBhbGxvd0VtcHR5RW50cmllcywgVmVjdG9yPFN0cmluZz4m
IHJlc3VsdCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc3BsaXQoVUNoYXIg
c2VwYXJhdG9yLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KSBjb25zdDsKKyAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgdm9pZCBzcGxpdChVQ2hhciBzZXBhcmF0b3IsIGJvb2wgYWxsb3dFbXB0eUVudHJp
ZXMsIFZlY3RvcjxTdHJpbmc+JiByZXN1bHQpIGNvbnN0OwogCi0gICAgaW50IHRvSW50U3RyaWN0
KGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCkgY29uc3Q7Ci0gICAgdW5zaWduZWQgdG9VSW50
U3RyaWN0KGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCkgY29uc3Q7Ci0gICAgaW50NjRfdCB0
b0ludDY0U3RyaWN0KGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCkgY29uc3Q7Ci0gICAgdWlu
dDY0X3QgdG9VSW50NjRTdHJpY3QoYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKSBjb25zdDsK
LSAgICBpbnRwdHJfdCB0b0ludFB0clN0cmljdChib29sKiBvayA9IDAsIGludCBiYXNlID0gMTAp
IGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBpbnQgdG9JbnRTdHJpY3QoYm9vbCogb2sg
PSAwLCBpbnQgYmFzZSA9IDEwKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdW5zaWdu
ZWQgdG9VSW50U3RyaWN0KGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCkgY29uc3Q7CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIGludDY0X3QgdG9JbnQ2NFN0cmljdChib29sKiBvayA9IDAsIGlu
dCBiYXNlID0gMTApIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSB1aW50NjRfdCB0b1VJ
bnQ2NFN0cmljdChib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApIGNvbnN0OworICAgIFdURl9F
WFBPUlRfUFJJVkFURSBpbnRwdHJfdCB0b0ludFB0clN0cmljdChib29sKiBvayA9IDAsIGludCBi
YXNlID0gMTApIGNvbnN0OwogCi0gICAgaW50IHRvSW50KGJvb2wqIG9rID0gMCkgY29uc3Q7Ci0g
ICAgdW5zaWduZWQgdG9VSW50KGJvb2wqIG9rID0gMCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIGludCB0b0ludChib29sKiBvayA9IDApIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJ
VkFURSB1bnNpZ25lZCB0b1VJbnQoYm9vbCogb2sgPSAwKSBjb25zdDsKICAgICBpbnQ2NF90IHRv
SW50NjQoYm9vbCogb2sgPSAwKSBjb25zdDsKLSAgICB1aW50NjRfdCB0b1VJbnQ2NChib29sKiBv
ayA9IDApIGNvbnN0OwotICAgIGludHB0cl90IHRvSW50UHRyKGJvb2wqIG9rID0gMCkgY29uc3Q7
Ci0gICAgZG91YmxlIHRvRG91YmxlKGJvb2wqIG9rID0gMCwgYm9vbCogZGlkUmVhZE51bWJlciA9
IDApIGNvbnN0OwotICAgIGZsb2F0IHRvRmxvYXQoYm9vbCogb2sgPSAwLCBib29sKiBkaWRSZWFk
TnVtYmVyID0gMCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHVpbnQ2NF90IHRvVUlu
dDY0KGJvb2wqIG9rID0gMCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGludHB0cl90
IHRvSW50UHRyKGJvb2wqIG9rID0gMCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGRv
dWJsZSB0b0RvdWJsZShib29sKiBvayA9IDAsIGJvb2wqIGRpZFJlYWROdW1iZXIgPSAwKSBjb25z
dDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgZmxvYXQgdG9GbG9hdChib29sKiBvayA9IDAsIGJv
b2wqIGRpZFJlYWROdW1iZXIgPSAwKSBjb25zdDsKIAogICAgIGJvb2wgcGVyY2VudGFnZShpbnQm
IHBlcmNlbnRhZ2UpIGNvbnN0OwogCiAgICAgLy8gUmV0dXJucyBhIFN0cmluZ0ltcGwgc3VpdGFi
bGUgZm9yIHVzZSBvbiBhbm90aGVyIHRocmVhZC4KLSAgICBTdHJpbmcgY3Jvc3NUaHJlYWRTdHJp
bmcoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGNyb3NzVGhyZWFkU3Ry
aW5nKCkgY29uc3Q7CiAgICAgLy8gTWFrZXMgYSBkZWVwIGNvcHkuIEhlbHBmdWwgb25seSBpZiB5
b3UgbmVlZCB0byB1c2UgYSBTdHJpbmcgb24gYW5vdGhlciB0aHJlYWQKICAgICAvLyAodXNlIGNy
b3NzVGhyZWFkU3RyaW5nIGlmIHRoZSBtZXRob2QgY2FsbCBkb2Vzbid0IG5lZWQgdG8gYmUgdGhy
ZWFkc2FmZSkuCiAgICAgLy8gU2luY2UgdGhlIHVuZGVybHlpbmcgU3RyaW5nSW1wbCBvYmplY3Rz
IGFyZSBpbW11dGFibGUsIHRoZXJlJ3Mgbm8gb3RoZXIgcmVhc29uCiAgICAgLy8gdG8gZXZlciBw
cmVmZXIgY29weSgpIG92ZXIgcGxhaW4gb2xkIGFzc2lnbm1lbnQuCi0gICAgU3RyaW5nIHRocmVh
ZHNhZmVDb3B5KCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyB0aHJlYWRz
YWZlQ29weSgpIGNvbnN0OwogCiAgICAgLy8gUHJldmVudCBTdHJpbmdzIGZyb20gYmVpbmcgaW1w
bGljaXRseSBjb252ZXJ0YWJsZSB0byBib29sIGFzIGl0IHdpbGwgYmUgYW1iaWd1b3VzIG9uIGFu
eSBwbGF0Zm9ybSB0aGF0CiAgICAgLy8gYWxsb3dzIGltcGxpY2l0IGNvbnZlcnNpb24gdG8gYW5v
dGhlciBwb2ludGVyIHR5cGUgKGUuZy4sIE1hYyBhbGxvd3MgaW1wbGljaXQgY29udmVyc2lvbiB0
byBOU1N0cmluZyopLgpAQCAtMzA5LDggKzMwOSw4IEBACiAjZW5kaWYKIAogI2lmIFBMQVRGT1JN
KFdYKQotICAgIFN0cmluZyhjb25zdCB3eFN0cmluZyYpOwotICAgIG9wZXJhdG9yIHd4U3RyaW5n
KCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyhjb25zdCB3eFN0cmluZyYp
OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBvcGVyYXRvciB3eFN0cmluZygpIGNvbnN0OwogI2Vu
ZGlmCiAKICNpZiBQTEFURk9STShIQUlLVSkKQEAgLTMyNCwxMSArMzI0LDExIEBACiAKICAgICAv
LyBTdHJpbmc6OmZyb21VVEY4IHdpbGwgcmV0dXJuIGEgbnVsbCBzdHJpbmcgaWYKICAgICAvLyB0
aGUgaW5wdXQgZGF0YSBjb250YWlucyBpbnZhbGlkIFVURi04IHNlcXVlbmNlcy4KLSAgICBzdGF0
aWMgU3RyaW5nIGZyb21VVEY4KGNvbnN0IGNoYXIqLCBzaXplX3QpOwotICAgIHN0YXRpYyBTdHJp
bmcgZnJvbVVURjgoY29uc3QgY2hhciopOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMg
U3RyaW5nIGZyb21VVEY4KGNvbnN0IGNoYXIqLCBzaXplX3QpOworICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgU3RyaW5nIGZyb21VVEY4KGNvbnN0IGNoYXIqKTsKIAogICAgIC8vIFRyaWVz
IHRvIGNvbnZlcnQgdGhlIHBhc3NlZCBpbiBzdHJpbmcgdG8gVVRGLTgsIGJ1dCB3aWxsIGZhbGwg
YmFjayB0byBMYXRpbi0xIGlmIHRoZSBzdHJpbmcgaXMgbm90IHZhbGlkIFVURi04LgotICAgIHN0
YXRpYyBTdHJpbmcgZnJvbVVURjhXaXRoTGF0aW4xRmFsbGJhY2soY29uc3QgY2hhciosIHNpemVf
dCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJpbmcgZnJvbVVURjhXaXRoTGF0
aW4xRmFsbGJhY2soY29uc3QgY2hhciosIHNpemVfdCk7CiAgICAgCiAgICAgLy8gRGV0ZXJtaW5l
cyB0aGUgd3JpdGluZyBkaXJlY3Rpb24gdXNpbmcgdGhlIFVuaWNvZGUgQmlkaSBBbGdvcml0aG0g
cnVsZXMgUDIgYW5kIFAzLgogICAgIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIGRlZmF1bHRXcml0
aW5nRGlyZWN0aW9uKGJvb2wqIGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5ID0gMCkgY29uc3QKQEAg
LTM0NSw3ICszNDUsNyBAQAogCiAgICAgLy8gSGFzaCB0YWJsZSBkZWxldGVkIHZhbHVlcywgd2hp
Y2ggYXJlIG9ubHkgY29uc3RydWN0ZWQgYW5kIG5ldmVyIGNvcGllZCBvciBkZXN0cm95ZWQuCiAg
ICAgU3RyaW5nKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkgOiBtX2ltcGwoV1RGOjpI
YXNoVGFibGVEZWxldGVkVmFsdWUpIHsgfQotICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFs
dWUoKSBjb25zdCB7IHJldHVybiBtX2ltcGwuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29u
c3QgeyByZXR1cm4gbV9pbXBsLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KIAogcHJpdmF0
ZToKICAgICBSZWZQdHI8U3RyaW5nSW1wbD4gbV9pbXBsOwpAQCAtMzU2LDkgKzM1Niw5IEBACiBR
RGF0YVN0cmVhbSYgb3BlcmF0b3I+PihRRGF0YVN0cmVhbSYgc3RyZWFtLCBTdHJpbmcmIHN0cik7
CiAjZW5kaWYKIAotU3RyaW5nIG9wZXJhdG9yKyhjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
KTsKLVN0cmluZyBvcGVyYXRvcisoY29uc3QgU3RyaW5nJiwgY29uc3QgY2hhciopOwotU3RyaW5n
IG9wZXJhdG9yKyhjb25zdCBjaGFyKiwgY29uc3QgU3RyaW5nJik7CitXVEZfRVhQT1JUX1BSSVZB
VEUgU3RyaW5nIG9wZXJhdG9yKyhjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKK1dURl9F
WFBPUlRfUFJJVkFURSBTdHJpbmcgb3BlcmF0b3IrKGNvbnN0IFN0cmluZyYsIGNvbnN0IGNoYXIq
KTsKK1dURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgb3BlcmF0b3IrKGNvbnN0IGNoYXIqLCBjb25z
dCBTdHJpbmcmKTsKIAogaW5saW5lIFN0cmluZyYgb3BlcmF0b3IrPShTdHJpbmcmIGEsIGNvbnN0
IFN0cmluZyYgYikgeyBhLmFwcGVuZChiKTsgcmV0dXJuIGE7IH0KIApAQCAtNDE5LDcgKzQxOSw3
IEBACiAgICAgcmV0dXJuICEob3JlZCAmIDB4RkYwMCk7CiB9CiAKLWludCBjb2RlUG9pbnRDb21w
YXJlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOworV1RGX0VYUE9SVF9QUklWQVRFIGlu
dCBjb2RlUG9pbnRDb21wYXJlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOwogCiBpbmxp
bmUgc2l6ZV90IGZpbmQoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwg
VUNoYXIgbWF0Y2hDaGFyYWN0ZXIsIHVuc2lnbmVkIGluZGV4ID0gMCkKIHsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAkocmV2aXNpb24gODI1MTMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDEsMTEgKzE0MSwxMSBAQAogICAgIH0KIAogcHVibGljOgotICAgIH5TdHJp
bmdJbXBsKCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIH5TdHJpbmdJbXBsKCk7CiAKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBjcmVhdGUoY29uc3QgVUNoYXIqLCB1bnNpZ25l
ZCBsZW5ndGgpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGNyZWF0ZShjb25z
dCBjaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJ
bXBsPiBjcmVhdGUoY29uc3QgY2hhciopOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMg
UGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBjcmVhdGUoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5n
dGgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBs
PiBjcmVhdGUoY29uc3QgY2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGNyZWF0ZShjb25zdCBjaGFyKik7
CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gY3JlYXRlKGNvbnN0IFVDaGFyKiwg
dW5zaWduZWQgbGVuZ3RoLCBQYXNzUmVmUHRyPFNoYXJlZFVDaGFyPiBzaGFyZWRCdWZmZXIpOwog
ICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gY3JlYXRlKFBh
c3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0
aCkKICAgICB7CkBAIC0xNTksNyArMTU5LDcgQEAKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBTdHJpbmdJbXBsKHJlcC0+bV9kYXRhICsgb2Zmc2V0LCBsZW5ndGgsIG93bmVyUmVwKSk7CiAg
ICAgfQogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gY3JlYXRlVW5pbml0aWFs
aXplZCh1bnNpZ25lZCBsZW5ndGgsIFVDaGFyKiYgZGF0YSk7CisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5z
aWduZWQgbGVuZ3RoLCBVQ2hhciomIGRhdGEpOwogICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIFBh
c3NSZWZQdHI8U3RyaW5nSW1wbD4gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5n
dGgsIFVDaGFyKiYgb3V0cHV0KQogICAgIHsKICAgICAgICAgaWYgKCFsZW5ndGgpIHsKQEAgLTE5
NSwxMCArMTk1LDEwIEBACiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGVtcHR5KCk7CiAgICAg
fQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkb3B0KFN0cmluZ0J1ZmZlciYp
OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBh
ZG9wdChTdHJpbmdCdWZmZXImKTsKIAogICAgIFNoYXJlZFVDaGFyKiBzaGFyZWRCdWZmZXIoKTsK
LSAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBjb25zdCBVQ2hhciogY2hhcmFjdGVycygpIGNvbnN0IHsg
cmV0dXJuIG1fZGF0YTsgfQogCiAgICAgc2l6ZV90IGNvc3QoKQogICAgIHsKQEAgLTI0MSw3ICsy
NDEsNyBAQAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBkZXJlZigpIHsgbV9yZWZDb3VudEFuZEZs
YWdzIC09IHNfcmVmQ291bnRJbmNyZW1lbnQ7IGlmICghKG1fcmVmQ291bnRBbmRGbGFncyAmIChz
X3JlZkNvdW50TWFzayB8IHNfcmVmQ291bnRGbGFnU3RhdGljKSkpIGRlbGV0ZSB0aGlzOyB9CiAg
ICAgQUxXQVlTX0lOTElORSBib29sIGhhc09uZVJlZigpIGNvbnN0IHsgcmV0dXJuIChtX3JlZkNv
dW50QW5kRmxhZ3MgJiAoc19yZWZDb3VudE1hc2sgfCBzX3JlZkNvdW50RmxhZ1N0YXRpYykpID09
IHNfcmVmQ291bnRJbmNyZW1lbnQ7IH0KIAotICAgIHN0YXRpYyBTdHJpbmdJbXBsKiBlbXB0eSgp
OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RyaW5nSW1wbCogZW1wdHkoKTsKIAog
ICAgIHN0YXRpYyB2b2lkIGNvcHlDaGFycyhVQ2hhciogZGVzdGluYXRpb24sIGNvbnN0IFVDaGFy
KiBzb3VyY2UsIHVuc2lnbmVkIG51bUNoYXJhY3RlcnMpCiAgICAgewpAQCAtMjU5LDEyICsyNTks
MTIgQEAKICAgICAvLyBTaW5jZSBTdHJpbmdJbXBsIG9iamVjdHMgYXJlIGltbXV0YWJsZSwgdGhl
cmUncyBubyBvdGhlciByZWFzb24gdG8gbWFrZSBhIGNvcHkuCiAgICAgUGFzc1JlZlB0cjxTdHJp
bmdJbXBsPiB0aHJlYWRzYWZlQ29weSgpIGNvbnN0OwogCi0gICAgUGFzc1JlZlB0cjxTdHJpbmdJ
bXBsPiBzdWJzdHJpbmcodW5zaWduZWQgcG9zLCB1bnNpZ25lZCBsZW4gPSBVSU5UX01BWCk7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gc3Vic3RyaW5nKHVu
c2lnbmVkIHBvcywgdW5zaWduZWQgbGVuID0gVUlOVF9NQVgpOwogCiAgICAgVUNoYXIgb3BlcmF0
b3JbXSh1bnNpZ25lZCBpKSB7IEFTU0VSVChpIDwgbV9sZW5ndGgpOyByZXR1cm4gbV9kYXRhW2ld
OyB9CiAgICAgVUNoYXIzMiBjaGFyYWN0ZXJTdGFydGluZ0F0KHVuc2lnbmVkKTsKIAotICAgIGJv
b2wgY29udGFpbnNPbmx5V2hpdGVzcGFjZSgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29s
IGNvbnRhaW5zT25seVdoaXRlc3BhY2UoKTsKIAogICAgIGludCB0b0ludFN0cmljdChib29sKiBv
ayA9IDAsIGludCBiYXNlID0gMTApOwogICAgIHVuc2lnbmVkIHRvVUludFN0cmljdChib29sKiBv
ayA9IDAsIGludCBiYXNlID0gMTApOwpAQCAtMjcyLDcgKzI3Miw3IEBACiAgICAgdWludDY0X3Qg
dG9VSW50NjRTdHJpY3QoYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKTsKICAgICBpbnRwdHJf
dCB0b0ludFB0clN0cmljdChib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApOwogCi0gICAgaW50
IHRvSW50KGJvb2wqIG9rID0gMCk7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQorICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBpbnQgdG9JbnQoYm9vbCogb2sgPSAwKTsgLy8gaWdub3JlcyB0cmFp
bGluZyBnYXJiYWdlCiAgICAgdW5zaWduZWQgdG9VSW50KGJvb2wqIG9rID0gMCk7IC8vIGlnbm9y
ZXMgdHJhaWxpbmcgZ2FyYmFnZQogICAgIGludDY0X3QgdG9JbnQ2NChib29sKiBvayA9IDApOyAv
LyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKICAgICB1aW50NjRfdCB0b1VJbnQ2NChib29sKiBv
ayA9IDApOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKQEAgLTI4MSwzOSArMjgxLDM5IEBA
CiAgICAgZG91YmxlIHRvRG91YmxlKGJvb2wqIG9rID0gMCwgYm9vbCogZGlkUmVhZE51bWJlciA9
IDApOwogICAgIGZsb2F0IHRvRmxvYXQoYm9vbCogb2sgPSAwLCBib29sKiBkaWRSZWFkTnVtYmVy
ID0gMCk7CiAKLSAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGxvd2VyKCk7Ci0gICAgUGFzc1Jl
ZlB0cjxTdHJpbmdJbXBsPiB1cHBlcigpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBQYXNzUmVm
UHRyPFN0cmluZ0ltcGw+IGxvd2VyKCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFBhc3NSZWZQ
dHI8U3RyaW5nSW1wbD4gdXBwZXIoKTsKIAogICAgIGVudW0gTGFzdENoYXJhY3RlckJlaGF2aW9y
IHsgT2JzY3VyZUxhc3RDaGFyYWN0ZXIsIERpc3BsYXlMYXN0Q2hhcmFjdGVyIH07CiAKLSAgICBQ
YXNzUmVmUHRyPFN0cmluZ0ltcGw+IHNlY3VyZShVQ2hhciwgTGFzdENoYXJhY3RlckJlaGF2aW9y
ID0gT2JzY3VyZUxhc3RDaGFyYWN0ZXIpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBQYXNzUmVm
UHRyPFN0cmluZ0ltcGw+IHNlY3VyZShVQ2hhciwgTGFzdENoYXJhY3RlckJlaGF2aW9yID0gT2Jz
Y3VyZUxhc3RDaGFyYWN0ZXIpOwogICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gZm9sZENhc2Uo
KTsKIAogICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gc3RyaXBXaGl0ZVNwYWNlKCk7Ci0gICAg
UGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBzaW1wbGlmeVdoaXRlU3BhY2UoKTsKKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBzaW1wbGlmeVdoaXRlU3BhY2UoKTsK
IAogICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVtb3ZlQ2hhcmFjdGVycyhDaGFyYWN0ZXJN
YXRjaEZ1bmN0aW9uUHRyKTsKIAotICAgIHNpemVfdCBmaW5kKFVDaGFyLCB1bnNpZ25lZCBpbmRl
eCA9IDApOwotICAgIHNpemVfdCBmaW5kKENoYXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIsIHVuc2ln
bmVkIGluZGV4ID0gMCk7Ci0gICAgc2l6ZV90IGZpbmQoY29uc3QgY2hhciosIHVuc2lnbmVkIGlu
ZGV4ID0gMCk7Ci0gICAgc2l6ZV90IGZpbmQoU3RyaW5nSW1wbCosIHVuc2lnbmVkIGluZGV4ID0g
MCk7Ci0gICAgc2l6ZV90IGZpbmRJZ25vcmluZ0Nhc2UoY29uc3QgY2hhciosIHVuc2lnbmVkIGlu
ZGV4ID0gMCk7Ci0gICAgc2l6ZV90IGZpbmRJZ25vcmluZ0Nhc2UoU3RyaW5nSW1wbCosIHVuc2ln
bmVkIGluZGV4ID0gMCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCBmaW5kKFVDaGFy
LCB1bnNpZ25lZCBpbmRleCA9IDApOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgZmlu
ZChDaGFyYWN0ZXJNYXRjaEZ1bmN0aW9uUHRyLCB1bnNpZ25lZCBpbmRleCA9IDApOworICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBzaXplX3QgZmluZChjb25zdCBjaGFyKiwgdW5zaWduZWQgaW5kZXgg
PSAwKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZpbmQoU3RyaW5nSW1wbCosIHVu
c2lnbmVkIGluZGV4ID0gMCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCBmaW5kSWdu
b3JpbmdDYXNlKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCBpbmRleCA9IDApOworICAgIFdURl9FWFBP
UlRfUFJJVkFURSBzaXplX3QgZmluZElnbm9yaW5nQ2FzZShTdHJpbmdJbXBsKiwgdW5zaWduZWQg
aW5kZXggPSAwKTsKIAotICAgIHNpemVfdCByZXZlcnNlRmluZChVQ2hhciwgdW5zaWduZWQgaW5k
ZXggPSBVSU5UX01BWCk7Ci0gICAgc2l6ZV90IHJldmVyc2VGaW5kKFN0cmluZ0ltcGwqLCB1bnNp
Z25lZCBpbmRleCA9IFVJTlRfTUFYKTsKLSAgICBzaXplX3QgcmV2ZXJzZUZpbmRJZ25vcmluZ0Nh
c2UoU3RyaW5nSW1wbCosIHVuc2lnbmVkIGluZGV4ID0gVUlOVF9NQVgpOworICAgIFdURl9FWFBP
UlRfUFJJVkFURSBzaXplX3QgcmV2ZXJzZUZpbmQoVUNoYXIsIHVuc2lnbmVkIGluZGV4ID0gVUlO
VF9NQVgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgcmV2ZXJzZUZpbmQoU3RyaW5n
SW1wbCosIHVuc2lnbmVkIGluZGV4ID0gVUlOVF9NQVgpOworICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBzaXplX3QgcmV2ZXJzZUZpbmRJZ25vcmluZ0Nhc2UoU3RyaW5nSW1wbCosIHVuc2lnbmVkIGlu
ZGV4ID0gVUlOVF9NQVgpOwogCiAgICAgYm9vbCBzdGFydHNXaXRoKFN0cmluZ0ltcGwqIHN0ciwg
Ym9vbCBjYXNlU2Vuc2l0aXZlID0gdHJ1ZSkgeyByZXR1cm4gKGNhc2VTZW5zaXRpdmUgPyByZXZl
cnNlRmluZChzdHIsIDApIDogcmV2ZXJzZUZpbmRJZ25vcmluZ0Nhc2Uoc3RyLCAwKSkgPT0gMDsg
fQotICAgIGJvb2wgZW5kc1dpdGgoU3RyaW5nSW1wbCosIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IHRy
dWUpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGVuZHNXaXRoKFN0cmluZ0ltcGwqLCBi
b29sIGNhc2VTZW5zaXRpdmUgPSB0cnVlKTsKIAotICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4g
cmVwbGFjZShVQ2hhciwgVUNoYXIpOwotICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwbGFj
ZShVQ2hhciwgU3RyaW5nSW1wbCopOwotICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwbGFj
ZShTdHJpbmdJbXBsKiwgU3RyaW5nSW1wbCopOwotICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4g
cmVwbGFjZSh1bnNpZ25lZCBpbmRleCwgdW5zaWduZWQgbGVuLCBTdHJpbmdJbXBsKik7CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwbGFjZShVQ2hhciwg
VUNoYXIpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJl
cGxhY2UoVUNoYXIsIFN0cmluZ0ltcGwqKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgUGFzc1Jl
ZlB0cjxTdHJpbmdJbXBsPiByZXBsYWNlKFN0cmluZ0ltcGwqLCBTdHJpbmdJbXBsKik7CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwbGFjZSh1bnNpZ25l
ZCBpbmRleCwgdW5zaWduZWQgbGVuLCBTdHJpbmdJbXBsKik7CiAKLSAgICBXVEY6OlVuaWNvZGU6
OkRpcmVjdGlvbiBkZWZhdWx0V3JpdGluZ0RpcmVjdGlvbihib29sKiBoYXNTdHJvbmdEaXJlY3Rp
b25hbGl0eSA9IDApOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBXVEY6OlVuaWNvZGU6OkRpcmVj
dGlvbiBkZWZhdWx0V3JpdGluZ0RpcmVjdGlvbihib29sKiBoYXNTdHJvbmdEaXJlY3Rpb25hbGl0
eSA9IDApOwogCiAjaWYgVVNFKENGKQogICAgIENGU3RyaW5nUmVmIGNyZWF0ZUNGU3RyaW5nKCk7
CkBAIC0zMjYsNyArMzI2LDcgQEAKICAgICAvLyBUaGlzIG51bWJlciBtdXN0IGJlIGF0IGxlYXN0
IDIgdG8gYXZvaWQgc2hhcmluZyBlbXB0eSwgbnVsbCBhcyB3ZWxsIGFzIDEgY2hhcmFjdGVyIHN0
cmluZ3MgZnJvbSBTbWFsbFN0cmluZ3MuCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfY29w
eUNoYXJzSW5saW5lQ3V0T2ZmID0gMjA7CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJ
bXBsPiBjcmVhdGVTdHJpcHBpbmdOdWxsQ2hhcmFjdGVyc1Nsb3dDYXNlKGNvbnN0IFVDaGFyKiwg
dW5zaWduZWQgbGVuZ3RoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQ
dHI8U3RyaW5nSW1wbD4gY3JlYXRlU3RyaXBwaW5nTnVsbENoYXJhY3RlcnNTbG93Q2FzZShjb25z
dCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgCiAgICAgQnVmZmVyT3duZXJzaGlwIGJ1
ZmZlck93bmVyc2hpcCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEJ1ZmZlck93bmVyc2hp
cD4obV9yZWZDb3VudEFuZEZsYWdzICYgc19yZWZDb3VudE1hc2tCdWZmZXJPd25lcnNoaXApOyB9
CiAgICAgYm9vbCBpc1N0YXRpYygpIGNvbnN0IHsgcmV0dXJuIG1fcmVmQ291bnRBbmRGbGFncyAm
IHNfcmVmQ291bnRGbGFnU3RhdGljOyB9CkBAIC0zMzksMTcgKzMzOSwxNyBAQAogICAgIG11dGFi
bGUgdW5zaWduZWQgbV9oYXNoOwogfTsKIAotYm9vbCBlcXVhbChjb25zdCBTdHJpbmdJbXBsKiwg
Y29uc3QgU3RyaW5nSW1wbCopOwotYm9vbCBlcXVhbChjb25zdCBTdHJpbmdJbXBsKiwgY29uc3Qg
Y2hhciopOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZXF1YWwoY29uc3QgU3RyaW5nSW1wbCos
IGNvbnN0IFN0cmluZ0ltcGwqKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGVxdWFsKGNvbnN0
IFN0cmluZ0ltcGwqLCBjb25zdCBjaGFyKik7CiBpbmxpbmUgYm9vbCBlcXVhbChjb25zdCBjaGFy
KiBhLCBTdHJpbmdJbXBsKiBiKSB7IHJldHVybiBlcXVhbChiLCBhKTsgfQogCi1ib29sIGVxdWFs
SWdub3JpbmdDYXNlKFN0cmluZ0ltcGwqLCBTdHJpbmdJbXBsKik7Ci1ib29sIGVxdWFsSWdub3Jp
bmdDYXNlKFN0cmluZ0ltcGwqLCBjb25zdCBjaGFyKik7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9v
bCBlcXVhbElnbm9yaW5nQ2FzZShTdHJpbmdJbXBsKiwgU3RyaW5nSW1wbCopOworV1RGX0VYUE9S
VF9QUklWQVRFIGJvb2wgZXF1YWxJZ25vcmluZ0Nhc2UoU3RyaW5nSW1wbCosIGNvbnN0IGNoYXIq
KTsKIGlubGluZSBib29sIGVxdWFsSWdub3JpbmdDYXNlKGNvbnN0IGNoYXIqIGEsIFN0cmluZ0lt
cGwqIGIpIHsgcmV0dXJuIGVxdWFsSWdub3JpbmdDYXNlKGIsIGEpOyB9Ci1ib29sIGVxdWFsSWdu
b3JpbmdDYXNlKGNvbnN0IFVDaGFyKiBhLCBjb25zdCBjaGFyKiBiLCB1bnNpZ25lZCBsZW5ndGgp
OworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZXF1YWxJZ25vcmluZ0Nhc2UoY29uc3QgVUNoYXIq
LCBjb25zdCBjaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKIGlubGluZSBib29sIGVxdWFsSWdub3Jp
bmdDYXNlKGNvbnN0IGNoYXIqIGEsIGNvbnN0IFVDaGFyKiBiLCB1bnNpZ25lZCBsZW5ndGgpIHsg
cmV0dXJuIGVxdWFsSWdub3JpbmdDYXNlKGIsIGEsIGxlbmd0aCk7IH0KIAotYm9vbCBlcXVhbEln
bm9yaW5nTnVsbGl0eShTdHJpbmdJbXBsKiwgU3RyaW5nSW1wbCopOworV1RGX0VYUE9SVF9QUklW
QVRFIGJvb2wgZXF1YWxJZ25vcmluZ051bGxpdHkoU3RyaW5nSW1wbCosIFN0cmluZ0ltcGwqKTsK
IAogdGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5PgogYm9vbCBlcXVhbElnbm9yaW5nTnVs
bGl0eShjb25zdCBWZWN0b3I8VUNoYXIsIGlubGluZUNhcGFjaXR5PiYgYSwgU3RyaW5nSW1wbCog
YikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQnl0ZUFycmF5LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9CeXRlQXJyYXkuaAkocmV2aXNpb24gODI1
MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0J5dGVBcnJheS5oCSh3b3JraW5nIGNv
cHkpCkBAIC04MCw3ICs4MCw3IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxCeXRlQXJyYXk+IGNyZWF0ZShzaXplX3Qgc2l6ZSk7CisgICAg
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxCeXRlQXJyYXk+IGNyZWF0
ZShzaXplX3QpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgQnl0ZUFycmF5KHNpemVfdCBzaXpl
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAkocmV2aXNpb24gODI1MTMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgJKHdvcmtpbmcgY29weSkK
QEAgLTExOTMsNiArMTE5Myw5IEBACiAgICBzaW5jZSBtb3N0IHBvcnRzIHRyeSB0byBzdXBwb3J0
IHN1Yi1wcm9qZWN0IGluZGVwZW5kZW5jZSwgYWRkaW5nIG5ldyBoZWFkZXJzCiAgICB0byBXVEYg
Y2F1c2VzIG1hbnkgcG9ydHMgdG8gYnJlYWssIGFuZCBzbyB0aGlzIHdheSB3ZSBjYW4gYWRkcmVz
cyB0aGUgYnVpbGQKICAgIGJyZWFrYWdlcyBvbmUgcG9ydCBhdCBhIHRpbWUuICovCisjaWYgUExB
VEZPUk0oV1gpCisjZGVmaW5lIFdURl9VU0VfRVhQT1JUX01BQ1JPUyAxCisjZWxzZQogI2RlZmlu
ZSBXVEZfVVNFX0VYUE9SVF9NQUNST1MgMAotCisjZW5kaWYKICNlbmRpZiAvKiBXVEZfUGxhdGZv
cm1faCAqLwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmgJKHJldmlzaW9uIDgyNTEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw4ICsxMDAsOCBA
QAogICAgICAgICBKU1ZhbHVlIGV4ZWN1dGUoRXZhbEV4ZWN1dGFibGUqIGV2YWxOb2RlLCBDYWxs
RnJhbWUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFp
bik7CiAKICAgICAgICAgSlNWYWx1ZSByZXRyaWV2ZUFyZ3VtZW50cyhDYWxsRnJhbWUqLCBKU0Z1
bmN0aW9uKikgY29uc3Q7Ci0gICAgICAgIEpTVmFsdWUgcmV0cmlldmVDYWxsZXIoQ2FsbEZyYW1l
KiwgSlNGdW5jdGlvbiopIGNvbnN0OwotICAgICAgICB2b2lkIHJldHJpZXZlTGFzdENhbGxlcihD
YWxsRnJhbWUqLCBpbnQmIGxpbmVOdW1iZXIsIGludHB0cl90JiBzb3VyY2VJRCwgVVN0cmluZyYg
c291cmNlVVJMLCBKU1ZhbHVlJiBmdW5jdGlvbikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIEpTVmFsdWUgcmV0cmlldmVDYWxsZXIoQ2FsbEZyYW1lKiwgSlNGdW5jdGlvbiopIGNv
bnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHJldHJpZXZlTGFzdENhbGxlcihD
YWxsRnJhbWUqLCBpbnQmIGxpbmVOdW1iZXIsIGludHB0cl90JiBzb3VyY2VJRCwgVVN0cmluZyYg
c291cmNlVVJMLCBKU1ZhbHVlJiBmdW5jdGlvbikgY29uc3Q7CiAgICAgICAgIAogICAgICAgICB2
b2lkIGdldEFyZ3VtZW50c0RhdGEoQ2FsbEZyYW1lKiwgSlNGdW5jdGlvbiomLCBwdHJkaWZmX3Qm
IGZpcnN0UGFyYW1ldGVySW5kZXgsIFJlZ2lzdGVyKiYgYXJndiwgaW50JiBhcmdjKTsKICAgICAg
ICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmgJKHJldmlz
aW9uIDgyNTEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uaAko
d29ya2luZyBjb3B5KQpAQCAtMzEzLDcgKzMxMyw3IEBACiB9OwogCiBzdHJ1Y3QgWWFyclBhdHRl
cm4gewotICAgIFlhcnJQYXR0ZXJuKGNvbnN0IFVTdHJpbmcmIHBhdHRlcm4sIGJvb2wgaWdub3Jl
Q2FzZSwgYm9vbCBtdWx0aWxpbmUsIGNvbnN0IGNoYXIqKiBlcnJvcik7CisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgWWFyclBhdHRlcm4oY29uc3QgVVN0cmluZyYgcGF0dGVybiwgYm9vbCBpZ25vcmVD
YXNlLCBib29sIG11bHRpbGluZSwgY29uc3QgY2hhcioqIGVycm9yKTsKIAogICAgIH5ZYXJyUGF0
dGVybigpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnIuaAkocmV2aXNpb24g
ODI1MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTU3LDggKzU3LDggQEAKICAgICBKU1JlZ0V4cEVycm9ySW50ZXJuYWwgPSAtNAogfTsK
IAotUGFzc093blB0cjxCeXRlY29kZVBhdHRlcm4+IGJ5dGVDb21waWxlKFlhcnJQYXR0ZXJuJiwg
QnVtcFBvaW50ZXJBbGxvY2F0b3IqKTsKLWludCBpbnRlcnByZXQoQnl0ZWNvZGVQYXR0ZXJuKiwg
Y29uc3QgVUNoYXIqIGlucHV0LCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBpbnQq
IG91dHB1dCk7CitKU19FWFBPUlRfUFJJVkFURSBQYXNzT3duUHRyPEJ5dGVjb2RlUGF0dGVybj4g
Ynl0ZUNvbXBpbGUoWWFyclBhdHRlcm4mLCBCdW1wUG9pbnRlckFsbG9jYXRvciopOworSlNfRVhQ
T1JUX1BSSVZBVEUgaW50IGludGVycHJldChCeXRlY29kZVBhdHRlcm4qLCBjb25zdCBVQ2hhciog
aW5wdXQsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIGludCogb3V0cHV0KTsKIAog
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OllhcnIKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA4MjUzMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxMDQgQEAKKzIwMTEtMDMtMzAgIEtldmluIE9sbGl2aWVy
ICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkIGV4cG9ydCBtYWNyb3MgdG8gYWxsIGV4cG9ydGVkIEpT
Q29yZSBtZXRob2RzLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yNzU1MQorCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
Lmg6CisgICAgICAgICogY29sbGVjdG9yL2hhbmRsZXMvSGFuZGxlSGVhcC5oOgorICAgICAgICAq
IGNvbmZpZy5oOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyLmg6CisgICAgICAgICogZGVi
dWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuaDoKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5oOgorICAgICAgICAqIHBhcnNlci9Tb3VyY2VQcm92aWRlckNhY2hlLmg6CisgICAgICAg
ICogcHJvZmlsZXIvUHJvZmlsZXIuaDoKKyAgICAgICAgKiBydW50aW1lL0FyZ0xpc3QuaDoKKyAg
ICAgICAgKiBydW50aW1lL0NhbGxEYXRhLmg6CisgICAgICAgICogcnVudGltZS9Db21wbGV0aW9u
Lmg6CisgICAgICAgICogcnVudGltZS9Db25zdHJ1Y3REYXRhLmg6CisgICAgICAgICogcnVudGlt
ZS9EYXRlSW5zdGFuY2UuaDoKKyAgICAgICAgKiBydW50aW1lL0Vycm9yLmg6CisgICAgICAgICog
cnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmg6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvbkNv
bnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9IZWFwLmg6CisgICAgICAgICogcnVudGlt
ZS9JZGVudGlmaWVyLmg6CisgICAgICAgIChKU0M6OklkZW50aWZpZXI6OnRvVUludDMyKToKKyAg
ICAgICAgKEpTQzo6SWRlbnRpZmllcjo6ZXF1YWwpOgorICAgICAgICAqIHJ1bnRpbWUvSW5pdGlh
bGl6ZVRocmVhZGluZy5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNCeXRlQXJy
YXkuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5oOgorICAgICAgICAoSlNDOjpKU0NlbGw6
OkpTQ2VsbDo6Y2xhc3NJbmZvKToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpKU0NlbGw6OnZwdHIp
OgorICAgICAgICAoSlNDOjpKU0NlbGw6OkpTQ2VsbDo6c2V0VlB0cik6CisgICAgICAgIChKU0M6
OkpTQ2VsbDo6SlNDZWxsOjppc1N0cmluZyk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9u
Lmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbERhdGEuaDoKKyAgICAgICAgKiBydW50aW1l
L0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU0xvY2suaDoKKyAgICAgICAg
KiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU09iamVjdFdpdGhHbG9i
YWxPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTVmFsdWUuaDoKKyAgICAgICAgKiBydW50
aW1lL0pTVmFyaWFibGVPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTV3JhcHBlck9iamVj
dC5oOgorICAgICAgICAqIHJ1bnRpbWUvTG9va3VwLmg6CisgICAgICAgICogcnVudGltZS9NYXJr
ZWRTcGFjZS5oOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmg6CisgICAgICAg
ICogcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL1Byb3Bl
cnR5TmFtZUFycmF5Lmg6CisgICAgICAgIChKU0M6OlByb3BlcnR5TmFtZUFycmF5OjphZGQpOgor
ICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlTbG90Lmg6CisgICAgICAgICogcnVudGltZS9SZWdF
eHAuaDoKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9iamVjdC5oOgorICAgICAgICAqIHJ1bnRp
bWUvUm9wZUltcGwuaDoKKyAgICAgICAgKiBydW50aW1lL1Njb3BlQ2hhaW4uaDoKKyAgICAgICAg
KiBydW50aW1lL1NtYWxsU3RyaW5ncy5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0
Lmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuaDoKKyAgICAgICAgKiBydW50aW1lL1Rp
bWVvdXRDaGVja2VyLmg6CisgICAgICAgICogcnVudGltZS9VU3RyaW5nLmg6CisgICAgICAgIChK
U0M6OlVTdHJpbmc6OlVTdHJpbmcpOgorICAgICAgICAqIHdzY3JpcHQ6CisgICAgICAgICogd3Rm
L0J5dGVBcnJheS5oOgorICAgICAgICAqIHd0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJl
ci5oOgorICAgICAgICAqIHd0Zi9DdXJyZW50VGltZS5oOgorICAgICAgICAqIHd0Zi9EYXRlTWF0
aC5oOgorICAgICAgICAqIHd0Zi9EZWNpbWFsTnVtYmVyLmg6CisgICAgICAgICogd3RmL0Zhc3RN
YWxsb2MuaDoKKyAgICAgICAgKiB3dGYvTUQ1Lmg6CisgICAgICAgICogd3RmL01haW5UaHJlYWQu
aDoKKyAgICAgICAgKiB3dGYvTnVsbFB0ci5jcHA6CisgICAgICAgICogd3RmL051bGxQdHIuaDoK
KyAgICAgICAgKiB3dGYvT1NBbGxvY2F0b3IuaDoKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoK
KyAgICAgICAgKiB3dGYvUmFuZG9tTnVtYmVyLmg6CisgICAgICAgICogd3RmL1JlZkNvdW50ZWRM
ZWFrQ291bnRlci5oOgorICAgICAgICAqIHd0Zi9UaHJlYWRTcGVjaWZpYy5oOgorICAgICAgICAq
IHd0Zi9UaHJlYWRpbmcuaDoKKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oOgor
ICAgICAgICAqIHd0Zi9XVEZUaHJlYWREYXRhLmg6CisgICAgICAgICogd3RmL2R0b2EuaDoKKyAg
ICAgICAgKiB3dGYvdGV4dC9BdG9taWNTdHJpbmcuaDoKKyAgICAgICAgKFdURjo6QXRvbWljU3Ry
aW5nOjpBdG9taWNTdHJpbmcpOgorICAgICAgICAoV1RGOjpBdG9taWNTdHJpbmc6OmlzSGFzaFRh
YmxlRGVsZXRlZFZhbHVlKToKKyAgICAgICAgKFdURjo6QXRvbWljU3RyaW5nOjp+QXRvbWljU3Ry
aW5nKToKKyAgICAgICAgKFdURjo6QXRvbWljU3RyaW5nOjppbXBsKToKKyAgICAgICAgKiB3dGYv
dGV4dC9DU3RyaW5nLmg6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oOgorICAg
ICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuaDoKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6
Y2hhcmFjdGVycyk6CisgICAgICAgICogd3RmL3RleHQvV1RGU3RyaW5nLmg6CisgICAgICAgIChX
VEY6OlN0cmluZzo6U3RyaW5nKToKKyAgICAgICAgKFdURjo6U3RyaW5nOjpmaW5kSWdub3JpbmdD
YXNlKToKKyAgICAgICAgKFdURjo6U3RyaW5nOjppc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSk6Cisg
ICAgICAgICogd3RmL3VuaWNvZGUvQ29sbGF0b3IuaDoKKyAgICAgICAgKiB3dGYvdW5pY29kZS9V
VEY4Lmg6CisgICAgICAgICogeWFyci9ZYXJyLmg6CisgICAgICAgICogeWFyci9ZYXJyUGF0dGVy
bi5oOgorCiAyMDExLTAzLTMwICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KIAogICAg
ICAgICBDbGVhbiBidWlsZCBmaXgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93c2NyaXB0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93c2NyaXB0CShyZXZpc2lvbiA4
MjUxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93c2NyaXB0CSh3b3JraW5nIGNvcHkpCkBA
IC00Nyw2ICs0Nyw3IEBACiBkZWYgYnVpbGQoYmxkKToKICAgICBpbXBvcnQgT3B0aW9ucwogCisg
ICAgYmxkLmVudi5MSUJESVIgPSBvdXRwdXRfZGlyCiAgICAgZnVsbF9kaXJzID0gZ2V0X2RpcnNf
Zm9yX2ZlYXR1cmVzKGpzY29yZV9kaXIsIGZlYXR1cmVzPVtidWlsZF9wb3J0XSwgZGlycz1qc2Nv
cmVfZGlycykKIAogICAgIGluY2x1ZGVzID0gY29tbW9uX2luY2x1ZGVzICsgZnVsbF9kaXJzCkBA
IC01NSw5ICs1NiwxMCBAQAogCiAgICAgIyAxLiBBIHNpbXBsZSBwcm9ncmFtCiAgICAganNjb3Jl
ID0gYmxkLm5ld190YXNrX2dlbigKLSAgICAgICAgZmVhdHVyZXMgPSAnY3h4IGNzdGF0aWNsaWIn
LAorICAgICAgICBmZWF0dXJlcyA9ICdjeHggY3NobGliIGltcGxpYicsCiAgICAgICAgIGluY2x1
ZGVzID0gJy4gLi4gYXNzZW1ibGVyIERlcml2ZWRTb3VyY2VzIEZvcndhcmRpbmdIZWFkZXJzICcg
KyAnICcuam9pbihpbmNsdWRlcyksCiAgICAgICAgIHNvdXJjZSA9IHNvdXJjZXMsCisgICAgICAg
IGRlZmluZXMgPSBbJ0JVSUxESU5HX0phdmFTY3JpcHRDb3JlJ10sCiAgICAgICAgIHRhcmdldCA9
ICdqc2NvcmUnLAogICAgICAgICB1c2VsaWIgPSAnV1ggSUNVICcgKyBnZXRfY29uZmlnKCksCiAg
ICAgICAgIHVzZWxpYl9sb2NhbCA9ICcnLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9Tb3VyY2VQcm92aWRlckNhY2hlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlckNhY2hlLmgJKHJldmlzaW9uIDgyNTEzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlckNhY2hlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMzLDEwICszMywxMCBAQAogY2xhc3MgU291cmNlUHJvdmlkZXJDYWNoZSB7
CiBwdWJsaWM6CiAgICAgU291cmNlUHJvdmlkZXJDYWNoZSgpIDogbV9jb250ZW50Qnl0ZVNpemUo
MCkge30KLSAgICB+U291cmNlUHJvdmlkZXJDYWNoZSgpOworICAgIEpTX0VYUE9SVF9QUklWQVRF
IH5Tb3VyY2VQcm92aWRlckNhY2hlKCk7CiAKLSAgICB2b2lkIGNsZWFyKCk7Ci0gICAgdW5zaWdu
ZWQgYnl0ZVNpemUoKSBjb25zdDsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGNsZWFyKCk7
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdW5zaWduZWQgYnl0ZVNpemUoKSBjb25zdDsKICAgICB2
b2lkIGFkZChpbnQgc291cmNlUG9zaXRpb24sIFBhc3NPd25QdHI8U291cmNlUHJvdmlkZXJDYWNo
ZUl0ZW0+LCB1bnNpZ25lZCBzaXplKTsKICAgICBjb25zdCBTb3VyY2VQcm92aWRlckNhY2hlSXRl
bSogZ2V0KGludCBzb3VyY2VQb3NpdGlvbikgY29uc3QgeyByZXR1cm4gbV9tYXAuZ2V0KHNvdXJj
ZVBvc2l0aW9uKTsgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJv
ZmlsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJv
ZmlsZXIuaAkocmV2aXNpb24gODI1MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmls
ZXIvUHJvZmlsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsMTEgKzUzLDExIEBACiAgICAgICAg
ICAgICByZXR1cm4gJnNfc2hhcmVkRW5hYmxlZFByb2ZpbGVyUmVmZXJlbmNlOwogICAgICAgICB9
CiAKLSAgICAgICAgc3RhdGljIFByb2ZpbGVyKiBwcm9maWxlcigpOyAKKyAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIFByb2ZpbGVyKiBwcm9maWxlcigpOyAKICAgICAgICAgc3RhdGlj
IENhbGxJZGVudGlmaWVyIGNyZWF0ZUNhbGxJZGVudGlmaWVyKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSwgY29uc3QgVVN0cmluZyYgc291cmNlVVJMLCBpbnQgbGluZU51bWJlcik7CiAKLSAgICAg
ICAgdm9pZCBzdGFydFByb2ZpbGluZyhFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJiB0aXRsZSk7
Ci0gICAgICAgIFBhc3NSZWZQdHI8UHJvZmlsZT4gc3RvcFByb2ZpbGluZyhFeGVjU3RhdGUqLCBj
b25zdCBVU3RyaW5nJiB0aXRsZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc3Rh
cnRQcm9maWxpbmcoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYgdGl0bGUpOworICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSBQYXNzUmVmUHRyPFByb2ZpbGU+IHN0b3BQcm9maWxpbmcoRXhlY1N0
YXRlKiwgY29uc3QgVVN0cmluZyYgdGl0bGUpOwogICAgICAgICB2b2lkIHN0b3BQcm9maWxpbmco
SlNHbG9iYWxPYmplY3QqKTsKIAogICAgICAgICB2b2lkIHdpbGxFeGVjdXRlKEV4ZWNTdGF0ZSog
Y2FsbGVyQ2FsbEZyYW1lLCBKU1ZhbHVlIGZ1bmN0aW9uKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5oCShyZXZpc2lvbiA4
MjUxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFt
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSwxMCArNTEsMTAgQEAKICAgICAgICAgSlNHbG9iYWxP
YmplY3QqIGR5bmFtaWNHbG9iYWxPYmplY3QoKSBjb25zdCB7IHJldHVybiBtX2NhbGxGcmFtZS0+
ZHluYW1pY0dsb2JhbE9iamVjdCgpOyB9CiAgICAgICAgIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNo
YWluKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsRnJhbWUtPnNjb3BlQ2hhaW4oKTsgfQogICAgICAg
ICBjb25zdCBVU3RyaW5nKiBmdW5jdGlvbk5hbWUoKSBjb25zdDsKLSAgICAgICAgVVN0cmluZyBj
YWxjdWxhdGVkRnVuY3Rpb25OYW1lKCkgY29uc3Q7Ci0gICAgICAgIFR5cGUgdHlwZSgpIGNvbnN0
OwotICAgICAgICBKU09iamVjdCogdGhpc09iamVjdCgpIGNvbnN0OwotICAgICAgICBKU1ZhbHVl
IGV2YWx1YXRlKGNvbnN0IFVTdHJpbmcmLCBKU1ZhbHVlJiBleGNlcHRpb24pIGNvbnN0OworICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSBVU3RyaW5nIGNhbGN1bGF0ZWRGdW5jdGlvbk5hbWUoKSBj
b25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgVHlwZSB0eXBlKCkgY29uc3Q7CisgICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aGlzT2JqZWN0KCkgY29uc3Q7CisgICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgZXZhbHVhdGUoY29uc3QgVVN0cmluZyYsIEpT
VmFsdWUmIGV4Y2VwdGlvbikgY29uc3Q7CiAgICAgICAgIEpTVmFsdWUgZXhjZXB0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9leGNlcHRpb247IH0KIAogICAgIHByaXZhdGU6CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuaAkocmV2aXNpb24gODI1MTMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMzQsNyArMzQsNyBAQAogICAgIGNsYXNzIFNvdXJjZVByb3ZpZGVyOwogICAgIGNsYXNzIFVT
dHJpbmc7CiAKLSAgICBjbGFzcyBEZWJ1Z2dlciB7CisgICAgY2xhc3MgSlNfRVhQT1JUX1BSSVZB
VEUgRGVidWdnZXIgewogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+RGVidWdnZXIoKTsK
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2NvbGxlY3Rvci9oYW5kbGVzL0hhbmRsZUhl
YXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvY29sbGVjdG9yL2hhbmRs
ZXMvSGFuZGxlSGVhcC5oCShyZXZpc2lvbiA4MjUxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9jb2xsZWN0b3IvaGFuZGxlcy9IYW5kbGVIZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDcg
KzYyLDcgQEAKICAgICAvLyBTaG91bGQgb25seSBiZSBjYWxsZWQgZHVyaW5nIHRlYXJkb3duLgog
ICAgIHZvaWQgY2xlYXJXZWFrUG9pbnRlcnMoKTsKIAotICAgIHZvaWQgd3JpdGVCYXJyaWVyKEhh
bmRsZVNsb3QsIGNvbnN0IEpTVmFsdWUmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHdy
aXRlQmFycmllcihIYW5kbGVTbG90LCBjb25zdCBKU1ZhbHVlJik7CiAKICNpZiAhQVNTRVJUX0RJ
U0FCTEVECiAgICAgRmluYWxpemVyKiBnZXRGaW5hbGl6ZXIoSGFuZGxlU2xvdCBoYW5kbGUpCkBA
IC0xMTIsNyArMTEyLDcgQEAKICAgICBzdGF0aWMgSGFuZGxlU2xvdCB0b0hhbmRsZShOb2RlKik7
CiAgICAgc3RhdGljIE5vZGUqIHRvTm9kZShIYW5kbGVTbG90KTsKIAotICAgIHZvaWQgZ3Jvdygp
OworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZ3JvdygpOwogCiAgICAgSlNHbG9iYWxEYXRh
KiBtX2dsb2JhbERhdGE7CiAgICAgQmxvY2tTdGFjazxOb2RlPiBtX2Jsb2NrU3RhY2s7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9jb25maWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9j
b25maWcuaAkocmV2aXNpb24gODI1MTMpCisrKyBTb3VyY2UvV2ViQ29yZS9jb25maWcuaAkod29y
a2luZyBjb3B5KQpAQCAtNjQsOCArNjQsOCBAQAogI2Vsc2UKICNkZWZpbmUgV0VCS0lUX0VYUE9S
VERBVEEgX19kZWNsc3BlYyhkbGxpbXBvcnQpCiAjZW5kaWYKLSNkZWZpbmUgV1RGX0VYUE9SVF9Q
UklWQVRFIEpTX0VYUE9SVERBVEEKLSNkZWZpbmUgSlNfRVhQT1JUX1BSSVZBVEUgSlNfRVhQT1JU
REFUQQorI2RlZmluZSBXVEZfRVhQT1JUX1BSSVZBVEUKKyNkZWZpbmUgSlNfRVhQT1JUX1BSSVZB
VEUKICNkZWZpbmUgSlNfRVhQT1JUQ0xBU1MgSlNfRVhQT1JUREFUQQogI2Vsc2UKICNkZWZpbmUg
SlNfRVhQT1JUREFUQQpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODI1MzIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0w
My0zMCAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgZXhwb3J0IG1hY3Jv
cyB0byBhbGwgZXhwb3J0ZWQgSlNDb3JlIG1ldGhvZHMuCisKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NTUxCisKKyAgICAgICAgKiBjb25maWcuaDoK
KwogMjAxMS0wMy0zMCAgQ2hyaXMgR3VpbGxvcnkgIDxjaHJpcy5ndWlsbG9yeUBnb29nbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88532</attachid>
            <date>2011-04-06 15:31:12 -0700</date>
            <delta_ts>2011-05-25 11:54:51 -0700</delta_ts>
            <desc>Fix defines for WTF/JS_EXPORT_PRIVATE in !USE(EXPORT_MACROS) case</desc>
            <filename>jsexportdata_fix.patch</filename>
            <type>text/plain</type>
            <size>4084</size>
            <attacher name="Kevin Ollivier">kevino</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29uZmlnLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9jb25maWcuaAkocmV2aXNpb24gODMxMDQpCisrKyBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL2NvbmZpZy5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw4ICs0OSw4IEBA
CiAjZGVmaW5lIFdFQktJVF9FWFBPUlREQVRBCiAjZW5kaWYKIAotI2RlZmluZSBXVEZfRVhQT1JU
X1BSSVZBVEUgSlNfRVhQT1JUREFUQQotI2RlZmluZSBKU19FWFBPUlRfUFJJVkFURSBKU19FWFBP
UlREQVRBCisjZGVmaW5lIFdURl9FWFBPUlRfUFJJVkFURQorI2RlZmluZSBKU19FWFBPUlRfUFJJ
VkFURQogCiAjZW5kaWYgLyogVVNFKEVYUE9SVF9NQUNST1MpICovCiAKSW5kZXg6IFRvb2xzL1dl
YktpdEFQSVRlc3QvY29uZmlnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0QVBJVGVzdC9j
b25maWcuaAkocmV2aXNpb24gODMxMDQpCisrKyBUb29scy9XZWJLaXRBUElUZXN0L2NvbmZpZy5o
CSh3b3JraW5nIGNvcHkpCkBAIC00OSw4ICs0OSw4IEBACiAjZGVmaW5lIFdFQktJVF9FWFBPUlRE
QVRBCiAjZW5kaWYKIAotI2RlZmluZSBXVEZfRVhQT1JUX1BSSVZBVEUgSlNfRVhQT1JUREFUQQot
I2RlZmluZSBKU19FWFBPUlRfUFJJVkFURSBKU19FWFBPUlREQVRBCisjZGVmaW5lIFdURl9FWFBP
UlRfUFJJVkFURQorI2RlZmluZSBKU19FWFBPUlRfUFJJVkFURQogCiAjZW5kaWYgLyogVVNFKEVY
UE9SVF9NQUNST1MpICovCiAKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2NvbmZpZy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2NvbmZpZy5oCShyZXZpc2lvbiA4MzEw
NCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2NvbmZpZy5oCSh3b3JraW5nIGNvcHkpCkBAIC00
OCw4ICs0OCw4IEBACiAjZGVmaW5lIFdFQktJVF9FWFBPUlREQVRBCiAjZW5kaWYKIAotI2RlZmlu
ZSBXVEZfRVhQT1JUX1BSSVZBVEUgSlNfRVhQT1JUREFUQQotI2RlZmluZSBKU19FWFBPUlRfUFJJ
VkFURSBKU19FWFBPUlREQVRBCisjZGVmaW5lIFdURl9FWFBPUlRfUFJJVkFURQorI2RlZmluZSBK
U19FWFBPUlRfUFJJVkFURQogCiAjZW5kaWYgLyogVVNFKEVYUE9SVF9NQUNST1MpICovCiAKSW5k
ZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlz
aW9uIDgzMTA1KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTUgQEAKKzIwMTEtMDQtMDYgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFr
ZSBzdXJlIEpTX0VYUE9SVF9QUklWQVRFIGlzIGFuIGVtcHR5IGRlZmluZSB3aGVuIHdlIGFyZW4n
dCB1c2luZyB0aGUgZXhwb3J0IG1hY3Jvcy4KKyAgICAgICAgCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzU1MQorICAgICAgICAKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9jb25maWcuaDoKKyAgICAgICAgKiBXZWJLaXRBUElUZXN0L2NvbmZpZy5o
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvY29uZmlnLmg6CisKIDIwMTEtMDQtMDYgIEFk
YW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBhICJ2aWV3IGxlYWtz
IiBsaW5rIHRvIGJ1aWxkcyBvbiBTbm93TGVvcGFyZCBJbnRlbCBMZWFrcwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2NvbmZpZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9jb25maWcuaAkocmV2aXNpb24gODMxMDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Y29uZmlnLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDggKzU5LDggQEAKICNkZWZpbmUgSlNfRVhQ
T1JUQ0xBU1MKICNlbmRpZgogCi0jZGVmaW5lIFdURl9FWFBPUlRfUFJJVkFURSBKU19FWFBPUlRE
QVRBCi0jZGVmaW5lIEpTX0VYUE9SVF9QUklWQVRFIEpTX0VYUE9SVERBVEEKKyNkZWZpbmUgV1RG
X0VYUE9SVF9QUklWQVRFCisjZGVmaW5lIEpTX0VYUE9SVF9QUklWQVRFCiAKICNlbmRpZiAvKiBV
U0UoRVhQT1JUX01BQ1JPUykgKi8KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCShyZXZp
c2lvbiA4MzEwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0wNC0wNiAgS2V2aW4gT2xsaXZpZXIgIDxrZXZp
bm9AdGhlb2xsaXZpZXJzLmNvbT4KKyAgICAgICAgCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgTWFrZSBzdXJlIEpTX0VYUE9SVF9QUklWQVRF
IGlzIGFuIGVtcHR5IGRlZmluZSB3aGVuIHdlIGFyZW4ndCB1c2luZyB0aGUgZXhwb3J0IG1hY3Jv
cy4KKyAgICAgICAgCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yNzU1MQorCisgICAgICAgICogY29uZmlnLmg6CisKIDIwMTEtMDQtMDYgIEx1Y2FzIERl
IE1hcmNoaSAgPGx1Y2FzLmRlbWFyY2hpQHByb2Z1c2lvbi5tb2JpPgogCiAgICAgICAgIGNtYWtl
OiBGaXggYnVpbGQgZm9yIEFSTXY3CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jb25maWcuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb25maWcuaAkocmV2aXNpb24gODMxMDQpCisrKyBT
b3VyY2UvV2ViQ29yZS9jb25maWcuaAkod29ya2luZyBjb3B5KQpAQCAtNjQsOCArNjQsOCBAQAog
I2Vsc2UKICNkZWZpbmUgV0VCS0lUX0VYUE9SVERBVEEgX19kZWNsc3BlYyhkbGxpbXBvcnQpCiAj
ZW5kaWYKLSNkZWZpbmUgV1RGX0VYUE9SVF9QUklWQVRFIEpTX0VYUE9SVERBVEEKLSNkZWZpbmUg
SlNfRVhQT1JUX1BSSVZBVEUgSlNfRVhQT1JUREFUQQorI2RlZmluZSBXVEZfRVhQT1JUX1BSSVZB
VEUKKyNkZWZpbmUgSlNfRVhQT1JUX1BSSVZBVEUKICNkZWZpbmUgSlNfRVhQT1JUQ0xBU1MgSlNf
RVhQT1JUREFUQQogI2Vsc2UKICNkZWZpbmUgSlNfRVhQT1JUREFUQQpJbmRleDogU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwko
cmV2aXNpb24gODMxMDUpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0wNC0wNiAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9A
dGhlb2xsaXZpZXJzLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBNYWtlIHN1cmUgSlNfRVhQT1JUX1BSSVZBVEUgaXMgYW4gZW1wdHkgZGVmaW5l
IHdoZW4gd2UgYXJlbid0IHVzaW5nIHRoZSBleHBvcnQgbWFjcm9zLgorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzU1MQorCisgICAgICAgICogY29u
ZmlnLmg6CisKIDIwMTEtMDQtMDYgIFR5bGVyIENsb3NlICA8dGpjbG9zZUBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTmF0ZSBDaGFwaW4uCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88543</attachid>
            <date>2011-04-06 17:00:09 -0700</date>
            <delta_ts>2011-05-25 11:54:59 -0700</delta_ts>
            <desc>Add export macros to wtf/text/WTFString.h</desc>
            <filename>wtf_text_exportmacros1.patch</filename>
            <type>text/plain</type>
            <size>15160</size>
            <attacher name="Kevin Ollivier">kevino</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODMxMjMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsMTggQEAK
IDIwMTEtMDQtMDYgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGV4cG9y
dCBtYWNyb3MgdG8gV1RGU3RyaW5nLmguCiAgICAgICAgIAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc1NTEKKworICAgICAgICAqIHd0Zi90ZXh0L1dU
RlN0cmluZy5oOgorICAgICAgICAoV1RGOjpTdHJpbmc6OlN0cmluZyk6CisgICAgICAgIChXVEY6
OlN0cmluZzo6ZmluZElnbm9yaW5nQ2FzZSk6CisgICAgICAgIChXVEY6OlN0cmluZzo6aXNIYXNo
VGFibGVEZWxldGVkVmFsdWUpOgorCisyMDExLTA0LTA2ICBLZXZpbiBPbGxpdmllciAgPGtldmlu
b0B0aGVvbGxpdmllcnMuY29tPgorICAgICAgICAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4g
QWRsZXIuCiAgICAgICAgIAogICAgICAgICBNYWtlIHN1cmUgSlNfRVhQT1JUX1BSSVZBVEUgaXMg
YW4gZW1wdHkgZGVmaW5lIHdoZW4gd2UgYXJlbid0IHVzaW5nIHRoZSBleHBvcnQgbWFjcm9zLgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9XVEZTdHJpbmcuaAkocmV2aXNp
b24gODMxMjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvV1RGU3RyaW5nLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTY3LDggKzY3LDggQEAKIAogYm9vbCBjaGFyYWN0ZXJzQXJlQWxs
QVNDSUkoY29uc3QgVUNoYXIqLCBzaXplX3QpOwogYm9vbCBjaGFyYWN0ZXJzQXJlQWxsTGF0aW4x
KGNvbnN0IFVDaGFyKiwgc2l6ZV90KTsKLWludCBjaGFyYWN0ZXJzVG9JbnRTdHJpY3QoY29uc3Qg
VUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCk7Ci11bnNpZ25lZCBj
aGFyYWN0ZXJzVG9VSW50U3RyaWN0KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDAs
IGludCBiYXNlID0gMTApOworV1RGX0VYUE9SVF9QUklWQVRFIGludCBjaGFyYWN0ZXJzVG9JbnRT
dHJpY3QoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCk7
CitXVEZfRVhQT1JUX1BSSVZBVEUgdW5zaWduZWQgY2hhcmFjdGVyc1RvVUludFN0cmljdChjb25z
dCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKTsKIGludDY0X3Qg
Y2hhcmFjdGVyc1RvSW50NjRTdHJpY3QoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0g
MCwgaW50IGJhc2UgPSAxMCk7CiB1aW50NjRfdCBjaGFyYWN0ZXJzVG9VSW50NjRTdHJpY3QoY29u
c3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCk7CiBpbnRwdHJf
dCBjaGFyYWN0ZXJzVG9JbnRQdHJTdHJpY3QoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9r
ID0gMCwgaW50IGJhc2UgPSAxMCk7CkBAIC03OSw3ICs3OSw3IEBACiB1aW50NjRfdCBjaGFyYWN0
ZXJzVG9VSW50NjQoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gMCk7IC8vIGlnbm9y
ZXMgdHJhaWxpbmcgZ2FyYmFnZQogaW50cHRyX3QgY2hhcmFjdGVyc1RvSW50UHRyKGNvbnN0IFVD
aGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDApOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UK
IAotZG91YmxlIGNoYXJhY3RlcnNUb0RvdWJsZShjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCog
b2sgPSAwLCBib29sKiBkaWRSZWFkTnVtYmVyID0gMCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgZG91
YmxlIGNoYXJhY3RlcnNUb0RvdWJsZShjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSAw
LCBib29sKiBkaWRSZWFkTnVtYmVyID0gMCk7CiBmbG9hdCBjaGFyYWN0ZXJzVG9GbG9hdChjb25z
dCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSAwLCBib29sKiBkaWRSZWFkTnVtYmVyID0gMCk7
CiAKIHRlbXBsYXRlPGJvb2wgaXNTcGVjaWFsQ2hhcmFjdGVyKFVDaGFyKT4gYm9vbCBpc0FsbFNw
ZWNpYWxDaGFyYWN0ZXJzKGNvbnN0IFVDaGFyKiwgc2l6ZV90KTsKQEAgLTg3LDEwICs4NywxMCBA
QAogY2xhc3MgU3RyaW5nIHsKIHB1YmxpYzoKICAgICAvLyBDb25zdHJ1Y3QgYSBudWxsIHN0cmlu
ZywgZGlzdGluZ3Vpc2hhYmxlIGZyb20gYW4gZW1wdHkgc3RyaW5nLgotICAgIFN0cmluZygpIHsg
fQorICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcoKSB7IH0KIAogICAgIC8vIENvbnN0cnVj
dCBhIHN0cmluZyB3aXRoIFVURi0xNiBkYXRhLgotICAgIFN0cmluZyhjb25zdCBVQ2hhciogY2hh
cmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5n
KGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpOwogCiAgICAgLy8gQ29u
c3RydWN0IGEgc3RyaW5nIGJ5IGNvcHlpbmcgdGhlIGNvbnRlbnRzIG9mIGEgdmVjdG9yLiAgVG8g
YXZvaWQKICAgICAvLyBjb3B5aW5nLCBjb25zaWRlciB1c2luZyBTdHJpbmc6OmFkb3B0IGluc3Rl
YWQuCkBAIC05OCwxOCArOTgsMTggQEAKICAgICBleHBsaWNpdCBTdHJpbmcoY29uc3QgVmVjdG9y
PFVDaGFyLCBpbmxpbmVDYXBhY2l0eT4mKTsKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyB3
aXRoIFVURi0xNiBkYXRhLCBmcm9tIGEgbnVsbC10ZXJtaW5hdGVkIHNvdXJjZS4KLSAgICBTdHJp
bmcoY29uc3QgVUNoYXIqKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IFVD
aGFyKik7CiAKICAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBsYXRpbjEgZGF0YS4KLSAg
ICBTdHJpbmcoY29uc3QgY2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVk
IGxlbmd0aCk7CiAKICAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBsYXRpbjEgZGF0YSwg
ZnJvbSBhIG51bGwtdGVybWluYXRlZCBzb3VyY2UuCi0gICAgU3RyaW5nKGNvbnN0IGNoYXIqIGNo
YXJhY3RlcnMpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcoY29uc3QgY2hhciogY2hh
cmFjdGVycyk7CiAKICAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgcmVmZXJlbmNpbmcgYW4gZXhp
c3RpbmcgU3RyaW5nSW1wbC4KLSAgICBTdHJpbmcoU3RyaW5nSW1wbCogaW1wbCkgOiBtX2ltcGwo
aW1wbCkgeyB9Ci0gICAgU3RyaW5nKFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gaW1wbCkgOiBtX2lt
cGwoaW1wbCkgeyB9Ci0gICAgU3RyaW5nKFJlZlB0cjxTdHJpbmdJbXBsPiBpbXBsKSA6IG1faW1w
bChpbXBsKSB7IH0KKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nKFN0cmluZ0ltcGwqIGlt
cGwpIDogbV9pbXBsKGltcGwpIHsgfQorICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcoUGFz
c1JlZlB0cjxTdHJpbmdJbXBsPiBpbXBsKSA6IG1faW1wbChpbXBsKSB7IH0KKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgU3RyaW5nKFJlZlB0cjxTdHJpbmdJbXBsPiBpbXBsKSA6IG1faW1wbChpbXBs
KSB7IH0KIAogICAgIC8vIElubGluZSB0aGUgZGVzdHJ1Y3Rvci4KICAgICBBTFdBWVNfSU5MSU5F
IH5TdHJpbmcoKSB7IH0KQEAgLTEzOSw5ICsxMzksOSBAQAogICAgICAgICByZXR1cm4gbV9pbXBs
LT5jaGFyYWN0ZXJzKCk7CiAgICAgfQogCi0gICAgQ1N0cmluZyBhc2NpaSgpIGNvbnN0OwotICAg
IENTdHJpbmcgbGF0aW4xKCkgY29uc3Q7Ci0gICAgQ1N0cmluZyB1dGY4KGJvb2wgc3RyaWN0ID0g
ZmFsc2UpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBDU3RyaW5nIGFzY2lpKCkgY29u
c3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIENTdHJpbmcgbGF0aW4xKCkgY29uc3Q7CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIENTdHJpbmcgdXRmOChib29sIHN0cmljdCA9IGZhbHNlKSBjb25z
dDsKIAogICAgIFVDaGFyIG9wZXJhdG9yW10odW5zaWduZWQgaW5kZXgpIGNvbnN0CiAgICAgewpA
QCAtMTUwLDE1ICsxNTAsMTUgQEAKICAgICAgICAgcmV0dXJuIG1faW1wbC0+Y2hhcmFjdGVycygp
W2luZGV4XTsKICAgICB9CiAKLSAgICBzdGF0aWMgU3RyaW5nIG51bWJlcihzaG9ydCk7Ci0gICAg
c3RhdGljIFN0cmluZyBudW1iZXIodW5zaWduZWQgc2hvcnQpOwotICAgIHN0YXRpYyBTdHJpbmcg
bnVtYmVyKGludCk7Ci0gICAgc3RhdGljIFN0cmluZyBudW1iZXIodW5zaWduZWQpOwotICAgIHN0
YXRpYyBTdHJpbmcgbnVtYmVyKGxvbmcpOwotICAgIHN0YXRpYyBTdHJpbmcgbnVtYmVyKHVuc2ln
bmVkIGxvbmcpOwotICAgIHN0YXRpYyBTdHJpbmcgbnVtYmVyKGxvbmcgbG9uZyk7Ci0gICAgc3Rh
dGljIFN0cmluZyBudW1iZXIodW5zaWduZWQgbG9uZyBsb25nKTsKLSAgICBzdGF0aWMgU3RyaW5n
IG51bWJlcihkb3VibGUpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RyaW5nIG51
bWJlcihzaG9ydCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJpbmcgbnVtYmVy
KHVuc2lnbmVkIHNob3J0KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cmluZyBu
dW1iZXIoaW50KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cmluZyBudW1iZXIo
dW5zaWduZWQpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RyaW5nIG51bWJlcihs
b25nKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cmluZyBudW1iZXIodW5zaWdu
ZWQgbG9uZyk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJpbmcgbnVtYmVyKGxv
bmcgbG9uZyk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJpbmcgbnVtYmVyKHVu
c2lnbmVkIGxvbmcgbG9uZyk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJpbmcg
bnVtYmVyKGRvdWJsZSk7CiAKICAgICAvLyBGaW5kIGEgc2luZ2xlIGNoYXJhY3RlciBvciBzdHJp
bmcsIGFsc28gd2l0aCBtYXRjaCBmdW5jdGlvbiAmIGxhdGluMSBmb3Jtcy4KICAgICBzaXplX3Qg
ZmluZChVQ2hhciBjLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0CkBAIC0xNzcsOSArMTc3LDkg
QEAKICAgICAgICAgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5yZXZlcnNlRmluZChzdHIuaW1w
bCgpLCBzdGFydCkgOiBub3RGb3VuZDsgfQogCiAgICAgLy8gQ2FzZSBpbnNlbnNpdGl2ZSBzdHJp
bmcgbWF0Y2hpbmcuCi0gICAgc2l6ZV90IGZpbmRJZ25vcmluZ0Nhc2UoY29uc3QgY2hhciogc3Ry
LCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVf
dCBmaW5kSWdub3JpbmdDYXNlKGNvbnN0IGNoYXIqIHN0ciwgdW5zaWduZWQgc3RhcnQgPSAwKSBj
b25zdAogICAgICAgICB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmZpbmRJZ25vcmluZ0Nhc2Uo
c3RyLCBzdGFydCkgOiBub3RGb3VuZDsgfQotICAgIHNpemVfdCBmaW5kSWdub3JpbmdDYXNlKGNv
bnN0IFN0cmluZyYgc3RyLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHNpemVfdCBmaW5kSWdub3JpbmdDYXNlKGNvbnN0IFN0cmluZyYgc3RyLCB1bnNp
Z25lZCBzdGFydCA9IDApIGNvbnN0CiAgICAgICAgIHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+
ZmluZElnbm9yaW5nQ2FzZShzdHIuaW1wbCgpLCBzdGFydCkgOiBub3RGb3VuZDsgfQogICAgIHNp
emVfdCByZXZlcnNlRmluZElnbm9yaW5nQ2FzZShjb25zdCBTdHJpbmcmIHN0ciwgdW5zaWduZWQg
c3RhcnQgPSBVSU5UX01BWCkgY29uc3QKICAgICAgICAgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBs
LT5yZXZlcnNlRmluZElnbm9yaW5nQ2FzZShzdHIuaW1wbCgpLCBzdGFydCkgOiBub3RGb3VuZDsg
fQpAQCAtMTkyLDkgKzE5Miw5IEBACiAgICAgc2l6ZV90IHJldmVyc2VGaW5kKGNvbnN0IFN0cmlu
ZyYgc3RyLCB1bnNpZ25lZCBzdGFydCwgYm9vbCBjYXNlU2Vuc2l0aXZlKSBjb25zdAogICAgICAg
ICB7IHJldHVybiBjYXNlU2Vuc2l0aXZlID8gcmV2ZXJzZUZpbmQoc3RyLCBzdGFydCkgOiByZXZl
cnNlRmluZElnbm9yaW5nQ2FzZShzdHIsIHN0YXJ0KTsgfQogCi0gICAgY29uc3QgVUNoYXIqIGNo
YXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGNv
bnN0IFVDaGFyKiBjaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpOwogICAgIAotICAgIFVD
aGFyMzIgY2hhcmFjdGVyU3RhcnRpbmdBdCh1bnNpZ25lZCkgY29uc3Q7IC8vIERpdHRvLgorICAg
IFdURl9FWFBPUlRfUFJJVkFURSBVQ2hhcjMyIGNoYXJhY3RlclN0YXJ0aW5nQXQodW5zaWduZWQp
IGNvbnN0OyAvLyBEaXR0by4KICAgICAKICAgICBib29sIGNvbnRhaW5zKFVDaGFyIGMpIGNvbnN0
IHsgcmV0dXJuIGZpbmQoYykgIT0gbm90Rm91bmQ7IH0KICAgICBib29sIGNvbnRhaW5zKGNvbnN0
IGNoYXIqIHN0ciwgYm9vbCBjYXNlU2Vuc2l0aXZlID0gdHJ1ZSkgY29uc3QgeyByZXR1cm4gZmlu
ZChzdHIsIDAsIGNhc2VTZW5zaXRpdmUpICE9IG5vdEZvdW5kOyB9CkBAIC0yMDUsMTEgKzIwNSwx
MSBAQAogICAgIGJvb2wgZW5kc1dpdGgoY29uc3QgU3RyaW5nJiBzLCBib29sIGNhc2VTZW5zaXRp
dmUgPSB0cnVlKSBjb25zdAogICAgICAgICB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmVuZHNX
aXRoKHMuaW1wbCgpLCBjYXNlU2Vuc2l0aXZlKSA6IHMuaXNFbXB0eSgpOyB9CiAKLSAgICB2b2lk
IGFwcGVuZChjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIGFwcGVuZChjaGFyKTsKLSAgICB2b2lk
IGFwcGVuZChVQ2hhcik7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBs
ZW5ndGgpOwotICAgIHZvaWQgaW5zZXJ0KGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIHBvcyk7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYpOworICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSB2b2lkIGFwcGVuZChjaGFyKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgdm9pZCBhcHBlbmQoVUNoYXIpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGFwcGVu
ZChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IHZvaWQgaW5zZXJ0KGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIHBvcyk7CiAgICAgdm9pZCBpbnNl
cnQoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIHBvcyk7CiAKICAgICBT
dHJpbmcmIHJlcGxhY2UoVUNoYXIgYSwgVUNoYXIgYikgeyBpZiAobV9pbXBsKSBtX2ltcGwgPSBt
X2ltcGwtPnJlcGxhY2UoYSwgYik7IHJldHVybiAqdGhpczsgfQpAQCAtMjIxLDMxICsyMjEsMzEg
QEAKICAgICB2b2lkIG1ha2VVcHBlcigpIHsgaWYgKG1faW1wbCkgbV9pbXBsID0gbV9pbXBsLT51
cHBlcigpOyB9CiAgICAgdm9pZCBtYWtlU2VjdXJlKFVDaGFyIGFDaGFyKSB7IGlmIChtX2ltcGwp
IG1faW1wbCA9IG1faW1wbC0+c2VjdXJlKGFDaGFyKTsgfQogCi0gICAgdm9pZCB0cnVuY2F0ZSh1
bnNpZ25lZCBsZW4pOwotICAgIHZvaWQgcmVtb3ZlKHVuc2lnbmVkIHBvcywgaW50IGxlbiA9IDEp
OworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHRydW5jYXRlKHVuc2lnbmVkIGxlbik7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVtb3ZlKHVuc2lnbmVkIHBvcywgaW50IGxlbiA9
IDEpOwogCi0gICAgU3RyaW5nIHN1YnN0cmluZyh1bnNpZ25lZCBwb3MsIHVuc2lnbmVkIGxlbiA9
IFVJTlRfTUFYKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHN1YnN0cmlu
Zyh1bnNpZ25lZCBwb3MsIHVuc2lnbmVkIGxlbiA9IFVJTlRfTUFYKSBjb25zdDsKICAgICBTdHJp
bmcgc3Vic3RyaW5nU2hhcmluZ0ltcGwodW5zaWduZWQgcG9zLCB1bnNpZ25lZCBsZW4gPSBVSU5U
X01BWCkgY29uc3Q7CiAgICAgU3RyaW5nIGxlZnQodW5zaWduZWQgbGVuKSBjb25zdCB7IHJldHVy
biBzdWJzdHJpbmcoMCwgbGVuKTsgfQogICAgIFN0cmluZyByaWdodCh1bnNpZ25lZCBsZW4pIGNv
bnN0IHsgcmV0dXJuIHN1YnN0cmluZyhsZW5ndGgoKSAtIGxlbiwgbGVuKTsgfQogCiAgICAgLy8g
UmV0dXJucyBhIGxvd2VyY2FzZS91cHBlcmNhc2UgdmVyc2lvbiBvZiB0aGUgc3RyaW5nCi0gICAg
U3RyaW5nIGxvd2VyKCkgY29uc3Q7Ci0gICAgU3RyaW5nIHVwcGVyKCkgY29uc3Q7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIFN0cmluZyBsb3dlcigpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBTdHJpbmcgdXBwZXIoKSBjb25zdDsKIAotICAgIFN0cmluZyBzdHJpcFdoaXRlU3BhY2Uo
KSBjb25zdDsKLSAgICBTdHJpbmcgc2ltcGxpZnlXaGl0ZVNwYWNlKCkgY29uc3Q7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIFN0cmluZyBzdHJpcFdoaXRlU3BhY2UoKSBjb25zdDsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nIHNpbXBsaWZ5V2hpdGVTcGFjZSgpIGNvbnN0OwogCi0gICAg
U3RyaW5nIHJlbW92ZUNoYXJhY3RlcnMoQ2hhcmFjdGVyTWF0Y2hGdW5jdGlvblB0cikgY29uc3Q7
CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyByZW1vdmVDaGFyYWN0ZXJzKENoYXJhY3Rl
ck1hdGNoRnVuY3Rpb25QdHIpIGNvbnN0OwogICAgIHRlbXBsYXRlPGJvb2wgaXNTcGVjaWFsQ2hh
cmFjdGVyKFVDaGFyKT4gYm9vbCBpc0FsbFNwZWNpYWxDaGFyYWN0ZXJzKCkgY29uc3Q7CiAKICAg
ICAvLyBSZXR1cm4gdGhlIHN0cmluZyB3aXRoIGNhc2UgZm9sZGVkIGZvciBjYXNlIGluc2Vuc2l0
aXZlIGNvbXBhcmlzb24uCi0gICAgU3RyaW5nIGZvbGRDYXNlKCkgY29uc3Q7CisgICAgV1RGX0VY
UE9SVF9QUklWQVRFIFN0cmluZyBmb2xkQ2FzZSgpIGNvbnN0OwogCiAjaWYgIVBMQVRGT1JNKFFU
KQotICAgIHN0YXRpYyBTdHJpbmcgZm9ybWF0KGNvbnN0IGNoYXIgKiwgLi4uKSBXVEZfQVRUUklC
VVRFX1BSSU5URigxLCAyKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cmluZyBm
b3JtYXQoY29uc3QgY2hhciAqLCAuLi4pIFdURl9BVFRSSUJVVEVfUFJJTlRGKDEsIDIpOwogI2Vs
c2UKLSAgICBzdGF0aWMgU3RyaW5nIGZvcm1hdChjb25zdCBjaGFyICosIC4uLik7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJpbmcgZm9ybWF0KGNvbnN0IGNoYXIgKiwgLi4uKTsK
ICNlbmRpZgogCiAgICAgLy8gUmV0dXJucyBhbiB1bmluaXRpYWxpemVkIHN0cmluZy4gVGhlIGNo
YXJhY3RlcnMgbmVlZHMgdG8gYmUgd3JpdHRlbgpAQCAtMjUzLDM0ICsyNTMsMzQgQEAKICAgICAv
LyBGYWlsdXJlIHRvIGRvIHRoaXMgd2lsbCBoYXZlIHVucHJlZGljdGFibGUgcmVzdWx0cy4KICAg
ICBzdGF0aWMgU3RyaW5nIGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoLCBVQ2hh
ciomIGRhdGEpIHsgcmV0dXJuIFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3Ro
LCBkYXRhKTsgfQogCi0gICAgdm9pZCBzcGxpdChjb25zdCBTdHJpbmcmIHNlcGFyYXRvciwgVmVj
dG9yPFN0cmluZz4mIHJlc3VsdCkgY29uc3Q7Ci0gICAgdm9pZCBzcGxpdChjb25zdCBTdHJpbmcm
IHNlcGFyYXRvciwgYm9vbCBhbGxvd0VtcHR5RW50cmllcywgVmVjdG9yPFN0cmluZz4mIHJlc3Vs
dCkgY29uc3Q7Ci0gICAgdm9pZCBzcGxpdChVQ2hhciBzZXBhcmF0b3IsIFZlY3RvcjxTdHJpbmc+
JiByZXN1bHQpIGNvbnN0OwotICAgIHZvaWQgc3BsaXQoVUNoYXIgc2VwYXJhdG9yLCBib29sIGFs
bG93RW1wdHlFbnRyaWVzLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KSBjb25zdDsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgdm9pZCBzcGxpdChjb25zdCBTdHJpbmcmIHNlcGFyYXRvciwgVmVjdG9y
PFN0cmluZz4mIHJlc3VsdCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc3Bs
aXQoY29uc3QgU3RyaW5nJiBzZXBhcmF0b3IsIGJvb2wgYWxsb3dFbXB0eUVudHJpZXMsIFZlY3Rv
cjxTdHJpbmc+JiByZXN1bHQpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNw
bGl0KFVDaGFyIHNlcGFyYXRvciwgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkgY29uc3Q7CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc3BsaXQoVUNoYXIgc2VwYXJhdG9yLCBib29sIGFsbG93
RW1wdHlFbnRyaWVzLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KSBjb25zdDsKIAotICAgIGludCB0
b0ludFN0cmljdChib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApIGNvbnN0OwotICAgIHVuc2ln
bmVkIHRvVUludFN0cmljdChib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApIGNvbnN0OwotICAg
IGludDY0X3QgdG9JbnQ2NFN0cmljdChib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApIGNvbnN0
OwotICAgIHVpbnQ2NF90IHRvVUludDY0U3RyaWN0KGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAx
MCkgY29uc3Q7Ci0gICAgaW50cHRyX3QgdG9JbnRQdHJTdHJpY3QoYm9vbCogb2sgPSAwLCBpbnQg
YmFzZSA9IDEwKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgaW50IHRvSW50U3RyaWN0
KGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHVuc2lnbmVkIHRvVUludFN0cmljdChib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApIGNv
bnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBpbnQ2NF90IHRvSW50NjRTdHJpY3QoYm9vbCog
b2sgPSAwLCBpbnQgYmFzZSA9IDEwKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdWlu
dDY0X3QgdG9VSW50NjRTdHJpY3QoYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKSBjb25zdDsK
KyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgaW50cHRyX3QgdG9JbnRQdHJTdHJpY3QoYm9vbCogb2sg
PSAwLCBpbnQgYmFzZSA9IDEwKSBjb25zdDsKIAotICAgIGludCB0b0ludChib29sKiBvayA9IDAp
IGNvbnN0OwotICAgIHVuc2lnbmVkIHRvVUludChib29sKiBvayA9IDApIGNvbnN0OworICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBpbnQgdG9JbnQoYm9vbCogb2sgPSAwKSBjb25zdDsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgdW5zaWduZWQgdG9VSW50KGJvb2wqIG9rID0gMCkgY29uc3Q7CiAgICAg
aW50NjRfdCB0b0ludDY0KGJvb2wqIG9rID0gMCkgY29uc3Q7Ci0gICAgdWludDY0X3QgdG9VSW50
NjQoYm9vbCogb2sgPSAwKSBjb25zdDsKLSAgICBpbnRwdHJfdCB0b0ludFB0cihib29sKiBvayA9
IDApIGNvbnN0OwotICAgIGRvdWJsZSB0b0RvdWJsZShib29sKiBvayA9IDAsIGJvb2wqIGRpZFJl
YWROdW1iZXIgPSAwKSBjb25zdDsKLSAgICBmbG9hdCB0b0Zsb2F0KGJvb2wqIG9rID0gMCwgYm9v
bCogZGlkUmVhZE51bWJlciA9IDApIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSB1aW50
NjRfdCB0b1VJbnQ2NChib29sKiBvayA9IDApIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBpbnRwdHJfdCB0b0ludFB0cihib29sKiBvayA9IDApIGNvbnN0OworICAgIFdURl9FWFBPUlRf
UFJJVkFURSBkb3VibGUgdG9Eb3VibGUoYm9vbCogb2sgPSAwLCBib29sKiBkaWRSZWFkTnVtYmVy
ID0gMCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGZsb2F0IHRvRmxvYXQoYm9vbCog
b2sgPSAwLCBib29sKiBkaWRSZWFkTnVtYmVyID0gMCkgY29uc3Q7CiAKICAgICBib29sIHBlcmNl
bnRhZ2UoaW50JiBwZXJjZW50YWdlKSBjb25zdDsKIAogICAgIC8vIFJldHVybnMgYSBTdHJpbmdJ
bXBsIHN1aXRhYmxlIGZvciB1c2Ugb24gYW5vdGhlciB0aHJlYWQuCi0gICAgU3RyaW5nIGNyb3Nz
VGhyZWFkU3RyaW5nKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBjcm9z
c1RocmVhZFN0cmluZygpIGNvbnN0OwogICAgIC8vIE1ha2VzIGEgZGVlcCBjb3B5LiBIZWxwZnVs
IG9ubHkgaWYgeW91IG5lZWQgdG8gdXNlIGEgU3RyaW5nIG9uIGFub3RoZXIgdGhyZWFkCiAgICAg
Ly8gKHVzZSBjcm9zc1RocmVhZFN0cmluZyBpZiB0aGUgbWV0aG9kIGNhbGwgZG9lc24ndCBuZWVk
IHRvIGJlIHRocmVhZHNhZmUpLgogICAgIC8vIFNpbmNlIHRoZSB1bmRlcmx5aW5nIFN0cmluZ0lt
cGwgb2JqZWN0cyBhcmUgaW1tdXRhYmxlLCB0aGVyZSdzIG5vIG90aGVyIHJlYXNvbgogICAgIC8v
IHRvIGV2ZXIgcHJlZmVyIGNvcHkoKSBvdmVyIHBsYWluIG9sZCBhc3NpZ25tZW50LgotICAgIFN0
cmluZyB0aHJlYWRzYWZlQ29weSgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJp
bmcgdGhyZWFkc2FmZUNvcHkoKSBjb25zdDsKIAogICAgIC8vIFByZXZlbnQgU3RyaW5ncyBmcm9t
IGJlaW5nIGltcGxpY2l0bHkgY29udmVydGFibGUgdG8gYm9vbCBhcyBpdCB3aWxsIGJlIGFtYmln
dW91cyBvbiBhbnkgcGxhdGZvcm0gdGhhdAogICAgIC8vIGFsbG93cyBpbXBsaWNpdCBjb252ZXJz
aW9uIHRvIGFub3RoZXIgcG9pbnRlciB0eXBlIChlLmcuLCBNYWMgYWxsb3dzIGltcGxpY2l0IGNv
bnZlcnNpb24gdG8gTlNTdHJpbmcqKS4KQEAgLTMwOSw4ICszMDksOCBAQAogI2VuZGlmCiAKICNp
ZiBQTEFURk9STShXWCkKLSAgICBTdHJpbmcoY29uc3Qgd3hTdHJpbmcmKTsKLSAgICBvcGVyYXRv
ciB3eFN0cmluZygpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcoY29uc3Qg
d3hTdHJpbmcmKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgb3BlcmF0b3Igd3hTdHJpbmcoKSBj
b25zdDsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSEFJS1UpCkBAIC0zMjQsMTEgKzMyNCwxMSBA
QAogCiAgICAgLy8gU3RyaW5nOjpmcm9tVVRGOCB3aWxsIHJldHVybiBhIG51bGwgc3RyaW5nIGlm
CiAgICAgLy8gdGhlIGlucHV0IGRhdGEgY29udGFpbnMgaW52YWxpZCBVVEYtOCBzZXF1ZW5jZXMu
Ci0gICAgc3RhdGljIFN0cmluZyBmcm9tVVRGOChjb25zdCBjaGFyKiwgc2l6ZV90KTsKLSAgICBz
dGF0aWMgU3RyaW5nIGZyb21VVEY4KGNvbnN0IGNoYXIqKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIFN0cmluZyBmcm9tVVRGOChjb25zdCBjaGFyKiwgc2l6ZV90KTsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cmluZyBmcm9tVVRGOChjb25zdCBjaGFyKik7CiAKICAg
ICAvLyBUcmllcyB0byBjb252ZXJ0IHRoZSBwYXNzZWQgaW4gc3RyaW5nIHRvIFVURi04LCBidXQg
d2lsbCBmYWxsIGJhY2sgdG8gTGF0aW4tMSBpZiB0aGUgc3RyaW5nIGlzIG5vdCB2YWxpZCBVVEYt
OC4KLSAgICBzdGF0aWMgU3RyaW5nIGZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNrKGNvbnN0IGNo
YXIqLCBzaXplX3QpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RyaW5nIGZyb21V
VEY4V2l0aExhdGluMUZhbGxiYWNrKGNvbnN0IGNoYXIqLCBzaXplX3QpOwogICAgIAogICAgIC8v
IERldGVybWluZXMgdGhlIHdyaXRpbmcgZGlyZWN0aW9uIHVzaW5nIHRoZSBVbmljb2RlIEJpZGkg
QWxnb3JpdGhtIHJ1bGVzIFAyIGFuZCBQMy4KICAgICBXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbiBk
ZWZhdWx0V3JpdGluZ0RpcmVjdGlvbihib29sKiBoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSA9IDAp
IGNvbnN0CkBAIC0zNDUsNyArMzQ1LDcgQEAKIAogICAgIC8vIEhhc2ggdGFibGUgZGVsZXRlZCB2
YWx1ZXMsIHdoaWNoIGFyZSBvbmx5IGNvbnN0cnVjdGVkIGFuZCBuZXZlciBjb3BpZWQgb3IgZGVz
dHJveWVkLgogICAgIFN0cmluZyhXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpIDogbV9p
bXBsKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKSB7IH0KLSAgICBib29sIGlzSGFzaFRhYmxl
RGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9pbXBsLmlzSGFzaFRhYmxlRGVsZXRlZFZh
bHVlKCk7IH0KKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRW
YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1wbC5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9
CiAKIHByaXZhdGU6CiAgICAgUmVmUHRyPFN0cmluZ0ltcGw+IG1faW1wbDsKQEAgLTM1Niw5ICsz
NTYsOSBAQAogUURhdGFTdHJlYW0mIG9wZXJhdG9yPj4oUURhdGFTdHJlYW0mIHN0cmVhbSwgU3Ry
aW5nJiBzdHIpOwogI2VuZGlmCiAKLVN0cmluZyBvcGVyYXRvcisoY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJik7Ci1TdHJpbmcgb3BlcmF0b3IrKGNvbnN0IFN0cmluZyYsIGNvbnN0IGNoYXIq
KTsKLVN0cmluZyBvcGVyYXRvcisoY29uc3QgY2hhciosIGNvbnN0IFN0cmluZyYpOworV1RGX0VY
UE9SVF9QUklWQVRFIFN0cmluZyBvcGVyYXRvcisoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
Jik7CitXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIG9wZXJhdG9yKyhjb25zdCBTdHJpbmcmLCBj
b25zdCBjaGFyKik7CitXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIG9wZXJhdG9yKyhjb25zdCBj
aGFyKiwgY29uc3QgU3RyaW5nJik7CiAKIGlubGluZSBTdHJpbmcmIG9wZXJhdG9yKz0oU3RyaW5n
JiBhLCBjb25zdCBTdHJpbmcmIGIpIHsgYS5hcHBlbmQoYik7IHJldHVybiBhOyB9CiAKQEAgLTQx
OSw3ICs0MTksNyBAQAogICAgIHJldHVybiAhKG9yZWQgJiAweEZGMDApOwogfQogCi1pbnQgY29k
ZVBvaW50Q29tcGFyZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKK1dURl9FWFBPUlRf
UFJJVkFURSBpbnQgY29kZVBvaW50Q29tcGFyZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
KTsKIAogaW5saW5lIHNpemVfdCBmaW5kKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25l
ZCBsZW5ndGgsIFVDaGFyIG1hdGNoQ2hhcmFjdGVyLCB1bnNpZ25lZCBpbmRleCA9IDApCiB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88953</attachid>
            <date>2011-04-10 10:46:01 -0700</date>
            <delta_ts>2011-04-10 13:02:26 -0700</delta_ts>
            <desc>Add export macros to bytecompiler headers.</desc>
            <filename>bytecompiler_exports.patch</filename>
            <type>text/plain</type>
            <size>1242</size>
            <attacher name="Kevin Ollivier">kevino</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmgJKHJldmlzaW9uIDgzMzk5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC04
OSw3ICs4OSw3IEBACiAgICAgICAgIHR5cGVkZWYgRGVjbGFyYXRpb25TdGFja3M6OlZhclN0YWNr
IFZhclN0YWNrOwogICAgICAgICB0eXBlZGVmIERlY2xhcmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0
YWNrIEZ1bmN0aW9uU3RhY2s7CiAKLSAgICAgICAgc3RhdGljIHZvaWQgc2V0RHVtcHNHZW5lcmF0
ZWRDb2RlKGJvb2wgZHVtcHNHZW5lcmF0ZWRDb2RlKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIHZvaWQgc2V0RHVtcHNHZW5lcmF0ZWRDb2RlKGJvb2wgZHVtcHNHZW5lcmF0ZWRD
b2RlKTsKICAgICAgICAgc3RhdGljIGJvb2wgZHVtcHNHZW5lcmF0ZWRDb2RlKCk7CiAKICAgICAg
ICAgQnl0ZWNvZGVHZW5lcmF0b3IoUHJvZ3JhbU5vZGUqLCBTY29wZUNoYWluTm9kZSosIFN5bWJv
bFRhYmxlKiwgUHJvZ3JhbUNvZGVCbG9jayopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA4MzQwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxMSBAQAorMjAxMS0wNC0xMCAgS2V2aW4gT2xsaXZpZXIg
IDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgSlNfRVhQT1JUX1BSSVZBVEUgbWFjcm8gZm9yIGV4cG9y
dGVkIG1ldGhvZHMgaW4gYnl0ZWNvbXBpbGVyIGhlYWRlcnMuCisKKyAgICAgICAgKiBieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKwogMjAxMS0wNC0wOSAgR2VvZmZyZXkgR2FyZW4g
IDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIE5vdCByZXZpZXdlZC4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88955</attachid>
            <date>2011-04-10 11:12:52 -0700</date>
            <delta_ts>2011-05-25 11:55:07 -0700</delta_ts>
            <desc>Add export macros to bytecompiler headers.</desc>
            <filename>bug-27551-20110410111251.patch</filename>
            <type>text/plain</type>
            <size>1304</size>
            <attacher name="Kevin Ollivier">kevino</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODM0MDEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTEtMDQtMTAgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIEpTX0VY
UE9SVF9QUklWQVRFIG1hY3JvIGZvciBleHBvcnRlZCBtZXRob2RzIGluIGJ5dGVjb21waWxlciBo
ZWFkZXJzLgorICAgICAgICAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTI3NTUxCisKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaDoKKwogMjAxMS0wNC0wOSAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgog
CiAgICAgICAgIE5vdCByZXZpZXdlZC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHJldmlzaW9uIDgzMzk5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC04OSw3ICs4OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB0eXBlZGVmIERlY2xhcmF0aW9uU3RhY2tzOjpWYXJTdGFjayBWYXJTdGFjazsKICAgICAg
ICAgdHlwZWRlZiBEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFjayBGdW5jdGlvblN0YWNr
OwogCi0gICAgICAgIHN0YXRpYyB2b2lkIHNldER1bXBzR2VuZXJhdGVkQ29kZShib29sIGR1bXBz
R2VuZXJhdGVkQ29kZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHNl
dER1bXBzR2VuZXJhdGVkQ29kZShib29sKTsKICAgICAgICAgc3RhdGljIGJvb2wgZHVtcHNHZW5l
cmF0ZWRDb2RlKCk7CiAKICAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoUHJvZ3JhbU5vZGUqLCBT
Y29wZUNoYWluTm9kZSosIFN5bWJvbFRhYmxlKiwgUHJvZ3JhbUNvZGVCbG9jayopOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>94823</attachid>
            <date>2011-05-25 11:55:28 -0700</date>
            <delta_ts>2011-06-08 17:50:55 -0700</delta_ts>
            <desc>Add debugger export symbols.</desc>
            <filename>bug-27551-20110525115526.patch</filename>
            <type>text/plain</type>
            <size>2069</size>
            <attacher name="Kevin Ollivier">kevino</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODczMDkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTEtMDUtMjUgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGV4cG9y
dCBzeW1ib2xzIHRvIGRlYnVnZ2VyIGhlYWRlcnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzU1MQorCisgICAgICAgICogZGVidWdnZXIvRGVidWdn
ZXIuaDoKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5oOgorCiAyMDExLTA1
LTI1ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgR2VvZmZyZXkgR2FyZW4uCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIv
RGVidWdnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIv
RGVidWdnZXIuaAkocmV2aXNpb24gODczMDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVi
dWdnZXIvRGVidWdnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICBjbGFzcyBTb3VyY2VQcm92aWRlcjsKICAgICBjbGFzcyBVU3RyaW5nOwog
Ci0gICAgY2xhc3MgRGVidWdnZXIgeworICAgIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIERlYnVn
Z2VyIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgfkRlYnVnZ2VyKCk7CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFt
ZS5oCShyZXZpc2lvbiA4NzMwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9E
ZWJ1Z2dlckNhbGxGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSwxMCArNTEsMTAgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBkeW5hbWljR2xvYmFsT2JqZWN0
KCkgY29uc3QgeyByZXR1cm4gbV9jYWxsRnJhbWUtPmR5bmFtaWNHbG9iYWxPYmplY3QoKTsgfQog
ICAgICAgICBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbigpIGNvbnN0IHsgcmV0dXJuIG1fY2Fs
bEZyYW1lLT5zY29wZUNoYWluKCk7IH0KICAgICAgICAgY29uc3QgVVN0cmluZyogZnVuY3Rpb25O
YW1lKCkgY29uc3Q7Ci0gICAgICAgIFVTdHJpbmcgY2FsY3VsYXRlZEZ1bmN0aW9uTmFtZSgpIGNv
bnN0OwotICAgICAgICBUeXBlIHR5cGUoKSBjb25zdDsKLSAgICAgICAgSlNPYmplY3QqIHRoaXNP
YmplY3QoKSBjb25zdDsKLSAgICAgICAgSlNWYWx1ZSBldmFsdWF0ZShjb25zdCBVU3RyaW5nJiwg
SlNWYWx1ZSYgZXhjZXB0aW9uKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgVVN0
cmluZyBjYWxjdWxhdGVkRnVuY3Rpb25OYW1lKCkgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIFR5cGUgdHlwZSgpIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBKU09i
amVjdCogdGhpc09iamVjdCgpIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBKU1Zh
bHVlIGV2YWx1YXRlKGNvbnN0IFVTdHJpbmcmLCBKU1ZhbHVlJiBleGNlcHRpb24pIGNvbnN0Owog
ICAgICAgICBKU1ZhbHVlIGV4Y2VwdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZXhjZXB0aW9uOyB9
CiAKICAgICBwcml2YXRlOgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>94826</attachid>
            <date>2011-05-25 11:59:48 -0700</date>
            <delta_ts>2011-06-08 17:51:03 -0700</delta_ts>
            <desc>Add heap export symbols.</desc>
            <filename>bug-27551-20110525115946.patch</filename>
            <type>text/plain</type>
            <size>4636</size>
            <attacher name="Kevin Ollivier">kevino</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODczMDkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTEtMDUtMjUgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGV4cG9y
dCBtYWNyb3MgdG8gaGVhcCBoZWFkZXJzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Mjc1NTEKKworICAgICAgICAqIGhlYXAvSGFuZGxlSGVhcC5oOgor
ICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAqIGhlYXAvTWFya2VkU3BhY2UuaDoKKwog
MjAxMS0wNS0yNSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGFuZGxlSGVhcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hhbmRsZUhlYXAuaAkocmV2aXNpb24gODczMDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IYW5kbGVIZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3Mg
TWFya1N0YWNrOwogY2xhc3MgVHlwZUNvdW50ZXI7CiB0eXBlZGVmIE1hcmtTdGFjayBTbG90Vmlz
aXRvcjsKIAotY2xhc3MgV2Vha0hhbmRsZU93bmVyIHsKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRF
IFdlYWtIYW5kbGVPd25lciB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2Vha0hhbmRsZU93bmVy
KCk7CiAgICAgdmlydHVhbCBib29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEhhbmRsZTxV
bmtub3duPiwgdm9pZCogY29udGV4dCwgU2xvdFZpc2l0b3ImKTsKQEAgLTY2LDcgKzY2LDcgQEAg
cHVibGljOgogICAgIHZvaWQgbWFya1dlYWtIYW5kbGVzKEhlYXBSb290VmlzaXRvciYpOwogICAg
IHZvaWQgZmluYWxpemVXZWFrSGFuZGxlcygpOwogCi0gICAgdm9pZCB3cml0ZUJhcnJpZXIoSGFu
ZGxlU2xvdCwgY29uc3QgSlNWYWx1ZSYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgd3Jp
dGVCYXJyaWVyKEhhbmRsZVNsb3QsIGNvbnN0IEpTVmFsdWUmKTsKIAogI2lmICFBU1NFUlRfRElT
QUJMRUQKICAgICBib29sIGhhc1dlYWtPd25lcihIYW5kbGVTbG90LCBXZWFrSGFuZGxlT3duZXIq
KTsKQEAgLTExMSw3ICsxMTEsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBIYW5kbGVTbG90IHRv
SGFuZGxlKE5vZGUqKTsKICAgICBzdGF0aWMgTm9kZSogdG9Ob2RlKEhhbmRsZVNsb3QpOwogCi0g
ICAgdm9pZCBncm93KCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBncm93KCk7CiAgICAg
CiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIGJvb2wgaXNWYWxpZFdlYWtOb2RlKE5vZGUqKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHJldmlzaW9uIDg3MzAzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MiwzNSAr
NjIsMzUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBib29sIHRlc3RBbmRTZXRN
YXJrZWQoY29uc3QgSlNDZWxsKik7CiAgICAgICAgIHN0YXRpYyB2b2lkIHNldE1hcmtlZChKU0Nl
bGwqKTsKIAotICAgICAgICBzdGF0aWMgdm9pZCB3cml0ZUJhcnJpZXIoY29uc3QgSlNDZWxsKiwg
SlNWYWx1ZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHdyaXRlQmFy
cmllcihjb25zdCBKU0NlbGwqLCBKU1ZhbHVlKTsKICAgICAgICAgc3RhdGljIHZvaWQgd3JpdGVC
YXJyaWVyKGNvbnN0IEpTQ2VsbCosIEpTQ2VsbCopOwogCiAgICAgICAgIEhlYXAoSlNHbG9iYWxE
YXRhKik7CiAgICAgICAgIH5IZWFwKCk7Ci0gICAgICAgIHZvaWQgZGVzdHJveSgpOyAvLyBKU0ds
b2JhbERhdGEgbXVzdCBjYWxsIGRlc3Ryb3koKSBiZWZvcmUgfkhlYXAoKS4KKyAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgdm9pZCBkZXN0cm95KCk7IC8vIEpTR2xvYmFsRGF0YSBtdXN0IGNhbGwg
ZGVzdHJveSgpIGJlZm9yZSB+SGVhcCgpLgogCiAgICAgICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFsRGF0YTsgfQogICAgICAgICBNYXJrZWRTcGFj
ZSYgbWFya2VkU3BhY2UoKSB7IHJldHVybiBtX21hcmtlZFNwYWNlOyB9CiAgICAgICAgIE1hY2hp
bmVUaHJlYWRzJiBtYWNoaW5lVGhyZWFkcygpIHsgcmV0dXJuIG1fbWFjaGluZVRocmVhZHM7IH0K
IAotICAgICAgICBHQ0FjdGl2aXR5Q2FsbGJhY2sqIGFjdGl2aXR5Q2FsbGJhY2soKTsKKyAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgR0NBY3Rpdml0eUNhbGxiYWNrKiBhY3Rpdml0eUNhbGxiYWNr
KCk7CiAgICAgICAgIHZvaWQgc2V0QWN0aXZpdHlDYWxsYmFjayhQYXNzT3duUHRyPEdDQWN0aXZp
dHlDYWxsYmFjaz4pOwogCiAgICAgICAgIC8vIHRydWUgaWYgYW4gYWxsb2NhdGlvbiBvciBjb2xs
ZWN0aW9uIGlzIGluIHByb2dyZXNzCiAgICAgICAgIGlubGluZSBib29sIGlzQnVzeSgpOwogCiAg
ICAgICAgIHZvaWQqIGFsbG9jYXRlKHNpemVfdCk7Ci0gICAgICAgIHZvaWQgY29sbGVjdEFsbEdh
cmJhZ2UoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBjb2xsZWN0QWxsR2FyYmFn
ZSgpOwogCiAgICAgICAgIHZvaWQgcmVwb3J0RXh0cmFNZW1vcnlDb3N0KHNpemVfdCBjb3N0KTsK
IAotICAgICAgICB2b2lkIHByb3RlY3QoSlNWYWx1ZSk7Ci0gICAgICAgIGJvb2wgdW5wcm90ZWN0
KEpTVmFsdWUpOyAvLyBUcnVlIHdoZW4gdGhlIHByb3RlY3QgY291bnQgZHJvcHMgdG8gMC4KKyAg
ICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBwcm90ZWN0KEpTVmFsdWUpOworICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSBib29sIHVucHJvdGVjdChKU1ZhbHVlKTsgLy8gVHJ1ZSB3aGVuIHRo
ZSBwcm90ZWN0IGNvdW50IGRyb3BzIHRvIDAuCiAKICAgICAgICAgYm9vbCBjb250YWlucyh2b2lk
Kik7CiAKLSAgICAgICAgc2l6ZV90IHNpemUoKSBjb25zdDsKLSAgICAgICAgc2l6ZV90IGNhcGFj
aXR5KCkgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHNpemVfdCBzaXplKCkgY29u
c3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHNpemVfdCBjYXBhY2l0eSgpIGNvbnN0Owog
ICAgICAgICBzaXplX3Qgb2JqZWN0Q291bnQoKSBjb25zdDsKICAgICAgICAgc2l6ZV90IGdsb2Jh
bE9iamVjdENvdW50KCk7CiAgICAgICAgIHNpemVfdCBwcm90ZWN0ZWRPYmplY3RDb3VudCgpOwpA
QCAtMTE2LDggKzExNiw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgY29uc3Qg
c2l6ZV90IG1pbkV4dHJhQ29zdCA9IDI1NjsKICAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBt
YXhFeHRyYUNvc3QgPSAxMDI0ICogMTAyNDsKIAotICAgICAgICB2b2lkKiBhbGxvY2F0ZVNsb3dD
YXNlKHNpemVfdCk7Ci0gICAgICAgIHZvaWQgcmVwb3J0RXh0cmFNZW1vcnlDb3N0U2xvd0Nhc2Uo
c2l6ZV90KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCogYWxsb2NhdGVTbG93Q2Fz
ZShzaXplX3QpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHJlcG9ydEV4dHJhTWVt
b3J5Q29zdFNsb3dDYXNlKHNpemVfdCk7CiAKICAgICAgICAgdm9pZCBtYXJrUm9vdHMoKTsKICAg
ICAgICAgdm9pZCBtYXJrUHJvdGVjdGVkT2JqZWN0cyhIZWFwUm9vdFZpc2l0b3ImKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAkocmV2aXNpb24gODczMDMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDYsNyArMTA2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZnJl
ZUJsb2NrcyhEb3VibHlMaW5rZWRMaXN0PE1hcmtlZEJsb2NrPiYpOwogCiAgICAgICAgIFNpemVD
bGFzcyYgc2l6ZUNsYXNzRm9yKHNpemVfdCk7Ci0gICAgICAgIHZvaWQqIGFsbG9jYXRlRnJvbVNp
emVDbGFzcyhTaXplQ2xhc3MmKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCogYWxs
b2NhdGVGcm9tU2l6ZUNsYXNzKFNpemVDbGFzcyYpOwogCiAgICAgICAgIHZvaWQgY2xlYXJNYXJr
cyhNYXJrZWRCbG9jayopOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>94829</attachid>
            <date>2011-05-25 12:03:47 -0700</date>
            <delta_ts>2011-06-08 17:51:10 -0700</delta_ts>
            <desc>Add interpreter export symbols.</desc>
            <filename>bug-27551-20110525120346.patch</filename>
            <type>text/plain</type>
            <size>1595</size>
            <attacher name="Kevin Ollivier">kevino</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODczMTApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTEtMDUtMjUgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGV4cG9y
dCBzeW1ib2xzIHRvIGludGVycHJldGVyIGhlYWRlcnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzU1MQorCisgICAgICAgICogaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXIuaDoKKwogMjAxMS0wNS0yNSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgJKHJldmlzaW9u
IDg3MzAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw4ICsxMDAsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgSlNWYWx1ZSBleGVjdXRlKEV2YWxFeGVjdXRhYmxlKiBldmFsTm9kZSwgQ2FsbEZyYW1l
KiBleGVjLCBKU09iamVjdCogdGhpc09iaiwgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW4pOwog
CiAgICAgICAgIEpTVmFsdWUgcmV0cmlldmVBcmd1bWVudHMoQ2FsbEZyYW1lKiwgSlNGdW5jdGlv
biopIGNvbnN0OwotICAgICAgICBKU1ZhbHVlIHJldHJpZXZlQ2FsbGVyKENhbGxGcmFtZSosIEpT
RnVuY3Rpb24qKSBjb25zdDsKLSAgICAgICAgdm9pZCByZXRyaWV2ZUxhc3RDYWxsZXIoQ2FsbEZy
YW1lKiwgaW50JiBsaW5lTnVtYmVyLCBpbnRwdHJfdCYgc291cmNlSUQsIFVTdHJpbmcmIHNvdXJj
ZVVSTCwgSlNWYWx1ZSYgZnVuY3Rpb24pIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSBKU1ZhbHVlIHJldHJpZXZlQ2FsbGVyKENhbGxGcmFtZSosIEpTRnVuY3Rpb24qKSBjb25zdDsK
KyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCByZXRyaWV2ZUxhc3RDYWxsZXIoQ2FsbEZy
YW1lKiwgaW50JiBsaW5lTnVtYmVyLCBpbnRwdHJfdCYgc291cmNlSUQsIFVTdHJpbmcmIHNvdXJj
ZVVSTCwgSlNWYWx1ZSYgZnVuY3Rpb24pIGNvbnN0OwogICAgICAgICAKICAgICAgICAgdm9pZCBn
ZXRBcmd1bWVudHNEYXRhKENhbGxGcmFtZSosIEpTRnVuY3Rpb24qJiwgcHRyZGlmZl90JiBmaXJz
dFBhcmFtZXRlckluZGV4LCBSZWdpc3RlciomIGFyZ3YsIGludCYgYXJnYyk7CiAgICAgICAgIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>94832</attachid>
            <date>2011-05-25 12:07:51 -0700</date>
            <delta_ts>2011-06-08 17:51:18 -0700</delta_ts>
            <desc>Add parser export symbols.</desc>
            <filename>bug-27551-20110525120749.patch</filename>
            <type>text/plain</type>
            <size>1374</size>
            <attacher name="Kevin Ollivier">kevino</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODczMTApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTEtMDUtMjUgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGV4cG9y
dCBzeW1ib2xzIHRvIHBhcnNlciBoZWFkZXJzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc1NTEKKworICAgICAgICAqIHBhcnNlci9Tb3VyY2VQcm92
aWRlckNhY2hlLmg6CisKIDIwMTEtMDUtMjUgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlkZXJDYWNoZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlkZXJDYWNoZS5oCShyZXZp
c2lvbiA4NzMwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlk
ZXJDYWNoZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMCArMzMsMTAgQEAgY2xhc3MgU291cmNl
UHJvdmlkZXJDYWNoZUl0ZW07CiBjbGFzcyBTb3VyY2VQcm92aWRlckNhY2hlIHsKIHB1YmxpYzoK
ICAgICBTb3VyY2VQcm92aWRlckNhY2hlKCkgOiBtX2NvbnRlbnRCeXRlU2l6ZSgwKSB7fQotICAg
IH5Tb3VyY2VQcm92aWRlckNhY2hlKCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgflNvdXJjZVBy
b3ZpZGVyQ2FjaGUoKTsKIAotICAgIHZvaWQgY2xlYXIoKTsKLSAgICB1bnNpZ25lZCBieXRlU2l6
ZSgpIGNvbnN0OworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgY2xlYXIoKTsKKyAgICBKU19F
WFBPUlRfUFJJVkFURSB1bnNpZ25lZCBieXRlU2l6ZSgpIGNvbnN0OwogICAgIHZvaWQgYWRkKGlu
dCBzb3VyY2VQb3NpdGlvbiwgUGFzc093blB0cjxTb3VyY2VQcm92aWRlckNhY2hlSXRlbT4sIHVu
c2lnbmVkIHNpemUpOwogICAgIGNvbnN0IFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtKiBnZXQoaW50
IHNvdXJjZVBvc2l0aW9uKSBjb25zdCB7IHJldHVybiBtX21hcC5nZXQoc291cmNlUG9zaXRpb24p
OyB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>94836</attachid>
            <date>2011-05-25 12:32:51 -0700</date>
            <delta_ts>2011-06-08 17:51:25 -0700</delta_ts>
            <desc>Add profiler export symbols.</desc>
            <filename>bug-27551-20110525123249.patch</filename>
            <type>text/plain</type>
            <size>1552</size>
            <attacher name="Kevin Ollivier">kevino</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODczMTUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTEtMDUtMjUgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGV4cG9y
dCBtYWNyb3MgdG8gcHJvZmlsZXIgaGVhZGVycy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NTUxCisKKyAgICAgICAgKiBwcm9maWxlci9Qcm9maWxl
ci5oOgorCiAyMDExLTA1LTI1ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcHJvZmlsZXIvUHJvZmlsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcHJvZmlsZXIvUHJvZmlsZXIuaAkocmV2aXNpb24gODczMDMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsMTEg
KzUzLDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuICZzX3NoYXJlZEVu
YWJsZWRQcm9maWxlclJlZmVyZW5jZTsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBQcm9m
aWxlciogcHJvZmlsZXIoKTsgCisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQcm9m
aWxlciogcHJvZmlsZXIoKTsgCiAgICAgICAgIHN0YXRpYyBDYWxsSWRlbnRpZmllciBjcmVhdGVD
YWxsSWRlbnRpZmllcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUsIGNvbnN0IFVTdHJpbmcmIHNv
dXJjZVVSTCwgaW50IGxpbmVOdW1iZXIpOwogCi0gICAgICAgIHZvaWQgc3RhcnRQcm9maWxpbmco
RXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYgdGl0bGUpOwotICAgICAgICBQYXNzUmVmUHRyPFBy
b2ZpbGU+IHN0b3BQcm9maWxpbmcoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYgdGl0bGUpOwor
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHN0YXJ0UHJvZmlsaW5nKEV4ZWNTdGF0ZSos
IGNvbnN0IFVTdHJpbmcmIHRpdGxlKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgUGFzc1Jl
ZlB0cjxQcm9maWxlPiBzdG9wUHJvZmlsaW5nKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmIHRp
dGxlKTsKICAgICAgICAgdm9pZCBzdG9wUHJvZmlsaW5nKEpTR2xvYmFsT2JqZWN0Kik7CiAKICAg
ICAgICAgdm9pZCB3aWxsRXhlY3V0ZShFeGVjU3RhdGUqIGNhbGxlckNhbGxGcmFtZSwgSlNWYWx1
ZSBmdW5jdGlvbik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96518</attachid>
            <date>2011-06-08 17:51:40 -0700</date>
            <delta_ts>2011-07-11 09:51:45 -0700</delta_ts>
            <desc>Update Heap patch to address bitrot</desc>
            <filename>bug-27551-20110608175138.patch</filename>
            <type>text/plain</type>
            <size>4304</size>
            <attacher name="Kevin Ollivier">kevino</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODg0MTEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTEtMDYtMDggIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGV4cG9y
dCBtYWNyb3MgdG8gSGVhcCBoZWFkZXJzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Mjc1NTEKKworICAgICAgICAqIGhlYXAvSGFuZGxlSGVhcC5oOgor
ICAgICAgICAqIGhlYXAvSGVhcC5oOgorCiAyMDExLTA2LTA4ICBTaGVyaWZmIEJvdCAgPHdlYmtp
dC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91
dCByODg0MDQuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGVIZWFwLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlSGVhcC5oCShy
ZXZpc2lvbiA4ODQxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZUhlYXAu
aAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBNYXJrU3RhY2s7CiBjbGFz
cyBUeXBlQ291bnRlcjsKIHR5cGVkZWYgTWFya1N0YWNrIFNsb3RWaXNpdG9yOwogCi1jbGFzcyBX
ZWFrSGFuZGxlT3duZXIgeworY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgV2Vha0hhbmRsZU93bmVy
IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWFrSGFuZGxlT3duZXIoKTsKICAgICB2aXJ0dWFs
IGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSGFuZGxlPFVua25vd24+LCB2b2lkKiBj
b250ZXh0LCBTbG90VmlzaXRvciYpOwpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCB2aXNpdFdlYWtIYW5kbGVzKEhlYXBSb290VmlzaXRvciYpOwogICAgIHZvaWQgZmluYWxpemVX
ZWFrSGFuZGxlcygpOwogCi0gICAgdm9pZCB3cml0ZUJhcnJpZXIoSGFuZGxlU2xvdCwgY29uc3Qg
SlNWYWx1ZSYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgd3JpdGVCYXJyaWVyKEhhbmRs
ZVNsb3QsIGNvbnN0IEpTVmFsdWUmKTsKIAogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICBib29s
IGhhc1dlYWtPd25lcihIYW5kbGVTbG90LCBXZWFrSGFuZGxlT3duZXIqKTsKQEAgLTExMSw3ICsx
MTEsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBIYW5kbGVTbG90IHRvSGFuZGxlKE5vZGUqKTsK
ICAgICBzdGF0aWMgTm9kZSogdG9Ob2RlKEhhbmRsZVNsb3QpOwogCi0gICAgdm9pZCBncm93KCk7
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBncm93KCk7CiAgICAgCiAjaWYgIUFTU0VSVF9E
SVNBQkxFRAogICAgIGJvb2wgaXNWYWxpZFdlYWtOb2RlKE5vZGUqKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwLmgJKHJldmlzaW9uIDg4NDExKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MywzNiArNjMsMzYgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBib29sIHRlc3RBbmRDbGVhck1hcmtlZChjb25zdCB2
b2lkKik7CiAgICAgICAgIHN0YXRpYyB2b2lkIHNldE1hcmtlZChjb25zdCB2b2lkKik7CiAKLSAg
ICAgICAgc3RhdGljIHZvaWQgd3JpdGVCYXJyaWVyKGNvbnN0IEpTQ2VsbCosIEpTVmFsdWUpOwor
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCB3cml0ZUJhcnJpZXIoY29uc3Qg
SlNDZWxsKiwgSlNWYWx1ZSk7CiAgICAgICAgIHN0YXRpYyB2b2lkIHdyaXRlQmFycmllcihjb25z
dCBKU0NlbGwqLCBKU0NlbGwqKTsKIAogICAgICAgICBIZWFwKEpTR2xvYmFsRGF0YSopOwogICAg
ICAgICB+SGVhcCgpOwotICAgICAgICB2b2lkIGRlc3Ryb3koKTsgLy8gSlNHbG9iYWxEYXRhIG11
c3QgY2FsbCBkZXN0cm95KCkgYmVmb3JlIH5IZWFwKCkuCisgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQgZGVzdHJveSgpOyAvLyBKU0dsb2JhbERhdGEgbXVzdCBjYWxsIGRlc3Ryb3koKSBi
ZWZvcmUgfkhlYXAoKS4KIAogICAgICAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEoKSBjb25z
dCB7IHJldHVybiBtX2dsb2JhbERhdGE7IH0KICAgICAgICAgTmV3U3BhY2UmIG1hcmtlZFNwYWNl
KCkgeyByZXR1cm4gbV9uZXdTcGFjZTsgfQogICAgICAgICBNYWNoaW5lVGhyZWFkcyYgbWFjaGlu
ZVRocmVhZHMoKSB7IHJldHVybiBtX21hY2hpbmVUaHJlYWRzOyB9CiAKLSAgICAgICAgR0NBY3Rp
dml0eUNhbGxiYWNrKiBhY3Rpdml0eUNhbGxiYWNrKCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIEdDQWN0aXZpdHlDYWxsYmFjayogYWN0aXZpdHlDYWxsYmFjaygpOwogICAgICAgICB2b2lk
IHNldEFjdGl2aXR5Q2FsbGJhY2soUGFzc093blB0cjxHQ0FjdGl2aXR5Q2FsbGJhY2s+KTsKIAog
ICAgICAgICAvLyB0cnVlIGlmIGFuIGFsbG9jYXRpb24gb3IgY29sbGVjdGlvbiBpcyBpbiBwcm9n
cmVzcwogICAgICAgICBpbmxpbmUgYm9vbCBpc0J1c3koKTsKIAogICAgICAgICB2b2lkKiBhbGxv
Y2F0ZShzaXplX3QpOwotICAgICAgICB2b2lkKiBhbGxvY2F0ZShOZXdTcGFjZTo6U2l6ZUNsYXNz
Jik7Ci0gICAgICAgIHZvaWQgY29sbGVjdEFsbEdhcmJhZ2UoKTsKKyAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgdm9pZCogYWxsb2NhdGUoTmV3U3BhY2U6OlNpemVDbGFzcyYpOworICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSB2b2lkIGNvbGxlY3RBbGxHYXJiYWdlKCk7CiAKICAgICAgICAgdm9p
ZCByZXBvcnRFeHRyYU1lbW9yeUNvc3Qoc2l6ZV90IGNvc3QpOwogCi0gICAgICAgIHZvaWQgcHJv
dGVjdChKU1ZhbHVlKTsKLSAgICAgICAgYm9vbCB1bnByb3RlY3QoSlNWYWx1ZSk7IC8vIFRydWUg
d2hlbiB0aGUgcHJvdGVjdCBjb3VudCBkcm9wcyB0byAwLgorICAgICAgICBKU19FWFBPUlRfUFJJ
VkFURSB2b2lkIHByb3RlY3QoSlNWYWx1ZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGJv
b2wgdW5wcm90ZWN0KEpTVmFsdWUpOyAvLyBUcnVlIHdoZW4gdGhlIHByb3RlY3QgY291bnQgZHJv
cHMgdG8gMC4KIAogICAgICAgICBib29sIGNvbnRhaW5zKGNvbnN0IHZvaWQqKTsKIAotICAgICAg
ICBzaXplX3Qgc2l6ZSgpIGNvbnN0OwotICAgICAgICBzaXplX3QgY2FwYWNpdHkoKSBjb25zdDsK
KyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IHNpemUoKSBjb25zdDsKKyAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGNhcGFjaXR5KCkgY29uc3Q7CiAgICAgICAgIHNpemVf
dCBvYmplY3RDb3VudCgpIGNvbnN0OwogICAgICAgICBzaXplX3QgZ2xvYmFsT2JqZWN0Q291bnQo
KTsKICAgICAgICAgc2l6ZV90IHByb3RlY3RlZE9iamVjdENvdW50KCk7CkBAIC0xMTgsOSArMTE4
LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbWluRXh0
cmFDb3N0ID0gMjU2OwogICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heEV4dHJhQ29zdCA9
IDEwMjQgKiAxMDI0OwogCi0gICAgICAgIGJvb2wgaXNWYWxpZEFsbG9jYXRpb24oc2l6ZV90KTsK
LSAgICAgICAgdm9pZCogYWxsb2NhdGVTbG93Q2FzZShzaXplX3QpOwotICAgICAgICB2b2lkIHJl
cG9ydEV4dHJhTWVtb3J5Q29zdFNsb3dDYXNlKHNpemVfdCk7CisgICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIGJvb2wgaXNWYWxpZEFsbG9jYXRpb24oc2l6ZV90KTsKKyAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgdm9pZCogYWxsb2NhdGVTbG93Q2FzZShzaXplX3QpOworICAgICAgICBKU19FWFBP
UlRfUFJJVkFURSB2b2lkIHJlcG9ydEV4dHJhTWVtb3J5Q29zdFNsb3dDYXNlKHNpemVfdCk7CiAg
ICAgICAgIHZvaWQgcmVzZXRBbGxvY2F0b3IoKTsKIAogICAgICAgICBNYXJrZWRCbG9jayogYWxs
b2NhdGVCbG9jayhzaXplX3QgY2VsbFNpemUpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96523</attachid>
            <date>2011-06-08 18:09:21 -0700</date>
            <delta_ts>2011-07-11 09:51:45 -0700</delta_ts>
            <desc>Export macros for JSCell.h</desc>
            <filename>bug-27551-20110608180920.patch</filename>
            <type>text/plain</type>
            <size>6727</size>
            <attacher name="Kevin Ollivier">kevino</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODg0MTEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTEtMDYtMDggIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGV4cG9y
dCBtYWNyb3MgdG8gSlNDZWxsLmguCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yNzU1MQorCisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAg
ICAgKEpTQzo6SlNDZWxsOjpKU0NlbGw6OnZwdHIpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OkpT
Q2VsbDo6c2V0VlB0cik6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6SlNWYWx1ZTo6aXNTdHJpbmcp
OgorCiAyMDExLTA2LTA4ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNv
bT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByODg0MDQuCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkocmV2aXNpb24gODg0MTEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkod29ya2luZyBjb3B5KQpAQCAtODEs
OCArODEsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGV4cGxp
Y2l0IEpTQ2VsbChWUHRyU3RlYWxpbmdIYWNrVHlwZSkgeyB9Ci0gICAgICAgIEpTQ2VsbChKU0ds
b2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKLSAgICAgICAgSlNDZWxsKEpTR2xvYmFsRGF0YSYsIFN0
cnVjdHVyZSosIENyZWF0aW5nRWFybHlDZWxsVGFnKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgSlNDZWxsKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOworICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSBKU0NlbGwoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgQ3JlYXRpbmdFYXJseUNl
bGxUYWcpOwogICAgICAgICB2aXJ0dWFsIH5KU0NlbGwoKTsKICAgICAgICAgc3RhdGljIGNvbnN0
IENsYXNzSW5mbyBzX2R1bW15Q2VsbEluZm87CiAKQEAgLTkwLDkgKzkwLDkgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZUR1bW15U3RydWN0dXJlKEpT
R2xvYmFsRGF0YSYpOwogCiAgICAgICAgIC8vIFF1ZXJ5aW5nIHRoZSB0eXBlLgotICAgICAgICBi
b29sIGlzU3RyaW5nKCkgY29uc3Q7Ci0gICAgICAgIGJvb2wgaXNPYmplY3QoKSBjb25zdDsKLSAg
ICAgICAgdmlydHVhbCBib29sIGlzR2V0dGVyU2V0dGVyKCkgY29uc3Q7CisgICAgICAgIEpTX0VY
UE9SVF9QUklWQVRFIGJvb2wgaXNTdHJpbmcoKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgYm9vbCBpc09iamVjdCgpIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2
aXJ0dWFsIGJvb2wgaXNHZXR0ZXJTZXR0ZXIoKSBjb25zdDsKICAgICAgICAgYm9vbCBpbmhlcml0
cyhjb25zdCBDbGFzc0luZm8qKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBib29sIGlzQVBJVmFs
dWVXcmFwcGVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29s
IGlzUHJvcGVydHlOYW1lSXRlcmF0b3IoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtMTAw
LDI1ICsxMDAsMjUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0
dXJlKCkgY29uc3Q7CiAKICAgICAgICAgLy8gRXh0cmFjdGluZyB0aGUgdmFsdWUuCi0gICAgICAg
IGJvb2wgZ2V0U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgVVN0cmluZyYpIGNvbnN0OwotICAgICAg
ICBVU3RyaW5nIGdldFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0OyAvLyBudWxsIHN0cmlu
ZyBpZiBub3QgYSBzdHJpbmcKLSAgICAgICAgSlNPYmplY3QqIGdldE9iamVjdCgpOyAvLyBOVUxM
IGlmIG5vdCBhbiBvYmplY3QKLSAgICAgICAgY29uc3QgSlNPYmplY3QqIGdldE9iamVjdCgpIGNv
bnN0OyAvLyBOVUxMIGlmIG5vdCBhbiBvYmplY3QKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
Ym9vbCBnZXRTdHJpbmcoRXhlY1N0YXRlKiwgVVN0cmluZyYpIGNvbnN0OworICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSBVU3RyaW5nIGdldFN0cmluZyhFeGVjU3RhdGUqKSBjb25zdDsgLy8gbnVs
bCBzdHJpbmcgaWYgbm90IGEgc3RyaW5nCisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2Jq
ZWN0KiBnZXRPYmplY3QoKTsgLy8gMCBpZiBub3QgYW4gb2JqZWN0CisgICAgICAgIEpTX0VYUE9S
VF9QUklWQVRFIGNvbnN0IEpTT2JqZWN0KiBnZXRPYmplY3QoKSBjb25zdDsgLy8gMCBpZiBub3Qg
YW4gb2JqZWN0CiAgICAgICAgIAotICAgICAgICB2aXJ0dWFsIENhbGxUeXBlIGdldENhbGxEYXRh
KENhbGxEYXRhJik7Ci0gICAgICAgIHZpcnR1YWwgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3RE
YXRhKENvbnN0cnVjdERhdGEmKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCBD
YWxsVHlwZSBnZXRDYWxsRGF0YShDYWxsRGF0YSYpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSB2aXJ0dWFsIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShDb25zdHJ1Y3REYXRhJik7
CiAKICAgICAgICAgLy8gRXh0cmFjdGluZyBpbnRlZ2VyIHZhbHVlcy4KICAgICAgICAgLy8gRklY
TUU6IHJlbW92ZSB0aGVzZSBtZXRob2RzLCBjYW4gY2hlY2sgaXNOdW1iZXJDZWxsIGluIEpTVmFs
dWUgJiYgdGhlbiBjYWxsIGFzTnVtYmVyQ2VsbDo6Ki4KLSAgICAgICAgdmlydHVhbCBib29sIGdl
dFVJbnQzMih1aW50MzJfdCYpIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0
dWFsIGJvb2wgZ2V0VUludDMyKHVpbnQzMl90JikgY29uc3Q7CiAKICAgICAgICAgLy8gQmFzaWMg
Y29udmVyc2lvbnMuCi0gICAgICAgIHZpcnR1YWwgSlNWYWx1ZSB0b1ByaW1pdGl2ZShFeGVjU3Rh
dGUqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCBib29s
IGdldFByaW1pdGl2ZU51bWJlcihFeGVjU3RhdGUqLCBkb3VibGUmIG51bWJlciwgSlNWYWx1ZSYp
OwotICAgICAgICB2aXJ0dWFsIGJvb2wgdG9Cb29sZWFuKEV4ZWNTdGF0ZSopIGNvbnN0OwotICAg
ICAgICB2aXJ0dWFsIGRvdWJsZSB0b051bWJlcihFeGVjU3RhdGUqKSBjb25zdDsKLSAgICAgICAg
dmlydHVhbCBVU3RyaW5nIHRvU3RyaW5nKEV4ZWNTdGF0ZSopIGNvbnN0OwotICAgICAgICB2aXJ0
dWFsIEpTT2JqZWN0KiB0b09iamVjdChFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCopIGNvbnN0
OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIEpTVmFsdWUgdG9QcmltaXRpdmUo
RXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkgY29uc3Q7CisgICAgICAgIEpTX0VY
UE9SVF9QUklWQVRFIHZpcnR1YWwgYm9vbCBnZXRQcmltaXRpdmVOdW1iZXIoRXhlY1N0YXRlKiwg
ZG91YmxlJiBudW1iZXIsIEpTVmFsdWUmKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmly
dHVhbCBib29sIHRvQm9vbGVhbihFeGVjU3RhdGUqKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgdmlydHVhbCBkb3VibGUgdG9OdW1iZXIoRXhlY1N0YXRlKikgY29uc3Q7CisgICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgVVN0cmluZyB0b1N0cmluZyhFeGVjU3RhdGUq
KSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCBKU09iamVjdCogdG9P
YmplY3QoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKIAogICAgICAgICAvLyBH
YXJiYWdlIGNvbGxlY3Rpb24uCiAgICAgICAgIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIEV4
ZWNTdGF0ZSopOwpAQCAtMTMxLDE2ICsxMzEsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZW5kaWYK
IAogICAgICAgICAvLyBPYmplY3Qgb3BlcmF0aW9ucywgd2l0aCB0aGUgdG9PYmplY3Qgb3BlcmF0
aW9uIGluY2x1ZGVkLgotICAgICAgICBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0
OwotICAgICAgICB2aXJ0dWFsIHZvaWQgcHV0KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0gICAgICAgIHZpcnR1
YWwgdm9pZCBwdXQoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlKTsK
LSAgICAgICAgdmlydHVhbCBib29sIGRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSk7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBkZWxldGVQcm9w
ZXJ0eShFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwotCi0gICAgICAgIHZpcnR1
YWwgSlNPYmplY3QqIHRvVGhpc09iamVjdChFeGVjU3RhdGUqKSBjb25zdDsKLSAgICAgICAgdmly
dHVhbCBKU1ZhbHVlIGdldEpTTnVtYmVyKCk7Ci0gICAgICAgIHZvaWQqIHZwdHIoKSB7IHJldHVy
biAqcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KHRoaXMpOyB9Ci0gICAgICAgIHZvaWQgc2V0VlB0
cih2b2lkKiB2cHRyKSB7ICpyZWludGVycHJldF9jYXN0PHZvaWQqKj4odGhpcykgPSB2cHRyOyB9
CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKCkg
Y29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgdm9pZCBwdXQoRXhlY1N0
YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCB2b2lkIHB1dChFeGVj
U3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUpOworICAgICAgICBKU19FWFBP
UlRfUFJJVkFURSB2aXJ0dWFsIGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmly
dHVhbCBib29sIGRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFt
ZSk7CisKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCBKU09iamVjdCogdG9UaGlz
T2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0
dWFsIEpTVmFsdWUgZ2V0SlNOdW1iZXIoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9p
ZCogdnB0cigpIHsgcmV0dXJuICpyZWludGVycHJldF9jYXN0PHZvaWQqKj4odGhpcyk7IH0KKyAg
ICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRWUHRyKHZvaWQqIHZwdHIpIHsgKnJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCoqPih0aGlzKSA9IHZwdHI7IH0KIAogICAgICAgICAvLyBGSVhNRTog
UmVuYW1lIGdldE93blByb3BlcnR5U2xvdCB0byB2aXJ0dWFsR2V0T3duUHJvcGVydHlTbG90LCBh
bmQKICAgICAgICAgLy8gZmFzdEdldE93blByb3BlcnR5U2xvdCB0byBnZXRPd25Qcm9wZXJ0eVNs
b3QuIENhbGxlcnMgc2hvdWxkIGFsd2F5cwpAQCAtMTYyLDggKzE2Miw4IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgcHJpdmF0ZToKICAgICAgICAgLy8gQmFzZSBpbXBsZW1lbnRhdGlvbjsgZm9y
IG5vbi1vYmplY3QgY2xhc3NlcyBpbXBsZW1lbnRzIGdldFByb3BlcnR5U2xvdC4KLSAgICAgICAg
dmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgICAgICB2aXJ0dWFsIGJvb2wg
Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90Jik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCBib29s
IGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYpOwogICAgICAgICAKICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4g
bV9zdHJ1Y3R1cmU7CiAgICAgfTsKQEAgLTIwMCw3ICsyMDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgIC8vIC0tLSBKU1ZhbHVlIGlubGluZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQogCi0gICAgaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNTdHJpbmcoKSBjb25zdAorICAgIEpTX0VY
UE9SVF9QUklWQVRFIGlubGluZSBib29sIEpTVmFsdWU6OmlzU3RyaW5nKCkgY29uc3QKICAgICB7
CiAgICAgICAgIHJldHVybiBpc0NlbGwoKSAmJiBhc0NlbGwoKS0+aXNTdHJpbmcoKTsKICAgICB9
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96524</attachid>
            <date>2011-06-08 18:15:10 -0700</date>
            <delta_ts>2011-07-11 09:51:45 -0700</delta_ts>
            <desc>Export macros for Identifier.h</desc>
            <filename>bug-27551-20110608181509.patch</filename>
            <type>text/plain</type>
            <size>3784</size>
            <attacher name="Kevin Ollivier">kevino</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODg0MTIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTEtMDYtMDggIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGV4cG9y
dCBtYWNyb3MgdG8gSWRlbnRpZmllci5oLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Mjc1NTEKKworICAgICAgICAqIHJ1bnRpbWUvSWRlbnRpZmllci5o
OgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyOjp0b1VJbnQzMik6CisgICAgICAgIChKU0M6Oklk
ZW50aWZpZXI6OmVxdWFsKToKKwogMjAxMS0wNi0wOCAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2
aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjg4
NDA0LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaAko
cmV2aXNpb24gODg0MTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlm
aWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDE1ICs1MywxNSBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgCiAgICAgICAgIENTdHJpbmcgYXNjaWkoKSBjb25zdCB7IHJldHVybiBtX3N0cmlu
Zy5hc2NpaSgpOyB9CiAgICAgICAgIAotICAgICAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9tKEV4
ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgeSk7Ci0gICAgICAgIHN0YXRpYyBJZGVudGlmaWVyIGZy
b20oRXhlY1N0YXRlKiBleGVjLCBpbnQgeSk7Ci0gICAgICAgIHN0YXRpYyBJZGVudGlmaWVyIGZy
b20oRXhlY1N0YXRlKiBleGVjLCBkb3VibGUgeSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBJZGVudGlmaWVyIGZyb20oRXhlY1N0YXRlKiwgdW5zaWduZWQgeSk7CisgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBJZGVudGlmaWVyIGZyb20oRXhlY1N0YXRlKiwgaW50
IHkpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSWRlbnRpZmllciBmcm9tKEV4
ZWNTdGF0ZSosIGRvdWJsZSB5KTsKICAgICAgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbShKU0ds
b2JhbERhdGEqLCB1bnNpZ25lZCB5KTsKICAgICAgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbShK
U0dsb2JhbERhdGEqLCBpbnQgeSk7CiAgICAgICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb20oSlNH
bG9iYWxEYXRhKiwgZG91YmxlIHkpOwogCi0gICAgICAgIHN0YXRpYyB1aW50MzJfdCB0b1VJbnQz
Mihjb25zdCBVU3RyaW5nJiwgYm9vbCYgb2spOwotICAgICAgICB1aW50MzJfdCB0b1VJbnQzMihi
b29sJiBvaykgY29uc3QgeyByZXR1cm4gdG9VSW50MzIobV9zdHJpbmcsIG9rKTsgfQorICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdWludDMyX3QgdG9VSW50MzIoY29uc3QgVVN0cmlu
ZyYsIGJvb2wmIG9rKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdWludDMyX3QgdG9VSW50
MzIoYm9vbCYgb2spIGNvbnN0IHsgcmV0dXJuIHRvVUludDMyKG1fc3RyaW5nLCBvayk7IH0KICAg
ICAgICAgdW5zaWduZWQgdG9BcnJheUluZGV4KGJvb2wmIG9rKSBjb25zdDsKIAogICAgICAgICBi
b29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmlzTnVsbCgpOyB9CkBAIC03Mywx
MiArNzMsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGZyaWVuZCBib29sIG9wZXJhdG9y
PT0oY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IGNoYXIqKTsKICAgICAgICAgZnJpZW5kIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgY2hhciopOwogICAgIAotICAgICAg
ICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBTdHJpbmdJbXBsKiwgY29uc3QgY2hhciopOwotICAg
ICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBTdHJpbmdJbXBsKiwgY29uc3QgVUNoYXIqLCB1
bnNpZ25lZCBsZW5ndGgpOwotICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBTdHJpbmdJ
bXBsKiBhLCBjb25zdCBTdHJpbmdJbXBsKiBiKSB7IHJldHVybiA6OmVxdWFsKGEsIGIpOyB9Cisg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFN0cmluZ0lt
cGwqLCBjb25zdCBjaGFyKik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29s
IGVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqLCBjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7
CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFN0cmlu
Z0ltcGwqIGEsIGNvbnN0IFN0cmluZ0ltcGwqIGIpIHsgcmV0dXJuIDo6ZXF1YWwoYSwgYik7IH0K
IAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGQoRXhlY1N0YXRlKiwg
Y29uc3QgY2hhciopOyAvLyBPbmx5IHRvIGJlIHVzZWQgd2l0aCBzdHJpbmcgbGl0ZXJhbHMuCi0g
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChKU0dsb2JhbERhdGEqLCBj
b25zdCBjaGFyKik7IC8vIE9ubHkgdG8gYmUgdXNlZCB3aXRoIHN0cmluZyBsaXRlcmFscy4KKyAg
ICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRk
KEV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIqKTsgLy8gT25seSB0byBiZSB1c2VkIHdpdGggc3RyaW5n
IGxpdGVyYWxzLgorICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxT
dHJpbmdJbXBsPiBhZGQoSlNHbG9iYWxEYXRhKiwgY29uc3QgY2hhciopOyAvLyBPbmx5IHRvIGJl
IHVzZWQgd2l0aCBzdHJpbmcgbGl0ZXJhbHMuCiAKICAgICBwcml2YXRlOgogICAgICAgICBVU3Ry
aW5nIG1fc3RyaW5nOwpAQCAtMTA4LDEwICsxMDgsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgICAgICByZXR1cm4gYWRkU2xvd0Nhc2UoZ2xvYmFsRGF0YSwgcik7CiAgICAgICAgIH0KIAot
ICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGRTbG93Q2FzZShFeGVjU3Rh
dGUqLCBTdHJpbmdJbXBsKiByKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBh
c3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRkU2xvd0Nhc2UoRXhlY1N0YXRlKiwgU3RyaW5nSW1wbCop
OwogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGRTbG93Q2FzZShKU0ds
b2JhbERhdGEqLCBTdHJpbmdJbXBsKiByKTsKIAotICAgICAgICBzdGF0aWMgdm9pZCBjaGVja0N1
cnJlbnRJZGVudGlmaWVyVGFibGUoRXhlY1N0YXRlKik7CisgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyB2b2lkIGNoZWNrQ3VycmVudElkZW50aWZpZXJUYWJsZShFeGVjU3RhdGUqKTsK
ICAgICAgICAgc3RhdGljIHZvaWQgY2hlY2tDdXJyZW50SWRlbnRpZmllclRhYmxlKEpTR2xvYmFs
RGF0YSopOwogICAgIH07CiAgICAgCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96526</attachid>
            <date>2011-06-08 18:21:44 -0700</date>
            <delta_ts>2011-07-11 09:51:45 -0700</delta_ts>
            <desc>Export macros for JSGlobalData.h</desc>
            <filename>bug-27551-20110608182143.patch</filename>
            <type>text/plain</type>
            <size>2737</size>
            <attacher name="Kevin Ollivier">kevino</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODg0MTIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTEtMDYtMDggIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBpdCBw
b3NzaWJsZSB0byBidWlsZCBKYXZhU2NyaXB0Q29yZSBhcyBzaGFyZWQgbGlicmFyeSB3aXRob3V0
IHN5bWJvbCBsaXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9Mjc1NTEKKworICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmg6CisKIDIwMTEt
MDYtMDggIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI4ODQwNC4KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCShyZXZpc2lvbiA4ODQxMSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTQsNyArMTE0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIC8vIHRoZSBvcmln
aW5hbCBBUEkuCiAgICAgICAgIGVudW0gR2xvYmFsRGF0YVR5cGUgeyBEZWZhdWx0LCBBUElDb250
ZXh0R3JvdXAsIEFQSVNoYXJlZCB9OwogCi0gICAgICAgIHN0cnVjdCBDbGllbnREYXRhIHsKKyAg
ICAgICAgc3RydWN0IEpTX0VYUE9SVF9QUklWQVRFIENsaWVudERhdGEgewogICAgICAgICAgICAg
dmlydHVhbCB+Q2xpZW50RGF0YSgpID0gMDsKICAgICAgICAgfTsKIApAQCAtMTIzLDEwICsxMjMs
MTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBib29sIHNoYXJlZEluc3RhbmNl
RXhpc3RzKCk7CiAgICAgICAgIHN0YXRpYyBKU0dsb2JhbERhdGEmIHNoYXJlZEluc3RhbmNlKCk7
CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SlNHbG9iYWxEYXRhPiBjcmVhdGUoVGhyZWFk
U3RhY2tUeXBlKTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SlNHbG9iYWxEYXRhPiBjcmVh
dGVMZWFrZWQoVGhyZWFkU3RhY2tUeXBlKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIFBhc3NSZWZQdHI8SlNHbG9iYWxEYXRhPiBjcmVhdGUoVGhyZWFkU3RhY2tUeXBlKTsKKyAg
ICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8SlNHbG9iYWxEYXRhPiBj
cmVhdGVMZWFrZWQoVGhyZWFkU3RhY2tUeXBlKTsKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8
SlNHbG9iYWxEYXRhPiBjcmVhdGVDb250ZXh0R3JvdXAoVGhyZWFkU3RhY2tUeXBlKTsKLSAgICAg
ICAgfkpTR2xvYmFsRGF0YSgpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB+SlNHbG9iYWxE
YXRhKCk7CiAKICNpZiBFTkFCTEUoSlNDX01VTFRJUExFX1RIUkVBRFMpCiAgICAgICAgIC8vIFdp
bGwgc3RhcnQgdHJhY2tpbmcgdGhyZWFkcyB0aGF0IHVzZSB0aGUgaGVhcCwgd2hpY2ggaXMgcmVz
b3VyY2UtaGVhdnkuCkBAIC0yNjcsOSArMjY3LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAg
ICAgdm9pZCByZXNldERhdGVDYWNoZSgpOwogCi0gICAgICAgIHZvaWQgc3RhcnRTYW1wbGluZygp
OwotICAgICAgICB2b2lkIHN0b3BTYW1wbGluZygpOwotICAgICAgICB2b2lkIGR1bXBTYW1wbGVE
YXRhKEV4ZWNTdGF0ZSogZXhlYyk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc3Rh
cnRTYW1wbGluZygpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHN0b3BTYW1wbGlu
ZygpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGR1bXBTYW1wbGVEYXRhKEV4ZWNT
dGF0ZSopOwogICAgICAgICB2b2lkIHJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKCk7CiAgICAgICAg
IFJlZ0V4cENhY2hlKiByZWdFeHBDYWNoZSgpIHsgcmV0dXJuIG1fcmVnRXhwQ2FjaGU7IH0KICNp
ZiBFTkFCTEUoUkVHRVhQX1RSQUNJTkcpCkBAIC0yNzgsNyArMjc4LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHZvaWQgZHVtcFJlZ0V4cFRyYWNlKCk7CiAgICAgICAgIEhhbmRsZVNsb3Qg
YWxsb2NhdGVHbG9iYWxIYW5kbGUoKSB7IHJldHVybiBoZWFwLmFsbG9jYXRlR2xvYmFsSGFuZGxl
KCk7IH0KICAgICAgICAgSGFuZGxlU2xvdCBhbGxvY2F0ZUxvY2FsSGFuZGxlKCkgeyByZXR1cm4g
aGVhcC5hbGxvY2F0ZUxvY2FsSGFuZGxlKCk7IH0KLSAgICAgICAgdm9pZCBjbGVhckJ1aWx0aW5T
dHJ1Y3R1cmVzKCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgY2xlYXJCdWlsdGlu
U3RydWN0dXJlcygpOwogCiAgICAgICAgIGJvb2wgaXNDb2xsZWN0b3JCdXN5KCkgeyByZXR1cm4g
aGVhcC5pc0J1c3koKTsgfQogICAgICAgICB2b2lkIHJlbGVhc2VFeGVjdXRhYmxlTWVtb3J5KCk7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100313</attachid>
            <date>2011-07-11 09:51:45 -0700</date>
            <delta_ts>2011-07-11 21:49:42 -0700</delta_ts>
            <desc>Complete set of JS_EXPORT_PRIVATE and WTF_EXPORT_PRIVATE macro additions</desc>
            <filename>jscore_exports_full.patch</filename>
            <type>text/plain</type>
            <size>86802</size>
            <attacher name="Kevin Ollivier">kevino</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCShyZXZpc2lvbiA5MDc0
NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNCwxMiArMzQsMTIgQEAKICAgICBzdHJ1Y3QgUmVnRXhwUmVwcmVzZW50YXRpb247
CiAgICAgY2xhc3MgSlNHbG9iYWxEYXRhOwogCi0gICAgUmVnRXhwRmxhZ3MgcmVnRXhwRmxhZ3Mo
Y29uc3QgVVN0cmluZyYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZ0V4cEZsYWdzIHJlZ0V4
cEZsYWdzKGNvbnN0IFVTdHJpbmcmKTsKIAogICAgIGNsYXNzIFJlZ0V4cCA6IHB1YmxpYyBKU0Nl
bGwgewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFJlZ0V4cCogY3JlYXRlKEpTR2xvYmFs
RGF0YSosIGNvbnN0IFVTdHJpbmcmIHBhdHRlcm4sIFJlZ0V4cEZsYWdzKTsKLSAgICAgICAgflJl
Z0V4cCgpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVnRXhwKiBjcmVhdGUo
SlNHbG9iYWxEYXRhKiwgY29uc3QgVVN0cmluZyYgcGF0dGVybiwgUmVnRXhwRmxhZ3MpOworICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSB+UmVnRXhwKCk7CiAKICAgICAgICAgYm9vbCBnbG9iYWwo
KSBjb25zdCB7IHJldHVybiBtX2ZsYWdzICYgRmxhZ0dsb2JhbDsgfQogICAgICAgICBib29sIGln
bm9yZUNhc2UoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzICYgRmxhZ0lnbm9yZUNhc2U7IH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCShyZXZpc2lvbiA5
MDc0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC02OCwxMSArNjgsMTEgQEAKIAogICAgICAgICBzdGF0aWMgdm9pZCBkdW1w
U3RhdGlzdGljcygpOwogCi0gICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGFkZFByb3BlcnR5VHJh
bnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6
ZV90JiBvZmZzZXQpOwotICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBhZGRQcm9wZXJ0eVRyYW5z
aXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBz
aXplX3QmIG9mZnNldCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1
cmUqIGFkZFByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCog
c3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBvZmZzZXQpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgU3RydWN0dXJlKiBhZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0
dXJlKFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQg
YXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBzaXplX3QmIG9mZnNldCk7CiAgICAg
ICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2JhbERh
dGEmLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHNpemVfdCYg
b2Zmc2V0KTsKLSAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY2hhbmdlUHJvdG90eXBlVHJhbnNp
dGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBKU1ZhbHVlIHByb3RvdHlwZSk7Ci0gICAg
ICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGRlc3BlY2lmeUZ1bmN0aW9uVHJhbnNpdGlvbihKU0dsb2Jh
bERhdGEmLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJik7CisgICAgICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIGNoYW5nZVByb3RvdHlwZVRyYW5zaXRpb24oSlNH
bG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgSlNWYWx1ZSBwcm90b3R5cGUpOworICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiBkZXNwZWNpZnlGdW5jdGlvblRyYW5zaXRp
b24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYpOwogICAgICAg
ICBzdGF0aWMgU3RydWN0dXJlKiBnZXR0ZXJTZXR0ZXJUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYs
IFN0cnVjdHVyZSopOwogICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiB0b0NhY2hlYWJsZURpY3Rp
b25hcnlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOwogICAgICAgICBzdGF0
aWMgU3RydWN0dXJlKiB0b1VuY2FjaGVhYmxlRGljdGlvbmFyeVRyYW5zaXRpb24oSlNHbG9iYWxE
YXRhJiwgU3RydWN0dXJlKik7CkBAIC04NywxMCArODcsMTAgQEAKIAogICAgICAgICBTdHJ1Y3R1
cmUqIGZsYXR0ZW5EaWN0aW9uYXJ5U3RydWN0dXJlKEpTR2xvYmFsRGF0YSYsIEpTT2JqZWN0Kik7
CiAKLSAgICAgICAgflN0cnVjdHVyZSgpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB+U3Ry
dWN0dXJlKCk7CiAKICAgICAgICAgLy8gVGhlc2Ugc2hvdWxkIGJlIHVzZWQgd2l0aCBjYXV0aW9u
LiAgCi0gICAgICAgIHNpemVfdCBhZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFs
RGF0YSYsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRl
cywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc2l6
ZV90IGFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNp
ZmljVmFsdWUpOwogICAgICAgICBzaXplX3QgcmVtb3ZlUHJvcGVydHlXaXRob3V0VHJhbnNpdGlv
bihKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOwogICAgICAg
ICB2b2lkIHNldFByb3RvdHlwZVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpIHsgbV9wcm90b3R5cGUuc2V0KGdsb2JhbERhdGEsIHRo
aXMsIHByb3RvdHlwZSk7IH0KICAgICAgICAgCkBAIC0xMTIsNyArMTEyLDcgQEAKICAgICAgICAg
Ym9vbCBpc1VzaW5nSW5saW5lU3RvcmFnZSgpIGNvbnN0OwogCiAgICAgICAgIHNpemVfdCBnZXQo
SlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKLSAgICAgICAg
c2l6ZV90IGdldChKU0dsb2JhbERhdGEmLCBTdHJpbmdJbXBsKiBwcm9wZXJ0eU5hbWUsIHVuc2ln
bmVkJiBhdHRyaWJ1dGVzLCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVlKTsKKyAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc2l6ZV90IGdldChKU0dsb2JhbERhdGEmLCBTdHJpbmdJbXBsKiBwcm9wZXJ0
eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzLCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVlKTsKICAg
ICAgICAgc2l6ZV90IGdldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMsIEpTQ2VsbComIHNwZWNpZmlj
VmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVCghcHJvcGVydHlOYW1lLmlzTnVs
bCgpKTsKQEAgLTEzMCw3ICsxMzAsNyBAQAogICAgICAgICAKICAgICAgICAgYm9vbCBpc0VtcHR5
KCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0eVRhYmxlID8gbV9wcm9wZXJ0eVRhYmxlLT5pc0Vt
cHR5KCkgOiBtX29mZnNldCA9PSBub09mZnNldDsgfQogCi0gICAgICAgIHZvaWQgZGVzcGVjaWZ5
RGljdGlvbmFyeUZ1bmN0aW9uKEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZGVzcGVjaWZ5RGljdGlv
bmFyeUZ1bmN0aW9uKEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSk7CiAgICAgICAgIHZvaWQgZGlzYWJsZVNwZWNpZmljRnVuY3Rpb25UcmFja2luZygpIHsgbV9z
cGVjaWZpY0Z1bmN0aW9uVGhyYXNoQ291bnQgPSBtYXhTcGVjaWZpY0Z1bmN0aW9uVGhyYXNoQ291
bnQ7IH0KIAogICAgICAgICB2b2lkIHNldEVudW1lcmF0aW9uQ2FjaGUoSlNHbG9iYWxEYXRhJiwg
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvciogZW51bWVyYXRpb25DYWNoZSk7IC8vIERlZmluZWQgaW4g
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oLgpAQCAtMTYzLDcgKzE2Myw3IEBACiAgICAgICAgIHN0
YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKICAgICBwcml2YXRl
OgotICAgICAgICBTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiwgSlNWYWx1ZSBwcm90b3R5cGUsIGNv
bnN0IFR5cGVJbmZvJiwgdW5zaWduZWQgYW5vbnltb3VzU2xvdENvdW50LCBjb25zdCBDbGFzc0lu
Zm8qKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYs
IEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbyYsIHVuc2lnbmVkIGFub255bW91c1Ns
b3RDb3VudCwgY29uc3QgQ2xhc3NJbmZvKik7CiAgICAgICAgIFN0cnVjdHVyZShKU0dsb2JhbERh
dGEmKTsKICAgICAgICAgU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYsIGNvbnN0IFN0cnVjdHVyZSop
OwogCkBAIC0xOTAsNyArMTkwLDcgQEAKICAgICAgICAgdm9pZCBkZXNwZWNpZnlBbGxGdW5jdGlv
bnMoSlNHbG9iYWxEYXRhJik7CiAKICAgICAgICAgUGFzc093blB0cjxQcm9wZXJ0eVRhYmxlPiBj
b3B5UHJvcGVydHlUYWJsZShKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqIG93bmVyKTsKLSAgICAg
ICAgdm9pZCBtYXRlcmlhbGl6ZVByb3BlcnR5TWFwKEpTR2xvYmFsRGF0YSYpOworICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSB2b2lkIG1hdGVyaWFsaXplUHJvcGVydHlNYXAoSlNHbG9iYWxEYXRh
Jik7CiAgICAgICAgIHZvaWQgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKHN0cnVj
dHVyZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZvKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1dyaXRlQmFycmllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1dyaXRlQmFycmllci5oCShyZXZpc2lvbiA5MDc0NikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dyaXRlQmFycmllci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zOSw4ICszOSw4IEBACiB0ZW1wbGF0ZTxjbGFzcyBUPiBjbGFzcyBXcml0ZUJhcnJpZXJCYXNl
OwogdGVtcGxhdGU8PiBjbGFzcyBXcml0ZUJhcnJpZXJCYXNlPEpTVmFsdWU+OwogCi12b2lkIHNs
b3dWYWxpZGF0ZUNlbGwoSlNDZWxsKik7Ci12b2lkIHNsb3dWYWxpZGF0ZUNlbGwoSlNHbG9iYWxP
YmplY3QqKTsKK0pTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2xvd1ZhbGlkYXRlQ2VsbChKU0NlbGwq
KTsKK0pTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2xvd1ZhbGlkYXRlQ2VsbChKU0dsb2JhbE9iamVj
dCopOwogICAgIAogI2lmIEVOQUJMRShHQ19WQUxJREFUSU9OKQogdGVtcGxhdGU8Y2xhc3MgVD4g
aW5saW5lIHZvaWQgdmFsaWRhdGVDZWxsKFQgY2VsbCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2aXNpb24gOTA3NDYpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC03MSwxMSArNzEs
MTEgQEAKICAgICB0eXBlZGVmIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIFByb3BlcnR5U3Rv
cmFnZTsKICAgICB0eXBlZGVmIGNvbnN0IFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIENvbnN0
UHJvcGVydHlTdG9yYWdlOwogCi0gICAgY2xhc3MgSlNPYmplY3QgOiBwdWJsaWMgSlNDZWxsIHsK
KyAgICBjbGFzcyBKU19FWFBPUlREQVRBIEpTT2JqZWN0IDogcHVibGljIEpTQ2VsbCB7CiAgICAg
ICAgIGZyaWVuZCBjbGFzcyBCYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplcjsKICAgICAgICAgZnJp
ZW5kIGNsYXNzIEpJVDsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpTQ2VsbDsKLSAgICAgICAgZnJp
ZW5kIHZvaWQgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBI
YXNoRW50cnkqIGVudHJ5LCBKU09iamVjdCogdGhpc09iaiwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpOworICAgICAgICBmcmllbmQgSlNfRVhQT1JU
X1BSSVZBVEUgdm9pZCBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChFeGVjU3RhdGUqLCBjb25zdCBI
YXNoRW50cnkqLCBKU09iamVjdCogdGhpc09iaiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmKTsKIAogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lk
IHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKTsKQEAgLTI0Niw3ICsyNDYsNyBAQAogICAgICAg
ICBzdGF0aWMgc2l6ZV90IG9mZnNldE9mSW5saW5lU3RvcmFnZSgpOwogICAgICAgICBzdGF0aWMg
c2l6ZV90IG9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCk7CiAKLSAgICAgICAgc3RhdGljIEpTX0VY
UE9SVERBVEEgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKKyAgICAgICAgc3RhdGljIGNvbnN0IENs
YXNzSW5mbyBzX2luZm87CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHN0YXRpYyBTdHJ1Y3R1
cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJv
dG90eXBlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2Jq
ZWN0LmgJKHJldmlzaW9uIDkwNzQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKICAgICBwdWJs
aWM6CiAgICAgICAgIHR5cGVkZWYgSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0IEJhc2U7CiAKLSAg
ICAgICAgUmVnRXhwT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgUmVnRXhwKik7
CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZ0V4cE9iamVjdChKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZSosIFJlZ0V4cCopOwogICAgICAgICB2aXJ0dWFsIH5SZWdFeHBPYmplY3QoKTsK
IAogICAgICAgICB2b2lkIHNldFJlZ0V4cChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFJlZ0V4
cCogcikgeyBkLT5yZWdFeHAuc2V0KGdsb2JhbERhdGEsIHRoaXMsIHIpOyB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oCShyZXZp
c2lvbiA5MDc0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhl
bHBlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsOSArNDMsOSBAQAogICAgIGNsYXNzIE5vZGU7
CiAgICAgc3RydWN0IEluc3RydWN0aW9uOwogICAgIAotICAgIEpTT2JqZWN0KiBjcmVhdGVJbnRl
cnJ1cHRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihKU0dsb2JhbERhdGEqKTsKKyAgICBKU19FWFBPUlRf
UFJJVkFURSBKU09iamVjdCogY3JlYXRlSW50ZXJydXB0ZWRFeGVjdXRpb25FeGNlcHRpb24oSlNH
bG9iYWxEYXRhKik7CiAgICAgSlNPYmplY3QqIGNyZWF0ZVRlcm1pbmF0ZWRFeGVjdXRpb25FeGNl
cHRpb24oSlNHbG9iYWxEYXRhKik7Ci0gICAgSlNPYmplY3QqIGNyZWF0ZVN0YWNrT3ZlcmZsb3dF
cnJvcihFeGVjU3RhdGUqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogY3JlYXRl
U3RhY2tPdmVyZmxvd0Vycm9yKEV4ZWNTdGF0ZSopOwogICAgIEpTT2JqZWN0KiBjcmVhdGVTdGFj
a092ZXJmbG93RXJyb3IoSlNHbG9iYWxPYmplY3QqKTsKICAgICBKU09iamVjdCogY3JlYXRlT3V0
T2ZNZW1vcnlFcnJvcihKU0dsb2JhbE9iamVjdCopOwogICAgIEpTT2JqZWN0KiBjcmVhdGVVbmRl
ZmluZWRWYXJpYWJsZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgJKHJldmlzaW9uIDkw
NzQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00OSwxMiArNDksMTIgQEAKICAgICAgICAgdHlwZWRlZiBKU09iamVjdFdp
dGhHbG9iYWxPYmplY3QgQmFzZTsKIAogICAgIHB1YmxpYzoKLSAgICAgICAgSlNGdW5jdGlvbihF
eGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludCBsZW5ndGgsIGNvbnN0
IElkZW50aWZpZXImLCBOYXRpdmVGdW5jdGlvbik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IEpTRnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQg
bGVuZ3RoLCBjb25zdCBJZGVudGlmaWVyJiwgTmF0aXZlRnVuY3Rpb24pOwogICAgICAgICBKU0Z1
bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50IGxlbmd0
aCwgY29uc3QgSWRlbnRpZmllciYsIE5hdGl2ZUV4ZWN1dGFibGUqKTsKICAgICAgICAgSlNGdW5j
dGlvbihFeGVjU3RhdGUqLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBTY29wZUNoYWluTm9kZSopOwog
ICAgICAgICB2aXJ0dWFsIH5KU0Z1bmN0aW9uKCk7CiAKLSAgICAgICAgY29uc3QgVVN0cmluZyYg
bmFtZShFeGVjU3RhdGUqKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgY29uc3QgVVN0cmlu
ZyYgbmFtZShFeGVjU3RhdGUqKTsKICAgICAgICAgY29uc3QgVVN0cmluZyBkaXNwbGF5TmFtZShF
eGVjU3RhdGUqKTsKICAgICAgICAgY29uc3QgVVN0cmluZyBjYWxjdWxhdGVkRGlzcGxheU5hbWUo
RXhlY1N0YXRlKik7CiAKQEAgLTEwMiw3ICsxMDIsNyBAQAogICAgIHByaXZhdGU6CiAgICAgICAg
IGV4cGxpY2l0IEpTRnVuY3Rpb24oVlB0clN0ZWFsaW5nSGFja1R5cGUpOwogCi0gICAgICAgIGJv
b2wgaXNIb3N0RnVuY3Rpb25Ob25JbmxpbmUoKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgYm9vbCBpc0hvc3RGdW5jdGlvbk5vbklubGluZSgpIGNvbnN0OwogCiAgICAgICAgIHZp
cnR1YWwgdm9pZCBwcmV2ZW50RXh0ZW5zaW9ucyhKU0dsb2JhbERhdGEmKTsKICAgICAgICAgdmly
dHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVy
JiwgUHJvcGVydHlTbG90Jik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
YmplY3RQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PYmplY3RQcm90b3R5cGUuaAkocmV2aXNpb24gOTA3NDYpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDks
NyArNDksNyBAQAogICAgICAgICBib29sIG1faGFzTm9Qcm9wZXJ0aWVzV2l0aFVJbnQzMk5hbWVz
OwogICAgIH07CiAKLSAgICBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3Rv
RnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSopOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKik7
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcmdMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJnTGlzdC5oCShyZXZpc2lvbiA5MDc0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FyZ0xpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ1LDcgKzE0NSw3IEBACiAgICAg
ICAgIHN0YXRpYyB2b2lkIG1hcmtMaXN0cyhIZWFwUm9vdFZpc2l0b3ImLCBMaXN0U2V0Jik7CiAK
ICAgICBwcml2YXRlOgotICAgICAgICB2b2lkIHNsb3dBcHBlbmQoSlNWYWx1ZSk7CisgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2xvd0FwcGVuZChKU1ZhbHVlKTsKICAgICAgICAgCiAg
ICAgICAgIFJlZ2lzdGVyKiBtX2J1ZmZlcjsKICAgICAgICAgc2l6ZV90IG1fc2l6ZTsKQEAgLTIz
NSw3ICsyMzUsNyBAQAogICAgICAgICBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0
dXJuIG1fYXJnczsgfQogICAgICAgICBjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVy
biBtX2FyZ3MgKyBtX2FyZ0NvdW50OyB9CiAKLSAgICAgICAgdm9pZCBnZXRTbGljZShpbnQgc3Rh
cnRJbmRleCwgQXJnTGlzdCYgcmVzdWx0KSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgdm9pZCBnZXRTbGljZShpbnQgc3RhcnRJbmRleCwgQXJnTGlzdCYgcmVzdWx0KSBjb25zdDsK
ICAgICBwcml2YXRlOgogICAgICAgICBKU1ZhbHVlKiBtX2FyZ3M7CiAgICAgICAgIHNpemVfdCBt
X2FyZ0NvdW50OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAko
cmV2aXNpb24gOTA3NDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
LmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDcgKzU3LDggQEAKIAogICAgIGVudW0gQXJyYXlDcmVh
dGlvbk1vZGUgeyBDcmVhdGVDb21wYWN0LCBDcmVhdGVJbml0aWFsaXplZCB9OwogCi0gICAgY2xh
c3MgSlNBcnJheSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKKyAgICBjbGFzcyBKU19FWFBP
UlREQVRBIEpTQXJyYXkgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CisgICAgICAgIGZyaWVu
ZCBjbGFzcyBKSVQ7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBXYWxrZXI7CiAKICAgICBwdWJsaWM6
CkBAIC03Myw3ICs3NCw3IEBACiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRv
ciYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcHV0KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSk7IC8vIEZJWE1FOiBNYWtlIHByb3RlY3RlZCBhbmQgYWRkIHNldEl0
ZW0uCiAKLSAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJbmZvIHNfaW5m
bzsKKyAgICAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAgICAgICAgIAogICAg
ICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX3N0b3JhZ2UtPm1fbGVuZ3Ro
OyB9CiAgICAgICAgIHZvaWQgc2V0TGVuZ3RoKHVuc2lnbmVkKTsgLy8gT0sgdG8gdXNlIG9uIG5l
dyBhcnJheXMsIGJ1dCBub3QgaWYgaXQgbWlnaHQgYmUgYSBSZWdFeHBNYXRjaEFycmF5LgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24u
aAkocmV2aXNpb24gOTA3NDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRl
cm5hbEZ1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDkgKzMxLDkgQEAKIAogICAgIGNs
YXNzIEZ1bmN0aW9uUHJvdG90eXBlOwogCi0gICAgY2xhc3MgSW50ZXJuYWxGdW5jdGlvbiA6IHB1
YmxpYyBKU09iamVjdFdpdGhHbG9iYWxPYmplY3QgeworICAgIGNsYXNzIEpTX0VYUE9SVERBVEEg
SW50ZXJuYWxGdW5jdGlvbiA6IHB1YmxpYyBKU09iamVjdFdpdGhHbG9iYWxPYmplY3QgewogICAg
IHB1YmxpYzoKLSAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJbmZvIHNf
aW5mbzsKKyAgICAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKICAgICAgICAg
Y29uc3QgVVN0cmluZyYgbmFtZShFeGVjU3RhdGUqKTsKICAgICAgICAgY29uc3QgVVN0cmluZyBk
aXNwbGF5TmFtZShFeGVjU3RhdGUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0lkZW50aWZpZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JZGVudGlmaWVyLmgJKHJldmlzaW9uIDkwNzQ2KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCSh3b3JraW5nIGNvcHkpCkBAIC01MywxNSArNTMsMTUg
QEAKICAgICAgICAgCiAgICAgICAgIENTdHJpbmcgYXNjaWkoKSBjb25zdCB7IHJldHVybiBtX3N0
cmluZy5hc2NpaSgpOyB9CiAgICAgICAgIAotICAgICAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9t
KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgeSk7Ci0gICAgICAgIHN0YXRpYyBJZGVudGlmaWVy
IGZyb20oRXhlY1N0YXRlKiBleGVjLCBpbnQgeSk7Ci0gICAgICAgIHN0YXRpYyBJZGVudGlmaWVy
IGZyb20oRXhlY1N0YXRlKiBleGVjLCBkb3VibGUgeSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBJZGVudGlmaWVyIGZyb20oRXhlY1N0YXRlKiwgdW5zaWduZWQgeSk7CisgICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBJZGVudGlmaWVyIGZyb20oRXhlY1N0YXRlKiwg
aW50IHkpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSWRlbnRpZmllciBmcm9t
KEV4ZWNTdGF0ZSosIGRvdWJsZSB5KTsKICAgICAgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbShK
U0dsb2JhbERhdGEqLCB1bnNpZ25lZCB5KTsKICAgICAgICAgc3RhdGljIElkZW50aWZpZXIgZnJv
bShKU0dsb2JhbERhdGEqLCBpbnQgeSk7CiAgICAgICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb20o
SlNHbG9iYWxEYXRhKiwgZG91YmxlIHkpOwogCi0gICAgICAgIHN0YXRpYyB1aW50MzJfdCB0b1VJ
bnQzMihjb25zdCBVU3RyaW5nJiwgYm9vbCYgb2spOwotICAgICAgICB1aW50MzJfdCB0b1VJbnQz
Mihib29sJiBvaykgY29uc3QgeyByZXR1cm4gdG9VSW50MzIobV9zdHJpbmcsIG9rKTsgfQorICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdWludDMyX3QgdG9VSW50MzIoY29uc3QgVVN0
cmluZyYsIGJvb2wmIG9rKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdWludDMyX3QgdG9V
SW50MzIoYm9vbCYgb2spIGNvbnN0IHsgcmV0dXJuIHRvVUludDMyKG1fc3RyaW5nLCBvayk7IH0K
ICAgICAgICAgdW5zaWduZWQgdG9BcnJheUluZGV4KGJvb2wmIG9rKSBjb25zdDsKIAogICAgICAg
ICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmlzTnVsbCgpOyB9CkBAIC03
MywxMiArNzMsMTIgQEAKICAgICAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJZGVu
dGlmaWVyJiwgY29uc3QgY2hhciopOwogICAgICAgICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IElkZW50aWZpZXImLCBjb25zdCBjaGFyKik7CiAgICAgCi0gICAgICAgIHN0YXRpYyBib29s
IGVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqLCBjb25zdCBjaGFyKik7Ci0gICAgICAgIHN0YXRpYyBi
b29sIGVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqLCBjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0
aCk7Ci0gICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqIGEsIGNvbnN0
IFN0cmluZ0ltcGwqIGIpIHsgcmV0dXJuIDo6ZXF1YWwoYSwgYik7IH0KKyAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgU3RyaW5nSW1wbCosIGNvbnN0IGNo
YXIqKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZXF1YWwoY29uc3Qg
U3RyaW5nSW1wbCosIGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgU3RyaW5nSW1wbCogYSwgY29u
c3QgU3RyaW5nSW1wbCogYikgeyByZXR1cm4gOjplcXVhbChhLCBiKTsgfQogCi0gICAgICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChFeGVjU3RhdGUqLCBjb25zdCBjaGFyKik7
IC8vIE9ubHkgdG8gYmUgdXNlZCB3aXRoIHN0cmluZyBsaXRlcmFscy4KLSAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRkKEpTR2xvYmFsRGF0YSosIGNvbnN0IGNoYXIqKTsg
Ly8gT25seSB0byBiZSB1c2VkIHdpdGggc3RyaW5nIGxpdGVyYWxzLgorICAgICAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGQoRXhlY1N0YXRlKiwg
Y29uc3QgY2hhciopOyAvLyBPbmx5IHRvIGJlIHVzZWQgd2l0aCBzdHJpbmcgbGl0ZXJhbHMuCisg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFk
ZChKU0dsb2JhbERhdGEqLCBjb25zdCBjaGFyKik7IC8vIE9ubHkgdG8gYmUgdXNlZCB3aXRoIHN0
cmluZyBsaXRlcmFscy4KIAogICAgIHByaXZhdGU6CiAgICAgICAgIFVTdHJpbmcgbV9zdHJpbmc7
CkBAIC0xMDgsMTAgKzEwOCwxMCBAQAogICAgICAgICAgICAgcmV0dXJuIGFkZFNsb3dDYXNlKGds
b2JhbERhdGEsIHIpOwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3Ry
aW5nSW1wbD4gYWRkU2xvd0Nhc2UoRXhlY1N0YXRlKiwgU3RyaW5nSW1wbCogcik7CisgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZFNsb3dD
YXNlKEV4ZWNTdGF0ZSosIFN0cmluZ0ltcGwqKTsKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8
U3RyaW5nSW1wbD4gYWRkU2xvd0Nhc2UoSlNHbG9iYWxEYXRhKiwgU3RyaW5nSW1wbCogcik7CiAK
LSAgICAgICAgc3RhdGljIHZvaWQgY2hlY2tDdXJyZW50SWRlbnRpZmllclRhYmxlKEV4ZWNTdGF0
ZSopOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBjaGVja0N1cnJlbnRJ
ZGVudGlmaWVyVGFibGUoRXhlY1N0YXRlKik7CiAgICAgICAgIHN0YXRpYyB2b2lkIGNoZWNrQ3Vy
cmVudElkZW50aWZpZXJUYWJsZShKU0dsb2JhbERhdGEqKTsKICAgICB9OwogICAgIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgJKHJldmlzaW9u
IDkwNzQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLSAg
ICBjbGFzcyBTdHJpbmdPYmplY3QgOiBwdWJsaWMgSlNXcmFwcGVyT2JqZWN0IHsKKyAgICBjbGFz
cyBKU19FWFBPUlREQVRBIFN0cmluZ09iamVjdCA6IHB1YmxpYyBKU1dyYXBwZXJPYmplY3Qgewog
ICAgIHB1YmxpYzoKICAgICAgICAgU3RyaW5nT2JqZWN0KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSop
OwogICAgICAgICBTdHJpbmdPYmplY3QoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgY29uc3QgVVN0
cmluZyYpOwpAQCAtNDEsNyArNDEsNyBAQAogICAgICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlUHJv
cGVydHkoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKICAgICAg
ICAgdmlydHVhbCB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSA9IEV4Y2x1ZGVEb250RW51bVByb3BlcnRp
ZXMpOwogCi0gICAgICAgIHN0YXRpYyBjb25zdCBKU19FWFBPUlREQVRBIENsYXNzSW5mbyBzX2lu
Zm87CisgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCiAgICAgICAgIEpT
U3RyaW5nKiBpbnRlcm5hbFZhbHVlKCkgY29uc3QgeyByZXR1cm4gYXNTdHJpbmcoSlNXcmFwcGVy
T2JqZWN0OjppbnRlcm5hbFZhbHVlKCkpO30KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNCeXRlQXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0J5dGVBcnJheS5oCShyZXZpc2lvbiA5MDc0NikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTc1LDgg
Kzc1LDggQEAKICAgICAgICAgICAgICAgICBzZXRJbmRleChpLCBieXRlVmFsdWUpOwogICAgICAg
ICB9CiAKLSAgICAgICAgSlNCeXRlQXJyYXkoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgV1RGOjpC
eXRlQXJyYXkqIHN0b3JhZ2UpOwotICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoSlNHbG9iYWxEYXRhJiwgSlNWYWx1ZSBwcm90b3R5cGUsIGNvbnN0IEpTQzo6Q2xhc3NJ
bmZvKiA9ICZzX2RlZmF1bHRJbmZvKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNCeXRl
QXJyYXkoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgV1RGOjpCeXRlQXJyYXkqIHN0b3JhZ2UpOwor
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoSlNHbG9iYWxEYXRhJiwgSlNWYWx1ZSBwcm90b3R5cGUsIGNvbnN0IEpTQzo6Q2xhc3NJbmZv
KiA9ICZzX2RlZmF1bHRJbmZvKTsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNDOjpFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJv
cGVydHlTbG90Jik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAko
cmV2aXNpb24gOTA3NDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAu
aAkod29ya2luZyBjb3B5KQpAQCAtMTQwLDcgKzE0MCw3IEBACiAgICAgICAgICAgICAgICAgY3Jl
YXRlVGFibGUoJmV4ZWMtPmdsb2JhbERhdGEoKSk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lk
IGRlbGV0ZVRhYmxlKCkgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZGVs
ZXRlVGFibGUoKSBjb25zdDsKIAogICAgICAgICAvLyBGaW5kIGFuIGVudHJ5IGluIHRoZSB0YWJs
ZSwgYW5kIHJldHVybiB0aGUgZW50cnkuCiAgICAgICAgIEFMV0FZU19JTkxJTkUgY29uc3QgSGFz
aEVudHJ5KiBlbnRyeShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXIm
IGlkZW50aWZpZXIpIGNvbnN0CkBAIC0xNzUsMTAgKzE3NSwxMCBAQAogICAgICAgICB9CiAKICAg
ICAgICAgLy8gQ29udmVydCB0aGUgaGFzaCB0YWJsZSBrZXlzIHRvIGlkZW50aWZpZXJzLgotICAg
ICAgICB2b2lkIGNyZWF0ZVRhYmxlKEpTR2xvYmFsRGF0YSopIGNvbnN0OworICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSB2b2lkIGNyZWF0ZVRhYmxlKEpTR2xvYmFsRGF0YSopIGNvbnN0OwogICAg
IH07CiAKLSAgICB2b2lkIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSosIGNvbnN0
IEhhc2hFbnRyeSosIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0
VXBTdGF0aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSGFzaEVudHJ5KiwgSlNPYmpl
Y3QqIHRoaXNPYmplY3QsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90Jik7CiAKICAgICAvKioKICAgICAgKiBUaGlzIG1ldGhvZCBkb2VzIGl0IGFsbCAobG9va2lu
ZyBpbiB0aGUgaGFzaHRhYmxlLCBjaGVja2luZyBmb3IgZnVuY3Rpb24KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgJKHJldmlzaW9u
IDkwNzQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVj
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBACiAKICAgICBjbGFzcyBSZWdpc3Rl
cjsKIAotICAgIGNsYXNzIEpTVmFyaWFibGVPYmplY3QgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVj
dCB7CisgICAgY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYXJpYWJsZU9iamVjdCA6IHB1Ymxp
YyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKIAogICAgIHB1
YmxpYzoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmgJ
KHJldmlzaW9uIDkwNzQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxl
dGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw4ICs1NSw4IEBACiAgICAgICAgIEpTVmFsdWUg
bV92YWx1ZTsKICAgICB9OwogCi0gICAgQ29tcGxldGlvbiBjaGVja1N5bnRheChFeGVjU3RhdGUq
LCBjb25zdCBTb3VyY2VDb2RlJik7Ci0gICAgQ29tcGxldGlvbiBldmFsdWF0ZShFeGVjU3RhdGUq
LCBTY29wZUNoYWluTm9kZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IEpTVmFsdWUoKSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgQ29tcGxldGlvbiBjaGVja1N5bnRh
eChFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2RlJik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
Q29tcGxldGlvbiBldmFsdWF0ZShFeGVjU3RhdGUqLCBTY29wZUNoYWluTm9kZSosIGNvbnN0IFNv
dXJjZUNvZGUmLCBKU1ZhbHVlIHRoaXNWYWx1ZSA9IEpTVmFsdWUoKSk7CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkocmV2
aXNpb24gOTA3NDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAko
d29ya2luZyBjb3B5KQpAQCAtODEsOCArODEsOCBAQAogCiAgICAgcHJpdmF0ZToKICAgICAgICAg
ZXhwbGljaXQgSlNDZWxsKFZQdHJTdGVhbGluZ0hhY2tUeXBlKSB7IH0KLSAgICAgICAgSlNDZWxs
KEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOwotICAgICAgICBKU0NlbGwoSlNHbG9iYWxEYXRh
JiwgU3RydWN0dXJlKiwgQ3JlYXRpbmdFYXJseUNlbGxUYWcpOworICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSBKU0NlbGwoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7CisgICAgICAgIEpTX0VY
UE9SVF9QUklWQVRFIEpTQ2VsbChKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBDcmVhdGluZ0Vh
cmx5Q2VsbFRhZyk7CiAgICAgICAgIHZpcnR1YWwgfkpTQ2VsbCgpOwogICAgICAgICBzdGF0aWMg
Y29uc3QgQ2xhc3NJbmZvIHNfZHVtbXlDZWxsSW5mbzsKIApAQCAtOTAsOSArOTAsOSBAQAogICAg
ICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVEdW1teVN0cnVjdHVyZShKU0dsb2JhbERhdGEm
KTsKIAogICAgICAgICAvLyBRdWVyeWluZyB0aGUgdHlwZS4KLSAgICAgICAgYm9vbCBpc1N0cmlu
ZygpIGNvbnN0OwotICAgICAgICBib29sIGlzT2JqZWN0KCkgY29uc3Q7Ci0gICAgICAgIHZpcnR1
YWwgYm9vbCBpc0dldHRlclNldHRlcigpIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSBib29sIGlzU3RyaW5nKCkgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wg
aXNPYmplY3QoKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCBib29s
IGlzR2V0dGVyU2V0dGVyKCkgY29uc3Q7CiAgICAgICAgIGJvb2wgaW5oZXJpdHMoY29uc3QgQ2xh
c3NJbmZvKikgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0FQSVZhbHVlV3JhcHBlcigp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1Byb3BlcnR5
TmFtZUl0ZXJhdG9yKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTEwMCwyNSArMTAwLDI1
IEBACiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlKCkgY29uc3Q7CiAKICAgICAgICAgLy8g
RXh0cmFjdGluZyB0aGUgdmFsdWUuCi0gICAgICAgIGJvb2wgZ2V0U3RyaW5nKEV4ZWNTdGF0ZSog
ZXhlYywgVVN0cmluZyYpIGNvbnN0OwotICAgICAgICBVU3RyaW5nIGdldFN0cmluZyhFeGVjU3Rh
dGUqIGV4ZWMpIGNvbnN0OyAvLyBudWxsIHN0cmluZyBpZiBub3QgYSBzdHJpbmcKLSAgICAgICAg
SlNPYmplY3QqIGdldE9iamVjdCgpOyAvLyBOVUxMIGlmIG5vdCBhbiBvYmplY3QKLSAgICAgICAg
Y29uc3QgSlNPYmplY3QqIGdldE9iamVjdCgpIGNvbnN0OyAvLyBOVUxMIGlmIG5vdCBhbiBvYmpl
Y3QKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBnZXRTdHJpbmcoRXhlY1N0YXRlKiwg
VVN0cmluZyYpIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBVU3RyaW5nIGdldFN0
cmluZyhFeGVjU3RhdGUqKSBjb25zdDsgLy8gbnVsbCBzdHJpbmcgaWYgbm90IGEgc3RyaW5nCisg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBnZXRPYmplY3QoKTsgLy8gMCBpZiBu
b3QgYW4gb2JqZWN0CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGNvbnN0IEpTT2JqZWN0KiBn
ZXRPYmplY3QoKSBjb25zdDsgLy8gMCBpZiBub3QgYW4gb2JqZWN0CiAgICAgICAgIAotICAgICAg
ICB2aXJ0dWFsIENhbGxUeXBlIGdldENhbGxEYXRhKENhbGxEYXRhJik7Ci0gICAgICAgIHZpcnR1
YWwgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKENvbnN0cnVjdERhdGEmKTsKKyAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCBDYWxsVHlwZSBnZXRDYWxsRGF0YShDYWxsRGF0
YSYpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIENvbnN0cnVjdFR5cGUgZ2V0
Q29uc3RydWN0RGF0YShDb25zdHJ1Y3REYXRhJik7CiAKICAgICAgICAgLy8gRXh0cmFjdGluZyBp
bnRlZ2VyIHZhbHVlcy4KICAgICAgICAgLy8gRklYTUU6IHJlbW92ZSB0aGVzZSBtZXRob2RzLCBj
YW4gY2hlY2sgaXNOdW1iZXJDZWxsIGluIEpTVmFsdWUgJiYgdGhlbiBjYWxsIGFzTnVtYmVyQ2Vs
bDo6Ki4KLSAgICAgICAgdmlydHVhbCBib29sIGdldFVJbnQzMih1aW50MzJfdCYpIGNvbnN0Owor
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIGJvb2wgZ2V0VUludDMyKHVpbnQzMl90
JikgY29uc3Q7CiAKICAgICAgICAgLy8gQmFzaWMgY29udmVyc2lvbnMuCi0gICAgICAgIHZpcnR1
YWwgSlNWYWx1ZSB0b1ByaW1pdGl2ZShFeGVjU3RhdGUqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBl
KSBjb25zdDsKLSAgICAgICAgdmlydHVhbCBib29sIGdldFByaW1pdGl2ZU51bWJlcihFeGVjU3Rh
dGUqLCBkb3VibGUmIG51bWJlciwgSlNWYWx1ZSYpOwotICAgICAgICB2aXJ0dWFsIGJvb2wgdG9C
b29sZWFuKEV4ZWNTdGF0ZSopIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIGRvdWJsZSB0b051bWJl
cihFeGVjU3RhdGUqKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCBVU3RyaW5nIHRvU3RyaW5nKEV4
ZWNTdGF0ZSopIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiB0b09iamVjdChFeGVj
U3RhdGUqLCBKU0dsb2JhbE9iamVjdCopIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSB2aXJ0dWFsIEpTVmFsdWUgdG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0
aXZlVHlwZSkgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgYm9vbCBn
ZXRQcmltaXRpdmVOdW1iZXIoRXhlY1N0YXRlKiwgZG91YmxlJiBudW1iZXIsIEpTVmFsdWUmKTsK
KyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCBib29sIHRvQm9vbGVhbihFeGVjU3Rh
dGUqKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCBkb3VibGUgdG9O
dW1iZXIoRXhlY1N0YXRlKikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1
YWwgVVN0cmluZyB0b1N0cmluZyhFeGVjU3RhdGUqKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgdmlydHVhbCBKU09iamVjdCogdG9PYmplY3QoRXhlY1N0YXRlKiwgSlNHbG9iYWxP
YmplY3QqKSBjb25zdDsKIAogICAgICAgICAvLyBHYXJiYWdlIGNvbGxlY3Rpb24uCiAgICAgICAg
IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIEV4ZWNTdGF0ZSopOwpAQCAtMTMxLDE2ICsxMzEs
MTYgQEAKICNlbmRpZgogCiAgICAgICAgIC8vIE9iamVjdCBvcGVyYXRpb25zLCB3aXRoIHRoZSB0
b09iamVjdCBvcGVyYXRpb24gaW5jbHVkZWQuCi0gICAgICAgIGNvbnN0IENsYXNzSW5mbyogY2xh
c3NJbmZvKCkgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwdXQoRXhlY1N0YXRlKiwgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsK
LSAgICAgICAgdmlydHVhbCB2b2lkIHB1dChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUpOwotICAgICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0
YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKLSAgICAgICAgdmlydHVhbCBi
b29sIGRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7Cisg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29u
c3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgdm9pZCBwdXQoRXhlY1N0YXRl
KiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCB2b2lkIHB1dChFeGVjU3Rh
dGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUpOworICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSB2aXJ0dWFsIGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVh
bCBib29sIGRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7
CiAKLSAgICAgICAgdmlydHVhbCBKU09iamVjdCogdG9UaGlzT2JqZWN0KEV4ZWNTdGF0ZSopIGNv
bnN0OwotICAgICAgICB2aXJ0dWFsIEpTVmFsdWUgZ2V0SlNOdW1iZXIoKTsKLSAgICAgICAgdm9p
ZCogdnB0cigpIHsgcmV0dXJuICpyZWludGVycHJldF9jYXN0PHZvaWQqKj4odGhpcyk7IH0KLSAg
ICAgICAgdm9pZCBzZXRWUHRyKHZvaWQqIHZwdHIpIHsgKnJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoq
Pih0aGlzKSA9IHZwdHI7IH0KKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCBKU09i
amVjdCogdG9UaGlzT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSB2aXJ0dWFsIEpTVmFsdWUgZ2V0SlNOdW1iZXIoKTsKKyAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgdm9pZCogdnB0cigpIHsgcmV0dXJuICpyZWludGVycHJldF9jYXN0PHZvaWQqKj4o
dGhpcyk7IH0KKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRWUHRyKHZvaWQqIHZw
dHIpIHsgKnJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPih0aGlzKSA9IHZwdHI7IH0KIAogICAgICAg
ICAvLyBGSVhNRTogUmVuYW1lIGdldE93blByb3BlcnR5U2xvdCB0byB2aXJ0dWFsR2V0T3duUHJv
cGVydHlTbG90LCBhbmQKICAgICAgICAgLy8gZmFzdEdldE93blByb3BlcnR5U2xvdCB0byBnZXRP
d25Qcm9wZXJ0eVNsb3QuIENhbGxlcnMgc2hvdWxkIGFsd2F5cwpAQCAtMTYyLDggKzE2Miw4IEBA
CiAKICAgICBwcml2YXRlOgogICAgICAgICAvLyBCYXNlIGltcGxlbWVudGF0aW9uOyBmb3Igbm9u
LW9iamVjdCBjbGFzc2VzIGltcGxlbWVudHMgZ2V0UHJvcGVydHlTbG90LgotICAgICAgICB2aXJ0
dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCBib29sIGdldE93blBy
b3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIGJvb2wgZ2V0
T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90Jik7CiAgICAgICAgIAogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3N0
cnVjdHVyZTsKICAgICB9OwpAQCAtMjAzLDcgKzIwMyw3IEBACiAKICAgICAvLyAtLS0gSlNWYWx1
ZSBpbmxpbmVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotICAgIGlubGluZSBib29s
IEpTVmFsdWU6OmlzU3RyaW5nKCkgY29uc3QKKyAgICBKU19FWFBPUlRfUFJJVkFURSBpbmxpbmUg
Ym9vbCBKU1ZhbHVlOjppc1N0cmluZygpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gaXND
ZWxsKCkgJiYgYXNDZWxsKCktPmlzU3RyaW5nKCk7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNMb2NrLmgJKHJldmlzaW9uIDkwNzQ2KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcg
QEAKICAgICBjbGFzcyBKU0xvY2sgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShKU0xv
Y2spOwogICAgIHB1YmxpYzoKLSAgICAgICAgSlNMb2NrKEV4ZWNTdGF0ZSopOworICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSBKU0xvY2soRXhlY1N0YXRlKik7CiAgICAgICAgIEpTTG9jayhKU0ds
b2JhbERhdGEqKTsKIAogICAgICAgICBKU0xvY2soSlNMb2NrQmVoYXZpb3IgbG9ja0JlaGF2aW9y
KQpAQCAtODAsMTMgKzgwLDEzIEBACiAgICAgICAgICAgICB1bmxvY2sobV9sb2NrQmVoYXZpb3Ip
OyAKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgc3RhdGljIHZvaWQgbG9jayhKU0xvY2tC
ZWhhdmlvcik7Ci0gICAgICAgIHN0YXRpYyB2b2lkIHVubG9jayhKU0xvY2tCZWhhdmlvcik7Cisg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGxvY2soSlNMb2NrQmVoYXZpb3Ip
OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCB1bmxvY2soSlNMb2NrQmVo
YXZpb3IpOwogICAgICAgICBzdGF0aWMgdm9pZCBsb2NrKEV4ZWNTdGF0ZSopOwogICAgICAgICBz
dGF0aWMgdm9pZCB1bmxvY2soRXhlY1N0YXRlKik7CiAKLSAgICAgICAgc3RhdGljIGludHB0cl90
IGxvY2tDb3VudCgpOwotICAgICAgICBzdGF0aWMgYm9vbCBjdXJyZW50VGhyZWFkSXNIb2xkaW5n
TG9jaygpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgaW50cHRyX3QgbG9ja0Nv
dW50KCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGN1cnJlbnRUaHJl
YWRJc0hvbGRpbmdMb2NrKCk7CiAKICAgICAgICAgSlNMb2NrQmVoYXZpb3IgbV9sb2NrQmVoYXZp
b3I7CiAKQEAgLTk0LDggKzk0LDggQEAKICAgICAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KERyb3BBbGxMb2Nrcyk7CiAgICAgICAgIHB1YmxpYzoKICAgICAgICAgICAgIERyb3BBbGxMb2Nr
cyhFeGVjU3RhdGUqIGV4ZWMpOwotICAgICAgICAgICAgRHJvcEFsbExvY2tzKEpTTG9ja0JlaGF2
aW9yKTsKLSAgICAgICAgICAgIH5Ecm9wQWxsTG9ja3MoKTsKKyAgICAgICAgICAgIEpTX0VYUE9S
VF9QUklWQVRFIERyb3BBbGxMb2NrcyhKU0xvY2tCZWhhdmlvcik7CisgICAgICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSB+RHJvcEFsbExvY2tzKCk7CiAgICAgICAgICAgICAKICAgICAgICAgcHJp
dmF0ZToKICAgICAgICAgICAgIGludHB0cl90IG1fbG9ja0NvdW50OwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgJKHJldmlzaW9uIDkwNzQ2KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTIyMCw3ICsyMjAsNyBAQAogICAgICAgICAgICAgcmV0dXJuIG1fZ2V0VmFsdWU7
CiAgICAgICAgIH0KICAgICBwcml2YXRlOgotICAgICAgICBKU1ZhbHVlIGZ1bmN0aW9uR2V0dGVy
KEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIGZ1
bmN0aW9uR2V0dGVyKEV4ZWNTdGF0ZSopIGNvbnN0OwogCiAgICAgICAgIEdldFZhbHVlRnVuYyBt
X2dldFZhbHVlOwogICAgICAgICBHZXRJbmRleFZhbHVlRnVuYyBtX2dldEluZGV4VmFsdWU7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25z
dHJ1Y3Rvci5oCShyZXZpc2lvbiA5MDc0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTAgKzM2LDEw
IEBACiAgICAgICAgIHZpcnR1YWwgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoQ2FsbERhdGEmKTsKICAg
ICB9OwogCi0gICAgSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xv
YmFsT2JqZWN0KiwgY29uc3QgQXJnTGlzdCYsIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9uTmFt
ZSwgY29uc3QgVVN0cmluZyYgc291cmNlVVJMLCBpbnQgbGluZU51bWJlcik7CisgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xv
YmFsT2JqZWN0KiwgY29uc3QgQXJnTGlzdCYsIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9uTmFt
ZSwgY29uc3QgVVN0cmluZyYgc291cmNlVVJMLCBpbnQgbGluZU51bWJlcik7CiAgICAgSlNPYmpl
Y3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgY29uc3Qg
QXJnTGlzdCYpOwogCi0gICAgSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFs
RW5hYmxlZENoZWNrKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgQXJnTGlzdCYs
IGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBVU3RyaW5nJiwgaW50IGxpbmVOdW1iZXIpOworICAg
IEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZh
bEVuYWJsZWRDaGVjayhFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IEFyZ0xpc3Qm
LCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgVVN0cmluZyYsIGludCBsaW5lTnVtYmVyKTsKIAog
fSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1NtYWxsU3RyaW5ncy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1NtYWxsU3RyaW5ncy5oCShyZXZpc2lvbiA5MDc0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC03Miw4ICs3Miw4
IEBACiAgICAgcHJpdmF0ZToKICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNpbmdsZUNo
YXJhY3RlclN0cmluZ0NvdW50ID0gbWF4U2luZ2xlQ2hhcmFjdGVyU3RyaW5nICsgMTsKIAotICAg
ICAgICB2b2lkIGNyZWF0ZUVtcHR5U3RyaW5nKEpTR2xvYmFsRGF0YSopOwotICAgICAgICB2b2lk
IGNyZWF0ZVNpbmdsZUNoYXJhY3RlclN0cmluZyhKU0dsb2JhbERhdGEqLCB1bnNpZ25lZCBjaGFy
KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBjcmVhdGVFbXB0eVN0cmluZyhKU0ds
b2JhbERhdGEqKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBjcmVhdGVTaW5nbGVD
aGFyYWN0ZXJTdHJpbmcoSlNHbG9iYWxEYXRhKiwgdW5zaWduZWQgY2hhcik7CiAKICAgICAgICAg
SlNTdHJpbmcqIG1fZW1wdHlTdHJpbmc7CiAgICAgICAgIEpTU3RyaW5nKiBtX3NpbmdsZUNoYXJh
Y3RlclN0cmluZ3Nbc2luZ2xlQ2hhcmFjdGVyU3RyaW5nQ291bnRdOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oCShyZXZpc2lv
biA5MDc0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFy
cmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDggKzY4LDggQEAKIAogICAgICAgICBKU0dsb2Jh
bERhdGEqIGdsb2JhbERhdGEoKSB7IHJldHVybiBtX2dsb2JhbERhdGE7IH0KIAotICAgICAgICB2
b2lkIGFkZChjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7IGFkZChpZGVudGlmaWVyLmlt
cGwoKSk7IH0KLSAgICAgICAgdm9pZCBhZGQoU3RyaW5nSW1wbCopOworICAgICAgICBKU19FWFBP
UlRfUFJJVkFURSB2b2lkIGFkZChjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7IGFkZChp
ZGVudGlmaWVyLmltcGwoKSk7IH0KKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBhZGQo
U3RyaW5nSW1wbCopOwogICAgICAgICB2b2lkIGFkZEtub3duVW5pcXVlKFN0cmluZ0ltcGwqIGlk
ZW50aWZpZXIpIHsgbV9kYXRhLT5wcm9wZXJ0eU5hbWVWZWN0b3IoKS5hcHBlbmQoSWRlbnRpZmll
cihtX2dsb2JhbERhdGEsIGlkZW50aWZpZXIpKTsgfQogCiAgICAgICAgIElkZW50aWZpZXImIG9w
ZXJhdG9yW10odW5zaWduZWQgaSkgeyByZXR1cm4gbV9kYXRhLT5wcm9wZXJ0eU5hbWVWZWN0b3Io
KVtpXTsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oCShyZXZpc2lv
biA5MDc0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ1LDEyICs0NSwxMiBAQAogICAgIEpTT2JqZWN0KiBjcmVhdGVUeXBlRXJy
b3IoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBVU3RyaW5nJik7CiAgICAgSlNPYmplY3QqIGNyZWF0
ZVVSSUVycm9yKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgVVN0cmluZyYpOwogICAgIC8vIEV4ZWNT
dGF0ZSB3cmFwcGVycy4KLSAgICBKU09iamVjdCogY3JlYXRlRXJyb3IoRXhlY1N0YXRlKiwgY29u
c3QgVVN0cmluZyYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBjcmVhdGVFcnJv
cihFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJik7CiAgICAgSlNPYmplY3QqIGNyZWF0ZUV2YWxF
cnJvcihFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJik7Ci0gICAgSlNPYmplY3QqIGNyZWF0ZVJh
bmdlRXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYpOwotICAgIEpTT2JqZWN0KiBjcmVh
dGVSZWZlcmVuY2VFcnJvcihFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJik7Ci0gICAgSlNPYmpl
Y3QqIGNyZWF0ZVN5bnRheEVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmKTsKLSAgICBK
U09iamVjdCogY3JlYXRlVHlwZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmKTsKKyAg
ICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogY3JlYXRlUmFuZ2VFcnJvcihFeGVjU3RhdGUq
LCBjb25zdCBVU3RyaW5nJik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIGNyZWF0
ZVJlZmVyZW5jZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmKTsKKyAgICBKU19FWFBP
UlRfUFJJVkFURSBKU09iamVjdCogY3JlYXRlU3ludGF4RXJyb3IoRXhlY1N0YXRlKiwgY29uc3Qg
VVN0cmluZyYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBjcmVhdGVUeXBlRXJy
b3IoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYpOwogICAgIEpTT2JqZWN0KiBjcmVhdGVVUklF
cnJvcihFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJik7CiAKICAgICAvLyBNZXRob2RzIHRvIGFk
ZCAKQEAgLTYwLDEyICs2MCwxMiBAQAogICAgIEpTT2JqZWN0KiBhZGRFcnJvckluZm8oRXhlY1N0
YXRlKiwgSlNPYmplY3QqIGVycm9yLCBpbnQgbGluZSwgY29uc3QgU291cmNlQ29kZSYpOwogCiAg
ICAgLy8gTWV0aG9kcyB0byB0aHJvdyBFcnJvcnMuCi0gICAgSlNWYWx1ZSB0aHJvd0Vycm9yKEV4
ZWNTdGF0ZSosIEpTVmFsdWUpOwotICAgIEpTT2JqZWN0KiB0aHJvd0Vycm9yKEV4ZWNTdGF0ZSos
IEpTT2JqZWN0Kik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSB0aHJvd0Vycm9yKEV4
ZWNTdGF0ZSosIEpTVmFsdWUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJv
d0Vycm9yKEV4ZWNTdGF0ZSosIEpTT2JqZWN0Kik7CiAKICAgICAvLyBDb252ZW5pZW5jZSB3cmFw
cGVycywgY3JlYXRlIGFuIHRocm93IGFuIGV4Y2VwdGlvbiB3aXRoIGEgZGVmYXVsdCBtZXNzYWdl
LgotICAgIEpTT2JqZWN0KiB0aHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqKTsKLSAgICBKU09iamVj
dCogdGhyb3dTeW50YXhFcnJvcihFeGVjU3RhdGUqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBK
U09iamVjdCogdGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRlKik7CisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgSlNPYmplY3QqIHRocm93U3ludGF4RXJyb3IoRXhlY1N0YXRlKik7CiAKICAgICAvLyBDb252
ZW5pZW5jZSB3cmFwcGVycywgd3JhcCByZXN1bHQgYXMgYW4gRW5jb2RlZEpTVmFsdWUuCiAgICAg
aW5saW5lIEVuY29kZWRKU1ZhbHVlIHRocm93Vk1FcnJvcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgZXJyb3IpIHsgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0Vycm9yKGV4ZWMsIGVycm9y
KSk7IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nLmgJKHJldmlz
aW9uIDkwNzQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMCwyNCArMzAsMjQgQEAKIGNsYXNzIFVTdHJpbmcgewogcHVibGlj
OgogICAgIC8vIENvbnN0cnVjdCBhIG51bGwgc3RyaW5nLCBkaXN0aW5ndWlzaGFibGUgZnJvbSBh
biBlbXB0eSBzdHJpbmcuCi0gICAgVVN0cmluZygpIHsgfQorICAgIEpTX0VYUE9SVF9QUklWQVRF
IFVTdHJpbmcoKSB7IH0KIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyB3aXRoIFVURi0xNiBk
YXRhLgotICAgIFVTdHJpbmcoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0
aCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgVVN0cmluZyhjb25zdCBVQ2hhciogY2hhcmFjdGVy
cywgdW5zaWduZWQgbGVuZ3RoKTsKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyB3aXRoIFVU
Ri0xNiBkYXRhLCBmcm9tIGEgbnVsbC10ZXJtaW5hdGVkIHNvdXJjZS4KLSAgICBVU3RyaW5nKGNv
bnN0IFVDaGFyKik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgVVN0cmluZyhjb25zdCBVQ2hhciop
OwogCiAgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdpdGggbGF0aW4xIGRhdGEuCi0gICAgVVN0
cmluZyhjb25zdCBjaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIEpTX0VY
UE9SVF9QUklWQVRFIFVTdHJpbmcoY29uc3QgY2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVu
Z3RoKTsKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyB3aXRoIGxhdGluMSBkYXRhLCBmcm9t
IGEgbnVsbC10ZXJtaW5hdGVkIHNvdXJjZS4KLSAgICBVU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJh
Y3RlcnMpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIFVTdHJpbmcoY29uc3QgY2hhciogY2hhcmFj
dGVycyk7CiAKICAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgcmVmZXJlbmNpbmcgYW4gZXhpc3Rp
bmcgU3RyaW5nSW1wbC4KLSAgICBVU3RyaW5nKFN0cmluZ0ltcGwqIGltcGwpIDogbV9pbXBsKGlt
cGwpIHsgfQotICAgIFVTdHJpbmcoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBpbXBsKSA6IG1faW1w
bChpbXBsKSB7IH0KLSAgICBVU3RyaW5nKFJlZlB0cjxTdHJpbmdJbXBsPiBpbXBsKSA6IG1faW1w
bChpbXBsKSB7IH0KKyAgICBKU19FWFBPUlRfUFJJVkFURSBVU3RyaW5nKFN0cmluZ0ltcGwqIGlt
cGwpIDogbV9pbXBsKGltcGwpIHsgfQorICAgIEpTX0VYUE9SVF9QUklWQVRFIFVTdHJpbmcoUGFz
c1JlZlB0cjxTdHJpbmdJbXBsPiBpbXBsKSA6IG1faW1wbChpbXBsKSB7IH0KKyAgICBKU19FWFBP
UlRfUFJJVkFURSBVU3RyaW5nKFJlZlB0cjxTdHJpbmdJbXBsPiBpbXBsKSA6IG1faW1wbChpbXBs
KSB7IH0KIAogICAgIC8vIElubGluZSB0aGUgZGVzdHJ1Y3Rvci4KICAgICBBTFdBWVNfSU5MSU5F
IH5VU3RyaW5nKCkgeyB9CkBAIC03Niw5ICs3Niw5IEBACiAgICAgICAgIHJldHVybiBtX2ltcGwt
PmNoYXJhY3RlcnMoKTsKICAgICB9CiAKLSAgICBDU3RyaW5nIGFzY2lpKCkgY29uc3Q7Ci0gICAg
Q1N0cmluZyBsYXRpbjEoKSBjb25zdDsKLSAgICBDU3RyaW5nIHV0ZjgoYm9vbCBzdHJpY3QgPSBm
YWxzZSkgY29uc3Q7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgQ1N0cmluZyBhc2NpaSgpIGNvbnN0
OworICAgIEpTX0VYUE9SVF9QUklWQVRFIENTdHJpbmcgbGF0aW4xKCkgY29uc3Q7CisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgQ1N0cmluZyB1dGY4KGJvb2wgc3RyaWN0ID0gZmFsc2UpIGNvbnN0Owog
CiAgICAgVUNoYXIgb3BlcmF0b3JbXSh1bnNpZ25lZCBpbmRleCkgY29uc3QKICAgICB7CkBAIC04
NywxMSArODcsMTEgQEAKICAgICAgICAgcmV0dXJuIG1faW1wbC0+Y2hhcmFjdGVycygpW2luZGV4
XTsKICAgICB9CiAKLSAgICBzdGF0aWMgVVN0cmluZyBudW1iZXIoaW50KTsKLSAgICBzdGF0aWMg
VVN0cmluZyBudW1iZXIodW5zaWduZWQpOwotICAgIHN0YXRpYyBVU3RyaW5nIG51bWJlcihsb25n
KTsKLSAgICBzdGF0aWMgVVN0cmluZyBudW1iZXIobG9uZyBsb25nKTsKLSAgICBzdGF0aWMgVVN0
cmluZyBudW1iZXIoZG91YmxlKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgVVN0cmlu
ZyBudW1iZXIoaW50KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgVVN0cmluZyBudW1i
ZXIodW5zaWduZWQpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBVU3RyaW5nIG51bWJl
cihsb25nKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgVVN0cmluZyBudW1iZXIobG9u
ZyBsb25nKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgVVN0cmluZyBudW1iZXIoZG91
YmxlKTsKIAogICAgIC8vIEZpbmQgYSBzaW5nbGUgY2hhcmFjdGVyIG9yIHN0cmluZywgYWxzbyB3
aXRoIG1hdGNoIGZ1bmN0aW9uICYgbGF0aW4xIGZvcm1zLgogICAgIHNpemVfdCBmaW5kKFVDaGFy
IGMsIHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29uc3QKQEAgLTEwNyw3ICsxMDcsNyBAQAogICAgIHNp
emVfdCByZXZlcnNlRmluZChjb25zdCBVU3RyaW5nJiBzdHIsIHVuc2lnbmVkIHN0YXJ0ID0gVUlO
VF9NQVgpIGNvbnN0CiAgICAgICAgIHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+cmV2ZXJzZUZp
bmQoc3RyLmltcGwoKSwgc3RhcnQpIDogbm90Rm91bmQ7IH0KIAotICAgIFVTdHJpbmcgc3Vic3Ry
aW5nU2hhcmluZ0ltcGwodW5zaWduZWQgcG9zLCB1bnNpZ25lZCBsZW4gPSBVSU5UX01BWCkgY29u
c3Q7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgVVN0cmluZyBzdWJzdHJpbmdTaGFyaW5nSW1wbCh1
bnNpZ25lZCBwb3MsIHVuc2lnbmVkIGxlbiA9IFVJTlRfTUFYKSBjb25zdDsKIAogcHJpdmF0ZToK
ICAgICBSZWZQdHI8U3RyaW5nSW1wbD4gbV9pbXBsOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmgJKHJldmlzaW9uIDkwNzQ2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTMxLDcgKzMxLDcgQEAKIAogICAgIGNsYXNzIERhdGVJbnN0YW5jZSA6IHB1YmxpYyBKU1dyYXBw
ZXJPYmplY3QgewogICAgIHB1YmxpYzoKLSAgICAgICAgRGF0ZUluc3RhbmNlKEV4ZWNTdGF0ZSos
IFN0cnVjdHVyZSosIGRvdWJsZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIERhdGVJbnN0
YW5jZShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBkb3VibGUpOwogICAgICAgICBleHBsaWNpdCBE
YXRlSW5zdGFuY2UoRXhlY1N0YXRlKiwgU3RydWN0dXJlKik7CiAKICAgICAgICAgZG91YmxlIGlu
dGVybmFsTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gaW50ZXJuYWxWYWx1ZSgpLnVuY2hlY2tlZEdl
dE51bWJlcigpOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbERhdGEuaAkocmV2aXNpb24gOTA3NDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbERhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMTE0LDcgKzExNCw3IEBACiAg
ICAgICAgIC8vIHRoZSBvcmlnaW5hbCBBUEkuCiAgICAgICAgIGVudW0gR2xvYmFsRGF0YVR5cGUg
eyBEZWZhdWx0LCBBUElDb250ZXh0R3JvdXAsIEFQSVNoYXJlZCB9OwogCi0gICAgICAgIHN0cnVj
dCBDbGllbnREYXRhIHsKKyAgICAgICAgc3RydWN0IEpTX0VYUE9SVF9QUklWQVRFIENsaWVudERh
dGEgewogICAgICAgICAgICAgdmlydHVhbCB+Q2xpZW50RGF0YSgpID0gMDsKICAgICAgICAgfTsK
IApAQCAtMTIzLDEwICsxMjMsMTAgQEAKICAgICAgICAgc3RhdGljIGJvb2wgc2hhcmVkSW5zdGFu
Y2VFeGlzdHMoKTsKICAgICAgICAgc3RhdGljIEpTR2xvYmFsRGF0YSYgc2hhcmVkSW5zdGFuY2Uo
KTsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxKU0dsb2JhbERhdGE+IGNyZWF0ZShUaHJl
YWRTdGFja1R5cGUpOwotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxKU0dsb2JhbERhdGE+IGNy
ZWF0ZUxlYWtlZChUaHJlYWRTdGFja1R5cGUpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgUGFzc1JlZlB0cjxKU0dsb2JhbERhdGE+IGNyZWF0ZShUaHJlYWRTdGFja1R5cGUpOwor
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxKU0dsb2JhbERhdGE+
IGNyZWF0ZUxlYWtlZChUaHJlYWRTdGFja1R5cGUpOwogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxKU0dsb2JhbERhdGE+IGNyZWF0ZUNvbnRleHRHcm91cChUaHJlYWRTdGFja1R5cGUpOwotICAg
ICAgICB+SlNHbG9iYWxEYXRhKCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIH5KU0dsb2Jh
bERhdGEoKTsKIAogI2lmIEVOQUJMRShKU0NfTVVMVElQTEVfVEhSRUFEUykKICAgICAgICAgLy8g
V2lsbCBzdGFydCB0cmFja2luZyB0aHJlYWRzIHRoYXQgdXNlIHRoZSBoZWFwLCB3aGljaCBpcyBy
ZXNvdXJjZS1oZWF2eS4KQEAgLTI2Nyw5ICsyNjcsOSBAQAogCiAgICAgICAgIHZvaWQgcmVzZXRE
YXRlQ2FjaGUoKTsKIAotICAgICAgICB2b2lkIHN0YXJ0U2FtcGxpbmcoKTsKLSAgICAgICAgdm9p
ZCBzdG9wU2FtcGxpbmcoKTsKLSAgICAgICAgdm9pZCBkdW1wU2FtcGxlRGF0YShFeGVjU3RhdGUq
IGV4ZWMpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHN0YXJ0U2FtcGxpbmcoKTsK
KyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzdG9wU2FtcGxpbmcoKTsKKyAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkdW1wU2FtcGxlRGF0YShFeGVjU3RhdGUqKTsKICAgICAg
ICAgdm9pZCByZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucygpOwogICAgICAgICBSZWdFeHBDYWNoZSog
cmVnRXhwQ2FjaGUoKSB7IHJldHVybiBtX3JlZ0V4cENhY2hlOyB9CiAjaWYgRU5BQkxFKFJFR0VY
UF9UUkFDSU5HKQpAQCAtMjc4LDEwICsyNzgsMTAgQEAKICAgICAgICAgdm9pZCBkdW1wUmVnRXhw
VHJhY2UoKTsKICAgICAgICAgSGFuZGxlU2xvdCBhbGxvY2F0ZUdsb2JhbEhhbmRsZSgpIHsgcmV0
dXJuIGhlYXAuYWxsb2NhdGVHbG9iYWxIYW5kbGUoKTsgfQogICAgICAgICBIYW5kbGVTbG90IGFs
bG9jYXRlTG9jYWxIYW5kbGUoKSB7IHJldHVybiBoZWFwLmFsbG9jYXRlTG9jYWxIYW5kbGUoKTsg
fQotICAgICAgICB2b2lkIGNsZWFyQnVpbHRpblN0cnVjdHVyZXMoKTsKKyAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBjbGVhckJ1aWx0aW5TdHJ1Y3R1cmVzKCk7CiAKICAgICAgICAgYm9v
bCBpc0NvbGxlY3RvckJ1c3koKSB7IHJldHVybiBoZWFwLmlzQnVzeSgpOyB9Ci0gICAgICAgIHZv
aWQgcmVsZWFzZUV4ZWN1dGFibGVNZW1vcnkoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCByZWxlYXNlRXhlY3V0YWJsZU1lbW9yeSgpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAg
SlNHbG9iYWxEYXRhKEdsb2JhbERhdGFUeXBlLCBUaHJlYWRTdGFja1R5cGUpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUm9wZUltcGwuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Sb3BlSW1wbC5oCShyZXZpc2lvbiA5MDc0NikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JvcGVJbXBsLmgJKHdvcmtpbmcgY29weSkK
QEAgLTgzLDcgKzgzLDcgQEAKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBkZXN0cnVjdE5vblJl
Y3Vyc2l2ZSgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZGVzdHJ1Y3ROb25SZWN1cnNp
dmUoKTsKICAgICB2b2lkIGRlcmVmRmliZXJzTm9uUmVjdXJzaXZlKFZlY3RvcjxSb3BlSW1wbCos
IDMyPiYgd29ya1F1ZXVlKTsKIAogICAgIGJvb2wgaGFzT25lUmVmKCkgeyByZXR1cm4gKG1fcmVm
Q291bnRBbmRGbGFncyAmIHNfcmVmQ291bnRNYXNrKSA9PSBzX3JlZkNvdW50SW5jcmVtZW50OyB9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UaW1lb3V0Q2hlY2tlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RpbWVvdXRDaGVja2Vy
LmgJKHJldmlzaW9uIDkwNzQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGlt
ZW91dENoZWNrZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTcsOSArNTcsOSBAQAogICAgICAgICAg
ICAgLS1tX3N0YXJ0Q291bnQ7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIHJlc2V0KCk7Cisg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVzZXQoKTsKIAotICAgICAgICBib29sIGRp
ZFRpbWVPdXQoRXhlY1N0YXRlKik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgZGlk
VGltZU91dChFeGVjU3RhdGUqKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHVuc2lnbmVkIG1f
dGltZW91dEludGVydmFsOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oCShyZXZpc2lvbiA5MDc0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUz
LDcgQEAKIAogICAgIHR5cGVkZWYgVmVjdG9yPEV4ZWNTdGF0ZSosIDE2PiBFeGVjU3RhdGVTdGFj
azsKICAgICAKLSAgICBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1ZhcmlhYmxlT2Jq
ZWN0IHsKKyAgICBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBKU0dsb2JhbE9iamVjdCA6IHB1Ymxp
YyBKU1ZhcmlhYmxlT2JqZWN0IHsKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHR5cGVkZWYgSGFz
aFNldDxSZWZQdHI8T3BhcXVlSlNXZWFrT2JqZWN0TWFwPiA+IFdlYWtNYXBTZXQ7CiAKQEAgLTQy
MSw3ICs0MjEsNyBAQAogICAgIGNsYXNzIER5bmFtaWNHbG9iYWxPYmplY3RTY29wZSB7CiAgICAg
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKER5bmFtaWNHbG9iYWxPYmplY3RTY29wZSk7CiAgICAg
cHVibGljOgotICAgICAgICBEeW5hbWljR2xvYmFsT2JqZWN0U2NvcGUoSlNHbG9iYWxEYXRhJiwg
SlNHbG9iYWxPYmplY3QqKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgRHluYW1pY0dsb2Jh
bE9iamVjdFNjb3BlKEpTR2xvYmFsRGF0YSYsIEpTR2xvYmFsT2JqZWN0Kik7CiAKICAgICAgICAg
fkR5bmFtaWNHbG9iYWxPYmplY3RTY29wZSgpCiAgICAgICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0V2l0aEdsb2JhbE9iamVjdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0V2l0aEdsb2JhbE9iamVj
dC5oCShyZXZpc2lvbiA5MDc0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0V2l0aEdsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxNCArMzksMTQg
QEAKICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvLCBU
eXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwg
JnNfaW5mbyk7CiAgICAgfQogCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCgpIGNv
bnN0CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCgp
IGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gYXNHbG9iYWxPYmplY3QoKGdldEFub255bW91
c1ZhbHVlKEdsb2JhbE9iamVjdFNsb3QpLmFzQ2VsbCgpKSk7CiAgICAgfQogCiBwcm90ZWN0ZWQ6
Ci0gICAgSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
Kik7Ci0gICAgSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0KEpTR2xvYmFsRGF0YSYsIEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3RXaXRo
R2xvYmFsT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0KEpTR2xvYmFsRGF0YSYsIEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKik7CiAKICAgICBKU09iamVjdFdpdGhHbG9iYWxPYmplY3QoVlB0
clN0ZWFsaW5nSGFja1R5cGUpCiAgICAgICAgIDogSlNOb25GaW5hbE9iamVjdChWUHRyU3RlYWxp
bmdIYWNrKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaAkocmV2
aXNpb24gOTA3NDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTgxLDcgKzgxLDcgQEAKICAgICB9OwogCiAgICAgLy8gVGhpcyBp
bXBsZW1lbnRzIFRvSW50MzIsIGRlZmluZWQgaW4gRUNNQS0yNjIgOS41LgotICAgIGludDMyX3Qg
dG9JbnQzMihkb3VibGUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIGludDMyX3QgdG9JbnQzMihk
b3VibGUpOwogCiAgICAgLy8gVGhpcyBpbXBsZW1lbnRzIFRvVUludDMyLCBkZWZpbmVkIGluIEVD
TUEtMjYyIDkuNi4KICAgICBpbmxpbmUgdWludDMyX3QgdG9VSW50MzIoZG91YmxlIG51bWJlcikK
QEAgLTE4NCw3ICsxODQsNyBAQAogICAgICAgICBKU09iamVjdCogdG9PYmplY3QoRXhlY1N0YXRl
KiwgSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKIAogICAgICAgICAvLyBJbnRlZ2VyIGNvbnZlcnNp
b25zLgotICAgICAgICBkb3VibGUgdG9JbnRlZ2VyKEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSBkb3VibGUgdG9JbnRlZ2VyKEV4ZWNTdGF0ZSopIGNvbnN0Owog
ICAgICAgICBkb3VibGUgdG9JbnRlZ2VyUHJlc2VydmVOYU4oRXhlY1N0YXRlKikgY29uc3Q7CiAg
ICAgICAgIGludDMyX3QgdG9JbnQzMihFeGVjU3RhdGUqKSBjb25zdDsKICAgICAgICAgdWludDMy
X3QgdG9VSW50MzIoRXhlY1N0YXRlKikgY29uc3Q7CkBAIC0yMjMsNyArMjIzLDcgQEAKIAogICAg
ICAgICBib29sIGlzQ2VsbCgpIGNvbnN0OwogICAgICAgICBKU0NlbGwqIGFzQ2VsbCgpIGNvbnN0
OwotICAgICAgICBib29sIGlzVmFsaWRDYWxsZWUoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgYm9vbCBpc1ZhbGlkQ2FsbGVlKCk7CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgIGNoYXIq
IGRlc2NyaXB0aW9uKCk7CkBAIC0yMzYsMTAgKzIzNiwxMCBAQAogICAgICAgICBKU1ZhbHVlKEhh
c2hUYWJsZURlbGV0ZWRWYWx1ZVRhZyk7CiAKICAgICAgICAgaW5saW5lIGNvbnN0IEpTVmFsdWUg
YXNWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9Ci0gICAgICAgIEpTT2JqZWN0KiB0b09i
amVjdFNsb3dDYXNlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7Ci0gICAgICAg
IEpTT2JqZWN0KiB0b1RoaXNPYmplY3RTbG93Q2FzZShFeGVjU3RhdGUqKSBjb25zdDsKKyAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRvT2JqZWN0U2xvd0Nhc2UoRXhlY1N0YXRl
KiwgSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNP
YmplY3QqIHRvVGhpc09iamVjdFNsb3dDYXNlKEV4ZWNTdGF0ZSopIGNvbnN0OwogCi0gICAgICAg
IEpTT2JqZWN0KiBzeW50aGVzaXplUHJvdG90eXBlKEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogc3ludGhlc2l6ZVByb3RvdHlwZShFeGVjU3Rh
dGUqKSBjb25zdDsKICAgICAgICAgSlNPYmplY3QqIHN5bnRoZXNpemVPYmplY3QoRXhlY1N0YXRl
KikgY29uc3Q7CiAKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmgJKHJldmlzaW9uIDkw
NzQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9y
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDggKzQ2LDggQEAKICAgICAgICAgSlNWYWx1ZSB2YWx1
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KICAgICAgICAgSlNWYWx1ZSBnZXR0ZXIoKSBj
b25zdDsKICAgICAgICAgSlNWYWx1ZSBzZXR0ZXIoKSBjb25zdDsKLSAgICAgICAgdm9pZCBzZXRV
bmRlZmluZWQoKTsKLSAgICAgICAgdm9pZCBzZXREZXNjcmlwdG9yKEpTVmFsdWUgdmFsdWUsIHVu
c2lnbmVkIGF0dHJpYnV0ZXMpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldFVu
ZGVmaW5lZCgpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldERlc2NyaXB0b3Io
SlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAgICAgIHZvaWQgc2V0QWNjZXNzb3JE
ZXNjcmlwdG9yKEpTVmFsdWUgZ2V0dGVyLCBKU1ZhbHVlIHNldHRlciwgdW5zaWduZWQgYXR0cmli
dXRlcyk7CiAgICAgICAgIHZvaWQgc2V0V3JpdGFibGUoYm9vbCk7CiAgICAgICAgIHZvaWQgc2V0
RW51bWVyYWJsZShib29sKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
V3JhcHBlck9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTV3JhcHBlck9iamVjdC5oCShyZXZpc2lvbiA5MDc0NikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3
ICsyOCw3IEBACiAKICAgICAvLyBUaGlzIGNsYXNzIGlzIHVzZWQgYXMgYSBiYXNlIGZvciBjbGFz
c2VzIHN1Y2ggYXMgU3RyaW5nLAogICAgIC8vIE51bWJlciwgQm9vbGVhbiBhbmQgRGF0ZSB3aGlj
aCBhcmUgd3JhcHBlcnMgZm9yIHByaW1pdGl2ZSB0eXBlcy4KLSAgICBjbGFzcyBKU1dyYXBwZXJP
YmplY3QgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CisgICAgY2xhc3MgSlNfRVhQT1JUX1BS
SVZBVEUgSlNXcmFwcGVyT2JqZWN0IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIHBy
b3RlY3RlZDoKICAgICAgICAgZXhwbGljaXQgSlNXcmFwcGVyT2JqZWN0KEpTR2xvYmFsRGF0YSYs
IFN0cnVjdHVyZSopOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWxs
RGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhbGxE
YXRhLmgJKHJldmlzaW9uIDkwNzQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q2FsbERhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsNyBAQAogICAgICAgICB9IGpz
OwogICAgIH07CiAKLSAgICBKU1ZhbHVlIGNhbGwoRXhlY1N0YXRlKiwgSlNWYWx1ZSBmdW5jdGlv
bk9iamVjdCwgQ2FsbFR5cGUsIGNvbnN0IENhbGxEYXRhJiwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNv
bnN0IEFyZ0xpc3QmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIGNhbGwoRXhlY1N0
YXRlKiwgSlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwgQ2FsbFR5cGUsIGNvbnN0IENhbGxEYXRhJiwg
SlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3QmKTsKIAogfSAvLyBuYW1lc3BhY2UgSlND
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmgJKHJl
dmlzaW9uIDkwNzQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFp
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAgICAgY2xhc3MgU2NvcGVDaGFp
bkl0ZXJhdG9yOwogICAgIGNsYXNzIFNsb3RWaXNpdG9yOwogICAgIAotICAgIGNsYXNzIFNjb3Bl
Q2hhaW5Ob2RlIDogcHVibGljIEpTQ2VsbCB7CisgICAgY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUg
U2NvcGVDaGFpbk5vZGUgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFNj
b3BlQ2hhaW5Ob2RlKFNjb3BlQ2hhaW5Ob2RlKiBuZXh0LCBKU09iamVjdCogb2JqZWN0LCBKU0ds
b2JhbERhdGEqIGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2Jq
ZWN0KiBnbG9iYWxUaGlzKQogICAgICAgICAgICAgOiBKU0NlbGwoKmdsb2JhbERhdGEsIGdsb2Jh
bERhdGEtPnNjb3BlQ2hhaW5Ob2RlU3RydWN0dXJlLmdldCgpKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29uc3RydWN0RGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0cnVjdERhdGEuaAkocmV2aXNpb24gOTA3NDYpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zdHJ1Y3REYXRhLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTU3LDcgKzU3LDcgQEAKICAgICAgICAgfSBqczsKICAgICB9OwogCi0gICAgSlNP
YmplY3QqIGNvbnN0cnVjdChFeGVjU3RhdGUqLCBKU1ZhbHVlIGNvbnN0cnVjdG9yLCBDb25zdHJ1
Y3RUeXBlLCBjb25zdCBDb25zdHJ1Y3REYXRhJiwgY29uc3QgQXJnTGlzdCYpOworICAgIEpTX0VY
UE9SVF9QUklWQVRFIEpTT2JqZWN0KiBjb25zdHJ1Y3QoRXhlY1N0YXRlKiwgSlNWYWx1ZSBjb25z
dHJ1Y3RvciwgQ29uc3RydWN0VHlwZSwgY29uc3QgQ29uc3RydWN0RGF0YSYsIGNvbnN0IEFyZ0xp
c3QmKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmgJKHJldmlzaW9uIDkwNzQ2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAKICAgICAvLyBUaGlzIGZ1bmN0aW9u
IG11c3QgYmUgY2FsbGVkIGZyb20gdGhlIG1haW4gdGhyZWFkLiBJdCBpcyBzYWZlIHRvIGNhbGwg
aXQgcmVwZWF0ZWRseS4KICAgICAvLyBEYXJ3aW4gaXMgYW4gZXhjZXB0aW9uIHRvIHRoaXMgcnVs
ZTogaXQgaXMgT0sgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIGZyb20gYW55IHRocmVhZCwgZXZlbiBy
ZWVudHJhbnRseS4KLSAgICB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKTsKKyAgICBKU19FWFBP
UlRfUFJJVkFURSB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKTsKIAogfQogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmgJKHJl
dmlzaW9uIDkwNzQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9SZWZDb3VudGVkTGVh
a0NvdW50ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogCiBuYW1lc3BhY2Ug
V1RGIHsKICAgICAKLSAgICBzdHJ1Y3QgUmVmQ291bnRlZExlYWtDb3VudGVyIHsKKyAgICBzdHJ1
Y3QgSlNfRVhQT1JUX1BSSVZBVEUgUmVmQ291bnRlZExlYWtDb3VudGVyIHsKICAgICAgICAgc3Rh
dGljIHZvaWQgc3VwcHJlc3NNZXNzYWdlcyhjb25zdCBjaGFyKik7CiAgICAgICAgIHN0YXRpYyB2
b2lkIGNhbmNlbE1lc3NhZ2VTdXBwcmVzc2lvbihjb25zdCBjaGFyKik7CiAgICAgICAgIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9OdWxsUHRyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9OdWxsUHRyLmgJKHJldmlzaW9uIDkwNzQ2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9OdWxsUHRyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDEw
ICs0MiwxMCBAQAogI2Vsc2UKIAogbmFtZXNwYWNlIHN0ZCB7Ci0gICAgY2xhc3MgbnVsbHB0cl90
IHsgfTsKKyAgICBjbGFzcyBXVEZfRVhQT1JUX1BSSVZBVEUgbnVsbHB0cl90IHsgfTsKIH0KIAot
ZXh0ZXJuIHN0ZDo6bnVsbHB0cl90IG51bGxwdHI7CitleHRlcm4gV1RGX0VYUE9SVF9QUklWQVRF
IHN0ZDo6bnVsbHB0cl90IG51bGxwdHI7CiAKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL1RocmVhZGluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvVGhyZWFkaW5nLmgJKHJldmlzaW9uIDkwNzQ2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi9UaHJlYWRpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtODQsMjcgKzg0LDI3IEBA
CiAvLyBUaGlzIGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVkIGZyb20gdGhlIG1haW4gdGhyZWFkLiBJ
dCBpcyBzYWZlIHRvIGNhbGwgaXQgcmVwZWF0ZWRseS4KIC8vIERhcndpbiBpcyBhbiBleGNlcHRp
b24gdG8gdGhpcyBydWxlOiBpdCBpcyBPSyB0byBjYWxsIGl0IGZyb20gYW55IHRocmVhZCwgdGhl
IG9ubHkgCiAvLyByZXF1aXJlbWVudCBpcyB0aGF0IHRoZSBjYWxscyBhcmUgbm90IHJlZW50cmFu
dC4KLXZvaWQgaW5pdGlhbGl6ZVRocmVhZGluZygpOworSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBp
bml0aWFsaXplVGhyZWFkaW5nKCk7CiAKIC8vIFJldHVybnMgMCBpZiB0aHJlYWQgY3JlYXRpb24g
ZmFpbGVkLgogLy8gVGhlIHRocmVhZCBuYW1lIG11c3QgYmUgYSBsaXRlcmFsIHNpbmNlIG9uIHNv
bWUgcGxhdGZvcm1zIGl0J3MgcGFzc2VkIGluIHRvIHRoZSB0aHJlYWQuCi1UaHJlYWRJZGVudGlm
aWVyIGNyZWF0ZVRocmVhZChUaHJlYWRGdW5jdGlvbiwgdm9pZCosIGNvbnN0IGNoYXIqIHRocmVh
ZE5hbWUpOworSlNfRVhQT1JUX1BSSVZBVEUgVGhyZWFkSWRlbnRpZmllciBjcmVhdGVUaHJlYWQo
VGhyZWFkRnVuY3Rpb24sIHZvaWQqLCBjb25zdCBjaGFyKiB0aHJlYWROYW1lKTsKIAogLy8gSW50
ZXJuYWwgcGxhdGZvcm0tc3BlY2lmaWMgY3JlYXRlVGhyZWFkIGltcGxlbWVudGF0aW9uLgotVGhy
ZWFkSWRlbnRpZmllciBjcmVhdGVUaHJlYWRJbnRlcm5hbChUaHJlYWRGdW5jdGlvbiwgdm9pZCos
IGNvbnN0IGNoYXIqIHRocmVhZE5hbWUpOworSlNfRVhQT1JUX1BSSVZBVEUgVGhyZWFkSWRlbnRp
ZmllciBjcmVhdGVUaHJlYWRJbnRlcm5hbChUaHJlYWRGdW5jdGlvbiwgdm9pZCosIGNvbnN0IGNo
YXIqIHRocmVhZE5hbWUpOwogCiAvLyBDYWxsZWQgaW4gdGhlIHRocmVhZCBkdXJpbmcgaW5pdGlh
bGl6YXRpb24uCiAvLyBIZWxwZnVsIGZvciBwbGF0Zm9ybXMgd2hlcmUgdGhlIHRocmVhZCBuYW1l
IG11c3QgYmUgc2V0IGZyb20gd2l0aGluIHRoZSB0aHJlYWQuCiB2b2lkIGluaXRpYWxpemVDdXJy
ZW50VGhyZWFkSW50ZXJuYWwoY29uc3QgY2hhciogdGhyZWFkTmFtZSk7CiAKLVRocmVhZElkZW50
aWZpZXIgY3VycmVudFRocmVhZCgpOwotaW50IHdhaXRGb3JUaHJlYWRDb21wbGV0aW9uKFRocmVh
ZElkZW50aWZpZXIsIHZvaWQqKik7Ci12b2lkIGRldGFjaFRocmVhZChUaHJlYWRJZGVudGlmaWVy
KTsKK0pTX0VYUE9SVF9QUklWQVRFIFRocmVhZElkZW50aWZpZXIgY3VycmVudFRocmVhZCgpOwor
SlNfRVhQT1JUX1BSSVZBVEUgaW50IHdhaXRGb3JUaHJlYWRDb21wbGV0aW9uKFRocmVhZElkZW50
aWZpZXIsIHZvaWQqKik7CitKU19FWFBPUlRfUFJJVkFURSB2b2lkIGRldGFjaFRocmVhZChUaHJl
YWRJZGVudGlmaWVyKTsKIAotdm9pZCB5aWVsZCgpOworSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCB5
aWVsZCgpOwogCi12b2lkIGxvY2tBdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleCgpOwot
dm9pZCB1bmxvY2tBdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleCgpOworSlNfRVhQT1JU
X1BSSVZBVEUgdm9pZCBsb2NrQXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljTXV0ZXgoKTsKK0pT
X0VYUE9SVF9QUklWQVRFIHZvaWQgdW5sb2NrQXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljTXV0
ZXgoKTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvTWFpblRocmVhZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvTWFpblRocmVhZC5oCShyZXZpc2lvbiA5MDc0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvTWFpblRocmVhZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxNSArMzgsMTUgQEAKIHR5
cGVkZWYgdm9pZCBNYWluVGhyZWFkRnVuY3Rpb24odm9pZCopOwogCiAvLyBNdXN0IGJlIGNhbGxl
ZCBmcm9tIHRoZSBtYWluIHRocmVhZC4KLXZvaWQgaW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKK0pT
X0VYUE9SVF9QUklWQVRFIHZvaWQgaW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKIAotdm9pZCBjYWxs
T25NYWluVGhyZWFkKE1haW5UaHJlYWRGdW5jdGlvbiosIHZvaWQqIGNvbnRleHQpOworSlNfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBjYWxsT25NYWluVGhyZWFkKE1haW5UaHJlYWRGdW5jdGlvbiosIHZv
aWQqIGNvbnRleHQpOwogdm9pZCBjYWxsT25NYWluVGhyZWFkQW5kV2FpdChNYWluVGhyZWFkRnVu
Y3Rpb24qLCB2b2lkKiBjb250ZXh0KTsKIHZvaWQgY2FuY2VsQ2FsbE9uTWFpblRocmVhZChNYWlu
VGhyZWFkRnVuY3Rpb24qLCB2b2lkKiBjb250ZXh0KTsKIAotdm9pZCBzZXRNYWluVGhyZWFkQ2Fs
bGJhY2tzUGF1c2VkKGJvb2wgcGF1c2VkKTsKK0pTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0TWFp
blRocmVhZENhbGxiYWNrc1BhdXNlZChib29sKTsKIAotYm9vbCBpc01haW5UaHJlYWQoKTsKK0pT
X0VYUE9SVF9QUklWQVRFIGJvb2wgaXNNYWluVGhyZWFkKCk7CiAKIC8vIE5PVEU6IHRoZXNlIGZ1
bmN0aW9ucyBhcmUgaW50ZXJuYWwgdG8gdGhlIGNhbGxPbk1haW5UaHJlYWQgaW1wbGVtZW50YXRp
b24uCiB2b2lkIGluaXRpYWxpemVNYWluVGhyZWFkUGxhdGZvcm0oKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvT1NBbGxvY2F0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL09TQWxsb2NhdG9yLmgJKHJldmlzaW9uIDkwNzQ2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9PU0FsbG9jYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3
ICs0Niw3IEBACiAgICAgLy8gcmVsZWFzZURlY29tbWl0dGVkIHNob3VsZCBiZSBjYWxsZWQgb24g
YSByZWdpb24gb2YgVk0gYWxsb2NhdGVkIGJ5IGEgc2luZ2xlIHJlc2VydmF0aW9uLAogICAgIC8v
IHRoZSBtZW1vcnkgbXVzdCBhbGwgY3VycmVudGx5IGJlIGluIGEgZGVjb21taXR0ZWQgc3RhdGUu
CiAgICAgc3RhdGljIHZvaWQqIHJlc2VydmVVbmNvbW1pdHRlZChzaXplX3QsIFVzYWdlID0gVW5r
bm93blVzYWdlLCBib29sIHdyaXRhYmxlID0gdHJ1ZSwgYm9vbCBleGVjdXRhYmxlID0gZmFsc2Us
IGJvb2wgaW5jbHVkZXNHdWFyZFBhZ2VzID0gZmFsc2UpOwotICAgIHN0YXRpYyB2b2lkIHJlbGVh
c2VEZWNvbW1pdHRlZCh2b2lkKiwgc2l6ZV90KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIHZvaWQgcmVsZWFzZURlY29tbWl0dGVkKHZvaWQqLCBzaXplX3QpOwogCiAgICAgLy8gVGhl
c2UgbWV0aG9kcyBhcmUgc3ltbWV0cmljOyB0aGV5IGNvbW1pdCBvciBkZWNvbW1pdCBhIHJlZ2lv
biBvZiBWTSAodW5jb21taXR0ZWQgVk0gc2hvdWxkCiAgICAgLy8gbmV2ZXIgYmUgYWNjZXNzZWQs
IHNpbmNlIHRoZSBPUyBtYXkgbm90IGhhdmUgYXR0YWNoZWQgcGh5c2ljYWwgbWVtb3J5IGZvciB0
aGVzZSByZWdpb25zKS4KQEAgLTU3LDcgKzU3LDcgQEAKICAgICAvLyBUaGVzZSBtZXRob2RzIGFy
ZSBzeW1tZXRyaWM7IHJlc2VydmVBbmRDb21taXQgYWxsb2NhdGVzIFZNIGluIGFuIGNvbW1pdHRl
ZCBzdGF0ZSwKICAgICAvLyBkZWNvbW1pdEFuZFJlbGVhc2Ugc2hvdWxkIGJlIGNhbGxlZCBvbiBh
IHJlZ2lvbiBvZiBWTSBhbGxvY2F0ZWQgYnkgYSBzaW5nbGUgcmVzZXJ2YXRpb24sCiAgICAgLy8g
dGhlIG1lbW9yeSBtdXN0IGFsbCBjdXJyZW50bHkgYmUgaW4gYSBjb21taXR0ZWQgc3RhdGUuCi0g
ICAgc3RhdGljIHZvaWQqIHJlc2VydmVBbmRDb21taXQoc2l6ZV90LCBVc2FnZSA9IFVua25vd25V
c2FnZSwgYm9vbCB3cml0YWJsZSA9IHRydWUsIGJvb2wgZXhlY3V0YWJsZSA9IGZhbHNlLCBib29s
IGluY2x1ZGVzR3VhcmRQYWdlcyA9IGZhbHNlKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIHZvaWQqIHJlc2VydmVBbmRDb21taXQoc2l6ZV90LCBVc2FnZSA9IFVua25vd25Vc2FnZSwg
Ym9vbCB3cml0YWJsZSA9IHRydWUsIGJvb2wgZXhlY3V0YWJsZSA9IGZhbHNlLCBib29sIGluY2x1
ZGVzR3VhcmRQYWdlcyA9IGZhbHNlKTsKICAgICBzdGF0aWMgdm9pZCBkZWNvbW1pdEFuZFJlbGVh
c2Uodm9pZCogYmFzZSwgc2l6ZV90IHNpemUpOwogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUg
YWtpbiB0byByZXNlcnZlQW5kQ29tbWl0L2RlY29tbWl0QW5kUmVsZWFzZSwgYWJvdmUgLSBob3dl
dmVyIHJhdGhlciB0aGFuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0Zhc3RNYWxs
b2MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0Zhc3RNYWxsb2Mu
aAkocmV2aXNpb24gOTA3NDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0Zhc3RNYWxs
b2MuaAkod29ya2luZyBjb3B5KQpAQCAtMjksMTIgKzI5LDEyIEBACiBuYW1lc3BhY2UgV1RGIHsK
IAogICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyBjYWxsIENSQVNIKCkgaWYgYW4gYWxsb2NhdGlvbiBm
YWlscy4KLSAgICB2b2lkKiBmYXN0TWFsbG9jKHNpemVfdCk7Ci0gICAgdm9pZCogZmFzdFplcm9l
ZE1hbGxvYyhzaXplX3QpOwotICAgIHZvaWQqIGZhc3RDYWxsb2Moc2l6ZV90IG51bUVsZW1lbnRz
LCBzaXplX3QgZWxlbWVudFNpemUpOwotICAgIHZvaWQqIGZhc3RSZWFsbG9jKHZvaWQqLCBzaXpl
X3QpOwotICAgIGNoYXIqIGZhc3RTdHJEdXAoY29uc3QgY2hhciopOwotICAgIHNpemVfdCBmYXN0
TWFsbG9jU2l6ZShjb25zdCB2b2lkKik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCogZmFz
dE1hbGxvYyhzaXplX3QpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQqIGZhc3RaZXJvZWRN
YWxsb2Moc2l6ZV90KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkKiBmYXN0Q2FsbG9jKHNp
emVfdCBudW1FbGVtZW50cywgc2l6ZV90IGVsZW1lbnRTaXplKTsKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSB2b2lkKiBmYXN0UmVhbGxvYyh2b2lkKiwgc2l6ZV90KTsKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSBjaGFyKiBmYXN0U3RyRHVwKGNvbnN0IGNoYXIqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSBzaXplX3QgZmFzdE1hbGxvY1NpemUoY29uc3Qgdm9pZCopOwogCiAgICAgc3RydWN0IFRyeU1h
bGxvY1JldHVyblZhbHVlIHsKICAgICAgICAgVHJ5TWFsbG9jUmV0dXJuVmFsdWUodm9pZCogZGF0
YSkKQEAgLTY4LDEyICs2OCwxMiBAQAogICAgICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiAgICAg
fQogCi0gICAgVHJ5TWFsbG9jUmV0dXJuVmFsdWUgdHJ5RmFzdE1hbGxvYyhzaXplX3Qgbik7Ci0g
ICAgVHJ5TWFsbG9jUmV0dXJuVmFsdWUgdHJ5RmFzdFplcm9lZE1hbGxvYyhzaXplX3Qgbik7Ci0g
ICAgVHJ5TWFsbG9jUmV0dXJuVmFsdWUgdHJ5RmFzdENhbGxvYyhzaXplX3Qgbl9lbGVtZW50cywg
c2l6ZV90IGVsZW1lbnRfc2l6ZSk7Ci0gICAgVHJ5TWFsbG9jUmV0dXJuVmFsdWUgdHJ5RmFzdFJl
YWxsb2Modm9pZCogcCwgc2l6ZV90IG4pOworICAgIEpTX0VYUE9SVF9QUklWQVRFIFRyeU1hbGxv
Y1JldHVyblZhbHVlIHRyeUZhc3RNYWxsb2Moc2l6ZV90IG4pOworICAgIEpTX0VYUE9SVF9QUklW
QVRFIFRyeU1hbGxvY1JldHVyblZhbHVlIHRyeUZhc3RaZXJvZWRNYWxsb2Moc2l6ZV90IG4pOwor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIFRyeU1hbGxvY1JldHVyblZhbHVlIHRyeUZhc3RDYWxsb2Mo
c2l6ZV90IG5fZWxlbWVudHMsIHNpemVfdCBlbGVtZW50X3NpemUpOworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIFRyeU1hbGxvY1JldHVyblZhbHVlIHRyeUZhc3RSZWFsbG9jKHZvaWQqIHAsIHNpemVf
dCBuKTsKIAotICAgIHZvaWQgZmFzdEZyZWUodm9pZCopOworICAgIEpTX0VYUE9SVF9QUklWQVRF
IHZvaWQgZmFzdEZyZWUodm9pZCopOwogCiAjaWZuZGVmIE5ERUJVRyAgICAKICAgICB2b2lkIGZh
c3RNYWxsb2NGb3JiaWQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFk
U3BlY2lmaWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVh
ZFNwZWNpZmljLmgJKHJldmlzaW9uIDkwNzQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi9UaHJlYWRTcGVjaWZpYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTYsOCArMjE2LDggQEAKIC8v
IDIpIFdlIGRvIG5vdCBuZWVkIHRvIGhvbGQgbWFueSBpbnN0YW5jZXMgb2YgVGhyZWFkU3BlY2lm
aWM8PiBkYXRhLiBUaGlzIGZpeGVkIG51bWJlciBzaG91bGQgYmUgZmFyIGVub3VnaC4KIGNvbnN0
IGludCBrTWF4VGxzS2V5U2l6ZSA9IDI1NjsKIAotbG9uZyYgdGxzS2V5Q291bnQoKTsKLURXT1JE
KiB0bHNLZXlzKCk7CitKU19FWFBPUlRfUFJJVkFURSBsb25nJiB0bHNLZXlDb3VudCgpOworSlNf
RVhQT1JUX1BSSVZBVEUgRFdPUkQqIHRsc0tleXMoKTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4K
IGlubGluZSBUaHJlYWRTcGVjaWZpYzxUPjo6VGhyZWFkU3BlY2lmaWMoKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9XVEZUaHJlYWREYXRhLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9XVEZUaHJlYWREYXRhLmgJKHJldmlzaW9uIDkwNzQ2KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9XVEZUaHJlYWREYXRhLmgJKHdvcmtpbmcgY29weSkK
QEAgLTg5LDggKzg5LDggQEAKIGNsYXNzIFdURlRocmVhZERhdGEgewogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKFdURlRocmVhZERhdGEpOwogcHVibGljOgotICAgIFdURlRocmVhZERhdGEoKTsK
LSAgICB+V1RGVGhyZWFkRGF0YSgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIFdURlRocmVhZERh
dGEoKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB+V1RGVGhyZWFkRGF0YSgpOwogCiAgICAgQXRv
bWljU3RyaW5nVGFibGUqIGF0b21pY1N0cmluZ1RhYmxlKCkKICAgICB7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL0RhdGVNYXRoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi9EYXRlTWF0aC5oCShyZXZpc2lvbiA5MDc0NikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvRGF0ZU1hdGguaAkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBA
QAogCiAvLyBOb3QgcmVhbGx5IG1hdGggcmVsYXRlZCwgYnV0IHRoaXMgaXMgY3VycmVudGx5IHRo
ZSBvbmx5IHNoYXJlZCBwbGFjZSB0byBwdXQgdGhlc2UuCiBkb3VibGUgcGFyc2VFUzVEYXRlRnJv
bU51bGxUZXJtaW5hdGVkQ2hhcmFjdGVycyhjb25zdCBjaGFyKiBkYXRlU3RyaW5nKTsKLWRvdWJs
ZSBwYXJzZURhdGVGcm9tTnVsbFRlcm1pbmF0ZWRDaGFyYWN0ZXJzKGNvbnN0IGNoYXIqIGRhdGVT
dHJpbmcpOworV1RGX0VYUE9SVF9QUklWQVRFIGRvdWJsZSBwYXJzZURhdGVGcm9tTnVsbFRlcm1p
bmF0ZWRDaGFyYWN0ZXJzKGNvbnN0IGNoYXIqIGRhdGVTdHJpbmcpOwogZG91YmxlIHRpbWVDbGlw
KGRvdWJsZSk7CiAvLyBkYXlPZldlZWs6IFswLCA2XSAwIGJlaW5nIE1vbmRheSwgZGF5OiBbMSwg
MzFdLCBtb250aDogWzAsIDExXSwgeWVhcjogZXg6IDIwMTEsIGhvdXJzOiBbMCwgMjNdLCBtaW51
dGVzOiBbMCwgNTldLCBzZWNvbmRzOiBbMCwgNTldLCB1dGNPZmZzZXQ6IFstNzIwLDcyMF0uIAog
U3RyaW5nIG1ha2VSRkMyODIyRGF0ZVN0cmluZyh1bnNpZ25lZCBkYXlPZldlZWssIHVuc2lnbmVk
IGRheSwgdW5zaWduZWQgbW9udGgsIHVuc2lnbmVkIHllYXIsIHVuc2lnbmVkIGhvdXJzLCB1bnNp
Z25lZCBtaW51dGVzLCB1bnNpZ25lZCBzZWNvbmRzLCBpbnQgdXRjT2Zmc2V0KTsKQEAgLTg1LDE1
ICs4NSwxNSBAQAogY29uc3QgZG91YmxlIG1zUGVyTW9udGggPSAyNTkyMDAwMDAwLjA7CiAKIC8v
IFJldHVybnMgdGhlIG51bWJlciBvZiBkYXlzIGZyb20gMTk3MC0wMS0wMSB0byB0aGUgc3BlY2lm
aWVkIGRhdGUuCi1kb3VibGUgZGF0ZVRvRGF5c0Zyb20xOTcwKGludCB5ZWFyLCBpbnQgbW9udGgs
IGludCBkYXkpOwotaW50IG1zVG9ZZWFyKGRvdWJsZSBtcyk7Ci1pbnQgZGF5SW5ZZWFyKGRvdWJs
ZSBtcywgaW50IHllYXIpOwotaW50IG1vbnRoRnJvbURheUluWWVhcihpbnQgZGF5SW5ZZWFyLCBi
b29sIGxlYXBZZWFyKTsKLWludCBkYXlJbk1vbnRoRnJvbURheUluWWVhcihpbnQgZGF5SW5ZZWFy
LCBib29sIGxlYXBZZWFyKTsKK1dURl9FWFBPUlRfUFJJVkFURSBkb3VibGUgZGF0ZVRvRGF5c0Zy
b20xOTcwKGludCB5ZWFyLCBpbnQgbW9udGgsIGludCBkYXkpOworV1RGX0VYUE9SVF9QUklWQVRF
IGludCBtc1RvWWVhcihkb3VibGUgbXMpOworV1RGX0VYUE9SVF9QUklWQVRFIGludCBkYXlJblll
YXIoZG91YmxlIG1zLCBpbnQgeWVhcik7CitXVEZfRVhQT1JUX1BSSVZBVEUgaW50IG1vbnRoRnJv
bURheUluWWVhcihpbnQgZGF5SW5ZZWFyLCBib29sIGxlYXBZZWFyKTsKK1dURl9FWFBPUlRfUFJJ
VkFURSBpbnQgZGF5SW5Nb250aEZyb21EYXlJblllYXIoaW50IGRheUluWWVhciwgYm9vbCBsZWFw
WWVhcik7CiAKIC8vIFJldHVybnMgb2Zmc2V0IG1pbGxpc2Vjb25kcyBmb3IgVVRDIGFuZCBEU1Qu
Ci1pbnQzMl90IGNhbGN1bGF0ZVVUQ09mZnNldCgpOwotZG91YmxlIGNhbGN1bGF0ZURTVE9mZnNl
dChkb3VibGUgbXMsIGRvdWJsZSB1dGNPZmZzZXQpOworV1RGX0VYUE9SVF9QUklWQVRFIGludDMy
X3QgY2FsY3VsYXRlVVRDT2Zmc2V0KCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgZG91YmxlIGNhbGN1
bGF0ZURTVE9mZnNldChkb3VibGUgbXMsIGRvdWJsZSB1dGNPZmZzZXQpOwogCiB9IC8vIG5hbWVz
cGFjZSBXVEYKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi91bmljb2RlL0NvbGxh
dG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi91bmljb2RlL0Nv
bGxhdG9yLmgJKHJldmlzaW9uIDkwNzQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi91
bmljb2RlL0NvbGxhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDEzICs0NSwxMyBAQAogICAg
IHB1YmxpYzoKICAgICAgICAgZW51bSBSZXN1bHQgeyBFcXVhbCA9IDAsIEdyZWF0ZXIgPSAxLCBM
ZXNzID0gLTEgfTsKIAotICAgICAgICBDb2xsYXRvcihjb25zdCBjaGFyKiBsb2NhbGUpOyAvLyBQ
YXJzaW5nIGlzIGxlbmllbnQ7IGUuZy4gbGFuZ3VhZ2UgaWRlbnRpZmllcnMgKHN1Y2ggYXMgImVu
LVVTIikgYXJlIGFjY2VwdGVkLCB0b28uCi0gICAgICAgIH5Db2xsYXRvcigpOwotICAgICAgICB2
b2lkIHNldE9yZGVyTG93ZXJGaXJzdChib29sKTsKKyAgICAgICAgV1RGX0VYUE9SVF9QUklWQVRF
IENvbGxhdG9yKGNvbnN0IGNoYXIqIGxvY2FsZSk7IC8vIFBhcnNpbmcgaXMgbGVuaWVudDsgZS5n
LiBsYW5ndWFnZSBpZGVudGlmaWVycyAoc3VjaCBhcyAiZW4tVVMiKSBhcmUgYWNjZXB0ZWQsIHRv
by4KKyAgICAgICAgV1RGX0VYUE9SVF9QUklWQVRFIH5Db2xsYXRvcigpOworICAgICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRPcmRlckxvd2VyRmlyc3QoYm9vbCk7CiAKICAgICAgICAg
c3RhdGljIFBhc3NPd25QdHI8Q29sbGF0b3I+IHVzZXJEZWZhdWx0KCk7CiAKLSAgICAgICAgUmVz
dWx0IGNvbGxhdGUoY29uc3QgOjpVQ2hhciosIHNpemVfdCwgY29uc3QgOjpVQ2hhciosIHNpemVf
dCkgY29uc3Q7CisgICAgICAgIFdURl9FWFBPUlRfUFJJVkFURSBSZXN1bHQgY29sbGF0ZShjb25z
dCA6OlVDaGFyKiwgc2l6ZV90LCBjb25zdCA6OlVDaGFyKiwgc2l6ZV90KSBjb25zdDsKIAogICAg
IHByaXZhdGU6CiAjaWYgVVNFKElDVV9VTklDT0RFKSAmJiAhVUNPTkZJR19OT19DT0xMQVRJT04K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdW5pY29kZS9VVEY4LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi91bmljb2RlL1VURjguaAkocmV2aXNpb24g
OTA3NDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUvVVRGOC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC02MiwxMSArNjIsMTEgQEAKICAgICAvLyB0byB0aGUgcmVwbGFjZW1lbnQg
Y2hhcmFjdGVyOyBvdGhlcndpc2UgKHdoZW4gdGhlIGZsYWcgaXMgc2V0IHRvIHN0cmljdCkKICAg
ICAvLyB0aGV5IGNvbnN0aXR1dGUgYW4gZXJyb3IuCiAKLSAgICBDb252ZXJzaW9uUmVzdWx0IGNv
bnZlcnRVVEY4VG9VVEYxNigKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgQ29udmVyc2lvblJlc3Vs
dCBjb252ZXJ0VVRGOFRvVVRGMTYoCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqKiBz
b3VyY2VTdGFydCwgY29uc3QgY2hhciogc291cmNlRW5kLCAKICAgICAgICAgICAgICAgICAgICAg
VUNoYXIqKiB0YXJnZXRTdGFydCwgVUNoYXIqIHRhcmdldEVuZCwgYm9vbCBzdHJpY3QgPSB0cnVl
KTsKIAotICAgIENvbnZlcnNpb25SZXN1bHQgY29udmVydFVURjE2VG9VVEY4KAorICAgIFdURl9F
WFBPUlRfUFJJVkFURSBDb252ZXJzaW9uUmVzdWx0IGNvbnZlcnRVVEYxNlRvVVRGOCgKICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgVUNoYXIqKiBzb3VyY2VTdGFydCwgY29uc3QgVUNoYXIqIHNv
dXJjZUVuZCwgCiAgICAgICAgICAgICAgICAgICAgIGNoYXIqKiB0YXJnZXRTdGFydCwgY2hhciog
dGFyZ2V0RW5kLCBib29sIHN0cmljdCA9IHRydWUpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL0N1cnJlbnRUaW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3d0Zi9DdXJyZW50VGltZS5oCShyZXZpc2lvbiA5MDc0NikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvQ3VycmVudFRpbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBA
QAogLy8gUmV0dXJucyB0aGUgY3VycmVudCBVVEMgdGltZSBpbiBzZWNvbmRzLCBjb3VudGVkIGZy
b20gSmFudWFyeSAxLCAxOTcwLgogLy8gUHJlY2lzaW9uIHZhcmllcyBkZXBlbmRpbmcgb24gcGxh
dGZvcm0gYnV0IGlzIHVzdWFsbHkgYXMgZ29vZCBvciBiZXR0ZXIKIC8vIHRoYW4gYSBtaWxsaXNl
Y29uZC4KLWRvdWJsZSBjdXJyZW50VGltZSgpOworV1RGX0VYUE9SVF9QUklWQVRFIGRvdWJsZSBj
dXJyZW50VGltZSgpOwogCiAvLyBTYW1lIHRoaW5nLCBpbiBtaWxsaXNlY29uZHMuCiBpbmxpbmUg
ZG91YmxlIGN1cnJlbnRUaW1lTVMoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9E
ZWNpbWFsTnVtYmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9E
ZWNpbWFsTnVtYmVyLmgJKHJldmlzaW9uIDkwNzQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi9EZWNpbWFsTnVtYmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTgxLDExICs4MSwxMSBAQAog
ICAgICAgICBBU1NFUlQobV9zaWduaWZpY2FuZFswXSAhPSAnMCcgfHwgIW1fZXhwb25lbnQpOwog
ICAgIH0KIAotICAgIHVuc2lnbmVkIGJ1ZmZlckxlbmd0aEZvclN0cmluZ0RlY2ltYWwoKSBjb25z
dDsKLSAgICB1bnNpZ25lZCBidWZmZXJMZW5ndGhGb3JTdHJpbmdFeHBvbmVudGlhbCgpIGNvbnN0
OworICAgIFdURl9FWFBPUlRfUFJJVkFURSB1bnNpZ25lZCBidWZmZXJMZW5ndGhGb3JTdHJpbmdE
ZWNpbWFsKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHVuc2lnbmVkIGJ1ZmZlckxl
bmd0aEZvclN0cmluZ0V4cG9uZW50aWFsKCkgY29uc3Q7CiAKLSAgICB1bnNpZ25lZCB0b1N0cmlu
Z0RlY2ltYWwoVUNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgYnVmZmVyTGVuZ3RoKSBjb25zdDsKLSAg
ICB1bnNpZ25lZCB0b1N0cmluZ0V4cG9uZW50aWFsKFVDaGFyKiBidWZmZXIsIHVuc2lnbmVkIGJ1
ZmZlckxlbmd0aCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHVuc2lnbmVkIHRvU3Ry
aW5nRGVjaW1hbChVQ2hhciogYnVmZmVyLCB1bnNpZ25lZCBidWZmZXJMZW5ndGgpIGNvbnN0Owor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSB1bnNpZ25lZCB0b1N0cmluZ0V4cG9uZW50aWFsKFVDaGFy
KiBidWZmZXIsIHVuc2lnbmVkIGJ1ZmZlckxlbmd0aCkgY29uc3Q7CiAKICAgICBib29sIHNpZ24o
KSBjb25zdCB7IHJldHVybiBtX3NpZ247IH0KICAgICBpbnQgZXhwb25lbnQoKSBjb25zdCB7IHJl
dHVybiBtX2V4cG9uZW50OyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL01ENS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvTUQ1LmgJKHJldmlzaW9u
IDkwNzQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9NRDUuaAkod29ya2luZyBjb3B5
KQpAQCAtMzUsNyArMzUsNyBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotY2xhc3MgTUQ1IHsKK2Ns
YXNzIEpTX0VYUE9SVF9QUklWQVRFIE1ENSB7CiBwdWJsaWM6CiAgICAgTUQ1KCk7CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvZHRvYS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvZHRvYS5oCShyZXZpc2lvbiA5MDc0NikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvZHRvYS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxOCArMzAsMTggQEAK
IAogLy8gczAwOiBpbnB1dCBzdHJpbmcuIE11c3Qgbm90IGJlIDAgYW5kIG11c3QgYmUgdGVybWlu
YXRlZCBieSAwLgogLy8gc2U6ICpzZSB3aWxsIGhhdmUgdGhlIGxhc3QgY29uc3VtZWQgY2hhcmFj
dGVyIHBvc2l0aW9uICsgMS4KLWRvdWJsZSBzdHJ0b2QoY29uc3QgY2hhciogczAwLCBjaGFyKiog
c2UpOworV1RGX0VYUE9SVF9QUklWQVRFIGRvdWJsZSBzdHJ0b2QoY29uc3QgY2hhciogczAwLCBj
aGFyKiogc2UpOwogCiB0eXBlZGVmIGNoYXIgRHRvYUJ1ZmZlcls4MF07CiAKLXZvaWQgZHRvYShE
dG9hQnVmZmVyIHJlc3VsdCwgZG91YmxlIGRkLCBib29sJiBzaWduLCBpbnQmIGV4cG9uZW50LCB1
bnNpZ25lZCYgcHJlY2lzaW9uKTsKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIGR0b2EoRHRvYUJ1
ZmZlciByZXN1bHQsIGRvdWJsZSBkZCwgYm9vbCYgc2lnbiwgaW50JiBleHBvbmVudCwgdW5zaWdu
ZWQmIHByZWNpc2lvbik7CiB2b2lkIGR0b2FSb3VuZFNGKER0b2FCdWZmZXIgcmVzdWx0LCBkb3Vi
bGUgZGQsIGludCBuZGlnaXRzLCBib29sJiBzaWduLCBpbnQmIGV4cG9uZW50LCB1bnNpZ25lZCYg
cHJlY2lzaW9uKTsKIHZvaWQgZHRvYVJvdW5kRFAoRHRvYUJ1ZmZlciByZXN1bHQsIGRvdWJsZSBk
ZCwgaW50IG5kaWdpdHMsIGJvb2wmIHNpZ24sIGludCYgZXhwb25lbnQsIHVuc2lnbmVkJiBwcmVj
aXNpb24pOwogCiAvLyBTaXplID0gODAgZm9yIHNpemVvZihEdG9hQnVmZmVyKSArIHNvbWUgc2ln
biBiaXRzLCBkZWNpbWFsIHBvaW50LCAnZScsIGV4cG9uZW50IGRpZ2l0cy4KIGNvbnN0IHVuc2ln
bmVkIE51bWJlclRvU3RyaW5nQnVmZmVyTGVuZ3RoID0gOTY7CiB0eXBlZGVmIFVDaGFyIE51bWJl
clRvU3RyaW5nQnVmZmVyW051bWJlclRvU3RyaW5nQnVmZmVyTGVuZ3RoXTsKLXVuc2lnbmVkIG51
bWJlclRvU3RyaW5nKGRvdWJsZSwgTnVtYmVyVG9TdHJpbmdCdWZmZXIpOworV1RGX0VYUE9SVF9Q
UklWQVRFIHVuc2lnbmVkIG51bWJlclRvU3RyaW5nKGRvdWJsZSwgTnVtYmVyVG9TdHJpbmdCdWZm
ZXIpOwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaAkocmV2
aXNpb24gOTA3NDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0NyeXB0b2dyYXBoaWNh
bGx5UmFuZG9tTnVtYmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKIAogI2lm
IFVTRShPU19SQU5ET01ORVNTKQogdWludDMyX3QgY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1i
ZXIoKTsKLXZvaWQgY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21WYWx1ZXModm9pZCogYnVmZmVyLCBz
aXplX3QgbGVuZ3RoKTsKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIGNyeXB0b2dyYXBoaWNhbGx5
UmFuZG9tVmFsdWVzKHZvaWQqIGJ1ZmZlciwgc2l6ZV90IGxlbmd0aCk7CiAjZW5kaWYKIAogfQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVz
LmgJKHJldmlzaW9uIDkwNzQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRp
bmdQcmltaXRpdmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMCwxMiArMTAwLDEyIEBACiBjbGFz
cyBNdXRleCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTXV0ZXgpOyBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBNdXRleCgpOwotICAgIH5NdXRleCgpOworICAgIEpT
X0VYUE9SVF9QUklWQVRFIE11dGV4KCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgfk11dGV4KCk7
CiAKLSAgICB2b2lkIGxvY2soKTsKLSAgICBib29sIHRyeUxvY2soKTsKLSAgICB2b2lkIHVubG9j
aygpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgbG9jaygpOworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIGJvb2wgdHJ5TG9jaygpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgdW5sb2Nr
KCk7CiAKIHB1YmxpYzoKICAgICBQbGF0Zm9ybU11dGV4JiBpbXBsKCkgeyByZXR1cm4gbV9tdXRl
eDsgfQpAQCAtMTM2LDE1ICsxMzYsMTUgQEAKIGNsYXNzIFRocmVhZENvbmRpdGlvbiB7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoVGhyZWFkQ29uZGl0aW9uKTsKIHB1YmxpYzoKLSAgICBUaHJl
YWRDb25kaXRpb24oKTsKLSAgICB+VGhyZWFkQ29uZGl0aW9uKCk7CisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgVGhyZWFkQ29uZGl0aW9uKCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgflRocmVhZENv
bmRpdGlvbigpOwogICAgIAotICAgIHZvaWQgd2FpdChNdXRleCYgbXV0ZXgpOworICAgIEpTX0VY
UE9SVF9QUklWQVRFIHZvaWQgd2FpdChNdXRleCYpOwogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0
aGUgY29uZGl0aW9uIHdhcyBzaWduYWxlZCBiZWZvcmUgYWJzb2x1dGVUaW1lLCBmYWxzZSBpZiB0
aGUgYWJzb2x1dGVUaW1lIHdhcyByZWFjaGVkIG9yIGlzIGluIHRoZSBwYXN0LgogICAgIC8vIFRo
ZSBhYnNvbHV0ZVRpbWUgaXMgaW4gc2Vjb25kcywgc3RhcnRpbmcgb24gSmFudWFyeSAxLCAxOTcw
LiBUaGUgdGltZSBpcyBhc3N1bWVkIHRvIHVzZSB0aGUgc2FtZSB0aW1lIHpvbmUgYXMgV1RGOjpj
dXJyZW50VGltZSgpLgotICAgIGJvb2wgdGltZWRXYWl0KE11dGV4JiwgZG91YmxlIGFic29sdXRl
VGltZSk7Ci0gICAgdm9pZCBzaWduYWwoKTsKLSAgICB2b2lkIGJyb2FkY2FzdCgpOworICAgIEpT
X0VYUE9SVF9QUklWQVRFIGJvb2wgdGltZWRXYWl0KE11dGV4JiwgZG91YmxlIGFic29sdXRlVGlt
ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzaWduYWwoKTsKKyAgICBKU19FWFBPUlRf
UFJJVkFURSB2b2lkIGJyb2FkY2FzdCgpOwogICAgIAogcHJpdmF0ZToKICAgICBQbGF0Zm9ybUNv
bmRpdGlvbiBtX2NvbmRpdGlvbjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUmFu
ZG9tTnVtYmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9SYW5k
b21OdW1iZXIuaAkocmV2aXNpb24gOTA3NDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L1JhbmRvbU51bWJlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAKICAgICAv
LyBSZXR1cm5zIGEgcHNldWRvLXJhbmRvbSBudW1iZXIgaW4gdGhlIHJhbmdlIFswLCAxKSwgYXR0
ZW1wdHMgdG8gYmUKICAgICAvLyBjcnlwdG9ncmFwaGljYWxseSBzZWN1cmUgaWYgcG9zc2libGUg
b24gdGhlIHRhcmdldCBwbGF0Zm9ybQotICAgIGRvdWJsZSByYW5kb21OdW1iZXIoKTsKKyAgICBK
U19FWFBPUlRfUFJJVkFURSBkb3VibGUgcmFuZG9tTnVtYmVyKCk7CiAKIH0KIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9BdG9taWNTdHJpbmcuaAkocmV2aXNpb24g
OTA3NDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvQXRvbWljU3RyaW5nLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM4LDI3ICszOCwzMSBAQAogCiBjbGFzcyBBdG9taWNTdHJpbmcg
ewogcHVibGljOgotICAgIHN0YXRpYyB2b2lkIGluaXQoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIHZvaWQgaW5pdCgpOwogCi0gICAgQXRvbWljU3RyaW5nKCkgeyB9Ci0gICAgQXRv
bWljU3RyaW5nKGNvbnN0IGNoYXIqIHMpIDogbV9zdHJpbmcoYWRkKHMpKSB7IH0KKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgQXRvbWljU3RyaW5nKCkgeyB9CisgICAgLy8gY29weSBjb25zdHJ1Y3Rv
ciBuZWVkcyB0byBiZSBleHBsaWNpdGx5IGRlZmluZWQgc28gd2UgY2FuIHNwZWNpZnkgcHJvcGVy
IGRsbCBsaW5rYWdlCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIEF0b21pY1N0cmluZyhjb25zdCBB
dG9taWNTdHJpbmcmIHMpIDogbV9zdHJpbmcocy5tX3N0cmluZykgeyB9CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIEF0b21pY1N0cmluZyhjb25zdCBjaGFyKiBzKSA6IG1fc3RyaW5nKGFkZChzKSkg
eyB9CiAgICAgQXRvbWljU3RyaW5nKGNvbnN0IFVDaGFyKiBzLCB1bnNpZ25lZCBsZW5ndGgpIDog
bV9zdHJpbmcoYWRkKHMsIGxlbmd0aCkpIHsgfQogICAgIEF0b21pY1N0cmluZyhjb25zdCBVQ2hh
ciogcywgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBleGlzdGluZ0hhc2gpIDogbV9zdHJpbmco
YWRkKHMsIGxlbmd0aCwgZXhpc3RpbmdIYXNoKSkgeyB9CiAgICAgQXRvbWljU3RyaW5nKGNvbnN0
IFVDaGFyKiBzKSA6IG1fc3RyaW5nKGFkZChzKSkgeyB9CiAgICAgQVRPTUlDU1RSSU5HX0NPTlZF
UlNJT04gQXRvbWljU3RyaW5nKFN0cmluZ0ltcGwqIGltcCkgOiBtX3N0cmluZyhhZGQoaW1wKSkg
eyB9CiAgICAgQXRvbWljU3RyaW5nKEF0b21pY1N0cmluZ0ltcGwqIGltcCkgOiBtX3N0cmluZyhp
bXApIHsgfQotICAgIEFUT01JQ1NUUklOR19DT05WRVJTSU9OIEF0b21pY1N0cmluZyhjb25zdCBT
dHJpbmcmIHMpIDogbV9zdHJpbmcoYWRkKHMuaW1wbCgpKSkgeyB9CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIEFUT01JQ1NUUklOR19DT05WRVJTSU9OIEF0b21pY1N0cmluZyhjb25zdCBTdHJpbmcm
IHMpIDogbV9zdHJpbmcoYWRkKHMuaW1wbCgpKSkgeyB9CiAKICAgICAvLyBIYXNoIHRhYmxlIGRl
bGV0ZWQgdmFsdWVzLCB3aGljaCBhcmUgb25seSBjb25zdHJ1Y3RlZCBhbmQgbmV2ZXIgY29waWVk
IG9yIGRlc3Ryb3llZC4KLSAgICBBdG9taWNTdHJpbmcoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFs
dWVUeXBlKSA6IG1fc3RyaW5nKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKSB7IH0KLSAgICBi
b29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuaXNI
YXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQorICAgIFdURl9FWFBPUlRfUFJJVkFURSBBdG9taWNT
dHJpbmcoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKSA6IG1fc3RyaW5nKFdURjo6SGFz
aFRhYmxlRGVsZXRlZFZhbHVlKSB7IH0KKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0hh
c2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmlzSGFzaFRhYmxl
RGVsZXRlZFZhbHVlKCk7IH0KIAotICAgIHN0YXRpYyBBdG9taWNTdHJpbmdJbXBsKiBmaW5kKGNv
bnN0IFVDaGFyKiBzLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIGV4aXN0aW5nSGFzaCk7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIH5BdG9taWNTdHJpbmcoKSB7IH0KIAorICAgIFdURl9FWFBP
UlRfUFJJVkFURSBzdGF0aWMgQXRvbWljU3RyaW5nSW1wbCogZmluZChjb25zdCBVQ2hhciosIHVu
c2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgZXhpc3RpbmdIYXNoKTsKKwogICAgIG9wZXJhdG9yIGNv
bnN0IFN0cmluZyYoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfQogICAgIGNvbnN0IFN0cmlu
ZyYgc3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH07CiAKLSAgICBBdG9taWNTdHJp
bmdJbXBsKiBpbXBsKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXRvbWljU3RyaW5nSW1w
bCAqPihtX3N0cmluZy5pbXBsKCkpOyB9CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIEF0b21pY1N0
cmluZ0ltcGwqIGltcGwoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxBdG9taWNTdHJpbmdJ
bXBsICo+KG1fc3RyaW5nLmltcGwoKSk7IH0KICAgICAKICAgICBjb25zdCBVQ2hhciogY2hhcmFj
dGVycygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmNoYXJhY3RlcnMoKTsgfQogICAgIHVuc2ln
bmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmxlbmd0aCgpOyB9CkBAIC04Miw3
ICs4Niw3IEBACiAgICAgYm9vbCBlbmRzV2l0aChjb25zdCBTdHJpbmcmIHMsIGJvb2wgY2FzZVNl
bnNpdGl2ZSA9IHRydWUpIGNvbnN0CiAgICAgICAgIHsgcmV0dXJuIG1fc3RyaW5nLmVuZHNXaXRo
KHMsIGNhc2VTZW5zaXRpdmUpOyB9CiAgICAgCi0gICAgQXRvbWljU3RyaW5nIGxvd2VyKCkgY29u
c3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIEF0b21pY1N0cmluZyBsb3dlcigpIGNvbnN0Owog
ICAgIEF0b21pY1N0cmluZyB1cHBlcigpIGNvbnN0IHsgcmV0dXJuIEF0b21pY1N0cmluZyhpbXBs
KCktPnVwcGVyKCkpOyB9CiAgICAgCiAgICAgaW50IHRvSW50KGJvb2wqIG9rID0gMCkgY29uc3Qg
eyByZXR1cm4gbV9zdHJpbmcudG9JbnQob2spOyB9CkBAIC0xMTAsOCArMTE0LDggQEAKIAogICAg
IC8vIEF0b21pY1N0cmluZzo6ZnJvbVVURjggd2lsbCByZXR1cm4gYSBudWxsIHN0cmluZyBpZgog
ICAgIC8vIHRoZSBpbnB1dCBkYXRhIGNvbnRhaW5zIGludmFsaWQgVVRGLTggc2VxdWVuY2VzLgot
ICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgZnJvbVVURjgoY29uc3QgY2hhciosIHNpemVfdCk7Ci0g
ICAgc3RhdGljIEF0b21pY1N0cmluZyBmcm9tVVRGOChjb25zdCBjaGFyKik7CisgICAgV1RGX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBBdG9taWNTdHJpbmcgZnJvbVVURjgoY29uc3QgY2hhciosIHNp
emVfdCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBBdG9taWNTdHJpbmcgZnJvbVVU
RjgoY29uc3QgY2hhciopOwogCiAjaWZuZGVmIE5ERUJVRwogICAgIHZvaWQgc2hvdygpIGNvbnN0
OwpAQCAtMTE5LDggKzEyMyw4IEBACiBwcml2YXRlOgogICAgIFN0cmluZyBtX3N0cmluZzsKICAg
ICAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGQoY29uc3QgY2hhciopOwot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChjb25zdCBVQ2hhciosIHVuc2ln
bmVkIGxlbmd0aCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPFN0
cmluZ0ltcGw+IGFkZChjb25zdCBjaGFyKik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0
aCk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRkKGNvbnN0IFVDaGFyKiwg
dW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBleGlzdGluZ0hhc2gpOwogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFN0cmluZ0ltcGw+IGFkZChjb25zdCBVQ2hhciopOwogICAgIEFMV0FZU19JTkxJTkUg
UGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGQoU3RyaW5nSW1wbCogcikKQEAgLTEyOSwxMyArMTMz
LDEzIEBACiAgICAgICAgICAgICByZXR1cm4gcjsKICAgICAgICAgcmV0dXJuIGFkZFNsb3dDYXNl
KHIpOwogICAgIH0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGRTbG93Q2Fz
ZShTdHJpbmdJbXBsKik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBmcm9tVVRGOEludGVybmFs
KGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZFNsb3dDYXNlKFN0cmluZ0ltcGwqKTsKKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEF0b21pY1N0cmluZyBmcm9tVVRGOEludGVybmFsKGNv
bnN0IGNoYXIqLCBjb25zdCBjaGFyKik7CiB9OwogCiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IEF0b21pY1N0cmluZyYgYSwgY29uc3QgQXRvbWljU3RyaW5nJiBiKSB7IHJldHVybiBhLmlt
cGwoKSA9PSBiLmltcGwoKTsgfQotYm9vbCBvcGVyYXRvcj09KGNvbnN0IEF0b21pY1N0cmluZyYg
YSwgY29uc3QgY2hhciogYik7Ci1ib29sIG9wZXJhdG9yPT0oY29uc3QgQXRvbWljU3RyaW5nJiBh
LCBjb25zdCBWZWN0b3I8VUNoYXI+JiBiKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIG9wZXJh
dG9yPT0oY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgY2hhciogYik7CitXVEZfRVhQT1JUX1BS
SVZBVEUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IFZlY3RvcjxV
Q2hhcj4mIGIpOwogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBdG9taWNTdHJpbmcmIGEs
IGNvbnN0IFN0cmluZyYgYikgeyByZXR1cm4gZXF1YWwoYS5pbXBsKCksIGIuaW1wbCgpKTsgfQog
aW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBjaGFyKiBhLCBjb25zdCBBdG9taWNTdHJpbmcm
IGIpIHsgcmV0dXJuIGIgPT0gYTsgfQogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHJp
bmcmIGEsIGNvbnN0IEF0b21pY1N0cmluZyYgYikgeyByZXR1cm4gZXF1YWwoYS5pbXBsKCksIGIu
aW1wbCgpKTsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L0NTdHJpbmcu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvQ1N0cmluZy5o
CShyZXZpc2lvbiA5MDc0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9DU3Ry
aW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgQ1N0cmluZ19o
CiAjZGVmaW5lIENTdHJpbmdfaAogCisjaW5jbHVkZSAiSlNCYXNlLmgiCiAjaW5jbHVkZSAiUGFz
c1JlZlB0ci5oIgogI2luY2x1ZGUgIlJlZkNvdW50ZWQuaCIKICNpbmNsdWRlICJWZWN0b3IuaCIK
QEAgLTUyLDEwICs1MywxMCBAQAogY2xhc3MgQ1N0cmluZyB7CiBwdWJsaWM6CiAgICAgQ1N0cmlu
ZygpIHsgfQotICAgIENTdHJpbmcoY29uc3QgY2hhciopOwotICAgIENTdHJpbmcoY29uc3QgY2hh
ciosIHNpemVfdCBsZW5ndGgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBDU3RyaW5nKGNvbnN0
IGNoYXIqKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgQ1N0cmluZyhjb25zdCBjaGFyKiwgc2l6
ZV90IGxlbmd0aCk7CiAgICAgQ1N0cmluZyhDU3RyaW5nQnVmZmVyKiBidWZmZXIpIDogbV9idWZm
ZXIoYnVmZmVyKSB7IH0KLSAgICBzdGF0aWMgQ1N0cmluZyBuZXdVbmluaXRpYWxpemVkKHNpemVf
dCBsZW5ndGgsIGNoYXIqJiBjaGFyYWN0ZXJCdWZmZXIpOworICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgQ1N0cmluZyBuZXdVbmluaXRpYWxpemVkKHNpemVfdCBsZW5ndGgsIGNoYXIqJiBj
aGFyYWN0ZXJCdWZmZXIpOwogCiAgICAgY29uc3QgY2hhciogZGF0YSgpIGNvbnN0CiAgICAgewpA
QCAtNzcsNyArNzgsNyBAQAogICAgIFJlZlB0cjxDU3RyaW5nQnVmZmVyPiBtX2J1ZmZlcjsKIH07
CiAKLWJvb2wgb3BlcmF0b3I9PShjb25zdCBDU3RyaW5nJiBhLCBjb25zdCBDU3RyaW5nJiBiKTsK
K1dURl9FWFBPUlRfUFJJVkFURSBib29sIG9wZXJhdG9yPT0oY29uc3QgQ1N0cmluZyYgYSwgY29u
c3QgQ1N0cmluZyYgYik7CiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENTdHJpbmcmIGEs
IGNvbnN0IENTdHJpbmcmIGIpIHsgcmV0dXJuICEoYSA9PSBiKTsgfQogCiB9IC8vIG5hbWVzcGFj
ZSBXVEYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdCdWlsZGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaAkocmV2aXNpb24gOTA3NDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw4ICszOCw4IEBACiAgICAg
ewogICAgIH0KIAotICAgIHZvaWQgYXBwZW5kKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQpOwotICAg
IHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCk7CisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHZvaWQgYXBwZW5kKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQpOworICAgIFdURl9FWFBPUlRf
UFJJVkFURSB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiwgdW5zaWduZWQpOwogCiAgICAgdm9pZCBh
cHBlbmQoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgewpAQCAtOTksMTEgKzk5LDExIEBACiAK
ICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbGVuZ3RoKCk7IH0KIAotICAgIHZv
aWQgcmVzZXJ2ZUNhcGFjaXR5KHVuc2lnbmVkIG5ld0NhcGFjaXR5KTsKKyAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgdm9pZCByZXNlcnZlQ2FwYWNpdHkodW5zaWduZWQgbmV3Q2FwYWNpdHkpOwogCi0g
ICAgdm9pZCByZXNpemUodW5zaWduZWQgbmV3U2l6ZSk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IHZvaWQgcmVzaXplKHVuc2lnbmVkIG5ld1NpemUpOwogCi0gICAgdm9pZCBzaHJpbmtUb0ZpdCgp
OworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNocmlua1RvRml0KCk7CiAKICAgICBVQ2hh
ciBvcGVyYXRvcltdKHVuc2lnbmVkIGkpIGNvbnN0CiAgICAgewpAQCAtMTI0LDcgKzEyNCw3IEBA
CiBwcml2YXRlOgogICAgIHZvaWQgYWxsb2NhdGVCdWZmZXIoY29uc3QgVUNoYXIqIGN1cnJlbnRD
aGFyYWN0ZXJzLCB1bnNpZ25lZCByZXF1aXJlZExlbmd0aCk7CiAgICAgVUNoYXIqIGFwcGVuZFVu
aW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKTsKLSAgICB2b2lkIHJlaWZ5U3RyaW5nKCk7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVpZnlTdHJpbmcoKTsKIAogICAgIHVuc2lnbmVk
IG1fbGVuZ3RoOwogICAgIFN0cmluZyBtX3N0cmluZzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAkocmV2aXNpb24gOTA3NDYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDEsMTEgKzE0MSwxMSBAQAogICAgIH0KIAogcHVibGljOgotICAgIH5TdHJpbmdJbXBsKCk7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIH5TdHJpbmdJbXBsKCk7CiAKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxTdHJpbmdJbXBsPiBjcmVhdGUoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOwot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGNyZWF0ZShjb25zdCBjaGFyKiwgdW5z
aWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBjcmVhdGUo
Y29uc3QgY2hhciopOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxT
dHJpbmdJbXBsPiBjcmVhdGUoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBjcmVhdGUoY29u
c3QgY2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGNyZWF0ZShjb25zdCBjaGFyKik7CiAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gY3JlYXRlKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVu
Z3RoLCBQYXNzUmVmUHRyPFNoYXJlZFVDaGFyPiBzaGFyZWRCdWZmZXIpOwogICAgIHN0YXRpYyBB
TFdBWVNfSU5MSU5FIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gY3JlYXRlKFBhc3NSZWZQdHI8U3Ry
aW5nSW1wbD4gcmVwLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKICAgICB7CkBA
IC0xNTksNyArMTU5LDcgQEAKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdHJpbmdJbXBs
KHJlcC0+bV9kYXRhICsgb2Zmc2V0LCBsZW5ndGgsIG93bmVyUmVwKSk7CiAgICAgfQogCi0gICAg
c3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25l
ZCBsZW5ndGgsIFVDaGFyKiYgZGF0YSk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQ
YXNzUmVmUHRyPFN0cmluZ0ltcGw+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3Ro
LCBVQ2hhciomIGRhdGEpOwogICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIFBhc3NSZWZQdHI8U3Ry
aW5nSW1wbD4gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgsIFVDaGFyKiYg
b3V0cHV0KQogICAgIHsKICAgICAgICAgaWYgKCFsZW5ndGgpIHsKQEAgLTE5NSwxMCArMTk1LDEw
IEBACiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGVtcHR5KCk7CiAgICAgfQotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkb3B0KFN0cmluZ0J1ZmZlciYpOworICAgIFdURl9F
WFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZG9wdChTdHJpbmdC
dWZmZXImKTsKIAogICAgIFNoYXJlZFVDaGFyKiBzaGFyZWRCdWZmZXIoKTsKLSAgICBjb25zdCBV
Q2hhciogY2hhcmFjdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQorICAgIFdURl9FWFBP
UlRfUFJJVkFURSBjb25zdCBVQ2hhciogY2hhcmFjdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fZGF0
YTsgfQogCiAgICAgc2l6ZV90IGNvc3QoKQogICAgIHsKQEAgLTI0MSw3ICsyNDEsNyBAQAogICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBkZXJlZigpIHsgbV9yZWZDb3VudEFuZEZsYWdzIC09IHNfcmVm
Q291bnRJbmNyZW1lbnQ7IGlmICghKG1fcmVmQ291bnRBbmRGbGFncyAmIChzX3JlZkNvdW50TWFz
ayB8IHNfcmVmQ291bnRGbGFnU3RhdGljKSkpIGRlbGV0ZSB0aGlzOyB9CiAgICAgQUxXQVlTX0lO
TElORSBib29sIGhhc09uZVJlZigpIGNvbnN0IHsgcmV0dXJuIChtX3JlZkNvdW50QW5kRmxhZ3Mg
JiAoc19yZWZDb3VudE1hc2sgfCBzX3JlZkNvdW50RmxhZ1N0YXRpYykpID09IHNfcmVmQ291bnRJ
bmNyZW1lbnQ7IH0KIAotICAgIHN0YXRpYyBTdHJpbmdJbXBsKiBlbXB0eSgpOworICAgIFdURl9F
WFBPUlRfUFJJVkFURSBzdGF0aWMgU3RyaW5nSW1wbCogZW1wdHkoKTsKIAogICAgIHN0YXRpYyB2
b2lkIGNvcHlDaGFycyhVQ2hhciogZGVzdGluYXRpb24sIGNvbnN0IFVDaGFyKiBzb3VyY2UsIHVu
c2lnbmVkIG51bUNoYXJhY3RlcnMpCiAgICAgewpAQCAtMjU5LDEyICsyNTksMTIgQEAKICAgICAv
LyBTaW5jZSBTdHJpbmdJbXBsIG9iamVjdHMgYXJlIGltbXV0YWJsZSwgdGhlcmUncyBubyBvdGhl
ciByZWFzb24gdG8gbWFrZSBhIGNvcHkuCiAgICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiB0aHJl
YWRzYWZlQ29weSgpIGNvbnN0OwogCi0gICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBzdWJzdHJp
bmcodW5zaWduZWQgcG9zLCB1bnNpZ25lZCBsZW4gPSBVSU5UX01BWCk7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gc3Vic3RyaW5nKHVuc2lnbmVkIHBvcywg
dW5zaWduZWQgbGVuID0gVUlOVF9NQVgpOwogCiAgICAgVUNoYXIgb3BlcmF0b3JbXSh1bnNpZ25l
ZCBpKSB7IEFTU0VSVChpIDwgbV9sZW5ndGgpOyByZXR1cm4gbV9kYXRhW2ldOyB9CiAgICAgVUNo
YXIzMiBjaGFyYWN0ZXJTdGFydGluZ0F0KHVuc2lnbmVkKTsKIAotICAgIGJvb2wgY29udGFpbnNP
bmx5V2hpdGVzcGFjZSgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGNvbnRhaW5zT25s
eVdoaXRlc3BhY2UoKTsKIAogICAgIGludCB0b0ludFN0cmljdChib29sKiBvayA9IDAsIGludCBi
YXNlID0gMTApOwogICAgIHVuc2lnbmVkIHRvVUludFN0cmljdChib29sKiBvayA9IDAsIGludCBi
YXNlID0gMTApOwpAQCAtMjcyLDcgKzI3Miw3IEBACiAgICAgdWludDY0X3QgdG9VSW50NjRTdHJp
Y3QoYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKTsKICAgICBpbnRwdHJfdCB0b0ludFB0clN0
cmljdChib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApOwogCi0gICAgaW50IHRvSW50KGJvb2wq
IG9rID0gMCk7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQorICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBpbnQgdG9JbnQoYm9vbCogb2sgPSAwKTsgLy8gaWdub3JlcyB0cmFpbGluZyBnYXJiYWdl
CiAgICAgdW5zaWduZWQgdG9VSW50KGJvb2wqIG9rID0gMCk7IC8vIGlnbm9yZXMgdHJhaWxpbmcg
Z2FyYmFnZQogICAgIGludDY0X3QgdG9JbnQ2NChib29sKiBvayA9IDApOyAvLyBpZ25vcmVzIHRy
YWlsaW5nIGdhcmJhZ2UKICAgICB1aW50NjRfdCB0b1VJbnQ2NChib29sKiBvayA9IDApOyAvLyBp
Z25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKQEAgLTI4MSwzNyArMjgxLDM3IEBACiAgICAgZG91Ymxl
IHRvRG91YmxlKGJvb2wqIG9rID0gMCwgYm9vbCogZGlkUmVhZE51bWJlciA9IDApOwogICAgIGZs
b2F0IHRvRmxvYXQoYm9vbCogb2sgPSAwLCBib29sKiBkaWRSZWFkTnVtYmVyID0gMCk7CiAKLSAg
ICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGxvd2VyKCk7Ci0gICAgUGFzc1JlZlB0cjxTdHJpbmdJ
bXBsPiB1cHBlcigpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBQYXNzUmVmUHRyPFN0cmluZ0lt
cGw+IGxvd2VyKCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8U3RyaW5nSW1w
bD4gdXBwZXIoKTsKIAotICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gZmlsbChVQ2hhcik7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gZmlsbChVQ2hhcik7
CiAgICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBmb2xkQ2FzZSgpOwogCiAgICAgUGFzc1JlZlB0
cjxTdHJpbmdJbXBsPiBzdHJpcFdoaXRlU3BhY2UoKTsKLSAgICBQYXNzUmVmUHRyPFN0cmluZ0lt
cGw+IHNpbXBsaWZ5V2hpdGVTcGFjZSgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBQYXNzUmVm
UHRyPFN0cmluZ0ltcGw+IHNpbXBsaWZ5V2hpdGVTcGFjZSgpOwogCiAgICAgUGFzc1JlZlB0cjxT
dHJpbmdJbXBsPiByZW1vdmVDaGFyYWN0ZXJzKENoYXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIpOwog
Ci0gICAgc2l6ZV90IGZpbmQoVUNoYXIsIHVuc2lnbmVkIGluZGV4ID0gMCk7Ci0gICAgc2l6ZV90
IGZpbmQoQ2hhcmFjdGVyTWF0Y2hGdW5jdGlvblB0ciwgdW5zaWduZWQgaW5kZXggPSAwKTsKLSAg
ICBzaXplX3QgZmluZChjb25zdCBjaGFyKiwgdW5zaWduZWQgaW5kZXggPSAwKTsKLSAgICBzaXpl
X3QgZmluZChTdHJpbmdJbXBsKiwgdW5zaWduZWQgaW5kZXggPSAwKTsKLSAgICBzaXplX3QgZmlu
ZElnbm9yaW5nQ2FzZShjb25zdCBjaGFyKiwgdW5zaWduZWQgaW5kZXggPSAwKTsKLSAgICBzaXpl
X3QgZmluZElnbm9yaW5nQ2FzZShTdHJpbmdJbXBsKiwgdW5zaWduZWQgaW5kZXggPSAwKTsKKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZpbmQoVUNoYXIsIHVuc2lnbmVkIGluZGV4ID0g
MCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCBmaW5kKENoYXJhY3Rlck1hdGNoRnVu
Y3Rpb25QdHIsIHVuc2lnbmVkIGluZGV4ID0gMCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNp
emVfdCBmaW5kKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCBpbmRleCA9IDApOworICAgIFdURl9FWFBP
UlRfUFJJVkFURSBzaXplX3QgZmluZChTdHJpbmdJbXBsKiwgdW5zaWduZWQgaW5kZXggPSAwKTsK
KyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZpbmRJZ25vcmluZ0Nhc2UoY29uc3QgY2hh
ciosIHVuc2lnbmVkIGluZGV4ID0gMCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCBm
aW5kSWdub3JpbmdDYXNlKFN0cmluZ0ltcGwqLCB1bnNpZ25lZCBpbmRleCA9IDApOwogCi0gICAg
c2l6ZV90IHJldmVyc2VGaW5kKFVDaGFyLCB1bnNpZ25lZCBpbmRleCA9IFVJTlRfTUFYKTsKLSAg
ICBzaXplX3QgcmV2ZXJzZUZpbmQoU3RyaW5nSW1wbCosIHVuc2lnbmVkIGluZGV4ID0gVUlOVF9N
QVgpOwotICAgIHNpemVfdCByZXZlcnNlRmluZElnbm9yaW5nQ2FzZShTdHJpbmdJbXBsKiwgdW5z
aWduZWQgaW5kZXggPSBVSU5UX01BWCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCBy
ZXZlcnNlRmluZChVQ2hhciwgdW5zaWduZWQgaW5kZXggPSBVSU5UX01BWCk7CisgICAgV1RGX0VY
UE9SVF9QUklWQVRFIHNpemVfdCByZXZlcnNlRmluZChTdHJpbmdJbXBsKiwgdW5zaWduZWQgaW5k
ZXggPSBVSU5UX01BWCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCByZXZlcnNlRmlu
ZElnbm9yaW5nQ2FzZShTdHJpbmdJbXBsKiwgdW5zaWduZWQgaW5kZXggPSBVSU5UX01BWCk7CiAK
ICAgICBib29sIHN0YXJ0c1dpdGgoU3RyaW5nSW1wbCogc3RyLCBib29sIGNhc2VTZW5zaXRpdmUg
PSB0cnVlKSB7IHJldHVybiAoY2FzZVNlbnNpdGl2ZSA/IHJldmVyc2VGaW5kKHN0ciwgMCkgOiBy
ZXZlcnNlRmluZElnbm9yaW5nQ2FzZShzdHIsIDApKSA9PSAwOyB9Ci0gICAgYm9vbCBlbmRzV2l0
aChTdHJpbmdJbXBsKiwgYm9vbCBjYXNlU2Vuc2l0aXZlID0gdHJ1ZSk7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIGJvb2wgZW5kc1dpdGgoU3RyaW5nSW1wbCosIGJvb2wgY2FzZVNlbnNpdGl2ZSA9
IHRydWUpOwogCi0gICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXBsYWNlKFVDaGFyLCBVQ2hh
cik7Ci0gICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXBsYWNlKFVDaGFyLCBTdHJpbmdJbXBs
Kik7Ci0gICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXBsYWNlKFN0cmluZ0ltcGwqLCBTdHJp
bmdJbXBsKik7Ci0gICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXBsYWNlKHVuc2lnbmVkIGlu
ZGV4LCB1bnNpZ25lZCBsZW4sIFN0cmluZ0ltcGwqKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
UGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXBsYWNlKFVDaGFyLCBVQ2hhcik7CisgICAgV1RGX0VY
UE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwbGFjZShVQ2hhciwgU3RyaW5n
SW1wbCopOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJl
cGxhY2UoU3RyaW5nSW1wbCosIFN0cmluZ0ltcGwqKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
UGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXBsYWNlKHVuc2lnbmVkIGluZGV4LCB1bnNpZ25lZCBs
ZW4sIFN0cmluZ0ltcGwqKTsKIAotICAgIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIGRlZmF1bHRX
cml0aW5nRGlyZWN0aW9uKGJvb2wqIGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5ID0gMCk7CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIGRlZmF1bHRXcml0aW5n
RGlyZWN0aW9uKGJvb2wqIGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5ID0gMCk7CiAKICNpZiBVU0Uo
Q0YpCiAgICAgQ0ZTdHJpbmdSZWYgY3JlYXRlQ0ZTdHJpbmcoKTsKQEAgLTMyNCw3ICszMjQsNyBA
QAogICAgIC8vIFRoaXMgbnVtYmVyIG11c3QgYmUgYXQgbGVhc3QgMiB0byBhdm9pZCBzaGFyaW5n
IGVtcHR5LCBudWxsIGFzIHdlbGwgYXMgMSBjaGFyYWN0ZXIgc3RyaW5ncyBmcm9tIFNtYWxsU3Ry
aW5ncy4KICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19jb3B5Q2hhcnNJbmxpbmVDdXRPZmYg
PSAyMDsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGNyZWF0ZVN0cmlwcGlu
Z051bGxDaGFyYWN0ZXJzU2xvd0Nhc2UoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOwor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBjcmVh
dGVTdHJpcHBpbmdOdWxsQ2hhcmFjdGVyc1Nsb3dDYXNlKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQg
bGVuZ3RoKTsKICAgICAKICAgICBCdWZmZXJPd25lcnNoaXAgYnVmZmVyT3duZXJzaGlwKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QnVmZmVyT3duZXJzaGlwPihtX3JlZkNvdW50QW5kRmxh
Z3MgJiBzX3JlZkNvdW50TWFza0J1ZmZlck93bmVyc2hpcCk7IH0KICAgICBib29sIGlzU3RhdGlj
KCkgY29uc3QgeyByZXR1cm4gbV9yZWZDb3VudEFuZEZsYWdzICYgc19yZWZDb3VudEZsYWdTdGF0
aWM7IH0KQEAgLTMzNywxNyArMzM3LDE3IEBACiAgICAgbXV0YWJsZSB1bnNpZ25lZCBtX2hhc2g7
CiB9OwogCi1ib29sIGVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqLCBjb25zdCBTdHJpbmdJbXBsKik7
Ci1ib29sIGVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqLCBjb25zdCBjaGFyKik7CitXVEZfRVhQT1JU
X1BSSVZBVEUgYm9vbCBlcXVhbChjb25zdCBTdHJpbmdJbXBsKiwgY29uc3QgU3RyaW5nSW1wbCop
OworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZXF1YWwoY29uc3QgU3RyaW5nSW1wbCosIGNvbnN0
IGNoYXIqKTsKIGlubGluZSBib29sIGVxdWFsKGNvbnN0IGNoYXIqIGEsIFN0cmluZ0ltcGwqIGIp
IHsgcmV0dXJuIGVxdWFsKGIsIGEpOyB9CiAKLWJvb2wgZXF1YWxJZ25vcmluZ0Nhc2UoU3RyaW5n
SW1wbCosIFN0cmluZ0ltcGwqKTsKLWJvb2wgZXF1YWxJZ25vcmluZ0Nhc2UoU3RyaW5nSW1wbCos
IGNvbnN0IGNoYXIqKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGVxdWFsSWdub3JpbmdDYXNl
KFN0cmluZ0ltcGwqLCBTdHJpbmdJbXBsKik7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBlcXVh
bElnbm9yaW5nQ2FzZShTdHJpbmdJbXBsKiwgY29uc3QgY2hhciopOwogaW5saW5lIGJvb2wgZXF1
YWxJZ25vcmluZ0Nhc2UoY29uc3QgY2hhciogYSwgU3RyaW5nSW1wbCogYikgeyByZXR1cm4gZXF1
YWxJZ25vcmluZ0Nhc2UoYiwgYSk7IH0KLWJvb2wgZXF1YWxJZ25vcmluZ0Nhc2UoY29uc3QgVUNo
YXIqIGEsIGNvbnN0IGNoYXIqIGIsIHVuc2lnbmVkIGxlbmd0aCk7CitXVEZfRVhQT1JUX1BSSVZB
VEUgYm9vbCBlcXVhbElnbm9yaW5nQ2FzZShjb25zdCBVQ2hhciosIGNvbnN0IGNoYXIqIGIsIHVu
c2lnbmVkIGxlbmd0aCk7CiBpbmxpbmUgYm9vbCBlcXVhbElnbm9yaW5nQ2FzZShjb25zdCBjaGFy
KiBhLCBjb25zdCBVQ2hhciogYiwgdW5zaWduZWQgbGVuZ3RoKSB7IHJldHVybiBlcXVhbElnbm9y
aW5nQ2FzZShiLCBhLCBsZW5ndGgpOyB9CiAKLWJvb2wgZXF1YWxJZ25vcmluZ051bGxpdHkoU3Ry
aW5nSW1wbCosIFN0cmluZ0ltcGwqKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGVxdWFsSWdu
b3JpbmdOdWxsaXR5KFN0cmluZ0ltcGwqLCBTdHJpbmdJbXBsKik7CiAKIHRlbXBsYXRlPHNpemVf
dCBpbmxpbmVDYXBhY2l0eT4KIGJvb2wgZXF1YWxJZ25vcmluZ051bGxpdHkoY29uc3QgVmVjdG9y
PFVDaGFyLCBpbmxpbmVDYXBhY2l0eT4mIGEsIFN0cmluZ0ltcGwqIGIpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL0J5dGVBcnJheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvQnl0ZUFycmF5LmgJKHJldmlzaW9uIDkwNzQ2KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi9CeXRlQXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtODAsNyArODAs
NyBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8Qnl0ZUFycmF5PiBjcmVhdGUoc2l6ZV90IHNpemUpOworICAgICAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgUGFzc1JlZlB0cjxCeXRlQXJyYXk+IGNyZWF0ZShzaXplX3QpOwogCiAgICAg
cHJpdmF0ZToKICAgICAgICAgQnl0ZUFycmF5KHNpemVfdCBzaXplKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5oCShyZXZpc2lvbiA5MDc0NikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5
OCw3ICsyOTgsNyBAQAogfTsKIAogc3RydWN0IFlhcnJQYXR0ZXJuIHsKLSAgICBZYXJyUGF0dGVy
bihjb25zdCBVU3RyaW5nJiBwYXR0ZXJuLCBib29sIGlnbm9yZUNhc2UsIGJvb2wgbXVsdGlsaW5l
LCBjb25zdCBjaGFyKiogZXJyb3IpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIFlhcnJQYXR0ZXJu
KGNvbnN0IFVTdHJpbmcmIHBhdHRlcm4sIGJvb2wgaWdub3JlQ2FzZSwgYm9vbCBtdWx0aWxpbmUs
IGNvbnN0IGNoYXIqKiBlcnJvcik7CiAKICAgICB+WWFyclBhdHRlcm4oKQogICAgIHsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUveWFyci9ZYXJyLmgJKHJldmlzaW9uIDkwNzQ2KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3lhcnIvWWFyci5oCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw4ICs1Nyw4IEBA
CiAgICAgSlNSZWdFeHBFcnJvckludGVybmFsID0gLTQKIH07CiAKLVBhc3NPd25QdHI8Qnl0ZWNv
ZGVQYXR0ZXJuPiBieXRlQ29tcGlsZShZYXJyUGF0dGVybiYsIEJ1bXBQb2ludGVyQWxsb2NhdG9y
Kik7Ci1pbnQgaW50ZXJwcmV0KEJ5dGVjb2RlUGF0dGVybiosIGNvbnN0IFVDaGFyKiBpbnB1dCwg
dW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgaW50KiBvdXRwdXQpOworSlNfRVhQT1JU
X1BSSVZBVEUgUGFzc093blB0cjxCeXRlY29kZVBhdHRlcm4+IGJ5dGVDb21waWxlKFlhcnJQYXR0
ZXJuJiwgQnVtcFBvaW50ZXJBbGxvY2F0b3IqKTsKK0pTX0VYUE9SVF9QUklWQVRFIGludCBpbnRl
cnByZXQoQnl0ZWNvZGVQYXR0ZXJuKiwgY29uc3QgVUNoYXIqIGlucHV0LCB1bnNpZ25lZCBzdGFy
dCwgdW5zaWduZWQgbGVuZ3RoLCBpbnQqIG91dHB1dCk7CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlND
OjpZYXJyCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZUhlYXAuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGVIZWFwLmgJKHJl
dmlzaW9uIDkwNzQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlSGVhcC5o
CSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBACiBjbGFzcyBKU1ZhbHVlOwogY2xhc3Mg
U2xvdFZpc2l0b3I7CiAKLWNsYXNzIFdlYWtIYW5kbGVPd25lciB7CitjbGFzcyBKU19FWFBPUlRf
UFJJVkFURSBXZWFrSGFuZGxlT3duZXIgewogcHVibGljOgogICAgIHZpcnR1YWwgfldlYWtIYW5k
bGVPd25lcigpOwogICAgIHZpcnR1YWwgYm9vbCBpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhI
YW5kbGU8VW5rbm93bj4sIHZvaWQqIGNvbnRleHQsIFNsb3RWaXNpdG9yJik7CkBAIC02NSw3ICs2
NSw3IEBACiAgICAgdm9pZCB2aXNpdFdlYWtIYW5kbGVzKEhlYXBSb290VmlzaXRvciYpOwogICAg
IHZvaWQgZmluYWxpemVXZWFrSGFuZGxlcygpOwogCi0gICAgdm9pZCB3cml0ZUJhcnJpZXIoSGFu
ZGxlU2xvdCwgY29uc3QgSlNWYWx1ZSYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgd3Jp
dGVCYXJyaWVyKEhhbmRsZVNsb3QsIGNvbnN0IEpTVmFsdWUmKTsKIAogI2lmICFBU1NFUlRfRElT
QUJMRUQKICAgICBib29sIGhhc1dlYWtPd25lcihIYW5kbGVTbG90LCBXZWFrSGFuZGxlT3duZXIq
KTsKQEAgLTExMSw3ICsxMTEsNyBAQAogICAgIHN0YXRpYyBIYW5kbGVTbG90IHRvSGFuZGxlKE5v
ZGUqKTsKICAgICBzdGF0aWMgTm9kZSogdG9Ob2RlKEhhbmRsZVNsb3QpOwogCi0gICAgdm9pZCBn
cm93KCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBncm93KCk7CiAgICAgCiAjaWYgIUFT
U0VSVF9ESVNBQkxFRAogICAgIGJvb2wgaXNWYWxpZFdlYWtOb2RlKE5vZGUqKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHJldmlzaW9uIDkwNzQ2KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MywzNCArNjMsMzQgQEAK
ICAgICAgICAgc3RhdGljIGJvb2wgdGVzdEFuZENsZWFyTWFya2VkKGNvbnN0IHZvaWQqKTsKICAg
ICAgICAgc3RhdGljIHZvaWQgc2V0TWFya2VkKGNvbnN0IHZvaWQqKTsKIAotICAgICAgICBzdGF0
aWMgdm9pZCB3cml0ZUJhcnJpZXIoY29uc3QgSlNDZWxsKiwgSlNWYWx1ZSk7CisgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHdyaXRlQmFycmllcihjb25zdCBKU0NlbGwqLCBK
U1ZhbHVlKTsKICAgICAgICAgc3RhdGljIHZvaWQgd3JpdGVCYXJyaWVyKGNvbnN0IEpTQ2VsbCos
IEpTQ2VsbCopOwogCiAgICAgICAgIEhlYXAoSlNHbG9iYWxEYXRhKik7CiAgICAgICAgIH5IZWFw
KCk7Ci0gICAgICAgIHZvaWQgZGVzdHJveSgpOyAvLyBKU0dsb2JhbERhdGEgbXVzdCBjYWxsIGRl
c3Ryb3koKSBiZWZvcmUgfkhlYXAoKS4KKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBk
ZXN0cm95KCk7IC8vIEpTR2xvYmFsRGF0YSBtdXN0IGNhbGwgZGVzdHJveSgpIGJlZm9yZSB+SGVh
cCgpLgogCiAgICAgICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSgpIGNvbnN0IHsgcmV0dXJu
IG1fZ2xvYmFsRGF0YTsgfQogICAgICAgICBOZXdTcGFjZSYgbWFya2VkU3BhY2UoKSB7IHJldHVy
biBtX25ld1NwYWNlOyB9CiAgICAgICAgIE1hY2hpbmVUaHJlYWRzJiBtYWNoaW5lVGhyZWFkcygp
IHsgcmV0dXJuIG1fbWFjaGluZVRocmVhZHM7IH0KIAotICAgICAgICBHQ0FjdGl2aXR5Q2FsbGJh
Y2sqIGFjdGl2aXR5Q2FsbGJhY2soKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgR0NBY3Rp
dml0eUNhbGxiYWNrKiBhY3Rpdml0eUNhbGxiYWNrKCk7CiAgICAgICAgIHZvaWQgc2V0QWN0aXZp
dHlDYWxsYmFjayhQYXNzT3duUHRyPEdDQWN0aXZpdHlDYWxsYmFjaz4pOwogCiAgICAgICAgIC8v
IHRydWUgaWYgYW4gYWxsb2NhdGlvbiBvciBjb2xsZWN0aW9uIGlzIGluIHByb2dyZXNzCiAgICAg
ICAgIGlubGluZSBib29sIGlzQnVzeSgpOwogCiAgICAgICAgIHZvaWQqIGFsbG9jYXRlKHNpemVf
dCk7Ci0gICAgICAgIHZvaWQqIGFsbG9jYXRlKE5ld1NwYWNlOjpTaXplQ2xhc3MmKTsKLSAgICAg
ICAgdm9pZCBjb2xsZWN0QWxsR2FyYmFnZSgpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2
b2lkKiBhbGxvY2F0ZShOZXdTcGFjZTo6U2l6ZUNsYXNzJik7CisgICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHZvaWQgY29sbGVjdEFsbEdhcmJhZ2UoKTsKIAogICAgICAgICB2b2lkIHJlcG9ydEV4
dHJhTWVtb3J5Q29zdChzaXplX3QgY29zdCk7CiAKLSAgICAgICAgdm9pZCBwcm90ZWN0KEpTVmFs
dWUpOwotICAgICAgICBib29sIHVucHJvdGVjdChKU1ZhbHVlKTsgLy8gVHJ1ZSB3aGVuIHRoZSBw
cm90ZWN0IGNvdW50IGRyb3BzIHRvIDAuCisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQg
cHJvdGVjdChKU1ZhbHVlKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCB1bnByb3Rl
Y3QoSlNWYWx1ZSk7IC8vIFRydWUgd2hlbiB0aGUgcHJvdGVjdCBjb3VudCBkcm9wcyB0byAwLgog
Ci0gICAgICAgIHNpemVfdCBzaXplKCk7Ci0gICAgICAgIHNpemVfdCBjYXBhY2l0eSgpOworICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSBzaXplX3Qgc2l6ZSgpOworICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSBzaXplX3QgY2FwYWNpdHkoKTsKICAgICAgICAgc2l6ZV90IG9iamVjdENvdW50KCk7
CiAgICAgICAgIHNpemVfdCBnbG9iYWxPYmplY3RDb3VudCgpOwogICAgICAgICBzaXplX3QgcHJv
dGVjdGVkT2JqZWN0Q291bnQoKTsKQEAgLTEyMiw5ICsxMjIsOSBAQAogICAgICAgICBzdGF0aWMg
Y29uc3Qgc2l6ZV90IG1pbkV4dHJhQ29zdCA9IDI1NjsKICAgICAgICAgc3RhdGljIGNvbnN0IHNp
emVfdCBtYXhFeHRyYUNvc3QgPSAxMDI0ICogMTAyNDsKIAotICAgICAgICBib29sIGlzVmFsaWRB
bGxvY2F0aW9uKHNpemVfdCk7Ci0gICAgICAgIHZvaWQqIGFsbG9jYXRlU2xvd0Nhc2Uoc2l6ZV90
KTsKLSAgICAgICAgdm9pZCByZXBvcnRFeHRyYU1lbW9yeUNvc3RTbG93Q2FzZShzaXplX3QpOwor
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGlzVmFsaWRBbGxvY2F0aW9uKHNpemVfdCk7
CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQqIGFsbG9jYXRlU2xvd0Nhc2Uoc2l6ZV90
KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCByZXBvcnRFeHRyYU1lbW9yeUNvc3RT
bG93Q2FzZShzaXplX3QpOwogICAgICAgICB2b2lkIHJlc2V0QWxsb2NhdG9yKCk7CiAKICAgICAg
ICAgTWFya2VkQmxvY2sqIGFsbG9jYXRlQmxvY2soc2l6ZV90IGNlbGxTaXplKTsK
</data>
<flag name="commit-queue"
          id="94984"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100437</attachid>
            <date>2011-07-11 21:49:42 -0700</date>
            <delta_ts>2011-07-12 09:35:59 -0700</delta_ts>
            <desc>Fix macro defines for WebKitTestRunner by including config.h</desc>
            <filename>wrt_config_h.patch</filename>
            <type>text/plain</type>
            <size>1238</size>
            <attacher name="Kevin Ollivier">kevino</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQ29k
ZUdlbmVyYXRvclRlc3RSdW5uZXIucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9Db2RlR2VuZXJhdG9yVGVzdFJ1bm5lci5wbQko
cmV2aXNpb24gOTA3NDYpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0JpbmRpbmdzL0NvZGVHZW5lcmF0b3JUZXN0UnVubmVyLnBtCSh3b3JraW5nIGNvcHkpCkBAIC0x
ODksNiArMTg5LDcgQEAKICAgICBteSAkY2xhc3NSZWZHZXR0ZXIgPSAkc2VsZi0+X2NsYXNzUmVm
R2V0dGVyKCRpZGxUeXBlKTsKICAgICBteSAkcGFyZW50Q2xhc3NOYW1lID0gX3BhcmVudENsYXNz
TmFtZSgkaW50ZXJmYWNlKTsKIAorICAgICRjb250ZW50c0luY2x1ZGVzeyJjb25maWcuaCJ9ID0g
MTsKICAgICAkY29udGVudHNJbmNsdWRlc3siJHtjbGFzc05hbWV9LmgifSA9IDE7CiAgICAgJGNv
bnRlbnRzSW5jbHVkZXN7IiR7aW1wbGVtZW50YXRpb25DbGFzc05hbWV9LmgifSA9IDE7CiAKSW5k
ZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlz
aW9uIDkwODA2KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTMgQEAKKzIwMTEtMDctMTEgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5j
b20+CisKKyAgICAgICAgTWFrZSBzdXJlIGdlbmVyYXRlZCBmaWxlcyBpbmNsdWRlIGNvbmZpZy5o
IGZvciBtYWNybyBkZWZpbml0aW9ucy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTI3NTUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdz
L0NvZGVHZW5lcmF0b3JUZXN0UnVubmVyLnBtOgorICAgICAgICAoX2dlbmVyYXRlSW1wbGVtZW50
YXRpb25GaWxlKToKKwogMjAxMS0wNy0xMSAgSGlyb25vcmkgQm9ubyAgPGhib25vQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIFJvYmVuLgo=
</data>
<flag name="commit-queue"
          id="95102"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100500</attachid>
            <date>2011-07-12 09:35:59 -0700</date>
            <delta_ts>2011-08-10 16:39:27 -0700</delta_ts>
            <desc>New fix for WebKitTestRunner generated files that makes sure config.h is always the first header included.</desc>
            <filename>wktr_config_h.patch</filename>
            <type>text/plain</type>
            <size>1227</size>
            <attacher name="Kevin Ollivier">kevino</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQ29k
ZUdlbmVyYXRvclRlc3RSdW5uZXIucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9Db2RlR2VuZXJhdG9yVGVzdFJ1bm5lci5wbQko
cmV2aXNpb24gOTA3NDYpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0JpbmRpbmdzL0NvZGVHZW5lcmF0b3JUZXN0UnVubmVyLnBtCSh3b3JraW5nIGNvcHkpCkBAIC0z
MjgsNiArMzI4LDcgQEAKIEVPRgogCiAgICAgdW5zaGlmdChAY29udGVudHMsIG1hcCB7ICIjaW5j
bHVkZSBcIiRfXCJcbiIgfSBzb3J0IGtleXMoJWNvbnRlbnRzSW5jbHVkZXMpKTsKKyAgICB1bnNo
aWZ0KEBjb250ZW50cywgIiNpbmNsdWRlIFwiY29uZmlnLmhcIlxuIik7CiAgICAgdW5zaGlmdChA
Y29udGVudHMsIEBjb250ZW50c1ByZWZpeCk7CiAKICAgICByZXR1cm4geyBuYW1lID0+ICRmaWxl
bmFtZSwgY29udGVudHMgPT4gXEBjb250ZW50cyB9OwpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gOTA4MjEpCisrKyBUb29scy9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMiBAQAorMjAxMS0wNy0xMiAgS2V2
aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KKworICAgICAgICBNYWtlIHN1
cmUgY29uZmlnLmggaXMgaW5jbHVkZWQgYXMgdGhlIHRvcCBoZWFkZXIgaW4gV2ViS2l0VGVzdFJ1
bm5lciBnZW5lcmF0ZWQgZmlsZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yNzU1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9D
b2RlR2VuZXJhdG9yVGVzdFJ1bm5lci5wbToKKwogMjAxMS0wNy0xMSAgQWRhbSBSb2JlbiAgPGFy
b2JlbkBhcHBsZS5jb20+CiAKICAgICAgICAgRXh0cmFjdCBUZXN0RmFpbHVyZXMncyBidWctZmls
aW5nIGNvZGUgaW50byB0d28gbmV3IGNsYXNzZXMK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103555</attachid>
            <date>2011-08-10 16:39:42 -0700</date>
            <delta_ts>2012-08-01 15:59:53 -0700</delta_ts>
            <desc>Updated complete symbols and config.h fix patch.</desc>
            <filename>bug-27551-20110810163941.patch</filename>
            <type>text/plain</type>
            <size>92213</size>
            <attacher name="Kevin Ollivier">kevino</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTI4MDEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsODcgQEAK
KzIwMTEtMDgtMTAgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CisK
KyAgICAgICAgTWFrZSBpdCBwb3NzaWJsZSB0byBidWlsZCBKYXZhU2NyaXB0Q29yZSBhcyBzaGFy
ZWQgbGlicmFyeSB3aXRob3V0IHN5bWJvbCBsaXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc1NTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIGhlYXAvSGFuZGxlSGVhcC5oOgorICAgICAgICAqIGhl
YXAvSGVhcC5oOgorICAgICAgICAqIHJ1bnRpbWUvQXJnTGlzdC5oOgorICAgICAgICAqIHJ1bnRp
bWUvQ2FsbERhdGEuaDoKKyAgICAgICAgKiBydW50aW1lL0NvbXBsZXRpb24uaDoKKyAgICAgICAg
KiBydW50aW1lL0NvbnN0cnVjdERhdGEuaDoKKyAgICAgICAgKiBydW50aW1lL0Vycm9yLmg6Cisg
ICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmg6CisgICAgICAgICogcnVudGltZS9G
dW5jdGlvbkNvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9JZGVudGlmaWVyLmg6Cisg
ICAgICAgIChKU0M6OklkZW50aWZpZXI6OnRvVUludDMyKToKKyAgICAgICAgKEpTQzo6SWRlbnRp
Zmllcjo6ZXF1YWwpOgorICAgICAgICAqIHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5oOgor
ICAgICAgICAqIHJ1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUv
SlNBcnJheS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNCeXRlQXJyYXkuaDoKKyAgICAgICAgKiBy
dW50aW1lL0pTQ2VsbC5oOgorICAgICAgICAoSlNDOjpKU0NlbGw6OkpTQ2VsbDo6dnB0cik6Cisg
ICAgICAgIChKU0M6OkpTQ2VsbDo6SlNDZWxsOjpzZXRWUHRyKToKKyAgICAgICAgKEpTQzo6SlND
ZWxsOjpKU1ZhbHVlOjppc1N0cmluZyk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6
CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbERhdGEuaDoKKyAgICAgICAgKiBydW50aW1lL0pT
R2xvYmFsT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU0xvY2suaDoKKyAgICAgICAgKiBy
dW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU09iamVjdFdpdGhHbG9iYWxP
YmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0OjpnbG9iYWxP
YmplY3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNWYWx1ZS5oOgorICAgICAgICAqIHJ1bnRpbWUv
SlNWYXJpYWJsZU9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNXcmFwcGVyT2JqZWN0Lmg6
CisgICAgICAgICogcnVudGltZS9Mb29rdXAuaDoKKyAgICAgICAgKiBydW50aW1lL09iamVjdFBy
b3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmg6CisgICAg
ICAgICogcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oOgorICAgICAgICAoSlNDOjpQcm9wZXJ0
eU5hbWVBcnJheTo6YWRkKToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5U2xvdC5oOgorICAg
ICAgICAqIHJ1bnRpbWUvUmVnRXhwLmg6CisgICAgICAgICogcnVudGltZS9Sb3BlSW1wbC5oOgor
ICAgICAgICAqIHJ1bnRpbWUvU2NvcGVDaGFpbi5oOgorICAgICAgICAqIHJ1bnRpbWUvU21hbGxT
dHJpbmdzLmg6CisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuaDoKKyAgICAgICAgKiBy
dW50aW1lL1N0cnVjdHVyZS5oOgorICAgICAgICAqIHJ1bnRpbWUvVGltZW91dENoZWNrZXIuaDoK
KyAgICAgICAgKiBydW50aW1lL1VTdHJpbmcuaDoKKyAgICAgICAgKEpTQzo6VVN0cmluZzo6VVN0
cmluZyk6CisgICAgICAgICogcnVudGltZS9Xcml0ZUJhcnJpZXIuaDoKKyAgICAgICAgKiB3dGYv
Qnl0ZUFycmF5Lmg6CisgICAgICAgICogd3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVy
Lmg6CisgICAgICAgICogd3RmL0N1cnJlbnRUaW1lLmg6CisgICAgICAgICogd3RmL0RhdGVNYXRo
Lmg6CisgICAgICAgICogd3RmL0RlY2ltYWxOdW1iZXIuaDoKKyAgICAgICAgKiB3dGYvRmFzdE1h
bGxvYy5oOgorICAgICAgICAqIHd0Zi9NRDUuaDoKKyAgICAgICAgKiB3dGYvTWFpblRocmVhZC5o
OgorICAgICAgICAqIHd0Zi9OdWxsUHRyLmg6CisgICAgICAgICogd3RmL09TQWxsb2NhdG9yLmg6
CisgICAgICAgICogd3RmL1JhbmRvbU51bWJlci5oOgorICAgICAgICAqIHd0Zi9SZWZDb3VudGVk
TGVha0NvdW50ZXIuaDoKKyAgICAgICAgKiB3dGYvVGhyZWFkU3BlY2lmaWMuaDoKKyAgICAgICAg
KiB3dGYvVGhyZWFkaW5nLmg6CisgICAgICAgICogd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaDoK
KyAgICAgICAgKiB3dGYvV1RGVGhyZWFkRGF0YS5oOgorICAgICAgICAqIHd0Zi9kdG9hLmg6Cisg
ICAgICAgICogd3RmL3RleHQvQXRvbWljU3RyaW5nLmg6CisgICAgICAgIChXVEY6OkF0b21pY1N0
cmluZzo6QXRvbWljU3RyaW5nKToKKyAgICAgICAgKFdURjo6QXRvbWljU3RyaW5nOjppc0hhc2hU
YWJsZURlbGV0ZWRWYWx1ZSk6CisgICAgICAgIChXVEY6OkF0b21pY1N0cmluZzo6fkF0b21pY1N0
cmluZyk6CisgICAgICAgIChXVEY6OkF0b21pY1N0cmluZzo6aW1wbCk6CisgICAgICAgICogd3Rm
L3RleHQvQ1N0cmluZy5oOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaDoKKyAg
ICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmg6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6
OmNoYXJhY3RlcnMpOgorICAgICAgICAqIHd0Zi91bmljb2RlL0NvbGxhdG9yLmg6CisgICAgICAg
ICogd3RmL3VuaWNvZGUvVVRGOC5oOgorICAgICAgICAqIHlhcnIvWWFyci5oOgorICAgICAgICAq
IHlhcnIvWWFyclBhdHRlcm4uaDoKKwogMjAxMS0wOC0xMCAgTWFyayBIYWhuZW5iZXJnICA8bWhh
aG5lbmJlcmdAYXBwbGUuY29tPgogCiAgICAgICAgIEpTQyBzaG91bGQgYWx3YXlzIHRocm93IHdo
ZW4gZnVuY3Rpb24gYXJnIGxpc3QgaXMgdG9vIGxvbmcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hhbmRsZUhlYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IYW5kbGVIZWFwLmgJKHJldmlzaW9uIDkyNzk5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGFuZGxlSGVhcC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBA
IGNsYXNzIEpTR2xvYmFsRGF0YTsKIGNsYXNzIEpTVmFsdWU7CiBjbGFzcyBTbG90VmlzaXRvcjsK
IAotY2xhc3MgV2Vha0hhbmRsZU93bmVyIHsKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRFIFdlYWtI
YW5kbGVPd25lciB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2Vha0hhbmRsZU93bmVyKCk7CiAg
ICAgdmlydHVhbCBib29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEhhbmRsZTxVbmtub3du
Piwgdm9pZCogY29udGV4dCwgU2xvdFZpc2l0b3ImKTsKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgdmlzaXRXZWFrSGFuZGxlcyhIZWFwUm9vdFZpc2l0b3ImKTsKICAgICB2b2lk
IGZpbmFsaXplV2Vha0hhbmRsZXMoKTsKIAotICAgIHZvaWQgd3JpdGVCYXJyaWVyKEhhbmRsZVNs
b3QsIGNvbnN0IEpTVmFsdWUmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHdyaXRlQmFy
cmllcihIYW5kbGVTbG90LCBjb25zdCBKU1ZhbHVlJik7CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVE
CiAgICAgYm9vbCBoYXNXZWFrT3duZXIoSGFuZGxlU2xvdCwgV2Vha0hhbmRsZU93bmVyKik7CkBA
IC0xMTEsNyArMTExLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgSGFuZGxlU2xvdCB0b0hhbmRs
ZShOb2RlKik7CiAgICAgc3RhdGljIE5vZGUqIHRvTm9kZShIYW5kbGVTbG90KTsKIAotICAgIHZv
aWQgZ3JvdygpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZ3JvdygpOwogICAgIAogI2lm
IEVOQUJMRShHQ19WQUxJREFUSU9OKSB8fCAhQVNTRVJUX0RJU0FCTEVECiAgICAgYm9vbCBpc1Zh
bGlkV2Vha05vZGUoTm9kZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2
aXNpb24gOTI3OTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtp
bmcgY29weSkKQEAgLTY3LDE4ICs2NywxOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3Rh
dGljIGJvb2wgdGVzdEFuZENsZWFyTWFya2VkKGNvbnN0IHZvaWQqKTsKICAgICAgICAgc3RhdGlj
IHZvaWQgc2V0TWFya2VkKGNvbnN0IHZvaWQqKTsKIAotICAgICAgICBzdGF0aWMgdm9pZCB3cml0
ZUJhcnJpZXIoY29uc3QgSlNDZWxsKiwgSlNWYWx1ZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyB2b2lkIHdyaXRlQmFycmllcihjb25zdCBKU0NlbGwqLCBKU1ZhbHVlKTsKICAg
ICAgICAgc3RhdGljIHZvaWQgd3JpdGVCYXJyaWVyKGNvbnN0IEpTQ2VsbCosIEpTQ2VsbCopOwog
CiAgICAgICAgIEhlYXAoSlNHbG9iYWxEYXRhKiwgSGVhcFNpemUpOwogICAgICAgICB+SGVhcCgp
OwotICAgICAgICB2b2lkIGRlc3Ryb3koKTsgLy8gSlNHbG9iYWxEYXRhIG11c3QgY2FsbCBkZXN0
cm95KCkgYmVmb3JlIH5IZWFwKCkuCisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZGVz
dHJveSgpOyAvLyBKU0dsb2JhbERhdGEgbXVzdCBjYWxsIGRlc3Ryb3koKSBiZWZvcmUgfkhlYXAo
KS4KIAogICAgICAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEoKSBjb25zdCB7IHJldHVybiBt
X2dsb2JhbERhdGE7IH0KICAgICAgICAgTmV3U3BhY2UmIG1hcmtlZFNwYWNlKCkgeyByZXR1cm4g
bV9uZXdTcGFjZTsgfQogICAgICAgICBNYWNoaW5lVGhyZWFkcyYgbWFjaGluZVRocmVhZHMoKSB7
IHJldHVybiBtX21hY2hpbmVUaHJlYWRzOyB9CiAKLSAgICAgICAgR0NBY3Rpdml0eUNhbGxiYWNr
KiBhY3Rpdml0eUNhbGxiYWNrKCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIEdDQWN0aXZp
dHlDYWxsYmFjayogYWN0aXZpdHlDYWxsYmFjaygpOwogICAgICAgICB2b2lkIHNldEFjdGl2aXR5
Q2FsbGJhY2soUGFzc093blB0cjxHQ0FjdGl2aXR5Q2FsbGJhY2s+KTsKIAogICAgICAgICAvLyB0
cnVlIGlmIGFuIGFsbG9jYXRpb24gb3IgY29sbGVjdGlvbiBpcyBpbiBwcm9ncmVzcwpAQCAtODYs
MTcgKzg2LDE3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQqIGFsbG9jYXRlKHNp
emVfdCk7CiAgICAgICAgIE5ld1NwYWNlOjpTaXplQ2xhc3MmIHNpemVDbGFzc0ZvcihzaXplX3Qp
OwotICAgICAgICB2b2lkKiBhbGxvY2F0ZShOZXdTcGFjZTo6U2l6ZUNsYXNzJik7CisgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHZvaWQqIGFsbG9jYXRlKE5ld1NwYWNlOjpTaXplQ2xhc3MmKTsK
ICAgICAgICAgdm9pZCBub3RpZnlJc1NhZmVUb0NvbGxlY3QoKSB7IG1faXNTYWZlVG9Db2xsZWN0
ID0gdHJ1ZTsgfQotICAgICAgICB2b2lkIGNvbGxlY3RBbGxHYXJiYWdlKCk7CisgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIHZvaWQgY29sbGVjdEFsbEdhcmJhZ2UoKTsKIAogICAgICAgICB2b2lk
IHJlcG9ydEV4dHJhTWVtb3J5Q29zdChzaXplX3QgY29zdCk7CiAKLSAgICAgICAgdm9pZCBwcm90
ZWN0KEpTVmFsdWUpOwotICAgICAgICBib29sIHVucHJvdGVjdChKU1ZhbHVlKTsgLy8gVHJ1ZSB3
aGVuIHRoZSBwcm90ZWN0IGNvdW50IGRyb3BzIHRvIDAuCisgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQgcHJvdGVjdChKU1ZhbHVlKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9v
bCB1bnByb3RlY3QoSlNWYWx1ZSk7IC8vIFRydWUgd2hlbiB0aGUgcHJvdGVjdCBjb3VudCBkcm9w
cyB0byAwLgogCi0gICAgICAgIHNpemVfdCBzaXplKCk7Ci0gICAgICAgIHNpemVfdCBjYXBhY2l0
eSgpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzaXplX3Qgc2l6ZSgpOworICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSBzaXplX3QgY2FwYWNpdHkoKTsKICAgICAgICAgc2l6ZV90IG9iamVj
dENvdW50KCk7CiAgICAgICAgIHNpemVfdCBnbG9iYWxPYmplY3RDb3VudCgpOwogICAgICAgICBz
aXplX3QgcHJvdGVjdGVkT2JqZWN0Q291bnQoKTsKQEAgLTEzMCw4ICsxMzAsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIGVudW0gQWxsb2NhdGlvbkVmZm9ydCB7IEFsbG9j
YXRpb25NdXN0U3VjY2VlZCwgQWxsb2NhdGlvbkNhbkZhaWwgfTsKIAotICAgICAgICBib29sIGlz
VmFsaWRBbGxvY2F0aW9uKHNpemVfdCk7Ci0gICAgICAgIHZvaWQgcmVwb3J0RXh0cmFNZW1vcnlD
b3N0U2xvd0Nhc2Uoc2l6ZV90KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc1Zh
bGlkQWxsb2NhdGlvbihzaXplX3QpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHJl
cG9ydEV4dHJhTWVtb3J5Q29zdFNsb3dDYXNlKHNpemVfdCk7CiAgICAgICAgIHZvaWQgY2Fub25p
Y2FsaXplQmxvY2tzKCk7CiAgICAgICAgIHZvaWQgcmVzZXRBbGxvY2F0b3IoKTsKIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuaAkocmV2aXNpb24gOTI3OTkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTE0MSw3ICsxNDEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIHZvaWQg
bWFya0xpc3RzKEhlYXBSb290VmlzaXRvciYsIExpc3RTZXQmKTsKIAogICAgIHByaXZhdGU6Ci0g
ICAgICAgIHZvaWQgc2xvd0FwcGVuZChKU1ZhbHVlKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgdm9pZCBzbG93QXBwZW5kKEpTVmFsdWUpOwogICAgICAgICAKICAgICAgICAgUmVnaXN0ZXIq
IG1fYnVmZmVyOwogICAgICAgICBzaXplX3QgbV9zaXplOwpAQCAtMjI3LDcgKzIyNyw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0
dXJuIG1fYXJnczsgfQogICAgICAgICBjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVy
biBtX2FyZ3MgKyBtX2FyZ0NvdW50OyB9CiAKLSAgICAgICAgdm9pZCBnZXRTbGljZShpbnQgc3Rh
cnRJbmRleCwgQXJnTGlzdCYgcmVzdWx0KSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgdm9pZCBnZXRTbGljZShpbnQgc3RhcnRJbmRleCwgQXJnTGlzdCYgcmVzdWx0KSBjb25zdDsK
ICAgICBwcml2YXRlOgogICAgICAgICBKU1ZhbHVlKiBtX2FyZ3M7CiAgICAgICAgIHNpemVfdCBt
X2FyZ0NvdW50OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FsbERhdGEu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWxsRGF0YS5o
CShyZXZpc2lvbiA5Mjc5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhbGxE
YXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDcgKzU3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIH0ganM7CiAgICAgfTsKIAotICAgIEpTVmFsdWUgY2FsbChFeGVjU3RhdGUqLCBKU1Zh
bHVlIGZ1bmN0aW9uT2JqZWN0LCBDYWxsVHlwZSwgY29uc3QgQ2FsbERhdGEmLCBKU1ZhbHVlIHRo
aXNWYWx1ZSwgY29uc3QgQXJnTGlzdCYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUg
Y2FsbChFeGVjU3RhdGUqLCBKU1ZhbHVlIGZ1bmN0aW9uT2JqZWN0LCBDYWxsVHlwZSwgY29uc3Qg
Q2FsbERhdGEmLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgQXJnTGlzdCYpOwogCiB9IC8vIG5h
bWVzcGFjZSBKU0MKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxl
dGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBs
ZXRpb24uaAkocmV2aXNpb24gOTI3OTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21wbGV0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDggKzU1LDggQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIEpTVmFsdWUgbV92YWx1ZTsKICAgICB9OwogCi0gICAgQ29tcGxldGlv
biBjaGVja1N5bnRheChFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2RlJik7Ci0gICAgQ29tcGxl
dGlvbiBldmFsdWF0ZShFeGVjU3RhdGUqLCBTY29wZUNoYWluTm9kZSosIGNvbnN0IFNvdXJjZUNv
ZGUmLCBKU1ZhbHVlIHRoaXNWYWx1ZSA9IEpTVmFsdWUoKSk7CisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgQ29tcGxldGlvbiBjaGVja1N5bnRheChFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2RlJik7
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgQ29tcGxldGlvbiBldmFsdWF0ZShFeGVjU3RhdGUqLCBT
Y29wZUNoYWluTm9kZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1ZhbHVlIHRoaXNWYWx1ZSA9IEpT
VmFsdWUoKSk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db25zdHJ1Y3REYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29uc3RydWN0RGF0YS5oCShyZXZpc2lvbiA5Mjc5OSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0cnVjdERhdGEuaAkod29ya2luZyBjb3B5
KQpAQCAtNTcsNyArNTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfSBqczsKICAgICB9
OwogCi0gICAgSlNPYmplY3QqIGNvbnN0cnVjdChFeGVjU3RhdGUqLCBKU1ZhbHVlIGNvbnN0cnVj
dG9yLCBDb25zdHJ1Y3RUeXBlLCBjb25zdCBDb25zdHJ1Y3REYXRhJiwgY29uc3QgQXJnTGlzdCYp
OworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBjb25zdHJ1Y3QoRXhlY1N0YXRlKiwg
SlNWYWx1ZSBjb25zdHJ1Y3RvciwgQ29uc3RydWN0VHlwZSwgY29uc3QgQ29uc3RydWN0RGF0YSYs
IGNvbnN0IEFyZ0xpc3QmKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaAkocmV2aXNpb24gOTI3OTkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSwxMiArNDUs
MTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgSlNPYmplY3QqIGNyZWF0ZVR5cGVFcnJvcihKU0ds
b2JhbE9iamVjdCosIGNvbnN0IFVTdHJpbmcmKTsKICAgICBKU09iamVjdCogY3JlYXRlVVJJRXJy
b3IoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBVU3RyaW5nJik7CiAgICAgLy8gRXhlY1N0YXRlIHdy
YXBwZXJzLgotICAgIEpTT2JqZWN0KiBjcmVhdGVFcnJvcihFeGVjU3RhdGUqLCBjb25zdCBVU3Ry
aW5nJik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIGNyZWF0ZUVycm9yKEV4ZWNT
dGF0ZSosIGNvbnN0IFVTdHJpbmcmKTsKICAgICBKU09iamVjdCogY3JlYXRlRXZhbEVycm9yKEV4
ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmKTsKLSAgICBKU09iamVjdCogY3JlYXRlUmFuZ2VFcnJv
cihFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJik7Ci0gICAgSlNPYmplY3QqIGNyZWF0ZVJlZmVy
ZW5jZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmKTsKLSAgICBKU09iamVjdCogY3Jl
YXRlU3ludGF4RXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYpOwotICAgIEpTT2JqZWN0
KiBjcmVhdGVUeXBlRXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYpOworICAgIEpTX0VY
UE9SVF9QUklWQVRFIEpTT2JqZWN0KiBjcmVhdGVSYW5nZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0
IFVTdHJpbmcmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogY3JlYXRlUmVmZXJl
bmNlRXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYpOworICAgIEpTX0VYUE9SVF9QUklW
QVRFIEpTT2JqZWN0KiBjcmVhdGVTeW50YXhFcnJvcihFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5n
Jik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIGNyZWF0ZVR5cGVFcnJvcihFeGVj
U3RhdGUqLCBjb25zdCBVU3RyaW5nJik7CiAgICAgSlNPYmplY3QqIGNyZWF0ZVVSSUVycm9yKEV4
ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmKTsKIAogICAgIC8vIE1ldGhvZHMgdG8gYWRkIApAQCAt
NjAsMTIgKzYwLDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIEpTT2JqZWN0KiBhZGRFcnJvcklu
Zm8oRXhlY1N0YXRlKiwgSlNPYmplY3QqIGVycm9yLCBpbnQgbGluZSwgY29uc3QgU291cmNlQ29k
ZSYpOwogCiAgICAgLy8gTWV0aG9kcyB0byB0aHJvdyBFcnJvcnMuCi0gICAgSlNWYWx1ZSB0aHJv
d0Vycm9yKEV4ZWNTdGF0ZSosIEpTVmFsdWUpOwotICAgIEpTT2JqZWN0KiB0aHJvd0Vycm9yKEV4
ZWNTdGF0ZSosIEpTT2JqZWN0Kik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSB0aHJv
d0Vycm9yKEV4ZWNTdGF0ZSosIEpTVmFsdWUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2Jq
ZWN0KiB0aHJvd0Vycm9yKEV4ZWNTdGF0ZSosIEpTT2JqZWN0Kik7CiAKICAgICAvLyBDb252ZW5p
ZW5jZSB3cmFwcGVycywgY3JlYXRlIGFuIHRocm93IGFuIGV4Y2VwdGlvbiB3aXRoIGEgZGVmYXVs
dCBtZXNzYWdlLgotICAgIEpTT2JqZWN0KiB0aHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqKTsKLSAg
ICBKU09iamVjdCogdGhyb3dTeW50YXhFcnJvcihFeGVjU3RhdGUqKTsKKyAgICBKU19FWFBPUlRf
UFJJVkFURSBKU09iamVjdCogdGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRlKik7CisgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93U3ludGF4RXJyb3IoRXhlY1N0YXRlKik7CiAKICAg
ICAvLyBDb252ZW5pZW5jZSB3cmFwcGVycywgd3JhcCByZXN1bHQgYXMgYW4gRW5jb2RlZEpTVmFs
dWUuCiAgICAgaW5saW5lIEVuY29kZWRKU1ZhbHVlIHRocm93Vk1FcnJvcihFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgZXJyb3IpIHsgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0Vycm9yKGV4
ZWMsIGVycm9yKSk7IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2Vw
dGlvbkhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGNlcHRpb25IZWxwZXJzLmgJKHJldmlzaW9uIDkyNzk5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw5
ICs0Myw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIE5vZGU7CiAgICAgc3RydWN0IElu
c3RydWN0aW9uOwogICAgIAotICAgIEpTT2JqZWN0KiBjcmVhdGVJbnRlcnJ1cHRlZEV4ZWN1dGlv
bkV4Y2VwdGlvbihKU0dsb2JhbERhdGEqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVj
dCogY3JlYXRlSW50ZXJydXB0ZWRFeGVjdXRpb25FeGNlcHRpb24oSlNHbG9iYWxEYXRhKik7CiAg
ICAgSlNPYmplY3QqIGNyZWF0ZVRlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oSlNHbG9iYWxE
YXRhKik7Ci0gICAgSlNPYmplY3QqIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihFeGVjU3RhdGUq
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogY3JlYXRlU3RhY2tPdmVyZmxvd0Vy
cm9yKEV4ZWNTdGF0ZSopOwogICAgIEpTT2JqZWN0KiBjcmVhdGVTdGFja092ZXJmbG93RXJyb3Io
SlNHbG9iYWxPYmplY3QqKTsKICAgICBKU09iamVjdCogY3JlYXRlT3V0T2ZNZW1vcnlFcnJvcihK
U0dsb2JhbE9iamVjdCopOwogICAgIEpTT2JqZWN0KiBjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVy
cm9yKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgJKHJldmlzaW9u
IDkyNzk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1
Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC00MiwxMCArNDIsMTAgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHZpcnR1YWwgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoQ2FsbERhdGEmKTsKICAgICB9
OwogCi0gICAgSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFs
T2JqZWN0KiwgY29uc3QgQXJnTGlzdCYsIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwg
Y29uc3QgVVN0cmluZyYgc291cmNlVVJMLCBpbnQgbGluZU51bWJlcik7CisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFs
T2JqZWN0KiwgY29uc3QgQXJnTGlzdCYsIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwg
Y29uc3QgVVN0cmluZyYgc291cmNlVVJMLCBpbnQgbGluZU51bWJlcik7CiAgICAgSlNPYmplY3Qq
IGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgQXJn
TGlzdCYpOwogCi0gICAgSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5h
YmxlZENoZWNrKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgQXJnTGlzdCYsIGNv
bnN0IElkZW50aWZpZXImLCBjb25zdCBVU3RyaW5nJiwgaW50IGxpbmVOdW1iZXIpOworICAgIEpT
X0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVu
YWJsZWRDaGVjayhFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IEFyZ0xpc3QmLCBj
b25zdCBJZGVudGlmaWVyJiwgY29uc3QgVVN0cmluZyYsIGludCBsaW5lTnVtYmVyKTsKIAogfSAv
LyBuYW1lc3BhY2UgSlNDCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lk
ZW50aWZpZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
ZGVudGlmaWVyLmgJKHJldmlzaW9uIDkyNzk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSWRlbnRpZmllci5oCSh3b3JraW5nIGNvcHkpCkBAIC01MywxNSArNTMsMTUgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBDU3RyaW5nIGFzY2lpKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdHJpbmcuYXNjaWkoKTsgfQogICAgICAgICAKLSAgICAgICAgc3RhdGljIElkZW50
aWZpZXIgZnJvbShFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHkpOwotICAgICAgICBzdGF0aWMg
SWRlbnRpZmllciBmcm9tKEV4ZWNTdGF0ZSogZXhlYywgaW50IHkpOwotICAgICAgICBzdGF0aWMg
SWRlbnRpZmllciBmcm9tKEV4ZWNTdGF0ZSogZXhlYywgZG91YmxlIHkpOworICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgSWRlbnRpZmllciBmcm9tKEV4ZWNTdGF0ZSosIHVuc2lnbmVk
IHkpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSWRlbnRpZmllciBmcm9tKEV4
ZWNTdGF0ZSosIGludCB5KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIElkZW50
aWZpZXIgZnJvbShFeGVjU3RhdGUqLCBkb3VibGUgeSk7CiAgICAgICAgIHN0YXRpYyBJZGVudGlm
aWVyIGZyb20oSlNHbG9iYWxEYXRhKiwgdW5zaWduZWQgeSk7CiAgICAgICAgIHN0YXRpYyBJZGVu
dGlmaWVyIGZyb20oSlNHbG9iYWxEYXRhKiwgaW50IHkpOwogICAgICAgICBzdGF0aWMgSWRlbnRp
ZmllciBmcm9tKEpTR2xvYmFsRGF0YSosIGRvdWJsZSB5KTsKIAotICAgICAgICBzdGF0aWMgdWlu
dDMyX3QgdG9VSW50MzIoY29uc3QgVVN0cmluZyYsIGJvb2wmIG9rKTsKLSAgICAgICAgdWludDMy
X3QgdG9VSW50MzIoYm9vbCYgb2spIGNvbnN0IHsgcmV0dXJuIHRvVUludDMyKG1fc3RyaW5nLCBv
ayk7IH0KKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHVpbnQzMl90IHRvVUludDMy
KGNvbnN0IFVTdHJpbmcmLCBib29sJiBvayk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHVp
bnQzMl90IHRvVUludDMyKGJvb2wmIG9rKSBjb25zdCB7IHJldHVybiB0b1VJbnQzMihtX3N0cmlu
Zywgb2spOyB9CiAgICAgICAgIHVuc2lnbmVkIHRvQXJyYXlJbmRleChib29sJiBvaykgY29uc3Q7
CiAKICAgICAgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5pc051bGwo
KTsgfQpAQCAtNzMsMTIgKzczLDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBmcmllbmQg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBjaGFyKik7CiAgICAgICAg
IGZyaWVuZCBib29sIG9wZXJhdG9yIT0oY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IGNoYXIqKTsK
ICAgICAKLSAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgU3RyaW5nSW1wbCosIGNvbnN0
IGNoYXIqKTsKLSAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgU3RyaW5nSW1wbCosIGNv
bnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwo
Y29uc3QgU3RyaW5nSW1wbCogYSwgY29uc3QgU3RyaW5nSW1wbCogYikgeyByZXR1cm4gOjplcXVh
bChhLCBiKTsgfQorICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBlcXVhbChj
b25zdCBTdHJpbmdJbXBsKiwgY29uc3QgY2hhciopOworICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBTdHJpbmdJbXBsKiwgY29uc3QgVUNoYXIqLCB1bnNp
Z25lZCBsZW5ndGgpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBlcXVh
bChjb25zdCBTdHJpbmdJbXBsKiBhLCBjb25zdCBTdHJpbmdJbXBsKiBiKSB7IHJldHVybiA6OmVx
dWFsKGEsIGIpOyB9CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRk
KEV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIqKTsgLy8gT25seSB0byBiZSB1c2VkIHdpdGggc3RyaW5n
IGxpdGVyYWxzLgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGQoSlNH
bG9iYWxEYXRhKiwgY29uc3QgY2hhciopOyAvLyBPbmx5IHRvIGJlIHVzZWQgd2l0aCBzdHJpbmcg
bGl0ZXJhbHMuCisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPFN0
cmluZ0ltcGw+IGFkZChFeGVjU3RhdGUqLCBjb25zdCBjaGFyKik7IC8vIE9ubHkgdG8gYmUgdXNl
ZCB3aXRoIHN0cmluZyBsaXRlcmFscy4KKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRkKEpTR2xvYmFsRGF0YSosIGNvbnN0IGNoYXIqKTsg
Ly8gT25seSB0byBiZSB1c2VkIHdpdGggc3RyaW5nIGxpdGVyYWxzLgogCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgVVN0cmluZyBtX3N0cmluZzsKQEAgLTEwOCwxMCArMTA4LDEwIEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIGFkZFNsb3dDYXNlKGdsb2JhbERhdGEsIHIpOwog
ICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRkU2xv
d0Nhc2UoRXhlY1N0YXRlKiwgU3RyaW5nSW1wbCogcik7CisgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZFNsb3dDYXNlKEV4ZWNTdGF0ZSos
IFN0cmluZ0ltcGwqKTsKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRk
U2xvd0Nhc2UoSlNHbG9iYWxEYXRhKiwgU3RyaW5nSW1wbCogcik7CiAKLSAgICAgICAgc3RhdGlj
IHZvaWQgY2hlY2tDdXJyZW50SWRlbnRpZmllclRhYmxlKEV4ZWNTdGF0ZSopOworICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBjaGVja0N1cnJlbnRJZGVudGlmaWVyVGFibGUo
RXhlY1N0YXRlKik7CiAgICAgICAgIHN0YXRpYyB2b2lkIGNoZWNrQ3VycmVudElkZW50aWZpZXJU
YWJsZShKU0dsb2JhbERhdGEqKTsKICAgICB9OwogICAgIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuaAkocmV2aXNpb24g
OTI3OTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFk
aW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICAvLyBUaGlzIGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVkIGZyb20gdGhlIG1haW4gdGhyZWFk
LiBJdCBpcyBzYWZlIHRvIGNhbGwgaXQgcmVwZWF0ZWRseS4KICAgICAvLyBEYXJ3aW4gaXMgYW4g
ZXhjZXB0aW9uIHRvIHRoaXMgcnVsZTogaXQgaXMgT0sgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIGZy
b20gYW55IHRocmVhZCwgZXZlbiByZWVudHJhbnRseS4KLSAgICB2b2lkIGluaXRpYWxpemVUaHJl
YWRpbmcoKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmco
KTsKIAogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1
bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
ZXJuYWxGdW5jdGlvbi5oCShyZXZpc2lvbiA5Mjc5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTEgKzMx
LDExIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRnVuY3Rpb25Qcm90b3R5cGU7CiAK
LSAgICBjbGFzcyBJbnRlcm5hbEZ1bmN0aW9uIDogcHVibGljIEpTT2JqZWN0V2l0aEdsb2JhbE9i
amVjdCB7CisgICAgY2xhc3MgSlNfRVhQT1JUREFUQSBJbnRlcm5hbEZ1bmN0aW9uIDogcHVibGlj
IEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdCB7CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVm
IEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdCBCYXNlOwogCi0gICAgICAgIHN0YXRpYyBKU19FWFBP
UlREQVRBIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CisgICAgICAgIHN0YXRpYyBjb25zdCBDbGFz
c0luZm8gc19pbmZvOwogCiAgICAgICAgIGNvbnN0IFVTdHJpbmcmIG5hbWUoRXhlY1N0YXRlKik7
CiAgICAgICAgIGNvbnN0IFVTdHJpbmcgZGlzcGxheU5hbWUoRXhlY1N0YXRlKik7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCShyZXZpc2lvbiA5Mjc5OSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAkod29ya2luZyBjb3B5KQpA
QCAtNTcsNyArNTcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGVudW0gQXJyYXlDcmVhdGlv
bk1vZGUgeyBDcmVhdGVDb21wYWN0LCBDcmVhdGVJbml0aWFsaXplZCB9OwogCi0gICAgY2xhc3Mg
SlNBcnJheSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKKyAgICBjbGFzcyBKU19FWFBPUlRE
QVRBIEpTQXJyYXkgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CisgICAgICAgIGZyaWVuZCBj
bGFzcyBKSVQ7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBXYWxrZXI7CiAKICAgICBwcm90ZWN0ZWQ6
CkBAIC05MSw3ICs5Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2aXJ0dWFsIGJvb2wg
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQ
cm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHB1dChFeGVjU3RhdGUq
LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUpOyAvLyBGSVhNRTogTWFrZSBwcm90ZWN0
ZWQgYW5kIGFkZCBzZXRJdGVtLgogCi0gICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0
IENsYXNzSW5mbyBzX2luZm87CisgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZv
OwogICAgICAgICAKICAgICAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9z
dG9yYWdlLT5tX2xlbmd0aDsgfQogICAgICAgICB2b2lkIHNldExlbmd0aCh1bnNpZ25lZCk7IC8v
IE9LIHRvIHVzZSBvbiBuZXcgYXJyYXlzLCBidXQgbm90IGlmIGl0IG1pZ2h0IGJlIGEgUmVnRXhw
TWF0Y2hBcnJheS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFy
cmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRl
QXJyYXkuaAkocmV2aXNpb24gOTI3OTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0J5dGVBcnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC03NiwxMiArNzYsMTIgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEpTQnl0ZUFycmF5
KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIEJ5dGVBcnJheSogc3RvcmFnZSk7CisgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIEpTQnl0ZUFycmF5KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIEJ5dGVB
cnJheSogc3RvcmFnZSk7CiAgICAgICAgIAogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIEpT
Qnl0ZUFycmF5KiBjcmVhdGUoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgQnl0ZUFycmF5Kik7CiAK
LSAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYs
IEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBKU0M6OkNsYXNzSW5mbyogPSAmc19kZWZhdWx0SW5m
byk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShKU0dsb2JhbERhdGEmLCBKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgSlNDOjpDbGFz
c0luZm8qID0gJnNfZGVmYXVsdEluZm8pOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgdmlydHVhbCBib29sIGdldE93
blByb3BlcnR5U2xvdChKU0M6OkV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlND
OjpQcm9wZXJ0eVNsb3QmKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2VsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2Vs
bC5oCShyZXZpc2lvbiA5Mjc5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2VsbC5oCSh3b3JraW5nIGNvcHkpCkBAIC03OSwxNSArNzksMTUgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICBwcml2YXRlOgogICAgICAgICBleHBsaWNpdCBKU0NlbGwoVlB0clN0ZWFsaW5nSGFj
a1R5cGUpIHsgfQotICAgICAgICBKU0NlbGwoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7Ci0g
ICAgICAgIEpTQ2VsbChKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBDcmVhdGluZ0Vhcmx5Q2Vs
bFRhZyk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTQ2VsbChKU0dsb2JhbERhdGEmLCBT
dHJ1Y3R1cmUqKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNDZWxsKEpTR2xvYmFsRGF0
YSYsIFN0cnVjdHVyZSosIENyZWF0aW5nRWFybHlDZWxsVGFnKTsKICAgICAgICAgdmlydHVhbCB+
SlNDZWxsKCk7CiAKICAgICBwdWJsaWM6CiAgICAgICAgIC8vIFF1ZXJ5aW5nIHRoZSB0eXBlLgot
ICAgICAgICBib29sIGlzU3RyaW5nKCkgY29uc3Q7Ci0gICAgICAgIGJvb2wgaXNPYmplY3QoKSBj
b25zdDsKLSAgICAgICAgdmlydHVhbCBib29sIGlzR2V0dGVyU2V0dGVyKCkgY29uc3Q7CisgICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNTdHJpbmcoKSBjb25zdDsKKyAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgYm9vbCBpc09iamVjdCgpIGNvbnN0OworICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSB2aXJ0dWFsIGJvb2wgaXNHZXR0ZXJTZXR0ZXIoKSBjb25zdDsKICAgICAgICAgYm9v
bCBpbmhlcml0cyhjb25zdCBDbGFzc0luZm8qKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBib29s
IGlzQVBJVmFsdWVXcmFwcGVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmly
dHVhbCBib29sIGlzUHJvcGVydHlOYW1lSXRlcmF0b3IoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQpAQCAtOTUsMjUgKzk1LDI1IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSgpIGNvbnN0OwogCiAgICAgICAgIC8vIEV4dHJhY3RpbmcgdGhlIHZhbHVlLgot
ICAgICAgICBib29sIGdldFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIFVTdHJpbmcmKSBjb25zdDsK
LSAgICAgICAgVVN0cmluZyBnZXRTdHJpbmcoRXhlY1N0YXRlKiBleGVjKSBjb25zdDsgLy8gbnVs
bCBzdHJpbmcgaWYgbm90IGEgc3RyaW5nCi0gICAgICAgIEpTT2JqZWN0KiBnZXRPYmplY3QoKTsg
Ly8gTlVMTCBpZiBub3QgYW4gb2JqZWN0Ci0gICAgICAgIGNvbnN0IEpTT2JqZWN0KiBnZXRPYmpl
Y3QoKSBjb25zdDsgLy8gTlVMTCBpZiBub3QgYW4gb2JqZWN0CisgICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIGJvb2wgZ2V0U3RyaW5nKEV4ZWNTdGF0ZSosIFVTdHJpbmcmKSBjb25zdDsKKyAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgVVN0cmluZyBnZXRTdHJpbmcoRXhlY1N0YXRlKikgY29uc3Q7
IC8vIG51bGwgc3RyaW5nIGlmIG5vdCBhIHN0cmluZworICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSBKU09iamVjdCogZ2V0T2JqZWN0KCk7IC8vIDAgaWYgbm90IGFuIG9iamVjdAorICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSBjb25zdCBKU09iamVjdCogZ2V0T2JqZWN0KCkgY29uc3Q7IC8vIDAg
aWYgbm90IGFuIG9iamVjdAogICAgICAgICAKLSAgICAgICAgdmlydHVhbCBDYWxsVHlwZSBnZXRD
YWxsRGF0YShDYWxsRGF0YSYpOwotICAgICAgICB2aXJ0dWFsIENvbnN0cnVjdFR5cGUgZ2V0Q29u
c3RydWN0RGF0YShDb25zdHJ1Y3REYXRhJik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZp
cnR1YWwgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoQ2FsbERhdGEmKTsKKyAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgdmlydHVhbCBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoQ29uc3RydWN0
RGF0YSYpOwogCiAgICAgICAgIC8vIEV4dHJhY3RpbmcgaW50ZWdlciB2YWx1ZXMuCiAgICAgICAg
IC8vIEZJWE1FOiByZW1vdmUgdGhlc2UgbWV0aG9kcywgY2FuIGNoZWNrIGlzTnVtYmVyQ2VsbCBp
biBKU1ZhbHVlICYmIHRoZW4gY2FsbCBhc051bWJlckNlbGw6OiouCi0gICAgICAgIHZpcnR1YWwg
Ym9vbCBnZXRVSW50MzIodWludDMyX3QmKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgdmlydHVhbCBib29sIGdldFVJbnQzMih1aW50MzJfdCYpIGNvbnN0OwogCiAgICAgICAgIC8v
IEJhc2ljIGNvbnZlcnNpb25zLgotICAgICAgICB2aXJ0dWFsIEpTVmFsdWUgdG9QcmltaXRpdmUo
RXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkgY29uc3Q7Ci0gICAgICAgIHZpcnR1
YWwgYm9vbCBnZXRQcmltaXRpdmVOdW1iZXIoRXhlY1N0YXRlKiwgZG91YmxlJiBudW1iZXIsIEpT
VmFsdWUmKTsKLSAgICAgICAgdmlydHVhbCBib29sIHRvQm9vbGVhbihFeGVjU3RhdGUqKSBjb25z
dDsKLSAgICAgICAgdmlydHVhbCBkb3VibGUgdG9OdW1iZXIoRXhlY1N0YXRlKikgY29uc3Q7Ci0g
ICAgICAgIHZpcnR1YWwgVVN0cmluZyB0b1N0cmluZyhFeGVjU3RhdGUqKSBjb25zdDsKLSAgICAg
ICAgdmlydHVhbCBKU09iamVjdCogdG9PYmplY3QoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3Qq
KSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCBKU1ZhbHVlIHRvUHJp
bWl0aXZlKEV4ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpIGNvbnN0OworICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIGJvb2wgZ2V0UHJpbWl0aXZlTnVtYmVyKEV4ZWNT
dGF0ZSosIGRvdWJsZSYgbnVtYmVyLCBKU1ZhbHVlJik7CisgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZpcnR1YWwgYm9vbCB0b0Jvb2xlYW4oRXhlY1N0YXRlKikgY29uc3Q7CisgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgZG91YmxlIHRvTnVtYmVyKEV4ZWNTdGF0ZSopIGNvbnN0
OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIFVTdHJpbmcgdG9TdHJpbmcoRXhl
Y1N0YXRlKikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgSlNPYmpl
Y3QqIHRvT2JqZWN0KEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CiAKICAgICAg
ICAgLy8gR2FyYmFnZSBjb2xsZWN0aW9uLgogICAgICAgICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6
ZV90LCB2b2lkKiBwbGFjZW1lbnROZXdEZXN0aW5hdGlvbikgeyByZXR1cm4gcGxhY2VtZW50TmV3
RGVzdGluYXRpb247IH0KQEAgLTEyMSwxNiArMTIxLDE2IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYpOwogCiAgICAgICAg
IC8vIE9iamVjdCBvcGVyYXRpb25zLCB3aXRoIHRoZSB0b09iamVjdCBvcGVyYXRpb24gaW5jbHVk
ZWQuCi0gICAgICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3Q7Ci0gICAgICAg
IHZpcnR1YWwgdm9pZCBwdXQoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHB1
dChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUpOwotICAgICAgICB2
aXJ0dWFsIGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lKTsKLSAgICAgICAgdmlydHVhbCBib29sIGRlbGV0ZVByb3BlcnR5KEV4ZWNT
dGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7Ci0KLSAgICAgICAgdmlydHVhbCBKU09iamVj
dCogdG9UaGlzT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIEpTVmFs
dWUgZ2V0SlNOdW1iZXIoKTsKLSAgICAgICAgdm9pZCogdnB0cigpIHsgcmV0dXJuICpyZWludGVy
cHJldF9jYXN0PHZvaWQqKj4odGhpcyk7IH0KLSAgICAgICAgdm9pZCBzZXRWUHRyKHZvaWQqIHZw
dHIpIHsgKnJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPih0aGlzKSA9IHZwdHI7IH0KKyAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8oKSBjb25zdDsKKyAg
ICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCB2b2lkIHB1dChFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwor
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIHZvaWQgcHV0KEV4ZWNTdGF0ZSosIHVu
c2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IHZpcnR1YWwgYm9vbCBkZWxldGVQcm9wZXJ0eShFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIGJvb2wg
ZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKKworICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIEpTT2JqZWN0KiB0b1RoaXNPYmplY3QoRXhl
Y1N0YXRlKikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgSlNWYWx1
ZSBnZXRKU051bWJlcigpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkKiB2cHRyKCkg
eyByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPih0aGlzKTsgfQorICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSB2b2lkIHNldFZQdHIodm9pZCogdnB0cikgeyAqcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKio+KHRoaXMpID0gdnB0cjsgfQogCiAgICAgICAgIC8vIEZJWE1FOiBSZW5hbWUgZ2V0
T3duUHJvcGVydHlTbG90IHRvIHZpcnR1YWxHZXRPd25Qcm9wZXJ0eVNsb3QsIGFuZAogICAgICAg
ICAvLyBmYXN0R2V0T3duUHJvcGVydHlTbG90IHRvIGdldE93blByb3BlcnR5U2xvdC4gQ2FsbGVy
cyBzaG91bGQgYWx3YXlzCkBAIC0xNTMsOCArMTUzLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICBwcml2YXRlOgogICAgICAgICAvLyBCYXNlIGltcGxlbWVudGF0aW9uOyBmb3Igbm9uLW9iamVj
dCBjbGFzc2VzIGltcGxlbWVudHMgZ2V0UHJvcGVydHlTbG90LgotICAgICAgICB2aXJ0dWFsIGJv
b2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3QoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5
U2xvdChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJv
cGVydHlTbG90KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
Jik7CiAgICAgICAgIAogICAgICAgICAvLyBOb3RlIHRoYXQgdGhlIGZpcnN0IHR3byBkZWNsYXJh
dGlvbnMgb2Ygb3BlcmF0b3IgbmV3IGhhdmUgbm8gY29ycmVzcG9uZGluZyBpbXBsZW1lbnRhdGlv
biBhbmQgCiAgICAgICAgIC8vIHdpbGwgY2F1c2UgbGluayBlcnJvcnMgaWYgeW91IHVzZSB0aGVt
LgpAQCAtMTk5LDcgKzE5OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgLy8gLS0tIEpTVmFs
dWUgaW5saW5lcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLSAgICBpbmxpbmUgYm9v
bCBKU1ZhbHVlOjppc1N0cmluZygpIGNvbnN0CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgaW5saW5l
IGJvb2wgSlNWYWx1ZTo6aXNTdHJpbmcoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIGlz
Q2VsbCgpICYmIGFzQ2VsbCgpLT5pc1N0cmluZygpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgJKHJldmlzaW9uIDkyNzk5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC00Niw3ICs0Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBmcmllbmQgY2xhc3MgREZH
OjpKSVRDb2RlR2VuZXJhdG9yOwogICAgICAgICBmcmllbmQgY2xhc3MgSlNHbG9iYWxEYXRhOwog
Ci0gICAgICAgIEpTRnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBpbnQgbGVuZ3RoLCBjb25zdCBJZGVudGlmaWVyJiwgTmF0aXZlRnVuY3Rpb24pOworICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSBKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlKiwgaW50IGxlbmd0aCwgY29uc3QgSWRlbnRpZmllciYsIE5hdGl2ZUZ1
bmN0aW9uKTsKICAgICAgICAgSlNGdW5jdGlvbihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZSosIGludCBsZW5ndGgsIGNvbnN0IElkZW50aWZpZXImLCBOYXRpdmVFeGVjdXRh
YmxlKik7CiAgICAgICAgIEpTRnVuY3Rpb24oRXhlY1N0YXRlKiwgRnVuY3Rpb25FeGVjdXRhYmxl
KiwgU2NvcGVDaGFpbk5vZGUqKTsKICAgICAgICAgCkBAIC02OCw3ICs2OCw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAKICAgICAgICAgdmlydHVhbCB+SlNGdW5jdGlvbigpOwogCi0gICAg
ICAgIGNvbnN0IFVTdHJpbmcmIG5hbWUoRXhlY1N0YXRlKik7CisgICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIGNvbnN0IFVTdHJpbmcmIG5hbWUoRXhlY1N0YXRlKik7CiAgICAgICAgIGNvbnN0IFVT
dHJpbmcgZGlzcGxheU5hbWUoRXhlY1N0YXRlKik7CiAgICAgICAgIGNvbnN0IFVTdHJpbmcgY2Fs
Y3VsYXRlZERpc3BsYXlOYW1lKEV4ZWNTdGF0ZSopOwogCkBAIC0xMjYsNyArMTI2LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgZXhwbGljaXQgSlNGdW5jdGlvbihW
UHRyU3RlYWxpbmdIYWNrVHlwZSk7CiAKLSAgICAgICAgYm9vbCBpc0hvc3RGdW5jdGlvbk5vbklu
bGluZSgpIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGlzSG9zdEZ1bmN0
aW9uTm9uSW5saW5lKCkgY29uc3Q7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHByZXZlbnRFeHRl
bnNpb25zKEpTR2xvYmFsRGF0YSYpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCShyZXZp
c2lvbiA5Mjc5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0
YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsNyArMTE0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIC8vIHRoZSBvcmlnaW5hbCBBUEkuCiAgICAgICAgIGVudW0gR2xvYmFsRGF0YVR5cGUg
eyBEZWZhdWx0LCBBUElDb250ZXh0R3JvdXAsIEFQSVNoYXJlZCB9OwogICAgICAgICAKLSAgICAg
ICAgc3RydWN0IENsaWVudERhdGEgeworICAgICAgICBzdHJ1Y3QgSlNfRVhQT1JUX1BSSVZBVEUg
Q2xpZW50RGF0YSB7CiAgICAgICAgICAgICB2aXJ0dWFsIH5DbGllbnREYXRhKCkgPSAwOwogICAg
ICAgICB9OwogCkBAIC0xMjMsMTAgKzEyMywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
c3RhdGljIGJvb2wgc2hhcmVkSW5zdGFuY2VFeGlzdHMoKTsKICAgICAgICAgc3RhdGljIEpTR2xv
YmFsRGF0YSYgc2hhcmVkSW5zdGFuY2UoKTsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxK
U0dsb2JhbERhdGE+IGNyZWF0ZShUaHJlYWRTdGFja1R5cGUsIEhlYXBTaXplID0gU21hbGxIZWFw
KTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SlNHbG9iYWxEYXRhPiBjcmVhdGVMZWFrZWQo
VGhyZWFkU3RhY2tUeXBlLCBIZWFwU2l6ZSA9IFNtYWxsSGVhcCk7CisgICAgICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPEpTR2xvYmFsRGF0YT4gY3JlYXRlKFRocmVhZFN0
YWNrVHlwZSwgSGVhcFNpemUgPSBTbWFsbEhlYXApOworICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgUGFzc1JlZlB0cjxKU0dsb2JhbERhdGE+IGNyZWF0ZUxlYWtlZChUaHJlYWRTdGFj
a1R5cGUsIEhlYXBTaXplID0gU21hbGxIZWFwKTsKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8
SlNHbG9iYWxEYXRhPiBjcmVhdGVDb250ZXh0R3JvdXAoVGhyZWFkU3RhY2tUeXBlLCBIZWFwU2l6
ZSA9IFNtYWxsSGVhcCk7Ci0gICAgICAgIH5KU0dsb2JhbERhdGEoKTsKKyAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgfkpTR2xvYmFsRGF0YSgpOwogCiAjaWYgRU5BQkxFKEpTQ19NVUxUSVBMRV9U
SFJFQURTKQogICAgICAgICAvLyBXaWxsIHN0YXJ0IHRyYWNraW5nIHRocmVhZHMgdGhhdCB1c2Ug
dGhlIGhlYXAsIHdoaWNoIGlzIHJlc291cmNlLWhlYXZ5LgpAQCAtMjYzLDkgKzI2Myw5IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgcmVzZXREYXRlQ2FjaGUoKTsKIAotICAgICAg
ICB2b2lkIHN0YXJ0U2FtcGxpbmcoKTsKLSAgICAgICAgdm9pZCBzdG9wU2FtcGxpbmcoKTsKLSAg
ICAgICAgdm9pZCBkdW1wU2FtcGxlRGF0YShFeGVjU3RhdGUqIGV4ZWMpOworICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSB2b2lkIHN0YXJ0U2FtcGxpbmcoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgdm9pZCBzdG9wU2FtcGxpbmcoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBkdW1wU2FtcGxlRGF0YShFeGVjU3RhdGUqKTsKICAgICAgICAgdm9pZCByZWNvbXBpbGVBbGxK
U0Z1bmN0aW9ucygpOwogICAgICAgICBSZWdFeHBDYWNoZSogcmVnRXhwQ2FjaGUoKSB7IHJldHVy
biBtX3JlZ0V4cENhY2hlOyB9CiAjaWYgRU5BQkxFKFJFR0VYUF9UUkFDSU5HKQpAQCAtMjc0LDEw
ICsyNzQsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZHVtcFJlZ0V4cFRyYWNl
KCk7CiAgICAgICAgIEhhbmRsZVNsb3QgYWxsb2NhdGVHbG9iYWxIYW5kbGUoKSB7IHJldHVybiBo
ZWFwLmFsbG9jYXRlR2xvYmFsSGFuZGxlKCk7IH0KICAgICAgICAgSGFuZGxlU2xvdCBhbGxvY2F0
ZUxvY2FsSGFuZGxlKCkgeyByZXR1cm4gaGVhcC5hbGxvY2F0ZUxvY2FsSGFuZGxlKCk7IH0KLSAg
ICAgICAgdm9pZCBjbGVhckJ1aWx0aW5TdHJ1Y3R1cmVzKCk7CisgICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHZvaWQgY2xlYXJCdWlsdGluU3RydWN0dXJlcygpOwogCiAgICAgICAgIGJvb2wgaXND
b2xsZWN0b3JCdXN5KCkgeyByZXR1cm4gaGVhcC5pc0J1c3koKTsgfQotICAgICAgICB2b2lkIHJl
bGVhc2VFeGVjdXRhYmxlTWVtb3J5KCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQg
cmVsZWFzZUV4ZWN1dGFibGVNZW1vcnkoKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIEpTR2xv
YmFsRGF0YShHbG9iYWxEYXRhVHlwZSwgVGhyZWFkU3RhY2tUeXBlLCBIZWFwU2l6ZSk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHJl
dmlzaW9uIDkyNzk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgIHR5cGVkZWYgVmVjdG9yPEV4ZWNTdGF0ZSosIDE2PiBFeGVjU3RhdGVTdGFjazsKICAg
ICAKLSAgICBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1ZhcmlhYmxlT2JqZWN0IHsK
KyAgICBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1Zh
cmlhYmxlT2JqZWN0IHsKICAgICBwcml2YXRlOgogICAgICAgICB0eXBlZGVmIEhhc2hTZXQ8UmVm
UHRyPE9wYXF1ZUpTV2Vha09iamVjdE1hcD4gPiBXZWFrTWFwU2V0OwogCkBAIC00NTMsNyArNDUz
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgRHluYW1pY0dsb2JhbE9iamVjdFNjb3Bl
IHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRHluYW1pY0dsb2JhbE9iamVjdFNjb3Bl
KTsKICAgICBwdWJsaWM6Ci0gICAgICAgIER5bmFtaWNHbG9iYWxPYmplY3RTY29wZShKU0dsb2Jh
bERhdGEmLCBKU0dsb2JhbE9iamVjdCopOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBEeW5h
bWljR2xvYmFsT2JqZWN0U2NvcGUoSlNHbG9iYWxEYXRhJiwgSlNHbG9iYWxPYmplY3QqKTsKIAog
ICAgICAgICB+RHluYW1pY0dsb2JhbE9iamVjdFNjb3BlKCkKICAgICAgICAgewpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmgJKHJldmlzaW9uIDkyNzk5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTU2
LDcgKzU2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNMb2NrIHsKICAgICAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoSlNMb2NrKTsKICAgICBwdWJsaWM6Ci0gICAgICAgIEpTTG9j
ayhFeGVjU3RhdGUqKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNMb2NrKEV4ZWNTdGF0
ZSopOwogICAgICAgICBKU0xvY2soSlNHbG9iYWxEYXRhKik7CiAKICAgICAgICAgSlNMb2NrKEpT
TG9ja0JlaGF2aW9yIGxvY2tCZWhhdmlvcikKQEAgLTgwLDEzICs4MCwxMyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgICAgIHVubG9jayhtX2xvY2tCZWhhdmlvcik7IAogICAgICAgICB9CiAg
ICAgICAgIAotICAgICAgICBzdGF0aWMgdm9pZCBsb2NrKEpTTG9ja0JlaGF2aW9yKTsKLSAgICAg
ICAgc3RhdGljIHZvaWQgdW5sb2NrKEpTTG9ja0JlaGF2aW9yKTsKKyAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIHZvaWQgbG9jayhKU0xvY2tCZWhhdmlvcik7CisgICAgICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHVubG9jayhKU0xvY2tCZWhhdmlvcik7CiAgICAgICAg
IHN0YXRpYyB2b2lkIGxvY2soRXhlY1N0YXRlKik7CiAgICAgICAgIHN0YXRpYyB2b2lkIHVubG9j
ayhFeGVjU3RhdGUqKTsKIAotICAgICAgICBzdGF0aWMgaW50cHRyX3QgbG9ja0NvdW50KCk7Ci0g
ICAgICAgIHN0YXRpYyBib29sIGN1cnJlbnRUaHJlYWRJc0hvbGRpbmdMb2NrKCk7CisgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBpbnRwdHJfdCBsb2NrQ291bnQoKTsKKyAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgY3VycmVudFRocmVhZElzSG9sZGluZ0xvY2so
KTsKIAogICAgICAgICBKU0xvY2tCZWhhdmlvciBtX2xvY2tCZWhhdmlvcjsKIApAQCAtOTQsOCAr
OTQsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KERyb3BBbGxMb2Nrcyk7CiAgICAgICAgIHB1YmxpYzoKICAgICAgICAgICAgIERyb3BBbGxMb2Nr
cyhFeGVjU3RhdGUqIGV4ZWMpOwotICAgICAgICAgICAgRHJvcEFsbExvY2tzKEpTTG9ja0JlaGF2
aW9yKTsKLSAgICAgICAgICAgIH5Ecm9wQWxsTG9ja3MoKTsKKyAgICAgICAgICAgIEpTX0VYUE9S
VF9QUklWQVRFIERyb3BBbGxMb2NrcyhKU0xvY2tCZWhhdmlvcik7CisgICAgICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSB+RHJvcEFsbExvY2tzKCk7CiAgICAgICAgICAgICAKICAgICAgICAgcHJp
dmF0ZToKICAgICAgICAgICAgIGludHB0cl90IG1fbG9ja0NvdW50OwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiA5Mjc5OSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTcy
LDEyICs3MiwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB0eXBlZGVmIFdyaXRlQmFycmllckJh
c2U8VW5rbm93bj4qIFByb3BlcnR5U3RvcmFnZTsKICAgICB0eXBlZGVmIGNvbnN0IFdyaXRlQmFy
cmllckJhc2U8VW5rbm93bj4qIENvbnN0UHJvcGVydHlTdG9yYWdlOwogCi0gICAgY2xhc3MgSlNP
YmplY3QgOiBwdWJsaWMgSlNDZWxsIHsKKyAgICBjbGFzcyBKU19FWFBPUlREQVRBIEpTT2JqZWN0
IDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBCYXRjaGVkVHJhbnNpdGlv
bk9wdGltaXplcjsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKICAgICAgICAgZnJpZW5kIGNs
YXNzIEpTQ2VsbDsKICAgICAgICAgZnJpZW5kIGNsYXNzIE1hcmtlZEJsb2NrOwotICAgICAgICBm
cmllbmQgdm9pZCBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IEhhc2hFbnRyeSogZW50cnksIEpTT2JqZWN0KiB0aGlzT2JqLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCk7CisgICAgICAgIGZyaWVuZCBKU19FWFBP
UlRfUFJJVkFURSB2b2lkIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSosIGNvbnN0
IEhhc2hFbnRyeSosIEpTT2JqZWN0KiB0aGlzT2JqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogCiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIEpT
Q2VsbCBCYXNlOwpAQCAtMjU2LDcgKzI1Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBz
dGF0aWMgc2l6ZV90IG9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCk7CiAgICAgICAgIHN0YXRpYyBz
aXplX3Qgb2Zmc2V0T2ZJbmhlcml0b3JJRCgpOwogCi0gICAgICAgIHN0YXRpYyBKU19FWFBPUlRE
QVRBIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CisgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0lu
Zm8gc19pbmZvOwogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlw
ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0V2l0aEdsb2Jh
bE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0V2l0aEdsb2JhbE9iamVjdC5oCShyZXZpc2lvbiA5Mjc5OSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0V2l0aEdsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zOSwxNCArMzksMTQgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gU3RydWN0dXJl
OjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG8sIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVy
ZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsKICAgICB9CiAKLSAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KCkgY29uc3QKKyAgICBKU19FWFBPUlRfUFJJVkFURSBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVy
biBhc0dsb2JhbE9iamVjdCgoZ2V0QW5vbnltb3VzVmFsdWUoR2xvYmFsT2JqZWN0U2xvdCkuYXND
ZWxsKCkpKTsKICAgICB9CiAKIHByb3RlY3RlZDoKLSAgICBKU09iamVjdFdpdGhHbG9iYWxPYmpl
Y3QoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKLSAgICBKU09iamVjdFdpdGhHbG9iYWxP
YmplY3QoSlNHbG9iYWxEYXRhJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKKyAgICBK
U19FWFBPUlRfUFJJVkFURSBKU09iamVjdFdpdGhHbG9iYWxPYmplY3QoSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdFdpdGhHbG9iYWxP
YmplY3QoSlNHbG9iYWxEYXRhJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKIAogICAg
IEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdChWUHRyU3RlYWxpbmdIYWNrVHlwZSkKICAgICAgICAg
OiBKU05vbkZpbmFsT2JqZWN0KFZQdHJTdGVhbGluZ0hhY2spCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCShyZXZpc2lvbiA5Mjc5OSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtODEsNyArODEs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9OwogCiAgICAgLy8gVGhpcyBpbXBsZW1lbnRzIFRv
SW50MzIsIGRlZmluZWQgaW4gRUNNQS0yNjIgOS41LgotICAgIGludDMyX3QgdG9JbnQzMihkb3Vi
bGUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIGludDMyX3QgdG9JbnQzMihkb3VibGUpOwogCiAg
ICAgLy8gVGhpcyBpbXBsZW1lbnRzIFRvVUludDMyLCBkZWZpbmVkIGluIEVDTUEtMjYyIDkuNi4K
ICAgICBpbmxpbmUgdWludDMyX3QgdG9VSW50MzIoZG91YmxlIG51bWJlcikKQEAgLTE4NSw3ICsx
ODUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNPYmplY3QqIHRvT2JqZWN0KEV4ZWNT
dGF0ZSosIEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CiAKICAgICAgICAgLy8gSW50ZWdlciBjb252
ZXJzaW9ucy4KLSAgICAgICAgZG91YmxlIHRvSW50ZWdlcihFeGVjU3RhdGUqKSBjb25zdDsKKyAg
ICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgZG91YmxlIHRvSW50ZWdlcihFeGVjU3RhdGUqKSBjb25z
dDsKICAgICAgICAgZG91YmxlIHRvSW50ZWdlclByZXNlcnZlTmFOKEV4ZWNTdGF0ZSopIGNvbnN0
OwogICAgICAgICBpbnQzMl90IHRvSW50MzIoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgICAgIHVp
bnQzMl90IHRvVUludDMyKEV4ZWNTdGF0ZSopIGNvbnN0OwpAQCAtMjE5LDcgKzIxOSw3IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgICAgIGJvb2wgaXNDZWxsKCkgY29uc3Q7CiAgICAgICAgIEpT
Q2VsbCogYXNDZWxsKCkgY29uc3Q7Ci0gICAgICAgIGJvb2wgaXNWYWxpZENhbGxlZSgpOworICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGlzVmFsaWRDYWxsZWUoKTsKIAogI2lmbmRlZiBO
REVCVUcKICAgICAgICAgY2hhciogZGVzY3JpcHRpb24oKTsKQEAgLTIzMywxMCArMjMzLDEwIEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIGlubGluZSBjb25zdCBKU1ZhbHVlIGFzVmFsdWUo
KSBjb25zdCB7IHJldHVybiAqdGhpczsgfQogICAgICAgICBkb3VibGUgdG9OdW1iZXJTbG93Q2Fz
ZShFeGVjU3RhdGUqKSBjb25zdDsKLSAgICAgICAgSlNPYmplY3QqIHRvT2JqZWN0U2xvd0Nhc2Uo
RXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKLSAgICAgICAgSlNPYmplY3QqIHRv
VGhpc09iamVjdFNsb3dDYXNlKEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSBKU09iamVjdCogdG9PYmplY3RTbG93Q2FzZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9i
amVjdCopIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogdG9UaGlz
T2JqZWN0U2xvd0Nhc2UoRXhlY1N0YXRlKikgY29uc3Q7CiAKLSAgICAgICAgSlNPYmplY3QqIHN5
bnRoZXNpemVQcm90b3R5cGUoRXhlY1N0YXRlKikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIEpTT2JqZWN0KiBzeW50aGVzaXplUHJvdG90eXBlKEV4ZWNTdGF0ZSopIGNvbnN0Owog
ICAgICAgICBKU09iamVjdCogc3ludGhlc2l6ZU9iamVjdChFeGVjU3RhdGUqKSBjb25zdDsKIAog
I2lmIFVTRShKU1ZBTFVFMzJfNjQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1ZhcmlhYmxlT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oCShyZXZpc2lvbiA5Mjc5OSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAkod29ya2luZyBjb3B5KQpA
QCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFJlZ2lzdGVyOwog
Ci0gICAgY2xhc3MgSlNWYXJpYWJsZU9iamVjdCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsK
KyAgICBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBKU1ZhcmlhYmxlT2JqZWN0IDogcHVibGljIEpT
Tm9uRmluYWxPYmplY3QgewogICAgICAgICBmcmllbmQgY2xhc3MgSklUOwogCiAgICAgcHVibGlj
OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXcmFwcGVyT2Jq
ZWN0LmgJKHJldmlzaW9uIDkyNzk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNXcmFwcGVyT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICAvLyBUaGlzIGNsYXNzIGlzIHVzZWQgYXMgYSBiYXNlIGZvciBjbGFz
c2VzIHN1Y2ggYXMgU3RyaW5nLAogICAgIC8vIE51bWJlciwgQm9vbGVhbiBhbmQgRGF0ZSB3aGlj
aCBhcmUgd3JhcHBlcnMgZm9yIHByaW1pdGl2ZSB0eXBlcy4KLSAgICBjbGFzcyBKU1dyYXBwZXJP
YmplY3QgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CisgICAgY2xhc3MgSlNfRVhQT1JUX1BS
SVZBVEUgSlNXcmFwcGVyT2JqZWN0IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIHB1
YmxpYzoKICAgICAgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCShyZXZpc2lvbiA5Mjc5OSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDAsNyArMTQwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAgICAgY3JlYXRlVGFi
bGUoJmV4ZWMtPmdsb2JhbERhdGEoKSk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGRlbGV0
ZVRhYmxlKCkgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZGVsZXRlVGFi
bGUoKSBjb25zdDsKIAogICAgICAgICAvLyBGaW5kIGFuIGVudHJ5IGluIHRoZSB0YWJsZSwgYW5k
IHJldHVybiB0aGUgZW50cnkuCiAgICAgICAgIEFMV0FZU19JTkxJTkUgY29uc3QgSGFzaEVudHJ5
KiBlbnRyeShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIGlkZW50
aWZpZXIpIGNvbnN0CkBAIC0xNzUsMTAgKzE3NSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgfQogCiAgICAgICAgIC8vIENvbnZlcnQgdGhlIGhhc2ggdGFibGUga2V5cyB0byBpZGVudGlm
aWVycy4KLSAgICAgICAgdm9pZCBjcmVhdGVUYWJsZShKU0dsb2JhbERhdGEqKSBjb25zdDsKKyAg
ICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBjcmVhdGVUYWJsZShKU0dsb2JhbERhdGEqKSBj
b25zdDsKICAgICB9OwogCi0gICAgdm9pZCBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChFeGVjU3Rh
dGUqLCBjb25zdCBIYXNoRW50cnkqLCBKU09iamVjdCogdGhpc09iamVjdCwgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSB2b2lkIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSosIGNvbnN0IEhhc2hFbnRy
eSosIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYpOwogCiAgICAgLyoqCiAgICAgICogVGhpcyBtZXRob2QgZG9lcyBpdCBh
bGwgKGxvb2tpbmcgaW4gdGhlIGhhc2h0YWJsZSwgY2hlY2tpbmcgZm9yIGZ1bmN0aW9uCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuaAko
cmV2aXNpb24gOTI3OTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQ
cm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgYm9vbCBtX2hhc05vUHJvcGVydGllc1dpdGhVSW50MzJOYW1lczsKICAgICB9
OwogCi0gICAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNUb1N0
cmluZyhFeGVjU3RhdGUqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSopOwogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
cGVydHlEZXNjcmlwdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmgJKHJldmlzaW9uIDkyNzk5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ2LDggKzQ2LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTVmFsdWUgdmFsdWUo
KSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CiAgICAgICAgIEpTVmFsdWUgZ2V0dGVyKCkgY29u
c3Q7CiAgICAgICAgIEpTVmFsdWUgc2V0dGVyKCkgY29uc3Q7Ci0gICAgICAgIHZvaWQgc2V0VW5k
ZWZpbmVkKCk7Ci0gICAgICAgIHZvaWQgc2V0RGVzY3JpcHRvcihKU1ZhbHVlIHZhbHVlLCB1bnNp
Z25lZCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRVbmRl
ZmluZWQoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXREZXNjcmlwdG9yKEpT
VmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgICAgICB2b2lkIHNldEFjY2Vzc29yRGVz
Y3JpcHRvcihKU1ZhbHVlIGdldHRlciwgSlNWYWx1ZSBzZXR0ZXIsIHVuc2lnbmVkIGF0dHJpYnV0
ZXMpOwogICAgICAgICB2b2lkIHNldFdyaXRhYmxlKGJvb2wpOwogICAgICAgICB2b2lkIHNldEVu
dW1lcmFibGUoYm9vbCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9w
ZXJ0eU5hbWVBcnJheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3BlcnR5TmFtZUFycmF5LmgJKHJldmlzaW9uIDkyNzk5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAt
NjgsOCArNjgsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBKU0dsb2JhbERhdGEqIGds
b2JhbERhdGEoKSB7IHJldHVybiBtX2dsb2JhbERhdGE7IH0KIAotICAgICAgICB2b2lkIGFkZChj
b25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7IGFkZChpZGVudGlmaWVyLmltcGwoKSk7IH0K
LSAgICAgICAgdm9pZCBhZGQoU3RyaW5nSW1wbCopOworICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSB2b2lkIGFkZChjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7IGFkZChpZGVudGlmaWVy
LmltcGwoKSk7IH0KKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBhZGQoU3RyaW5nSW1w
bCopOwogICAgICAgICB2b2lkIGFkZEtub3duVW5pcXVlKFN0cmluZ0ltcGwqIGlkZW50aWZpZXIp
IHsgbV9kYXRhLT5wcm9wZXJ0eU5hbWVWZWN0b3IoKS5hcHBlbmQoSWRlbnRpZmllcihtX2dsb2Jh
bERhdGEsIGlkZW50aWZpZXIpKTsgfQogCiAgICAgICAgIElkZW50aWZpZXImIG9wZXJhdG9yW10o
dW5zaWduZWQgaSkgeyByZXR1cm4gbV9kYXRhLT5wcm9wZXJ0eU5hbWVWZWN0b3IoKVtpXTsgfQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgJKHJl
dmlzaW9uIDkyNzk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlT
bG90LmgJKHdvcmtpbmcgY29weSkKQEAgLTIxOCw3ICsyMTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgICAgIHJldHVybiBtX2dldFZhbHVlOwogICAgICAgICB9CiAgICAgcHJpdmF0ZToK
LSAgICAgICAgSlNWYWx1ZSBmdW5jdGlvbkdldHRlcihFeGVjU3RhdGUqKSBjb25zdDsKKyAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBmdW5jdGlvbkdldHRlcihFeGVjU3RhdGUqKSBj
b25zdDsKIAogICAgICAgICBHZXRWYWx1ZUZ1bmMgbV9nZXRWYWx1ZTsKICAgICAgICAgR2V0SW5k
ZXhWYWx1ZUZ1bmMgbV9nZXRJbmRleFZhbHVlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwLmgJKHJldmlzaW9uIDkyNzk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDE0ICszNCwxNCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICBzdHJ1Y3QgUmVnRXhwUmVwcmVzZW50YXRpb247CiAgICAgY2xhc3Mg
SlNHbG9iYWxEYXRhOwogCi0gICAgUmVnRXhwRmxhZ3MgcmVnRXhwRmxhZ3MoY29uc3QgVVN0cmlu
ZyYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZ0V4cEZsYWdzIHJlZ0V4cEZsYWdzKGNvbnN0
IFVTdHJpbmcmKTsKIAogICAgIGNsYXNzIFJlZ0V4cCA6IHB1YmxpYyBKU0NlbGwgewogICAgIHB1
YmxpYzoKICAgICAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKIAotICAgICAgICBzdGF0aWMgUmVn
RXhwKiBjcmVhdGUoSlNHbG9iYWxEYXRhJiwgY29uc3QgVVN0cmluZyYgcGF0dGVybiwgUmVnRXhw
RmxhZ3MpOwotICAgICAgICB+UmVnRXhwKCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBSZWdFeHAqIGNyZWF0ZShKU0dsb2JhbERhdGEmLCBjb25zdCBVU3RyaW5nJiBwYXR0ZXJu
LCBSZWdFeHBGbGFncyk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIH5SZWdFeHAoKTsKIAog
ICAgICAgICBib29sIGdsb2JhbCgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MgJiBGbGFnR2xvYmFs
OyB9CiAgICAgICAgIGJvb2wgaWdub3JlQ2FzZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MgJiBG
bGFnSWdub3JlQ2FzZTsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUm9w
ZUltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Sb3Bl
SW1wbC5oCShyZXZpc2lvbiA5Mjc5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JvcGVJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTgzLDcgKzgzLDcgQEAgcHJpdmF0ZToKICAg
ICB7CiAgICAgfQogCi0gICAgdm9pZCBkZXN0cnVjdE5vblJlY3Vyc2l2ZSgpOworICAgIEpTX0VY
UE9SVF9QUklWQVRFIHZvaWQgZGVzdHJ1Y3ROb25SZWN1cnNpdmUoKTsKICAgICB2b2lkIGRlcmVm
RmliZXJzTm9uUmVjdXJzaXZlKFZlY3RvcjxSb3BlSW1wbCosIDMyPiYgd29ya1F1ZXVlKTsKIAog
ICAgIGJvb2wgaGFzT25lUmVmKCkgeyByZXR1cm4gKG1fcmVmQ291bnRBbmRGbGFncyAmIHNfcmVm
Q291bnRNYXNrKSA9PSBzX3JlZkNvdW50SW5jcmVtZW50OyB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCShyZXZpc2lvbiA5Mjc5OSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaAkod29ya2luZyBjb3B5KQpAQCAt
MzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBTY29wZUNoYWluSXRlcmF0
b3I7CiAgICAgY2xhc3MgU2xvdFZpc2l0b3I7CiAgICAgCi0gICAgY2xhc3MgU2NvcGVDaGFpbk5v
ZGUgOiBwdWJsaWMgSlNDZWxsIHsKKyAgICBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBTY29wZUNo
YWluTm9kZSA6IHB1YmxpYyBKU0NlbGwgewogICAgIHByaXZhdGU6CiAgICAgICAgIFNjb3BlQ2hh
aW5Ob2RlKFNjb3BlQ2hhaW5Ob2RlKiBuZXh0LCBKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbERh
dGEqIGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBn
bG9iYWxUaGlzKQogICAgICAgICAgICAgOiBKU0NlbGwoKmdsb2JhbERhdGEsIGdsb2JhbERhdGEt
PnNjb3BlQ2hhaW5Ob2RlU3RydWN0dXJlLmdldCgpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmgJKHJldmlzaW9uIDkyNzk5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTcyLDggKzcyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIHNpbmdsZUNoYXJhY3RlclN0cmluZ0NvdW50ID0gbWF4U2luZ2xl
Q2hhcmFjdGVyU3RyaW5nICsgMTsKIAotICAgICAgICB2b2lkIGNyZWF0ZUVtcHR5U3RyaW5nKEpT
R2xvYmFsRGF0YSopOwotICAgICAgICB2b2lkIGNyZWF0ZVNpbmdsZUNoYXJhY3RlclN0cmluZyhK
U0dsb2JhbERhdGEqLCB1bnNpZ25lZCBjaGFyKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCBjcmVhdGVFbXB0eVN0cmluZyhKU0dsb2JhbERhdGEqKTsKKyAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgdm9pZCBjcmVhdGVTaW5nbGVDaGFyYWN0ZXJTdHJpbmcoSlNHbG9iYWxEYXRhKiwg
dW5zaWduZWQgY2hhcik7CiAKICAgICAgICAgSlNTdHJpbmcqIG1fZW1wdHlTdHJpbmc7CiAgICAg
ICAgIEpTU3RyaW5nKiBtX3NpbmdsZUNoYXJhY3RlclN0cmluZ3Nbc2luZ2xlQ2hhcmFjdGVyU3Ry
aW5nQ291bnRdOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2Jq
ZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5n
T2JqZWN0LmgJKHJldmlzaW9uIDkyNzk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaW5nT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKIAogbmFt
ZXNwYWNlIEpTQyB7CiAKLSAgICBjbGFzcyBTdHJpbmdPYmplY3QgOiBwdWJsaWMgSlNXcmFwcGVy
T2JqZWN0IHsKKyAgICBjbGFzcyBKU19FWFBPUlREQVRBIFN0cmluZ09iamVjdCA6IHB1YmxpYyBK
U1dyYXBwZXJPYmplY3QgewogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBKU1dyYXBwZXJP
YmplY3QgQmFzZTsKIApAQCAtNDksNyArNDksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
dmlydHVhbCBib29sIGRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVz
KEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlIG1vZGUgPSBF
eGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKIAotICAgICAgICBzdGF0aWMgY29uc3QgSlNfRVhQ
T1JUREFUQSBDbGFzc0luZm8gc19pbmZvOworICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZv
IHNfaW5mbzsKIAogICAgICAgICBKU1N0cmluZyogaW50ZXJuYWxWYWx1ZSgpIGNvbnN0IHsgcmV0
dXJuIGFzU3RyaW5nKEpTV3JhcHBlck9iamVjdDo6aW50ZXJuYWxWYWx1ZSgpKTt9CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCShyZXZpc2lvbiA5MjY2
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC02OCwxMSArNjgsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3Rh
dGljIHZvaWQgZHVtcFN0YXRpc3RpY3MoKTsKIAotICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBh
ZGRQcm9wZXJ0eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNp
ZmljVmFsdWUsIHNpemVfdCYgb2Zmc2V0KTsKLSAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogYWRk
UHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZShTdHJ1Y3R1cmUqLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3Bl
Y2lmaWNWYWx1ZSwgc2l6ZV90JiBvZmZzZXQpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgU3RydWN0dXJlKiBhZGRQcm9wZXJ0eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3Ry
dWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1
dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUsIHNpemVfdCYgb2Zmc2V0KTsKKyAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVyZSogYWRkUHJvcGVydHlUcmFuc2l0aW9uVG9F
eGlzdGluZ1N0cnVjdHVyZShTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBv
ZmZzZXQpOwogICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiByZW1vdmVQcm9wZXJ0eVRyYW5zaXRp
b24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBzaXplX3QmIG9mZnNldCk7Ci0gICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNoYW5nZVBy
b3RvdHlwZVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgSlNWYWx1ZSBwcm90
b3R5cGUpOwotICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBkZXNwZWNpZnlGdW5jdGlvblRyYW5z
aXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYpOworICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiBjaGFuZ2VQcm90b3R5cGVU
cmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIEpTVmFsdWUgcHJvdG90eXBlKTsK
KyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVyZSogZGVzcGVjaWZ5RnVu
Y3Rpb25UcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZp
ZXImKTsKICAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogZ2V0dGVyU2V0dGVyVHJhbnNpdGlvbihK
U0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKICAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogdG9D
YWNoZWFibGVEaWN0aW9uYXJ5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsK
ICAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogdG9VbmNhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0
aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOwpAQCAtODcsMTAgKzg3LDEwIEBAIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgICAgIFN0cnVjdHVyZSogZmxhdHRlbkRpY3Rpb25hcnlTdHJ1Y3R1
cmUoSlNHbG9iYWxEYXRhJiwgSlNPYmplY3QqKTsKIAotICAgICAgICB+U3RydWN0dXJlKCk7Cisg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIH5TdHJ1Y3R1cmUoKTsKIAogICAgICAgICAvLyBUaGVz
ZSBzaG91bGQgYmUgdXNlZCB3aXRoIGNhdXRpb24uICAKLSAgICAgICAgc2l6ZV90IGFkZFByb3Bl
cnR5V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpOwor
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzaXplX3QgYWRkUHJvcGVydHlXaXRob3V0VHJhbnNp
dGlvbihKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2ln
bmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSk7CiAgICAgICAgIHNpemVfdCBy
ZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIHZvaWQgc2V0UHJvdG90eXBlV2l0aG91dFRy
YW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkgeyBt
X3Byb3RvdHlwZS5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgcHJvdG90eXBlKTsgfQogICAgICAgICAK
QEAgLTExMyw3ICsxMTMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzaXplX3QgZ2V0
KEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CiAgICAgICAg
IHNpemVfdCBnZXQoSlNHbG9iYWxEYXRhJiwgY29uc3QgVVN0cmluZyYgbmFtZSk7Ci0gICAgICAg
IHNpemVfdCBnZXQoSlNHbG9iYWxEYXRhJiwgU3RyaW5nSW1wbCogcHJvcGVydHlOYW1lLCB1bnNp
Z25lZCYgYXR0cmlidXRlcywgSlNDZWxsKiYgc3BlY2lmaWNWYWx1ZSk7CisgICAgICAgIEpTX0VY
UE9SVF9QUklWQVRFIHNpemVfdCBnZXQoSlNHbG9iYWxEYXRhJiwgU3RyaW5nSW1wbCogcHJvcGVy
dHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcywgSlNDZWxsKiYgc3BlY2lmaWNWYWx1ZSk7CiAg
ICAgICAgIHNpemVfdCBnZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzLCBKU0NlbGwqJiBzcGVjaWZp
Y1ZhbHVlKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoIXByb3BlcnR5TmFtZS5pc051
bGwoKSk7CkBAIC0xMzEsNyArMTMxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAg
ICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX3Byb3BlcnR5VGFibGUgPyBtX3By
b3BlcnR5VGFibGUtPmlzRW1wdHkoKSA6IG1fb2Zmc2V0ID09IG5vT2Zmc2V0OyB9CiAKLSAgICAg
ICAgdm9pZCBkZXNwZWNpZnlEaWN0aW9uYXJ5RnVuY3Rpb24oSlNHbG9iYWxEYXRhJiwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBkZXNwZWNpZnlEaWN0aW9uYXJ5RnVuY3Rpb24oSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lKTsKICAgICAgICAgdm9pZCBkaXNhYmxlU3BlY2lmaWNGdW5jdGlv
blRyYWNraW5nKCkgeyBtX3NwZWNpZmljRnVuY3Rpb25UaHJhc2hDb3VudCA9IG1heFNwZWNpZmlj
RnVuY3Rpb25UaHJhc2hDb3VudDsgfQogCiAgICAgICAgIHZvaWQgc2V0RW51bWVyYXRpb25DYWNo
ZShKU0dsb2JhbERhdGEmLCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBlbnVtZXJhdGlvbkNhY2hl
KTsgLy8gRGVmaW5lZCBpbiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmguCkBAIC0xNjQsNyArMTY0
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0
IENsYXNzSW5mbyBzX2luZm87CiAKICAgICBwcml2YXRlOgotICAgICAgICBTdHJ1Y3R1cmUoSlNH
bG9iYWxEYXRhJiwgSlNWYWx1ZSBwcm90b3R5cGUsIGNvbnN0IFR5cGVJbmZvJiwgdW5zaWduZWQg
YW5vbnltb3VzU2xvdENvdW50LCBjb25zdCBDbGFzc0luZm8qKTsKKyAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYsIEpTVmFsdWUgcHJvdG90eXBlLCBjb25z
dCBUeXBlSW5mbyYsIHVuc2lnbmVkIGFub255bW91c1Nsb3RDb3VudCwgY29uc3QgQ2xhc3NJbmZv
Kik7CiAgICAgICAgIFN0cnVjdHVyZShKU0dsb2JhbERhdGEmKTsKICAgICAgICAgU3RydWN0dXJl
KEpTR2xvYmFsRGF0YSYsIGNvbnN0IFN0cnVjdHVyZSopOwogCkBAIC0xOTEsNyArMTkxLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZGVzcGVjaWZ5QWxsRnVuY3Rpb25zKEpTR2xv
YmFsRGF0YSYpOwogCiAgICAgICAgIFBhc3NPd25QdHI8UHJvcGVydHlUYWJsZT4gY29weVByb3Bl
cnR5VGFibGUoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiBvd25lcik7Ci0gICAgICAgIHZvaWQg
bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcChKU0dsb2JhbERhdGEmKTsKKyAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgdm9pZCBtYXRlcmlhbGl6ZVByb3BlcnR5TWFwKEpTR2xvYmFsRGF0YSYpOwogICAg
ICAgICB2b2lkIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeShKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+
Y2xhc3NJbmZvKCkgPT0gJnNfaW5mbyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UaW1lb3V0Q2hlY2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1RpbWVvdXRDaGVja2VyLmgJKHJldmlzaW9uIDkyNzk5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVGltZW91dENoZWNrZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
NTcsOSArNTcsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIC0tbV9zdGFydENvdW50
OwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCByZXNldCgpOworICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSB2b2lkIHJlc2V0KCk7CiAKLSAgICAgICAgYm9vbCBkaWRUaW1lT3V0KEV4ZWNTdGF0
ZSopOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGRpZFRpbWVPdXQoRXhlY1N0YXRl
Kik7CiAKICAgICBwcml2YXRlOgogICAgICAgICB1bnNpZ25lZCBtX3RpbWVvdXRJbnRlcnZhbDsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nLmgJKHJldmlzaW9uIDky
Nzk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMCwyNCArMzAsMjQgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBVU3RyaW5n
IHsKIHB1YmxpYzoKICAgICAvLyBDb25zdHJ1Y3QgYSBudWxsIHN0cmluZywgZGlzdGluZ3Vpc2hh
YmxlIGZyb20gYW4gZW1wdHkgc3RyaW5nLgotICAgIFVTdHJpbmcoKSB7IH0KKyAgICBKU19FWFBP
UlRfUFJJVkFURSBVU3RyaW5nKCkgeyB9CiAKICAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0
aCBVVEYtMTYgZGF0YS4KLSAgICBVU3RyaW5nKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNp
Z25lZCBsZW5ndGgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIFVTdHJpbmcoY29uc3QgVUNoYXIq
IGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCk7CiAKICAgICAvLyBDb25zdHJ1Y3QgYSBzdHJp
bmcgd2l0aCBVVEYtMTYgZGF0YSwgZnJvbSBhIG51bGwtdGVybWluYXRlZCBzb3VyY2UuCi0gICAg
VVN0cmluZyhjb25zdCBVQ2hhciopOworICAgIEpTX0VYUE9SVF9QUklWQVRFIFVTdHJpbmcoY29u
c3QgVUNoYXIqKTsKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyB3aXRoIGxhdGluMSBkYXRh
LgotICAgIFVTdHJpbmcoY29uc3QgY2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsK
KyAgICBKU19FWFBPUlRfUFJJVkFURSBVU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVu
c2lnbmVkIGxlbmd0aCk7CiAKICAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBsYXRpbjEg
ZGF0YSwgZnJvbSBhIG51bGwtdGVybWluYXRlZCBzb3VyY2UuCi0gICAgVVN0cmluZyhjb25zdCBj
aGFyKiBjaGFyYWN0ZXJzKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBVU3RyaW5nKGNvbnN0IGNo
YXIqIGNoYXJhY3RlcnMpOwogCiAgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHJlZmVyZW5jaW5n
IGFuIGV4aXN0aW5nIFN0cmluZ0ltcGwuCi0gICAgVVN0cmluZyhTdHJpbmdJbXBsKiBpbXBsKSA6
IG1faW1wbChpbXBsKSB7IH0KLSAgICBVU3RyaW5nKFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gaW1w
bCkgOiBtX2ltcGwoaW1wbCkgeyB9Ci0gICAgVVN0cmluZyhSZWZQdHI8U3RyaW5nSW1wbD4gaW1w
bCkgOiBtX2ltcGwoaW1wbCkgeyB9CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgVVN0cmluZyhTdHJp
bmdJbXBsKiBpbXBsKSA6IG1faW1wbChpbXBsKSB7IH0KKyAgICBKU19FWFBPUlRfUFJJVkFURSBV
U3RyaW5nKFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gaW1wbCkgOiBtX2ltcGwoaW1wbCkgeyB9Cisg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgVVN0cmluZyhSZWZQdHI8U3RyaW5nSW1wbD4gaW1wbCkgOiBt
X2ltcGwoaW1wbCkgeyB9CiAKICAgICAvLyBJbmxpbmUgdGhlIGRlc3RydWN0b3IuCiAgICAgQUxX
QVlTX0lOTElORSB+VVN0cmluZygpIHsgfQpAQCAtNzYsOSArNzYsOSBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBtX2ltcGwtPmNoYXJhY3RlcnMoKTsKICAgICB9CiAKLSAgICBDU3RyaW5nIGFz
Y2lpKCkgY29uc3Q7Ci0gICAgQ1N0cmluZyBsYXRpbjEoKSBjb25zdDsKLSAgICBDU3RyaW5nIHV0
ZjgoYm9vbCBzdHJpY3QgPSBmYWxzZSkgY29uc3Q7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgQ1N0
cmluZyBhc2NpaSgpIGNvbnN0OworICAgIEpTX0VYUE9SVF9QUklWQVRFIENTdHJpbmcgbGF0aW4x
KCkgY29uc3Q7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgQ1N0cmluZyB1dGY4KGJvb2wgc3RyaWN0
ID0gZmFsc2UpIGNvbnN0OwogCiAgICAgVUNoYXIgb3BlcmF0b3JbXSh1bnNpZ25lZCBpbmRleCkg
Y29uc3QKICAgICB7CkBAIC04NywxMSArODcsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
bV9pbXBsLT5jaGFyYWN0ZXJzKClbaW5kZXhdOwogICAgIH0KIAotICAgIHN0YXRpYyBVU3RyaW5n
IG51bWJlcihpbnQpOwotICAgIHN0YXRpYyBVU3RyaW5nIG51bWJlcih1bnNpZ25lZCk7Ci0gICAg
c3RhdGljIFVTdHJpbmcgbnVtYmVyKGxvbmcpOwotICAgIHN0YXRpYyBVU3RyaW5nIG51bWJlcihs
b25nIGxvbmcpOwotICAgIHN0YXRpYyBVU3RyaW5nIG51bWJlcihkb3VibGUpOworICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBVU3RyaW5nIG51bWJlcihpbnQpOworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBVU3RyaW5nIG51bWJlcih1bnNpZ25lZCk7CisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIFVTdHJpbmcgbnVtYmVyKGxvbmcpOworICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBVU3RyaW5nIG51bWJlcihsb25nIGxvbmcpOworICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBVU3RyaW5nIG51bWJlcihkb3VibGUpOwogCiAgICAgLy8gRmluZCBhIHNpbmdsZSBj
aGFyYWN0ZXIgb3Igc3RyaW5nLCBhbHNvIHdpdGggbWF0Y2ggZnVuY3Rpb24gJiBsYXRpbjEgZm9y
bXMuCiAgICAgc2l6ZV90IGZpbmQoVUNoYXIgYywgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdApA
QCAtMTA3LDcgKzEwNyw3IEBAIHB1YmxpYzoKICAgICBzaXplX3QgcmV2ZXJzZUZpbmQoY29uc3Qg
VVN0cmluZyYgc3RyLCB1bnNpZ25lZCBzdGFydCA9IFVJTlRfTUFYKSBjb25zdAogICAgICAgICB7
IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPnJldmVyc2VGaW5kKHN0ci5pbXBsKCksIHN0YXJ0KSA6
IG5vdEZvdW5kOyB9CiAKLSAgICBVU3RyaW5nIHN1YnN0cmluZ1NoYXJpbmdJbXBsKHVuc2lnbmVk
IHBvcywgdW5zaWduZWQgbGVuID0gVUlOVF9NQVgpIGNvbnN0OworICAgIEpTX0VYUE9SVF9QUklW
QVRFIFVTdHJpbmcgc3Vic3RyaW5nU2hhcmluZ0ltcGwodW5zaWduZWQgcG9zLCB1bnNpZ25lZCBs
ZW4gPSBVSU5UX01BWCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgUmVmUHRyPFN0cmluZ0ltcGw+
IG1faW1wbDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dyaXRlQmFycmll
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dyaXRlQmFy
cmllci5oCShyZXZpc2lvbiA5Mjc5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1dyaXRlQmFycmllci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw4ICszOSw4IEBAIGNsYXNzIEpT
R2xvYmFsT2JqZWN0OwogdGVtcGxhdGU8Y2xhc3MgVD4gY2xhc3MgV3JpdGVCYXJyaWVyQmFzZTsK
IHRlbXBsYXRlPD4gY2xhc3MgV3JpdGVCYXJyaWVyQmFzZTxKU1ZhbHVlPjsKIAotdm9pZCBzbG93
VmFsaWRhdGVDZWxsKEpTQ2VsbCopOwotdm9pZCBzbG93VmFsaWRhdGVDZWxsKEpTR2xvYmFsT2Jq
ZWN0Kik7CitKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNsb3dWYWxpZGF0ZUNlbGwoSlNDZWxsKik7
CitKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNsb3dWYWxpZGF0ZUNlbGwoSlNHbG9iYWxPYmplY3Qq
KTsKICAgICAKICNpZiBFTkFCTEUoR0NfVkFMSURBVElPTikKIHRlbXBsYXRlPGNsYXNzIFQ+IGlu
bGluZSB2b2lkIHZhbGlkYXRlQ2VsbChUIGNlbGwpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL0J5dGVBcnJheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvQnl0ZUFycmF5LmgJKHJldmlzaW9uIDkyNzk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi9CeXRlQXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtODAsNyArODAsNyBAQCBuYW1lc3Bh
Y2UgV1RGIHsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEJ5dGVBcnJheT4gY3JlYXRlKHNpemVfdCBzaXplKTsKKyAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBjcmVhdGUoc2l6ZV90KTsKIAog
ICAgIHByaXZhdGU6CiAgICAgICAgIEJ5dGVBcnJheShzaXplX3Qgc2l6ZSkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFu
ZG9tTnVtYmVyLmgJKHJldmlzaW9uIDkyNzk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3
ICszMiw3IEBAIG5hbWVzcGFjZSBXVEYgewogCiAjaWYgVVNFKE9TX1JBTkRPTU5FU1MpCiB1aW50
MzJfdCBjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpOwotdm9pZCBjcnlwdG9ncmFwaGlj
YWxseVJhbmRvbVZhbHVlcyh2b2lkKiBidWZmZXIsIHNpemVfdCBsZW5ndGgpOworV1RGX0VYUE9S
VF9QUklWQVRFIHZvaWQgY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21WYWx1ZXModm9pZCogYnVmZmVy
LCBzaXplX3QgbGVuZ3RoKTsKICNlbmRpZgogCiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL0N1cnJlbnRUaW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi9DdXJyZW50VGltZS5oCShyZXZpc2lvbiA5Mjc5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvQ3VycmVudFRpbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBu
YW1lc3BhY2UgV1RGIHsKIC8vIFJldHVybnMgdGhlIGN1cnJlbnQgVVRDIHRpbWUgaW4gc2Vjb25k
cywgY291bnRlZCBmcm9tIEphbnVhcnkgMSwgMTk3MC4KIC8vIFByZWNpc2lvbiB2YXJpZXMgZGVw
ZW5kaW5nIG9uIHBsYXRmb3JtIGJ1dCBpcyB1c3VhbGx5IGFzIGdvb2Qgb3IgYmV0dGVyCiAvLyB0
aGFuIGEgbWlsbGlzZWNvbmQuCi1kb3VibGUgY3VycmVudFRpbWUoKTsKK1dURl9FWFBPUlRfUFJJ
VkFURSBkb3VibGUgY3VycmVudFRpbWUoKTsKIAogLy8gU2FtZSB0aGluZywgaW4gbWlsbGlzZWNv
bmRzLgogaW5saW5lIGRvdWJsZSBjdXJyZW50VGltZU1TKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvRGF0ZU1hdGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL0RhdGVNYXRoLmgJKHJldmlzaW9uIDkyNzk5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3d0Zi9EYXRlTWF0aC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBAIGludCBl
cXVpdmFsZW50WWVhckZvckRTVChpbnQgeWVhcik7CiAKIC8vIE5vdCByZWFsbHkgbWF0aCByZWxh
dGVkLCBidXQgdGhpcyBpcyBjdXJyZW50bHkgdGhlIG9ubHkgc2hhcmVkIHBsYWNlIHRvIHB1dCB0
aGVzZS4KIGRvdWJsZSBwYXJzZUVTNURhdGVGcm9tTnVsbFRlcm1pbmF0ZWRDaGFyYWN0ZXJzKGNv
bnN0IGNoYXIqIGRhdGVTdHJpbmcpOwotZG91YmxlIHBhcnNlRGF0ZUZyb21OdWxsVGVybWluYXRl
ZENoYXJhY3RlcnMoY29uc3QgY2hhciogZGF0ZVN0cmluZyk7CitXVEZfRVhQT1JUX1BSSVZBVEUg
ZG91YmxlIHBhcnNlRGF0ZUZyb21OdWxsVGVybWluYXRlZENoYXJhY3RlcnMoY29uc3QgY2hhciog
ZGF0ZVN0cmluZyk7CiBkb3VibGUgdGltZUNsaXAoZG91YmxlKTsKIC8vIGRheU9mV2VlazogWzAs
IDZdIDAgYmVpbmcgTW9uZGF5LCBkYXk6IFsxLCAzMV0sIG1vbnRoOiBbMCwgMTFdLCB5ZWFyOiBl
eDogMjAxMSwgaG91cnM6IFswLCAyM10sIG1pbnV0ZXM6IFswLCA1OV0sIHNlY29uZHM6IFswLCA1
OV0sIHV0Y09mZnNldDogWy03MjAsNzIwXS4gCiBTdHJpbmcgbWFrZVJGQzI4MjJEYXRlU3RyaW5n
KHVuc2lnbmVkIGRheU9mV2VlaywgdW5zaWduZWQgZGF5LCB1bnNpZ25lZCBtb250aCwgdW5zaWdu
ZWQgeWVhciwgdW5zaWduZWQgaG91cnMsIHVuc2lnbmVkIG1pbnV0ZXMsIHVuc2lnbmVkIHNlY29u
ZHMsIGludCB1dGNPZmZzZXQpOwpAQCAtODUsMTUgKzg1LDE1IEBAIGNvbnN0IGRvdWJsZSBtc1Bl
ckRheSA9IDI0LjAgKiA2MC4wICogNjAKIGNvbnN0IGRvdWJsZSBtc1Blck1vbnRoID0gMjU5MjAw
MDAwMC4wOwogCiAvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZGF5cyBmcm9tIDE5NzAtMDEtMDEg
dG8gdGhlIHNwZWNpZmllZCBkYXRlLgotZG91YmxlIGRhdGVUb0RheXNGcm9tMTk3MChpbnQgeWVh
ciwgaW50IG1vbnRoLCBpbnQgZGF5KTsKLWludCBtc1RvWWVhcihkb3VibGUgbXMpOwotaW50IGRh
eUluWWVhcihkb3VibGUgbXMsIGludCB5ZWFyKTsKLWludCBtb250aEZyb21EYXlJblllYXIoaW50
IGRheUluWWVhciwgYm9vbCBsZWFwWWVhcik7Ci1pbnQgZGF5SW5Nb250aEZyb21EYXlJblllYXIo
aW50IGRheUluWWVhciwgYm9vbCBsZWFwWWVhcik7CitXVEZfRVhQT1JUX1BSSVZBVEUgZG91Ymxl
IGRhdGVUb0RheXNGcm9tMTk3MChpbnQgeWVhciwgaW50IG1vbnRoLCBpbnQgZGF5KTsKK1dURl9F
WFBPUlRfUFJJVkFURSBpbnQgbXNUb1llYXIoZG91YmxlIG1zKTsKK1dURl9FWFBPUlRfUFJJVkFU
RSBpbnQgZGF5SW5ZZWFyKGRvdWJsZSBtcywgaW50IHllYXIpOworV1RGX0VYUE9SVF9QUklWQVRF
IGludCBtb250aEZyb21EYXlJblllYXIoaW50IGRheUluWWVhciwgYm9vbCBsZWFwWWVhcik7CitX
VEZfRVhQT1JUX1BSSVZBVEUgaW50IGRheUluTW9udGhGcm9tRGF5SW5ZZWFyKGludCBkYXlJblll
YXIsIGJvb2wgbGVhcFllYXIpOwogCiAvLyBSZXR1cm5zIG9mZnNldCBtaWxsaXNlY29uZHMgZm9y
IFVUQyBhbmQgRFNULgotaW50MzJfdCBjYWxjdWxhdGVVVENPZmZzZXQoKTsKLWRvdWJsZSBjYWxj
dWxhdGVEU1RPZmZzZXQoZG91YmxlIG1zLCBkb3VibGUgdXRjT2Zmc2V0KTsKK1dURl9FWFBPUlRf
UFJJVkFURSBpbnQzMl90IGNhbGN1bGF0ZVVUQ09mZnNldCgpOworV1RGX0VYUE9SVF9QUklWQVRF
IGRvdWJsZSBjYWxjdWxhdGVEU1RPZmZzZXQoZG91YmxlIG1zLCBkb3VibGUgdXRjT2Zmc2V0KTsK
IAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
RGVjaW1hbE51bWJlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
RGVjaW1hbE51bWJlci5oCShyZXZpc2lvbiA5Mjc5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvRGVjaW1hbE51bWJlci5oCSh3b3JraW5nIGNvcHkpCkBAIC04MSwxMSArODEsMTEgQEAg
cHVibGljOgogICAgICAgICBBU1NFUlQobV9zaWduaWZpY2FuZFswXSAhPSAnMCcgfHwgIW1fZXhw
b25lbnQpOwogICAgIH0KIAotICAgIHVuc2lnbmVkIGJ1ZmZlckxlbmd0aEZvclN0cmluZ0RlY2lt
YWwoKSBjb25zdDsKLSAgICB1bnNpZ25lZCBidWZmZXJMZW5ndGhGb3JTdHJpbmdFeHBvbmVudGlh
bCgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSB1bnNpZ25lZCBidWZmZXJMZW5ndGhG
b3JTdHJpbmdEZWNpbWFsKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHVuc2lnbmVk
IGJ1ZmZlckxlbmd0aEZvclN0cmluZ0V4cG9uZW50aWFsKCkgY29uc3Q7CiAKLSAgICB1bnNpZ25l
ZCB0b1N0cmluZ0RlY2ltYWwoVUNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgYnVmZmVyTGVuZ3RoKSBj
b25zdDsKLSAgICB1bnNpZ25lZCB0b1N0cmluZ0V4cG9uZW50aWFsKFVDaGFyKiBidWZmZXIsIHVu
c2lnbmVkIGJ1ZmZlckxlbmd0aCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHVuc2ln
bmVkIHRvU3RyaW5nRGVjaW1hbChVQ2hhciogYnVmZmVyLCB1bnNpZ25lZCBidWZmZXJMZW5ndGgp
IGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSB1bnNpZ25lZCB0b1N0cmluZ0V4cG9uZW50
aWFsKFVDaGFyKiBidWZmZXIsIHVuc2lnbmVkIGJ1ZmZlckxlbmd0aCkgY29uc3Q7CiAKICAgICBi
b29sIHNpZ24oKSBjb25zdCB7IHJldHVybiBtX3NpZ247IH0KICAgICBpbnQgZXhwb25lbnQoKSBj
b25zdCB7IHJldHVybiBtX2V4cG9uZW50OyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL0Zhc3RNYWxsb2MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L0Zhc3RNYWxsb2MuaAkocmV2aXNpb24gOTI3OTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL0Zhc3RNYWxsb2MuaAkod29ya2luZyBjb3B5KQpAQCAtMjksMTIgKzI5LDEyIEBACiBuYW1l
c3BhY2UgV1RGIHsKIAogICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyBjYWxsIENSQVNIKCkgaWYgYW4g
YWxsb2NhdGlvbiBmYWlscy4KLSAgICB2b2lkKiBmYXN0TWFsbG9jKHNpemVfdCk7Ci0gICAgdm9p
ZCogZmFzdFplcm9lZE1hbGxvYyhzaXplX3QpOwotICAgIHZvaWQqIGZhc3RDYWxsb2Moc2l6ZV90
IG51bUVsZW1lbnRzLCBzaXplX3QgZWxlbWVudFNpemUpOwotICAgIHZvaWQqIGZhc3RSZWFsbG9j
KHZvaWQqLCBzaXplX3QpOwotICAgIGNoYXIqIGZhc3RTdHJEdXAoY29uc3QgY2hhciopOwotICAg
IHNpemVfdCBmYXN0TWFsbG9jU2l6ZShjb25zdCB2b2lkKik7CisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHZvaWQqIGZhc3RNYWxsb2Moc2l6ZV90KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9p
ZCogZmFzdFplcm9lZE1hbGxvYyhzaXplX3QpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lk
KiBmYXN0Q2FsbG9jKHNpemVfdCBudW1FbGVtZW50cywgc2l6ZV90IGVsZW1lbnRTaXplKTsKKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCogZmFzdFJlYWxsb2Modm9pZCosIHNpemVfdCk7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIGNoYXIqIGZhc3RTdHJEdXAoY29uc3QgY2hhciopOworICAg
IFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgZmFzdE1hbGxvY1NpemUoY29uc3Qgdm9pZCopOwog
CiAgICAgc3RydWN0IFRyeU1hbGxvY1JldHVyblZhbHVlIHsKICAgICAgICAgVHJ5TWFsbG9jUmV0
dXJuVmFsdWUodm9pZCogZGF0YSkKQEAgLTY4LDEyICs2OCwxMiBAQCBuYW1lc3BhY2UgV1RGIHsK
ICAgICAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogICAgIH0KIAotICAgIFRyeU1hbGxvY1JldHVy
blZhbHVlIHRyeUZhc3RNYWxsb2Moc2l6ZV90IG4pOwotICAgIFRyeU1hbGxvY1JldHVyblZhbHVl
IHRyeUZhc3RaZXJvZWRNYWxsb2Moc2l6ZV90IG4pOwotICAgIFRyeU1hbGxvY1JldHVyblZhbHVl
IHRyeUZhc3RDYWxsb2Moc2l6ZV90IG5fZWxlbWVudHMsIHNpemVfdCBlbGVtZW50X3NpemUpOwot
ICAgIFRyeU1hbGxvY1JldHVyblZhbHVlIHRyeUZhc3RSZWFsbG9jKHZvaWQqIHAsIHNpemVfdCBu
KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgVHJ5TWFsbG9jUmV0dXJuVmFsdWUgdHJ5RmFzdE1h
bGxvYyhzaXplX3Qgbik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFRyeU1hbGxvY1JldHVyblZh
bHVlIHRyeUZhc3RaZXJvZWRNYWxsb2Moc2l6ZV90IG4pOworICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBUcnlNYWxsb2NSZXR1cm5WYWx1ZSB0cnlGYXN0Q2FsbG9jKHNpemVfdCBuX2VsZW1lbnRzLCBz
aXplX3QgZWxlbWVudF9zaXplKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgVHJ5TWFsbG9jUmV0
dXJuVmFsdWUgdHJ5RmFzdFJlYWxsb2Modm9pZCogcCwgc2l6ZV90IG4pOwogCi0gICAgdm9pZCBm
YXN0RnJlZSh2b2lkKik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZmFzdEZyZWUodm9p
ZCopOwogCiAjaWZuZGVmIE5ERUJVRyAgICAKICAgICB2b2lkIGZhc3RNYWxsb2NGb3JiaWQoKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvTUQ1LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9NRDUuaAkocmV2aXNpb24gOTI3OTkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL01ENS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBA
CiAKIG5hbWVzcGFjZSBXVEYgewogCi1jbGFzcyBNRDUgeworY2xhc3MgSlNfRVhQT1JUX1BSSVZB
VEUgTUQ1IHsKIHB1YmxpYzoKICAgICBNRDUoKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3d0Zi9NYWluVGhyZWFkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi9NYWluVGhyZWFkLmgJKHJldmlzaW9uIDkyNzk5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3d0Zi9NYWluVGhyZWFkLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDE1ICszOCwxNSBAQCB0
eXBlZGVmIHVpbnQzMl90IFRocmVhZElkZW50aWZpZXI7CiB0eXBlZGVmIHZvaWQgTWFpblRocmVh
ZEZ1bmN0aW9uKHZvaWQqKTsKIAogLy8gTXVzdCBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJl
YWQuCi12b2lkIGluaXRpYWxpemVNYWluVGhyZWFkKCk7CitKU19FWFBPUlRfUFJJVkFURSB2b2lk
IGluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAKLXZvaWQgY2FsbE9uTWFpblRocmVhZChNYWluVGhy
ZWFkRnVuY3Rpb24qLCB2b2lkKiBjb250ZXh0KTsKK0pTX0VYUE9SVF9QUklWQVRFIHZvaWQgY2Fs
bE9uTWFpblRocmVhZChNYWluVGhyZWFkRnVuY3Rpb24qLCB2b2lkKiBjb250ZXh0KTsKIHZvaWQg
Y2FsbE9uTWFpblRocmVhZEFuZFdhaXQoTWFpblRocmVhZEZ1bmN0aW9uKiwgdm9pZCogY29udGV4
dCk7CiB2b2lkIGNhbmNlbENhbGxPbk1haW5UaHJlYWQoTWFpblRocmVhZEZ1bmN0aW9uKiwgdm9p
ZCogY29udGV4dCk7CiAKLXZvaWQgc2V0TWFpblRocmVhZENhbGxiYWNrc1BhdXNlZChib29sIHBh
dXNlZCk7CitKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldE1haW5UaHJlYWRDYWxsYmFja3NQYXVz
ZWQoYm9vbCk7CiAKLWJvb2wgaXNNYWluVGhyZWFkKCk7CitKU19FWFBPUlRfUFJJVkFURSBib29s
IGlzTWFpblRocmVhZCgpOwogCiAvLyBOT1RFOiB0aGVzZSBmdW5jdGlvbnMgYXJlIGludGVybmFs
IHRvIHRoZSBjYWxsT25NYWluVGhyZWFkIGltcGxlbWVudGF0aW9uLgogdm9pZCBpbml0aWFsaXpl
TWFpblRocmVhZFBsYXRmb3JtKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL051
bGxQdHIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL051bGxQdHIu
aAkocmV2aXNpb24gOTI3OTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL051bGxQdHIu
aAkod29ya2luZyBjb3B5KQpAQCAtNDQsMTAgKzQ0LDEwIEBAIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQkkKICNlbHNlCiAKIG5hbWVzcGFjZSBzdGQgewotICAgIGNsYXNz
IG51bGxwdHJfdCB7IH07CisgICAgY2xhc3MgV1RGX0VYUE9SVF9QUklWQVRFIG51bGxwdHJfdCB7
IH07CiB9CiAKLWV4dGVybiBzdGQ6Om51bGxwdHJfdCBudWxscHRyOworZXh0ZXJuIFdURl9FWFBP
UlRfUFJJVkFURSBzdGQ6Om51bGxwdHJfdCBudWxscHRyOwogCiAjZW5kaWYKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9PU0FsbG9jYXRvci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvT1NBbGxvY2F0b3IuaAkocmV2aXNpb24gOTI3OTkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL09TQWxsb2NhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIC8vIHJlbGVhc2VEZWNvbW1pdHRlZCBzaG91bGQg
YmUgY2FsbGVkIG9uIGEgcmVnaW9uIG9mIFZNIGFsbG9jYXRlZCBieSBhIHNpbmdsZSByZXNlcnZh
dGlvbiwKICAgICAvLyB0aGUgbWVtb3J5IG11c3QgYWxsIGN1cnJlbnRseSBiZSBpbiBhIGRlY29t
bWl0dGVkIHN0YXRlLgogICAgIHN0YXRpYyB2b2lkKiByZXNlcnZlVW5jb21taXR0ZWQoc2l6ZV90
LCBVc2FnZSA9IFVua25vd25Vc2FnZSwgYm9vbCB3cml0YWJsZSA9IHRydWUsIGJvb2wgZXhlY3V0
YWJsZSA9IGZhbHNlLCBib29sIGluY2x1ZGVzR3VhcmRQYWdlcyA9IGZhbHNlKTsKLSAgICBzdGF0
aWMgdm9pZCByZWxlYXNlRGVjb21taXR0ZWQodm9pZCosIHNpemVfdCk7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyB2b2lkIHJlbGVhc2VEZWNvbW1pdHRlZCh2b2lkKiwgc2l6ZV90KTsK
IAogICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJlIHN5bW1ldHJpYzsgdGhleSBjb21taXQgb3IgZGVj
b21taXQgYSByZWdpb24gb2YgVk0gKHVuY29tbWl0dGVkIFZNIHNob3VsZAogICAgIC8vIG5ldmVy
IGJlIGFjY2Vzc2VkLCBzaW5jZSB0aGUgT1MgbWF5IG5vdCBoYXZlIGF0dGFjaGVkIHBoeXNpY2Fs
IG1lbW9yeSBmb3IgdGhlc2UgcmVnaW9ucykuCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAg
ICAvLyBUaGVzZSBtZXRob2RzIGFyZSBzeW1tZXRyaWM7IHJlc2VydmVBbmRDb21taXQgYWxsb2Nh
dGVzIFZNIGluIGFuIGNvbW1pdHRlZCBzdGF0ZSwKICAgICAvLyBkZWNvbW1pdEFuZFJlbGVhc2Ug
c2hvdWxkIGJlIGNhbGxlZCBvbiBhIHJlZ2lvbiBvZiBWTSBhbGxvY2F0ZWQgYnkgYSBzaW5nbGUg
cmVzZXJ2YXRpb24sCiAgICAgLy8gdGhlIG1lbW9yeSBtdXN0IGFsbCBjdXJyZW50bHkgYmUgaW4g
YSBjb21taXR0ZWQgc3RhdGUuCi0gICAgc3RhdGljIHZvaWQqIHJlc2VydmVBbmRDb21taXQoc2l6
ZV90LCBVc2FnZSA9IFVua25vd25Vc2FnZSwgYm9vbCB3cml0YWJsZSA9IHRydWUsIGJvb2wgZXhl
Y3V0YWJsZSA9IGZhbHNlLCBib29sIGluY2x1ZGVzR3VhcmRQYWdlcyA9IGZhbHNlKTsKKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQqIHJlc2VydmVBbmRDb21taXQoc2l6ZV90LCBV
c2FnZSA9IFVua25vd25Vc2FnZSwgYm9vbCB3cml0YWJsZSA9IHRydWUsIGJvb2wgZXhlY3V0YWJs
ZSA9IGZhbHNlLCBib29sIGluY2x1ZGVzR3VhcmRQYWdlcyA9IGZhbHNlKTsKICAgICBzdGF0aWMg
dm9pZCBkZWNvbW1pdEFuZFJlbGVhc2Uodm9pZCogYmFzZSwgc2l6ZV90IHNpemUpOwogCiAgICAg
Ly8gVGhlc2UgbWV0aG9kcyBhcmUgYWtpbiB0byByZXNlcnZlQW5kQ29tbWl0L2RlY29tbWl0QW5k
UmVsZWFzZSwgYWJvdmUgLSBob3dldmVyIHJhdGhlciB0aGFuCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL1JhbmRvbU51bWJlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvUmFuZG9tTnVtYmVyLmgJKHJldmlzaW9uIDkyNzk5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi9SYW5kb21OdW1iZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyAr
MzAsNyBAQCBuYW1lc3BhY2UgV1RGIHsKIAogICAgIC8vIFJldHVybnMgYSBwc2V1ZG8tcmFuZG9t
IG51bWJlciBpbiB0aGUgcmFuZ2UgWzAsIDEpLCBhdHRlbXB0cyB0byBiZQogICAgIC8vIGNyeXB0
b2dyYXBoaWNhbGx5IHNlY3VyZSBpZiBwb3NzaWJsZSBvbiB0aGUgdGFyZ2V0IHBsYXRmb3JtCi0g
ICAgZG91YmxlIHJhbmRvbU51bWJlcigpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIGRvdWJsZSBy
YW5kb21OdW1iZXIoKTsKIAogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1Jl
ZkNvdW50ZWRMZWFrQ291bnRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmgJKHJldmlzaW9uIDkyNzk5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMjYsNyArMjYsNyBAQAogCiBuYW1lc3BhY2UgV1RGIHsKICAgICAKLSAgICBzdHJ1Y3Qg
UmVmQ291bnRlZExlYWtDb3VudGVyIHsKKyAgICBzdHJ1Y3QgSlNfRVhQT1JUX1BSSVZBVEUgUmVm
Q291bnRlZExlYWtDb3VudGVyIHsKICAgICAgICAgc3RhdGljIHZvaWQgc3VwcHJlc3NNZXNzYWdl
cyhjb25zdCBjaGFyKik7CiAgICAgICAgIHN0YXRpYyB2b2lkIGNhbmNlbE1lc3NhZ2VTdXBwcmVz
c2lvbihjb25zdCBjaGFyKik7CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi9UaHJlYWRTcGVjaWZpYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvVGhyZWFkU3BlY2lmaWMuaAkocmV2aXNpb24gOTI3OTkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL1RocmVhZFNwZWNpZmljLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxNiw4ICsy
MTYsOCBAQCBpbmxpbmUgdm9pZCBUaHJlYWRTcGVjaWZpYzxUPjo6c2V0KFQqIHB0CiAvLyAyKSBX
ZSBkbyBub3QgbmVlZCB0byBob2xkIG1hbnkgaW5zdGFuY2VzIG9mIFRocmVhZFNwZWNpZmljPD4g
ZGF0YS4gVGhpcyBmaXhlZCBudW1iZXIgc2hvdWxkIGJlIGZhciBlbm91Z2guCiBjb25zdCBpbnQg
a01heFRsc0tleVNpemUgPSAyNTY7CiAKLWxvbmcmIHRsc0tleUNvdW50KCk7Ci1EV09SRCogdGxz
S2V5cygpOworSlNfRVhQT1JUX1BSSVZBVEUgbG9uZyYgdGxzS2V5Q291bnQoKTsKK0pTX0VYUE9S
VF9QUklWQVRFIERXT1JEKiB0bHNLZXlzKCk7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBpbmxp
bmUgVGhyZWFkU3BlY2lmaWM8VD46OlRocmVhZFNwZWNpZmljKCkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi9UaHJlYWRpbmcuaAkocmV2aXNpb24gOTI3OTkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL1RocmVhZGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC04MywyNyArODMsMjcg
QEAgdHlwZWRlZiB2b2lkKiAoKlRocmVhZEZ1bmN0aW9uKSh2b2lkKiBhcgogLy8gVGhpcyBmdW5j
dGlvbiBtdXN0IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4gSXQgaXMgc2FmZSB0byBj
YWxsIGl0IHJlcGVhdGVkbHkuCiAvLyBEYXJ3aW4gaXMgYW4gZXhjZXB0aW9uIHRvIHRoaXMgcnVs
ZTogaXQgaXMgT0sgdG8gY2FsbCBpdCBmcm9tIGFueSB0aHJlYWQsIHRoZSBvbmx5IAogLy8gcmVx
dWlyZW1lbnQgaXMgdGhhdCB0aGUgY2FsbHMgYXJlIG5vdCByZWVudHJhbnQuCi12b2lkIGluaXRp
YWxpemVUaHJlYWRpbmcoKTsKK0pTX0VYUE9SVF9QUklWQVRFIHZvaWQgaW5pdGlhbGl6ZVRocmVh
ZGluZygpOwogCiAvLyBSZXR1cm5zIDAgaWYgdGhyZWFkIGNyZWF0aW9uIGZhaWxlZC4KIC8vIFRo
ZSB0aHJlYWQgbmFtZSBtdXN0IGJlIGEgbGl0ZXJhbCBzaW5jZSBvbiBzb21lIHBsYXRmb3JtcyBp
dCdzIHBhc3NlZCBpbiB0byB0aGUgdGhyZWFkLgotVGhyZWFkSWRlbnRpZmllciBjcmVhdGVUaHJl
YWQoVGhyZWFkRnVuY3Rpb24sIHZvaWQqLCBjb25zdCBjaGFyKiB0aHJlYWROYW1lKTsKK0pTX0VY
UE9SVF9QUklWQVRFIFRocmVhZElkZW50aWZpZXIgY3JlYXRlVGhyZWFkKFRocmVhZEZ1bmN0aW9u
LCB2b2lkKiwgY29uc3QgY2hhciogdGhyZWFkTmFtZSk7CiAKIC8vIEludGVybmFsIHBsYXRmb3Jt
LXNwZWNpZmljIGNyZWF0ZVRocmVhZCBpbXBsZW1lbnRhdGlvbi4KLVRocmVhZElkZW50aWZpZXIg
Y3JlYXRlVGhyZWFkSW50ZXJuYWwoVGhyZWFkRnVuY3Rpb24sIHZvaWQqLCBjb25zdCBjaGFyKiB0
aHJlYWROYW1lKTsKK0pTX0VYUE9SVF9QUklWQVRFIFRocmVhZElkZW50aWZpZXIgY3JlYXRlVGhy
ZWFkSW50ZXJuYWwoVGhyZWFkRnVuY3Rpb24sIHZvaWQqLCBjb25zdCBjaGFyKiB0aHJlYWROYW1l
KTsKIAogLy8gQ2FsbGVkIGluIHRoZSB0aHJlYWQgZHVyaW5nIGluaXRpYWxpemF0aW9uLgogLy8g
SGVscGZ1bCBmb3IgcGxhdGZvcm1zIHdoZXJlIHRoZSB0aHJlYWQgbmFtZSBtdXN0IGJlIHNldCBm
cm9tIHdpdGhpbiB0aGUgdGhyZWFkLgogdm9pZCBpbml0aWFsaXplQ3VycmVudFRocmVhZEludGVy
bmFsKGNvbnN0IGNoYXIqIHRocmVhZE5hbWUpOwogCi1UaHJlYWRJZGVudGlmaWVyIGN1cnJlbnRU
aHJlYWQoKTsKLWludCB3YWl0Rm9yVGhyZWFkQ29tcGxldGlvbihUaHJlYWRJZGVudGlmaWVyLCB2
b2lkKiopOwotdm9pZCBkZXRhY2hUaHJlYWQoVGhyZWFkSWRlbnRpZmllcik7CitKU19FWFBPUlRf
UFJJVkFURSBUaHJlYWRJZGVudGlmaWVyIGN1cnJlbnRUaHJlYWQoKTsKK0pTX0VYUE9SVF9QUklW
QVRFIGludCB3YWl0Rm9yVGhyZWFkQ29tcGxldGlvbihUaHJlYWRJZGVudGlmaWVyLCB2b2lkKiop
OworSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkZXRhY2hUaHJlYWQoVGhyZWFkSWRlbnRpZmllcik7
CiAKLXZvaWQgeWllbGQoKTsKK0pTX0VYUE9SVF9QUklWQVRFIHZvaWQgeWllbGQoKTsKIAotdm9p
ZCBsb2NrQXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljTXV0ZXgoKTsKLXZvaWQgdW5sb2NrQXRv
bWljYWxseUluaXRpYWxpemVkU3RhdGljTXV0ZXgoKTsKK0pTX0VYUE9SVF9QUklWQVRFIHZvaWQg
bG9ja0F0b21pY2FsbHlJbml0aWFsaXplZFN0YXRpY011dGV4KCk7CitKU19FWFBPUlRfUFJJVkFU
RSB2b2lkIHVubG9ja0F0b21pY2FsbHlJbml0aWFsaXplZFN0YXRpY011dGV4KCk7CiAKIH0gLy8g
bmFtZXNwYWNlIFdURgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGlu
Z1ByaW1pdGl2ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1Ro
cmVhZGluZ1ByaW1pdGl2ZXMuaAkocmV2aXNpb24gOTI3OTkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDEy
ICsxMDAsMTIgQEAgdHlwZWRlZiB2b2lkKiBQbGF0Zm9ybUNvbmRpdGlvbjsKIGNsYXNzIE11dGV4
IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShNdXRleCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgotICAgIE11dGV4KCk7Ci0gICAgfk11dGV4KCk7CisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgTXV0ZXgoKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB+TXV0ZXgoKTsKIAotICAg
IHZvaWQgbG9jaygpOwotICAgIGJvb2wgdHJ5TG9jaygpOwotICAgIHZvaWQgdW5sb2NrKCk7Cisg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBsb2NrKCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
Ym9vbCB0cnlMb2NrKCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCB1bmxvY2soKTsKIAog
cHVibGljOgogICAgIFBsYXRmb3JtTXV0ZXgmIGltcGwoKSB7IHJldHVybiBtX211dGV4OyB9CkBA
IC0xMzYsMTUgKzEzNiwxNSBAQCBwcml2YXRlOgogY2xhc3MgVGhyZWFkQ29uZGl0aW9uIHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShUaHJlYWRDb25kaXRpb24pOwogcHVibGljOgotICAgIFRo
cmVhZENvbmRpdGlvbigpOwotICAgIH5UaHJlYWRDb25kaXRpb24oKTsKKyAgICBKU19FWFBPUlRf
UFJJVkFURSBUaHJlYWRDb25kaXRpb24oKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB+VGhyZWFk
Q29uZGl0aW9uKCk7CiAgICAgCi0gICAgdm9pZCB3YWl0KE11dGV4JiBtdXRleCk7CisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgdm9pZCB3YWl0KE11dGV4Jik7CiAgICAgLy8gUmV0dXJucyB0cnVlIGlm
IHRoZSBjb25kaXRpb24gd2FzIHNpZ25hbGVkIGJlZm9yZSBhYnNvbHV0ZVRpbWUsIGZhbHNlIGlm
IHRoZSBhYnNvbHV0ZVRpbWUgd2FzIHJlYWNoZWQgb3IgaXMgaW4gdGhlIHBhc3QuCiAgICAgLy8g
VGhlIGFic29sdXRlVGltZSBpcyBpbiBzZWNvbmRzLCBzdGFydGluZyBvbiBKYW51YXJ5IDEsIDE5
NzAuIFRoZSB0aW1lIGlzIGFzc3VtZWQgdG8gdXNlIHRoZSBzYW1lIHRpbWUgem9uZSBhcyBXVEY6
OmN1cnJlbnRUaW1lKCkuCi0gICAgYm9vbCB0aW1lZFdhaXQoTXV0ZXgmLCBkb3VibGUgYWJzb2x1
dGVUaW1lKTsKLSAgICB2b2lkIHNpZ25hbCgpOwotICAgIHZvaWQgYnJvYWRjYXN0KCk7CisgICAg
SlNfRVhQT1JUX1BSSVZBVEUgYm9vbCB0aW1lZFdhaXQoTXV0ZXgmLCBkb3VibGUgYWJzb2x1dGVU
aW1lKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNpZ25hbCgpOworICAgIEpTX0VYUE9S
VF9QUklWQVRFIHZvaWQgYnJvYWRjYXN0KCk7CiAgICAgCiBwcml2YXRlOgogICAgIFBsYXRmb3Jt
Q29uZGl0aW9uIG1fY29uZGl0aW9uOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9X
VEZUaHJlYWREYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9X
VEZUaHJlYWREYXRhLmgJKHJldmlzaW9uIDkyNzk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi9XVEZUaHJlYWREYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTg5LDggKzg5LDggQEAgdHlw
ZWRlZiB2b2lkICgqQXRvbWljU3RyaW5nVGFibGVEZXN0cnVjdAogY2xhc3MgV1RGVGhyZWFkRGF0
YSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV1RGVGhyZWFkRGF0YSk7CiBwdWJsaWM6Ci0g
ICAgV1RGVGhyZWFkRGF0YSgpOwotICAgIH5XVEZUaHJlYWREYXRhKCk7CisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgV1RGVGhyZWFkRGF0YSgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIH5XVEZUaHJl
YWREYXRhKCk7CiAKICAgICBBdG9taWNTdHJpbmdUYWJsZSogYXRvbWljU3RyaW5nVGFibGUoKQog
ICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvZHRvYS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvZHRvYS5oCShyZXZpc2lvbiA5Mjc5OSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvZHRvYS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwx
OCArMzAsMTggQEAgZXh0ZXJuIFdURjo6TXV0ZXgqIHNfZHRvYVA1TXV0ZXg7CiAKIC8vIHMwMDog
aW5wdXQgc3RyaW5nLiBNdXN0IG5vdCBiZSAwIGFuZCBtdXN0IGJlIHRlcm1pbmF0ZWQgYnkgMC4K
IC8vIHNlOiAqc2Ugd2lsbCBoYXZlIHRoZSBsYXN0IGNvbnN1bWVkIGNoYXJhY3RlciBwb3NpdGlv
biArIDEuCi1kb3VibGUgc3RydG9kKGNvbnN0IGNoYXIqIHMwMCwgY2hhcioqIHNlKTsKK1dURl9F
WFBPUlRfUFJJVkFURSBkb3VibGUgc3RydG9kKGNvbnN0IGNoYXIqIHMwMCwgY2hhcioqIHNlKTsK
IAogdHlwZWRlZiBjaGFyIER0b2FCdWZmZXJbODBdOwogCi12b2lkIGR0b2EoRHRvYUJ1ZmZlciBy
ZXN1bHQsIGRvdWJsZSBkZCwgYm9vbCYgc2lnbiwgaW50JiBleHBvbmVudCwgdW5zaWduZWQmIHBy
ZWNpc2lvbik7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBkdG9hKER0b2FCdWZmZXIgcmVzdWx0
LCBkb3VibGUgZGQsIGJvb2wmIHNpZ24sIGludCYgZXhwb25lbnQsIHVuc2lnbmVkJiBwcmVjaXNp
b24pOwogdm9pZCBkdG9hUm91bmRTRihEdG9hQnVmZmVyIHJlc3VsdCwgZG91YmxlIGRkLCBpbnQg
bmRpZ2l0cywgYm9vbCYgc2lnbiwgaW50JiBleHBvbmVudCwgdW5zaWduZWQmIHByZWNpc2lvbik7
CiB2b2lkIGR0b2FSb3VuZERQKER0b2FCdWZmZXIgcmVzdWx0LCBkb3VibGUgZGQsIGludCBuZGln
aXRzLCBib29sJiBzaWduLCBpbnQmIGV4cG9uZW50LCB1bnNpZ25lZCYgcHJlY2lzaW9uKTsKIAog
Ly8gU2l6ZSA9IDgwIGZvciBzaXplb2YoRHRvYUJ1ZmZlcikgKyBzb21lIHNpZ24gYml0cywgZGVj
aW1hbCBwb2ludCwgJ2UnLCBleHBvbmVudCBkaWdpdHMuCiBjb25zdCB1bnNpZ25lZCBOdW1iZXJU
b1N0cmluZ0J1ZmZlckxlbmd0aCA9IDk2OwogdHlwZWRlZiBVQ2hhciBOdW1iZXJUb1N0cmluZ0J1
ZmZlcltOdW1iZXJUb1N0cmluZ0J1ZmZlckxlbmd0aF07Ci11bnNpZ25lZCBudW1iZXJUb1N0cmlu
Zyhkb3VibGUsIE51bWJlclRvU3RyaW5nQnVmZmVyKTsKK1dURl9FWFBPUlRfUFJJVkFURSB1bnNp
Z25lZCBudW1iZXJUb1N0cmluZyhkb3VibGUsIE51bWJlclRvU3RyaW5nQnVmZmVyKTsKIAogfSAv
LyBuYW1lc3BhY2UgV1RGCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9B
dG9taWNTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3Rl
eHQvQXRvbWljU3RyaW5nLmgJKHJldmlzaW9uIDkyNzk5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwyNyArMzgs
MzEgQEAgc3RydWN0IEF0b21pY1N0cmluZ0hhc2g7CiAKIGNsYXNzIEF0b21pY1N0cmluZyB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgaW5pdCgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBz
dGF0aWMgdm9pZCBpbml0KCk7CiAKLSAgICBBdG9taWNTdHJpbmcoKSB7IH0KLSAgICBBdG9taWNT
dHJpbmcoY29uc3QgY2hhciogcykgOiBtX3N0cmluZyhhZGQocykpIHsgfQorICAgIFdURl9FWFBP
UlRfUFJJVkFURSBBdG9taWNTdHJpbmcoKSB7IH0KKyAgICAvLyBjb3B5IGNvbnN0cnVjdG9yIG5l
ZWRzIHRvIGJlIGV4cGxpY2l0bHkgZGVmaW5lZCBzbyB3ZSBjYW4gc3BlY2lmeSBwcm9wZXIgZGxs
IGxpbmthZ2UKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgQXRvbWljU3RyaW5nKGNvbnN0IEF0b21p
Y1N0cmluZyYgcykgOiBtX3N0cmluZyhzLm1fc3RyaW5nKSB7IH0KKyAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgQXRvbWljU3RyaW5nKGNvbnN0IGNoYXIqIHMpIDogbV9zdHJpbmcoYWRkKHMpKSB7IH0K
ICAgICBBdG9taWNTdHJpbmcoY29uc3QgVUNoYXIqIHMsIHVuc2lnbmVkIGxlbmd0aCkgOiBtX3N0
cmluZyhhZGQocywgbGVuZ3RoKSkgeyB9CiAgICAgQXRvbWljU3RyaW5nKGNvbnN0IFVDaGFyKiBz
LCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIGV4aXN0aW5nSGFzaCkgOiBtX3N0cmluZyhhZGQo
cywgbGVuZ3RoLCBleGlzdGluZ0hhc2gpKSB7IH0KICAgICBBdG9taWNTdHJpbmcoY29uc3QgVUNo
YXIqIHMpIDogbV9zdHJpbmcoYWRkKHMpKSB7IH0KICAgICBBVE9NSUNTVFJJTkdfQ09OVkVSU0lP
TiBBdG9taWNTdHJpbmcoU3RyaW5nSW1wbCogaW1wKSA6IG1fc3RyaW5nKGFkZChpbXApKSB7IH0K
ICAgICBBdG9taWNTdHJpbmcoQXRvbWljU3RyaW5nSW1wbCogaW1wKSA6IG1fc3RyaW5nKGltcCkg
eyB9Ci0gICAgQVRPTUlDU1RSSU5HX0NPTlZFUlNJT04gQXRvbWljU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgcykgOiBtX3N0cmluZyhhZGQocy5pbXBsKCkpKSB7IH0KKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgQVRPTUlDU1RSSU5HX0NPTlZFUlNJT04gQXRvbWljU3RyaW5nKGNvbnN0IFN0cmluZyYgcykg
OiBtX3N0cmluZyhhZGQocy5pbXBsKCkpKSB7IH0KIAogICAgIC8vIEhhc2ggdGFibGUgZGVsZXRl
ZCB2YWx1ZXMsIHdoaWNoIGFyZSBvbmx5IGNvbnN0cnVjdGVkIGFuZCBuZXZlciBjb3BpZWQgb3Ig
ZGVzdHJveWVkLgotICAgIEF0b21pY1N0cmluZyhXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5
cGUpIDogbV9zdHJpbmcoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpIHsgfQotICAgIGJvb2wg
aXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5pc0hhc2hU
YWJsZURlbGV0ZWRWYWx1ZSgpOyB9CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIEF0b21pY1N0cmlu
ZyhXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpIDogbV9zdHJpbmcoV1RGOjpIYXNoVGFi
bGVEZWxldGVkVmFsdWUpIHsgfQorICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGlzSGFzaFRh
YmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuaXNIYXNoVGFibGVEZWxl
dGVkVmFsdWUoKTsgfQogCi0gICAgc3RhdGljIEF0b21pY1N0cmluZ0ltcGwqIGZpbmQoY29uc3Qg
VUNoYXIqIHMsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgZXhpc3RpbmdIYXNoKTsKKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgfkF0b21pY1N0cmluZygpIHsgfQorCisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBBdG9taWNTdHJpbmdJbXBsKiBmaW5kKGNvbnN0IFVDaGFyKiwgdW5zaWdu
ZWQgbGVuZ3RoLCB1bnNpZ25lZCBleGlzdGluZ0hhc2gpOwogCiAgICAgb3BlcmF0b3IgY29uc3Qg
U3RyaW5nJigpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9CiAgICAgY29uc3QgU3RyaW5nJiBz
dHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfTsKIAotICAgIEF0b21pY1N0cmluZ0lt
cGwqIGltcGwoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxBdG9taWNTdHJpbmdJbXBsICo+
KG1fc3RyaW5nLmltcGwoKSk7IH0KKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgQXRvbWljU3RyaW5n
SW1wbCogaW1wbCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEF0b21pY1N0cmluZ0ltcGwg
Kj4obV9zdHJpbmcuaW1wbCgpKTsgfQogICAgIAogICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJz
KCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuY2hhcmFjdGVycygpOyB9CiAgICAgdW5zaWduZWQg
bGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcubGVuZ3RoKCk7IH0KQEAgLTgyLDcgKzg2
LDcgQEAgcHVibGljOgogICAgIGJvb2wgZW5kc1dpdGgoY29uc3QgU3RyaW5nJiBzLCBib29sIGNh
c2VTZW5zaXRpdmUgPSB0cnVlKSBjb25zdAogICAgICAgICB7IHJldHVybiBtX3N0cmluZy5lbmRz
V2l0aChzLCBjYXNlU2Vuc2l0aXZlKTsgfQogICAgIAotICAgIEF0b21pY1N0cmluZyBsb3dlcigp
IGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBBdG9taWNTdHJpbmcgbG93ZXIoKSBjb25z
dDsKICAgICBBdG9taWNTdHJpbmcgdXBwZXIoKSBjb25zdCB7IHJldHVybiBBdG9taWNTdHJpbmco
aW1wbCgpLT51cHBlcigpKTsgfQogICAgIAogICAgIGludCB0b0ludChib29sKiBvayA9IDApIGNv
bnN0IHsgcmV0dXJuIG1fc3RyaW5nLnRvSW50KG9rKTsgfQpAQCAtMTEwLDggKzExNCw4IEBAIHB1
YmxpYzoKIAogICAgIC8vIEF0b21pY1N0cmluZzo6ZnJvbVVURjggd2lsbCByZXR1cm4gYSBudWxs
IHN0cmluZyBpZgogICAgIC8vIHRoZSBpbnB1dCBkYXRhIGNvbnRhaW5zIGludmFsaWQgVVRGLTgg
c2VxdWVuY2VzLgotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgZnJvbVVURjgoY29uc3QgY2hhcios
IHNpemVfdCk7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBmcm9tVVRGOChjb25zdCBjaGFyKik7
CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBBdG9taWNTdHJpbmcgZnJvbVVURjgoY29u
c3QgY2hhciosIHNpemVfdCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBBdG9taWNT
dHJpbmcgZnJvbVVURjgoY29uc3QgY2hhciopOwogCiAjaWZuZGVmIE5ERUJVRwogICAgIHZvaWQg
c2hvdygpIGNvbnN0OwpAQCAtMTE5LDggKzEyMyw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
U3RyaW5nIG1fc3RyaW5nOwogICAgIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+
IGFkZChjb25zdCBjaGFyKik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRk
KGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRkKGNvbnN0IGNoYXIqKTsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRkKGNvbnN0IFVD
aGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBs
PiBhZGQoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIGV4aXN0aW5nSGFz
aCk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRkKGNvbnN0IFVDaGFyKik7
CiAgICAgQUxXQVlTX0lOTElORSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChTdHJpbmdJbXBs
KiByKQpAQCAtMTI5LDEzICsxMzMsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiBy
OwogICAgICAgICByZXR1cm4gYWRkU2xvd0Nhc2Uocik7CiAgICAgfQotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFN0cmluZ0ltcGw+IGFkZFNsb3dDYXNlKFN0cmluZ0ltcGwqKTsKLSAgICBzdGF0aWMg
QXRvbWljU3RyaW5nIGZyb21VVEY4SW50ZXJuYWwoY29uc3QgY2hhciosIGNvbnN0IGNoYXIqKTsK
KyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRk
U2xvd0Nhc2UoU3RyaW5nSW1wbCopOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgQXRv
bWljU3RyaW5nIGZyb21VVEY4SW50ZXJuYWwoY29uc3QgY2hhciosIGNvbnN0IGNoYXIqKTsKIH07
CiAKIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgQXRvbWljU3RyaW5nJiBhLCBjb25zdCBB
dG9taWNTdHJpbmcmIGIpIHsgcmV0dXJuIGEuaW1wbCgpID09IGIuaW1wbCgpOyB9Ci1ib29sIG9w
ZXJhdG9yPT0oY29uc3QgQXRvbWljU3RyaW5nJiBhLCBjb25zdCBjaGFyKiBiKTsKLWJvb2wgb3Bl
cmF0b3I9PShjb25zdCBBdG9taWNTdHJpbmcmIGEsIGNvbnN0IFZlY3RvcjxVQ2hhcj4mIGIpOwor
V1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBdG9taWNTdHJpbmcmLCBj
b25zdCBjaGFyKiBiKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIG9wZXJhdG9yPT0oY29uc3Qg
QXRvbWljU3RyaW5nJiwgY29uc3QgVmVjdG9yPFVDaGFyPiYgYik7CiBpbmxpbmUgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IEF0b21pY1N0cmluZyYgYSwgY29uc3QgU3RyaW5nJiBiKSB7IHJldHVybiBl
cXVhbChhLmltcGwoKSwgYi5pbXBsKCkpOyB9CiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IGNoYXIqIGEsIGNvbnN0IEF0b21pY1N0cmluZyYgYikgeyByZXR1cm4gYiA9PSBhOyB9CiBpbmxp
bmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0cmluZyYgYSwgY29uc3QgQXRvbWljU3RyaW5nJiBi
KSB7IHJldHVybiBlcXVhbChhLmltcGwoKSwgYi5pbXBsKCkpOyB9CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL3RleHQvQ1N0cmluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvdGV4dC9DU3RyaW5nLmgJKHJldmlzaW9uIDkyNzk5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L0NTdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtNTIs
MTAgKzUyLDEwIEBAIHByaXZhdGU6CiBjbGFzcyBDU3RyaW5nIHsKIHB1YmxpYzoKICAgICBDU3Ry
aW5nKCkgeyB9Ci0gICAgQ1N0cmluZyhjb25zdCBjaGFyKik7Ci0gICAgQ1N0cmluZyhjb25zdCBj
aGFyKiwgc2l6ZV90IGxlbmd0aCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIENTdHJpbmcoY29u
c3QgY2hhciopOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBDU3RyaW5nKGNvbnN0IGNoYXIqLCBz
aXplX3QgbGVuZ3RoKTsKICAgICBDU3RyaW5nKENTdHJpbmdCdWZmZXIqIGJ1ZmZlcikgOiBtX2J1
ZmZlcihidWZmZXIpIHsgfQotICAgIHN0YXRpYyBDU3RyaW5nIG5ld1VuaW5pdGlhbGl6ZWQoc2l6
ZV90IGxlbmd0aCwgY2hhciomIGNoYXJhY3RlckJ1ZmZlcik7CisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBDU3RyaW5nIG5ld1VuaW5pdGlhbGl6ZWQoc2l6ZV90IGxlbmd0aCwgY2hhciom
IGNoYXJhY3RlckJ1ZmZlcik7CiAKICAgICBjb25zdCBjaGFyKiBkYXRhKCkgY29uc3QKICAgICB7
CkBAIC03Nyw3ICs3Nyw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPENTdHJpbmdCdWZmZXI+IG1f
YnVmZmVyOwogfTsKIAotYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTdHJpbmcmIGEsIGNvbnN0IENT
dHJpbmcmIGIpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDU3Ry
aW5nJiBhLCBjb25zdCBDU3RyaW5nJiBiKTsKIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3Qg
Q1N0cmluZyYgYSwgY29uc3QgQ1N0cmluZyYgYikgeyByZXR1cm4gIShhID09IGIpOyB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdURgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0
cmluZ0J1aWxkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oCShyZXZpc2lvbiA5Mjc5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDggKzM4
LDggQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICB2b2lkIGFwcGVuZChjb25zdCBVQ2hh
ciosIHVuc2lnbmVkKTsKLSAgICB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiwgdW5zaWduZWQpOwor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGFwcGVuZChjb25zdCBVQ2hhciosIHVuc2lnbmVk
KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmQoY29uc3QgY2hhciosIHVuc2ln
bmVkKTsKIAogICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIHsKQEAg
LTk5LDExICs5OSwxMSBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJl
dHVybiAhbGVuZ3RoKCk7IH0KIAotICAgIHZvaWQgcmVzZXJ2ZUNhcGFjaXR5KHVuc2lnbmVkIG5l
d0NhcGFjaXR5KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCByZXNlcnZlQ2FwYWNpdHko
dW5zaWduZWQgbmV3Q2FwYWNpdHkpOwogCi0gICAgdm9pZCByZXNpemUodW5zaWduZWQgbmV3U2l6
ZSk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVzaXplKHVuc2lnbmVkIG5ld1NpemUp
OwogCi0gICAgdm9pZCBzaHJpbmtUb0ZpdCgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lk
IHNocmlua1RvRml0KCk7CiAKICAgICBVQ2hhciBvcGVyYXRvcltdKHVuc2lnbmVkIGkpIGNvbnN0
CiAgICAgewpAQCAtMTI0LDcgKzEyNCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBh
bGxvY2F0ZUJ1ZmZlcihjb25zdCBVQ2hhciogY3VycmVudENoYXJhY3RlcnMsIHVuc2lnbmVkIHJl
cXVpcmVkTGVuZ3RoKTsKICAgICBVQ2hhciogYXBwZW5kVW5pbml0aWFsaXplZCh1bnNpZ25lZCBs
ZW5ndGgpOwotICAgIHZvaWQgcmVpZnlTdHJpbmcoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
dm9pZCByZWlmeVN0cmluZygpOwogCiAgICAgdW5zaWduZWQgbV9sZW5ndGg7CiAgICAgU3RyaW5n
IG1fc3RyaW5nOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0lt
cGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5n
SW1wbC5oCShyZXZpc2lvbiA5Mjc5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4
dC9TdHJpbmdJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0MiwxMSArMTQyLDExIEBAIHByaXZh
dGU6CiAgICAgfQogCiBwdWJsaWM6Ci0gICAgflN0cmluZ0ltcGwoKTsKKyAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgflN0cmluZ0ltcGwoKTsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0lt
cGw+IGNyZWF0ZShjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIFBh
c3NSZWZQdHI8U3RyaW5nSW1wbD4gY3JlYXRlKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCBsZW5ndGgp
OwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGNyZWF0ZShjb25zdCBjaGFyKik7
CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGNy
ZWF0ZShjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGNyZWF0ZShjb25zdCBjaGFyKiwgdW5z
aWduZWQgbGVuZ3RoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8
U3RyaW5nSW1wbD4gY3JlYXRlKGNvbnN0IGNoYXIqKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxT
dHJpbmdJbXBsPiBjcmVhdGUoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgsIFBhc3NSZWZQ
dHI8U2hhcmVkVUNoYXI+IHNoYXJlZEJ1ZmZlcik7CiAgICAgc3RhdGljIEFMV0FZU19JTkxJTkUg
UGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBjcmVhdGUoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXAs
IHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQogICAgIHsKQEAgLTE2MCw3ICsxNjAs
NyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3RyaW5nSW1wbChyZXAt
Pm1fZGF0YSArIG9mZnNldCwgbGVuZ3RoLCBvd25lclJlcCkpOwogICAgIH0KIAotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVu
Z3RoLCBVQ2hhciomIGRhdGEpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1Jl
ZlB0cjxTdHJpbmdJbXBsPiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCwgVUNo
YXIqJiBkYXRhKTsKICAgICBzdGF0aWMgQUxXQVlTX0lOTElORSBQYXNzUmVmUHRyPFN0cmluZ0lt
cGw+IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoLCBVQ2hhciomIG91dHB1
dCkKICAgICB7CiAgICAgICAgIGlmICghbGVuZ3RoKSB7CkBAIC0xOTYsMTAgKzE5NiwxMCBAQCBw
dWJsaWM6CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGVtcHR5KCk7CiAgICAgfQotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkb3B0KFN0cmluZ0J1ZmZlciYpOworICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZG9wdChTdHJp
bmdCdWZmZXImKTsKIAogICAgIFNoYXJlZFVDaGFyKiBzaGFyZWRCdWZmZXIoKTsKLSAgICBjb25z
dCBVQ2hhciogY2hhcmFjdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQorICAgIFdURl9F
WFBPUlRfUFJJVkFURSBjb25zdCBVQ2hhciogY2hhcmFjdGVycygpIGNvbnN0IHsgcmV0dXJuIG1f
ZGF0YTsgfQogCiAgICAgc2l6ZV90IGNvc3QoKQogICAgIHsKQEAgLTI0Myw3ICsyNDMsNyBAQCBw
dWJsaWM6CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIGRlcmVmKCkgeyBtX3JlZkNvdW50QW5kRmxh
Z3MgLT0gc19yZWZDb3VudEluY3JlbWVudDsgaWYgKCEobV9yZWZDb3VudEFuZEZsYWdzICYgKHNf
cmVmQ291bnRNYXNrIHwgc19yZWZDb3VudEZsYWdTdGF0aWMpKSkgZGVsZXRlIHRoaXM7IH0KICAg
ICBBTFdBWVNfSU5MSU5FIGJvb2wgaGFzT25lUmVmKCkgY29uc3QgeyByZXR1cm4gKG1fcmVmQ291
bnRBbmRGbGFncyAmIChzX3JlZkNvdW50TWFzayB8IHNfcmVmQ291bnRGbGFnU3RhdGljKSkgPT0g
c19yZWZDb3VudEluY3JlbWVudDsgfQogCi0gICAgc3RhdGljIFN0cmluZ0ltcGwqIGVtcHR5KCk7
CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJpbmdJbXBsKiBlbXB0eSgpOwogCiAg
ICAgc3RhdGljIHZvaWQgY29weUNoYXJzKFVDaGFyKiBkZXN0aW5hdGlvbiwgY29uc3QgVUNoYXIq
IHNvdXJjZSwgdW5zaWduZWQgbnVtQ2hhcmFjdGVycykKICAgICB7CkBAIC0yNjEsMTIgKzI2MSwx
MiBAQCBwdWJsaWM6CiAgICAgLy8gU2luY2UgU3RyaW5nSW1wbCBvYmplY3RzIGFyZSBpbW11dGFi
bGUsIHRoZXJlJ3Mgbm8gb3RoZXIgcmVhc29uIHRvIG1ha2UgYSBjb3B5LgogICAgIFBhc3NSZWZQ
dHI8U3RyaW5nSW1wbD4gdGhyZWFkc2FmZUNvcHkoKSBjb25zdDsKIAotICAgIFBhc3NSZWZQdHI8
U3RyaW5nSW1wbD4gc3Vic3RyaW5nKHVuc2lnbmVkIHBvcywgdW5zaWduZWQgbGVuID0gVUlOVF9N
QVgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHN1YnN0
cmluZyh1bnNpZ25lZCBwb3MsIHVuc2lnbmVkIGxlbiA9IFVJTlRfTUFYKTsKIAogICAgIFVDaGFy
IG9wZXJhdG9yW10odW5zaWduZWQgaSkgeyBBU1NFUlQoaSA8IG1fbGVuZ3RoKTsgcmV0dXJuIG1f
ZGF0YVtpXTsgfQogICAgIFVDaGFyMzIgY2hhcmFjdGVyU3RhcnRpbmdBdCh1bnNpZ25lZCk7CiAK
LSAgICBib29sIGNvbnRhaW5zT25seVdoaXRlc3BhY2UoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgYm9vbCBjb250YWluc09ubHlXaGl0ZXNwYWNlKCk7CiAKICAgICBpbnQgdG9JbnRTdHJpY3Qo
Ym9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKTsKICAgICB1bnNpZ25lZCB0b1VJbnRTdHJpY3Qo
Ym9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKTsKQEAgLTI3NCw3ICsyNzQsNyBAQCBwdWJsaWM6
CiAgICAgdWludDY0X3QgdG9VSW50NjRTdHJpY3QoYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEw
KTsKICAgICBpbnRwdHJfdCB0b0ludFB0clN0cmljdChib29sKiBvayA9IDAsIGludCBiYXNlID0g
MTApOwogCi0gICAgaW50IHRvSW50KGJvb2wqIG9rID0gMCk7IC8vIGlnbm9yZXMgdHJhaWxpbmcg
Z2FyYmFnZQorICAgIFdURl9FWFBPUlRfUFJJVkFURSBpbnQgdG9JbnQoYm9vbCogb2sgPSAwKTsg
Ly8gaWdub3JlcyB0cmFpbGluZyBnYXJiYWdlCiAgICAgdW5zaWduZWQgdG9VSW50KGJvb2wqIG9r
ID0gMCk7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQogICAgIGludDY0X3QgdG9JbnQ2NChi
b29sKiBvayA9IDApOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKICAgICB1aW50NjRfdCB0
b1VJbnQ2NChib29sKiBvayA9IDApOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKQEAgLTI4
MywzOSArMjgzLDM5IEBAIHB1YmxpYzoKICAgICBkb3VibGUgdG9Eb3VibGUoYm9vbCogb2sgPSAw
LCBib29sKiBkaWRSZWFkTnVtYmVyID0gMCk7CiAgICAgZmxvYXQgdG9GbG9hdChib29sKiBvayA9
IDAsIGJvb2wqIGRpZFJlYWROdW1iZXIgPSAwKTsKIAotICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1w
bD4gbG93ZXIoKTsKLSAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHVwcGVyKCk7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gbG93ZXIoKTsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiB1cHBlcigpOwogCi0gICAgUGFz
c1JlZlB0cjxTdHJpbmdJbXBsPiBmaWxsKFVDaGFyKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
UGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBmaWxsKFVDaGFyKTsKICAgICBQYXNzUmVmUHRyPFN0cmlu
Z0ltcGw+IGZvbGRDYXNlKCk7CiAKICAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHN0cmlwV2hp
dGVTcGFjZSgpOwogICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gc3RyaXBXaGl0ZVNwYWNlKElz
V2hpdGVTcGFjZUZ1bmN0aW9uUHRyKTsKLSAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHNpbXBs
aWZ5V2hpdGVTcGFjZSgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBQYXNzUmVmUHRyPFN0cmlu
Z0ltcGw+IHNpbXBsaWZ5V2hpdGVTcGFjZSgpOwogICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4g
c2ltcGxpZnlXaGl0ZVNwYWNlKElzV2hpdGVTcGFjZUZ1bmN0aW9uUHRyKTsKIAogICAgIFBhc3NS
ZWZQdHI8U3RyaW5nSW1wbD4gcmVtb3ZlQ2hhcmFjdGVycyhDaGFyYWN0ZXJNYXRjaEZ1bmN0aW9u
UHRyKTsKIAotICAgIHNpemVfdCBmaW5kKFVDaGFyLCB1bnNpZ25lZCBpbmRleCA9IDApOwotICAg
IHNpemVfdCBmaW5kKENoYXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIsIHVuc2lnbmVkIGluZGV4ID0g
MCk7Ci0gICAgc2l6ZV90IGZpbmQoY29uc3QgY2hhciosIHVuc2lnbmVkIGluZGV4ID0gMCk7Ci0g
ICAgc2l6ZV90IGZpbmQoU3RyaW5nSW1wbCosIHVuc2lnbmVkIGluZGV4ID0gMCk7Ci0gICAgc2l6
ZV90IGZpbmRJZ25vcmluZ0Nhc2UoY29uc3QgY2hhciosIHVuc2lnbmVkIGluZGV4ID0gMCk7Ci0g
ICAgc2l6ZV90IGZpbmRJZ25vcmluZ0Nhc2UoU3RyaW5nSW1wbCosIHVuc2lnbmVkIGluZGV4ID0g
MCk7Ci0KLSAgICBzaXplX3QgcmV2ZXJzZUZpbmQoVUNoYXIsIHVuc2lnbmVkIGluZGV4ID0gVUlO
VF9NQVgpOwotICAgIHNpemVfdCByZXZlcnNlRmluZChTdHJpbmdJbXBsKiwgdW5zaWduZWQgaW5k
ZXggPSBVSU5UX01BWCk7Ci0gICAgc2l6ZV90IHJldmVyc2VGaW5kSWdub3JpbmdDYXNlKFN0cmlu
Z0ltcGwqLCB1bnNpZ25lZCBpbmRleCA9IFVJTlRfTUFYKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgc2l6ZV90IGZpbmQoVUNoYXIsIHVuc2lnbmVkIGluZGV4ID0gMCk7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHNpemVfdCBmaW5kKENoYXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIsIHVuc2lnbmVk
IGluZGV4ID0gMCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCBmaW5kKGNvbnN0IGNo
YXIqLCB1bnNpZ25lZCBpbmRleCA9IDApOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3Qg
ZmluZChTdHJpbmdJbXBsKiwgdW5zaWduZWQgaW5kZXggPSAwKTsKKyAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgc2l6ZV90IGZpbmRJZ25vcmluZ0Nhc2UoY29uc3QgY2hhciosIHVuc2lnbmVkIGluZGV4
ID0gMCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCBmaW5kSWdub3JpbmdDYXNlKFN0
cmluZ0ltcGwqLCB1bnNpZ25lZCBpbmRleCA9IDApOworCisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IHNpemVfdCByZXZlcnNlRmluZChVQ2hhciwgdW5zaWduZWQgaW5kZXggPSBVSU5UX01BWCk7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCByZXZlcnNlRmluZChTdHJpbmdJbXBsKiwgdW5z
aWduZWQgaW5kZXggPSBVSU5UX01BWCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCBy
ZXZlcnNlRmluZElnbm9yaW5nQ2FzZShTdHJpbmdJbXBsKiwgdW5zaWduZWQgaW5kZXggPSBVSU5U
X01BWCk7CiAKICAgICBib29sIHN0YXJ0c1dpdGgoU3RyaW5nSW1wbCogc3RyLCBib29sIGNhc2VT
ZW5zaXRpdmUgPSB0cnVlKSB7IHJldHVybiAoY2FzZVNlbnNpdGl2ZSA/IHJldmVyc2VGaW5kKHN0
ciwgMCkgOiByZXZlcnNlRmluZElnbm9yaW5nQ2FzZShzdHIsIDApKSA9PSAwOyB9Ci0gICAgYm9v
bCBlbmRzV2l0aChTdHJpbmdJbXBsKiwgYm9vbCBjYXNlU2Vuc2l0aXZlID0gdHJ1ZSk7CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZW5kc1dpdGgoU3RyaW5nSW1wbCosIGJvb2wgY2FzZVNl
bnNpdGl2ZSA9IHRydWUpOwogCi0gICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXBsYWNlKFVD
aGFyLCBVQ2hhcik7Ci0gICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXBsYWNlKFVDaGFyLCBT
dHJpbmdJbXBsKik7Ci0gICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXBsYWNlKFN0cmluZ0lt
cGwqLCBTdHJpbmdJbXBsKik7Ci0gICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXBsYWNlKHVu
c2lnbmVkIGluZGV4LCB1bnNpZ25lZCBsZW4sIFN0cmluZ0ltcGwqKTsKKyAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXBsYWNlKFVDaGFyLCBVQ2hhcik7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwbGFjZShVQ2hh
ciwgU3RyaW5nSW1wbCopOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBQYXNzUmVmUHRyPFN0cmlu
Z0ltcGw+IHJlcGxhY2UoU3RyaW5nSW1wbCosIFN0cmluZ0ltcGwqKTsKKyAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXBsYWNlKHVuc2lnbmVkIGluZGV4LCB1
bnNpZ25lZCBsZW4sIFN0cmluZ0ltcGwqKTsKIAotICAgIFdURjo6VW5pY29kZTo6RGlyZWN0aW9u
IGRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKGJvb2wqIGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5ID0g
MCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIGRlZmF1
bHRXcml0aW5nRGlyZWN0aW9uKGJvb2wqIGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5ID0gMCk7CiAK
ICNpZiBVU0UoQ0YpCiAgICAgQ0ZTdHJpbmdSZWYgY3JlYXRlQ0ZTdHJpbmcoKTsKQEAgLTMyOCw3
ICszMjgsNyBAQCBwcml2YXRlOgogICAgIC8vIFRoaXMgbnVtYmVyIG11c3QgYmUgYXQgbGVhc3Qg
MiB0byBhdm9pZCBzaGFyaW5nIGVtcHR5LCBudWxsIGFzIHdlbGwgYXMgMSBjaGFyYWN0ZXIgc3Ry
aW5ncyBmcm9tIFNtYWxsU3RyaW5ncy4KICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19jb3B5
Q2hhcnNJbmxpbmVDdXRPZmYgPSAyMDsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0lt
cGw+IGNyZWF0ZVN0cmlwcGluZ051bGxDaGFyYWN0ZXJzU2xvd0Nhc2UoY29uc3QgVUNoYXIqLCB1
bnNpZ25lZCBsZW5ndGgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0
cjxTdHJpbmdJbXBsPiBjcmVhdGVTdHJpcHBpbmdOdWxsQ2hhcmFjdGVyc1Nsb3dDYXNlKGNvbnN0
IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICAKICAgICBCdWZmZXJPd25lcnNoaXAgYnVm
ZmVyT3duZXJzaGlwKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QnVmZmVyT3duZXJzaGlw
PihtX3JlZkNvdW50QW5kRmxhZ3MgJiBzX3JlZkNvdW50TWFza0J1ZmZlck93bmVyc2hpcCk7IH0K
ICAgICBib29sIGlzU3RhdGljKCkgY29uc3QgeyByZXR1cm4gbV9yZWZDb3VudEFuZEZsYWdzICYg
c19yZWZDb3VudEZsYWdTdGF0aWM7IH0KQEAgLTM0NCwxNyArMzQ0LDE3IEBAIHByaXZhdGU6CiAg
ICAgbXV0YWJsZSB1bnNpZ25lZCBtX2hhc2g7CiB9OwogCi1ib29sIGVxdWFsKGNvbnN0IFN0cmlu
Z0ltcGwqLCBjb25zdCBTdHJpbmdJbXBsKik7Ci1ib29sIGVxdWFsKGNvbnN0IFN0cmluZ0ltcGwq
LCBjb25zdCBjaGFyKik7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBlcXVhbChjb25zdCBTdHJp
bmdJbXBsKiwgY29uc3QgU3RyaW5nSW1wbCopOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZXF1
YWwoY29uc3QgU3RyaW5nSW1wbCosIGNvbnN0IGNoYXIqKTsKIGlubGluZSBib29sIGVxdWFsKGNv
bnN0IGNoYXIqIGEsIFN0cmluZ0ltcGwqIGIpIHsgcmV0dXJuIGVxdWFsKGIsIGEpOyB9CiAKLWJv
b2wgZXF1YWxJZ25vcmluZ0Nhc2UoU3RyaW5nSW1wbCosIFN0cmluZ0ltcGwqKTsKLWJvb2wgZXF1
YWxJZ25vcmluZ0Nhc2UoU3RyaW5nSW1wbCosIGNvbnN0IGNoYXIqKTsKK1dURl9FWFBPUlRfUFJJ
VkFURSBib29sIGVxdWFsSWdub3JpbmdDYXNlKFN0cmluZ0ltcGwqLCBTdHJpbmdJbXBsKik7CitX
VEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBlcXVhbElnbm9yaW5nQ2FzZShTdHJpbmdJbXBsKiwgY29u
c3QgY2hhciopOwogaW5saW5lIGJvb2wgZXF1YWxJZ25vcmluZ0Nhc2UoY29uc3QgY2hhciogYSwg
U3RyaW5nSW1wbCogYikgeyByZXR1cm4gZXF1YWxJZ25vcmluZ0Nhc2UoYiwgYSk7IH0KLWJvb2wg
ZXF1YWxJZ25vcmluZ0Nhc2UoY29uc3QgVUNoYXIqIGEsIGNvbnN0IGNoYXIqIGIsIHVuc2lnbmVk
IGxlbmd0aCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBlcXVhbElnbm9yaW5nQ2FzZShjb25z
dCBVQ2hhciosIGNvbnN0IGNoYXIqIGIsIHVuc2lnbmVkIGxlbmd0aCk7CiBpbmxpbmUgYm9vbCBl
cXVhbElnbm9yaW5nQ2FzZShjb25zdCBjaGFyKiBhLCBjb25zdCBVQ2hhciogYiwgdW5zaWduZWQg
bGVuZ3RoKSB7IHJldHVybiBlcXVhbElnbm9yaW5nQ2FzZShiLCBhLCBsZW5ndGgpOyB9CiAKLWJv
b2wgZXF1YWxJZ25vcmluZ051bGxpdHkoU3RyaW5nSW1wbCosIFN0cmluZ0ltcGwqKTsKK1dURl9F
WFBPUlRfUFJJVkFURSBib29sIGVxdWFsSWdub3JpbmdOdWxsaXR5KFN0cmluZ0ltcGwqLCBTdHJp
bmdJbXBsKik7CiAKIHRlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KIGJvb2wgZXF1YWxJ
Z25vcmluZ051bGxpdHkoY29uc3QgVmVjdG9yPFVDaGFyLCBpbmxpbmVDYXBhY2l0eT4mIGEsIFN0
cmluZ0ltcGwqIGIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUvQ29s
bGF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUv
Q29sbGF0b3IuaAkocmV2aXNpb24gOTI3OTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L3VuaWNvZGUvQ29sbGF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTMgKzQ1LDEzIEBAIG5h
bWVzcGFjZSBXVEYgewogICAgIHB1YmxpYzoKICAgICAgICAgZW51bSBSZXN1bHQgeyBFcXVhbCA9
IDAsIEdyZWF0ZXIgPSAxLCBMZXNzID0gLTEgfTsKIAotICAgICAgICBDb2xsYXRvcihjb25zdCBj
aGFyKiBsb2NhbGUpOyAvLyBQYXJzaW5nIGlzIGxlbmllbnQ7IGUuZy4gbGFuZ3VhZ2UgaWRlbnRp
ZmllcnMgKHN1Y2ggYXMgImVuLVVTIikgYXJlIGFjY2VwdGVkLCB0b28uCi0gICAgICAgIH5Db2xs
YXRvcigpOwotICAgICAgICB2b2lkIHNldE9yZGVyTG93ZXJGaXJzdChib29sKTsKKyAgICAgICAg
V1RGX0VYUE9SVF9QUklWQVRFIENvbGxhdG9yKGNvbnN0IGNoYXIqIGxvY2FsZSk7IC8vIFBhcnNp
bmcgaXMgbGVuaWVudDsgZS5nLiBsYW5ndWFnZSBpZGVudGlmaWVycyAoc3VjaCBhcyAiZW4tVVMi
KSBhcmUgYWNjZXB0ZWQsIHRvby4KKyAgICAgICAgV1RGX0VYUE9SVF9QUklWQVRFIH5Db2xsYXRv
cigpOworICAgICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRPcmRlckxvd2VyRmlyc3Qo
Ym9vbCk7CiAKICAgICAgICAgc3RhdGljIFBhc3NPd25QdHI8Q29sbGF0b3I+IHVzZXJEZWZhdWx0
KCk7CiAKLSAgICAgICAgUmVzdWx0IGNvbGxhdGUoY29uc3QgOjpVQ2hhciosIHNpemVfdCwgY29u
c3QgOjpVQ2hhciosIHNpemVfdCkgY29uc3Q7CisgICAgICAgIFdURl9FWFBPUlRfUFJJVkFURSBS
ZXN1bHQgY29sbGF0ZShjb25zdCA6OlVDaGFyKiwgc2l6ZV90LCBjb25zdCA6OlVDaGFyKiwgc2l6
ZV90KSBjb25zdDsKIAogICAgIHByaXZhdGU6CiAjaWYgVVNFKElDVV9VTklDT0RFKSAmJiAhVUNP
TkZJR19OT19DT0xMQVRJT04KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdW5pY29k
ZS9VVEY4LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi91bmljb2Rl
L1VURjguaAkocmV2aXNpb24gOTI3OTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3Vu
aWNvZGUvVVRGOC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MiwxMSArNjIsMTEgQEAgbmFtZXNwYWNl
IFVuaWNvZGUgewogICAgIC8vIHRvIHRoZSByZXBsYWNlbWVudCBjaGFyYWN0ZXI7IG90aGVyd2lz
ZSAod2hlbiB0aGUgZmxhZyBpcyBzZXQgdG8gc3RyaWN0KQogICAgIC8vIHRoZXkgY29uc3RpdHV0
ZSBhbiBlcnJvci4KIAotICAgIENvbnZlcnNpb25SZXN1bHQgY29udmVydFVURjhUb1VURjE2KAor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBDb252ZXJzaW9uUmVzdWx0IGNvbnZlcnRVVEY4VG9VVEYx
NigKICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhcioqIHNvdXJjZVN0YXJ0LCBjb25zdCBj
aGFyKiBzb3VyY2VFbmQsIAogICAgICAgICAgICAgICAgICAgICBVQ2hhcioqIHRhcmdldFN0YXJ0
LCBVQ2hhciogdGFyZ2V0RW5kLCBib29sIHN0cmljdCA9IHRydWUpOwogCi0gICAgQ29udmVyc2lv
blJlc3VsdCBjb252ZXJ0VVRGMTZUb1VURjgoCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIENvbnZl
cnNpb25SZXN1bHQgY29udmVydFVURjE2VG9VVEY4KAogICAgICAgICAgICAgICAgICAgICBjb25z
dCBVQ2hhcioqIHNvdXJjZVN0YXJ0LCBjb25zdCBVQ2hhciogc291cmNlRW5kLCAKICAgICAgICAg
ICAgICAgICAgICAgY2hhcioqIHRhcmdldFN0YXJ0LCBjaGFyKiB0YXJnZXRFbmQsIGJvb2wgc3Ry
aWN0ID0gdHJ1ZSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyLmgJKHJldmlzaW9u
IDkyNzk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyci5oCSh3b3JraW5nIGNv
cHkpCkBAIC01Nyw4ICs1Nyw4IEBAIGVudW0gSlNSZWdFeHBSZXN1bHQgewogICAgIEpTUmVnRXhw
RXJyb3JJbnRlcm5hbCA9IC00CiB9OwogCi1QYXNzT3duUHRyPEJ5dGVjb2RlUGF0dGVybj4gYnl0
ZUNvbXBpbGUoWWFyclBhdHRlcm4mLCBCdW1wUG9pbnRlckFsbG9jYXRvciopOwotaW50IGludGVy
cHJldChCeXRlY29kZVBhdHRlcm4qLCBjb25zdCBVQ2hhciogaW5wdXQsIHVuc2lnbmVkIHN0YXJ0
LCB1bnNpZ25lZCBsZW5ndGgsIGludCogb3V0cHV0KTsKK0pTX0VYUE9SVF9QUklWQVRFIFBhc3NP
d25QdHI8Qnl0ZWNvZGVQYXR0ZXJuPiBieXRlQ29tcGlsZShZYXJyUGF0dGVybiYsIEJ1bXBQb2lu
dGVyQWxsb2NhdG9yKik7CitKU19FWFBPUlRfUFJJVkFURSBpbnQgaW50ZXJwcmV0KEJ5dGVjb2Rl
UGF0dGVybiosIGNvbnN0IFVDaGFyKiBpbnB1dCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxl
bmd0aCwgaW50KiBvdXRwdXQpOwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6WWFycgogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmgJKHJldmlzaW9uIDkyNzk5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uaAkod29ya2luZyBj
b3B5KQpAQCAtMzE0LDcgKzMxNCw3IEBAIHN0cnVjdCBUZXJtQ2hhaW4gewogfTsKIAogc3RydWN0
IFlhcnJQYXR0ZXJuIHsKLSAgICBZYXJyUGF0dGVybihjb25zdCBVU3RyaW5nJiBwYXR0ZXJuLCBi
b29sIGlnbm9yZUNhc2UsIGJvb2wgbXVsdGlsaW5lLCBjb25zdCBjaGFyKiogZXJyb3IpOworICAg
IEpTX0VYUE9SVF9QUklWQVRFIFlhcnJQYXR0ZXJuKGNvbnN0IFVTdHJpbmcmIHBhdHRlcm4sIGJv
b2wgaWdub3JlQ2FzZSwgYm9vbCBtdWx0aWxpbmUsIGNvbnN0IGNoYXIqKiBlcnJvcik7CiAKICAg
ICB+WWFyclBhdHRlcm4oKQogICAgIHsKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDkyODAxKQorKysgVG9vbHMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTEtMDgtMTAgIEtldmluIE9sbGl2
aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CisKKyAgICAgICAgTWFrZSBpdCBwb3NzaWJs
ZSB0byBidWlsZCBKYXZhU2NyaXB0Q29yZSBhcyBzaGFyZWQgbGlicmFyeSB3aXRob3V0IHN5bWJv
bCBsaXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
Mjc1NTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQ29kZUdlbmVyYXRvclRl
c3RSdW5uZXIucG06CisKIDIwMTEtMDgtMTAgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3Jn
PgogCiAgICAgICAgIG5ldy1ydW4td2Via2l0LXRlc3QncyBXaW5Qb3J0IGhhcyBubyBmYWxsYmFj
ayBsb2dpYwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5k
aW5ncy9Db2RlR2VuZXJhdG9yVGVzdFJ1bm5lci5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0NvZGVHZW5lcmF0b3JUZXN0UnVu
bmVyLnBtCShyZXZpc2lvbiA5Mjc5OSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvQmluZGluZ3MvQ29kZUdlbmVyYXRvclRlc3RSdW5uZXIucG0JKHdvcmtpbmcgY29w
eSkKQEAgLTMyOCw2ICszMjgsNyBAQCBFT0YKIEVPRgogCiAgICAgdW5zaGlmdChAY29udGVudHMs
IG1hcCB7ICIjaW5jbHVkZSBcIiRfXCJcbiIgfSBzb3J0IGtleXMoJWNvbnRlbnRzSW5jbHVkZXMp
KTsKKyAgICB1bnNoaWZ0KEBjb250ZW50cywgIiNpbmNsdWRlIFwiY29uZmlnLmhcIlxuIik7CiAg
ICAgdW5zaGlmdChAY29udGVudHMsIEBjb250ZW50c1ByZWZpeCk7CiAKICAgICByZXR1cm4geyBu
YW1lID0+ICRmaWxlbmFtZSwgY29udGVudHMgPT4gXEBjb250ZW50cyB9Owo=
</data>
<flag name="review"
          id="99203"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>