<?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>3652</bug_id>
          
          <creation_ts>2005-06-22 14:23:06 -0700</creation_ts>
          <short_desc>add support for link prefetching</short_desc>
          <delta_ts>2010-08-11 09:55:58 -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>DOM</component>
          <version>412</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://gemal.dk/browserspy/prefetch.php</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>38900</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Leon Clarke">leonclarke</assigned_to>
          <cc>abarth</cc>
    
    <cc>andreip</cc>
    
    <cc>android-webkit-unforking</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>emacemac7</cc>
    
    <cc>gavinp</cc>
    
    <cc>gavin.sharp</cc>
    
    <cc>gustavo</cc>
    
    <cc>ian</cc>
    
    <cc>japhet</cc>
    
    <cc>joost</cc>
    
    <cc>koivisto</cc>
    
    <cc>leonclarke</cc>
    
    <cc>mike</cc>
    
    <cc>nickshanks</cc>
    
    <cc>pfeldman</cc>
    
    <cc>podivilov</cc>
    
    <cc>steveblock</cc>
    
    <cc>tonyg</cc>
    
    <cc>webdev</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>12851</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-06-22 14:23:07 -0700</bug_when>
    <thetext>&lt;rdar://problem/4158270&gt; ER: support link prefetching

6/22/05 1:31 PM Peter Westen:
* SUMMARY
Browsers that support &quot;link prefetching&quot; can reduce perceived load times by proactively fetching pages the 
user is likely to request. Google, for example, will identify the top search result as a prefetch-able link if 
the browser supports it. This is based on the &quot;rel&quot; attribute of the LINK tag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>16217</commentid>
    <comment_count>1</comment_count>
    <who name="Nicholas Shanks">nickshanks</who>
    <bug_when>2005-08-08 13:17:32 -0700</bug_when>
    <thetext>I don&apos;t see any &lt;link&gt; elements or indeed anywhere where the rel attribute is set on any tag, for example 
on http://google.com/search?q=something. What exactly is the rel attribute supposed to contain to 
indicate to a browser it might want to pre-fetch a certain href?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>16218</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-08-08 13:21:56 -0700</bug_when>
    <thetext>Documentation on how this works in Mozilla is at &lt;http://www.mozilla.org/projects/netlib/
Link_Prefetching_FAQ.html&gt;. Not sure what the status is of the tags from Google.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>24390</commentid>
    <comment_count>3</comment_count>
    <who name="Joost de Valk (AlthA)">joost</who>
    <bug_when>2005-11-22 12:47:11 -0800</bug_when>
    <thetext>Updated the URL to a testcase. I would very much like this to work, since it is very, very useful. Best would 
be though to make it configurable. Only preloading from the same domain, or from external domains, or 
not at all...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>54249</commentid>
    <comment_count>4</comment_count>
    <who name="John Lascurettes">lascurettes</who>
    <bug_when>2006-08-30 11:29:35 -0700</bug_when>
    <thetext>(In reply to comment #2)
Here&apos;s (hopefully) the complete link:

http://www.mozilla.org/projects/netlib/Link_Prefetching_FAQ.html

This would be a useful feature; and even though it&apos;s not part of any _official_ standards, the way Mozilla describes it, it is a &quot;quasi&quot; standard. The Link: HTTP header had been part of an earlier RFC but was excluded in later docs. Plus the &lt;link&gt; with attributes of rel=&quot;prefetch&quot; or rel=&quot;next&quot; do not violate the W3C recommendations in any way.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>75357</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-03-26 14:16:21 -0700</bug_when>
    <thetext>Supposedly Google.com returns this on some search results.  I&apos;ve not seen it myself, but it seems like this would be useful for us to support.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223862</commentid>
    <comment_count>6</comment_count>
    <who name="Leon Clarke">leonclarke</who>
    <bug_when>2010-05-11 04:18:18 -0700</bug_when>
    <thetext>Android has been implementing this. I&apos;ll have a patch real soon now. It&apos;s a bit big so I&apos;m refactoring it into a couple of bugs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229726</commentid>
    <comment_count>7</comment_count>
      <attachid>56883</attachid>
    <who name="Leon Clarke">leonclarke</who>
    <bug_when>2010-05-24 06:51:35 -0700</bug_when>
    <thetext>Created attachment 56883
Proposed patch

Note that I&apos;ve made the feature optional, behind a new ENABLE_LINK_PREFETCH guard. As a result it&apos;s turned off by default, and so I&apos;ve disabled the new layout test.

I&apos;ve made it disabled for 2 reasons, firstly there might possibly be controversy about whether the feature is a good thing, and secondly in Android we have a tiny change made outside of the webkit code (specifically we have some code in our HTTP stack to disable the feature when roaming), and other platforms might want to consider whether they want similar changes before they take this.

However, the counter-argument would be that it&apos;s a fairly small change and only downloads things that the page requests are downloaded so it&apos;s not worth adding a new guard for. If people would prefer that it was always on, I&apos;ll edit the patch appropriately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230869</commentid>
    <comment_count>8</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-05-26 13:53:31 -0700</bug_when>
    <thetext>I&apos;m not a WebKit reviewer but had a question about this patch.

Please correct me if I&apos;m mistaken, but it looks to me like the current implementation would block the window&apos;s load event if there are outstanding prefetch requests. If that is the case, it would defeat the usefulness of this feature for pages that are concerned with firing onload asap.

I&apos;m interested in seeing a Layout Test that verifies that window.onload will fire before link.onload if the resource being loaded is delayed. There are examples in LayoutTests/http/tests/ of Layout Tests with delayed subresources.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231189</commentid>
    <comment_count>9</comment_count>
    <who name="Leon Clarke">leonclarke</who>
    <bug_when>2010-05-27 02:07:52 -0700</bug_when>
    <thetext>Thanks for the comments Tony.

Unless you&apos;ve discovered a very subtle bug, my patch should ensure that the window&apos;s load event isn&apos;t delayed by prefetch requests. If you look in DocLoader.cpp, incrementRefCount and decrementRefCount have been changed to ignore prefetch requests. This count seems to be only used to keep track of whether there are any outstanding requests, or whether the load event should fire, so this means that the load event should fire before the prefetches finish.

Adding a layout test to confirm this is probably a good idea. I considered writing one, but wasn&apos;t convinced I could guarantee the events would always arrive in the right order if both loads actually finished at the same time, however on further reflection I&apos;m not sure this is a problem. I&apos;ll write a test and see if it&apos;s reliable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231216</commentid>
    <comment_count>10</comment_count>
      <attachid>56883</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2010-05-27 04:15:15 -0700</bug_when>
    <thetext>Comment on attachment 56883
Proposed patch

The patch is missing at least CachedLinkPrefetch.h, can&apos;t be reviewed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231218</commentid>
    <comment_count>11</comment_count>
      <attachid>57219</attachid>
    <who name="Leon Clarke">leonclarke</who>
    <bug_when>2010-05-27 04:21:13 -0700</bug_when>
    <thetext>Created attachment 57219
Adding missing CachedLinkPrefetch.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232733</commentid>
    <comment_count>12</comment_count>
      <attachid>57541</attachid>
    <who name="Leon Clarke">leonclarke</who>
    <bug_when>2010-06-01 07:07:33 -0700</bug_when>
    <thetext>Created attachment 57541
As before, but updated against newer webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232736</commentid>
    <comment_count>13</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-06-01 07:22:50 -0700</bug_when>
    <thetext>Attachment 57541 did not build on qt:
Build output: http://webkit-commit-queue.appspot.com/results/2752051</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232744</commentid>
    <comment_count>14</comment_count>
      <attachid>57543</attachid>
    <who name="Leon Clarke">leonclarke</who>
    <bug_when>2010-06-01 07:43:35 -0700</bug_when>
    <thetext>Created attachment 57543
Fix silly merge error in previous patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232758</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-01 08:18:10 -0700</bug_when>
    <thetext>Attachment 57541 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/2800063</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232761</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-01 08:24:25 -0700</bug_when>
    <thetext>Attachment 57541 did not build on gtk:
Build output: http://webkit-commit-queue.appspot.com/results/2800065</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233821</commentid>
    <comment_count>17</comment_count>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2010-06-03 10:33:43 -0700</bug_when>
    <thetext>Leon,

Would it make sense to add a TargetType in RequestResourceBase of TargetIsPrefetch ?  It&apos;s getting classified as a Subresource now, and it&apos;s not quite that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235723</commentid>
    <comment_count>18</comment_count>
    <who name="Leon Clarke">leonclarke</who>
    <bug_when>2010-06-09 03:04:27 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; Leon,
&gt; 
&gt; Would it make sense to add a TargetType in RequestResourceBase of TargetIsPrefetch ?  It&apos;s getting classified as a Subresource now, and it&apos;s not quite that.

Yes, that sounds like a good idea. I&apos;ll look into it...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235771</commentid>
    <comment_count>19</comment_count>
      <attachid>58241</attachid>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2010-06-09 07:12:37 -0700</bug_when>
    <thetext>Created attachment 58241
patch for TargetIsPrefetch

This patch likely won&apos;t apply, but it&apos;s a subset of my webkit with the TargetIsPrefetch target type added.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236425</commentid>
    <comment_count>20</comment_count>
      <attachid>57543</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-10 10:33:29 -0700</bug_when>
    <thetext>Comment on attachment 57543
Fix silly merge error in previous patch

Some nits and questions.  The biggest question for me is whether we should be using the X-Moz header.

WebCore/html/HTMLLinkElement.h:48
 +          RelAttribute() : m_isStyleSheet(false), m_isIcon(false), m_isAlternate(false), m_isDNSPrefetch(false)
Please put all these initializers on their own line.

WebCore/loader/CachedLinkPrefetch.h:45
 +      virtual void didAddClient(CachedResourceClient* c)
This implementation looks very generic.  Maybe it should go in the base class as a default implementation?

WebCore/loader/CachedLinkPrefetch.h:51
 +      virtual void data(PassRefPtr&lt;SharedBuffer&gt; data, bool allDataReceived)
Same here.

WebCore/loader/CachedLinkPrefetch.h:56
 +          m_data = data;
Why do we hold onto this data?  It seems that&apos;s just a waste of memory.

WebCore/loader/loader.cpp:375
 +              resourceRequest.setHTTPHeaderField(&quot;X-Moz&quot;, &quot;prefetch&quot;);
Do we want to be using an X-Moz header?  Maybe it&apos;s more polite to use X-WebKit ?

LayoutTests/fast/dom/HTMLLinkElement/prefetch-onload-expected.txt:1
 +  This tests that onload events can be attached to link elements with rel=prefetch. Since prefetch links are just there as a performance optimisation, the onload event is their only programatic side-effect.
&quot;optimisation&quot; -&gt; usually we use american english

LayoutTests/fast/dom/HTMLLinkElement/prefetch-onload-expected.txt:5
 +  TEST PASSED. The stylesheet link onload handler has fired
Crazy.  Does that work in Firefox?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236740</commentid>
    <comment_count>21</comment_count>
    <who name="Leon Clarke">leonclarke</who>
    <bug_when>2010-06-11 02:15:58 -0700</bug_when>
    <thetext>On the subject of the X-Moz header, I agree this might be controversial!

There is a need for a header so that sites doing rather crude analytics based on server access logs can ignore prefetch requests if they want to.

Since the best documentation of all this comes from Mozilla, and they mention that they send the X-Moz one, it seems to have become the de-facto standard. Google used this header in its &apos;Google Web Accelerator&apos;, a now-discontinued caching prefetching proxy that you ran on your desktop machine. When I was originally implementing this, I took that as a precedent for Google using the X-Moz header.

I felt that sending the de-facto standard header is a better idea (less confusing for site developers) than inventing another non-standard header like X-Webkit, but if people feel it&apos;d be better as a different header, I don&apos;t feel strongly and I&apos;ll change it.  In an ideal world there would be a standard header, but there doesn&apos;t seem to be; presumably the HTML5 people didn&apos;t want to specify HTTP headers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237837</commentid>
    <comment_count>22</comment_count>
      <attachid>58656</attachid>
    <who name="Leon Clarke">leonclarke</who>
    <bug_when>2010-06-14 08:29:31 -0700</bug_when>
    <thetext>Created attachment 58656
Following abarth&apos;s review comments

Also incorporates Gavin Peters&apos; patch to add a new TargetType</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237840</commentid>
    <comment_count>23</comment_count>
    <who name="Leon Clarke">leonclarke</who>
    <bug_when>2010-06-14 08:35:41 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; WebCore/loader/CachedLinkPrefetch.h:45
&gt;  +      virtual void didAddClient(CachedResourceClient* c)
&gt; This implementation looks very generic.  Maybe it should go in the base class as a default implementation?
&gt; 
&gt; WebCore/loader/CachedLinkPrefetch.h:51
&gt;  +      virtual void data(PassRefPtr&lt;SharedBuffer&gt; data, bool allDataReceived)
&gt; Same here.

With didAddClient, I agree and in fact there was already an identical implementation in CachedScript that I&apos;ve also remove. For data, now that I don&apos;t pointlessly keep a copy of the data, I&apos;d like to argue that there&apos;s nothing very generic about a CachedResource that throws away its data, and it&apos;s very unlikely any other subclass of CachedResource will ever want a data function exactly like this.

&gt; LayoutTests/fast/dom/HTMLLinkElement/prefetch-onload-expected.txt:5
&gt;  +  TEST PASSED. The stylesheet link onload handler has fired
&gt; Crazy.  Does that work in Firefox?
No. They don&apos;t implement the events.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237882</commentid>
    <comment_count>24</comment_count>
      <attachid>58667</attachid>
    <who name="Leon Clarke">leonclarke</who>
    <bug_when>2010-06-14 10:07:04 -0700</bug_when>
    <thetext>Created attachment 58667
Improve test slightly

This differs from the previous one only in that the test has been imnproved.
It now checks that the prefetch onload fires after the main document onload.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239701</commentid>
    <comment_count>25</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-17 19:16:35 -0700</bug_when>
    <thetext>&gt; &gt; LayoutTests/fast/dom/HTMLLinkElement/prefetch-onload-expected.txt:5
&gt; &gt;  +  TEST PASSED. The stylesheet link onload handler has fired
&gt; &gt; Crazy.  Does that work in Firefox?
&gt; No. They don&apos;t implement the events.

Why are we implementing the events then?

I don&apos;t think we should be sending an X-Moz header.  Probably the best thing to do is register a real header with IANA:

http://www.iana.org/assignments/message-headers/perm-headers.html

Is there a spec that describes link rel=prefetch?  Should we write one?  Did you test the X-Moz header?  This patch is very fast and loose.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239702</commentid>
    <comment_count>26</comment_count>
      <attachid>58667</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-17 19:16:48 -0700</bug_when>
    <thetext>Comment on attachment 58667
Improve test slightly

See above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239848</commentid>
    <comment_count>27</comment_count>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2010-06-18 04:10:05 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; &gt; &gt; LayoutTests/fast/dom/HTMLLinkElement/prefetch-onload-expected.txt:5
&gt; &gt; &gt;  +  TEST PASSED. The stylesheet link onload handler has fired
&gt; &gt; &gt; Crazy.  Does that work in Firefox?
&gt; &gt; No. They don&apos;t implement the events.
&gt; 
&gt; Why are we implementing the events then?
&gt; 

I think the idea is to allow this functionality to be tested (e.g. wait for the onload event). Or perhaps there is a better way to test?

&gt; I don&apos;t think we should be sending an X-Moz header.  Probably the best thing to do is register a real header with IANA:
&gt; 
&gt; http://www.iana.org/assignments/message-headers/perm-headers.html
&gt; 

The spec doesn&apos;t say anything about sending a special header. I think we could just leave it out.

&gt; Is there a spec that describes link rel=prefetch?  Should we write one?  

http://dev.w3.org/html5/spec/Overview.html#link-type-prefetch

Thanks,
Andrei</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239866</commentid>
    <comment_count>28</comment_count>
    <who name="Leon Clarke">leonclarke</who>
    <bug_when>2010-06-18 05:05:46 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; (In reply to comment #25)
&gt; &gt; &gt; &gt; LayoutTests/fast/dom/HTMLLinkElement/prefetch-onload-expected.txt:5
&gt; &gt; &gt; &gt;  +  TEST PASSED. The stylesheet link onload handler has fired
&gt; &gt; &gt; &gt; Crazy.  Does that work in Firefox?
&gt; &gt; &gt; No. They don&apos;t implement the events.
&gt; &gt; 
&gt; &gt; Why are we implementing the events then?
&gt; &gt; 
&gt; 
&gt; I think the idea is to allow this functionality to be tested (e.g. wait for the onload event). Or perhaps there is a better way to test?

Correct; while it&apos;s in the HTML5 spec, I mainly added it because it means the functionality has a programatic side effect in javascript.

&gt; 
&gt; &gt; I don&apos;t think we should be sending an X-Moz header.  Probably the best thing to do is register a real header with IANA:
&gt; &gt; 
&gt; &gt; http://www.iana.org/assignments/message-headers/perm-headers.html
&gt; &gt; 
&gt; 
&gt; The spec doesn&apos;t say anything about sending a special header. I think we could just leave it out.

The argument for having it is to enable people to distinguish prefetch requests when analyzing server logs. I&apos;ll remove it from this patch, but suggest to the HTML5 working group that they might want to standardize a header. Registering a real header with IANA and not trying to get it into some spec somewhere would probably cause confusion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239912</commentid>
    <comment_count>29</comment_count>
      <attachid>59107</attachid>
    <who name="Leon Clarke">leonclarke</who>
    <bug_when>2010-06-18 07:40:28 -0700</bug_when>
    <thetext>Created attachment 59107
Remove the header</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239913</commentid>
    <comment_count>30</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-18 07:42:09 -0700</bug_when>
    <thetext>Attachment 59107 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebCore/ChangeLog:5:  Line contains tab character.  [whitespace/tab] [5]
WebCore/ChangeLog:6:  Line contains tab character.  [whitespace/tab] [5]
WebKit/chromium/ChangeLog:5:  Line contains tab character.  [whitespace/tab] [5]
WebKit/chromium/ChangeLog:6:  Line contains tab character.  [whitespace/tab] [5]
Total errors found: 4 in 22 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>239914</commentid>
    <comment_count>31</comment_count>
      <attachid>59108</attachid>
    <who name="Leon Clarke">leonclarke</who>
    <bug_when>2010-06-18 07:46:01 -0700</bug_when>
    <thetext>Created attachment 59108
Remove tabs from changelog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239946</commentid>
    <comment_count>32</comment_count>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2010-06-18 08:45:30 -0700</bug_when>
    <thetext>Leon,
 
Thanks for all the work on this; the patch looks awesome.

It seems mozilla does prefetching for link rel=next as well.  Should we consider that too?  I don&apos;t know if that deserves a different target type.

Reference: https://developer.mozilla.org/en/link_prefetching_faq

- Gavin</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239970</commentid>
    <comment_count>33</comment_count>
    <who name="Leon Clarke">leonclarke</who>
    <bug_when>2010-06-18 09:22:08 -0700</bug_when>
    <thetext>(In reply to comment #32)

&gt; It seems mozilla does prefetching for link rel=next as well.  Should we consider that too?  I don&apos;t know if that deserves a different target type.
&gt; 
&gt; Reference: https://developer.mozilla.org/en/link_prefetching_faq

Interesting. We should certainly consider it. I&apos;d like to suggest that we should consider it in another bug, rather than adding it to this patch.

The behavior of mozilla seems to be a bit divergent from the HTML5. I don&apos;t see any evidence in HTML5 that rel=next should be prefetched. Also, it seems they only prefetch when you use rel=next with the link element, not the &lt;a&gt; element where rel=next is also valid. I&apos;m not quite sure I follow why they make that distinction.

My immediate thought is that there&apos;s no need for a different target type. Can you think of any use cases for needing to distinguish between the 2 cases?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239981</commentid>
    <comment_count>34</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-18 09:33:25 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; (In reply to comment #27)
&gt; &gt; (In reply to comment #25)
&gt; &gt; &gt; &gt; &gt; LayoutTests/fast/dom/HTMLLinkElement/prefetch-onload-expected.txt:5
&gt; &gt; &gt; &gt; &gt;  +  TEST PASSED. The stylesheet link onload handler has fired
&gt; &gt; &gt; &gt; &gt; Crazy.  Does that work in Firefox?
&gt; &gt; &gt; &gt; No. They don&apos;t implement the events.
&gt; &gt; &gt; 
&gt; &gt; &gt; Why are we implementing the events then?
&gt; &gt; &gt; 
&gt; &gt; 
&gt; &gt; I think the idea is to allow this functionality to be tested (e.g. wait for the onload event). Or perhaps there is a better way to test?
&gt; 
&gt; Correct; while it&apos;s in the HTML5 spec, I mainly added it because it means the functionality has a programatic side effect in javascript.

I think you&apos;re mis-reading the spec.  Here&apos;s what the spec says:

[[
Once the attempts to obtain the resource and its critical subresources are complete, the user agent must, if the loads were successful, queue a task to fire a simple event named load at the link element, or, if the resource or one of its critical subresources failed to completely load for any reason (e.g. DNS error, HTTP 404 response, a connection being prematurely closed, unsupported Content-Type), queue a task to fire a simple event named error at the link element. Non-network errors in processing the resource or its subresources (e.g. CSS parse errors, PNG decoding errors) are not failures for the purposes of this paragraph.
]]

In the prefetch case, we never &quot;obtain&quot; the resource.  Instead, we just fetch it, which is a much less involved process.  In particular, I don&apos;t think we&apos;re supposed to fire the load event.

You can still test whether the network event was loaded using the dumpResourceResponseMIMEType function of layoutTestController.  That will print the MIME type for all the requested resources.  You need to be careful when using that feature to make a reliable test, but it can be done.  You can see examples of such tests in http://trac.webkit.org/browser/trunk/LayoutTests/fast/preloader</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240002</commentid>
    <comment_count>35</comment_count>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2010-06-18 10:14:30 -0700</bug_when>
    <thetext>(in reply to comment #33)

Leon,

No, I cannot think why you&apos;d want to distinguish these two target types, so I do think both should be TargetIsPrefetch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240314</commentid>
    <comment_count>36</comment_count>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2010-06-19 04:38:09 -0700</bug_when>
    <thetext>One other perspective on onload events on link elements: I think there&apos;s another good reason to avoid these events.  The Link: HTTP header elements is supposed to be semantically equivalent to an HTML link element in HTML (c.f. RFC 2068 http://www.ietf.org/rfc/rfc2068.txt (superseded by RFC 2616), and a draft reviving the element http://tools.ietf.org/id/draft-nottingham-http-link-header-10.html ).

So, if we&apos;re going to be putting link rel=prefetch and link rel=next elements in headers (and I plan on hacking at this once this patch lands), then I won&apos;t implement onload in that case: javascript in an HTTP header is almost certainly a bad idea.  So from this point of view, it&apos;s also desirable to not include them in the HTML, so as to increase the semantic equivalence.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240385</commentid>
    <comment_count>37</comment_count>
      <attachid>59108</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-19 16:49:13 -0700</bug_when>
    <thetext>Comment on attachment 59108
Remove tabs from changelog

As discussed above, I believe firing the load event here is incorrect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247254</commentid>
    <comment_count>38</comment_count>
      <attachid>60668</attachid>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2010-07-06 18:03:52 -0700</bug_when>
    <thetext>Created attachment 60668
alternate layout test for prefetch

I had some time on the long weekend, and I hacked up this working test.  The timeout is required of course because webkit prioritizes prefetches low enough that you&apos;ll get onload events normally before a prefetch has launched.  Is there a more elegant solution?

Leon, if you&apos;d like I&apos;m happy to remove the onload event from HTMLLinkElement.cpp and put together another patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247479</commentid>
    <comment_count>39</comment_count>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2010-07-07 04:31:02 -0700</bug_when>
    <thetext>(In reply to comment #38)
&gt; Created an attachment (id=60668) [details]
&gt; alternate layout test for prefetch
&gt; 
&gt; I had some time on the long weekend, and I hacked up this working test.  The timeout is required of course because webkit prioritizes prefetches low enough that you&apos;ll get onload events normally before a prefetch has launched.  Is there a more elegant solution?
&gt; 

onload was clearly more elegant but I guess there are good reasons not to do that either. I am afraid that having a magic constant (50ms) will make the test pass on Chrome but fail on Android. 

Anyway, since I don&apos;t have a better solution, I think we should get this patch in and unblock you. We&apos;ll worry about it on Android once we&apos;ve implemented dumpResourceResponseMIMETypes() in our DRT app.

Andrei</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247767</commentid>
    <comment_count>40</comment_count>
      <attachid>60779</attachid>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2010-07-07 14:39:32 -0700</bug_when>
    <thetext>Created attachment 60779
Patch that removes onload, simplifies cache object, and adds a new layouttest

This is an expansion of some hacking at Leon&apos;s patch I did on the weekend: it&apos;s still mostly his work, but I&apos;ve tried to simplify it without onload events.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247773</commentid>
    <comment_count>41</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-07 14:45:08 -0700</bug_when>
    <thetext>Attachment 60779 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebCore/ChangeLog:5:  Line contains tab character.  [whitespace/tab] [5]
WebCore/ChangeLog:6:  Line contains tab character.  [whitespace/tab] [5]
Total errors found: 2 in 30 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>247782</commentid>
    <comment_count>42</comment_count>
      <attachid>60782</attachid>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2010-07-07 14:52:23 -0700</bug_when>
    <thetext>Created attachment 60782
Remove tabs from changelog from last patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247801</commentid>
    <comment_count>43</comment_count>
      <attachid>60782</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-07-07 15:20:59 -0700</bug_when>
    <thetext>Comment on attachment 60782
Remove tabs from changelog from last patch

Thanks, this is looking much better.  Mostly questions and a few nits:

WebCore/html/HTMLLinkElement.h:56
 +              { };
These shoudn&apos;t be indented quite as much and { and } should be on separate lines.  Also, the ; is superfluous.

WebCore/loader/DocLoader.cpp:234
 +      case CachedResource::LinkPrefetch:
I don&apos;t think a link prefetch can corrupt a frame&apos;s pixels.  Maybe we need to add a new category here?

+ ENABLE_DEVICE_ORIENTATION = ;
Device orientation?

+ ENABLE_IMAGE_RESIZER = ;
??

LayoutTests/fast/dom/HTMLLinkElement/prefetch.html:7
 +      setTimeout(&quot;layoutTestController.notifyDone()&quot;,50);
Boo

LayoutTests/fast/dom/HTMLLinkElement/prefetch.html:6
 +      layoutTestController.dumpResourceResponseMIMETypes();
Why doesn&apos;t the show up in the results?  Maybe you need to use something with a known file extension, like HTML?

LayoutTests/platform/mac/Skipped:285
 +  # Link prefetch is disabled by default
What platform will run the test?  Why are we putting this behind a #define?  We should just implement the feature, no?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247932</commentid>
    <comment_count>44</comment_count>
      <attachid>60822</attachid>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2010-07-07 18:48:59 -0700</bug_when>
    <thetext>Created attachment 60822
remediated to abarth&apos;s comments

A remediation per review for abarth&apos;s comments.

&gt; WebCore/html/HTMLLinkElement.h:56
&gt; +              { };
&gt; These shoudn&apos;t be indented quite as much and { and } should be on separate lines.  Also, the ; is superfluous.

Done.

&gt; WebCore/loader/DocLoader.cpp:234
&gt;  +      case CachedResource::LinkPrefetch:
&gt; I don&apos;t think a link prefetch can corrupt a frame&apos;s pixels.  Maybe we need to add a new category here?

Done.

&gt; + ENABLE_DEVICE_ORIENTATION = ;
&gt; Device orientation?
&gt; 
&gt; + ENABLE_IMAGE_RESIZER = ;
&gt; ??

My bad: copied from other build scripts.  Now fixed.

&gt; LayoutTests/fast/dom/HTMLLinkElement/prefetch.html:7
&gt;  +      setTimeout(&quot;layoutTestController.notifyDone()&quot;,50);
&gt; Boo

Boo hoo!

&gt; LayoutTests/fast/dom/HTMLLinkElement/prefetch.html:6
&gt;  +      layoutTestController.dumpResourceResponseMIMETypes();
&gt; Why doesn&apos;t the show up in the results?  Maybe you need to use something with a known file extension, like HTML?

My bad.  Modified the test, now everything is in the results very well.

&gt; LayoutTests/platform/mac/Skipped:285
&gt; +  # Link prefetch is disabled by default
&gt; What platform will run the test?  Why are we putting this behind a #define?  We should just implement the feature, no?

So I&apos;ve had good luck testing this enabled in mac, and in chromium.  However for chromium there&apos;s an extra patch required (see FromTargetType in http://src.chromium.org/viewvc/chrome/trunk/src/webkit/glue/weburlloader_impl.cc?view=markup ).  To safely build this in chromium, we need to land this patch with define guards in webkit, and then enable the feature in webkit at the same time that we update FromTargetType (among other things).  Unfortunately, DumpRenderTree in chromium won&apos;t let this feature be tested.

However, my testing to date shows no reason not to enable this in mac: i&apos;d be excited to do it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248006</commentid>
    <comment_count>45</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-07 22:21:48 -0700</bug_when>
    <thetext>Attachment 60822 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/3465011</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248125</commentid>
    <comment_count>46</comment_count>
    <who name="Leon Clarke">leonclarke</who>
    <bug_when>2010-07-08 03:27:35 -0700</bug_when>
    <thetext>(In reply to comment #43)
&gt; (From update of attachment 60782 [details])
&gt; LayoutTests/platform/mac/Skipped:285
&gt;  +  # Link prefetch is disabled by default
&gt; What platform will run the test?  Why are we putting this behind a #define?  We should just implement the feature, no?

I mostly put it behind a #define as I could see arguments either way, and decided it might be most polite to put in the #ifdefs and remove them if people felt they were unnecessary.

The main arguments for the #ifdefs were
a) On Android, there&apos;s actually a tiny bit more code in our HTTP stack that ignores prefetch requests if on a roaming network. Other platforms might like to make similar changes before they enable the feature.
b) Antti was suggesting that this implementation would interact with the iPhone&apos;s cache code in a way that would make it useless on iPhone.
c) I felt there was a risk someone might object to the concept of prefetching, but that doesn&apos;t seem to be an issue.

Having written that, the arguments seem a bit weak. I&apos;d have no objections to removing the #define.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248151</commentid>
    <comment_count>47</comment_count>
      <attachid>60868</attachid>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2010-07-08 05:33:38 -0700</bug_when>
    <thetext>Created attachment 60868
fixed chromium fat finger

This oughta build on chromium.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248152</commentid>
    <comment_count>48</comment_count>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2010-07-08 05:35:27 -0700</bug_when>
    <thetext>(In reply to comment #46)
&gt; ...
&gt; 
&gt; The main arguments for the #ifdefs were
&gt; a) On Android, there&apos;s actually a tiny bit more code in our HTTP stack that ignores prefetch requests if on a roaming network. Other platforms might like to make similar changes before they enable the feature.

(a) is the case on chromium, too.  We specifically wanted to make sure we placed the new TargetType in the right priorities in SPDY and HTTP.

&gt; ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248173</commentid>
    <comment_count>49</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-08 06:56:59 -0700</bug_when>
    <thetext>Attachment 60868 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/3502022</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248176</commentid>
    <comment_count>50</comment_count>
      <attachid>60874</attachid>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2010-07-08 07:02:24 -0700</bug_when>
    <thetext>Created attachment 60874
really fix chromium fat finger</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248203</commentid>
    <comment_count>51</comment_count>
      <attachid>60883</attachid>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2010-07-08 08:04:26 -0700</bug_when>
    <thetext>Created attachment 60883
fat finger begone</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248274</commentid>
    <comment_count>52</comment_count>
      <attachid>60883</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-07-08 09:42:33 -0700</bug_when>
    <thetext>Comment on attachment 60883
fat finger begone

WebCore/loader/DocLoader.cpp:383
 +      if (res-&gt;isPrefetch())
It&apos;s slightly better to use something semantic here instead of RTTI.

LayoutTests/fast/dom/HTMLLinkElement/prefetch.html:7
 +      setTimeout(&quot;layoutTestController.notifyDone()&quot;,50);
Still sad about this line.  This test is going to be flaky, especially on slower machines and in configurations like valgrind.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248938</commentid>
    <comment_count>53</comment_count>
      <attachid>60883</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-07-09 05:35:33 -0700</bug_when>
    <thetext>Comment on attachment 60883
fat finger begone

Rejecting patch 60883 from commit-queue.

Failed to run &quot;[&apos;WebKitTools/Scripts/run-webkit-tests&apos;, &apos;--no-launch-safari&apos;, &apos;--exit-after-n-failures=1&apos;, &apos;--ignore-tests&apos;, &apos;compositing&apos;, &apos;--quiet&apos;]&quot; exit_code: 1
Running build-dumprendertree
Compiling Java tests
make: Nothing to be done for `default&apos;.
Running tests from /Users/eseidel/Projects/CommitQueue/LayoutTests
Testing 20633 test cases.
fast/dom/HTMLLinkElement/prefetch.html -&gt; failed

Exiting early after 1 failures. 6684 tests run.
126.68s total testing time

6683 test cases (99%) succeeded
1 test case (&lt;1%) had incorrect layout

Full output: http://webkit-commit-queue.appspot.com/results/3450081</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248956</commentid>
    <comment_count>54</comment_count>
      <attachid>61041</attachid>
    <who name="Leon Clarke">leonclarke</who>
    <bug_when>2010-07-09 06:30:16 -0700</bug_when>
    <thetext>Created attachment 61041
Actually skip the layout tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249448</commentid>
    <comment_count>55</comment_count>
      <attachid>61041</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-07-09 19:41:22 -0700</bug_when>
    <thetext>Comment on attachment 61041
Actually skip the layout tests

Clearing flags on attachment: 61041

Committed r63032: &lt;http://trac.webkit.org/changeset/63032&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250111</commentid>
    <comment_count>56</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2010-07-12 15:55:02 -0700</bug_when>
    <thetext>(In reply to comment #55)
&gt; (From update of attachment 61041 [details])
&gt; Clearing flags on attachment: 61041
&gt; 
&gt; Committed r63032: &lt;http://trac.webkit.org/changeset/63032&gt;

http://trac.webkit.org/browser/trunk/WebCore/loader/loader.cpp?rev=63032#L593

This function now contains the following code:

delete request;
docLoader-&gt;decrementRequestCount(request-&gt;cachedResource());

It seems like a Very Bad Thing that we&apos;re deleting an object then immediately referencing it. :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250207</commentid>
    <comment_count>57</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-07-12 18:09:06 -0700</bug_when>
    <thetext>I fail at reading code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250411</commentid>
    <comment_count>58</comment_count>
      <attachid>61349</attachid>
    <who name="Leon Clarke">leonclarke</who>
    <bug_when>2010-07-13 03:04:23 -0700</bug_when>
    <thetext>Created attachment 61349
Fix the issue Nate pointed out with accessing deleted objects.

Thanks for soptting this Nate. Very sorry about that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250412</commentid>
    <comment_count>59</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-13 03:07:19 -0700</bug_when>
    <thetext>Attachment 61349 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/ChangeLog:5:  Line contains tab character.  [whitespace/tab] [5]
WebCore/ChangeLog:6:  Line contains tab character.  [whitespace/tab] [5]
WebCore/ChangeLog:7:  Line contains tab character.  [whitespace/tab] [5]
WebCore/ChangeLog:8:  Line contains tab character.  [whitespace/tab] [5]
WebCore/ChangeLog:11:  Line contains tab character.  [whitespace/tab] [5]
Total errors found: 5 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>250413</commentid>
    <comment_count>60</comment_count>
      <attachid>61350</attachid>
    <who name="Leon Clarke">leonclarke</who>
    <bug_when>2010-07-13 03:10:58 -0700</bug_when>
    <thetext>Created attachment 61350
And again without tabs in the changelog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250491</commentid>
    <comment_count>61</comment_count>
      <attachid>61350</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-07-13 07:30:42 -0700</bug_when>
    <thetext>Comment on attachment 61350
And again without tabs in the changelog

I&apos;ll land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250492</commentid>
    <comment_count>62</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-07-13 07:33:42 -0700</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	WebCore/ChangeLog
	M	WebCore/html/HTMLLinkElement.h
	M	WebCore/loader/loader.cpp
Committed r63204</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250493</commentid>
    <comment_count>63</comment_count>
    <who name="Nicholas Shanks">nickshanks</who>
    <bug_when>2010-07-13 07:34:51 -0700</bug_when>
    <thetext>That ought to have thrown up a compiler warning (or even an error), but on the assumption that it didn&apos;t, can we not add some check to one of the style bots to look for things like this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250495</commentid>
    <comment_count>64</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-07-13 07:35:16 -0700</bug_when>
    <thetext>*** Bug 42165 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250516</commentid>
    <comment_count>65</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-07-13 08:19:01 -0700</bug_when>
    <thetext>I&apos;m not completely familiar with this code, but doesn&apos;t this mean that request count is out of sync now?

Previously it did:
delete request; // Unconditionally delete
decrementRequestCount(); // Unconditionally decrement request count.

Now it does:
decrementRequestCount(cachedResource); // Conditionally decrement request count iff not a prefetch
delete request; // Unconditionally delete

It seems odd that the cachedResource-&gt;isPrefetch() check only guards the request count decrement and not the delete. But perhaps I&apos;m just missing something.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250522</commentid>
    <comment_count>66</comment_count>
    <who name="Leon Clarke">leonclarke</who>
    <bug_when>2010-07-13 08:30:12 -0700</bug_when>
    <thetext>I believe it is balanced, since there is a corresponding change that prefetch requests never increase the request count.

The request count seems to be only used to find out when &apos;everything&apos; has finished loading, to fire he page&apos;s onload event etc.. Since the prefetch requests should load after onload, I exclude them from the request count.

I agree it&apos;s a bit unaesthetic that there&apos;s a &apos;request count&apos; that excludes some requests, but it always gives the answer that the caller wants.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250528</commentid>
    <comment_count>67</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-07-13 08:36:18 -0700</bug_when>
    <thetext>(In reply to comment #66)
&gt; I believe it is balanced, since there is a corresponding change that prefetch requests never increase the request count.
&gt; 
&gt; The request count seems to be only used to find out when &apos;everything&apos; has finished loading, to fire he page&apos;s onload event etc.. Since the prefetch requests should load after onload, I exclude them from the request count.
&gt; 
&gt; I agree it&apos;s a bit unaesthetic that there&apos;s a &apos;request count&apos; that excludes some requests, but it always gives the answer that the caller wants.

Ah, thanks for the explanation. I can&apos;t think of any way to add ASSERTs to guarantee that it&apos;s balanced, too bad.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263154</commentid>
    <comment_count>68</comment_count>
      <attachid>61350</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-08-11 03:48:46 -0700</bug_when>
    <thetext>Comment on attachment 61350
And again without tabs in the changelog

Rejecting patch 61350 from commit-queue.

Failed to run &quot;[u&apos;/Users/eseidel/Projects/CommitQueue/WebKitTools/Scripts/svn-apply&apos;, u&apos;--reviewer&apos;, u&apos;Pavel Feldman&apos;, u&apos;--force&apos;]&quot; exit_code: 1
Parsed 3 diffs from patch file(s).
patching file WebCore/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file WebCore/html/HTMLLinkElement.h
Hunk #1 FAILED at 31.
1 out of 1 hunk FAILED -- saving rejects to file WebCore/html/HTMLLinkElement.h.rej
patching file WebCore/loader/loader.cpp
Hunk #1 FAILED at 590.
1 out of 1 hunk FAILED -- saving rejects to file WebCore/loader/loader.cpp.rej

Full output: http://queues.webkit.org/results/3760046</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263309</commentid>
    <comment_count>69</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-08-11 09:55:58 -0700</bug_when>
    <thetext>Looks like this has been landed.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56883</attachid>
            <date>2010-05-24 06:51:35 -0700</date>
            <delta_ts>2010-06-01 07:07:33 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>prefetch.patch</filename>
            <type>text/plain</type>
            <size>22305</size>
            <attacher name="Leon Clarke">leonclarke</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MDA3MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDIgQEAKKzIwMTAtMDUtMjQgIExlb24gQ2xhcmtlICA8bGVvbmNsYXJrZUBnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBzdXBwb3J0IGZvciBsb25rIHJlbD1wcmVmZXRjaAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY1MgorCisgICAgICAgIFRlc3Q6IGZhc3QvZG9t
L0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC1vbmxvYWQuaHRtbAorCisgICAgICAgICogaHRtbC9I
VE1MTGlua0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50Ojpw
YXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6
OnRva2VuaXplUmVsQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVu
dDo6cHJvY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6Om5vdGlmeUZp
bmlzaGVkKToKKyAgICAgICAgKiBodG1sL0hUTUxMaW5rRWxlbWVudC5oOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTExpbmtFbGVtZW50OjpSZWxBdHRyaWJ1dGU6OlJlbEF0dHJpYnV0ZSk6CisgICAg
ICAgICogbG9hZGVyL0NhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVJlc291cmNl
KToKKyAgICAgICAgKiBsb2FkZXIvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZFJlc291cmNlOjopOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6Omlz
UHJlZmV0Y2gpOgorICAgICAgICAqIGxvYWRlci9Eb2NMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jTG9hZGVyOjpyZXF1ZXN0TGlua1ByZWZldGNoKToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY0xvYWRlcjo6Y2FuUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2NMb2FkZXI6Omlu
Y3JlbWVudFJlcXVlc3RDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2NMb2FkZXI6OmRlY3Jl
bWVudFJlcXVlc3RDb3VudCk6CisgICAgICAgICogbG9hZGVyL0RvY0xvYWRlci5oOgorICAgICAg
ICAqIGxvYWRlci9sb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2FjaGVkUmVzb3VyY2VU
eXBlVG9UYXJnZXRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRlcjo6ZGV0ZXJtaW5lUHJp
b3JpdHkpOgorICAgICAgICAoV2ViQ29yZTo6TG9hZGVyOjpsb2FkKToKKyAgICAgICAgKFdlYkNv
cmU6OkxvYWRlcjo6SG9zdDo6c2VydmVQZW5kaW5nUmVxdWVzdHMpOgorICAgICAgICAoV2ViQ29y
ZTo6TG9hZGVyOjpIb3N0OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okxv
YWRlcjo6SG9zdDo6ZGlkRmFpbCk6CisgICAgICAgIChXZWJDb3JlOjpMb2FkZXI6Okhvc3Q6OmRp
ZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpMb2FkZXI6Okhvc3Q6OmNhbmNl
bFBlbmRpbmdSZXF1ZXN0cyk6CisgICAgICAgICogbG9hZGVyL2xvYWRlci5oOgorICAgICAgICAo
V2ViQ29yZTo6TG9hZGVyOjopOgorCiAyMDEwLTA1LTI0ICBKZXJlbXkgT3Jsb3cgIDxqb3Jsb3dA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuICBDaGVja2VkIGluIG1lcmdlIGVy
cm9yLiAgOi0oCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAkocmV2aXNpb24gNjAwNzEp
CisrKyBXZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDEsNiArNDEsOSBAQAogI2luY2x1ZGUgIlNjcmlwdEV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRl
ICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpZiBFTkFCTEUo
TElOS19QUkVGRVRDSCkKKyNpbmNsdWRlICJDYWNoZWRMaW5rUHJlZmV0Y2guaCIKKyNlbmRpZgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEyNiw2ICsxMjksOCBAQCB2b2lkIEhUTUxMaW5r
RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1CiAgICAgICAgIHNldERpc2FibGVkU3RhdGUoIWF0
dHItPmlzTnVsbCgpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gb25iZWZvcmVsb2Fk
QXR0cikKICAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuYmVm
b3JlbG9hZEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHIpKTsK
KyAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gb25sb2FkQXR0cikKKyAgICAgICAgc2V0QXR0
cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkubG9hZEV2ZW50LCBjcmVhdGVBdHRyaWJ1
dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHIpKTsKICAgICBlbHNlIHsKICAgICAgICAgaWYgKGF0
dHItPm5hbWUoKSA9PSB0aXRsZUF0dHIgJiYgbV9zaGVldCkKICAgICAgICAgICAgIG1fc2hlZXQt
PnNldFRpdGxlKGF0dHItPnZhbHVlKCkpOwpAQCAtMTM5LDEyICsxNDQsMTkgQEAgdm9pZCBIVE1M
TGlua0VsZW1lbnQ6OnRva2VuaXplUmVsQXR0cmlidQogICAgIHJlbEF0dHJpYnV0ZS5tX2lzSWNv
biA9IGZhbHNlOwogICAgIHJlbEF0dHJpYnV0ZS5tX2lzQWx0ZXJuYXRlID0gZmFsc2U7CiAgICAg
cmVsQXR0cmlidXRlLm1faXNETlNQcmVmZXRjaCA9IGZhbHNlOworI2lmIEVOQUJMRShMSU5LX1BS
RUZFVENIKQorICAgIHJlbEF0dHJpYnV0ZS5tX2lzTGlua1ByZWZldGNoID0gZmFsc2U7CisjZW5k
aWYKICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UocmVsLCAic3R5bGVzaGVldCIpKQogICAgICAg
ICByZWxBdHRyaWJ1dGUubV9pc1N0eWxlU2hlZXQgPSB0cnVlOwogICAgIGVsc2UgaWYgKGVxdWFs
SWdub3JpbmdDYXNlKHJlbCwgImljb24iKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShyZWwsICJzaG9y
dGN1dCBpY29uIikpCiAgICAgICAgIHJlbEF0dHJpYnV0ZS5tX2lzSWNvbiA9IHRydWU7CiAgICAg
ZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UocmVsLCAiZG5zLXByZWZldGNoIikpCiAgICAgICAg
IHJlbEF0dHJpYnV0ZS5tX2lzRE5TUHJlZmV0Y2ggPSB0cnVlOworI2lmIEVOQUJMRShMSU5LX1BS
RUZFVENIKQorICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHJlbCwgInByZWZldGNoIikp
CisgICAgICAgIHJlbEF0dHJpYnV0ZS5tX2lzTGlua1ByZWZldGNoID0gdHJ1ZTsKKyNlbmRpZgog
ICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHJlbCwgImFsdGVybmF0ZSBzdHlsZXNoZWV0
IikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UocmVsLCAic3R5bGVzaGVldCBhbHRlcm5hdGUiKSkgewog
ICAgICAgICByZWxBdHRyaWJ1dGUubV9pc1N0eWxlU2hlZXQgPSB0cnVlOwogICAgICAgICByZWxB
dHRyaWJ1dGUubV9pc0FsdGVybmF0ZSA9IHRydWU7CkBAIC0xODEsNiArMTkzLDE2IEBAIHZvaWQg
SFRNTExpbmtFbGVtZW50Ojpwcm9jZXNzKCkKICAgICBpZiAobV9yZWxBdHRyaWJ1dGUubV9pc0RO
U1ByZWZldGNoICYmIG1fdXJsLmlzVmFsaWQoKSAmJiAhbV91cmwuaXNFbXB0eSgpKQogICAgICAg
ICBSZXNvdXJjZUhhbmRsZTo6cHJlcGFyZUZvclVSTChtX3VybCk7CiAKKyNpZiBFTkFCTEUoTElO
S19QUkVGRVRDSCkKKyAgICBpZiAobV9yZWxBdHRyaWJ1dGUubV9pc0xpbmtQcmVmZXRjaCAmJiBt
X3VybC5pc1ZhbGlkKCkpIHsKKyAgICAgICAgbV9jYWNoZWRMaW5rUHJlZmV0Y2ggPSBkb2N1bWVu
dCgpLT5kb2NMb2FkZXIoKS0+cmVxdWVzdExpbmtQcmVmZXRjaChtX3VybCk7CisgICAgICAgIG1f
bG9hZGluZyA9IHRydWU7CisKKyAgICAgICAgaWYgKG1fY2FjaGVkTGlua1ByZWZldGNoKQorICAg
ICAgICAgICAgbV9jYWNoZWRMaW5rUHJlZmV0Y2gtPmFkZENsaWVudCh0aGlzKTsKKyAgICB9Cisj
ZW5kaWYKKwogICAgIGJvb2wgYWNjZXB0SWZUeXBlQ29udGFpbnNUZXh0Q1NTID0gZG9jdW1lbnQo
KS0+cGFnZSgpICYmIGRvY3VtZW50KCktPnBhZ2UoKS0+c2V0dGluZ3MoKSAmJiBkb2N1bWVudCgp
LT5wYWdlKCktPnNldHRpbmdzKCktPnRyZWF0c0FueVRleHRDU1NMaW5rQXNTdHlsZXNoZWV0KCk7
CiAKICAgICAvLyBTdHlsZXNoZWV0CkBAIC0zMTksNiArMzQxLDExIEBAIGJvb2wgSFRNTExpbmtF
bGVtZW50Ojppc0xvYWRpbmcoKSBjb25zdAogICAgIHJldHVybiBzdGF0aWNfY2FzdDxDU1NTdHls
ZVNoZWV0ICo+KG1fc2hlZXQuZ2V0KCkpLT5pc0xvYWRpbmcoKTsKIH0KIAordm9pZCBIVE1MTGlu
a0VsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKikKK3sKKyAgICBkaXNwYXRj
aEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmxvYWRFdmVudCwgZmFsc2UsIGZhbHNl
KSk7Cit9CisKIGJvb2wgSFRNTExpbmtFbGVtZW50OjpzaGVldExvYWRlZCgpCiB7CiAgICAgaWYg
KCFpc0xvYWRpbmcoKSAmJiAhaXNEaXNhYmxlZCgpICYmICFpc0FsdGVybmF0ZSgpKSB7CkluZGV4
OiBXZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9o
dG1sL0hUTUxMaW5rRWxlbWVudC5oCShyZXZpc2lvbiA2MDA3MSkKKysrIFdlYkNvcmUvaHRtbC9I
VE1MTGlua0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNoZWRDU1NTdHlsZVNoZWV0OworY2xhc3MgQ2FjaGVk
TGlua1ByZWZldGNoOwogY2xhc3MgS1VSTDsKIAogY2xhc3MgSFRNTExpbmtFbGVtZW50IDogcHVi
bGljIEhUTUxFbGVtZW50LCBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQgewpAQCAtNDAsOCAr
NDEsMTUgQEAgcHVibGljOgogICAgICAgICBib29sIG1faXNJY29uOwogICAgICAgICBib29sIG1f
aXNBbHRlcm5hdGU7CiAgICAgICAgIGJvb2wgbV9pc0ROU1ByZWZldGNoOworI2lmIEVOQUJMRShM
SU5LX1BSRUZFVENIKQorICAgICAgICBib29sIG1faXNMaW5rUHJlZmV0Y2g7CisjZW5kaWYKIAot
ICAgICAgICBSZWxBdHRyaWJ1dGUoKSA6IG1faXNTdHlsZVNoZWV0KGZhbHNlKSwgbV9pc0ljb24o
ZmFsc2UpLCBtX2lzQWx0ZXJuYXRlKGZhbHNlKSwgbV9pc0ROU1ByZWZldGNoKGZhbHNlKSB7IH0K
KyAgICAgICAgUmVsQXR0cmlidXRlKCkgOiBtX2lzU3R5bGVTaGVldChmYWxzZSksIG1faXNJY29u
KGZhbHNlKSwgbV9pc0FsdGVybmF0ZShmYWxzZSksIG1faXNETlNQcmVmZXRjaChmYWxzZSkKKyNp
ZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKKyAgICAgICAgICAgICwgbV9pc0xpbmtQcmVmZXRjaChm
YWxzZSkKKyNlbmRpZgorICAgICAgICAgICAgeyB9OwogICAgIH07CiAKICAgICBIVE1MTGlua0Vs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50KiwgYm9vbCBjcmVhdGVkQnlQYXJz
ZXIpOwpAQCAtODksNiArOTcsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBmcm9tIENhY2hlZFJlc291
cmNlQ2xpZW50CiAgICAgdmlydHVhbCB2b2lkIHNldENTU1N0eWxlU2hlZXQoY29uc3QgU3RyaW5n
JiBocmVmLCBjb25zdCBLVVJMJiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIGNvbnN0
IENhY2hlZENTU1N0eWxlU2hlZXQqIHNoZWV0KTsKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5Rmlu
aXNoZWQoQ2FjaGVkUmVzb3VyY2UqKTsKICAgICBib29sIGlzTG9hZGluZygpIGNvbnN0OwogICAg
IHZpcnR1YWwgYm9vbCBzaGVldExvYWRlZCgpOwogCkBAIC0xMTYsNiArMTI1LDkgQEAgcHJvdGVj
dGVkOgogCiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkQ1NTU3R5bGVTaGVldD4gbV9j
YWNoZWRTaGVldDsKICAgICBSZWZQdHI8Q1NTU3R5bGVTaGVldD4gbV9zaGVldDsKKyNpZiBFTkFC
TEUoTElOS19QUkVGRVRDSCkKKyAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRMaW5rUHJl
ZmV0Y2g+IG1fY2FjaGVkTGlua1ByZWZldGNoOworI2VuZGlmCiAgICAgS1VSTCBtX3VybDsKICAg
ICBTdHJpbmcgbV90eXBlOwogICAgIFN0cmluZyBtX21lZGlhOwpJbmRleDogV2ViQ29yZS9sb2Fk
ZXIvQ2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0NhY2hlLmNwcAkocmV2
aXNpb24gNjAwNzEpCisrKyBXZWJDb3JlL2xvYWRlci9DYWNoZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM4LDYgKzM4LDkgQEAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUg
PHN0ZGlvLmg+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisjaWYgRU5BQkxFKExJTktf
UFJFRkVUQ0gpCisjaW5jbHVkZSAiQ2FjaGVkTGlua1ByZWZldGNoLmgiCisjZW5kaWYKIAogdXNp
bmcgbmFtZXNwYWNlIHN0ZDsKIApAQCAtODYsNiArODksMTAgQEAgc3RhdGljIENhY2hlZFJlc291
cmNlKiBjcmVhdGVSZXNvdXJjZShDYQogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlhCTFN0eWxl
U2hlZXQ6CiAgICAgICAgIHJldHVybiBuZXcgQ2FjaGVkWEJMRG9jdW1lbnQodXJsLnN0cmluZygp
KTsKICNlbmRpZgorI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQorICAgIGNhc2UgQ2FjaGVkUmVz
b3VyY2U6OkxpbmtQcmVmZXRjaDoKKyAgICAgICAgcmV0dXJuIG5ldyBDYWNoZWRMaW5rUHJlZmV0
Y2godXJsLnN0cmluZygpKTsKKyNlbmRpZgogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0NhY2hlZFJlc291cmNlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9sb2FkZXIvQ2FjaGVkUmVzb3VyY2UuaAkocmV2aXNpb24gNjAwNzEpCisrKyBX
ZWJDb3JlL2xvYWRlci9DYWNoZWRSZXNvdXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02NCw2ICs2
NCw5IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoWEJMKQogICAgICAgICAsIFhCTAogI2VuZGlmCisj
aWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCisgICAgICAgICwgTGlua1ByZWZldGNoCisjZW5kaWYK
ICAgICB9OwogCiAgICAgZW51bSBTdGF0dXMgewpAQCAtMTIyLDYgKzEyNSw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldExvYWRpbmcoYm9vbCBiKSB7IG1fbG9hZGluZyA9IGI7IH0KIAogICAgIHZp
cnR1YWwgYm9vbCBpc0ltYWdlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFs
IGJvb2wgaXNQcmVmZXRjaCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB1bnNpZ25l
ZCBhY2Nlc3NDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fYWNjZXNzQ291bnQ7IH0KICAgICB2b2lk
IGluY3JlYXNlQWNjZXNzQ291bnQoKSB7IG1fYWNjZXNzQ291bnQrKzsgfQpJbmRleDogV2ViQ29y
ZS9sb2FkZXIvRG9jTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9Eb2NM
b2FkZXIuY3BwCShyZXZpc2lvbiA2MDA3MSkKKysrIFdlYkNvcmUvbG9hZGVyL0RvY0xvYWRlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDkgQEAKICNpbmNsdWRlICJsb2FkZXIuaCIK
ICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCisjaWYg
RU5BQkxFKExJTktfUFJFRkVUQ0gpCisjaW5jbHVkZSAiQ2FjaGVkTGlua1ByZWZldGNoLmgiCisj
ZW5kaWYKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKICNkZWZpbmUgUFJFTE9BRF9E
RUJVRyAwCkBAIC0xNjgsNiArMTcxLDEzIEBAIENhY2hlZFhCTERvY3VtZW50KiBEb2NMb2FkZXI6
OnJlcXVlc3RYQkwKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCitDYWNo
ZWRMaW5rUHJlZmV0Y2gqIERvY0xvYWRlcjo6cmVxdWVzdExpbmtQcmVmZXRjaChjb25zdCBTdHJp
bmcmIHVybCkKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q2FjaGVkTGlua1ByZWZldGNoKj4o
cmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpMaW5rUHJlZmV0Y2gsIHVybCwgU3RyaW5n
KCkpKTsKK30KKyNlbmRpZgorCiBib29sIERvY0xvYWRlcjo6Y2FuUmVxdWVzdChDYWNoZWRSZXNv
dXJjZTo6VHlwZSB0eXBlLCBjb25zdCBLVVJMJiB1cmwpCiB7CiAgICAgLy8gU29tZSB0eXBlcyBv
ZiByZXNvdXJjZXMgY2FuIGJlIGxvYWRlZCBvbmx5IGZyb20gdGhlIHNhbWUgb3JpZ2luLiAgT3Ro
ZXIKQEAgLTE3OCw2ICsxODgsOSBAQCBib29sIERvY0xvYWRlcjo6Y2FuUmVxdWVzdChDYWNoZWRS
ZXNvdXJjCiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6Q1NTU3R5bGVTaGVldDoKICAgICBjYXNl
IENhY2hlZFJlc291cmNlOjpTY3JpcHQ6CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6Rm9udFJl
c291cmNlOgorI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQorICAgIGNhc2UgQ2FjaGVkUmVzb3Vy
Y2U6OkxpbmtQcmVmZXRjaDoKKyNlbmRpZgogICAgICAgICAvLyBUaGVzZSB0eXBlcyBvZiByZXNv
dXJjZXMgY2FuIGJlIGxvYWRlZCBmcm9tIGFueSBvcmlnaW4uCiAgICAgICAgIC8vIEZJWE1FOiBB
cmUgd2Ugc3VyZSBhYm91dCBDYWNoZWRSZXNvdXJjZTo6Rm9udFJlc291cmNlPwogICAgICAgICBi
cmVhazsKQEAgLTIyMCw2ICsyMzMsOSBAQCBib29sIERvY0xvYWRlcjo6Y2FuUmVxdWVzdChDYWNo
ZWRSZXNvdXJjCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkltYWdl
UmVzb3VyY2U6CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6Q1NTU3R5bGVTaGVldDoKKyNpZiBF
TkFCTEUoTElOS19QUkVGRVRDSCkKKyAgICBjYXNlIENhY2hlZFJlc291cmNlOjpMaW5rUHJlZmV0
Y2g6CisjZW5kaWYKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpGb250UmVzb3VyY2U6IHsKICAg
ICAgICAgLy8gVGhlc2UgcmVzb3VyY2VzIGNhbiBjb3JydXB0IG9ubHkgdGhlIGZyYW1lJ3MgcGl4
ZWxzLgogICAgICAgICBpZiAoRnJhbWUqIGYgPSBmcmFtZSgpKSB7CkBAIC0zNTUsMTMgKzM3MSwx
OSBAQCB2b2lkIERvY0xvYWRlcjo6Y2hlY2tDYWNoZU9iamVjdFN0YXR1cyhDCiAgICAgZnJhbWUo
KS0+bG9hZGVyKCktPmxvYWRlZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKHJlc291cmNlKTsKIH0K
IAotdm9pZCBEb2NMb2FkZXI6OmluY3JlbWVudFJlcXVlc3RDb3VudCgpCit2b2lkIERvY0xvYWRl
cjo6aW5jcmVtZW50UmVxdWVzdENvdW50KGNvbnN0IENhY2hlZFJlc291cmNlKiByZXMpCiB7Cisg
ICAgaWYgKHJlcy0+aXNQcmVmZXRjaCgpKQorICAgICAgICByZXR1cm47CisKICAgICArK21fcmVx
dWVzdENvdW50OwogfQogCi12b2lkIERvY0xvYWRlcjo6ZGVjcmVtZW50UmVxdWVzdENvdW50KCkK
K3ZvaWQgRG9jTG9hZGVyOjpkZWNyZW1lbnRSZXF1ZXN0Q291bnQoY29uc3QgQ2FjaGVkUmVzb3Vy
Y2UqIHJlcykKIHsKKyAgICBpZiAocmVzLT5pc1ByZWZldGNoKCkpCisgICAgICAgIHJldHVybjsK
KwogICAgIC0tbV9yZXF1ZXN0Q291bnQ7CiAgICAgQVNTRVJUKG1fcmVxdWVzdENvdW50ID4gLTEp
OwogfQpJbmRleDogV2ViQ29yZS9sb2FkZXIvRG9jTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9sb2FkZXIvRG9jTG9hZGVyLmgJKHJldmlzaW9uIDYwMDcxKQorKysgV2ViQ29yZS9sb2Fk
ZXIvRG9jTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDkgQEAgY2xhc3MgRG9j
dW1lbnQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEltYWdlTG9hZGVyOwogY2xhc3MgS1VSTDsKKyNp
ZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKK2NsYXNzIENhY2hlZExpbmtQcmVmZXRjaDsKKyNlbmRp
ZgogCiAvLyBUaGUgRG9jTG9hZGVyIG1hbmFnZXMgdGhlIGxvYWRpbmcgb2Ygc2NyaXB0cy9pbWFn
ZXMvc3R5bGVzaGVldHMgZm9yIGEgc2luZ2xlIGRvY3VtZW50LgogY2xhc3MgRG9jTG9hZGVyIDog
cHVibGljIE5vbmNvcHlhYmxlIHsKQEAgLTY3LDYgKzcwLDkgQEAgcHVibGljOgogI2lmIEVOQUJM
RShYQkwpCiAgICAgQ2FjaGVkWEJMRG9jdW1lbnQqIHJlcXVlc3RYQkxEb2N1bWVudChjb25zdCBT
dHJpbmcgJnVybCk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKKyAgICBDYWNo
ZWRMaW5rUHJlZmV0Y2gqIHJlcXVlc3RMaW5rUHJlZmV0Y2goY29uc3QgU3RyaW5nICZ1cmwpOwor
I2VuZGlmCiAKICAgICAvLyBMb2dzIGFuIGFjY2VzcyBkZW5pZWQgbWVzc2FnZSB0byB0aGUgY29u
c29sZSBmb3IgdGhlIHNwZWNpZmllZCBVUkwuCiAgICAgdm9pZCBwcmludEFjY2Vzc0RlbmllZE1l
c3NhZ2UoY29uc3QgS1VSTCYgdXJsKSBjb25zdDsKQEAgLTkxLDggKzk3LDggQEAgcHVibGljOgog
ICAgIAogICAgIHZvaWQgc2V0QWxsb3dTdGFsZVJlc291cmNlcyhib29sIGFsbG93U3RhbGVSZXNv
dXJjZXMpIHsgbV9hbGxvd1N0YWxlUmVzb3VyY2VzID0gYWxsb3dTdGFsZVJlc291cmNlczsgfQog
Ci0gICAgdm9pZCBpbmNyZW1lbnRSZXF1ZXN0Q291bnQoKTsKLSAgICB2b2lkIGRlY3JlbWVudFJl
cXVlc3RDb3VudCgpOworICAgIHZvaWQgaW5jcmVtZW50UmVxdWVzdENvdW50KGNvbnN0IENhY2hl
ZFJlc291cmNlKik7CisgICAgdm9pZCBkZWNyZW1lbnRSZXF1ZXN0Q291bnQoY29uc3QgQ2FjaGVk
UmVzb3VyY2UqKTsKICAgICBpbnQgcmVxdWVzdENvdW50KCk7CiAgICAgCiAgICAgdm9pZCBjbGVh
clByZWxvYWRzKCk7CkluZGV4OiBXZWJDb3JlL2xvYWRlci9sb2FkZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvbG9hZGVyL2xvYWRlci5jcHAJKHJldmlzaW9uIDYwMDcxKQorKysgV2ViQ29y
ZS9sb2FkZXIvbG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODksNyArODksMTIgQEAgc3Rh
dGljIFJlc291cmNlUmVxdWVzdDo6VGFyZ2V0VHlwZSBjYWNoZQogICAgICAgICByZXR1cm4gUmVz
b3VyY2VSZXF1ZXN0OjpUYXJnZXRJc0ZvbnRSZXNvdXJjZTsKICAgICBjYXNlIENhY2hlZFJlc291
cmNlOjpJbWFnZVJlc291cmNlOgogICAgICAgICByZXR1cm4gUmVzb3VyY2VSZXF1ZXN0OjpUYXJn
ZXRJc0ltYWdlOworI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQorICAgIGNhc2UgQ2FjaGVkUmVz
b3VyY2U6OkxpbmtQcmVmZXRjaDoKKyAgICAgICAgcmV0dXJuIFJlc291cmNlUmVxdWVzdDo6VGFy
Z2V0SXNTdWJyZXNvdXJjZTsKKyNlbmRpZgogICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICByZXR1cm4gUmVzb3VyY2VSZXF1ZXN0OjpUYXJnZXRJc1N1YnJlc291cmNlOwogfQog
CkBAIC0xMTAsNiArMTE1LDEwIEBAIExvYWRlcjo6UHJpb3JpdHkgTG9hZGVyOjpkZXRlcm1pbmVQ
cmlvcmkKICAgICAgICAgICAgIHJldHVybiBNZWRpdW07CiAgICAgICAgIGNhc2UgQ2FjaGVkUmVz
b3VyY2U6OkltYWdlUmVzb3VyY2U6CiAgICAgICAgICAgICByZXR1cm4gTG93OworI2lmIEVOQUJM
RShMSU5LX1BSRUZFVENIKQorICAgICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpMaW5rUHJlZmV0
Y2g6CisgICAgICAgICAgICByZXR1cm4gVmVyeUxvdzsKKyNlbmRpZgogICAgIH0KICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gTG93OwpAQCAtMTM5LDkgKzE0OCw5IEBAIHZv
aWQgTG9hZGVyOjpsb2FkKERvY0xvYWRlciogZG9jTG9hZGVyLCAKICAgICBib29sIGhhZFJlcXVl
c3RzID0gaG9zdC0+aGFzUmVxdWVzdHMoKTsKICAgICBQcmlvcml0eSBwcmlvcml0eSA9IGRldGVy
bWluZVByaW9yaXR5KHJlc291cmNlKTsKICAgICBob3N0LT5hZGRSZXF1ZXN0KHJlcXVlc3QsIHBy
aW9yaXR5KTsKLSAgICBkb2NMb2FkZXItPmluY3JlbWVudFJlcXVlc3RDb3VudCgpOworICAgIGRv
Y0xvYWRlci0+aW5jcmVtZW50UmVxdWVzdENvdW50KHJlcXVlc3QtPmNhY2hlZFJlc291cmNlKCkp
OwogCi0gICAgaWYgKHByaW9yaXR5ID4gTG93IHx8ICF1cmwucHJvdG9jb2xJbkhUVFBGYW1pbHko
KSB8fCAhaGFkUmVxdWVzdHMpIHsKKyAgICBpZiAocHJpb3JpdHkgPiBMb3cgfHwgIXVybC5wcm90
b2NvbEluSFRUUEZhbWlseSgpIHx8IChwcmlvcml0eSA9PSBMb3cgJiYgIWhhZFJlcXVlc3RzKSkg
ewogICAgICAgICAvLyBUcnkgdG8gcmVxdWVzdCBpbXBvcnRhbnQgcmVzb3VyY2VzIGltbWVkaWF0
ZWx5CiAgICAgICAgIGhvc3QtPnNlcnZlUGVuZGluZ1JlcXVlc3RzKHByaW9yaXR5KTsKICAgICB9
IGVsc2UgewpAQCAtMzYxLDYgKzM3MCwxMSBAQCB2b2lkIExvYWRlcjo6SG9zdDo6c2VydmVQZW5k
aW5nUmVxdWVzdHMoCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAorI2lmIEVOQUJMRShMSU5L
X1BSRUZFVENIKQorICAgICAgICBpZiAocmVxdWVzdC0+Y2FjaGVkUmVzb3VyY2UoKS0+dHlwZSgp
ID09IENhY2hlZFJlc291cmNlOjpMaW5rUHJlZmV0Y2gpCisgICAgICAgICAgICByZXNvdXJjZVJl
cXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKCJYLU1veiIsICJwcmVmZXRjaCIpOworI2VuZGlmCisK
ICAgICAgICAgUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBsb2FkZXIgPSBTdWJyZXNvdXJjZUxv
YWRlcjo6Y3JlYXRlKGRvY0xvYWRlci0+ZG9jKCktPmZyYW1lKCksCiAgICAgICAgICAgICB0aGlz
LCByZXNvdXJjZVJlcXVlc3QsIHJlcXVlc3QtPnNob3VsZERvU2VjdXJpdHlDaGVjaygpLCByZXF1
ZXN0LT5zZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCkpOwogICAgICAgICBpZiAobG9hZGVyKSB7
CkBAIC0zNzAsNyArMzg0LDcgQEAgdm9pZCBMb2FkZXI6Okhvc3Q6OnNlcnZlUGVuZGluZ1JlcXVl
c3RzKAogICAgICAgICAgICAgcHJpbnRmKCJIT1NUICVzIENPVU5UICVkIExPQURJTkcgJXNcbiIs
IHJlc291cmNlUmVxdWVzdC51cmwoKS5ob3N0KCkubGF0aW4xKCkuZGF0YSgpLCBtX3JlcXVlc3Rz
TG9hZGluZy5zaXplKCksIHJlcXVlc3QtPmNhY2hlZFJlc291cmNlKCktPnVybCgpLmxhdGluMSgp
LmRhdGEoKSk7CiAjZW5kaWYKICAgICAgICAgfSBlbHNlIHsgICAgICAgICAgICAKLSAgICAgICAg
ICAgIGRvY0xvYWRlci0+ZGVjcmVtZW50UmVxdWVzdENvdW50KCk7CisgICAgICAgICAgICBkb2NM
b2FkZXItPmRlY3JlbWVudFJlcXVlc3RDb3VudChyZXF1ZXN0LT5jYWNoZWRSZXNvdXJjZSgpKTsK
ICAgICAgICAgICAgIGRvY0xvYWRlci0+c2V0TG9hZEluUHJvZ3Jlc3ModHJ1ZSk7CiAgICAgICAg
ICAgICByZXF1ZXN0LT5jYWNoZWRSZXNvdXJjZSgpLT5lcnJvcigpOwogICAgICAgICAgICAgZG9j
TG9hZGVyLT5zZXRMb2FkSW5Qcm9ncmVzcyhmYWxzZSk7CkBAIC0zOTQsNyArNDA4LDcgQEAgdm9p
ZCBMb2FkZXI6Okhvc3Q6OmRpZEZpbmlzaExvYWRpbmcoU3VicgogICAgIC8vIHRoZSBkb2NMb2Fk
ZXIgdGhhdCBpdCB3aWxsIGRlbGV0ZSB3aGVuIHRoZSBkb2N1bWVudCBnZXRzIGRlbGV0ZWQuCiAg
ICAgUmVmUHRyPERvY3VtZW50PiBwcm90ZWN0b3IoZG9jTG9hZGVyLT5kb2MoKSk7CiAgICAgaWYg
KCFyZXF1ZXN0LT5pc011bHRpcGFydCgpKQotICAgICAgICBkb2NMb2FkZXItPmRlY3JlbWVudFJl
cXVlc3RDb3VudCgpOworICAgICAgICBkb2NMb2FkZXItPmRlY3JlbWVudFJlcXVlc3RDb3VudChy
ZXF1ZXN0LT5jYWNoZWRSZXNvdXJjZSgpKTsKIAogICAgIENhY2hlZFJlc291cmNlKiByZXNvdXJj
ZSA9IHJlcXVlc3QtPmNhY2hlZFJlc291cmNlKCk7CiAgICAgQVNTRVJUKCFyZXNvdXJjZS0+cmVz
b3VyY2VUb1JldmFsaWRhdGUoKSk7CkBAIC00NDIsNyArNDU2LDcgQEAgdm9pZCBMb2FkZXI6Okhv
c3Q6OmRpZEZhaWwoU3VicmVzb3VyY2VMbwogICAgIC8vIHRoZSBkb2NMb2FkZXIgdGhhdCBpdCB3
aWxsIGRlbGV0ZSB3aGVuIHRoZSBkb2N1bWVudCBnZXRzIGRlbGV0ZWQuCiAgICAgUmVmUHRyPERv
Y3VtZW50PiBwcm90ZWN0b3IoZG9jTG9hZGVyLT5kb2MoKSk7CiAgICAgaWYgKCFyZXF1ZXN0LT5p
c011bHRpcGFydCgpKQotICAgICAgICBkb2NMb2FkZXItPmRlY3JlbWVudFJlcXVlc3RDb3VudCgp
OworICAgICAgICBkb2NMb2FkZXItPmRlY3JlbWVudFJlcXVlc3RDb3VudChyZXF1ZXN0LT5jYWNo
ZWRSZXNvdXJjZSgpKTsKIAogICAgIENhY2hlZFJlc291cmNlKiByZXNvdXJjZSA9IHJlcXVlc3Qt
PmNhY2hlZFJlc291cmNlKCk7CiAgICAgCkBAIC00ODcsNyArNTAxLDcgQEAgdm9pZCBMb2FkZXI6
Okhvc3Q6OmRpZFJlY2VpdmVSZXNwb25zZShTdQogICAgICAgICAgICAgLy8gMzA0IE5vdCBtb2Rp
ZmllZCAvIFVzZSBsb2NhbCBjb3B5CiAgICAgICAgICAgICBtX3JlcXVlc3RzTG9hZGluZy5yZW1v
dmUobG9hZGVyKTsKICAgICAgICAgICAgIGxvYWRlci0+Y2xlYXJDbGllbnQoKTsKLSAgICAgICAg
ICAgIHJlcXVlc3QtPmRvY0xvYWRlcigpLT5kZWNyZW1lbnRSZXF1ZXN0Q291bnQoKTsKKyAgICAg
ICAgICAgIHJlcXVlc3QtPmRvY0xvYWRlcigpLT5kZWNyZW1lbnRSZXF1ZXN0Q291bnQocmVxdWVz
dC0+Y2FjaGVkUmVzb3VyY2UoKSk7CiAKICAgICAgICAgICAgIC8vIEV4aXN0aW5nIHJlc291cmNl
IGlzIG9rLCBqdXN0IHVzZSBpdCB1cGRhdGluZyB0aGUgZXhwaXJhdGlvbiB0aW1lLgogICAgICAg
ICAgICAgY2FjaGUoKS0+cmV2YWxpZGF0aW9uU3VjY2VlZGVkKHJlc291cmNlLCByZXNwb25zZSk7
CkBAIC01MTksNyArNTMzLDcgQEAgdm9pZCBMb2FkZXI6Okhvc3Q6OmRpZFJlY2VpdmVSZXNwb25z
ZShTdQogICAgICAgICByZXF1ZXN0LT5zZXRJc011bHRpcGFydCh0cnVlKTsKICAgICAgICAgCiAg
ICAgICAgIC8vIFdlIGRvbid0IGNvdW50IG11bHRpUGFydHMgaW4gYSBEb2NMb2FkZXIncyByZXF1
ZXN0IGNvdW50Ci0gICAgICAgIHJlcXVlc3QtPmRvY0xvYWRlcigpLT5kZWNyZW1lbnRSZXF1ZXN0
Q291bnQoKTsKKyAgICAgICAgcmVxdWVzdC0+ZG9jTG9hZGVyKCktPmRlY3JlbWVudFJlcXVlc3RD
b3VudChyZXF1ZXN0LT5jYWNoZWRSZXNvdXJjZSgpKTsKIAogICAgICAgICAvLyBJZiB3ZSBnZXQg
YSBtdWx0aXBhcnQgcmVzcG9uc2UsIHdlIG11c3QgaGF2ZSBhIGhhbmRsZQogICAgICAgICBBU1NF
UlQobG9hZGVyLT5oYW5kbGUoKSk7CkBAIC01ODIsNyArNTk2LDcgQEAgdm9pZCBMb2FkZXI6Okhv
c3Q6OmNhbmNlbFBlbmRpbmdSZXF1ZXN0cwogICAgICAgICBpZiAocmVxdWVzdC0+ZG9jTG9hZGVy
KCkgPT0gZG9jTG9hZGVyKSB7CiAgICAgICAgICAgICBjYWNoZSgpLT5yZW1vdmUocmVxdWVzdC0+
Y2FjaGVkUmVzb3VyY2UoKSk7CiAgICAgICAgICAgICBkZWxldGUgcmVxdWVzdDsKLSAgICAgICAg
ICAgIGRvY0xvYWRlci0+ZGVjcmVtZW50UmVxdWVzdENvdW50KCk7CisgICAgICAgICAgICBkb2NM
b2FkZXItPmRlY3JlbWVudFJlcXVlc3RDb3VudChyZXF1ZXN0LT5jYWNoZWRSZXNvdXJjZSgpKTsK
ICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICByZW1haW5pbmcuYXBwZW5kKHJlcXVlc3QpOwog
ICAgIH0KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL2xvYWRlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvbG9hZGVyL2xvYWRlci5oCShyZXZpc2lvbiA2MDA3MSkKKysrIFdlYkNvcmUvbG9hZGVyL2xv
YWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw4ICs0OCw4IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogICAgICAgICB2b2lkIGNhbmNlbFJlcXVlc3RzKERvY0xvYWRlciopOwogICAgICAgICAK
LSAgICAgICAgZW51bSBQcmlvcml0eSB7IExvdywgTWVkaXVtLCBIaWdoIH07Ci0gICAgICAgIHZv
aWQgc2VydmVQZW5kaW5nUmVxdWVzdHMoUHJpb3JpdHkgbWluaW11bVByaW9yaXR5ID0gTG93KTsK
KyAgICAgICAgZW51bSBQcmlvcml0eSB7IFZlcnlMb3csIExvdywgTWVkaXVtLCBIaWdoIH07Cisg
ICAgICAgIHZvaWQgc2VydmVQZW5kaW5nUmVxdWVzdHMoUHJpb3JpdHkgbWluaW11bVByaW9yaXR5
ID0gVmVyeUxvdyk7CiAKICAgICAgICAgYm9vbCBpc1N1c3BlbmRpbmdQZW5kaW5nUmVxdWVzdHMo
KSB7IHJldHVybiBtX2lzU3VzcGVuZGluZ1BlbmRpbmdSZXF1ZXN0czsgfQogICAgICAgICB2b2lk
IHN1c3BlbmRQZW5kaW5nUmVxdWVzdHMoKTsKQEAgLTc2LDcgKzc2LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICAgICAgdm9pZCBhZGRSZXF1ZXN0KFJlcXVlc3QqLCBQcmlvcml0eSk7
CiAgICAgICAgICAgICB2b2lkIG5vbkNhY2hlUmVxdWVzdEluRmxpZ2h0KCk7CiAgICAgICAgICAg
ICB2b2lkIG5vbkNhY2hlUmVxdWVzdENvbXBsZXRlKCk7Ci0gICAgICAgICAgICB2b2lkIHNlcnZl
UGVuZGluZ1JlcXVlc3RzKFByaW9yaXR5IG1pbmltdW1Qcmlvcml0eSA9IExvdyk7CisgICAgICAg
ICAgICB2b2lkIHNlcnZlUGVuZGluZ1JlcXVlc3RzKFByaW9yaXR5IG1pbmltdW1Qcmlvcml0eSA9
IFZlcnlMb3cpOwogICAgICAgICAgICAgdm9pZCBjYW5jZWxSZXF1ZXN0cyhEb2NMb2FkZXIqKTsK
ICAgICAgICAgICAgIGJvb2wgaGFzUmVxdWVzdHMoKSBjb25zdDsKIApJbmRleDogTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNp
b24gNjAwNzEpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwyMCBAQAorMjAxMC0wNS0yNCAgTGVvbiBDbGFya2UgIDxsZW9uY2xhcmtlQGdvb2dsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
IGEgbGF5b3V0IHRlc3QgZm9yIGxpbmsgcmVsPXByZWZldGNoLiBJdCdzIGRpc2FibGVkIHNpbmNl
IHRoZSBmZWF0dXJlIGlzCisgICAgICAgIGRpc2FibGVkIGJ5IGRlZmF1bHQuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjUyCisKKworICAgICAgICAq
IGZhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC1vbmxvYWQtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0Y2gtb25sb2Fk
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRj
aC5saW5rOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2tpcHBlZDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9Ta2lwcGVkOgor
ICAgICAgICAqIHBsYXRmb3JtL3dpbi9Ta2lwcGVkOgorCiAyMDEwLTA1LTI0ICBKZXJlbXkgT3Js
b3cgIDxqb3Jsb3dAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuICBGb3Jnb3Qg
dG8gcmVkbyB0aGUgZXhwZWN0YXRpb24gYWZ0ZXIgYWRkaW5nIHRoZSBjb250YWlucwpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLW9ubG9hZC1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVt
ZW50L3ByZWZldGNoLW9ubG9hZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0Y2gtb25sb2FkLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2IEBACitUaGlzIHRlc3RzIHRoYXQgb25sb2FkIGV2
ZW50cyBjYW4gYmUgYXR0YWNoZWQgdG8gbGluayBlbGVtZW50cyB3aXRoIHJlbD1wcmVmZXRjaC4g
U2luY2UgcHJlZmV0Y2ggbGlua3MgYXJlIGp1c3QgdGhlcmUgYXMgYSBwZXJmb3JtYW5jZSBvcHRp
bWlzYXRpb24sIHRoZSBvbmxvYWQgZXZlbnQgaXMgdGhlaXIgb25seSBwcm9ncmFtYXRpYyBzaWRl
LWVmZmVjdC4KKworSWYgaXQgd29ya3MgeW91IHNob3VsZCBzZWUgYSBtZXNzYWdlIGJlbG93IHNh
eWluZyB0aGUgdGVzdCBoYXMgcGFzc2VkLgorCitURVNUIFBBU1NFRC4gVGhlIHN0eWxlc2hlZXQg
bGluayBvbmxvYWQgaGFuZGxlciBoYXMgZmlyZWQKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9k
b20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLW9ubG9hZC5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC1vbmxvYWQuaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVm
ZXRjaC1vbmxvYWQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMiBAQAorPGh0bWw+Cisg
ICAgPGhlYWQ+CisgICAgICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICAg
ICAgICAgIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIHZhciBpdGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGkiKTsKKyAgICAgICAgICAg
ICAgICBpdGVtLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1lc3NhZ2UpKTsK
KyAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmFwcGVu
ZENoaWxkKGl0ZW0pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZnVuY3Rpb24gZG9uZSgp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbG9nKCJURVNUIFBBU1NFRC4gVGhlIHN0
eWxlc2hlZXQgbGluayBvbmxvYWQgaGFuZGxlciBoYXMgZmlyZWQiKTsKKyAgICAgICAgICAgICAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgICAgICAgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpIHsKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwor
ICAgICAgICAgICAgfQorCisJPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5PgorICAg
ICAgICA8cD5UaGlzIHRlc3RzIHRoYXQgb25sb2FkIGV2ZW50cyBjYW4gYmUgYXR0YWNoZWQgdG8g
bGluayBlbGVtZW50cyB3aXRoIHJlbD1wcmVmZXRjaC4gU2luY2UgcHJlZmV0Y2ggbGlua3MgYXJl
IGp1c3QgdGhlcmUgYXMgYSBwZXJmb3JtYW5jZSBvcHRpbWlzYXRpb24sIHRoZSBvbmxvYWQgZXZl
bnQgaXMgdGhlaXIgb25seSBwcm9ncmFtYXRpYyBzaWRlLWVmZmVjdC48L3A+CisgICAgICAgIDxw
PklmIGl0IHdvcmtzIHlvdSBzaG91bGQgc2VlIGEgbWVzc2FnZSBiZWxvdyBzYXlpbmcgdGhlIHRl
c3QgaGFzIHBhc3NlZC48L3A+CisgICAgICAgIDxsaW5rIGhyZWY9InByZWZldGNoLmxpbmsiIHJl
bD0icHJlZmV0Y2giIG9ubG9hZD0iZG9uZSgpIiA+CisgICAgICAgIDxocj4KKyAgICAgICAgPHA+
PG9sIGlkPSJjb25zb2xlIj48L29sPjwvcD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0Y2gubGluawo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0Y2gubGlu
awkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9w
cmVmZXRjaC5saW5rCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBACitUaGlzIGlzIHRoZSBsaW5r
IHRoYXQgaXMgZmV0Y2hlZCBieSB0aGUgcHJlZmV0Y2gtb25sb2FkIHRlc3QKSW5kZXg6IExheW91
dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3Bs
YXRmb3JtL2d0ay9Ta2lwcGVkCShyZXZpc2lvbiA2MDA3MSkKKysrIExheW91dFRlc3RzL3BsYXRm
b3JtL2d0ay9Ta2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC01OTQxLDMgKzU5NDEsNiBAQCBzdG9y
YWdlL2luZGV4ZWRkYgogZmFzdC9kb20vR2VvbG9jYXRpb24vYXJndW1lbnQtdHlwZXMuaHRtbAog
ZmFzdC9kb20vR2VvbG9jYXRpb24vbm90aW1lci1hZnRlci11bmxvYWQuaHRtbAogZmFzdC9kb20v
R2VvbG9jYXRpb24vdGltZW91dC16ZXJvLmh0bWwKKworIyBMaW5rIHByZWZldGNoIGlzIGRpc2Fi
bGVkIGJ5IGRlZmF1bHQKK2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC1vbmxvYWQu
aHRtbApJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQJKHJldmlzaW9uIDYwMDcxKQorKysg
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTE5NSwz
ICsxOTUsNiBAQCBzdG9yYWdlL2luZGV4ZWRkYgogIyBUaGlzIHBvcnQgZG9lc24ndCBzdXBwb3J0
IERldmljZU9yaWVudGF0aW9uLgogZmFzdC9kb20vRGV2aWNlT3JpZW50YXRpb24KIGZhc3QvZG9t
L1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1vbi1kZXZpY2Utb3JpZW50YXRpb24uaHRtbAorCisj
IExpbmsgcHJlZmV0Y2ggaXMgZGlzYWJsZWQgYnkgZGVmYXVsdAorZmFzdC9kb20vSFRNTExpbmtF
bGVtZW50L3ByZWZldGNoLW9ubG9hZC5odG1sCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9x
dC9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQJ
KHJldmlzaW9uIDYwMDcxKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAkod29y
a2luZyBjb3B5KQpAQCAtNTA5OSwzICs1MDk5LDYgQEAgZmFzdC9kb20vV2luZG93L3dpbmRvdy1w
cm9wZXJ0aWVzLW9uLWRldgogIyBbUXRdIG5lZWQgYW4gaW1wbGVtZW50YXRpb24gb2YgTGF5b3V0
VGVzdENvbnRyb2xsZXI6OmNvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbwogIyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzc3NTkKIGZhc3QvaGlzdG9yeS9z
ZWxmLWlzLXZpc2l0ZWQuaHRtbAorCisjIExpbmsgcHJlZmV0Y2ggaXMgZGlzYWJsZWQgYnkgZGVm
YXVsdAorZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLW9ubG9hZC5odG1sCkluZGV4
OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAkocmV2aXNpb24gNjAwNzEpCisrKyBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAtODg3LDMgKzg4Nyw2IEBA
IHN0b3JhZ2UvaW5kZXhlZGRiCiAjIFRoaXMgcG9ydCBkb2Vzbid0IHN1cHBvcnQgRGV2aWNlT3Jp
ZW50YXRpb24uCiBmYXN0L2RvbS9EZXZpY2VPcmllbnRhdGlvbgogZmFzdC9kb20vV2luZG93L3dp
bmRvdy1wcm9wZXJ0aWVzLW9uLWRldmljZS1vcmllbnRhdGlvbi5odG1sCisKKyMgTGluayBwcmVm
ZXRjaCBpcyBkaXNhYmxlZCBieSBkZWZhdWx0CitmYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJl
ZmV0Y2gtb25sb2FkLmh0bWwK
</data>
<flag name="review"
          id="41363"
          type_id="1"
          status="-"
          setter="koivisto"
    />
    <flag name="commit-queue"
          id="41364"
          type_id="3"
          status="-"
          setter="koivisto"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57219</attachid>
            <date>2010-05-27 04:21:13 -0700</date>
            <delta_ts>2010-06-01 07:07:33 -0700</delta_ts>
            <desc>Adding missing CachedLinkPrefetch.h</desc>
            <filename>prefetch1.patch</filename>
            <type>text/plain</type>
            <size>24976</size>
            <attacher name="Leon Clarke">leonclarke</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MDA3MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDIgQEAKKzIwMTAtMDUtMjQgIExlb24gQ2xhcmtlICA8bGVvbmNsYXJrZUBnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBzdXBwb3J0IGZvciBsb25rIHJlbD1wcmVmZXRjaAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY1MgorCisgICAgICAgIFRlc3Q6IGZhc3QvZG9t
L0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC1vbmxvYWQuaHRtbAorCisgICAgICAgICogaHRtbC9I
VE1MTGlua0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50Ojpw
YXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6
OnRva2VuaXplUmVsQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVu
dDo6cHJvY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6Om5vdGlmeUZp
bmlzaGVkKToKKyAgICAgICAgKiBodG1sL0hUTUxMaW5rRWxlbWVudC5oOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTExpbmtFbGVtZW50OjpSZWxBdHRyaWJ1dGU6OlJlbEF0dHJpYnV0ZSk6CisgICAg
ICAgICogbG9hZGVyL0NhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVJlc291cmNl
KToKKyAgICAgICAgKiBsb2FkZXIvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZFJlc291cmNlOjopOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6Omlz
UHJlZmV0Y2gpOgorICAgICAgICAqIGxvYWRlci9Eb2NMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jTG9hZGVyOjpyZXF1ZXN0TGlua1ByZWZldGNoKToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY0xvYWRlcjo6Y2FuUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2NMb2FkZXI6Omlu
Y3JlbWVudFJlcXVlc3RDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2NMb2FkZXI6OmRlY3Jl
bWVudFJlcXVlc3RDb3VudCk6CisgICAgICAgICogbG9hZGVyL0RvY0xvYWRlci5oOgorICAgICAg
ICAqIGxvYWRlci9sb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2FjaGVkUmVzb3VyY2VU
eXBlVG9UYXJnZXRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRlcjo6ZGV0ZXJtaW5lUHJp
b3JpdHkpOgorICAgICAgICAoV2ViQ29yZTo6TG9hZGVyOjpsb2FkKToKKyAgICAgICAgKFdlYkNv
cmU6OkxvYWRlcjo6SG9zdDo6c2VydmVQZW5kaW5nUmVxdWVzdHMpOgorICAgICAgICAoV2ViQ29y
ZTo6TG9hZGVyOjpIb3N0OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okxv
YWRlcjo6SG9zdDo6ZGlkRmFpbCk6CisgICAgICAgIChXZWJDb3JlOjpMb2FkZXI6Okhvc3Q6OmRp
ZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpMb2FkZXI6Okhvc3Q6OmNhbmNl
bFBlbmRpbmdSZXF1ZXN0cyk6CisgICAgICAgICogbG9hZGVyL2xvYWRlci5oOgorICAgICAgICAo
V2ViQ29yZTo6TG9hZGVyOjopOgorCiAyMDEwLTA1LTI0ICBKZXJlbXkgT3Jsb3cgIDxqb3Jsb3dA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuICBDaGVja2VkIGluIG1lcmdlIGVy
cm9yLiAgOi0oCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAkocmV2aXNpb24gNjAwNzEp
CisrKyBXZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDEsNiArNDEsOSBAQAogI2luY2x1ZGUgIlNjcmlwdEV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRl
ICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpZiBFTkFCTEUo
TElOS19QUkVGRVRDSCkKKyNpbmNsdWRlICJDYWNoZWRMaW5rUHJlZmV0Y2guaCIKKyNlbmRpZgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEyNiw2ICsxMjksOCBAQCB2b2lkIEhUTUxMaW5r
RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1CiAgICAgICAgIHNldERpc2FibGVkU3RhdGUoIWF0
dHItPmlzTnVsbCgpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gb25iZWZvcmVsb2Fk
QXR0cikKICAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuYmVm
b3JlbG9hZEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHIpKTsK
KyAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gb25sb2FkQXR0cikKKyAgICAgICAgc2V0QXR0
cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkubG9hZEV2ZW50LCBjcmVhdGVBdHRyaWJ1
dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHIpKTsKICAgICBlbHNlIHsKICAgICAgICAgaWYgKGF0
dHItPm5hbWUoKSA9PSB0aXRsZUF0dHIgJiYgbV9zaGVldCkKICAgICAgICAgICAgIG1fc2hlZXQt
PnNldFRpdGxlKGF0dHItPnZhbHVlKCkpOwpAQCAtMTM5LDEyICsxNDQsMTkgQEAgdm9pZCBIVE1M
TGlua0VsZW1lbnQ6OnRva2VuaXplUmVsQXR0cmlidQogICAgIHJlbEF0dHJpYnV0ZS5tX2lzSWNv
biA9IGZhbHNlOwogICAgIHJlbEF0dHJpYnV0ZS5tX2lzQWx0ZXJuYXRlID0gZmFsc2U7CiAgICAg
cmVsQXR0cmlidXRlLm1faXNETlNQcmVmZXRjaCA9IGZhbHNlOworI2lmIEVOQUJMRShMSU5LX1BS
RUZFVENIKQorICAgIHJlbEF0dHJpYnV0ZS5tX2lzTGlua1ByZWZldGNoID0gZmFsc2U7CisjZW5k
aWYKICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UocmVsLCAic3R5bGVzaGVldCIpKQogICAgICAg
ICByZWxBdHRyaWJ1dGUubV9pc1N0eWxlU2hlZXQgPSB0cnVlOwogICAgIGVsc2UgaWYgKGVxdWFs
SWdub3JpbmdDYXNlKHJlbCwgImljb24iKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShyZWwsICJzaG9y
dGN1dCBpY29uIikpCiAgICAgICAgIHJlbEF0dHJpYnV0ZS5tX2lzSWNvbiA9IHRydWU7CiAgICAg
ZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UocmVsLCAiZG5zLXByZWZldGNoIikpCiAgICAgICAg
IHJlbEF0dHJpYnV0ZS5tX2lzRE5TUHJlZmV0Y2ggPSB0cnVlOworI2lmIEVOQUJMRShMSU5LX1BS
RUZFVENIKQorICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHJlbCwgInByZWZldGNoIikp
CisgICAgICAgIHJlbEF0dHJpYnV0ZS5tX2lzTGlua1ByZWZldGNoID0gdHJ1ZTsKKyNlbmRpZgog
ICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHJlbCwgImFsdGVybmF0ZSBzdHlsZXNoZWV0
IikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UocmVsLCAic3R5bGVzaGVldCBhbHRlcm5hdGUiKSkgewog
ICAgICAgICByZWxBdHRyaWJ1dGUubV9pc1N0eWxlU2hlZXQgPSB0cnVlOwogICAgICAgICByZWxB
dHRyaWJ1dGUubV9pc0FsdGVybmF0ZSA9IHRydWU7CkBAIC0xODEsNiArMTkzLDE2IEBAIHZvaWQg
SFRNTExpbmtFbGVtZW50Ojpwcm9jZXNzKCkKICAgICBpZiAobV9yZWxBdHRyaWJ1dGUubV9pc0RO
U1ByZWZldGNoICYmIG1fdXJsLmlzVmFsaWQoKSAmJiAhbV91cmwuaXNFbXB0eSgpKQogICAgICAg
ICBSZXNvdXJjZUhhbmRsZTo6cHJlcGFyZUZvclVSTChtX3VybCk7CiAKKyNpZiBFTkFCTEUoTElO
S19QUkVGRVRDSCkKKyAgICBpZiAobV9yZWxBdHRyaWJ1dGUubV9pc0xpbmtQcmVmZXRjaCAmJiBt
X3VybC5pc1ZhbGlkKCkpIHsKKyAgICAgICAgbV9jYWNoZWRMaW5rUHJlZmV0Y2ggPSBkb2N1bWVu
dCgpLT5kb2NMb2FkZXIoKS0+cmVxdWVzdExpbmtQcmVmZXRjaChtX3VybCk7CisgICAgICAgIG1f
bG9hZGluZyA9IHRydWU7CisKKyAgICAgICAgaWYgKG1fY2FjaGVkTGlua1ByZWZldGNoKQorICAg
ICAgICAgICAgbV9jYWNoZWRMaW5rUHJlZmV0Y2gtPmFkZENsaWVudCh0aGlzKTsKKyAgICB9Cisj
ZW5kaWYKKwogICAgIGJvb2wgYWNjZXB0SWZUeXBlQ29udGFpbnNUZXh0Q1NTID0gZG9jdW1lbnQo
KS0+cGFnZSgpICYmIGRvY3VtZW50KCktPnBhZ2UoKS0+c2V0dGluZ3MoKSAmJiBkb2N1bWVudCgp
LT5wYWdlKCktPnNldHRpbmdzKCktPnRyZWF0c0FueVRleHRDU1NMaW5rQXNTdHlsZXNoZWV0KCk7
CiAKICAgICAvLyBTdHlsZXNoZWV0CkBAIC0zMTksNiArMzQxLDExIEBAIGJvb2wgSFRNTExpbmtF
bGVtZW50Ojppc0xvYWRpbmcoKSBjb25zdAogICAgIHJldHVybiBzdGF0aWNfY2FzdDxDU1NTdHls
ZVNoZWV0ICo+KG1fc2hlZXQuZ2V0KCkpLT5pc0xvYWRpbmcoKTsKIH0KIAordm9pZCBIVE1MTGlu
a0VsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKikKK3sKKyAgICBkaXNwYXRj
aEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmxvYWRFdmVudCwgZmFsc2UsIGZhbHNl
KSk7Cit9CisKIGJvb2wgSFRNTExpbmtFbGVtZW50OjpzaGVldExvYWRlZCgpCiB7CiAgICAgaWYg
KCFpc0xvYWRpbmcoKSAmJiAhaXNEaXNhYmxlZCgpICYmICFpc0FsdGVybmF0ZSgpKSB7CkluZGV4
OiBXZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9o
dG1sL0hUTUxMaW5rRWxlbWVudC5oCShyZXZpc2lvbiA2MDA3MSkKKysrIFdlYkNvcmUvaHRtbC9I
VE1MTGlua0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNoZWRDU1NTdHlsZVNoZWV0OworY2xhc3MgQ2FjaGVk
TGlua1ByZWZldGNoOwogY2xhc3MgS1VSTDsKIAogY2xhc3MgSFRNTExpbmtFbGVtZW50IDogcHVi
bGljIEhUTUxFbGVtZW50LCBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQgewpAQCAtNDAsOCAr
NDEsMTUgQEAgcHVibGljOgogICAgICAgICBib29sIG1faXNJY29uOwogICAgICAgICBib29sIG1f
aXNBbHRlcm5hdGU7CiAgICAgICAgIGJvb2wgbV9pc0ROU1ByZWZldGNoOworI2lmIEVOQUJMRShM
SU5LX1BSRUZFVENIKQorICAgICAgICBib29sIG1faXNMaW5rUHJlZmV0Y2g7CisjZW5kaWYKIAot
ICAgICAgICBSZWxBdHRyaWJ1dGUoKSA6IG1faXNTdHlsZVNoZWV0KGZhbHNlKSwgbV9pc0ljb24o
ZmFsc2UpLCBtX2lzQWx0ZXJuYXRlKGZhbHNlKSwgbV9pc0ROU1ByZWZldGNoKGZhbHNlKSB7IH0K
KyAgICAgICAgUmVsQXR0cmlidXRlKCkgOiBtX2lzU3R5bGVTaGVldChmYWxzZSksIG1faXNJY29u
KGZhbHNlKSwgbV9pc0FsdGVybmF0ZShmYWxzZSksIG1faXNETlNQcmVmZXRjaChmYWxzZSkKKyNp
ZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKKyAgICAgICAgICAgICwgbV9pc0xpbmtQcmVmZXRjaChm
YWxzZSkKKyNlbmRpZgorICAgICAgICAgICAgeyB9OwogICAgIH07CiAKICAgICBIVE1MTGlua0Vs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50KiwgYm9vbCBjcmVhdGVkQnlQYXJz
ZXIpOwpAQCAtODksNiArOTcsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBmcm9tIENhY2hlZFJlc291
cmNlQ2xpZW50CiAgICAgdmlydHVhbCB2b2lkIHNldENTU1N0eWxlU2hlZXQoY29uc3QgU3RyaW5n
JiBocmVmLCBjb25zdCBLVVJMJiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIGNvbnN0
IENhY2hlZENTU1N0eWxlU2hlZXQqIHNoZWV0KTsKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5Rmlu
aXNoZWQoQ2FjaGVkUmVzb3VyY2UqKTsKICAgICBib29sIGlzTG9hZGluZygpIGNvbnN0OwogICAg
IHZpcnR1YWwgYm9vbCBzaGVldExvYWRlZCgpOwogCkBAIC0xMTYsNiArMTI1LDkgQEAgcHJvdGVj
dGVkOgogCiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkQ1NTU3R5bGVTaGVldD4gbV9j
YWNoZWRTaGVldDsKICAgICBSZWZQdHI8Q1NTU3R5bGVTaGVldD4gbV9zaGVldDsKKyNpZiBFTkFC
TEUoTElOS19QUkVGRVRDSCkKKyAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRMaW5rUHJl
ZmV0Y2g+IG1fY2FjaGVkTGlua1ByZWZldGNoOworI2VuZGlmCiAgICAgS1VSTCBtX3VybDsKICAg
ICBTdHJpbmcgbV90eXBlOwogICAgIFN0cmluZyBtX21lZGlhOwpJbmRleDogV2ViQ29yZS9sb2Fk
ZXIvQ2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0NhY2hlLmNwcAkocmV2
aXNpb24gNjAwNzEpCisrKyBXZWJDb3JlL2xvYWRlci9DYWNoZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM4LDYgKzM4LDkgQEAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUg
PHN0ZGlvLmg+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisjaWYgRU5BQkxFKExJTktf
UFJFRkVUQ0gpCisjaW5jbHVkZSAiQ2FjaGVkTGlua1ByZWZldGNoLmgiCisjZW5kaWYKIAogdXNp
bmcgbmFtZXNwYWNlIHN0ZDsKIApAQCAtODYsNiArODksMTAgQEAgc3RhdGljIENhY2hlZFJlc291
cmNlKiBjcmVhdGVSZXNvdXJjZShDYQogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlhCTFN0eWxl
U2hlZXQ6CiAgICAgICAgIHJldHVybiBuZXcgQ2FjaGVkWEJMRG9jdW1lbnQodXJsLnN0cmluZygp
KTsKICNlbmRpZgorI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQorICAgIGNhc2UgQ2FjaGVkUmVz
b3VyY2U6OkxpbmtQcmVmZXRjaDoKKyAgICAgICAgcmV0dXJuIG5ldyBDYWNoZWRMaW5rUHJlZmV0
Y2godXJsLnN0cmluZygpKTsKKyNlbmRpZgogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0NhY2hlZExpbmtQcmVmZXRjaC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0NhY2hlZExpbmtQcmVmZXRjaC5oCShyZXZpc2lvbiAwKQor
KysgV2ViQ29yZS9sb2FkZXIvQ2FjaGVkTGlua1ByZWZldGNoLmgJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxMCwgVGhlIEFuZHJvaWQgT3BlbiBTb3Vy
Y2UgUHJvamVjdAorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVCBPV05FUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCisqLworCisjaWZuZGVmIENhY2hlZExpbmtQcmVmZXRjaF9oCisjZGVmaW5l
IENhY2hlZExpbmtQcmVmZXRjaF9oCisKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZS5oIgorI2lu
Y2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VD
bGllbnRXYWxrZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERvY0xvYWRlcjsK
KworY2xhc3MgQ2FjaGVkTGlua1ByZWZldGNoIDogcHVibGljIENhY2hlZFJlc291cmNlIHsKK3B1
YmxpYzoKKyAgICBDYWNoZWRMaW5rUHJlZmV0Y2goY29uc3QgU3RyaW5nJiBVUkwpIDogQ2FjaGVk
UmVzb3VyY2UoVVJMLCBMaW5rUHJlZmV0Y2gpIHsgfTsKKyAgICB2aXJ0dWFsIH5DYWNoZWRMaW5r
UHJlZmV0Y2goKSB7IH07CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJl
c291cmNlQ2xpZW50KiBjKQorICAgIHsKKyAgICAgICAgaWYgKCFpc0xvYWRpbmcoKSkKKyAgICAg
ICAgICAgIGMtPm5vdGlmeUZpbmlzaGVkKHRoaXMpOworICAgIH07CisKKyAgICB2aXJ0dWFsIHZv
aWQgZGF0YShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpCisgICAgeworICAgICAgICBpZiAoIWFsbERhdGFSZWNlaXZlZCkKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICBtX2RhdGEgPSBkYXRhOworCisgICAgICAgIENhY2hlZFJlc291cmNl
Q2xpZW50V2Fsa2VyIHcobV9jbGllbnRzKTsKKyAgICAgICAgd2hpbGUgKENhY2hlZFJlc291cmNl
Q2xpZW50KiBjID0gdy5uZXh0KCkpCisgICAgICAgICAgICBjLT5ub3RpZnlGaW5pc2hlZCh0aGlz
KTsKKyAgICB9OworICAgIHZpcnR1YWwgdm9pZCBlcnJvcigpIHsgfTsKKworICAgIHZpcnR1YWwg
Ym9vbCBzY2hlZHVsZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKworICAgIHZpcnR1YWwgYm9v
bCBpc1ByZWZldGNoKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorfTsKK30KKworI2VuZGlmCklu
ZGV4OiBXZWJDb3JlL2xvYWRlci9DYWNoZWRSZXNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvbG9hZGVyL0NhY2hlZFJlc291cmNlLmgJKHJldmlzaW9uIDYwMDcxKQorKysgV2ViQ29yZS9s
b2FkZXIvQ2FjaGVkUmVzb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNjQsNiArNjQsOSBAQCBw
dWJsaWM6CiAjaWYgRU5BQkxFKFhCTCkKICAgICAgICAgLCBYQkwKICNlbmRpZgorI2lmIEVOQUJM
RShMSU5LX1BSRUZFVENIKQorICAgICAgICAsIExpbmtQcmVmZXRjaAorI2VuZGlmCiAgICAgfTsK
IAogICAgIGVudW0gU3RhdHVzIHsKQEAgLTEyMiw2ICsxMjUsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRMb2FkaW5nKGJvb2wgYikgeyBtX2xvYWRpbmcgPSBiOyB9CiAKICAgICB2aXJ0dWFsIGJv
b2wgaXNJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlz
UHJlZmV0Y2goKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdW5zaWduZWQgYWNjZXNz
Q291bnQoKSBjb25zdCB7IHJldHVybiBtX2FjY2Vzc0NvdW50OyB9CiAgICAgdm9pZCBpbmNyZWFz
ZUFjY2Vzc0NvdW50KCkgeyBtX2FjY2Vzc0NvdW50Kys7IH0KSW5kZXg6IFdlYkNvcmUvbG9hZGVy
L0RvY0xvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRG9jTG9hZGVyLmNw
cAkocmV2aXNpb24gNjAwNzEpCisrKyBXZWJDb3JlL2xvYWRlci9Eb2NMb2FkZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Myw2ICs0Myw5IEBACiAjaW5jbHVkZSAibG9hZGVyLmgiCiAjaW5jbHVk
ZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2lmIEVOQUJMRShM
SU5LX1BSRUZFVENIKQorI2luY2x1ZGUgIkNhY2hlZExpbmtQcmVmZXRjaC5oIgorI2VuZGlmCiAj
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAjZGVmaW5lIFBSRUxPQURfREVCVUcgMApA
QCAtMTY4LDYgKzE3MSwxMyBAQCBDYWNoZWRYQkxEb2N1bWVudCogRG9jTG9hZGVyOjpyZXF1ZXN0
WEJMCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQorQ2FjaGVkTGlua1By
ZWZldGNoKiBEb2NMb2FkZXI6OnJlcXVlc3RMaW5rUHJlZmV0Y2goY29uc3QgU3RyaW5nJiB1cmwp
Cit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENhY2hlZExpbmtQcmVmZXRjaCo+KHJlcXVlc3RS
ZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6TGlua1ByZWZldGNoLCB1cmwsIFN0cmluZygpKSk7Cit9
CisjZW5kaWYKKwogYm9vbCBEb2NMb2FkZXI6OmNhblJlcXVlc3QoQ2FjaGVkUmVzb3VyY2U6OlR5
cGUgdHlwZSwgY29uc3QgS1VSTCYgdXJsKQogewogICAgIC8vIFNvbWUgdHlwZXMgb2YgcmVzb3Vy
Y2VzIGNhbiBiZSBsb2FkZWQgb25seSBmcm9tIHRoZSBzYW1lIG9yaWdpbi4gIE90aGVyCkBAIC0x
NzgsNiArMTg4LDkgQEAgYm9vbCBEb2NMb2FkZXI6OmNhblJlcXVlc3QoQ2FjaGVkUmVzb3VyYwog
ICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkNTU1N0eWxlU2hlZXQ6CiAgICAgY2FzZSBDYWNoZWRS
ZXNvdXJjZTo6U2NyaXB0OgogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkZvbnRSZXNvdXJjZToK
KyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKKyAgICBjYXNlIENhY2hlZFJlc291cmNlOjpMaW5r
UHJlZmV0Y2g6CisjZW5kaWYKICAgICAgICAgLy8gVGhlc2UgdHlwZXMgb2YgcmVzb3VyY2VzIGNh
biBiZSBsb2FkZWQgZnJvbSBhbnkgb3JpZ2luLgogICAgICAgICAvLyBGSVhNRTogQXJlIHdlIHN1
cmUgYWJvdXQgQ2FjaGVkUmVzb3VyY2U6OkZvbnRSZXNvdXJjZT8KICAgICAgICAgYnJlYWs7CkBA
IC0yMjAsNiArMjMzLDkgQEAgYm9vbCBEb2NMb2FkZXI6OmNhblJlcXVlc3QoQ2FjaGVkUmVzb3Vy
YwogICAgICAgICBicmVhazsKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpJbWFnZVJlc291cmNl
OgogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkNTU1N0eWxlU2hlZXQ6CisjaWYgRU5BQkxFKExJ
TktfUFJFRkVUQ0gpCisgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6TGlua1ByZWZldGNoOgorI2Vu
ZGlmCiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6Rm9udFJlc291cmNlOiB7CiAgICAgICAgIC8v
IFRoZXNlIHJlc291cmNlcyBjYW4gY29ycnVwdCBvbmx5IHRoZSBmcmFtZSdzIHBpeGVscy4KICAg
ICAgICAgaWYgKEZyYW1lKiBmID0gZnJhbWUoKSkgewpAQCAtMzU1LDEzICszNzEsMTkgQEAgdm9p
ZCBEb2NMb2FkZXI6OmNoZWNrQ2FjaGVPYmplY3RTdGF0dXMoQwogICAgIGZyYW1lKCktPmxvYWRl
cigpLT5sb2FkZWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShyZXNvdXJjZSk7CiB9CiAKLXZvaWQg
RG9jTG9hZGVyOjppbmNyZW1lbnRSZXF1ZXN0Q291bnQoKQordm9pZCBEb2NMb2FkZXI6OmluY3Jl
bWVudFJlcXVlc3RDb3VudChjb25zdCBDYWNoZWRSZXNvdXJjZSogcmVzKQogeworICAgIGlmIChy
ZXMtPmlzUHJlZmV0Y2goKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgKyttX3JlcXVlc3RDb3Vu
dDsKIH0KIAotdm9pZCBEb2NMb2FkZXI6OmRlY3JlbWVudFJlcXVlc3RDb3VudCgpCit2b2lkIERv
Y0xvYWRlcjo6ZGVjcmVtZW50UmVxdWVzdENvdW50KGNvbnN0IENhY2hlZFJlc291cmNlKiByZXMp
CiB7CisgICAgaWYgKHJlcy0+aXNQcmVmZXRjaCgpKQorICAgICAgICByZXR1cm47CisKICAgICAt
LW1fcmVxdWVzdENvdW50OwogICAgIEFTU0VSVChtX3JlcXVlc3RDb3VudCA+IC0xKTsKIH0KSW5k
ZXg6IFdlYkNvcmUvbG9hZGVyL0RvY0xvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9h
ZGVyL0RvY0xvYWRlci5oCShyZXZpc2lvbiA2MDA3MSkKKysrIFdlYkNvcmUvbG9hZGVyL0RvY0xv
YWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw5IEBAIGNsYXNzIERvY3VtZW50Owog
Y2xhc3MgRnJhbWU7CiBjbGFzcyBJbWFnZUxvYWRlcjsKIGNsYXNzIEtVUkw7CisjaWYgRU5BQkxF
KExJTktfUFJFRkVUQ0gpCitjbGFzcyBDYWNoZWRMaW5rUHJlZmV0Y2g7CisjZW5kaWYKIAogLy8g
VGhlIERvY0xvYWRlciBtYW5hZ2VzIHRoZSBsb2FkaW5nIG9mIHNjcmlwdHMvaW1hZ2VzL3N0eWxl
c2hlZXRzIGZvciBhIHNpbmdsZSBkb2N1bWVudC4KIGNsYXNzIERvY0xvYWRlciA6IHB1YmxpYyBO
b25jb3B5YWJsZSB7CkBAIC02Nyw2ICs3MCw5IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoWEJMKQog
ICAgIENhY2hlZFhCTERvY3VtZW50KiByZXF1ZXN0WEJMRG9jdW1lbnQoY29uc3QgU3RyaW5nICZ1
cmwpOwogI2VuZGlmCisjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCisgICAgQ2FjaGVkTGlua1By
ZWZldGNoKiByZXF1ZXN0TGlua1ByZWZldGNoKGNvbnN0IFN0cmluZyAmdXJsKTsKKyNlbmRpZgog
CiAgICAgLy8gTG9ncyBhbiBhY2Nlc3MgZGVuaWVkIG1lc3NhZ2UgdG8gdGhlIGNvbnNvbGUgZm9y
IHRoZSBzcGVjaWZpZWQgVVJMLgogICAgIHZvaWQgcHJpbnRBY2Nlc3NEZW5pZWRNZXNzYWdlKGNv
bnN0IEtVUkwmIHVybCkgY29uc3Q7CkBAIC05MSw4ICs5Nyw4IEBAIHB1YmxpYzoKICAgICAKICAg
ICB2b2lkIHNldEFsbG93U3RhbGVSZXNvdXJjZXMoYm9vbCBhbGxvd1N0YWxlUmVzb3VyY2VzKSB7
IG1fYWxsb3dTdGFsZVJlc291cmNlcyA9IGFsbG93U3RhbGVSZXNvdXJjZXM7IH0KIAotICAgIHZv
aWQgaW5jcmVtZW50UmVxdWVzdENvdW50KCk7Ci0gICAgdm9pZCBkZWNyZW1lbnRSZXF1ZXN0Q291
bnQoKTsKKyAgICB2b2lkIGluY3JlbWVudFJlcXVlc3RDb3VudChjb25zdCBDYWNoZWRSZXNvdXJj
ZSopOworICAgIHZvaWQgZGVjcmVtZW50UmVxdWVzdENvdW50KGNvbnN0IENhY2hlZFJlc291cmNl
Kik7CiAgICAgaW50IHJlcXVlc3RDb3VudCgpOwogICAgIAogICAgIHZvaWQgY2xlYXJQcmVsb2Fk
cygpOwpJbmRleDogV2ViQ29yZS9sb2FkZXIvbG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2xvYWRlci9sb2FkZXIuY3BwCShyZXZpc2lvbiA2MDA3MSkKKysrIFdlYkNvcmUvbG9hZGVy
L2xvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5LDcgKzg5LDEyIEBAIHN0YXRpYyBSZXNv
dXJjZVJlcXVlc3Q6OlRhcmdldFR5cGUgY2FjaGUKICAgICAgICAgcmV0dXJuIFJlc291cmNlUmVx
dWVzdDo6VGFyZ2V0SXNGb250UmVzb3VyY2U7CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6SW1h
Z2VSZXNvdXJjZToKICAgICAgICAgcmV0dXJuIFJlc291cmNlUmVxdWVzdDo6VGFyZ2V0SXNJbWFn
ZTsKKyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKKyAgICBjYXNlIENhY2hlZFJlc291cmNlOjpM
aW5rUHJlZmV0Y2g6CisgICAgICAgIHJldHVybiBSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldElzU3Vi
cmVzb3VyY2U7CisjZW5kaWYKICAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
cmV0dXJuIFJlc291cmNlUmVxdWVzdDo6VGFyZ2V0SXNTdWJyZXNvdXJjZTsKIH0KIApAQCAtMTEw
LDYgKzExNSwxMCBAQCBMb2FkZXI6OlByaW9yaXR5IExvYWRlcjo6ZGV0ZXJtaW5lUHJpb3JpCiAg
ICAgICAgICAgICByZXR1cm4gTWVkaXVtOwogICAgICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpJ
bWFnZVJlc291cmNlOgogICAgICAgICAgICAgcmV0dXJuIExvdzsKKyNpZiBFTkFCTEUoTElOS19Q
UkVGRVRDSCkKKyAgICAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6TGlua1ByZWZldGNoOgorICAg
ICAgICAgICAgcmV0dXJuIFZlcnlMb3c7CisjZW5kaWYKICAgICB9CiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgcmV0dXJuIExvdzsKQEAgLTEzOSw5ICsxNDgsOSBAQCB2b2lkIExvYWRl
cjo6bG9hZChEb2NMb2FkZXIqIGRvY0xvYWRlciwgCiAgICAgYm9vbCBoYWRSZXF1ZXN0cyA9IGhv
c3QtPmhhc1JlcXVlc3RzKCk7CiAgICAgUHJpb3JpdHkgcHJpb3JpdHkgPSBkZXRlcm1pbmVQcmlv
cml0eShyZXNvdXJjZSk7CiAgICAgaG9zdC0+YWRkUmVxdWVzdChyZXF1ZXN0LCBwcmlvcml0eSk7
Ci0gICAgZG9jTG9hZGVyLT5pbmNyZW1lbnRSZXF1ZXN0Q291bnQoKTsKKyAgICBkb2NMb2FkZXIt
PmluY3JlbWVudFJlcXVlc3RDb3VudChyZXF1ZXN0LT5jYWNoZWRSZXNvdXJjZSgpKTsKIAotICAg
IGlmIChwcmlvcml0eSA+IExvdyB8fCAhdXJsLnByb3RvY29sSW5IVFRQRmFtaWx5KCkgfHwgIWhh
ZFJlcXVlc3RzKSB7CisgICAgaWYgKHByaW9yaXR5ID4gTG93IHx8ICF1cmwucHJvdG9jb2xJbkhU
VFBGYW1pbHkoKSB8fCAocHJpb3JpdHkgPT0gTG93ICYmICFoYWRSZXF1ZXN0cykpIHsKICAgICAg
ICAgLy8gVHJ5IHRvIHJlcXVlc3QgaW1wb3J0YW50IHJlc291cmNlcyBpbW1lZGlhdGVseQogICAg
ICAgICBob3N0LT5zZXJ2ZVBlbmRpbmdSZXF1ZXN0cyhwcmlvcml0eSk7CiAgICAgfSBlbHNlIHsK
QEAgLTM2MSw2ICszNzAsMTEgQEAgdm9pZCBMb2FkZXI6Okhvc3Q6OnNlcnZlUGVuZGluZ1JlcXVl
c3RzKAogICAgICAgICAgICAgfQogICAgICAgICB9CiAKKyNpZiBFTkFCTEUoTElOS19QUkVGRVRD
SCkKKyAgICAgICAgaWYgKHJlcXVlc3QtPmNhY2hlZFJlc291cmNlKCktPnR5cGUoKSA9PSBDYWNo
ZWRSZXNvdXJjZTo6TGlua1ByZWZldGNoKQorICAgICAgICAgICAgcmVzb3VyY2VSZXF1ZXN0LnNl
dEhUVFBIZWFkZXJGaWVsZCgiWC1Nb3oiLCAicHJlZmV0Y2giKTsKKyNlbmRpZgorCiAgICAgICAg
IFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gbG9hZGVyID0gU3VicmVzb3VyY2VMb2FkZXI6OmNy
ZWF0ZShkb2NMb2FkZXItPmRvYygpLT5mcmFtZSgpLAogICAgICAgICAgICAgdGhpcywgcmVzb3Vy
Y2VSZXF1ZXN0LCByZXF1ZXN0LT5zaG91bGREb1NlY3VyaXR5Q2hlY2soKSwgcmVxdWVzdC0+c2Vu
ZFJlc291cmNlTG9hZENhbGxiYWNrcygpKTsKICAgICAgICAgaWYgKGxvYWRlcikgewpAQCAtMzcw
LDcgKzM4NCw3IEBAIHZvaWQgTG9hZGVyOjpIb3N0OjpzZXJ2ZVBlbmRpbmdSZXF1ZXN0cygKICAg
ICAgICAgICAgIHByaW50ZigiSE9TVCAlcyBDT1VOVCAlZCBMT0FESU5HICVzXG4iLCByZXNvdXJj
ZVJlcXVlc3QudXJsKCkuaG9zdCgpLmxhdGluMSgpLmRhdGEoKSwgbV9yZXF1ZXN0c0xvYWRpbmcu
c2l6ZSgpLCByZXF1ZXN0LT5jYWNoZWRSZXNvdXJjZSgpLT51cmwoKS5sYXRpbjEoKS5kYXRhKCkp
OwogI2VuZGlmCiAgICAgICAgIH0gZWxzZSB7ICAgICAgICAgICAgCi0gICAgICAgICAgICBkb2NM
b2FkZXItPmRlY3JlbWVudFJlcXVlc3RDb3VudCgpOworICAgICAgICAgICAgZG9jTG9hZGVyLT5k
ZWNyZW1lbnRSZXF1ZXN0Q291bnQocmVxdWVzdC0+Y2FjaGVkUmVzb3VyY2UoKSk7CiAgICAgICAg
ICAgICBkb2NMb2FkZXItPnNldExvYWRJblByb2dyZXNzKHRydWUpOwogICAgICAgICAgICAgcmVx
dWVzdC0+Y2FjaGVkUmVzb3VyY2UoKS0+ZXJyb3IoKTsKICAgICAgICAgICAgIGRvY0xvYWRlci0+
c2V0TG9hZEluUHJvZ3Jlc3MoZmFsc2UpOwpAQCAtMzk0LDcgKzQwOCw3IEBAIHZvaWQgTG9hZGVy
OjpIb3N0OjpkaWRGaW5pc2hMb2FkaW5nKFN1YnIKICAgICAvLyB0aGUgZG9jTG9hZGVyIHRoYXQg
aXQgd2lsbCBkZWxldGUgd2hlbiB0aGUgZG9jdW1lbnQgZ2V0cyBkZWxldGVkLgogICAgIFJlZlB0
cjxEb2N1bWVudD4gcHJvdGVjdG9yKGRvY0xvYWRlci0+ZG9jKCkpOwogICAgIGlmICghcmVxdWVz
dC0+aXNNdWx0aXBhcnQoKSkKLSAgICAgICAgZG9jTG9hZGVyLT5kZWNyZW1lbnRSZXF1ZXN0Q291
bnQoKTsKKyAgICAgICAgZG9jTG9hZGVyLT5kZWNyZW1lbnRSZXF1ZXN0Q291bnQocmVxdWVzdC0+
Y2FjaGVkUmVzb3VyY2UoKSk7CiAKICAgICBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UgPSByZXF1
ZXN0LT5jYWNoZWRSZXNvdXJjZSgpOwogICAgIEFTU0VSVCghcmVzb3VyY2UtPnJlc291cmNlVG9S
ZXZhbGlkYXRlKCkpOwpAQCAtNDQyLDcgKzQ1Niw3IEBAIHZvaWQgTG9hZGVyOjpIb3N0OjpkaWRG
YWlsKFN1YnJlc291cmNlTG8KICAgICAvLyB0aGUgZG9jTG9hZGVyIHRoYXQgaXQgd2lsbCBkZWxl
dGUgd2hlbiB0aGUgZG9jdW1lbnQgZ2V0cyBkZWxldGVkLgogICAgIFJlZlB0cjxEb2N1bWVudD4g
cHJvdGVjdG9yKGRvY0xvYWRlci0+ZG9jKCkpOwogICAgIGlmICghcmVxdWVzdC0+aXNNdWx0aXBh
cnQoKSkKLSAgICAgICAgZG9jTG9hZGVyLT5kZWNyZW1lbnRSZXF1ZXN0Q291bnQoKTsKKyAgICAg
ICAgZG9jTG9hZGVyLT5kZWNyZW1lbnRSZXF1ZXN0Q291bnQocmVxdWVzdC0+Y2FjaGVkUmVzb3Vy
Y2UoKSk7CiAKICAgICBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UgPSByZXF1ZXN0LT5jYWNoZWRS
ZXNvdXJjZSgpOwogICAgIApAQCAtNDg3LDcgKzUwMSw3IEBAIHZvaWQgTG9hZGVyOjpIb3N0Ojpk
aWRSZWNlaXZlUmVzcG9uc2UoU3UKICAgICAgICAgICAgIC8vIDMwNCBOb3QgbW9kaWZpZWQgLyBV
c2UgbG9jYWwgY29weQogICAgICAgICAgICAgbV9yZXF1ZXN0c0xvYWRpbmcucmVtb3ZlKGxvYWRl
cik7CiAgICAgICAgICAgICBsb2FkZXItPmNsZWFyQ2xpZW50KCk7Ci0gICAgICAgICAgICByZXF1
ZXN0LT5kb2NMb2FkZXIoKS0+ZGVjcmVtZW50UmVxdWVzdENvdW50KCk7CisgICAgICAgICAgICBy
ZXF1ZXN0LT5kb2NMb2FkZXIoKS0+ZGVjcmVtZW50UmVxdWVzdENvdW50KHJlcXVlc3QtPmNhY2hl
ZFJlc291cmNlKCkpOwogCiAgICAgICAgICAgICAvLyBFeGlzdGluZyByZXNvdXJjZSBpcyBvaywg
anVzdCB1c2UgaXQgdXBkYXRpbmcgdGhlIGV4cGlyYXRpb24gdGltZS4KICAgICAgICAgICAgIGNh
Y2hlKCktPnJldmFsaWRhdGlvblN1Y2NlZWRlZChyZXNvdXJjZSwgcmVzcG9uc2UpOwpAQCAtNTE5
LDcgKzUzMyw3IEBAIHZvaWQgTG9hZGVyOjpIb3N0OjpkaWRSZWNlaXZlUmVzcG9uc2UoU3UKICAg
ICAgICAgcmVxdWVzdC0+c2V0SXNNdWx0aXBhcnQodHJ1ZSk7CiAgICAgICAgIAogICAgICAgICAv
LyBXZSBkb24ndCBjb3VudCBtdWx0aVBhcnRzIGluIGEgRG9jTG9hZGVyJ3MgcmVxdWVzdCBjb3Vu
dAotICAgICAgICByZXF1ZXN0LT5kb2NMb2FkZXIoKS0+ZGVjcmVtZW50UmVxdWVzdENvdW50KCk7
CisgICAgICAgIHJlcXVlc3QtPmRvY0xvYWRlcigpLT5kZWNyZW1lbnRSZXF1ZXN0Q291bnQocmVx
dWVzdC0+Y2FjaGVkUmVzb3VyY2UoKSk7CiAKICAgICAgICAgLy8gSWYgd2UgZ2V0IGEgbXVsdGlw
YXJ0IHJlc3BvbnNlLCB3ZSBtdXN0IGhhdmUgYSBoYW5kbGUKICAgICAgICAgQVNTRVJUKGxvYWRl
ci0+aGFuZGxlKCkpOwpAQCAtNTgyLDcgKzU5Niw3IEBAIHZvaWQgTG9hZGVyOjpIb3N0OjpjYW5j
ZWxQZW5kaW5nUmVxdWVzdHMKICAgICAgICAgaWYgKHJlcXVlc3QtPmRvY0xvYWRlcigpID09IGRv
Y0xvYWRlcikgewogICAgICAgICAgICAgY2FjaGUoKS0+cmVtb3ZlKHJlcXVlc3QtPmNhY2hlZFJl
c291cmNlKCkpOwogICAgICAgICAgICAgZGVsZXRlIHJlcXVlc3Q7Ci0gICAgICAgICAgICBkb2NM
b2FkZXItPmRlY3JlbWVudFJlcXVlc3RDb3VudCgpOworICAgICAgICAgICAgZG9jTG9hZGVyLT5k
ZWNyZW1lbnRSZXF1ZXN0Q291bnQocmVxdWVzdC0+Y2FjaGVkUmVzb3VyY2UoKSk7CiAgICAgICAg
IH0gZWxzZQogICAgICAgICAgICAgcmVtYWluaW5nLmFwcGVuZChyZXF1ZXN0KTsKICAgICB9Cklu
ZGV4OiBXZWJDb3JlL2xvYWRlci9sb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRl
ci9sb2FkZXIuaAkocmV2aXNpb24gNjAwNzEpCisrKyBXZWJDb3JlL2xvYWRlci9sb2FkZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtNDgsOCArNDgsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAg
ICAgICAgdm9pZCBjYW5jZWxSZXF1ZXN0cyhEb2NMb2FkZXIqKTsKICAgICAgICAgCi0gICAgICAg
IGVudW0gUHJpb3JpdHkgeyBMb3csIE1lZGl1bSwgSGlnaCB9OwotICAgICAgICB2b2lkIHNlcnZl
UGVuZGluZ1JlcXVlc3RzKFByaW9yaXR5IG1pbmltdW1Qcmlvcml0eSA9IExvdyk7CisgICAgICAg
IGVudW0gUHJpb3JpdHkgeyBWZXJ5TG93LCBMb3csIE1lZGl1bSwgSGlnaCB9OworICAgICAgICB2
b2lkIHNlcnZlUGVuZGluZ1JlcXVlc3RzKFByaW9yaXR5IG1pbmltdW1Qcmlvcml0eSA9IFZlcnlM
b3cpOwogCiAgICAgICAgIGJvb2wgaXNTdXNwZW5kaW5nUGVuZGluZ1JlcXVlc3RzKCkgeyByZXR1
cm4gbV9pc1N1c3BlbmRpbmdQZW5kaW5nUmVxdWVzdHM7IH0KICAgICAgICAgdm9pZCBzdXNwZW5k
UGVuZGluZ1JlcXVlc3RzKCk7CkBAIC03Niw3ICs3Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgICAgIHZvaWQgYWRkUmVxdWVzdChSZXF1ZXN0KiwgUHJpb3JpdHkpOwogICAgICAg
ICAgICAgdm9pZCBub25DYWNoZVJlcXVlc3RJbkZsaWdodCgpOwogICAgICAgICAgICAgdm9pZCBu
b25DYWNoZVJlcXVlc3RDb21wbGV0ZSgpOwotICAgICAgICAgICAgdm9pZCBzZXJ2ZVBlbmRpbmdS
ZXF1ZXN0cyhQcmlvcml0eSBtaW5pbXVtUHJpb3JpdHkgPSBMb3cpOworICAgICAgICAgICAgdm9p
ZCBzZXJ2ZVBlbmRpbmdSZXF1ZXN0cyhQcmlvcml0eSBtaW5pbXVtUHJpb3JpdHkgPSBWZXJ5TG93
KTsKICAgICAgICAgICAgIHZvaWQgY2FuY2VsUmVxdWVzdHMoRG9jTG9hZGVyKik7CiAgICAgICAg
ICAgICBib29sIGhhc1JlcXVlc3RzKCkgY29uc3Q7CiAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDYwMDcx
KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAg
QEAKKzIwMTAtMDUtMjQgIExlb24gQ2xhcmtlICA8bGVvbmNsYXJrZUBnb29nbGUuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIGxheW91
dCB0ZXN0IGZvciBsaW5rIHJlbD1wcmVmZXRjaC4gSXQncyBkaXNhYmxlZCBzaW5jZSB0aGUgZmVh
dHVyZSBpcworICAgICAgICBkaXNhYmxlZCBieSBkZWZhdWx0LgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY1MgorCisKKyAgICAgICAgKiBmYXN0L2Rv
bS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0Y2gtb25sb2FkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLW9ubG9hZC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0Y2gubGluazog
QWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZv
cm0vbWFjL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vcXQvU2tpcHBlZDoKKyAgICAgICAg
KiBwbGF0Zm9ybS93aW4vU2tpcHBlZDoKKwogMjAxMC0wNS0yNCAgSmVyZW15IE9ybG93ICA8am9y
bG93QGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLiAgRm9yZ290IHRvIHJlZG8g
dGhlIGV4cGVjdGF0aW9uIGFmdGVyIGFkZGluZyB0aGUgY29udGFpbnMKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC1vbmxvYWQtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVm
ZXRjaC1vbmxvYWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLW9ubG9hZC1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNiBAQAorVGhpcyB0ZXN0cyB0aGF0IG9ubG9hZCBldmVudHMgY2Fu
IGJlIGF0dGFjaGVkIHRvIGxpbmsgZWxlbWVudHMgd2l0aCByZWw9cHJlZmV0Y2guIFNpbmNlIHBy
ZWZldGNoIGxpbmtzIGFyZSBqdXN0IHRoZXJlIGFzIGEgcGVyZm9ybWFuY2Ugb3B0aW1pc2F0aW9u
LCB0aGUgb25sb2FkIGV2ZW50IGlzIHRoZWlyIG9ubHkgcHJvZ3JhbWF0aWMgc2lkZS1lZmZlY3Qu
CisKK0lmIGl0IHdvcmtzIHlvdSBzaG91bGQgc2VlIGEgbWVzc2FnZSBiZWxvdyBzYXlpbmcgdGhl
IHRlc3QgaGFzIHBhc3NlZC4KKworVEVTVCBQQVNTRUQuIFRoZSBzdHlsZXNoZWV0IGxpbmsgb25s
b2FkIGhhbmRsZXIgaGFzIGZpcmVkCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxM
aW5rRWxlbWVudC9wcmVmZXRjaC1vbmxvYWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0Y2gtb25sb2FkLmh0bWwJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0Y2gtb25s
b2FkLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzIgQEAKKzxodG1sPgorICAgIDxoZWFk
PgorICAgICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgICAgICAgICBm
dW5jdGlvbiBsb2cobWVzc2FnZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB2YXIg
aXRlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7CisgICAgICAgICAgICAgICAgaXRl
bS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdlKSk7CisgICAgICAg
ICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5hcHBlbmRDaGlsZChp
dGVtKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZ1bmN0aW9uIGRvbmUoKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIGxvZygiVEVTVCBQQVNTRUQuIFRoZSBzdHlsZXNoZWV0
IGxpbmsgb25sb2FkIGhhbmRsZXIgaGFzIGZpcmVkIik7CisgICAgICAgICAgICAgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICAgICAgICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Cisg
ICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAg
ICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAg
ICAgIH0KKworCTwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keT4KKyAgICAgICAgPHA+
VGhpcyB0ZXN0cyB0aGF0IG9ubG9hZCBldmVudHMgY2FuIGJlIGF0dGFjaGVkIHRvIGxpbmsgZWxl
bWVudHMgd2l0aCByZWw9cHJlZmV0Y2guIFNpbmNlIHByZWZldGNoIGxpbmtzIGFyZSBqdXN0IHRo
ZXJlIGFzIGEgcGVyZm9ybWFuY2Ugb3B0aW1pc2F0aW9uLCB0aGUgb25sb2FkIGV2ZW50IGlzIHRo
ZWlyIG9ubHkgcHJvZ3JhbWF0aWMgc2lkZS1lZmZlY3QuPC9wPgorICAgICAgICA8cD5JZiBpdCB3
b3JrcyB5b3Ugc2hvdWxkIHNlZSBhIG1lc3NhZ2UgYmVsb3cgc2F5aW5nIHRoZSB0ZXN0IGhhcyBw
YXNzZWQuPC9wPgorICAgICAgICA8bGluayBocmVmPSJwcmVmZXRjaC5saW5rIiByZWw9InByZWZl
dGNoIiBvbmxvYWQ9ImRvbmUoKSIgPgorICAgICAgICA8aHI+CisgICAgICAgIDxwPjxvbCBpZD0i
Y29uc29sZSI+PC9vbD48L3A+CisgICAgPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLmxpbmsKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLmxpbmsJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0Y2gu
bGluawkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorVGhpcyBpcyB0aGUgbGluayB0aGF0IGlz
IGZldGNoZWQgYnkgdGhlIHByZWZldGNoLW9ubG9hZCB0ZXN0CkluZGV4OiBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9ndGsvU2tpcHBlZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9n
dGsvU2tpcHBlZAkocmV2aXNpb24gNjAwNzEpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsv
U2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAtNTk0MSwzICs1OTQxLDYgQEAgc3RvcmFnZS9pbmRl
eGVkZGIKIGZhc3QvZG9tL0dlb2xvY2F0aW9uL2FyZ3VtZW50LXR5cGVzLmh0bWwKIGZhc3QvZG9t
L0dlb2xvY2F0aW9uL25vdGltZXItYWZ0ZXItdW5sb2FkLmh0bWwKIGZhc3QvZG9tL0dlb2xvY2F0
aW9uL3RpbWVvdXQtemVyby5odG1sCisKKyMgTGluayBwcmVmZXRjaCBpcyBkaXNhYmxlZCBieSBk
ZWZhdWx0CitmYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0Y2gtb25sb2FkLmh0bWwKSW5k
ZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCShyZXZpc2lvbiA2MDA3MSkKKysrIExheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC0xOTUsMyArMTk1LDYg
QEAgc3RvcmFnZS9pbmRleGVkZGIKICMgVGhpcyBwb3J0IGRvZXNuJ3Qgc3VwcG9ydCBEZXZpY2VP
cmllbnRhdGlvbi4KIGZhc3QvZG9tL0RldmljZU9yaWVudGF0aW9uCiBmYXN0L2RvbS9XaW5kb3cv
d2luZG93LXByb3BlcnRpZXMtb24tZGV2aWNlLW9yaWVudGF0aW9uLmh0bWwKKworIyBMaW5rIHBy
ZWZldGNoIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQKK2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9w
cmVmZXRjaC1vbmxvYWQuaHRtbApJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBl
ZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCShyZXZpc2lv
biA2MDA3MSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQJKHdvcmtpbmcgY29w
eSkKQEAgLTUwOTksMyArNTA5OSw2IEBAIGZhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGll
cy1vbi1kZXYKICMgW1F0XSBuZWVkIGFuIGltcGxlbWVudGF0aW9uIG9mIExheW91dFRlc3RDb250
cm9sbGVyOjpjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8KICMgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3NzU5CiBmYXN0L2hpc3Rvcnkvc2VsZi1pcy12
aXNpdGVkLmh0bWwKKworIyBMaW5rIHByZWZldGNoIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQKK2Zh
c3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC1vbmxvYWQuaHRtbApJbmRleDogTGF5b3V0
VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxh
dGZvcm0vd2luL1NraXBwZWQJKHJldmlzaW9uIDYwMDcxKQorKysgTGF5b3V0VGVzdHMvcGxhdGZv
cm0vd2luL1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTg4NywzICs4ODcsNiBAQCBzdG9yYWdl
L2luZGV4ZWRkYgogIyBUaGlzIHBvcnQgZG9lc24ndCBzdXBwb3J0IERldmljZU9yaWVudGF0aW9u
LgogZmFzdC9kb20vRGV2aWNlT3JpZW50YXRpb24KIGZhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJv
cGVydGllcy1vbi1kZXZpY2Utb3JpZW50YXRpb24uaHRtbAorCisjIExpbmsgcHJlZmV0Y2ggaXMg
ZGlzYWJsZWQgYnkgZGVmYXVsdAorZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLW9u
bG9hZC5odG1sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57541</attachid>
            <date>2010-06-01 07:07:33 -0700</date>
            <delta_ts>2010-06-01 07:43:35 -0700</delta_ts>
            <desc>As before, but updated against newer webkit</desc>
            <filename>prefetch2.patch</filename>
            <type>text/plain</type>
            <size>25402</size>
            <attacher name="Leon Clarke">leonclarke</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MDQ3NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTAgQEAKKzIwMTAtMDYtMDEgIExlb24gQ2xhcmtlICA8bGVvbmNsYXJrZUBnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBzdXBwb3J0IGZvciBsaW5rIHJlbD1wcmVmZXRjaAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY1MgorCisgICAgICAgIFRlc3Q6IGZhc3QvZG9t
L0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC1vbmxvYWQuaHRtbAorCisgICAgICAgICogaHRtbC9I
VE1MTGlua0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50Ojpw
YXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6
OnRva2VuaXplUmVsQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVu
dDo6cHJvY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6Om5vdGlmeUZp
bmlzaGVkKToKKyAgICAgICAgKiBodG1sL0hUTUxMaW5rRWxlbWVudC5oOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTExpbmtFbGVtZW50OjpSZWxBdHRyaWJ1dGU6OlJlbEF0dHJpYnV0ZSk6CisgICAg
ICAgICogbG9hZGVyL0NhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVJlc291cmNl
KToKKyAgICAgICAgKiBsb2FkZXIvQ2FjaGVkTGlua1ByZWZldGNoLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkTGlua1ByZWZldGNoOjpDYWNoZWRMaW5rUHJlZmV0Y2gpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkTGlua1ByZWZldGNoOjp+Q2FjaGVkTGlua1ByZWZldGNoKToK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZExpbmtQcmVmZXRjaDo6ZGlkQWRkQ2xpZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZExpbmtQcmVmZXRjaDo6ZGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRMaW5rUHJlZmV0Y2g6OmVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZExpbmtQcmVmZXRjaDo6c2NoZWR1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkTGlua1By
ZWZldGNoOjppc1ByZWZldGNoKToKKyAgICAgICAgKiBsb2FkZXIvQ2FjaGVkUmVzb3VyY2UuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjopOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkUmVzb3VyY2U6OmlzUHJlZmV0Y2gpOgorICAgICAgICAqIGxvYWRlci9Eb2NMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jTG9hZGVyOjpyZXF1ZXN0TGlua1ByZWZldGNoKToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY0xvYWRlcjo6Y2FuUmVxdWVzdCk6CisgICAgICAgIChXZWJD
b3JlOjpEb2NMb2FkZXI6OmluY3JlbWVudFJlcXVlc3RDb3VudCk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2NMb2FkZXI6OmRlY3JlbWVudFJlcXVlc3RDb3VudCk6CisgICAgICAgICogbG9hZGVyL0Rv
Y0xvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9sb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y2FjaGVkUmVzb3VyY2VUeXBlVG9UYXJnZXRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Okxv
YWRlcjo6ZGV0ZXJtaW5lUHJpb3JpdHkpOgorICAgICAgICAoV2ViQ29yZTo6TG9hZGVyOjpsb2Fk
KToKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRlcjo6SG9zdDo6c2VydmVQZW5kaW5nUmVxdWVzdHMp
OgorICAgICAgICAoV2ViQ29yZTo6TG9hZGVyOjpIb3N0OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxvYWRlcjo6SG9zdDo6ZGlkRmFpbCk6CisgICAgICAgIChXZWJDb3Jl
OjpMb2FkZXI6Okhvc3Q6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpM
b2FkZXI6Okhvc3Q6OmNhbmNlbFBlbmRpbmdSZXF1ZXN0cyk6CisgICAgICAgICogbG9hZGVyL2xv
YWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6TG9hZGVyOjopOgorCiAyMDEwLTA2LTAxICBKb2Nl
bHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBub2tpYS5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAko
cmV2aXNpb24gNjA0NzUpCisrKyBXZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDEsNiArNDEsOSBAQAogI2luY2x1ZGUgIlNjcmlwdEV2ZW50TGlzdGVu
ZXIuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMu
aD4KKyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKKyNpbmNsdWRlICJDYWNoZWRMaW5rUHJlZmV0
Y2guaCIKKyNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEzMCw2ICsxMzMsOCBA
QCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1CiAgICAgICAgIHNldERp
c2FibGVkU3RhdGUoIWF0dHItPmlzTnVsbCgpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkg
PT0gb25iZWZvcmVsb2FkQXR0cikKICAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihl
dmVudE5hbWVzKCkuYmVmb3JlbG9hZEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVy
KHRoaXMsIGF0dHIpKTsKKyAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gb25sb2FkQXR0cikK
KyAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkubG9hZEV2ZW50
LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHIpKTsKICAgICBlbHNlIHsK
ICAgICAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSB0aXRsZUF0dHIgJiYgbV9zaGVldCkKICAgICAg
ICAgICAgIG1fc2hlZXQtPnNldFRpdGxlKGF0dHItPnZhbHVlKCkpOwpAQCAtMTQzLDEyICsxNDgs
MTkgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnRva2VuaXplUmVsQXR0cmlidQogICAgIHJlbEF0
dHJpYnV0ZS5tX2lzSWNvbiA9IGZhbHNlOwogICAgIHJlbEF0dHJpYnV0ZS5tX2lzQWx0ZXJuYXRl
ID0gZmFsc2U7CiAgICAgcmVsQXR0cmlidXRlLm1faXNETlNQcmVmZXRjaCA9IGZhbHNlOworI2lm
IEVOQUJMRShMSU5LX1BSRUZFVENIKQorICAgIHJlbEF0dHJpYnV0ZS5tX2lzTGlua1ByZWZldGNo
ID0gZmFsc2U7CisjZW5kaWYKICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UocmVsLCAic3R5bGVz
aGVldCIpKQogICAgICAgICByZWxBdHRyaWJ1dGUubV9pc1N0eWxlU2hlZXQgPSB0cnVlOwogICAg
IGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHJlbCwgImljb24iKSB8fCBlcXVhbElnbm9yaW5n
Q2FzZShyZWwsICJzaG9ydGN1dCBpY29uIikpCiAgICAgICAgIHJlbEF0dHJpYnV0ZS5tX2lzSWNv
biA9IHRydWU7CiAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UocmVsLCAiZG5zLXByZWZl
dGNoIikpCiAgICAgICAgIHJlbEF0dHJpYnV0ZS5tX2lzRE5TUHJlZmV0Y2ggPSB0cnVlOworI2lm
IEVOQUJMRShMSU5LX1BSRUZFVENIKQorICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHJl
bCwgInByZWZldGNoIikpCisgICAgICAgIHJlbEF0dHJpYnV0ZS5tX2lzTGlua1ByZWZldGNoID0g
dHJ1ZTsKKyNlbmRpZgogICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHJlbCwgImFsdGVy
bmF0ZSBzdHlsZXNoZWV0IikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UocmVsLCAic3R5bGVzaGVldCBh
bHRlcm5hdGUiKSkgewogICAgICAgICByZWxBdHRyaWJ1dGUubV9pc1N0eWxlU2hlZXQgPSB0cnVl
OwogICAgICAgICByZWxBdHRyaWJ1dGUubV9pc0FsdGVybmF0ZSA9IHRydWU7CkBAIC0xODUsNiAr
MTk3LDE2IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50Ojpwcm9jZXNzKCkKICAgICBpZiAobV9yZWxB
dHRyaWJ1dGUubV9pc0ROU1ByZWZldGNoICYmIG1fdXJsLmlzVmFsaWQoKSAmJiAhbV91cmwuaXNF
bXB0eSgpKQogICAgICAgICBSZXNvdXJjZUhhbmRsZTo6cHJlcGFyZUZvclVSTChtX3VybCk7CiAK
KyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKKyAgICBpZiAobV9yZWxBdHRyaWJ1dGUubV9pc0xp
bmtQcmVmZXRjaCAmJiBtX3VybC5pc1ZhbGlkKCkpIHsKKyAgICAgICAgbV9jYWNoZWRMaW5rUHJl
ZmV0Y2ggPSBkb2N1bWVudCgpLT5kb2NMb2FkZXIoKS0+cmVxdWVzdExpbmtQcmVmZXRjaChtX3Vy
bCk7CisgICAgICAgIG1fbG9hZGluZyA9IHRydWU7CisKKyAgICAgICAgaWYgKG1fY2FjaGVkTGlu
a1ByZWZldGNoKQorICAgICAgICAgICAgbV9jYWNoZWRMaW5rUHJlZmV0Y2gtPmFkZENsaWVudCh0
aGlzKTsKKyAgICB9CisjZW5kaWYKKwogICAgIGJvb2wgYWNjZXB0SWZUeXBlQ29udGFpbnNUZXh0
Q1NTID0gZG9jdW1lbnQoKS0+cGFnZSgpICYmIGRvY3VtZW50KCktPnBhZ2UoKS0+c2V0dGluZ3Mo
KSAmJiBkb2N1bWVudCgpLT5wYWdlKCktPnNldHRpbmdzKCktPnRyZWF0c0FueVRleHRDU1NMaW5r
QXNTdHlsZXNoZWV0KCk7CiAKICAgICAvLyBTdHlsZXNoZWV0CkBAIC0zMjMsNiArMzQ1LDExIEBA
IGJvb2wgSFRNTExpbmtFbGVtZW50Ojppc0xvYWRpbmcoKSBjb25zdAogICAgIHJldHVybiBzdGF0
aWNfY2FzdDxDU1NTdHlsZVNoZWV0ICo+KG1fc2hlZXQuZ2V0KCkpLT5pc0xvYWRpbmcoKTsKIH0K
IAordm9pZCBIVE1MTGlua0VsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKikK
K3sKKyAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmxvYWRFdmVu
dCwgZmFsc2UsIGZhbHNlKSk7Cit9CisKIGJvb2wgSFRNTExpbmtFbGVtZW50OjpzaGVldExvYWRl
ZCgpCiB7CiAgICAgaWYgKCFpc0xvYWRpbmcoKSAmJiAhaXNEaXNhYmxlZCgpICYmICFpc0FsdGVy
bmF0ZSgpKSB7CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCShyZXZpc2lvbiA2MDQ3NSkKKysr
IFdlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiAr
MzEsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNoZWRDU1NTdHlsZVNoZWV0
OworY2xhc3MgQ2FjaGVkTGlua1ByZWZldGNoOwogY2xhc3MgS1VSTDsKIAogY2xhc3MgSFRNTExp
bmtFbGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50LCBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGll
bnQgewpAQCAtNDAsOCArNDEsMTUgQEAgcHVibGljOgogICAgICAgICBib29sIG1faXNJY29uOwog
ICAgICAgICBib29sIG1faXNBbHRlcm5hdGU7CiAgICAgICAgIGJvb2wgbV9pc0ROU1ByZWZldGNo
OworI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQorICAgICAgICBib29sIG1faXNMaW5rUHJlZmV0
Y2g7CisjZW5kaWYKIAotICAgICAgICBSZWxBdHRyaWJ1dGUoKSA6IG1faXNTdHlsZVNoZWV0KGZh
bHNlKSwgbV9pc0ljb24oZmFsc2UpLCBtX2lzQWx0ZXJuYXRlKGZhbHNlKSwgbV9pc0ROU1ByZWZl
dGNoKGZhbHNlKSB7IH0KKyAgICAgICAgUmVsQXR0cmlidXRlKCkgOiBtX2lzU3R5bGVTaGVldChm
YWxzZSksIG1faXNJY29uKGZhbHNlKSwgbV9pc0FsdGVybmF0ZShmYWxzZSksIG1faXNETlNQcmVm
ZXRjaChmYWxzZSkKKyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKKyAgICAgICAgICAgICwgbV9p
c0xpbmtQcmVmZXRjaChmYWxzZSkKKyNlbmRpZgorICAgICAgICAgICAgeyB9OwogICAgIH07CiAK
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MTGlua0VsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiwgRG9jdW1lbnQqLCBib29sIGNyZWF0ZWRCeVBhcnNlcik7CkBAIC05NSw2ICsx
MDMsOCBAQCBwcml2YXRlOgogCiAgICAgLy8gZnJvbSBDYWNoZWRSZXNvdXJjZUNsaWVudAogICAg
IHZpcnR1YWwgdm9pZCBzZXRDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3Qg
S1VSTCYgYmFzZVVSTCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBjb25zdCBDYWNoZWRDU1NTdHls
ZVNoZWV0KiBzaGVldCk7CisgICAgdmlydHVhbCB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJl
c291cmNlKik7CisgICAgYm9vbCBpc0xvYWRpbmcoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wg
c2hlZXRMb2FkZWQoKTsKIAogICAgIGJvb2wgaXNBbHRlcm5hdGUoKSBjb25zdCB7IHJldHVybiBt
X2Rpc2FibGVkU3RhdGUgPT0gVW5zZXQgJiYgbV9yZWxBdHRyaWJ1dGUubV9pc0FsdGVybmF0ZTsg
fQpAQCAtMTIyLDYgKzEzMiw5IEBAIHByaXZhdGU6CiAKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRs
ZTxDYWNoZWRDU1NTdHlsZVNoZWV0PiBtX2NhY2hlZFNoZWV0OwogICAgIFJlZlB0cjxDU1NTdHls
ZVNoZWV0PiBtX3NoZWV0OworI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQorICAgIENhY2hlZFJl
c291cmNlSGFuZGxlPENhY2hlZExpbmtQcmVmZXRjaD4gbV9jYWNoZWRMaW5rUHJlZmV0Y2g7Cisj
ZW5kaWYKICAgICBLVVJMIG1fdXJsOwogICAgIFN0cmluZyBtX3R5cGU7CiAgICAgU3RyaW5nIG1f
bWVkaWE7CkluZGV4OiBXZWJDb3JlL2xvYWRlci9DYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9sb2FkZXIvQ2FjaGUuY3BwCShyZXZpc2lvbiA2MDQ3NSkKKysrIFdlYkNvcmUvbG9hZGVy
L0NhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsOSBAQAogI2luY2x1ZGUgIlNl
Y3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVu
dFRpbWUuaD4KKyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKKyNpbmNsdWRlICJDYWNoZWRMaW5r
UHJlZmV0Y2guaCIKKyNlbmRpZgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCkBAIC04Niw2ICs4
OSwxMCBAQCBzdGF0aWMgQ2FjaGVkUmVzb3VyY2UqIGNyZWF0ZVJlc291cmNlKENhCiAgICAgY2Fz
ZSBDYWNoZWRSZXNvdXJjZTo6WEJMU3R5bGVTaGVldDoKICAgICAgICAgcmV0dXJuIG5ldyBDYWNo
ZWRYQkxEb2N1bWVudCh1cmwuc3RyaW5nKCkpOwogI2VuZGlmCisjaWYgRU5BQkxFKExJTktfUFJF
RkVUQ0gpCisgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6TGlua1ByZWZldGNoOgorICAgICAgICBy
ZXR1cm4gbmV3IENhY2hlZExpbmtQcmVmZXRjaCh1cmwuc3RyaW5nKCkpOworI2VuZGlmCiAgICAg
ZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQpJbmRleDogV2ViQ29yZS9sb2FkZXIvQ2Fj
aGVkTGlua1ByZWZldGNoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvQ2FjaGVkTGlu
a1ByZWZldGNoLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2xvYWRlci9DYWNoZWRMaW5rUHJl
ZmV0Y2guaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAy
MDEwLCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyovCisKKyNpZm5kZWYgQ2Fj
aGVkTGlua1ByZWZldGNoX2gKKyNkZWZpbmUgQ2FjaGVkTGlua1ByZWZldGNoX2gKKworI2luY2x1
ZGUgIkNhY2hlZFJlc291cmNlLmgiCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCIK
KyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlci5oIgorI2luY2x1ZGUgIlNoYXJl
ZEJ1ZmZlci5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgRG9jTG9hZGVyOworCitjbGFzcyBDYWNoZWRMaW5rUHJlZmV0Y2ggOiBw
dWJsaWMgQ2FjaGVkUmVzb3VyY2UgeworcHVibGljOgorICAgIENhY2hlZExpbmtQcmVmZXRjaChj
b25zdCBTdHJpbmcmIFVSTCkgOiBDYWNoZWRSZXNvdXJjZShVUkwsIExpbmtQcmVmZXRjaCkgeyB9
OworICAgIHZpcnR1YWwgfkNhY2hlZExpbmtQcmVmZXRjaCgpIHsgfTsKKworICAgIHZpcnR1YWwg
dm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqIGMpCisgICAgeworICAgICAg
ICBpZiAoIWlzTG9hZGluZygpKQorICAgICAgICAgICAgYy0+bm90aWZ5RmluaXNoZWQodGhpcyk7
CisgICAgfTsKKworICAgIHZpcnR1YWwgdm9pZCBkYXRhKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVy
PiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKKyAgICB7CisgICAgICAgIGlmICghYWxsRGF0
YVJlY2VpdmVkKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIG1fZGF0YSA9IGRhdGE7
CisKKyAgICAgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXIgdyhtX2NsaWVudHMpOworICAg
ICAgICB3aGlsZSAoQ2FjaGVkUmVzb3VyY2VDbGllbnQqIGMgPSB3Lm5leHQoKSkKKyAgICAgICAg
ICAgIGMtPm5vdGlmeUZpbmlzaGVkKHRoaXMpOworICAgIH07CisgICAgdmlydHVhbCB2b2lkIGVy
cm9yKCkgeyB9OworCisgICAgdmlydHVhbCBib29sIHNjaGVkdWxlKCkgY29uc3QgeyByZXR1cm4g
dHJ1ZTsgfQorCisgICAgdmlydHVhbCBib29sIGlzUHJlZmV0Y2goKSBjb25zdCB7IHJldHVybiB0
cnVlOyB9Cit9OworfQorCisjZW5kaWYKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0NhY2hlZFJlc291
cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvQ2FjaGVkUmVzb3VyY2UuaAkocmV2
aXNpb24gNjA0NzUpCisrKyBXZWJDb3JlL2xvYWRlci9DYWNoZWRSZXNvdXJjZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC02NCw2ICs2NCw5IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoWEJMKQogICAgICAg
ICAsIFhCTAogI2VuZGlmCisjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCisgICAgICAgICwgTGlu
a1ByZWZldGNoCisjZW5kaWYKICAgICB9OwogCiAgICAgZW51bSBTdGF0dXMgewpAQCAtMTIyLDYg
KzEyNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldExvYWRpbmcoYm9vbCBiKSB7IG1fbG9hZGlu
ZyA9IGI7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBpc0ltYWdlKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNQcmVmZXRjaCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CiAKICAgICB1bnNpZ25lZCBhY2Nlc3NDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fYWNjZXNz
Q291bnQ7IH0KICAgICB2b2lkIGluY3JlYXNlQWNjZXNzQ291bnQoKSB7IG1fYWNjZXNzQ291bnQr
KzsgfQpJbmRleDogV2ViQ29yZS9sb2FkZXIvRG9jTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2xvYWRlci9Eb2NMb2FkZXIuY3BwCShyZXZpc2lvbiA2MDQ3NSkKKysrIFdlYkNvcmUv
bG9hZGVyL0RvY0xvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDkgQEAKICNp
bmNsdWRlICJsb2FkZXIuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUg
IlNldHRpbmdzLmgiCisjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCisjaW5jbHVkZSAiQ2FjaGVk
TGlua1ByZWZldGNoLmgiCisjZW5kaWYKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAK
ICNkZWZpbmUgUFJFTE9BRF9ERUJVRyAwCkBAIC0xNjgsNiArMTcxLDEzIEBAIENhY2hlZFhCTERv
Y3VtZW50KiBEb2NMb2FkZXI6OnJlcXVlc3RYQkwKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKExJ
TktfUFJFRkVUQ0gpCitDYWNoZWRMaW5rUHJlZmV0Y2gqIERvY0xvYWRlcjo6cmVxdWVzdExpbmtQ
cmVmZXRjaChjb25zdCBTdHJpbmcmIHVybCkKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q2Fj
aGVkTGlua1ByZWZldGNoKj4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpMaW5rUHJl
ZmV0Y2gsIHVybCwgU3RyaW5nKCkpKTsKK30KKyNlbmRpZgorCiBib29sIERvY0xvYWRlcjo6Y2Fu
UmVxdWVzdChDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBLVVJMJiB1cmwpCiB7CiAg
ICAgLy8gU29tZSB0eXBlcyBvZiByZXNvdXJjZXMgY2FuIGJlIGxvYWRlZCBvbmx5IGZyb20gdGhl
IHNhbWUgb3JpZ2luLiAgT3RoZXIKQEAgLTE3OCw2ICsxODgsOSBAQCBib29sIERvY0xvYWRlcjo6
Y2FuUmVxdWVzdChDYWNoZWRSZXNvdXJjCiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6Q1NTU3R5
bGVTaGVldDoKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpTY3JpcHQ6CiAgICAgY2FzZSBDYWNo
ZWRSZXNvdXJjZTo6Rm9udFJlc291cmNlOgorI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQorICAg
IGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkxpbmtQcmVmZXRjaDoKKyNlbmRpZgogICAgICAgICAvLyBU
aGVzZSB0eXBlcyBvZiByZXNvdXJjZXMgY2FuIGJlIGxvYWRlZCBmcm9tIGFueSBvcmlnaW4uCiAg
ICAgICAgIC8vIEZJWE1FOiBBcmUgd2Ugc3VyZSBhYm91dCBDYWNoZWRSZXNvdXJjZTo6Rm9udFJl
c291cmNlPwogICAgICAgICBicmVhazsKQEAgLTIyMCw2ICsyMzMsOSBAQCBib29sIERvY0xvYWRl
cjo6Y2FuUmVxdWVzdChDYWNoZWRSZXNvdXJjCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ2Fj
aGVkUmVzb3VyY2U6OkltYWdlUmVzb3VyY2U6CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6Q1NT
U3R5bGVTaGVldDoKKyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKKyAgICBjYXNlIENhY2hlZFJl
c291cmNlOjpMaW5rUHJlZmV0Y2g6CisjZW5kaWYKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpG
b250UmVzb3VyY2U6IHsKICAgICAgICAgLy8gVGhlc2UgcmVzb3VyY2VzIGNhbiBjb3JydXB0IG9u
bHkgdGhlIGZyYW1lJ3MgcGl4ZWxzLgogICAgICAgICBpZiAoRnJhbWUqIGYgPSBmcmFtZSgpKSB7
CkBAIC0zNTUsMTMgKzM3MSwxOSBAQCB2b2lkIERvY0xvYWRlcjo6Y2hlY2tDYWNoZU9iamVjdFN0
YXR1cyhDCiAgICAgZnJhbWUoKS0+bG9hZGVyKCktPmxvYWRlZFJlc291cmNlRnJvbU1lbW9yeUNh
Y2hlKHJlc291cmNlKTsKIH0KIAotdm9pZCBEb2NMb2FkZXI6OmluY3JlbWVudFJlcXVlc3RDb3Vu
dCgpCit2b2lkIERvY0xvYWRlcjo6aW5jcmVtZW50UmVxdWVzdENvdW50KGNvbnN0IENhY2hlZFJl
c291cmNlKiByZXMpCiB7CisgICAgaWYgKHJlcy0+aXNQcmVmZXRjaCgpKQorICAgICAgICByZXR1
cm47CisKICAgICArK21fcmVxdWVzdENvdW50OwogfQogCi12b2lkIERvY0xvYWRlcjo6ZGVjcmVt
ZW50UmVxdWVzdENvdW50KCkKK3ZvaWQgRG9jTG9hZGVyOjpkZWNyZW1lbnRSZXF1ZXN0Q291bnQo
Y29uc3QgQ2FjaGVkUmVzb3VyY2UqIHJlcykKIHsKKyAgICBpZiAocmVzLT5pc1ByZWZldGNoKCkp
CisgICAgICAgIHJldHVybjsKKwogICAgIC0tbV9yZXF1ZXN0Q291bnQ7CiAgICAgQVNTRVJUKG1f
cmVxdWVzdENvdW50ID4gLTEpOwogfQpJbmRleDogV2ViQ29yZS9sb2FkZXIvRG9jTG9hZGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRG9jTG9hZGVyLmgJKHJldmlzaW9uIDYwNDc1
KQorKysgV2ViQ29yZS9sb2FkZXIvRG9jTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYg
KzQ1LDkgQEAgY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEltYWdlTG9hZGVy
OwogY2xhc3MgS1VSTDsKKyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKK2NsYXNzIENhY2hlZExp
bmtQcmVmZXRjaDsKKyNlbmRpZgogCiAvLyBUaGUgRG9jTG9hZGVyIG1hbmFnZXMgdGhlIGxvYWRp
bmcgb2Ygc2NyaXB0cy9pbWFnZXMvc3R5bGVzaGVldHMgZm9yIGEgc2luZ2xlIGRvY3VtZW50Lgog
Y2xhc3MgRG9jTG9hZGVyIDogcHVibGljIE5vbmNvcHlhYmxlIHsKQEAgLTY3LDYgKzcwLDkgQEAg
cHVibGljOgogI2lmIEVOQUJMRShYQkwpCiAgICAgQ2FjaGVkWEJMRG9jdW1lbnQqIHJlcXVlc3RY
QkxEb2N1bWVudChjb25zdCBTdHJpbmcgJnVybCk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoTElOS19Q
UkVGRVRDSCkKKyAgICBDYWNoZWRMaW5rUHJlZmV0Y2gqIHJlcXVlc3RMaW5rUHJlZmV0Y2goY29u
c3QgU3RyaW5nICZ1cmwpOworI2VuZGlmCiAKICAgICAvLyBMb2dzIGFuIGFjY2VzcyBkZW5pZWQg
bWVzc2FnZSB0byB0aGUgY29uc29sZSBmb3IgdGhlIHNwZWNpZmllZCBVUkwuCiAgICAgdm9pZCBw
cmludEFjY2Vzc0RlbmllZE1lc3NhZ2UoY29uc3QgS1VSTCYgdXJsKSBjb25zdDsKQEAgLTkxLDgg
Kzk3LDggQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgc2V0QWxsb3dTdGFsZVJlc291cmNlcyhi
b29sIGFsbG93U3RhbGVSZXNvdXJjZXMpIHsgbV9hbGxvd1N0YWxlUmVzb3VyY2VzID0gYWxsb3dT
dGFsZVJlc291cmNlczsgfQogCi0gICAgdm9pZCBpbmNyZW1lbnRSZXF1ZXN0Q291bnQoKTsKLSAg
ICB2b2lkIGRlY3JlbWVudFJlcXVlc3RDb3VudCgpOworICAgIHZvaWQgaW5jcmVtZW50UmVxdWVz
dENvdW50KGNvbnN0IENhY2hlZFJlc291cmNlKik7CisgICAgdm9pZCBkZWNyZW1lbnRSZXF1ZXN0
Q291bnQoY29uc3QgQ2FjaGVkUmVzb3VyY2UqKTsKICAgICBpbnQgcmVxdWVzdENvdW50KCk7CiAg
ICAgCiAgICAgdm9pZCBjbGVhclByZWxvYWRzKCk7CkluZGV4OiBXZWJDb3JlL2xvYWRlci9sb2Fk
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL2xvYWRlci5jcHAJKHJldmlzaW9u
IDYwNDc1KQorKysgV2ViQ29yZS9sb2FkZXIvbG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
ODksNyArODksMTIgQEAgc3RhdGljIFJlc291cmNlUmVxdWVzdDo6VGFyZ2V0VHlwZSBjYWNoZQog
ICAgICAgICByZXR1cm4gUmVzb3VyY2VSZXF1ZXN0OjpUYXJnZXRJc0ZvbnRSZXNvdXJjZTsKICAg
ICBjYXNlIENhY2hlZFJlc291cmNlOjpJbWFnZVJlc291cmNlOgogICAgICAgICByZXR1cm4gUmVz
b3VyY2VSZXF1ZXN0OjpUYXJnZXRJc0ltYWdlOworI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQor
ICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkxpbmtQcmVmZXRjaDoKKyAgICAgICAgcmV0dXJuIFJl
c291cmNlUmVxdWVzdDo6VGFyZ2V0SXNTdWJyZXNvdXJjZTsKKyNlbmRpZgogICAgIH0KKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gUmVzb3VyY2VSZXF1ZXN0OjpUYXJnZXRJ
c1N1YnJlc291cmNlOwogfQogCkBAIC0xMTAsNiArMTE1LDEwIEBAIExvYWRlcjo6UHJpb3JpdHkg
TG9hZGVyOjpkZXRlcm1pbmVQcmlvcmkKICAgICAgICAgICAgIHJldHVybiBNZWRpdW07CiAgICAg
ICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkltYWdlUmVzb3VyY2U6CiAgICAgICAgICAgICByZXR1
cm4gTG93OworI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQorICAgICAgICBjYXNlIENhY2hlZFJl
c291cmNlOjpMaW5rUHJlZmV0Y2g6CisgICAgICAgICAgICByZXR1cm4gVmVyeUxvdzsKKyNlbmRp
ZgogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gTG93OwpAQCAt
MTM5LDkgKzE0OCw5IEBAIHZvaWQgTG9hZGVyOjpsb2FkKERvY0xvYWRlciogZG9jTG9hZGVyLCAK
ICAgICBib29sIGhhZFJlcXVlc3RzID0gaG9zdC0+aGFzUmVxdWVzdHMoKTsKICAgICBQcmlvcml0
eSBwcmlvcml0eSA9IGRldGVybWluZVByaW9yaXR5KHJlc291cmNlKTsKICAgICBob3N0LT5hZGRS
ZXF1ZXN0KHJlcXVlc3QsIHByaW9yaXR5KTsKLSAgICBkb2NMb2FkZXItPmluY3JlbWVudFJlcXVl
c3RDb3VudCgpOworICAgIGRvY0xvYWRlci0+aW5jcmVtZW50UmVxdWVzdENvdW50KHJlcXVlc3Qt
PmNhY2hlZFJlc291cmNlKCkpOwogCi0gICAgaWYgKHByaW9yaXR5ID4gTG93IHx8ICF1cmwucHJv
dG9jb2xJbkhUVFBGYW1pbHkoKSB8fCAhaGFkUmVxdWVzdHMpIHsKKyAgICBpZiAocHJpb3JpdHkg
PiBMb3cgfHwgIXVybC5wcm90b2NvbEluSFRUUEZhbWlseSgpIHx8IChwcmlvcml0eSA9PSBMb3cg
JiYgIWhhZFJlcXVlc3RzKSkgewogICAgICAgICAvLyBUcnkgdG8gcmVxdWVzdCBpbXBvcnRhbnQg
cmVzb3VyY2VzIGltbWVkaWF0ZWx5CiAgICAgICAgIGhvc3QtPnNlcnZlUGVuZGluZ1JlcXVlc3Rz
KHByaW9yaXR5KTsKICAgICB9IGVsc2UgewpAQCAtMzYxLDYgKzM3MCwxMSBAQCB2b2lkIExvYWRl
cjo6SG9zdDo6c2VydmVQZW5kaW5nUmVxdWVzdHMoCiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
IAorI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQorICAgICAgICBpZiAocmVxdWVzdC0+Y2FjaGVk
UmVzb3VyY2UoKS0+dHlwZSgpID09IENhY2hlZFJlc291cmNlOjpMaW5rUHJlZmV0Y2gpCisgICAg
ICAgICAgICByZXNvdXJjZVJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKCJYLU1veiIsICJwcmVm
ZXRjaCIpOworI2VuZGlmCisKICAgICAgICAgUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBsb2Fk
ZXIgPSBTdWJyZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKGRvY0xvYWRlci0+ZG9jKCktPmZyYW1lKCks
CiAgICAgICAgICAgICB0aGlzLCByZXNvdXJjZVJlcXVlc3QsIHJlcXVlc3QtPnNob3VsZERvU2Vj
dXJpdHlDaGVjaygpLCByZXF1ZXN0LT5zZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCkpOwogICAg
ICAgICBpZiAobG9hZGVyKSB7CkBAIC0zNzAsNyArMzg0LDcgQEAgdm9pZCBMb2FkZXI6Okhvc3Q6
OnNlcnZlUGVuZGluZ1JlcXVlc3RzKAogICAgICAgICAgICAgcHJpbnRmKCJIT1NUICVzIENPVU5U
ICVkIExPQURJTkcgJXNcbiIsIHJlc291cmNlUmVxdWVzdC51cmwoKS5ob3N0KCkubGF0aW4xKCku
ZGF0YSgpLCBtX3JlcXVlc3RzTG9hZGluZy5zaXplKCksIHJlcXVlc3QtPmNhY2hlZFJlc291cmNl
KCktPnVybCgpLmxhdGluMSgpLmRhdGEoKSk7CiAjZW5kaWYKICAgICAgICAgfSBlbHNlIHsgICAg
ICAgICAgICAKLSAgICAgICAgICAgIGRvY0xvYWRlci0+ZGVjcmVtZW50UmVxdWVzdENvdW50KCk7
CisgICAgICAgICAgICBkb2NMb2FkZXItPmRlY3JlbWVudFJlcXVlc3RDb3VudChyZXF1ZXN0LT5j
YWNoZWRSZXNvdXJjZSgpKTsKICAgICAgICAgICAgIGRvY0xvYWRlci0+c2V0TG9hZEluUHJvZ3Jl
c3ModHJ1ZSk7CiAgICAgICAgICAgICByZXF1ZXN0LT5jYWNoZWRSZXNvdXJjZSgpLT5lcnJvcigp
OwogICAgICAgICAgICAgZG9jTG9hZGVyLT5zZXRMb2FkSW5Qcm9ncmVzcyhmYWxzZSk7CkBAIC0z
OTQsNyArNDA4LDcgQEAgdm9pZCBMb2FkZXI6Okhvc3Q6OmRpZEZpbmlzaExvYWRpbmcoU3Vicgog
ICAgIC8vIHRoZSBkb2NMb2FkZXIgdGhhdCBpdCB3aWxsIGRlbGV0ZSB3aGVuIHRoZSBkb2N1bWVu
dCBnZXRzIGRlbGV0ZWQuCiAgICAgUmVmUHRyPERvY3VtZW50PiBwcm90ZWN0b3IoZG9jTG9hZGVy
LT5kb2MoKSk7CiAgICAgaWYgKCFyZXF1ZXN0LT5pc011bHRpcGFydCgpKQotICAgICAgICBkb2NM
b2FkZXItPmRlY3JlbWVudFJlcXVlc3RDb3VudCgpOworICAgICAgICBkb2NMb2FkZXItPmRlY3Jl
bWVudFJlcXVlc3RDb3VudChyZXF1ZXN0LT5jYWNoZWRSZXNvdXJjZSgpKTsKIAogICAgIENhY2hl
ZFJlc291cmNlKiByZXNvdXJjZSA9IHJlcXVlc3QtPmNhY2hlZFJlc291cmNlKCk7CiAgICAgQVNT
RVJUKCFyZXNvdXJjZS0+cmVzb3VyY2VUb1JldmFsaWRhdGUoKSk7CkBAIC00NDIsNyArNDU2LDcg
QEAgdm9pZCBMb2FkZXI6Okhvc3Q6OmRpZEZhaWwoU3VicmVzb3VyY2VMbwogICAgIC8vIHRoZSBk
b2NMb2FkZXIgdGhhdCBpdCB3aWxsIGRlbGV0ZSB3aGVuIHRoZSBkb2N1bWVudCBnZXRzIGRlbGV0
ZWQuCiAgICAgUmVmUHRyPERvY3VtZW50PiBwcm90ZWN0b3IoZG9jTG9hZGVyLT5kb2MoKSk7CiAg
ICAgaWYgKCFyZXF1ZXN0LT5pc011bHRpcGFydCgpKQotICAgICAgICBkb2NMb2FkZXItPmRlY3Jl
bWVudFJlcXVlc3RDb3VudCgpOworICAgICAgICBkb2NMb2FkZXItPmRlY3JlbWVudFJlcXVlc3RD
b3VudChyZXF1ZXN0LT5jYWNoZWRSZXNvdXJjZSgpKTsKIAogICAgIENhY2hlZFJlc291cmNlKiBy
ZXNvdXJjZSA9IHJlcXVlc3QtPmNhY2hlZFJlc291cmNlKCk7CiAgICAgCkBAIC00ODcsNyArNTAx
LDcgQEAgdm9pZCBMb2FkZXI6Okhvc3Q6OmRpZFJlY2VpdmVSZXNwb25zZShTdQogICAgICAgICAg
ICAgLy8gMzA0IE5vdCBtb2RpZmllZCAvIFVzZSBsb2NhbCBjb3B5CiAgICAgICAgICAgICBtX3Jl
cXVlc3RzTG9hZGluZy5yZW1vdmUobG9hZGVyKTsKICAgICAgICAgICAgIGxvYWRlci0+Y2xlYXJD
bGllbnQoKTsKLSAgICAgICAgICAgIHJlcXVlc3QtPmRvY0xvYWRlcigpLT5kZWNyZW1lbnRSZXF1
ZXN0Q291bnQoKTsKKyAgICAgICAgICAgIHJlcXVlc3QtPmRvY0xvYWRlcigpLT5kZWNyZW1lbnRS
ZXF1ZXN0Q291bnQocmVxdWVzdC0+Y2FjaGVkUmVzb3VyY2UoKSk7CiAKICAgICAgICAgICAgIC8v
IEV4aXN0aW5nIHJlc291cmNlIGlzIG9rLCBqdXN0IHVzZSBpdCB1cGRhdGluZyB0aGUgZXhwaXJh
dGlvbiB0aW1lLgogICAgICAgICAgICAgY2FjaGUoKS0+cmV2YWxpZGF0aW9uU3VjY2VlZGVkKHJl
c291cmNlLCByZXNwb25zZSk7CkBAIC01MTksNyArNTMzLDcgQEAgdm9pZCBMb2FkZXI6Okhvc3Q6
OmRpZFJlY2VpdmVSZXNwb25zZShTdQogICAgICAgICByZXF1ZXN0LT5zZXRJc011bHRpcGFydCh0
cnVlKTsKICAgICAgICAgCiAgICAgICAgIC8vIFdlIGRvbid0IGNvdW50IG11bHRpUGFydHMgaW4g
YSBEb2NMb2FkZXIncyByZXF1ZXN0IGNvdW50Ci0gICAgICAgIHJlcXVlc3QtPmRvY0xvYWRlcigp
LT5kZWNyZW1lbnRSZXF1ZXN0Q291bnQoKTsKKyAgICAgICAgcmVxdWVzdC0+ZG9jTG9hZGVyKCkt
PmRlY3JlbWVudFJlcXVlc3RDb3VudChyZXF1ZXN0LT5jYWNoZWRSZXNvdXJjZSgpKTsKIAogICAg
ICAgICAvLyBJZiB3ZSBnZXQgYSBtdWx0aXBhcnQgcmVzcG9uc2UsIHdlIG11c3QgaGF2ZSBhIGhh
bmRsZQogICAgICAgICBBU1NFUlQobG9hZGVyLT5oYW5kbGUoKSk7CkBAIC01ODIsNyArNTk2LDcg
QEAgdm9pZCBMb2FkZXI6Okhvc3Q6OmNhbmNlbFBlbmRpbmdSZXF1ZXN0cwogICAgICAgICBpZiAo
cmVxdWVzdC0+ZG9jTG9hZGVyKCkgPT0gZG9jTG9hZGVyKSB7CiAgICAgICAgICAgICBjYWNoZSgp
LT5yZW1vdmUocmVxdWVzdC0+Y2FjaGVkUmVzb3VyY2UoKSk7CiAgICAgICAgICAgICBkZWxldGUg
cmVxdWVzdDsKLSAgICAgICAgICAgIGRvY0xvYWRlci0+ZGVjcmVtZW50UmVxdWVzdENvdW50KCk7
CisgICAgICAgICAgICBkb2NMb2FkZXItPmRlY3JlbWVudFJlcXVlc3RDb3VudChyZXF1ZXN0LT5j
YWNoZWRSZXNvdXJjZSgpKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICByZW1haW5pbmcu
YXBwZW5kKHJlcXVlc3QpOwogICAgIH0KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL2xvYWRlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL2xvYWRlci5oCShyZXZpc2lvbiA2MDQ3NSkKKysr
IFdlYkNvcmUvbG9hZGVyL2xvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw4ICs0OCw4IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIGNhbmNlbFJlcXVlc3RzKERvY0xv
YWRlciopOwogICAgICAgICAKLSAgICAgICAgZW51bSBQcmlvcml0eSB7IExvdywgTWVkaXVtLCBI
aWdoIH07Ci0gICAgICAgIHZvaWQgc2VydmVQZW5kaW5nUmVxdWVzdHMoUHJpb3JpdHkgbWluaW11
bVByaW9yaXR5ID0gTG93KTsKKyAgICAgICAgZW51bSBQcmlvcml0eSB7IFZlcnlMb3csIExvdywg
TWVkaXVtLCBIaWdoIH07CisgICAgICAgIHZvaWQgc2VydmVQZW5kaW5nUmVxdWVzdHMoUHJpb3Jp
dHkgbWluaW11bVByaW9yaXR5ID0gVmVyeUxvdyk7CiAKICAgICAgICAgYm9vbCBpc1N1c3BlbmRp
bmdQZW5kaW5nUmVxdWVzdHMoKSB7IHJldHVybiBtX2lzU3VzcGVuZGluZ1BlbmRpbmdSZXF1ZXN0
czsgfQogICAgICAgICB2b2lkIHN1c3BlbmRQZW5kaW5nUmVxdWVzdHMoKTsKQEAgLTc2LDcgKzc2
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgdm9pZCBhZGRSZXF1ZXN0KFJl
cXVlc3QqLCBQcmlvcml0eSk7CiAgICAgICAgICAgICB2b2lkIG5vbkNhY2hlUmVxdWVzdEluRmxp
Z2h0KCk7CiAgICAgICAgICAgICB2b2lkIG5vbkNhY2hlUmVxdWVzdENvbXBsZXRlKCk7Ci0gICAg
ICAgICAgICB2b2lkIHNlcnZlUGVuZGluZ1JlcXVlc3RzKFByaW9yaXR5IG1pbmltdW1Qcmlvcml0
eSA9IExvdyk7CisgICAgICAgICAgICB2b2lkIHNlcnZlUGVuZGluZ1JlcXVlc3RzKFByaW9yaXR5
IG1pbmltdW1Qcmlvcml0eSA9IFZlcnlMb3cpOwogICAgICAgICAgICAgdm9pZCBjYW5jZWxSZXF1
ZXN0cyhEb2NMb2FkZXIqKTsKICAgICAgICAgICAgIGJvb2wgaGFzUmVxdWVzdHMoKSBjb25zdDsK
IApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkocmV2aXNpb24gNjA0NzUpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAxMC0wNi0wMSAgTGVvbiBDbGFya2UgIDxs
ZW9uY2xhcmtlQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIGEgbGF5b3V0IHRlc3QgZm9yIGxpbmsgcmVsPXByZWZldGNoLiBJ
dCdzIGRpc2FibGVkIHNpbmNlIHRoZSBmZWF0dXJlIGlzCisgICAgICAgIGRpc2FibGVkIGJ5IGRl
ZmF1bHQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
NjUyCisKKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0Y2gtb25sb2Fk
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTExpbmtFbGVtZW50
L3ByZWZldGNoLW9ubG9hZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MTGlu
a0VsZW1lbnQvcHJlZmV0Y2gubGluazogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Nr
aXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZv
cm0vcXQvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2tpcHBlZDoKKwogMjAxMC0w
Ni0wMSAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgWGFuIExvcGV6LgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExp
bmtFbGVtZW50L3ByZWZldGNoLW9ubG9hZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLW9ubG9hZC1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1l
bnQvcHJlZmV0Y2gtb25sb2FkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2
IEBACitUaGlzIHRlc3RzIHRoYXQgb25sb2FkIGV2ZW50cyBjYW4gYmUgYXR0YWNoZWQgdG8gbGlu
ayBlbGVtZW50cyB3aXRoIHJlbD1wcmVmZXRjaC4gU2luY2UgcHJlZmV0Y2ggbGlua3MgYXJlIGp1
c3QgdGhlcmUgYXMgYSBwZXJmb3JtYW5jZSBvcHRpbWlzYXRpb24sIHRoZSBvbmxvYWQgZXZlbnQg
aXMgdGhlaXIgb25seSBwcm9ncmFtYXRpYyBzaWRlLWVmZmVjdC4KKworSWYgaXQgd29ya3MgeW91
IHNob3VsZCBzZWUgYSBtZXNzYWdlIGJlbG93IHNheWluZyB0aGUgdGVzdCBoYXMgcGFzc2VkLgor
CitURVNUIFBBU1NFRC4gVGhlIHN0eWxlc2hlZXQgbGluayBvbmxvYWQgaGFuZGxlciBoYXMgZmly
ZWQKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNo
LW9ubG9hZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5r
RWxlbWVudC9wcmVmZXRjaC1vbmxvYWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC1vbmxvYWQuaHRtbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwzMiBAQAorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzY3JpcHQg
dHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICAgICAgICAgIGZ1bmN0aW9uIGxvZyhtZXNzYWdl
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhciBpdGVtID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgibGkiKTsKKyAgICAgICAgICAgICAgICBpdGVtLmFwcGVuZENoaWxkKGRvY3Vt
ZW50LmNyZWF0ZVRleHROb2RlKG1lc3NhZ2UpKTsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmFwcGVuZENoaWxkKGl0ZW0pOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgZnVuY3Rpb24gZG9uZSgpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgbG9nKCJURVNUIFBBU1NFRC4gVGhlIHN0eWxlc2hlZXQgbGluayBvbmxvYWQgaGFuZGxl
ciBoYXMgZmlyZWQiKTsKKyAgICAgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7CisgICAgICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlm
eURvbmUoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICAgICAgfQorCisJPC9zY3JpcHQ+
CisgICAgPC9oZWFkPgorICAgIDxib2R5PgorICAgICAgICA8cD5UaGlzIHRlc3RzIHRoYXQgb25s
b2FkIGV2ZW50cyBjYW4gYmUgYXR0YWNoZWQgdG8gbGluayBlbGVtZW50cyB3aXRoIHJlbD1wcmVm
ZXRjaC4gU2luY2UgcHJlZmV0Y2ggbGlua3MgYXJlIGp1c3QgdGhlcmUgYXMgYSBwZXJmb3JtYW5j
ZSBvcHRpbWlzYXRpb24sIHRoZSBvbmxvYWQgZXZlbnQgaXMgdGhlaXIgb25seSBwcm9ncmFtYXRp
YyBzaWRlLWVmZmVjdC48L3A+CisgICAgICAgIDxwPklmIGl0IHdvcmtzIHlvdSBzaG91bGQgc2Vl
IGEgbWVzc2FnZSBiZWxvdyBzYXlpbmcgdGhlIHRlc3QgaGFzIHBhc3NlZC48L3A+CisgICAgICAg
IDxsaW5rIGhyZWY9InByZWZldGNoLmxpbmsiIHJlbD0icHJlZmV0Y2giIG9ubG9hZD0iZG9uZSgp
IiA+CisgICAgICAgIDxocj4KKyAgICAgICAgPHA+PG9sIGlkPSJjb25zb2xlIj48L29sPjwvcD4K
KyAgICA8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlu
a0VsZW1lbnQvcHJlZmV0Y2gubGluawo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0Y2gubGluawkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC5saW5rCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxIEBACitUaGlzIGlzIHRoZSBsaW5rIHRoYXQgaXMgZmV0Y2hlZCBieSB0aGUgcHJl
ZmV0Y2gtb25sb2FkIHRlc3QKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVk
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCShyZXZpc2lv
biA2MDQ3NSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCSh3b3JraW5nIGNv
cHkpCkBAIC01OTM4LDMgKzU5MzgsNiBAQCBzdG9yYWdlL2luZGV4ZWRkYgogZmFzdC9kb20vR2Vv
bG9jYXRpb24vYXJndW1lbnQtdHlwZXMuaHRtbAogZmFzdC9kb20vR2VvbG9jYXRpb24vbm90aW1l
ci1hZnRlci11bmxvYWQuaHRtbAogZmFzdC9kb20vR2VvbG9jYXRpb24vdGltZW91dC16ZXJvLmh0
bWwKKworIyBMaW5rIHByZWZldGNoIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQKK2Zhc3QvZG9tL0hU
TUxMaW5rRWxlbWVudC9wcmVmZXRjaC1vbmxvYWQuaHRtbApJbmRleDogTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL1NraXBwZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L1NraXBwZWQJKHJldmlzaW9uIDYwNDc1KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Nr
aXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTMwMSwzICszMDEsNiBAQCBzdG9yYWdlL2luZGV4ZWRk
YgogIyBUaGlzIHBvcnQgZG9lc24ndCBzdXBwb3J0IERldmljZU9yaWVudGF0aW9uLgogZmFzdC9k
b20vRGV2aWNlT3JpZW50YXRpb24KIGZhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1v
bi1kZXZpY2Utb3JpZW50YXRpb24uaHRtbAorCisjIExpbmsgcHJlZmV0Y2ggaXMgZGlzYWJsZWQg
YnkgZGVmYXVsdAorZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLW9ubG9hZC5odG1s
CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQJKHJldmlzaW9uIDYwNDc1KQorKysgTGF5b3V0
VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAtNTIzOSwzICs1MjM5
LDYgQEAgbWVkaWEvYXVkaW8tb25seS12aWRlby1pbnRyaW5zaWMtc2l6ZS5odAogIyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk4NTIKIGZhc3QvZW5jb2RpbmcveWVu
dGVzdC5odG1sCiBmYXN0L2VuY29kaW5nL3llbnRlc3QyLmh0bWwKKworIyBMaW5rIHByZWZldGNo
IGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQKK2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRj
aC1vbmxvYWQuaHRtbApJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQJKHJldmlzaW9uIDYw
NDc1KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQJKHdvcmtpbmcgY29weSkK
QEAgLTg4NywzICs4ODcsNiBAQCBzdG9yYWdlL2luZGV4ZWRkYgogIyBUaGlzIHBvcnQgZG9lc24n
dCBzdXBwb3J0IERldmljZU9yaWVudGF0aW9uLgogZmFzdC9kb20vRGV2aWNlT3JpZW50YXRpb24K
IGZhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1vbi1kZXZpY2Utb3JpZW50YXRpb24u
aHRtbAorCisjIExpbmsgcHJlZmV0Y2ggaXMgZGlzYWJsZWQgYnkgZGVmYXVsdAorZmFzdC9kb20v
SFRNTExpbmtFbGVtZW50L3ByZWZldGNoLW9ubG9hZC5odG1sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57543</attachid>
            <date>2010-06-01 07:43:35 -0700</date>
            <delta_ts>2010-06-14 08:29:31 -0700</delta_ts>
            <desc>Fix silly merge error in previous patch</desc>
            <filename>prefetch3.patch</filename>
            <type>text/plain</type>
            <size>25373</size>
            <attacher name="Leon Clarke">leonclarke</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MDQ3NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTAgQEAKKzIwMTAtMDYtMDEgIExlb24gQ2xhcmtlICA8bGVvbmNsYXJrZUBnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBzdXBwb3J0IGZvciBsaW5rIHJlbD1wcmVmZXRjaAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY1MgorCisgICAgICAgIFRlc3Q6IGZhc3QvZG9t
L0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC1vbmxvYWQuaHRtbAorCisgICAgICAgICogaHRtbC9I
VE1MTGlua0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50Ojpw
YXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6
OnRva2VuaXplUmVsQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVu
dDo6cHJvY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6Om5vdGlmeUZp
bmlzaGVkKToKKyAgICAgICAgKiBodG1sL0hUTUxMaW5rRWxlbWVudC5oOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTExpbmtFbGVtZW50OjpSZWxBdHRyaWJ1dGU6OlJlbEF0dHJpYnV0ZSk6CisgICAg
ICAgICogbG9hZGVyL0NhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVJlc291cmNl
KToKKyAgICAgICAgKiBsb2FkZXIvQ2FjaGVkTGlua1ByZWZldGNoLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkTGlua1ByZWZldGNoOjpDYWNoZWRMaW5rUHJlZmV0Y2gpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkTGlua1ByZWZldGNoOjp+Q2FjaGVkTGlua1ByZWZldGNoKToK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZExpbmtQcmVmZXRjaDo6ZGlkQWRkQ2xpZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZExpbmtQcmVmZXRjaDo6ZGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRMaW5rUHJlZmV0Y2g6OmVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZExpbmtQcmVmZXRjaDo6c2NoZWR1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkTGlua1By
ZWZldGNoOjppc1ByZWZldGNoKToKKyAgICAgICAgKiBsb2FkZXIvQ2FjaGVkUmVzb3VyY2UuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjopOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkUmVzb3VyY2U6OmlzUHJlZmV0Y2gpOgorICAgICAgICAqIGxvYWRlci9Eb2NMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jTG9hZGVyOjpyZXF1ZXN0TGlua1ByZWZldGNoKToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY0xvYWRlcjo6Y2FuUmVxdWVzdCk6CisgICAgICAgIChXZWJD
b3JlOjpEb2NMb2FkZXI6OmluY3JlbWVudFJlcXVlc3RDb3VudCk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2NMb2FkZXI6OmRlY3JlbWVudFJlcXVlc3RDb3VudCk6CisgICAgICAgICogbG9hZGVyL0Rv
Y0xvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9sb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y2FjaGVkUmVzb3VyY2VUeXBlVG9UYXJnZXRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Okxv
YWRlcjo6ZGV0ZXJtaW5lUHJpb3JpdHkpOgorICAgICAgICAoV2ViQ29yZTo6TG9hZGVyOjpsb2Fk
KToKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRlcjo6SG9zdDo6c2VydmVQZW5kaW5nUmVxdWVzdHMp
OgorICAgICAgICAoV2ViQ29yZTo6TG9hZGVyOjpIb3N0OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxvYWRlcjo6SG9zdDo6ZGlkRmFpbCk6CisgICAgICAgIChXZWJDb3Jl
OjpMb2FkZXI6Okhvc3Q6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpM
b2FkZXI6Okhvc3Q6OmNhbmNlbFBlbmRpbmdSZXF1ZXN0cyk6CisgICAgICAgICogbG9hZGVyL2xv
YWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6TG9hZGVyOjopOgorCiAyMDEwLTA2LTAxICBKb2Nl
bHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBub2tpYS5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAko
cmV2aXNpb24gNjA0NzUpCisrKyBXZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDEsNiArNDEsOSBAQAogI2luY2x1ZGUgIlNjcmlwdEV2ZW50TGlzdGVu
ZXIuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMu
aD4KKyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKKyNpbmNsdWRlICJDYWNoZWRMaW5rUHJlZmV0
Y2guaCIKKyNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEzMCw2ICsxMzMsOCBA
QCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1CiAgICAgICAgIHNldERp
c2FibGVkU3RhdGUoIWF0dHItPmlzTnVsbCgpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkg
PT0gb25iZWZvcmVsb2FkQXR0cikKICAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihl
dmVudE5hbWVzKCkuYmVmb3JlbG9hZEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVy
KHRoaXMsIGF0dHIpKTsKKyAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gb25sb2FkQXR0cikK
KyAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkubG9hZEV2ZW50
LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHIpKTsKICAgICBlbHNlIHsK
ICAgICAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSB0aXRsZUF0dHIgJiYgbV9zaGVldCkKICAgICAg
ICAgICAgIG1fc2hlZXQtPnNldFRpdGxlKGF0dHItPnZhbHVlKCkpOwpAQCAtMTQzLDEyICsxNDgs
MTkgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnRva2VuaXplUmVsQXR0cmlidQogICAgIHJlbEF0
dHJpYnV0ZS5tX2lzSWNvbiA9IGZhbHNlOwogICAgIHJlbEF0dHJpYnV0ZS5tX2lzQWx0ZXJuYXRl
ID0gZmFsc2U7CiAgICAgcmVsQXR0cmlidXRlLm1faXNETlNQcmVmZXRjaCA9IGZhbHNlOworI2lm
IEVOQUJMRShMSU5LX1BSRUZFVENIKQorICAgIHJlbEF0dHJpYnV0ZS5tX2lzTGlua1ByZWZldGNo
ID0gZmFsc2U7CisjZW5kaWYKICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UocmVsLCAic3R5bGVz
aGVldCIpKQogICAgICAgICByZWxBdHRyaWJ1dGUubV9pc1N0eWxlU2hlZXQgPSB0cnVlOwogICAg
IGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHJlbCwgImljb24iKSB8fCBlcXVhbElnbm9yaW5n
Q2FzZShyZWwsICJzaG9ydGN1dCBpY29uIikpCiAgICAgICAgIHJlbEF0dHJpYnV0ZS5tX2lzSWNv
biA9IHRydWU7CiAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UocmVsLCAiZG5zLXByZWZl
dGNoIikpCiAgICAgICAgIHJlbEF0dHJpYnV0ZS5tX2lzRE5TUHJlZmV0Y2ggPSB0cnVlOworI2lm
IEVOQUJMRShMSU5LX1BSRUZFVENIKQorICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHJl
bCwgInByZWZldGNoIikpCisgICAgICAgIHJlbEF0dHJpYnV0ZS5tX2lzTGlua1ByZWZldGNoID0g
dHJ1ZTsKKyNlbmRpZgogICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHJlbCwgImFsdGVy
bmF0ZSBzdHlsZXNoZWV0IikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UocmVsLCAic3R5bGVzaGVldCBh
bHRlcm5hdGUiKSkgewogICAgICAgICByZWxBdHRyaWJ1dGUubV9pc1N0eWxlU2hlZXQgPSB0cnVl
OwogICAgICAgICByZWxBdHRyaWJ1dGUubV9pc0FsdGVybmF0ZSA9IHRydWU7CkBAIC0xODUsNiAr
MTk3LDE2IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50Ojpwcm9jZXNzKCkKICAgICBpZiAobV9yZWxB
dHRyaWJ1dGUubV9pc0ROU1ByZWZldGNoICYmIG1fdXJsLmlzVmFsaWQoKSAmJiAhbV91cmwuaXNF
bXB0eSgpKQogICAgICAgICBSZXNvdXJjZUhhbmRsZTo6cHJlcGFyZUZvclVSTChtX3VybCk7CiAK
KyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKKyAgICBpZiAobV9yZWxBdHRyaWJ1dGUubV9pc0xp
bmtQcmVmZXRjaCAmJiBtX3VybC5pc1ZhbGlkKCkpIHsKKyAgICAgICAgbV9jYWNoZWRMaW5rUHJl
ZmV0Y2ggPSBkb2N1bWVudCgpLT5kb2NMb2FkZXIoKS0+cmVxdWVzdExpbmtQcmVmZXRjaChtX3Vy
bCk7CisgICAgICAgIG1fbG9hZGluZyA9IHRydWU7CisKKyAgICAgICAgaWYgKG1fY2FjaGVkTGlu
a1ByZWZldGNoKQorICAgICAgICAgICAgbV9jYWNoZWRMaW5rUHJlZmV0Y2gtPmFkZENsaWVudCh0
aGlzKTsKKyAgICB9CisjZW5kaWYKKwogICAgIGJvb2wgYWNjZXB0SWZUeXBlQ29udGFpbnNUZXh0
Q1NTID0gZG9jdW1lbnQoKS0+cGFnZSgpICYmIGRvY3VtZW50KCktPnBhZ2UoKS0+c2V0dGluZ3Mo
KSAmJiBkb2N1bWVudCgpLT5wYWdlKCktPnNldHRpbmdzKCktPnRyZWF0c0FueVRleHRDU1NMaW5r
QXNTdHlsZXNoZWV0KCk7CiAKICAgICAvLyBTdHlsZXNoZWV0CkBAIC0zMjMsNiArMzQ1LDExIEBA
IGJvb2wgSFRNTExpbmtFbGVtZW50Ojppc0xvYWRpbmcoKSBjb25zdAogICAgIHJldHVybiBzdGF0
aWNfY2FzdDxDU1NTdHlsZVNoZWV0ICo+KG1fc2hlZXQuZ2V0KCkpLT5pc0xvYWRpbmcoKTsKIH0K
IAordm9pZCBIVE1MTGlua0VsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKikK
K3sKKyAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmxvYWRFdmVu
dCwgZmFsc2UsIGZhbHNlKSk7Cit9CisKIGJvb2wgSFRNTExpbmtFbGVtZW50OjpzaGVldExvYWRl
ZCgpCiB7CiAgICAgaWYgKCFpc0xvYWRpbmcoKSAmJiAhaXNEaXNhYmxlZCgpICYmICFpc0FsdGVy
bmF0ZSgpKSB7CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCShyZXZpc2lvbiA2MDQ3NSkKKysr
IFdlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiAr
MzEsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNoZWRDU1NTdHlsZVNoZWV0
OworY2xhc3MgQ2FjaGVkTGlua1ByZWZldGNoOwogY2xhc3MgS1VSTDsKIAogY2xhc3MgSFRNTExp
bmtFbGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50LCBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGll
bnQgewpAQCAtNDAsOCArNDEsMTUgQEAgcHVibGljOgogICAgICAgICBib29sIG1faXNJY29uOwog
ICAgICAgICBib29sIG1faXNBbHRlcm5hdGU7CiAgICAgICAgIGJvb2wgbV9pc0ROU1ByZWZldGNo
OworI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQorICAgICAgICBib29sIG1faXNMaW5rUHJlZmV0
Y2g7CisjZW5kaWYKIAotICAgICAgICBSZWxBdHRyaWJ1dGUoKSA6IG1faXNTdHlsZVNoZWV0KGZh
bHNlKSwgbV9pc0ljb24oZmFsc2UpLCBtX2lzQWx0ZXJuYXRlKGZhbHNlKSwgbV9pc0ROU1ByZWZl
dGNoKGZhbHNlKSB7IH0KKyAgICAgICAgUmVsQXR0cmlidXRlKCkgOiBtX2lzU3R5bGVTaGVldChm
YWxzZSksIG1faXNJY29uKGZhbHNlKSwgbV9pc0FsdGVybmF0ZShmYWxzZSksIG1faXNETlNQcmVm
ZXRjaChmYWxzZSkKKyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKKyAgICAgICAgICAgICwgbV9p
c0xpbmtQcmVmZXRjaChmYWxzZSkKKyNlbmRpZgorICAgICAgICAgICAgeyB9OwogICAgIH07CiAK
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MTGlua0VsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiwgRG9jdW1lbnQqLCBib29sIGNyZWF0ZWRCeVBhcnNlcik7CkBAIC05NSw2ICsx
MDMsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gZnJvbSBDYWNoZWRSZXNvdXJjZUNsaWVudAogICAg
IHZpcnR1YWwgdm9pZCBzZXRDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3Qg
S1VSTCYgYmFzZVVSTCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBjb25zdCBDYWNoZWRDU1NTdHls
ZVNoZWV0KiBzaGVldCk7CisgICAgdmlydHVhbCB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJl
c291cmNlKik7CiAgICAgdmlydHVhbCBib29sIHNoZWV0TG9hZGVkKCk7CiAKICAgICBib29sIGlz
QWx0ZXJuYXRlKCkgY29uc3QgeyByZXR1cm4gbV9kaXNhYmxlZFN0YXRlID09IFVuc2V0ICYmIG1f
cmVsQXR0cmlidXRlLm1faXNBbHRlcm5hdGU7IH0KQEAgLTEyMiw2ICsxMzEsOSBAQCBwcml2YXRl
OgogCiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkQ1NTU3R5bGVTaGVldD4gbV9jYWNo
ZWRTaGVldDsKICAgICBSZWZQdHI8Q1NTU3R5bGVTaGVldD4gbV9zaGVldDsKKyNpZiBFTkFCTEUo
TElOS19QUkVGRVRDSCkKKyAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRMaW5rUHJlZmV0
Y2g+IG1fY2FjaGVkTGlua1ByZWZldGNoOworI2VuZGlmCiAgICAgS1VSTCBtX3VybDsKICAgICBT
dHJpbmcgbV90eXBlOwogICAgIFN0cmluZyBtX21lZGlhOwpJbmRleDogV2ViQ29yZS9sb2FkZXIv
Q2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0NhY2hlLmNwcAkocmV2aXNp
b24gNjA0NzUpCisrKyBXZWJDb3JlL2xvYWRlci9DYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM4LDYgKzM4LDkgQEAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgPHN0
ZGlvLmg+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisjaWYgRU5BQkxFKExJTktfUFJF
RkVUQ0gpCisjaW5jbHVkZSAiQ2FjaGVkTGlua1ByZWZldGNoLmgiCisjZW5kaWYKIAogdXNpbmcg
bmFtZXNwYWNlIHN0ZDsKIApAQCAtODYsNiArODksMTAgQEAgc3RhdGljIENhY2hlZFJlc291cmNl
KiBjcmVhdGVSZXNvdXJjZShDYQogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlhCTFN0eWxlU2hl
ZXQ6CiAgICAgICAgIHJldHVybiBuZXcgQ2FjaGVkWEJMRG9jdW1lbnQodXJsLnN0cmluZygpKTsK
ICNlbmRpZgorI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQorICAgIGNhc2UgQ2FjaGVkUmVzb3Vy
Y2U6OkxpbmtQcmVmZXRjaDoKKyAgICAgICAgcmV0dXJuIG5ldyBDYWNoZWRMaW5rUHJlZmV0Y2go
dXJsLnN0cmluZygpKTsKKyNlbmRpZgogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAg
IH0KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0NhY2hlZExpbmtQcmVmZXRjaC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvbG9hZGVyL0NhY2hlZExpbmtQcmVmZXRjaC5oCShyZXZpc2lvbiAwKQorKysg
V2ViQ29yZS9sb2FkZXIvQ2FjaGVkTGlua1ByZWZldGNoLmgJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxMCwgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2Ug
UHJvamVjdAorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVCBPV05FUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCisqLworCisjaWZuZGVmIENhY2hlZExpbmtQcmVmZXRjaF9oCisjZGVmaW5lIENh
Y2hlZExpbmtQcmVmZXRjaF9oCisKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZS5oIgorI2luY2x1
ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGll
bnRXYWxrZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERvY0xvYWRlcjsKKwor
Y2xhc3MgQ2FjaGVkTGlua1ByZWZldGNoIDogcHVibGljIENhY2hlZFJlc291cmNlIHsKK3B1Ymxp
YzoKKyAgICBDYWNoZWRMaW5rUHJlZmV0Y2goY29uc3QgU3RyaW5nJiBVUkwpIDogQ2FjaGVkUmVz
b3VyY2UoVVJMLCBMaW5rUHJlZmV0Y2gpIHsgfTsKKyAgICB2aXJ0dWFsIH5DYWNoZWRMaW5rUHJl
ZmV0Y2goKSB7IH07CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291
cmNlQ2xpZW50KiBjKQorICAgIHsKKyAgICAgICAgaWYgKCFpc0xvYWRpbmcoKSkKKyAgICAgICAg
ICAgIGMtPm5vdGlmeUZpbmlzaGVkKHRoaXMpOworICAgIH07CisKKyAgICB2aXJ0dWFsIHZvaWQg
ZGF0YShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQp
CisgICAgeworICAgICAgICBpZiAoIWFsbERhdGFSZWNlaXZlZCkKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICBtX2RhdGEgPSBkYXRhOworCisgICAgICAgIENhY2hlZFJlc291cmNlQ2xp
ZW50V2Fsa2VyIHcobV9jbGllbnRzKTsKKyAgICAgICAgd2hpbGUgKENhY2hlZFJlc291cmNlQ2xp
ZW50KiBjID0gdy5uZXh0KCkpCisgICAgICAgICAgICBjLT5ub3RpZnlGaW5pc2hlZCh0aGlzKTsK
KyAgICB9OworICAgIHZpcnR1YWwgdm9pZCBlcnJvcigpIHsgfTsKKworICAgIHZpcnR1YWwgYm9v
bCBzY2hlZHVsZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKworICAgIHZpcnR1YWwgYm9vbCBp
c1ByZWZldGNoKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorfTsKK30KKworI2VuZGlmCkluZGV4
OiBXZWJDb3JlL2xvYWRlci9DYWNoZWRSZXNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
bG9hZGVyL0NhY2hlZFJlc291cmNlLmgJKHJldmlzaW9uIDYwNDc1KQorKysgV2ViQ29yZS9sb2Fk
ZXIvQ2FjaGVkUmVzb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNjQsNiArNjQsOSBAQCBwdWJs
aWM6CiAjaWYgRU5BQkxFKFhCTCkKICAgICAgICAgLCBYQkwKICNlbmRpZgorI2lmIEVOQUJMRShM
SU5LX1BSRUZFVENIKQorICAgICAgICAsIExpbmtQcmVmZXRjaAorI2VuZGlmCiAgICAgfTsKIAog
ICAgIGVudW0gU3RhdHVzIHsKQEAgLTEyMiw2ICsxMjUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRMb2FkaW5nKGJvb2wgYikgeyBtX2xvYWRpbmcgPSBiOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wg
aXNJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzUHJl
ZmV0Y2goKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdW5zaWduZWQgYWNjZXNzQ291
bnQoKSBjb25zdCB7IHJldHVybiBtX2FjY2Vzc0NvdW50OyB9CiAgICAgdm9pZCBpbmNyZWFzZUFj
Y2Vzc0NvdW50KCkgeyBtX2FjY2Vzc0NvdW50Kys7IH0KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0Rv
Y0xvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRG9jTG9hZGVyLmNwcAko
cmV2aXNpb24gNjA0NzUpCisrKyBXZWJDb3JlL2xvYWRlci9Eb2NMb2FkZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00Myw2ICs0Myw5IEBACiAjaW5jbHVkZSAibG9hZGVyLmgiCiAjaW5jbHVkZSAi
U2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2lmIEVOQUJMRShMSU5L
X1BSRUZFVENIKQorI2luY2x1ZGUgIkNhY2hlZExpbmtQcmVmZXRjaC5oIgorI2VuZGlmCiAjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAjZGVmaW5lIFBSRUxPQURfREVCVUcgMApAQCAt
MTY4LDYgKzE3MSwxMyBAQCBDYWNoZWRYQkxEb2N1bWVudCogRG9jTG9hZGVyOjpyZXF1ZXN0WEJM
CiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQorQ2FjaGVkTGlua1ByZWZl
dGNoKiBEb2NMb2FkZXI6OnJlcXVlc3RMaW5rUHJlZmV0Y2goY29uc3QgU3RyaW5nJiB1cmwpCit7
CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENhY2hlZExpbmtQcmVmZXRjaCo+KHJlcXVlc3RSZXNv
dXJjZShDYWNoZWRSZXNvdXJjZTo6TGlua1ByZWZldGNoLCB1cmwsIFN0cmluZygpKSk7Cit9Cisj
ZW5kaWYKKwogYm9vbCBEb2NMb2FkZXI6OmNhblJlcXVlc3QoQ2FjaGVkUmVzb3VyY2U6OlR5cGUg
dHlwZSwgY29uc3QgS1VSTCYgdXJsKQogewogICAgIC8vIFNvbWUgdHlwZXMgb2YgcmVzb3VyY2Vz
IGNhbiBiZSBsb2FkZWQgb25seSBmcm9tIHRoZSBzYW1lIG9yaWdpbi4gIE90aGVyCkBAIC0xNzgs
NiArMTg4LDkgQEAgYm9vbCBEb2NMb2FkZXI6OmNhblJlcXVlc3QoQ2FjaGVkUmVzb3VyYwogICAg
IGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkNTU1N0eWxlU2hlZXQ6CiAgICAgY2FzZSBDYWNoZWRSZXNv
dXJjZTo6U2NyaXB0OgogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkZvbnRSZXNvdXJjZToKKyNp
ZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKKyAgICBjYXNlIENhY2hlZFJlc291cmNlOjpMaW5rUHJl
ZmV0Y2g6CisjZW5kaWYKICAgICAgICAgLy8gVGhlc2UgdHlwZXMgb2YgcmVzb3VyY2VzIGNhbiBi
ZSBsb2FkZWQgZnJvbSBhbnkgb3JpZ2luLgogICAgICAgICAvLyBGSVhNRTogQXJlIHdlIHN1cmUg
YWJvdXQgQ2FjaGVkUmVzb3VyY2U6OkZvbnRSZXNvdXJjZT8KICAgICAgICAgYnJlYWs7CkBAIC0y
MjAsNiArMjMzLDkgQEAgYm9vbCBEb2NMb2FkZXI6OmNhblJlcXVlc3QoQ2FjaGVkUmVzb3VyYwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpJbWFnZVJlc291cmNlOgog
ICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkNTU1N0eWxlU2hlZXQ6CisjaWYgRU5BQkxFKExJTktf
UFJFRkVUQ0gpCisgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6TGlua1ByZWZldGNoOgorI2VuZGlm
CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6Rm9udFJlc291cmNlOiB7CiAgICAgICAgIC8vIFRo
ZXNlIHJlc291cmNlcyBjYW4gY29ycnVwdCBvbmx5IHRoZSBmcmFtZSdzIHBpeGVscy4KICAgICAg
ICAgaWYgKEZyYW1lKiBmID0gZnJhbWUoKSkgewpAQCAtMzU1LDEzICszNzEsMTkgQEAgdm9pZCBE
b2NMb2FkZXI6OmNoZWNrQ2FjaGVPYmplY3RTdGF0dXMoQwogICAgIGZyYW1lKCktPmxvYWRlcigp
LT5sb2FkZWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShyZXNvdXJjZSk7CiB9CiAKLXZvaWQgRG9j
TG9hZGVyOjppbmNyZW1lbnRSZXF1ZXN0Q291bnQoKQordm9pZCBEb2NMb2FkZXI6OmluY3JlbWVu
dFJlcXVlc3RDb3VudChjb25zdCBDYWNoZWRSZXNvdXJjZSogcmVzKQogeworICAgIGlmIChyZXMt
PmlzUHJlZmV0Y2goKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgKyttX3JlcXVlc3RDb3VudDsK
IH0KIAotdm9pZCBEb2NMb2FkZXI6OmRlY3JlbWVudFJlcXVlc3RDb3VudCgpCit2b2lkIERvY0xv
YWRlcjo6ZGVjcmVtZW50UmVxdWVzdENvdW50KGNvbnN0IENhY2hlZFJlc291cmNlKiByZXMpCiB7
CisgICAgaWYgKHJlcy0+aXNQcmVmZXRjaCgpKQorICAgICAgICByZXR1cm47CisKICAgICAtLW1f
cmVxdWVzdENvdW50OwogICAgIEFTU0VSVChtX3JlcXVlc3RDb3VudCA+IC0xKTsKIH0KSW5kZXg6
IFdlYkNvcmUvbG9hZGVyL0RvY0xvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVy
L0RvY0xvYWRlci5oCShyZXZpc2lvbiA2MDQ3NSkKKysrIFdlYkNvcmUvbG9hZGVyL0RvY0xvYWRl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw5IEBAIGNsYXNzIERvY3VtZW50OwogY2xh
c3MgRnJhbWU7CiBjbGFzcyBJbWFnZUxvYWRlcjsKIGNsYXNzIEtVUkw7CisjaWYgRU5BQkxFKExJ
TktfUFJFRkVUQ0gpCitjbGFzcyBDYWNoZWRMaW5rUHJlZmV0Y2g7CisjZW5kaWYKIAogLy8gVGhl
IERvY0xvYWRlciBtYW5hZ2VzIHRoZSBsb2FkaW5nIG9mIHNjcmlwdHMvaW1hZ2VzL3N0eWxlc2hl
ZXRzIGZvciBhIHNpbmdsZSBkb2N1bWVudC4KIGNsYXNzIERvY0xvYWRlciA6IHB1YmxpYyBOb25j
b3B5YWJsZSB7CkBAIC02Nyw2ICs3MCw5IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoWEJMKQogICAg
IENhY2hlZFhCTERvY3VtZW50KiByZXF1ZXN0WEJMRG9jdW1lbnQoY29uc3QgU3RyaW5nICZ1cmwp
OwogI2VuZGlmCisjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCisgICAgQ2FjaGVkTGlua1ByZWZl
dGNoKiByZXF1ZXN0TGlua1ByZWZldGNoKGNvbnN0IFN0cmluZyAmdXJsKTsKKyNlbmRpZgogCiAg
ICAgLy8gTG9ncyBhbiBhY2Nlc3MgZGVuaWVkIG1lc3NhZ2UgdG8gdGhlIGNvbnNvbGUgZm9yIHRo
ZSBzcGVjaWZpZWQgVVJMLgogICAgIHZvaWQgcHJpbnRBY2Nlc3NEZW5pZWRNZXNzYWdlKGNvbnN0
IEtVUkwmIHVybCkgY29uc3Q7CkBAIC05MSw4ICs5Nyw4IEBAIHB1YmxpYzoKICAgICAKICAgICB2
b2lkIHNldEFsbG93U3RhbGVSZXNvdXJjZXMoYm9vbCBhbGxvd1N0YWxlUmVzb3VyY2VzKSB7IG1f
YWxsb3dTdGFsZVJlc291cmNlcyA9IGFsbG93U3RhbGVSZXNvdXJjZXM7IH0KIAotICAgIHZvaWQg
aW5jcmVtZW50UmVxdWVzdENvdW50KCk7Ci0gICAgdm9pZCBkZWNyZW1lbnRSZXF1ZXN0Q291bnQo
KTsKKyAgICB2b2lkIGluY3JlbWVudFJlcXVlc3RDb3VudChjb25zdCBDYWNoZWRSZXNvdXJjZSop
OworICAgIHZvaWQgZGVjcmVtZW50UmVxdWVzdENvdW50KGNvbnN0IENhY2hlZFJlc291cmNlKik7
CiAgICAgaW50IHJlcXVlc3RDb3VudCgpOwogICAgIAogICAgIHZvaWQgY2xlYXJQcmVsb2Fkcygp
OwpJbmRleDogV2ViQ29yZS9sb2FkZXIvbG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2xvYWRlci9sb2FkZXIuY3BwCShyZXZpc2lvbiA2MDQ3NSkKKysrIFdlYkNvcmUvbG9hZGVyL2xv
YWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5LDcgKzg5LDEyIEBAIHN0YXRpYyBSZXNvdXJj
ZVJlcXVlc3Q6OlRhcmdldFR5cGUgY2FjaGUKICAgICAgICAgcmV0dXJuIFJlc291cmNlUmVxdWVz
dDo6VGFyZ2V0SXNGb250UmVzb3VyY2U7CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6SW1hZ2VS
ZXNvdXJjZToKICAgICAgICAgcmV0dXJuIFJlc291cmNlUmVxdWVzdDo6VGFyZ2V0SXNJbWFnZTsK
KyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKKyAgICBjYXNlIENhY2hlZFJlc291cmNlOjpMaW5r
UHJlZmV0Y2g6CisgICAgICAgIHJldHVybiBSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldElzU3VicmVz
b3VyY2U7CisjZW5kaWYKICAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0
dXJuIFJlc291cmNlUmVxdWVzdDo6VGFyZ2V0SXNTdWJyZXNvdXJjZTsKIH0KIApAQCAtMTEwLDYg
KzExNSwxMCBAQCBMb2FkZXI6OlByaW9yaXR5IExvYWRlcjo6ZGV0ZXJtaW5lUHJpb3JpCiAgICAg
ICAgICAgICByZXR1cm4gTWVkaXVtOwogICAgICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpJbWFn
ZVJlc291cmNlOgogICAgICAgICAgICAgcmV0dXJuIExvdzsKKyNpZiBFTkFCTEUoTElOS19QUkVG
RVRDSCkKKyAgICAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6TGlua1ByZWZldGNoOgorICAgICAg
ICAgICAgcmV0dXJuIFZlcnlMb3c7CisjZW5kaWYKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgcmV0dXJuIExvdzsKQEAgLTEzOSw5ICsxNDgsOSBAQCB2b2lkIExvYWRlcjo6
bG9hZChEb2NMb2FkZXIqIGRvY0xvYWRlciwgCiAgICAgYm9vbCBoYWRSZXF1ZXN0cyA9IGhvc3Qt
Pmhhc1JlcXVlc3RzKCk7CiAgICAgUHJpb3JpdHkgcHJpb3JpdHkgPSBkZXRlcm1pbmVQcmlvcml0
eShyZXNvdXJjZSk7CiAgICAgaG9zdC0+YWRkUmVxdWVzdChyZXF1ZXN0LCBwcmlvcml0eSk7Ci0g
ICAgZG9jTG9hZGVyLT5pbmNyZW1lbnRSZXF1ZXN0Q291bnQoKTsKKyAgICBkb2NMb2FkZXItPmlu
Y3JlbWVudFJlcXVlc3RDb3VudChyZXF1ZXN0LT5jYWNoZWRSZXNvdXJjZSgpKTsKIAotICAgIGlm
IChwcmlvcml0eSA+IExvdyB8fCAhdXJsLnByb3RvY29sSW5IVFRQRmFtaWx5KCkgfHwgIWhhZFJl
cXVlc3RzKSB7CisgICAgaWYgKHByaW9yaXR5ID4gTG93IHx8ICF1cmwucHJvdG9jb2xJbkhUVFBG
YW1pbHkoKSB8fCAocHJpb3JpdHkgPT0gTG93ICYmICFoYWRSZXF1ZXN0cykpIHsKICAgICAgICAg
Ly8gVHJ5IHRvIHJlcXVlc3QgaW1wb3J0YW50IHJlc291cmNlcyBpbW1lZGlhdGVseQogICAgICAg
ICBob3N0LT5zZXJ2ZVBlbmRpbmdSZXF1ZXN0cyhwcmlvcml0eSk7CiAgICAgfSBlbHNlIHsKQEAg
LTM2MSw2ICszNzAsMTEgQEAgdm9pZCBMb2FkZXI6Okhvc3Q6OnNlcnZlUGVuZGluZ1JlcXVlc3Rz
KAogICAgICAgICAgICAgfQogICAgICAgICB9CiAKKyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkK
KyAgICAgICAgaWYgKHJlcXVlc3QtPmNhY2hlZFJlc291cmNlKCktPnR5cGUoKSA9PSBDYWNoZWRS
ZXNvdXJjZTo6TGlua1ByZWZldGNoKQorICAgICAgICAgICAgcmVzb3VyY2VSZXF1ZXN0LnNldEhU
VFBIZWFkZXJGaWVsZCgiWC1Nb3oiLCAicHJlZmV0Y2giKTsKKyNlbmRpZgorCiAgICAgICAgIFJl
ZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gbG9hZGVyID0gU3VicmVzb3VyY2VMb2FkZXI6OmNyZWF0
ZShkb2NMb2FkZXItPmRvYygpLT5mcmFtZSgpLAogICAgICAgICAgICAgdGhpcywgcmVzb3VyY2VS
ZXF1ZXN0LCByZXF1ZXN0LT5zaG91bGREb1NlY3VyaXR5Q2hlY2soKSwgcmVxdWVzdC0+c2VuZFJl
c291cmNlTG9hZENhbGxiYWNrcygpKTsKICAgICAgICAgaWYgKGxvYWRlcikgewpAQCAtMzcwLDcg
KzM4NCw3IEBAIHZvaWQgTG9hZGVyOjpIb3N0OjpzZXJ2ZVBlbmRpbmdSZXF1ZXN0cygKICAgICAg
ICAgICAgIHByaW50ZigiSE9TVCAlcyBDT1VOVCAlZCBMT0FESU5HICVzXG4iLCByZXNvdXJjZVJl
cXVlc3QudXJsKCkuaG9zdCgpLmxhdGluMSgpLmRhdGEoKSwgbV9yZXF1ZXN0c0xvYWRpbmcuc2l6
ZSgpLCByZXF1ZXN0LT5jYWNoZWRSZXNvdXJjZSgpLT51cmwoKS5sYXRpbjEoKS5kYXRhKCkpOwog
I2VuZGlmCiAgICAgICAgIH0gZWxzZSB7ICAgICAgICAgICAgCi0gICAgICAgICAgICBkb2NMb2Fk
ZXItPmRlY3JlbWVudFJlcXVlc3RDb3VudCgpOworICAgICAgICAgICAgZG9jTG9hZGVyLT5kZWNy
ZW1lbnRSZXF1ZXN0Q291bnQocmVxdWVzdC0+Y2FjaGVkUmVzb3VyY2UoKSk7CiAgICAgICAgICAg
ICBkb2NMb2FkZXItPnNldExvYWRJblByb2dyZXNzKHRydWUpOwogICAgICAgICAgICAgcmVxdWVz
dC0+Y2FjaGVkUmVzb3VyY2UoKS0+ZXJyb3IoKTsKICAgICAgICAgICAgIGRvY0xvYWRlci0+c2V0
TG9hZEluUHJvZ3Jlc3MoZmFsc2UpOwpAQCAtMzk0LDcgKzQwOCw3IEBAIHZvaWQgTG9hZGVyOjpI
b3N0OjpkaWRGaW5pc2hMb2FkaW5nKFN1YnIKICAgICAvLyB0aGUgZG9jTG9hZGVyIHRoYXQgaXQg
d2lsbCBkZWxldGUgd2hlbiB0aGUgZG9jdW1lbnQgZ2V0cyBkZWxldGVkLgogICAgIFJlZlB0cjxE
b2N1bWVudD4gcHJvdGVjdG9yKGRvY0xvYWRlci0+ZG9jKCkpOwogICAgIGlmICghcmVxdWVzdC0+
aXNNdWx0aXBhcnQoKSkKLSAgICAgICAgZG9jTG9hZGVyLT5kZWNyZW1lbnRSZXF1ZXN0Q291bnQo
KTsKKyAgICAgICAgZG9jTG9hZGVyLT5kZWNyZW1lbnRSZXF1ZXN0Q291bnQocmVxdWVzdC0+Y2Fj
aGVkUmVzb3VyY2UoKSk7CiAKICAgICBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UgPSByZXF1ZXN0
LT5jYWNoZWRSZXNvdXJjZSgpOwogICAgIEFTU0VSVCghcmVzb3VyY2UtPnJlc291cmNlVG9SZXZh
bGlkYXRlKCkpOwpAQCAtNDQyLDcgKzQ1Niw3IEBAIHZvaWQgTG9hZGVyOjpIb3N0OjpkaWRGYWls
KFN1YnJlc291cmNlTG8KICAgICAvLyB0aGUgZG9jTG9hZGVyIHRoYXQgaXQgd2lsbCBkZWxldGUg
d2hlbiB0aGUgZG9jdW1lbnQgZ2V0cyBkZWxldGVkLgogICAgIFJlZlB0cjxEb2N1bWVudD4gcHJv
dGVjdG9yKGRvY0xvYWRlci0+ZG9jKCkpOwogICAgIGlmICghcmVxdWVzdC0+aXNNdWx0aXBhcnQo
KSkKLSAgICAgICAgZG9jTG9hZGVyLT5kZWNyZW1lbnRSZXF1ZXN0Q291bnQoKTsKKyAgICAgICAg
ZG9jTG9hZGVyLT5kZWNyZW1lbnRSZXF1ZXN0Q291bnQocmVxdWVzdC0+Y2FjaGVkUmVzb3VyY2Uo
KSk7CiAKICAgICBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UgPSByZXF1ZXN0LT5jYWNoZWRSZXNv
dXJjZSgpOwogICAgIApAQCAtNDg3LDcgKzUwMSw3IEBAIHZvaWQgTG9hZGVyOjpIb3N0OjpkaWRS
ZWNlaXZlUmVzcG9uc2UoU3UKICAgICAgICAgICAgIC8vIDMwNCBOb3QgbW9kaWZpZWQgLyBVc2Ug
bG9jYWwgY29weQogICAgICAgICAgICAgbV9yZXF1ZXN0c0xvYWRpbmcucmVtb3ZlKGxvYWRlcik7
CiAgICAgICAgICAgICBsb2FkZXItPmNsZWFyQ2xpZW50KCk7Ci0gICAgICAgICAgICByZXF1ZXN0
LT5kb2NMb2FkZXIoKS0+ZGVjcmVtZW50UmVxdWVzdENvdW50KCk7CisgICAgICAgICAgICByZXF1
ZXN0LT5kb2NMb2FkZXIoKS0+ZGVjcmVtZW50UmVxdWVzdENvdW50KHJlcXVlc3QtPmNhY2hlZFJl
c291cmNlKCkpOwogCiAgICAgICAgICAgICAvLyBFeGlzdGluZyByZXNvdXJjZSBpcyBvaywganVz
dCB1c2UgaXQgdXBkYXRpbmcgdGhlIGV4cGlyYXRpb24gdGltZS4KICAgICAgICAgICAgIGNhY2hl
KCktPnJldmFsaWRhdGlvblN1Y2NlZWRlZChyZXNvdXJjZSwgcmVzcG9uc2UpOwpAQCAtNTE5LDcg
KzUzMyw3IEBAIHZvaWQgTG9hZGVyOjpIb3N0OjpkaWRSZWNlaXZlUmVzcG9uc2UoU3UKICAgICAg
ICAgcmVxdWVzdC0+c2V0SXNNdWx0aXBhcnQodHJ1ZSk7CiAgICAgICAgIAogICAgICAgICAvLyBX
ZSBkb24ndCBjb3VudCBtdWx0aVBhcnRzIGluIGEgRG9jTG9hZGVyJ3MgcmVxdWVzdCBjb3VudAot
ICAgICAgICByZXF1ZXN0LT5kb2NMb2FkZXIoKS0+ZGVjcmVtZW50UmVxdWVzdENvdW50KCk7Cisg
ICAgICAgIHJlcXVlc3QtPmRvY0xvYWRlcigpLT5kZWNyZW1lbnRSZXF1ZXN0Q291bnQocmVxdWVz
dC0+Y2FjaGVkUmVzb3VyY2UoKSk7CiAKICAgICAgICAgLy8gSWYgd2UgZ2V0IGEgbXVsdGlwYXJ0
IHJlc3BvbnNlLCB3ZSBtdXN0IGhhdmUgYSBoYW5kbGUKICAgICAgICAgQVNTRVJUKGxvYWRlci0+
aGFuZGxlKCkpOwpAQCAtNTgyLDcgKzU5Niw3IEBAIHZvaWQgTG9hZGVyOjpIb3N0OjpjYW5jZWxQ
ZW5kaW5nUmVxdWVzdHMKICAgICAgICAgaWYgKHJlcXVlc3QtPmRvY0xvYWRlcigpID09IGRvY0xv
YWRlcikgewogICAgICAgICAgICAgY2FjaGUoKS0+cmVtb3ZlKHJlcXVlc3QtPmNhY2hlZFJlc291
cmNlKCkpOwogICAgICAgICAgICAgZGVsZXRlIHJlcXVlc3Q7Ci0gICAgICAgICAgICBkb2NMb2Fk
ZXItPmRlY3JlbWVudFJlcXVlc3RDb3VudCgpOworICAgICAgICAgICAgZG9jTG9hZGVyLT5kZWNy
ZW1lbnRSZXF1ZXN0Q291bnQocmVxdWVzdC0+Y2FjaGVkUmVzb3VyY2UoKSk7CiAgICAgICAgIH0g
ZWxzZQogICAgICAgICAgICAgcmVtYWluaW5nLmFwcGVuZChyZXF1ZXN0KTsKICAgICB9CkluZGV4
OiBXZWJDb3JlL2xvYWRlci9sb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9s
b2FkZXIuaAkocmV2aXNpb24gNjA0NzUpCisrKyBXZWJDb3JlL2xvYWRlci9sb2FkZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtNDgsOCArNDgsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAg
ICAgdm9pZCBjYW5jZWxSZXF1ZXN0cyhEb2NMb2FkZXIqKTsKICAgICAgICAgCi0gICAgICAgIGVu
dW0gUHJpb3JpdHkgeyBMb3csIE1lZGl1bSwgSGlnaCB9OwotICAgICAgICB2b2lkIHNlcnZlUGVu
ZGluZ1JlcXVlc3RzKFByaW9yaXR5IG1pbmltdW1Qcmlvcml0eSA9IExvdyk7CisgICAgICAgIGVu
dW0gUHJpb3JpdHkgeyBWZXJ5TG93LCBMb3csIE1lZGl1bSwgSGlnaCB9OworICAgICAgICB2b2lk
IHNlcnZlUGVuZGluZ1JlcXVlc3RzKFByaW9yaXR5IG1pbmltdW1Qcmlvcml0eSA9IFZlcnlMb3cp
OwogCiAgICAgICAgIGJvb2wgaXNTdXNwZW5kaW5nUGVuZGluZ1JlcXVlc3RzKCkgeyByZXR1cm4g
bV9pc1N1c3BlbmRpbmdQZW5kaW5nUmVxdWVzdHM7IH0KICAgICAgICAgdm9pZCBzdXNwZW5kUGVu
ZGluZ1JlcXVlc3RzKCk7CkBAIC03Niw3ICs3Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgICAgIHZvaWQgYWRkUmVxdWVzdChSZXF1ZXN0KiwgUHJpb3JpdHkpOwogICAgICAgICAg
ICAgdm9pZCBub25DYWNoZVJlcXVlc3RJbkZsaWdodCgpOwogICAgICAgICAgICAgdm9pZCBub25D
YWNoZVJlcXVlc3RDb21wbGV0ZSgpOwotICAgICAgICAgICAgdm9pZCBzZXJ2ZVBlbmRpbmdSZXF1
ZXN0cyhQcmlvcml0eSBtaW5pbXVtUHJpb3JpdHkgPSBMb3cpOworICAgICAgICAgICAgdm9pZCBz
ZXJ2ZVBlbmRpbmdSZXF1ZXN0cyhQcmlvcml0eSBtaW5pbXVtUHJpb3JpdHkgPSBWZXJ5TG93KTsK
ICAgICAgICAgICAgIHZvaWQgY2FuY2VsUmVxdWVzdHMoRG9jTG9hZGVyKik7CiAgICAgICAgICAg
ICBib29sIGhhc1JlcXVlc3RzKCkgY29uc3Q7CiAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDYwNDc1KQor
KysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAK
KzIwMTAtMDYtMDEgIExlb24gQ2xhcmtlICA8bGVvbmNsYXJrZUBnb29nbGUuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIGxheW91dCB0
ZXN0IGZvciBsaW5rIHJlbD1wcmVmZXRjaC4gSXQncyBkaXNhYmxlZCBzaW5jZSB0aGUgZmVhdHVy
ZSBpcworICAgICAgICBkaXNhYmxlZCBieSBkZWZhdWx0LgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY1MgorCisgICAgICAgICogZmFzdC9kb20vSFRN
TExpbmtFbGVtZW50L3ByZWZldGNoLW9ubG9hZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC1vbmxvYWQuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLmxpbms6IEFkZGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1NraXBwZWQ6CisgICAgICAgICogcGxh
dGZvcm0vd2luL1NraXBwZWQ6CisKIDIwMTAtMDYtMDEgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2Jp
bnNvbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFhhbiBMb3Blei4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC1vbmxvYWQtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxl
bWVudC9wcmVmZXRjaC1vbmxvYWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLW9ubG9hZC1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNiBAQAorVGhpcyB0ZXN0cyB0aGF0IG9ubG9hZCBl
dmVudHMgY2FuIGJlIGF0dGFjaGVkIHRvIGxpbmsgZWxlbWVudHMgd2l0aCByZWw9cHJlZmV0Y2gu
IFNpbmNlIHByZWZldGNoIGxpbmtzIGFyZSBqdXN0IHRoZXJlIGFzIGEgcGVyZm9ybWFuY2Ugb3B0
aW1pc2F0aW9uLCB0aGUgb25sb2FkIGV2ZW50IGlzIHRoZWlyIG9ubHkgcHJvZ3JhbWF0aWMgc2lk
ZS1lZmZlY3QuCisKK0lmIGl0IHdvcmtzIHlvdSBzaG91bGQgc2VlIGEgbWVzc2FnZSBiZWxvdyBz
YXlpbmcgdGhlIHRlc3QgaGFzIHBhc3NlZC4KKworVEVTVCBQQVNTRUQuIFRoZSBzdHlsZXNoZWV0
IGxpbmsgb25sb2FkIGhhbmRsZXIgaGFzIGZpcmVkCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC1vbmxvYWQuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0Y2gtb25sb2FkLmh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJl
ZmV0Y2gtb25sb2FkLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzIgQEAKKzxodG1sPgor
ICAgIDxoZWFkPgorICAgICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAg
ICAgICAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICB2YXIgaXRlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7CisgICAgICAgICAg
ICAgICAgaXRlbS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdlKSk7
CisgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5hcHBl
bmRDaGlsZChpdGVtKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZ1bmN0aW9uIGRvbmUo
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGxvZygiVEVTVCBQQVNTRUQuIFRoZSBz
dHlsZXNoZWV0IGxpbmsgb25sb2FkIGhhbmRsZXIgaGFzIGZpcmVkIik7CisgICAgICAgICAgICAg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICAgICAgICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7CisgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsK
KyAgICAgICAgICAgIH0KKworCTwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keT4KKyAg
ICAgICAgPHA+VGhpcyB0ZXN0cyB0aGF0IG9ubG9hZCBldmVudHMgY2FuIGJlIGF0dGFjaGVkIHRv
IGxpbmsgZWxlbWVudHMgd2l0aCByZWw9cHJlZmV0Y2guIFNpbmNlIHByZWZldGNoIGxpbmtzIGFy
ZSBqdXN0IHRoZXJlIGFzIGEgcGVyZm9ybWFuY2Ugb3B0aW1pc2F0aW9uLCB0aGUgb25sb2FkIGV2
ZW50IGlzIHRoZWlyIG9ubHkgcHJvZ3JhbWF0aWMgc2lkZS1lZmZlY3QuPC9wPgorICAgICAgICA8
cD5JZiBpdCB3b3JrcyB5b3Ugc2hvdWxkIHNlZSBhIG1lc3NhZ2UgYmVsb3cgc2F5aW5nIHRoZSB0
ZXN0IGhhcyBwYXNzZWQuPC9wPgorICAgICAgICA8bGluayBocmVmPSJwcmVmZXRjaC5saW5rIiBy
ZWw9InByZWZldGNoIiBvbmxvYWQ9ImRvbmUoKSIgPgorICAgICAgICA8aHI+CisgICAgICAgIDxw
PjxvbCBpZD0iY29uc29sZSI+PC9vbD48L3A+CisgICAgPC9ib2R5PgorPC9odG1sPgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLmxpbmsKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLmxp
bmsJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQv
cHJlZmV0Y2gubGluawkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorVGhpcyBpcyB0aGUgbGlu
ayB0aGF0IGlzIGZldGNoZWQgYnkgdGhlIHByZWZldGNoLW9ubG9hZCB0ZXN0CkluZGV4OiBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9ndGsvU2tpcHBlZAkocmV2aXNpb24gNjA0NzUpCisrKyBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9ndGsvU2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAtNTkzOCwzICs1OTM4LDYgQEAgc3Rv
cmFnZS9pbmRleGVkZGIKIGZhc3QvZG9tL0dlb2xvY2F0aW9uL2FyZ3VtZW50LXR5cGVzLmh0bWwK
IGZhc3QvZG9tL0dlb2xvY2F0aW9uL25vdGltZXItYWZ0ZXItdW5sb2FkLmh0bWwKIGZhc3QvZG9t
L0dlb2xvY2F0aW9uL3RpbWVvdXQtemVyby5odG1sCisKKyMgTGluayBwcmVmZXRjaCBpcyBkaXNh
YmxlZCBieSBkZWZhdWx0CitmYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0Y2gtb25sb2Fk
Lmh0bWwKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCShyZXZpc2lvbiA2MDQ3NSkKKysr
IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC0zMDEs
MyArMzAxLDYgQEAgc3RvcmFnZS9pbmRleGVkZGIKICMgVGhpcyBwb3J0IGRvZXNuJ3Qgc3VwcG9y
dCBEZXZpY2VPcmllbnRhdGlvbi4KIGZhc3QvZG9tL0RldmljZU9yaWVudGF0aW9uCiBmYXN0L2Rv
bS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMtb24tZGV2aWNlLW9yaWVudGF0aW9uLmh0bWwKKwor
IyBMaW5rIHByZWZldGNoIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQKK2Zhc3QvZG9tL0hUTUxMaW5r
RWxlbWVudC9wcmVmZXRjaC1vbmxvYWQuaHRtbApJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0v
cXQvU2tpcHBlZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVk
CShyZXZpc2lvbiA2MDQ3NSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQJKHdv
cmtpbmcgY29weSkKQEAgLTUyMzksMyArNTIzOSw2IEBAIG1lZGlhL2F1ZGlvLW9ubHktdmlkZW8t
aW50cmluc2ljLXNpemUuaHQKICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTM5ODUyCiBmYXN0L2VuY29kaW5nL3llbnRlc3QuaHRtbAogZmFzdC9lbmNvZGluZy95ZW50
ZXN0Mi5odG1sCisKKyMgTGluayBwcmVmZXRjaCBpcyBkaXNhYmxlZCBieSBkZWZhdWx0CitmYXN0
L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0Y2gtb25sb2FkLmh0bWwKSW5kZXg6IExheW91dFRl
c3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRm
b3JtL3dpbi9Ta2lwcGVkCShyZXZpc2lvbiA2MDQ3NSkKKysrIExheW91dFRlc3RzL3BsYXRmb3Jt
L3dpbi9Ta2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC04ODcsMyArODg3LDYgQEAgc3RvcmFnZS9p
bmRleGVkZGIKICMgVGhpcyBwb3J0IGRvZXNuJ3Qgc3VwcG9ydCBEZXZpY2VPcmllbnRhdGlvbi4K
IGZhc3QvZG9tL0RldmljZU9yaWVudGF0aW9uCiBmYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3Bl
cnRpZXMtb24tZGV2aWNlLW9yaWVudGF0aW9uLmh0bWwKKworIyBMaW5rIHByZWZldGNoIGlzIGRp
c2FibGVkIGJ5IGRlZmF1bHQKK2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC1vbmxv
YWQuaHRtbAo=
</data>
<flag name="review"
          id="42157"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>58241</attachid>
            <date>2010-06-09 07:12:37 -0700</date>
            <delta_ts>2010-07-07 14:39:32 -0700</delta_ts>
            <desc>patch for TargetIsPrefetch</desc>
            <filename>targetisprefetch.diff</filename>
            <type>application/octet-stream</type>
            <size>1624</size>
            <attacher name="Gavin Peters">gavinp</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVVJMUmVxdWVzdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVVJMUmVxdWVzdC5oCShyZXZpc2lvbiA2MDY0
MSkKKysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVVJMUmVxdWVzdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC02OSw3ICs2OSw4IEBACiAgICAgICAgIFRhcmdldElzT2JqZWN0ID0gNywKICAgICAg
ICAgVGFyZ2V0SXNNZWRpYSA9IDgsCiAgICAgICAgIFRhcmdldElzV29ya2VyID0gOSwKLSAgICAg
ICAgVGFyZ2V0SXNTaGFyZWRXb3JrZXIgPSAxMAorICAgICAgICBUYXJnZXRJc1NoYXJlZFdvcmtl
ciA9IDEwLAorICAgICAgICBUYXJnZXRJc1ByZWZldGNoID0gMTEsCiAgICAgfTsKIAogICAgIH5X
ZWJVUkxSZXF1ZXN0KCkgeyByZXNldCgpOyB9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgJKHJldmlzaW9uIDYwNjQxKQorKysgV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaAkod29ya2luZyBjb3B5KQpA
QCAtNjMsNyArNjMsOCBAQAogICAgICAgICAgICAgVGFyZ2V0SXNPYmplY3QsCiAgICAgICAgICAg
ICBUYXJnZXRJc01lZGlhLAogICAgICAgICAgICAgVGFyZ2V0SXNXb3JrZXIsCi0gICAgICAgICAg
ICBUYXJnZXRJc1NoYXJlZFdvcmtlcgorICAgICAgICAgICAgVGFyZ2V0SXNTaGFyZWRXb3JrZXIs
CisgICAgICAgICAgICBUYXJnZXRJc1ByZWZldGNoLAogICAgICAgICB9OwogCiAgICAgICAgIHN0
YXRpYyBQYXNzT3duUHRyPFJlc291cmNlUmVxdWVzdD4gYWRvcHQoUGFzc093blB0cjxDcm9zc1Ro
cmVhZFJlc291cmNlUmVxdWVzdERhdGE+KTsKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL2xvYWRlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvbG9hZGVyLmNwcAkocmV2aXNpb24gNjA2
NDEpCisrKyBXZWJDb3JlL2xvYWRlci9sb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSw3
ICs4OSwxMiBAQAogICAgICAgICByZXR1cm4gUmVzb3VyY2VSZXF1ZXN0OjpUYXJnZXRJc0ZvbnRS
ZXNvdXJjZTsKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpJbWFnZVJlc291cmNlOgogICAgICAg
ICByZXR1cm4gUmVzb3VyY2VSZXF1ZXN0OjpUYXJnZXRJc0ltYWdlOworI2lmIEVOQUJMRShMSU5L
X1BSRUZFVENIKQorICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkxpbmtQcmVmZXRjaDoKKyAgICAg
ICAgcmV0dXJuIFJlc291cmNlUmVxdWVzdDo6VGFyZ2V0SXNQcmVmZXRjaDsKKyNlbmRpZgogICAg
IH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gUmVzb3VyY2VSZXF1ZXN0
OjpUYXJnZXRJc1N1YnJlc291cmNlOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58656</attachid>
            <date>2010-06-14 08:29:31 -0700</date>
            <delta_ts>2010-06-14 10:07:04 -0700</delta_ts>
            <desc>Following abarth&apos;s review comments</desc>
            <filename>prefetch4.patch</filename>
            <type>text/plain</type>
            <size>29227</size>
            <attacher name="Leon Clarke">leonclarke</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MTEyNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTUgQEAKKzIwMTAtMDYtMTQgIExlb24gQ2xhcmtlICA8bGVvbmNsYXJrZUBnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBzdXBwb3J0IGZvciBsaW5rIHJlbD1wcmVmZXRjaAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY1MgorCisgICAgICAgIFRlc3Q6IGZhc3QvZG9t
L0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC1vbmxvYWQuaHRtbAorCisgICAgICAgICogaHRtbC9I
VE1MTGlua0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50Ojpw
YXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6
OnRva2VuaXplUmVsQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVu
dDo6cHJvY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6Om5vdGlmeUZp
bmlzaGVkKToKKyAgICAgICAgKiBodG1sL0hUTUxMaW5rRWxlbWVudC5oOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTExpbmtFbGVtZW50OjpSZWxBdHRyaWJ1dGU6OlJlbEF0dHJpYnV0ZSk6CisgICAg
ICAgICogbG9hZGVyL0NhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVJlc291cmNl
KToKKyAgICAgICAgKiBsb2FkZXIvQ2FjaGVkTGlua1ByZWZldGNoLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkTGlua1ByZWZldGNoOjpDYWNoZWRMaW5rUHJlZmV0Y2gpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkTGlua1ByZWZldGNoOjp+Q2FjaGVkTGlua1ByZWZldGNoKToK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZExpbmtQcmVmZXRjaDo6ZGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRMaW5rUHJlZmV0Y2g6OmVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZExpbmtQcmVmZXRjaDo6c2NoZWR1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkTGlu
a1ByZWZldGNoOjppc1ByZWZldGNoKToKKyAgICAgICAgKiBsb2FkZXIvQ2FjaGVkUmVzb3VyY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmRpZEFkZENsaWVudCk6Cisg
ICAgICAgICogbG9hZGVyL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRSZXNvdXJjZTo6KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjppc1ByZWZl
dGNoKToKKyAgICAgICAgKiBsb2FkZXIvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKiBsb2Fk
ZXIvQ2FjaGVkU2NyaXB0Lmg6CisgICAgICAgICogbG9hZGVyL0RvY0xvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEb2NMb2FkZXI6OnJlcXVlc3RMaW5rUHJlZmV0Y2gpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jTG9hZGVyOjpjYW5SZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY0xv
YWRlcjo6aW5jcmVtZW50UmVxdWVzdENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY0xvYWRl
cjo6ZGVjcmVtZW50UmVxdWVzdENvdW50KToKKyAgICAgICAgKiBsb2FkZXIvRG9jTG9hZGVyLmg6
CisgICAgICAgICogbG9hZGVyL2xvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWNoZWRS
ZXNvdXJjZVR5cGVUb1RhcmdldFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TG9hZGVyOjpkZXRl
cm1pbmVQcmlvcml0eSk6CisgICAgICAgIChXZWJDb3JlOjpMb2FkZXI6OmxvYWQpOgorICAgICAg
ICAoV2ViQ29yZTo6TG9hZGVyOjpIb3N0OjpzZXJ2ZVBlbmRpbmdSZXF1ZXN0cyk6CisgICAgICAg
IChXZWJDb3JlOjpMb2FkZXI6Okhvc3Q6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6TG9hZGVyOjpIb3N0OjpkaWRGYWlsKToKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRlcjo6
SG9zdDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRlcjo6SG9z
dDo6Y2FuY2VsUGVuZGluZ1JlcXVlc3RzKToKKyAgICAgICAgKiBsb2FkZXIvbG9hZGVyLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpMb2FkZXI6Oik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZVJlcXVlc3RCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RC
YXNlOjopOgorCiAyMDEwLTA2LTEzICBZYWVsIEFoYXJvbiAgPHlhZWwuYWhhcm9uQG5va2lhLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KSW5k
ZXg6IFdlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCShyZXZpc2lvbiA2MTEyMykKKysrIFdlYkNvcmUv
aHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw5IEBA
CiAjaW5jbHVkZSAiU2NyaXB0RXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgi
CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2lmIEVOQUJMRShMSU5LX1BSRUZFVENI
KQorI2luY2x1ZGUgIkNhY2hlZExpbmtQcmVmZXRjaC5oIgorI2VuZGlmCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtMTMwLDYgKzEzMyw4IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50OjpwYXJz
ZU1hcHBlZEF0dHJpYnUKICAgICAgICAgc2V0RGlzYWJsZWRTdGF0ZSghYXR0ci0+aXNOdWxsKCkp
OwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBvbmJlZm9yZWxvYWRBdHRyKQogICAgICAg
ICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5iZWZvcmVsb2FkRXZlbnQs
IGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cikpOworICAgIGVsc2UgaWYg
KGF0dHItPm5hbWUoKSA9PSBvbmxvYWRBdHRyKQorICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExp
c3RlbmVyKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVu
ZXIodGhpcywgYXR0cikpOwogICAgIGVsc2UgewogICAgICAgICBpZiAoYXR0ci0+bmFtZSgpID09
IHRpdGxlQXR0ciAmJiBtX3NoZWV0KQogICAgICAgICAgICAgbV9zaGVldC0+c2V0VGl0bGUoYXR0
ci0+dmFsdWUoKSk7CkBAIC0xNDMsMTIgKzE0OCwxOSBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6
dG9rZW5pemVSZWxBdHRyaWJ1CiAgICAgcmVsQXR0cmlidXRlLm1faXNJY29uID0gZmFsc2U7CiAg
ICAgcmVsQXR0cmlidXRlLm1faXNBbHRlcm5hdGUgPSBmYWxzZTsKICAgICByZWxBdHRyaWJ1dGUu
bV9pc0ROU1ByZWZldGNoID0gZmFsc2U7CisjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCisgICAg
cmVsQXR0cmlidXRlLm1faXNMaW5rUHJlZmV0Y2ggPSBmYWxzZTsKKyNlbmRpZgogICAgIGlmIChl
cXVhbElnbm9yaW5nQ2FzZShyZWwsICJzdHlsZXNoZWV0IikpCiAgICAgICAgIHJlbEF0dHJpYnV0
ZS5tX2lzU3R5bGVTaGVldCA9IHRydWU7CiAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uo
cmVsLCAiaWNvbiIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKHJlbCwgInNob3J0Y3V0IGljb24iKSkK
ICAgICAgICAgcmVsQXR0cmlidXRlLm1faXNJY29uID0gdHJ1ZTsKICAgICBlbHNlIGlmIChlcXVh
bElnbm9yaW5nQ2FzZShyZWwsICJkbnMtcHJlZmV0Y2giKSkKICAgICAgICAgcmVsQXR0cmlidXRl
Lm1faXNETlNQcmVmZXRjaCA9IHRydWU7CisjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCisgICAg
ZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UocmVsLCAicHJlZmV0Y2giKSkKKyAgICAgICAgcmVs
QXR0cmlidXRlLm1faXNMaW5rUHJlZmV0Y2ggPSB0cnVlOworI2VuZGlmCiAgICAgZWxzZSBpZiAo
ZXF1YWxJZ25vcmluZ0Nhc2UocmVsLCAiYWx0ZXJuYXRlIHN0eWxlc2hlZXQiKSB8fCBlcXVhbEln
bm9yaW5nQ2FzZShyZWwsICJzdHlsZXNoZWV0IGFsdGVybmF0ZSIpKSB7CiAgICAgICAgIHJlbEF0
dHJpYnV0ZS5tX2lzU3R5bGVTaGVldCA9IHRydWU7CiAgICAgICAgIHJlbEF0dHJpYnV0ZS5tX2lz
QWx0ZXJuYXRlID0gdHJ1ZTsKQEAgLTE4NSw2ICsxOTcsMTYgQEAgdm9pZCBIVE1MTGlua0VsZW1l
bnQ6OnByb2Nlc3MoKQogICAgIGlmIChtX3JlbEF0dHJpYnV0ZS5tX2lzRE5TUHJlZmV0Y2ggJiYg
bV91cmwuaXNWYWxpZCgpICYmICFtX3VybC5pc0VtcHR5KCkpCiAgICAgICAgIFJlc291cmNlSGFu
ZGxlOjpwcmVwYXJlRm9yVVJMKG1fdXJsKTsKIAorI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQor
ICAgIGlmIChtX3JlbEF0dHJpYnV0ZS5tX2lzTGlua1ByZWZldGNoICYmIG1fdXJsLmlzVmFsaWQo
KSkgeworICAgICAgICBtX2NhY2hlZExpbmtQcmVmZXRjaCA9IGRvY3VtZW50KCktPmRvY0xvYWRl
cigpLT5yZXF1ZXN0TGlua1ByZWZldGNoKG1fdXJsKTsKKyAgICAgICAgbV9sb2FkaW5nID0gdHJ1
ZTsKKworICAgICAgICBpZiAobV9jYWNoZWRMaW5rUHJlZmV0Y2gpCisgICAgICAgICAgICBtX2Nh
Y2hlZExpbmtQcmVmZXRjaC0+YWRkQ2xpZW50KHRoaXMpOworICAgIH0KKyNlbmRpZgorCiAgICAg
Ym9vbCBhY2NlcHRJZlR5cGVDb250YWluc1RleHRDU1MgPSBkb2N1bWVudCgpLT5wYWdlKCkgJiYg
ZG9jdW1lbnQoKS0+cGFnZSgpLT5zZXR0aW5ncygpICYmIGRvY3VtZW50KCktPnBhZ2UoKS0+c2V0
dGluZ3MoKS0+dHJlYXRzQW55VGV4dENTU0xpbmtBc1N0eWxlc2hlZXQoKTsKIAogICAgIC8vIFN0
eWxlc2hlZXQKQEAgLTMyMyw2ICszNDUsMTEgQEAgYm9vbCBIVE1MTGlua0VsZW1lbnQ6OmlzTG9h
ZGluZygpIGNvbnN0CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PENTU1N0eWxlU2hlZXQgKj4obV9z
aGVldC5nZXQoKSktPmlzTG9hZGluZygpOwogfQogCit2b2lkIEhUTUxMaW5rRWxlbWVudDo6bm90
aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKQoreworICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6
OmNyZWF0ZShldmVudE5hbWVzKCkubG9hZEV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKK30KKwogYm9v
bCBIVE1MTGlua0VsZW1lbnQ6OnNoZWV0TG9hZGVkKCkKIHsKICAgICBpZiAoIWlzTG9hZGluZygp
ICYmICFpc0Rpc2FibGVkKCkgJiYgIWlzQWx0ZXJuYXRlKCkpIHsKSW5kZXg6IFdlYkNvcmUvaHRt
bC9IVE1MTGlua0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTExpbmtF
bGVtZW50LmgJKHJldmlzaW9uIDYxMTIzKQorKysgV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIENhY2hlZENTU1N0eWxlU2hlZXQ7CitjbGFzcyBDYWNoZWRMaW5rUHJlZmV0Y2g7
CiBjbGFzcyBLVVJMOwogCiBjbGFzcyBIVE1MTGlua0VsZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1l
bnQsIHB1YmxpYyBDYWNoZWRSZXNvdXJjZUNsaWVudCB7CkBAIC00MCw4ICs0MSwxOSBAQCBwdWJs
aWM6CiAgICAgICAgIGJvb2wgbV9pc0ljb247CiAgICAgICAgIGJvb2wgbV9pc0FsdGVybmF0ZTsK
ICAgICAgICAgYm9vbCBtX2lzRE5TUHJlZmV0Y2g7CisjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gp
CisgICAgICAgIGJvb2wgbV9pc0xpbmtQcmVmZXRjaDsKKyNlbmRpZgogCi0gICAgICAgIFJlbEF0
dHJpYnV0ZSgpIDogbV9pc1N0eWxlU2hlZXQoZmFsc2UpLCBtX2lzSWNvbihmYWxzZSksIG1faXNB
bHRlcm5hdGUoZmFsc2UpLCBtX2lzRE5TUHJlZmV0Y2goZmFsc2UpIHsgfQorICAgICAgICBSZWxB
dHRyaWJ1dGUoKQorICAgICAgICA6ICAgICBtX2lzU3R5bGVTaGVldChmYWxzZSkKKyAgICAgICAg
ICAgICwgbV9pc0ljb24oZmFsc2UpCisgICAgICAgICAgICAsIG1faXNBbHRlcm5hdGUoZmFsc2Up
CisgICAgICAgICAgICAsIG1faXNETlNQcmVmZXRjaChmYWxzZSkKKyNpZiBFTkFCTEUoTElOS19Q
UkVGRVRDSCkKKyAgICAgICAgICAgICwgbV9pc0xpbmtQcmVmZXRjaChmYWxzZSkKKyNlbmRpZgor
ICAgICAgICAgICAgeyB9OwogICAgIH07CiAKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MTGlu
a0VsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqLCBib29sIGNy
ZWF0ZWRCeVBhcnNlcik7CkBAIC05NSw2ICsxMDcsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gZnJv
bSBDYWNoZWRSZXNvdXJjZUNsaWVudAogICAgIHZpcnR1YWwgdm9pZCBzZXRDU1NTdHlsZVNoZWV0
KGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgS1VSTCYgYmFzZVVSTCwgY29uc3QgU3RyaW5nJiBj
aGFyc2V0LCBjb25zdCBDYWNoZWRDU1NTdHlsZVNoZWV0KiBzaGVldCk7CisgICAgdmlydHVhbCB2
b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKik7CiAgICAgdmlydHVhbCBib29sIHNo
ZWV0TG9hZGVkKCk7CiAKICAgICBib29sIGlzQWx0ZXJuYXRlKCkgY29uc3QgeyByZXR1cm4gbV9k
aXNhYmxlZFN0YXRlID09IFVuc2V0ICYmIG1fcmVsQXR0cmlidXRlLm1faXNBbHRlcm5hdGU7IH0K
QEAgLTEyMiw2ICsxMzUsOSBAQCBwcml2YXRlOgogCiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8
Q2FjaGVkQ1NTU3R5bGVTaGVldD4gbV9jYWNoZWRTaGVldDsKICAgICBSZWZQdHI8Q1NTU3R5bGVT
aGVldD4gbV9zaGVldDsKKyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKKyAgICBDYWNoZWRSZXNv
dXJjZUhhbmRsZTxDYWNoZWRMaW5rUHJlZmV0Y2g+IG1fY2FjaGVkTGlua1ByZWZldGNoOworI2Vu
ZGlmCiAgICAgS1VSTCBtX3VybDsKICAgICBTdHJpbmcgbV90eXBlOwogICAgIFN0cmluZyBtX21l
ZGlhOwpJbmRleDogV2ViQ29yZS9sb2FkZXIvQ2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvbG9hZGVyL0NhY2hlLmNwcAkocmV2aXNpb24gNjExMjMpCisrKyBXZWJDb3JlL2xvYWRlci9D
YWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDkgQEAKICNpbmNsdWRlICJTZWN1
cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRU
aW1lLmg+CisjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCisjaW5jbHVkZSAiQ2FjaGVkTGlua1By
ZWZldGNoLmgiCisjZW5kaWYKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApAQCAtODYsNiArODks
MTAgQEAgc3RhdGljIENhY2hlZFJlc291cmNlKiBjcmVhdGVSZXNvdXJjZShDYQogICAgIGNhc2Ug
Q2FjaGVkUmVzb3VyY2U6OlhCTFN0eWxlU2hlZXQ6CiAgICAgICAgIHJldHVybiBuZXcgQ2FjaGVk
WEJMRG9jdW1lbnQodXJsLnN0cmluZygpKTsKICNlbmRpZgorI2lmIEVOQUJMRShMSU5LX1BSRUZF
VENIKQorICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkxpbmtQcmVmZXRjaDoKKyAgICAgICAgcmV0
dXJuIG5ldyBDYWNoZWRMaW5rUHJlZmV0Y2godXJsLnN0cmluZygpKTsKKyNlbmRpZgogICAgIGRl
ZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0NhY2hl
ZExpbmtQcmVmZXRjaC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0NhY2hlZExpbmtQ
cmVmZXRjaC5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9sb2FkZXIvQ2FjaGVkTGlua1ByZWZl
dGNoLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAx
MCwgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisqLworCisjaWZuZGVmIENhY2hl
ZExpbmtQcmVmZXRjaF9oCisjZGVmaW5lIENhY2hlZExpbmtQcmVmZXRjaF9oCisKKyNpbmNsdWRl
ICJDYWNoZWRSZXNvdXJjZS5oIgorI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCisj
aW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRC
dWZmZXIuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIERvY0xvYWRlcjsKKworY2xhc3MgQ2FjaGVkTGlua1ByZWZldGNoIDogcHVi
bGljIENhY2hlZFJlc291cmNlIHsKK3B1YmxpYzoKKyAgICBDYWNoZWRMaW5rUHJlZmV0Y2goY29u
c3QgU3RyaW5nJiBVUkwpIDogQ2FjaGVkUmVzb3VyY2UoVVJMLCBMaW5rUHJlZmV0Y2gpIHsgfTsK
KyAgICB2aXJ0dWFsIH5DYWNoZWRMaW5rUHJlZmV0Y2goKSB7IH07CisKKyAgICB2aXJ0dWFsIHZv
aWQgZGF0YShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQor
ICAgIHsKKyAgICAgICAgaWYgKCFhbGxEYXRhUmVjZWl2ZWQpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXIgdyhtX2NsaWVudHMpOworICAg
ICAgICB3aGlsZSAoQ2FjaGVkUmVzb3VyY2VDbGllbnQqIGMgPSB3Lm5leHQoKSkKKyAgICAgICAg
ICAgIGMtPm5vdGlmeUZpbmlzaGVkKHRoaXMpOworICAgIH07CisKKyAgICB2aXJ0dWFsIHZvaWQg
ZXJyb3IoKSB7IH07CisKKyAgICB2aXJ0dWFsIGJvb2wgc2NoZWR1bGUoKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNQcmVmZXRjaCgpIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0KK307Cit9CisKKyNlbmRpZgpJbmRleDogV2ViQ29yZS9sb2FkZXIvQ2FjaGVkUmVz
b3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0NhY2hlZFJlc291cmNlLmNw
cAkocmV2aXNpb24gNjExMjMpCisrKyBXZWJDb3JlL2xvYWRlci9DYWNoZWRSZXNvdXJjZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKIAogI2luY2x1ZGUgIkNhY2hlLmgiCiAj
aW5jbHVkZSAiQ2FjaGVkTWV0YWRhdGEuaCIKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVu
dC5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiRG9jTG9h
ZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKQEAgLTIwNCw2ICsyMDUsMTIgQEAgdm9pZCBDYWNo
ZWRSZXNvdXJjZTo6YWRkQ2xpZW50KENhY2hlZFJlcwogICAgIGRpZEFkZENsaWVudChjbGllbnQp
OwogfQogCit2b2lkIENhY2hlZFJlc291cmNlOjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VD
bGllbnQqIGMpCit7CisgICAgaWYgKCFpc0xvYWRpbmcoKSkKKyAgICAgICAgYy0+bm90aWZ5Rmlu
aXNoZWQodGhpcyk7Cit9CisKIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OmFkZENsaWVudFRvU2V0KENh
Y2hlZFJlc291cmNlQ2xpZW50KiBjbGllbnQpCiB7CiAgICAgQVNTRVJUKCFpc1B1cmdlYWJsZSgp
KTsKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0NhY2hlZFJlc291cmNlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9sb2FkZXIvQ2FjaGVkUmVzb3VyY2UuaAkocmV2aXNpb24gNjExMjMpCisrKyBXZWJD
b3JlL2xvYWRlci9DYWNoZWRSZXNvdXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02NCw2ICs2NCw5
IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoWEJMKQogICAgICAgICAsIFhCTAogI2VuZGlmCisjaWYg
RU5BQkxFKExJTktfUFJFRkVUQ0gpCisgICAgICAgICwgTGlua1ByZWZldGNoCisjZW5kaWYKICAg
ICB9OwogCiAgICAgZW51bSBTdGF0dXMgewpAQCAtMTAzLDcgKzEwNiw3IEBAIHB1YmxpYzoKICAg
ICBQcmVsb2FkUmVzdWx0IHByZWxvYWRSZXN1bHQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxQcmVsb2FkUmVzdWx0PihtX3ByZWxvYWRSZXN1bHQpOyB9CiAgICAgdm9pZCBzZXRSZXF1ZXN0
ZWRGcm9tTmV0d29ya2luZ0xheWVyKCkgeyBtX3JlcXVlc3RlZEZyb21OZXR3b3JraW5nTGF5ZXIg
PSB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNl
Q2xpZW50KikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3Vy
Y2VDbGllbnQqKTsKICAgICB2aXJ0dWFsIHZvaWQgYWxsQ2xpZW50c1JlbW92ZWQoKSB7IH0KIAog
ICAgIHVuc2lnbmVkIGNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnRzLnNpemUoKTsgfQpA
QCAtMTIyLDYgKzEyNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldExvYWRpbmcoYm9vbCBiKSB7
IG1fbG9hZGluZyA9IGI7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBpc0ltYWdlKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNQcmVmZXRjaCgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CiAKICAgICB1bnNpZ25lZCBhY2Nlc3NDb3VudCgpIGNvbnN0IHsgcmV0dXJu
IG1fYWNjZXNzQ291bnQ7IH0KICAgICB2b2lkIGluY3JlYXNlQWNjZXNzQ291bnQoKSB7IG1fYWNj
ZXNzQ291bnQrKzsgfQpJbmRleDogV2ViQ29yZS9sb2FkZXIvQ2FjaGVkU2NyaXB0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9DYWNoZWRTY3JpcHQuY3BwCShyZXZpc2lvbiA2MTEy
MykKKysrIFdlYkNvcmUvbG9hZGVyL0NhY2hlZFNjcmlwdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUwLDEyICs1MCw2IEBAIENhY2hlZFNjcmlwdDo6fkNhY2hlZFNjcmlwdCgpCiB7CiB9CiAKLXZv
aWQgQ2FjaGVkU2NyaXB0OjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqIGMpCi17
Ci0gICAgaWYgKCFpc0xvYWRpbmcoKSkKLSAgICAgICAgYy0+bm90aWZ5RmluaXNoZWQodGhpcyk7
Ci19Ci0KIHZvaWQgQ2FjaGVkU2NyaXB0OjphbGxDbGllbnRzUmVtb3ZlZCgpCiB7CiAgICAgbV9k
ZWNvZGVkRGF0YURlbGV0aW9uVGltZXIuc3RhcnRPbmVTaG90KDApOwpJbmRleDogV2ViQ29yZS9s
b2FkZXIvQ2FjaGVkU2NyaXB0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvQ2FjaGVk
U2NyaXB0LmgJKHJldmlzaW9uIDYxMTIzKQorKysgV2ViQ29yZS9sb2FkZXIvQ2FjaGVkU2NyaXB0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAgICAgICAgIGNvbnN0IFN0cmluZyYgc2NyaXB0KCk7CiAKLSAgICAgICAgdmlydHVhbCB2b2lk
IGRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCopOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgYWxsQ2xpZW50c1JlbW92ZWQoKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0RW5jb2Rp
bmcoY29uc3QgU3RyaW5nJik7CkluZGV4OiBXZWJDb3JlL2xvYWRlci9Eb2NMb2FkZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0RvY0xvYWRlci5jcHAJKHJldmlzaW9uIDYxMTIz
KQorKysgV2ViQ29yZS9sb2FkZXIvRG9jTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMs
NiArNDMsOSBAQAogI2luY2x1ZGUgImxvYWRlci5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2lu
LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKKyNp
bmNsdWRlICJDYWNoZWRMaW5rUHJlZmV0Y2guaCIKKyNlbmRpZgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KIAogI2RlZmluZSBQUkVMT0FEX0RFQlVHIDAKQEAgLTE2OCw2ICsxNzEsMTMg
QEAgQ2FjaGVkWEJMRG9jdW1lbnQqIERvY0xvYWRlcjo6cmVxdWVzdFhCTAogfQogI2VuZGlmCiAK
KyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKK0NhY2hlZExpbmtQcmVmZXRjaCogRG9jTG9hZGVy
OjpyZXF1ZXN0TGlua1ByZWZldGNoKGNvbnN0IFN0cmluZyYgdXJsKQoreworICAgIHJldHVybiBz
dGF0aWNfY2FzdDxDYWNoZWRMaW5rUHJlZmV0Y2gqPihyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVz
b3VyY2U6OkxpbmtQcmVmZXRjaCwgdXJsLCBTdHJpbmcoKSkpOworfQorI2VuZGlmCisKIGJvb2wg
RG9jTG9hZGVyOjpjYW5SZXF1ZXN0KENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IEtV
UkwmIHVybCkKIHsKICAgICAvLyBTb21lIHR5cGVzIG9mIHJlc291cmNlcyBjYW4gYmUgbG9hZGVk
IG9ubHkgZnJvbSB0aGUgc2FtZSBvcmlnaW4uICBPdGhlcgpAQCAtMTc4LDYgKzE4OCw5IEBAIGJv
b2wgRG9jTG9hZGVyOjpjYW5SZXF1ZXN0KENhY2hlZFJlc291cmMKICAgICBjYXNlIENhY2hlZFJl
c291cmNlOjpDU1NTdHlsZVNoZWV0OgogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlNjcmlwdDoK
ICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpGb250UmVzb3VyY2U6CisjaWYgRU5BQkxFKExJTktf
UFJFRkVUQ0gpCisgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6TGlua1ByZWZldGNoOgorI2VuZGlm
CiAgICAgICAgIC8vIFRoZXNlIHR5cGVzIG9mIHJlc291cmNlcyBjYW4gYmUgbG9hZGVkIGZyb20g
YW55IG9yaWdpbi4KICAgICAgICAgLy8gRklYTUU6IEFyZSB3ZSBzdXJlIGFib3V0IENhY2hlZFJl
c291cmNlOjpGb250UmVzb3VyY2U/CiAgICAgICAgIGJyZWFrOwpAQCAtMjIwLDYgKzIzMyw5IEBA
IGJvb2wgRG9jTG9hZGVyOjpjYW5SZXF1ZXN0KENhY2hlZFJlc291cmMKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6SW1hZ2VSZXNvdXJjZToKICAgICBjYXNlIENhY2hl
ZFJlc291cmNlOjpDU1NTdHlsZVNoZWV0OgorI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQorICAg
IGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkxpbmtQcmVmZXRjaDoKKyNlbmRpZgogICAgIGNhc2UgQ2Fj
aGVkUmVzb3VyY2U6OkZvbnRSZXNvdXJjZTogewogICAgICAgICAvLyBUaGVzZSByZXNvdXJjZXMg
Y2FuIGNvcnJ1cHQgb25seSB0aGUgZnJhbWUncyBwaXhlbHMuCiAgICAgICAgIGlmIChGcmFtZSog
ZiA9IGZyYW1lKCkpIHsKQEAgLTM1NSwxMyArMzcxLDE5IEBAIHZvaWQgRG9jTG9hZGVyOjpjaGVj
a0NhY2hlT2JqZWN0U3RhdHVzKEMKICAgICBmcmFtZSgpLT5sb2FkZXIoKS0+bG9hZGVkUmVzb3Vy
Y2VGcm9tTWVtb3J5Q2FjaGUocmVzb3VyY2UpOwogfQogCi12b2lkIERvY0xvYWRlcjo6aW5jcmVt
ZW50UmVxdWVzdENvdW50KCkKK3ZvaWQgRG9jTG9hZGVyOjppbmNyZW1lbnRSZXF1ZXN0Q291bnQo
Y29uc3QgQ2FjaGVkUmVzb3VyY2UqIHJlcykKIHsKKyAgICBpZiAocmVzLT5pc1ByZWZldGNoKCkp
CisgICAgICAgIHJldHVybjsKKwogICAgICsrbV9yZXF1ZXN0Q291bnQ7CiB9CiAKLXZvaWQgRG9j
TG9hZGVyOjpkZWNyZW1lbnRSZXF1ZXN0Q291bnQoKQordm9pZCBEb2NMb2FkZXI6OmRlY3JlbWVu
dFJlcXVlc3RDb3VudChjb25zdCBDYWNoZWRSZXNvdXJjZSogcmVzKQogeworICAgIGlmIChyZXMt
PmlzUHJlZmV0Y2goKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgLS1tX3JlcXVlc3RDb3VudDsK
ICAgICBBU1NFUlQobV9yZXF1ZXN0Q291bnQgPiAtMSk7CiB9CkluZGV4OiBXZWJDb3JlL2xvYWRl
ci9Eb2NMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9Eb2NMb2FkZXIuaAko
cmV2aXNpb24gNjExMjMpCisrKyBXZWJDb3JlL2xvYWRlci9Eb2NMb2FkZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtNDUsNiArNDUsOSBAQCBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEZyYW1lOwogY2xh
c3MgSW1hZ2VMb2FkZXI7CiBjbGFzcyBLVVJMOworI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQor
Y2xhc3MgQ2FjaGVkTGlua1ByZWZldGNoOworI2VuZGlmCiAKIC8vIFRoZSBEb2NMb2FkZXIgbWFu
YWdlcyB0aGUgbG9hZGluZyBvZiBzY3JpcHRzL2ltYWdlcy9zdHlsZXNoZWV0cyBmb3IgYSBzaW5n
bGUgZG9jdW1lbnQuCiBjbGFzcyBEb2NMb2FkZXIgOiBwdWJsaWMgTm9uY29weWFibGUgewpAQCAt
NjcsNiArNzAsOSBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFhCTCkKICAgICBDYWNoZWRYQkxEb2N1
bWVudCogcmVxdWVzdFhCTERvY3VtZW50KGNvbnN0IFN0cmluZyAmdXJsKTsKICNlbmRpZgorI2lm
IEVOQUJMRShMSU5LX1BSRUZFVENIKQorICAgIENhY2hlZExpbmtQcmVmZXRjaCogcmVxdWVzdExp
bmtQcmVmZXRjaChjb25zdCBTdHJpbmcgJnVybCk7CisjZW5kaWYKIAogICAgIC8vIExvZ3MgYW4g
YWNjZXNzIGRlbmllZCBtZXNzYWdlIHRvIHRoZSBjb25zb2xlIGZvciB0aGUgc3BlY2lmaWVkIFVS
TC4KICAgICB2b2lkIHByaW50QWNjZXNzRGVuaWVkTWVzc2FnZShjb25zdCBLVVJMJiB1cmwpIGNv
bnN0OwpAQCAtOTEsOCArOTcsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBzZXRBbGxvd1N0
YWxlUmVzb3VyY2VzKGJvb2wgYWxsb3dTdGFsZVJlc291cmNlcykgeyBtX2FsbG93U3RhbGVSZXNv
dXJjZXMgPSBhbGxvd1N0YWxlUmVzb3VyY2VzOyB9CiAKLSAgICB2b2lkIGluY3JlbWVudFJlcXVl
c3RDb3VudCgpOwotICAgIHZvaWQgZGVjcmVtZW50UmVxdWVzdENvdW50KCk7CisgICAgdm9pZCBp
bmNyZW1lbnRSZXF1ZXN0Q291bnQoY29uc3QgQ2FjaGVkUmVzb3VyY2UqKTsKKyAgICB2b2lkIGRl
Y3JlbWVudFJlcXVlc3RDb3VudChjb25zdCBDYWNoZWRSZXNvdXJjZSopOwogICAgIGludCByZXF1
ZXN0Q291bnQoKTsKICAgICAKICAgICB2b2lkIGNsZWFyUHJlbG9hZHMoKTsKSW5kZXg6IFdlYkNv
cmUvbG9hZGVyL2xvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvbG9hZGVy
LmNwcAkocmV2aXNpb24gNjExMjMpCisrKyBXZWJDb3JlL2xvYWRlci9sb2FkZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04OSw3ICs4OSwxMiBAQCBzdGF0aWMgUmVzb3VyY2VSZXF1ZXN0OjpUYXJn
ZXRUeXBlIGNhY2hlCiAgICAgICAgIHJldHVybiBSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldElzRm9u
dFJlc291cmNlOwogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkltYWdlUmVzb3VyY2U6CiAgICAg
ICAgIHJldHVybiBSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldElzSW1hZ2U7CisjaWYgRU5BQkxFKExJ
TktfUFJFRkVUQ0gpCisgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6TGlua1ByZWZldGNoOgorICAg
ICAgICByZXR1cm4gUmVzb3VyY2VSZXF1ZXN0OjpUYXJnZXRJc1ByZWZldGNoOworI2VuZGlmCiAg
ICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBSZXNvdXJjZVJlcXVl
c3Q6OlRhcmdldElzU3VicmVzb3VyY2U7CiB9CiAKQEAgLTExMCw2ICsxMTUsMTAgQEAgTG9hZGVy
OjpQcmlvcml0eSBMb2FkZXI6OmRldGVybWluZVByaW9yaQogICAgICAgICAgICAgcmV0dXJuIE1l
ZGl1bTsKICAgICAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6SW1hZ2VSZXNvdXJjZToKICAgICAg
ICAgICAgIHJldHVybiBMb3c7CisjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCisgICAgICAgIGNh
c2UgQ2FjaGVkUmVzb3VyY2U6OkxpbmtQcmVmZXRjaDoKKyAgICAgICAgICAgIHJldHVybiBWZXJ5
TG93OworI2VuZGlmCiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVy
biBMb3c7CkBAIC0xMzksOSArMTQ4LDkgQEAgdm9pZCBMb2FkZXI6OmxvYWQoRG9jTG9hZGVyKiBk
b2NMb2FkZXIsIAogICAgIGJvb2wgaGFkUmVxdWVzdHMgPSBob3N0LT5oYXNSZXF1ZXN0cygpOwog
ICAgIFByaW9yaXR5IHByaW9yaXR5ID0gZGV0ZXJtaW5lUHJpb3JpdHkocmVzb3VyY2UpOwogICAg
IGhvc3QtPmFkZFJlcXVlc3QocmVxdWVzdCwgcHJpb3JpdHkpOwotICAgIGRvY0xvYWRlci0+aW5j
cmVtZW50UmVxdWVzdENvdW50KCk7CisgICAgZG9jTG9hZGVyLT5pbmNyZW1lbnRSZXF1ZXN0Q291
bnQocmVxdWVzdC0+Y2FjaGVkUmVzb3VyY2UoKSk7CiAKLSAgICBpZiAocHJpb3JpdHkgPiBMb3cg
fHwgIXVybC5wcm90b2NvbEluSFRUUEZhbWlseSgpIHx8ICFoYWRSZXF1ZXN0cykgeworICAgIGlm
IChwcmlvcml0eSA+IExvdyB8fCAhdXJsLnByb3RvY29sSW5IVFRQRmFtaWx5KCkgfHwgKHByaW9y
aXR5ID09IExvdyAmJiAhaGFkUmVxdWVzdHMpKSB7CiAgICAgICAgIC8vIFRyeSB0byByZXF1ZXN0
IGltcG9ydGFudCByZXNvdXJjZXMgaW1tZWRpYXRlbHkKICAgICAgICAgaG9zdC0+c2VydmVQZW5k
aW5nUmVxdWVzdHMocHJpb3JpdHkpOwogICAgIH0gZWxzZSB7CkBAIC0zNjEsNiArMzcwLDExIEBA
IHZvaWQgTG9hZGVyOjpIb3N0OjpzZXJ2ZVBlbmRpbmdSZXF1ZXN0cygKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogCisjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCisgICAgICAgIGlmIChyZXF1
ZXN0LT5jYWNoZWRSZXNvdXJjZSgpLT50eXBlKCkgPT0gQ2FjaGVkUmVzb3VyY2U6OkxpbmtQcmVm
ZXRjaCkKKyAgICAgICAgICAgIHJlc291cmNlUmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoIlgt
TW96IiwgInByZWZldGNoIik7CisjZW5kaWYKKwogICAgICAgICBSZWZQdHI8U3VicmVzb3VyY2VM
b2FkZXI+IGxvYWRlciA9IFN1YnJlc291cmNlTG9hZGVyOjpjcmVhdGUoZG9jTG9hZGVyLT5kb2Mo
KS0+ZnJhbWUoKSwKICAgICAgICAgICAgIHRoaXMsIHJlc291cmNlUmVxdWVzdCwgcmVxdWVzdC0+
c2hvdWxkRG9TZWN1cml0eUNoZWNrKCksIHJlcXVlc3QtPnNlbmRSZXNvdXJjZUxvYWRDYWxsYmFj
a3MoKSk7CiAgICAgICAgIGlmIChsb2FkZXIpIHsKQEAgLTM3MCw3ICszODQsNyBAQCB2b2lkIExv
YWRlcjo6SG9zdDo6c2VydmVQZW5kaW5nUmVxdWVzdHMoCiAgICAgICAgICAgICBwcmludGYoIkhP
U1QgJXMgQ09VTlQgJWQgTE9BRElORyAlc1xuIiwgcmVzb3VyY2VSZXF1ZXN0LnVybCgpLmhvc3Qo
KS5sYXRpbjEoKS5kYXRhKCksIG1fcmVxdWVzdHNMb2FkaW5nLnNpemUoKSwgcmVxdWVzdC0+Y2Fj
aGVkUmVzb3VyY2UoKS0+dXJsKCkubGF0aW4xKCkuZGF0YSgpKTsKICNlbmRpZgogICAgICAgICB9
IGVsc2UgeyAgICAgICAgICAgIAotICAgICAgICAgICAgZG9jTG9hZGVyLT5kZWNyZW1lbnRSZXF1
ZXN0Q291bnQoKTsKKyAgICAgICAgICAgIGRvY0xvYWRlci0+ZGVjcmVtZW50UmVxdWVzdENvdW50
KHJlcXVlc3QtPmNhY2hlZFJlc291cmNlKCkpOwogICAgICAgICAgICAgZG9jTG9hZGVyLT5zZXRM
b2FkSW5Qcm9ncmVzcyh0cnVlKTsKICAgICAgICAgICAgIHJlcXVlc3QtPmNhY2hlZFJlc291cmNl
KCktPmVycm9yKCk7CiAgICAgICAgICAgICBkb2NMb2FkZXItPnNldExvYWRJblByb2dyZXNzKGZh
bHNlKTsKQEAgLTM5NCw3ICs0MDgsNyBAQCB2b2lkIExvYWRlcjo6SG9zdDo6ZGlkRmluaXNoTG9h
ZGluZyhTdWJyCiAgICAgLy8gdGhlIGRvY0xvYWRlciB0aGF0IGl0IHdpbGwgZGVsZXRlIHdoZW4g
dGhlIGRvY3VtZW50IGdldHMgZGVsZXRlZC4KICAgICBSZWZQdHI8RG9jdW1lbnQ+IHByb3RlY3Rv
cihkb2NMb2FkZXItPmRvYygpKTsKICAgICBpZiAoIXJlcXVlc3QtPmlzTXVsdGlwYXJ0KCkpCi0g
ICAgICAgIGRvY0xvYWRlci0+ZGVjcmVtZW50UmVxdWVzdENvdW50KCk7CisgICAgICAgIGRvY0xv
YWRlci0+ZGVjcmVtZW50UmVxdWVzdENvdW50KHJlcXVlc3QtPmNhY2hlZFJlc291cmNlKCkpOwog
CiAgICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlID0gcmVxdWVzdC0+Y2FjaGVkUmVzb3VyY2Uo
KTsKICAgICBBU1NFUlQoIXJlc291cmNlLT5yZXNvdXJjZVRvUmV2YWxpZGF0ZSgpKTsKQEAgLTQ0
Miw3ICs0NTYsNyBAQCB2b2lkIExvYWRlcjo6SG9zdDo6ZGlkRmFpbChTdWJyZXNvdXJjZUxvCiAg
ICAgLy8gdGhlIGRvY0xvYWRlciB0aGF0IGl0IHdpbGwgZGVsZXRlIHdoZW4gdGhlIGRvY3VtZW50
IGdldHMgZGVsZXRlZC4KICAgICBSZWZQdHI8RG9jdW1lbnQ+IHByb3RlY3Rvcihkb2NMb2FkZXIt
PmRvYygpKTsKICAgICBpZiAoIXJlcXVlc3QtPmlzTXVsdGlwYXJ0KCkpCi0gICAgICAgIGRvY0xv
YWRlci0+ZGVjcmVtZW50UmVxdWVzdENvdW50KCk7CisgICAgICAgIGRvY0xvYWRlci0+ZGVjcmVt
ZW50UmVxdWVzdENvdW50KHJlcXVlc3QtPmNhY2hlZFJlc291cmNlKCkpOwogCiAgICAgQ2FjaGVk
UmVzb3VyY2UqIHJlc291cmNlID0gcmVxdWVzdC0+Y2FjaGVkUmVzb3VyY2UoKTsKICAgICAKQEAg
LTQ4Nyw3ICs1MDEsNyBAQCB2b2lkIExvYWRlcjo6SG9zdDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFN1
CiAgICAgICAgICAgICAvLyAzMDQgTm90IG1vZGlmaWVkIC8gVXNlIGxvY2FsIGNvcHkKICAgICAg
ICAgICAgIG1fcmVxdWVzdHNMb2FkaW5nLnJlbW92ZShsb2FkZXIpOwogICAgICAgICAgICAgbG9h
ZGVyLT5jbGVhckNsaWVudCgpOwotICAgICAgICAgICAgcmVxdWVzdC0+ZG9jTG9hZGVyKCktPmRl
Y3JlbWVudFJlcXVlc3RDb3VudCgpOworICAgICAgICAgICAgcmVxdWVzdC0+ZG9jTG9hZGVyKCkt
PmRlY3JlbWVudFJlcXVlc3RDb3VudChyZXF1ZXN0LT5jYWNoZWRSZXNvdXJjZSgpKTsKIAogICAg
ICAgICAgICAgLy8gRXhpc3RpbmcgcmVzb3VyY2UgaXMgb2ssIGp1c3QgdXNlIGl0IHVwZGF0aW5n
IHRoZSBleHBpcmF0aW9uIHRpbWUuCiAgICAgICAgICAgICBjYWNoZSgpLT5yZXZhbGlkYXRpb25T
dWNjZWVkZWQocmVzb3VyY2UsIHJlc3BvbnNlKTsKQEAgLTUxOSw3ICs1MzMsNyBAQCB2b2lkIExv
YWRlcjo6SG9zdDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFN1CiAgICAgICAgIHJlcXVlc3QtPnNldElz
TXVsdGlwYXJ0KHRydWUpOwogICAgICAgICAKICAgICAgICAgLy8gV2UgZG9uJ3QgY291bnQgbXVs
dGlQYXJ0cyBpbiBhIERvY0xvYWRlcidzIHJlcXVlc3QgY291bnQKLSAgICAgICAgcmVxdWVzdC0+
ZG9jTG9hZGVyKCktPmRlY3JlbWVudFJlcXVlc3RDb3VudCgpOworICAgICAgICByZXF1ZXN0LT5k
b2NMb2FkZXIoKS0+ZGVjcmVtZW50UmVxdWVzdENvdW50KHJlcXVlc3QtPmNhY2hlZFJlc291cmNl
KCkpOwogCiAgICAgICAgIC8vIElmIHdlIGdldCBhIG11bHRpcGFydCByZXNwb25zZSwgd2UgbXVz
dCBoYXZlIGEgaGFuZGxlCiAgICAgICAgIEFTU0VSVChsb2FkZXItPmhhbmRsZSgpKTsKQEAgLTU4
Miw3ICs1OTYsNyBAQCB2b2lkIExvYWRlcjo6SG9zdDo6Y2FuY2VsUGVuZGluZ1JlcXVlc3RzCiAg
ICAgICAgIGlmIChyZXF1ZXN0LT5kb2NMb2FkZXIoKSA9PSBkb2NMb2FkZXIpIHsKICAgICAgICAg
ICAgIGNhY2hlKCktPnJlbW92ZShyZXF1ZXN0LT5jYWNoZWRSZXNvdXJjZSgpKTsKICAgICAgICAg
ICAgIGRlbGV0ZSByZXF1ZXN0OwotICAgICAgICAgICAgZG9jTG9hZGVyLT5kZWNyZW1lbnRSZXF1
ZXN0Q291bnQoKTsKKyAgICAgICAgICAgIGRvY0xvYWRlci0+ZGVjcmVtZW50UmVxdWVzdENvdW50
KHJlcXVlc3QtPmNhY2hlZFJlc291cmNlKCkpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAg
IHJlbWFpbmluZy5hcHBlbmQocmVxdWVzdCk7CiAgICAgfQpJbmRleDogV2ViQ29yZS9sb2FkZXIv
bG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvbG9hZGVyLmgJKHJldmlzaW9u
IDYxMTIzKQorKysgV2ViQ29yZS9sb2FkZXIvbG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4
LDggKzQ4LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZvaWQgY2FuY2VsUmVx
dWVzdHMoRG9jTG9hZGVyKik7CiAgICAgICAgIAotICAgICAgICBlbnVtIFByaW9yaXR5IHsgTG93
LCBNZWRpdW0sIEhpZ2ggfTsKLSAgICAgICAgdm9pZCBzZXJ2ZVBlbmRpbmdSZXF1ZXN0cyhQcmlv
cml0eSBtaW5pbXVtUHJpb3JpdHkgPSBMb3cpOworICAgICAgICBlbnVtIFByaW9yaXR5IHsgVmVy
eUxvdywgTG93LCBNZWRpdW0sIEhpZ2ggfTsKKyAgICAgICAgdm9pZCBzZXJ2ZVBlbmRpbmdSZXF1
ZXN0cyhQcmlvcml0eSBtaW5pbXVtUHJpb3JpdHkgPSBWZXJ5TG93KTsKIAogICAgICAgICBib29s
IGlzU3VzcGVuZGluZ1BlbmRpbmdSZXF1ZXN0cygpIHsgcmV0dXJuIG1faXNTdXNwZW5kaW5nUGVu
ZGluZ1JlcXVlc3RzOyB9CiAgICAgICAgIHZvaWQgc3VzcGVuZFBlbmRpbmdSZXF1ZXN0cygpOwpA
QCAtNzYsNyArNzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICB2b2lkIGFk
ZFJlcXVlc3QoUmVxdWVzdCosIFByaW9yaXR5KTsKICAgICAgICAgICAgIHZvaWQgbm9uQ2FjaGVS
ZXF1ZXN0SW5GbGlnaHQoKTsKICAgICAgICAgICAgIHZvaWQgbm9uQ2FjaGVSZXF1ZXN0Q29tcGxl
dGUoKTsKLSAgICAgICAgICAgIHZvaWQgc2VydmVQZW5kaW5nUmVxdWVzdHMoUHJpb3JpdHkgbWlu
aW11bVByaW9yaXR5ID0gTG93KTsKKyAgICAgICAgICAgIHZvaWQgc2VydmVQZW5kaW5nUmVxdWVz
dHMoUHJpb3JpdHkgbWluaW11bVByaW9yaXR5ID0gVmVyeUxvdyk7CiAgICAgICAgICAgICB2b2lk
IGNhbmNlbFJlcXVlc3RzKERvY0xvYWRlciopOwogICAgICAgICAgICAgYm9vbCBoYXNSZXF1ZXN0
cygpIGNvbnN0OwogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1
ZXN0QmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZVJlcXVlc3RCYXNlLmgJKHJldmlzaW9uIDYxMTIzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtNjMsNyArNjMsOCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBUYXJnZXRJc09iamVjdCwKICAgICAg
ICAgICAgIFRhcmdldElzTWVkaWEsCiAgICAgICAgICAgICBUYXJnZXRJc1dvcmtlciwKLSAgICAg
ICAgICAgIFRhcmdldElzU2hhcmVkV29ya2VyCisgICAgICAgICAgICBUYXJnZXRJc1NoYXJlZFdv
cmtlciwKKyAgICAgICAgICAgIFRhcmdldElzUHJlZmV0Y2gsCiAgICAgICAgIH07CiAKICAgICAg
ICAgc3RhdGljIFBhc3NPd25QdHI8UmVzb3VyY2VSZXF1ZXN0PiBhZG9wdChQYXNzT3duUHRyPENy
b3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4pOwpJbmRleDogV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lv
biA2MTEyNCkKKysrIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxMyBAQAorMjAxMC0wNi0xNCAgTGVvbiBDbGFya2UgIDxsZW9uY2xhcmtlQGdvb2ds
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIHN1cHBvcnQgZm9yIGxpbmsgcmVsPXByZWZldGNoCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjUyCisKKyAgICAgICAgKiBwdWJsaWMvV2ViVVJM
UmVxdWVzdC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxSZXF1ZXN0OjopOgorCiAyMDEwLTA2
LTE0ICBKZXJlbXkgT3Jsb3cgIDxqb3Jsb3dAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEJ1aWxk
IGZpeC4KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVVJMUmVxdWVzdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVVJMUmVxdWVzdC5oCShyZXZpc2lv
biA2MTEyMykKKysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVVJMUmVxdWVzdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC02OSw3ICs2OSw4IEBAIHB1YmxpYzoKICAgICAgICAgVGFyZ2V0SXNPYmpl
Y3QgPSA3LAogICAgICAgICBUYXJnZXRJc01lZGlhID0gOCwKICAgICAgICAgVGFyZ2V0SXNXb3Jr
ZXIgPSA5LAotICAgICAgICBUYXJnZXRJc1NoYXJlZFdvcmtlciA9IDEwCisgICAgICAgIFRhcmdl
dElzU2hhcmVkV29ya2VyID0gMTAsCisgICAgICAgIFRhcmdldElzUHJlZmV0Y2ggPSAxMSwKICAg
ICB9OwogCiAgICAgfldlYlVSTFJlcXVlc3QoKSB7IHJlc2V0KCk7IH0KSW5kZXg6IExheW91dFRl
c3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlz
aW9uIDYxMTI0KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTkgQEAKKzIwMTAtMDYtMTQgIExlb24gQ2xhcmtlICA8bGVvbmNsYXJrZUBnb29nbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZCBhIGxheW91dCB0ZXN0IGZvciBsaW5rIHJlbD1wcmVmZXRjaC4gSXQncyBkaXNhYmxlZCBzaW5j
ZSB0aGUgZmVhdHVyZSBpcworICAgICAgICBkaXNhYmxlZCBieSBkZWZhdWx0LgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY1MgorCisgICAgICAgICog
ZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLW9ubG9hZC1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC1vbmxvYWQu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNo
Lmxpbms6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9Ta2lwcGVkOgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1NraXBwZWQ6Cisg
ICAgICAgICogcGxhdGZvcm0vd2luL1NraXBwZWQ6CisKIDIwMTAtMDYtMDggIE1hcmN1cyBCdWxh
Y2ggIDxidWxhY2hAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEplcmVteSBP
cmxvdy4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRj
aC1vbmxvYWQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9t
L0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC1vbmxvYWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLW9ubG9h
ZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNiBAQAorVGhpcyB0ZXN0cyB0
aGF0IG9ubG9hZCBldmVudHMgY2FuIGJlIGF0dGFjaGVkIHRvIGxpbmsgZWxlbWVudHMgd2l0aCBy
ZWw9cHJlZmV0Y2guIFNpbmNlIHByZWZldGNoIGxpbmtzIGFyZSBqdXN0IHRoZXJlIGFzIGEgcGVy
Zm9ybWFuY2Ugb3B0aW1pemF0aW9uLCB0aGUgb25sb2FkIGV2ZW50IGlzIHRoZWlyIG9ubHkgcHJv
Z3JhbWF0aWMgc2lkZS1lZmZlY3QuCisKK0lmIGl0IHdvcmtzIHlvdSBzaG91bGQgc2VlIGEgbWVz
c2FnZSBiZWxvdyBzYXlpbmcgdGhlIHRlc3QgaGFzIHBhc3NlZC4KKworVEVTVCBQQVNTRUQuIFRo
ZSBzdHlsZXNoZWV0IGxpbmsgb25sb2FkIGhhbmRsZXIgaGFzIGZpcmVkCisKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC1vbmxvYWQuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0Y2gt
b25sb2FkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlu
a0VsZW1lbnQvcHJlZmV0Y2gtb25sb2FkLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzIg
QEAKKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCI+CisgICAgICAgICAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICB2YXIgaXRlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7
CisgICAgICAgICAgICAgICAgaXRlbS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9k
ZShtZXNzYWdlKSk7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNv
bnNvbGUiKS5hcHBlbmRDaGlsZChpdGVtKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZ1
bmN0aW9uIGRvbmUoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGxvZygiVEVTVCBQ
QVNTRUQuIFRoZSBzdHlsZXNoZWV0IGxpbmsgb25sb2FkIGhhbmRsZXIgaGFzIGZpcmVkIik7Cisg
ICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAg
ICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRV
bnRpbERvbmUoKTsKKyAgICAgICAgICAgIH0KKworCTwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAg
ICA8Ym9keT4KKyAgICAgICAgPHA+VGhpcyB0ZXN0cyB0aGF0IG9ubG9hZCBldmVudHMgY2FuIGJl
IGF0dGFjaGVkIHRvIGxpbmsgZWxlbWVudHMgd2l0aCByZWw9cHJlZmV0Y2guIFNpbmNlIHByZWZl
dGNoIGxpbmtzIGFyZSBqdXN0IHRoZXJlIGFzIGEgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uLCB0
aGUgb25sb2FkIGV2ZW50IGlzIHRoZWlyIG9ubHkgcHJvZ3JhbWF0aWMgc2lkZS1lZmZlY3QuPC9w
PgorICAgICAgICA8cD5JZiBpdCB3b3JrcyB5b3Ugc2hvdWxkIHNlZSBhIG1lc3NhZ2UgYmVsb3cg
c2F5aW5nIHRoZSB0ZXN0IGhhcyBwYXNzZWQuPC9wPgorICAgICAgICA8bGluayBocmVmPSJwcmVm
ZXRjaC5saW5rIiByZWw9InByZWZldGNoIiBvbmxvYWQ9ImRvbmUoKSIgPgorICAgICAgICA8aHI+
CisgICAgICAgIDxwPjxvbCBpZD0iY29uc29sZSI+PC9vbD48L3A+CisgICAgPC9ib2R5PgorPC9o
dG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNo
LmxpbmsKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50
L3ByZWZldGNoLmxpbmsJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1M
TGlua0VsZW1lbnQvcHJlZmV0Y2gubGluawkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorVGhp
cyBpcyB0aGUgbGluayB0aGF0IGlzIGZldGNoZWQgYnkgdGhlIHByZWZldGNoLW9ubG9hZCB0ZXN0
CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAkocmV2aXNpb24gNjExMjMpCisrKyBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAtNTkzNCwzICs1
OTM0LDcgQEAgZmFzdC9mb3Jtcy9zbGlkZXItdHJhbnNmb3JtZWQuaHRtbAogIyBvZiB0aGUgc2xp
ZGVyIHRodW1iIGluIEdUSysgdGhlbWVzLgogZmFzdC9mb3Jtcy9zbGlkZXItbW91c2UtZXZlbnRz
Lmh0bWwKIGZhc3QvZm9ybXMvc2xpZGVyLXpvb21lZC5odG1sCisKKyMgTGluayBwcmVmZXRjaCBp
cyBkaXNhYmxlZCBieSBkZWZhdWx0CisjZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNo
LW9ubG9hZC5odG1sCisKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCShyZXZpc2lvbiA2
MTEyMykKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCSh3b3JraW5nIGNvcHkp
CkBAIC0yOTAsNiArMjkwLDkgQEAgc3RvcmFnZS9pbmRleGVkZGIKIGZhc3QvZG9tL0RldmljZU9y
aWVudGF0aW9uCiBmYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMtb24tZGV2aWNlLW9y
aWVudGF0aW9uLmh0bWwKIAorIyBMaW5rIHByZWZldGNoIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQK
KyNmYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0Y2gtb25sb2FkLmh0bWwKKwogIyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk5MDgKIGZhc3QvZG9tL0dlb2xv
Y2F0aW9uL21heGltdW0tYWdlLmh0bWwKIApJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQv
U2tpcHBlZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCShy
ZXZpc2lvbiA2MTEyMykKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQJKHdvcmtp
bmcgY29weSkKQEAgLTU0MTEsMyArNTQxMSw4IEBAIHN2Zy9XM0MtU1ZHLTEuMS9maWx0ZXJzLWxp
Z2h0LTA0LWYuc3ZnCiAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICMKIGZhc3QvZG9tL0dlb2xvY2F0
aW9uL2NhbGxiYWNrLXRvLXJlbW90ZS1jb250ZXh0Mi5odG1sIAogCisjIExpbmsgcHJlZmV0Y2gg
aXMgZGlzYWJsZWQgYnkgZGVmYXVsdAorI2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRj
aC1vbmxvYWQuaHRtbAorCisKKwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBw
ZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQJKHJldmlz
aW9uIDYxMTIzKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQJKHdvcmtpbmcg
Y29weSkKQEAgLTg5MywzICs4OTMsNiBAQCBzdG9yYWdlL2luZGV4ZWRkYgogIyBUaGlzIHBvcnQg
ZG9lc24ndCBzdXBwb3J0IERldmljZU9yaWVudGF0aW9uLgogZmFzdC9kb20vRGV2aWNlT3JpZW50
YXRpb24KIGZhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1vbi1kZXZpY2Utb3JpZW50
YXRpb24uaHRtbAorCisjIExpbmsgcHJlZmV0Y2ggaXMgZGlzYWJsZWQgYnkgZGVmYXVsdAorZmFz
dC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLW9ubG9hZC5odG1sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58667</attachid>
            <date>2010-06-14 10:07:04 -0700</date>
            <delta_ts>2010-06-18 07:40:28 -0700</delta_ts>
            <desc>Improve test slightly</desc>
            <filename>prefetch5.patch</filename>
            <type>text/plain</type>
            <size>29717</size>
            <attacher name="Leon Clarke">leonclarke</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MTEyNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTUgQEAKKzIwMTAtMDYtMTQgIExlb24gQ2xhcmtlICA8bGVvbmNsYXJrZUBnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBzdXBwb3J0IGZvciBsaW5rIHJlbD1wcmVmZXRjaAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY1MgorCisgICAgICAgIFRlc3Q6IGZhc3QvZG9t
L0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC1vbmxvYWQuaHRtbAorCisgICAgICAgICogaHRtbC9I
VE1MTGlua0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50Ojpw
YXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6
OnRva2VuaXplUmVsQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVu
dDo6cHJvY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6Om5vdGlmeUZp
bmlzaGVkKToKKyAgICAgICAgKiBodG1sL0hUTUxMaW5rRWxlbWVudC5oOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTExpbmtFbGVtZW50OjpSZWxBdHRyaWJ1dGU6OlJlbEF0dHJpYnV0ZSk6CisgICAg
ICAgICogbG9hZGVyL0NhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVJlc291cmNl
KToKKyAgICAgICAgKiBsb2FkZXIvQ2FjaGVkTGlua1ByZWZldGNoLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkTGlua1ByZWZldGNoOjpDYWNoZWRMaW5rUHJlZmV0Y2gpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkTGlua1ByZWZldGNoOjp+Q2FjaGVkTGlua1ByZWZldGNoKToK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZExpbmtQcmVmZXRjaDo6ZGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRMaW5rUHJlZmV0Y2g6OmVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZExpbmtQcmVmZXRjaDo6c2NoZWR1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkTGlu
a1ByZWZldGNoOjppc1ByZWZldGNoKToKKyAgICAgICAgKiBsb2FkZXIvQ2FjaGVkUmVzb3VyY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmRpZEFkZENsaWVudCk6Cisg
ICAgICAgICogbG9hZGVyL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRSZXNvdXJjZTo6KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjppc1ByZWZl
dGNoKToKKyAgICAgICAgKiBsb2FkZXIvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKiBsb2Fk
ZXIvQ2FjaGVkU2NyaXB0Lmg6CisgICAgICAgICogbG9hZGVyL0RvY0xvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEb2NMb2FkZXI6OnJlcXVlc3RMaW5rUHJlZmV0Y2gpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jTG9hZGVyOjpjYW5SZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY0xv
YWRlcjo6aW5jcmVtZW50UmVxdWVzdENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY0xvYWRl
cjo6ZGVjcmVtZW50UmVxdWVzdENvdW50KToKKyAgICAgICAgKiBsb2FkZXIvRG9jTG9hZGVyLmg6
CisgICAgICAgICogbG9hZGVyL2xvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWNoZWRS
ZXNvdXJjZVR5cGVUb1RhcmdldFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TG9hZGVyOjpkZXRl
cm1pbmVQcmlvcml0eSk6CisgICAgICAgIChXZWJDb3JlOjpMb2FkZXI6OmxvYWQpOgorICAgICAg
ICAoV2ViQ29yZTo6TG9hZGVyOjpIb3N0OjpzZXJ2ZVBlbmRpbmdSZXF1ZXN0cyk6CisgICAgICAg
IChXZWJDb3JlOjpMb2FkZXI6Okhvc3Q6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6TG9hZGVyOjpIb3N0OjpkaWRGYWlsKToKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRlcjo6
SG9zdDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRlcjo6SG9z
dDo6Y2FuY2VsUGVuZGluZ1JlcXVlc3RzKToKKyAgICAgICAgKiBsb2FkZXIvbG9hZGVyLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpMb2FkZXI6Oik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZVJlcXVlc3RCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RC
YXNlOjopOgorCiAyMDEwLTA2LTEzICBZYWVsIEFoYXJvbiAgPHlhZWwuYWhhcm9uQG5va2lhLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KSW5k
ZXg6IFdlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCShyZXZpc2lvbiA2MTEyMykKKysrIFdlYkNvcmUv
aHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw5IEBA
CiAjaW5jbHVkZSAiU2NyaXB0RXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgi
CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2lmIEVOQUJMRShMSU5LX1BSRUZFVENI
KQorI2luY2x1ZGUgIkNhY2hlZExpbmtQcmVmZXRjaC5oIgorI2VuZGlmCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtMTMwLDYgKzEzMyw4IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50OjpwYXJz
ZU1hcHBlZEF0dHJpYnUKICAgICAgICAgc2V0RGlzYWJsZWRTdGF0ZSghYXR0ci0+aXNOdWxsKCkp
OwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBvbmJlZm9yZWxvYWRBdHRyKQogICAgICAg
ICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5iZWZvcmVsb2FkRXZlbnQs
IGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cikpOworICAgIGVsc2UgaWYg
KGF0dHItPm5hbWUoKSA9PSBvbmxvYWRBdHRyKQorICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExp
c3RlbmVyKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVu
ZXIodGhpcywgYXR0cikpOwogICAgIGVsc2UgewogICAgICAgICBpZiAoYXR0ci0+bmFtZSgpID09
IHRpdGxlQXR0ciAmJiBtX3NoZWV0KQogICAgICAgICAgICAgbV9zaGVldC0+c2V0VGl0bGUoYXR0
ci0+dmFsdWUoKSk7CkBAIC0xNDMsMTIgKzE0OCwxOSBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6
dG9rZW5pemVSZWxBdHRyaWJ1CiAgICAgcmVsQXR0cmlidXRlLm1faXNJY29uID0gZmFsc2U7CiAg
ICAgcmVsQXR0cmlidXRlLm1faXNBbHRlcm5hdGUgPSBmYWxzZTsKICAgICByZWxBdHRyaWJ1dGUu
bV9pc0ROU1ByZWZldGNoID0gZmFsc2U7CisjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCisgICAg
cmVsQXR0cmlidXRlLm1faXNMaW5rUHJlZmV0Y2ggPSBmYWxzZTsKKyNlbmRpZgogICAgIGlmIChl
cXVhbElnbm9yaW5nQ2FzZShyZWwsICJzdHlsZXNoZWV0IikpCiAgICAgICAgIHJlbEF0dHJpYnV0
ZS5tX2lzU3R5bGVTaGVldCA9IHRydWU7CiAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uo
cmVsLCAiaWNvbiIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKHJlbCwgInNob3J0Y3V0IGljb24iKSkK
ICAgICAgICAgcmVsQXR0cmlidXRlLm1faXNJY29uID0gdHJ1ZTsKICAgICBlbHNlIGlmIChlcXVh
bElnbm9yaW5nQ2FzZShyZWwsICJkbnMtcHJlZmV0Y2giKSkKICAgICAgICAgcmVsQXR0cmlidXRl
Lm1faXNETlNQcmVmZXRjaCA9IHRydWU7CisjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCisgICAg
ZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UocmVsLCAicHJlZmV0Y2giKSkKKyAgICAgICAgcmVs
QXR0cmlidXRlLm1faXNMaW5rUHJlZmV0Y2ggPSB0cnVlOworI2VuZGlmCiAgICAgZWxzZSBpZiAo
ZXF1YWxJZ25vcmluZ0Nhc2UocmVsLCAiYWx0ZXJuYXRlIHN0eWxlc2hlZXQiKSB8fCBlcXVhbEln
bm9yaW5nQ2FzZShyZWwsICJzdHlsZXNoZWV0IGFsdGVybmF0ZSIpKSB7CiAgICAgICAgIHJlbEF0
dHJpYnV0ZS5tX2lzU3R5bGVTaGVldCA9IHRydWU7CiAgICAgICAgIHJlbEF0dHJpYnV0ZS5tX2lz
QWx0ZXJuYXRlID0gdHJ1ZTsKQEAgLTE4NSw2ICsxOTcsMTYgQEAgdm9pZCBIVE1MTGlua0VsZW1l
bnQ6OnByb2Nlc3MoKQogICAgIGlmIChtX3JlbEF0dHJpYnV0ZS5tX2lzRE5TUHJlZmV0Y2ggJiYg
bV91cmwuaXNWYWxpZCgpICYmICFtX3VybC5pc0VtcHR5KCkpCiAgICAgICAgIFJlc291cmNlSGFu
ZGxlOjpwcmVwYXJlRm9yVVJMKG1fdXJsKTsKIAorI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQor
ICAgIGlmIChtX3JlbEF0dHJpYnV0ZS5tX2lzTGlua1ByZWZldGNoICYmIG1fdXJsLmlzVmFsaWQo
KSkgeworICAgICAgICBtX2NhY2hlZExpbmtQcmVmZXRjaCA9IGRvY3VtZW50KCktPmRvY0xvYWRl
cigpLT5yZXF1ZXN0TGlua1ByZWZldGNoKG1fdXJsKTsKKyAgICAgICAgbV9sb2FkaW5nID0gdHJ1
ZTsKKworICAgICAgICBpZiAobV9jYWNoZWRMaW5rUHJlZmV0Y2gpCisgICAgICAgICAgICBtX2Nh
Y2hlZExpbmtQcmVmZXRjaC0+YWRkQ2xpZW50KHRoaXMpOworICAgIH0KKyNlbmRpZgorCiAgICAg
Ym9vbCBhY2NlcHRJZlR5cGVDb250YWluc1RleHRDU1MgPSBkb2N1bWVudCgpLT5wYWdlKCkgJiYg
ZG9jdW1lbnQoKS0+cGFnZSgpLT5zZXR0aW5ncygpICYmIGRvY3VtZW50KCktPnBhZ2UoKS0+c2V0
dGluZ3MoKS0+dHJlYXRzQW55VGV4dENTU0xpbmtBc1N0eWxlc2hlZXQoKTsKIAogICAgIC8vIFN0
eWxlc2hlZXQKQEAgLTMyMyw2ICszNDUsMTEgQEAgYm9vbCBIVE1MTGlua0VsZW1lbnQ6OmlzTG9h
ZGluZygpIGNvbnN0CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PENTU1N0eWxlU2hlZXQgKj4obV9z
aGVldC5nZXQoKSktPmlzTG9hZGluZygpOwogfQogCit2b2lkIEhUTUxMaW5rRWxlbWVudDo6bm90
aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKQoreworICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6
OmNyZWF0ZShldmVudE5hbWVzKCkubG9hZEV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKK30KKwogYm9v
bCBIVE1MTGlua0VsZW1lbnQ6OnNoZWV0TG9hZGVkKCkKIHsKICAgICBpZiAoIWlzTG9hZGluZygp
ICYmICFpc0Rpc2FibGVkKCkgJiYgIWlzQWx0ZXJuYXRlKCkpIHsKSW5kZXg6IFdlYkNvcmUvaHRt
bC9IVE1MTGlua0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTExpbmtF
bGVtZW50LmgJKHJldmlzaW9uIDYxMTIzKQorKysgV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIENhY2hlZENTU1N0eWxlU2hlZXQ7CitjbGFzcyBDYWNoZWRMaW5rUHJlZmV0Y2g7
CiBjbGFzcyBLVVJMOwogCiBjbGFzcyBIVE1MTGlua0VsZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1l
bnQsIHB1YmxpYyBDYWNoZWRSZXNvdXJjZUNsaWVudCB7CkBAIC00MCw4ICs0MSwxOSBAQCBwdWJs
aWM6CiAgICAgICAgIGJvb2wgbV9pc0ljb247CiAgICAgICAgIGJvb2wgbV9pc0FsdGVybmF0ZTsK
ICAgICAgICAgYm9vbCBtX2lzRE5TUHJlZmV0Y2g7CisjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gp
CisgICAgICAgIGJvb2wgbV9pc0xpbmtQcmVmZXRjaDsKKyNlbmRpZgogCi0gICAgICAgIFJlbEF0
dHJpYnV0ZSgpIDogbV9pc1N0eWxlU2hlZXQoZmFsc2UpLCBtX2lzSWNvbihmYWxzZSksIG1faXNB
bHRlcm5hdGUoZmFsc2UpLCBtX2lzRE5TUHJlZmV0Y2goZmFsc2UpIHsgfQorICAgICAgICBSZWxB
dHRyaWJ1dGUoKQorICAgICAgICA6ICAgICBtX2lzU3R5bGVTaGVldChmYWxzZSkKKyAgICAgICAg
ICAgICwgbV9pc0ljb24oZmFsc2UpCisgICAgICAgICAgICAsIG1faXNBbHRlcm5hdGUoZmFsc2Up
CisgICAgICAgICAgICAsIG1faXNETlNQcmVmZXRjaChmYWxzZSkKKyNpZiBFTkFCTEUoTElOS19Q
UkVGRVRDSCkKKyAgICAgICAgICAgICwgbV9pc0xpbmtQcmVmZXRjaChmYWxzZSkKKyNlbmRpZgor
ICAgICAgICAgICAgeyB9OwogICAgIH07CiAKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MTGlu
a0VsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqLCBib29sIGNy
ZWF0ZWRCeVBhcnNlcik7CkBAIC05NSw2ICsxMDcsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gZnJv
bSBDYWNoZWRSZXNvdXJjZUNsaWVudAogICAgIHZpcnR1YWwgdm9pZCBzZXRDU1NTdHlsZVNoZWV0
KGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgS1VSTCYgYmFzZVVSTCwgY29uc3QgU3RyaW5nJiBj
aGFyc2V0LCBjb25zdCBDYWNoZWRDU1NTdHlsZVNoZWV0KiBzaGVldCk7CisgICAgdmlydHVhbCB2
b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKik7CiAgICAgdmlydHVhbCBib29sIHNo
ZWV0TG9hZGVkKCk7CiAKICAgICBib29sIGlzQWx0ZXJuYXRlKCkgY29uc3QgeyByZXR1cm4gbV9k
aXNhYmxlZFN0YXRlID09IFVuc2V0ICYmIG1fcmVsQXR0cmlidXRlLm1faXNBbHRlcm5hdGU7IH0K
QEAgLTEyMiw2ICsxMzUsOSBAQCBwcml2YXRlOgogCiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8
Q2FjaGVkQ1NTU3R5bGVTaGVldD4gbV9jYWNoZWRTaGVldDsKICAgICBSZWZQdHI8Q1NTU3R5bGVT
aGVldD4gbV9zaGVldDsKKyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKKyAgICBDYWNoZWRSZXNv
dXJjZUhhbmRsZTxDYWNoZWRMaW5rUHJlZmV0Y2g+IG1fY2FjaGVkTGlua1ByZWZldGNoOworI2Vu
ZGlmCiAgICAgS1VSTCBtX3VybDsKICAgICBTdHJpbmcgbV90eXBlOwogICAgIFN0cmluZyBtX21l
ZGlhOwpJbmRleDogV2ViQ29yZS9sb2FkZXIvQ2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvbG9hZGVyL0NhY2hlLmNwcAkocmV2aXNpb24gNjExMjMpCisrKyBXZWJDb3JlL2xvYWRlci9D
YWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDkgQEAKICNpbmNsdWRlICJTZWN1
cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRU
aW1lLmg+CisjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCisjaW5jbHVkZSAiQ2FjaGVkTGlua1By
ZWZldGNoLmgiCisjZW5kaWYKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApAQCAtODYsNiArODks
MTAgQEAgc3RhdGljIENhY2hlZFJlc291cmNlKiBjcmVhdGVSZXNvdXJjZShDYQogICAgIGNhc2Ug
Q2FjaGVkUmVzb3VyY2U6OlhCTFN0eWxlU2hlZXQ6CiAgICAgICAgIHJldHVybiBuZXcgQ2FjaGVk
WEJMRG9jdW1lbnQodXJsLnN0cmluZygpKTsKICNlbmRpZgorI2lmIEVOQUJMRShMSU5LX1BSRUZF
VENIKQorICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkxpbmtQcmVmZXRjaDoKKyAgICAgICAgcmV0
dXJuIG5ldyBDYWNoZWRMaW5rUHJlZmV0Y2godXJsLnN0cmluZygpKTsKKyNlbmRpZgogICAgIGRl
ZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0NhY2hl
ZExpbmtQcmVmZXRjaC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0NhY2hlZExpbmtQ
cmVmZXRjaC5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9sb2FkZXIvQ2FjaGVkTGlua1ByZWZl
dGNoLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAx
MCwgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisqLworCisjaWZuZGVmIENhY2hl
ZExpbmtQcmVmZXRjaF9oCisjZGVmaW5lIENhY2hlZExpbmtQcmVmZXRjaF9oCisKKyNpbmNsdWRl
ICJDYWNoZWRSZXNvdXJjZS5oIgorI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCisj
aW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRC
dWZmZXIuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIERvY0xvYWRlcjsKKworY2xhc3MgQ2FjaGVkTGlua1ByZWZldGNoIDogcHVi
bGljIENhY2hlZFJlc291cmNlIHsKK3B1YmxpYzoKKyAgICBDYWNoZWRMaW5rUHJlZmV0Y2goY29u
c3QgU3RyaW5nJiBVUkwpIDogQ2FjaGVkUmVzb3VyY2UoVVJMLCBMaW5rUHJlZmV0Y2gpIHsgfTsK
KyAgICB2aXJ0dWFsIH5DYWNoZWRMaW5rUHJlZmV0Y2goKSB7IH07CisKKyAgICB2aXJ0dWFsIHZv
aWQgZGF0YShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQor
ICAgIHsKKyAgICAgICAgaWYgKCFhbGxEYXRhUmVjZWl2ZWQpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXIgdyhtX2NsaWVudHMpOworICAg
ICAgICB3aGlsZSAoQ2FjaGVkUmVzb3VyY2VDbGllbnQqIGMgPSB3Lm5leHQoKSkKKyAgICAgICAg
ICAgIGMtPm5vdGlmeUZpbmlzaGVkKHRoaXMpOworICAgIH07CisKKyAgICB2aXJ0dWFsIHZvaWQg
ZXJyb3IoKSB7IH07CisKKyAgICB2aXJ0dWFsIGJvb2wgc2NoZWR1bGUoKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNQcmVmZXRjaCgpIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0KK307Cit9CisKKyNlbmRpZgpJbmRleDogV2ViQ29yZS9sb2FkZXIvQ2FjaGVkUmVz
b3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0NhY2hlZFJlc291cmNlLmNw
cAkocmV2aXNpb24gNjExMjMpCisrKyBXZWJDb3JlL2xvYWRlci9DYWNoZWRSZXNvdXJjZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKIAogI2luY2x1ZGUgIkNhY2hlLmgiCiAj
aW5jbHVkZSAiQ2FjaGVkTWV0YWRhdGEuaCIKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVu
dC5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiRG9jTG9h
ZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKQEAgLTIwNCw2ICsyMDUsMTIgQEAgdm9pZCBDYWNo
ZWRSZXNvdXJjZTo6YWRkQ2xpZW50KENhY2hlZFJlcwogICAgIGRpZEFkZENsaWVudChjbGllbnQp
OwogfQogCit2b2lkIENhY2hlZFJlc291cmNlOjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VD
bGllbnQqIGMpCit7CisgICAgaWYgKCFpc0xvYWRpbmcoKSkKKyAgICAgICAgYy0+bm90aWZ5Rmlu
aXNoZWQodGhpcyk7Cit9CisKIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OmFkZENsaWVudFRvU2V0KENh
Y2hlZFJlc291cmNlQ2xpZW50KiBjbGllbnQpCiB7CiAgICAgQVNTRVJUKCFpc1B1cmdlYWJsZSgp
KTsKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0NhY2hlZFJlc291cmNlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9sb2FkZXIvQ2FjaGVkUmVzb3VyY2UuaAkocmV2aXNpb24gNjExMjMpCisrKyBXZWJD
b3JlL2xvYWRlci9DYWNoZWRSZXNvdXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02NCw2ICs2NCw5
IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoWEJMKQogICAgICAgICAsIFhCTAogI2VuZGlmCisjaWYg
RU5BQkxFKExJTktfUFJFRkVUQ0gpCisgICAgICAgICwgTGlua1ByZWZldGNoCisjZW5kaWYKICAg
ICB9OwogCiAgICAgZW51bSBTdGF0dXMgewpAQCAtMTAzLDcgKzEwNiw3IEBAIHB1YmxpYzoKICAg
ICBQcmVsb2FkUmVzdWx0IHByZWxvYWRSZXN1bHQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxQcmVsb2FkUmVzdWx0PihtX3ByZWxvYWRSZXN1bHQpOyB9CiAgICAgdm9pZCBzZXRSZXF1ZXN0
ZWRGcm9tTmV0d29ya2luZ0xheWVyKCkgeyBtX3JlcXVlc3RlZEZyb21OZXR3b3JraW5nTGF5ZXIg
PSB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNl
Q2xpZW50KikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3Vy
Y2VDbGllbnQqKTsKICAgICB2aXJ0dWFsIHZvaWQgYWxsQ2xpZW50c1JlbW92ZWQoKSB7IH0KIAog
ICAgIHVuc2lnbmVkIGNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnRzLnNpemUoKTsgfQpA
QCAtMTIyLDYgKzEyNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldExvYWRpbmcoYm9vbCBiKSB7
IG1fbG9hZGluZyA9IGI7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBpc0ltYWdlKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNQcmVmZXRjaCgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CiAKICAgICB1bnNpZ25lZCBhY2Nlc3NDb3VudCgpIGNvbnN0IHsgcmV0dXJu
IG1fYWNjZXNzQ291bnQ7IH0KICAgICB2b2lkIGluY3JlYXNlQWNjZXNzQ291bnQoKSB7IG1fYWNj
ZXNzQ291bnQrKzsgfQpJbmRleDogV2ViQ29yZS9sb2FkZXIvQ2FjaGVkU2NyaXB0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9DYWNoZWRTY3JpcHQuY3BwCShyZXZpc2lvbiA2MTEy
MykKKysrIFdlYkNvcmUvbG9hZGVyL0NhY2hlZFNjcmlwdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUwLDEyICs1MCw2IEBAIENhY2hlZFNjcmlwdDo6fkNhY2hlZFNjcmlwdCgpCiB7CiB9CiAKLXZv
aWQgQ2FjaGVkU2NyaXB0OjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqIGMpCi17
Ci0gICAgaWYgKCFpc0xvYWRpbmcoKSkKLSAgICAgICAgYy0+bm90aWZ5RmluaXNoZWQodGhpcyk7
Ci19Ci0KIHZvaWQgQ2FjaGVkU2NyaXB0OjphbGxDbGllbnRzUmVtb3ZlZCgpCiB7CiAgICAgbV9k
ZWNvZGVkRGF0YURlbGV0aW9uVGltZXIuc3RhcnRPbmVTaG90KDApOwpJbmRleDogV2ViQ29yZS9s
b2FkZXIvQ2FjaGVkU2NyaXB0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvQ2FjaGVk
U2NyaXB0LmgJKHJldmlzaW9uIDYxMTIzKQorKysgV2ViQ29yZS9sb2FkZXIvQ2FjaGVkU2NyaXB0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAgICAgICAgIGNvbnN0IFN0cmluZyYgc2NyaXB0KCk7CiAKLSAgICAgICAgdmlydHVhbCB2b2lk
IGRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCopOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgYWxsQ2xpZW50c1JlbW92ZWQoKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0RW5jb2Rp
bmcoY29uc3QgU3RyaW5nJik7CkluZGV4OiBXZWJDb3JlL2xvYWRlci9Eb2NMb2FkZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0RvY0xvYWRlci5jcHAJKHJldmlzaW9uIDYxMTIz
KQorKysgV2ViQ29yZS9sb2FkZXIvRG9jTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMs
NiArNDMsOSBAQAogI2luY2x1ZGUgImxvYWRlci5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2lu
LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKKyNp
bmNsdWRlICJDYWNoZWRMaW5rUHJlZmV0Y2guaCIKKyNlbmRpZgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KIAogI2RlZmluZSBQUkVMT0FEX0RFQlVHIDAKQEAgLTE2OCw2ICsxNzEsMTMg
QEAgQ2FjaGVkWEJMRG9jdW1lbnQqIERvY0xvYWRlcjo6cmVxdWVzdFhCTAogfQogI2VuZGlmCiAK
KyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKK0NhY2hlZExpbmtQcmVmZXRjaCogRG9jTG9hZGVy
OjpyZXF1ZXN0TGlua1ByZWZldGNoKGNvbnN0IFN0cmluZyYgdXJsKQoreworICAgIHJldHVybiBz
dGF0aWNfY2FzdDxDYWNoZWRMaW5rUHJlZmV0Y2gqPihyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVz
b3VyY2U6OkxpbmtQcmVmZXRjaCwgdXJsLCBTdHJpbmcoKSkpOworfQorI2VuZGlmCisKIGJvb2wg
RG9jTG9hZGVyOjpjYW5SZXF1ZXN0KENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IEtV
UkwmIHVybCkKIHsKICAgICAvLyBTb21lIHR5cGVzIG9mIHJlc291cmNlcyBjYW4gYmUgbG9hZGVk
IG9ubHkgZnJvbSB0aGUgc2FtZSBvcmlnaW4uICBPdGhlcgpAQCAtMTc4LDYgKzE4OCw5IEBAIGJv
b2wgRG9jTG9hZGVyOjpjYW5SZXF1ZXN0KENhY2hlZFJlc291cmMKICAgICBjYXNlIENhY2hlZFJl
c291cmNlOjpDU1NTdHlsZVNoZWV0OgogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlNjcmlwdDoK
ICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpGb250UmVzb3VyY2U6CisjaWYgRU5BQkxFKExJTktf
UFJFRkVUQ0gpCisgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6TGlua1ByZWZldGNoOgorI2VuZGlm
CiAgICAgICAgIC8vIFRoZXNlIHR5cGVzIG9mIHJlc291cmNlcyBjYW4gYmUgbG9hZGVkIGZyb20g
YW55IG9yaWdpbi4KICAgICAgICAgLy8gRklYTUU6IEFyZSB3ZSBzdXJlIGFib3V0IENhY2hlZFJl
c291cmNlOjpGb250UmVzb3VyY2U/CiAgICAgICAgIGJyZWFrOwpAQCAtMjIwLDYgKzIzMyw5IEBA
IGJvb2wgRG9jTG9hZGVyOjpjYW5SZXF1ZXN0KENhY2hlZFJlc291cmMKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6SW1hZ2VSZXNvdXJjZToKICAgICBjYXNlIENhY2hl
ZFJlc291cmNlOjpDU1NTdHlsZVNoZWV0OgorI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQorICAg
IGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkxpbmtQcmVmZXRjaDoKKyNlbmRpZgogICAgIGNhc2UgQ2Fj
aGVkUmVzb3VyY2U6OkZvbnRSZXNvdXJjZTogewogICAgICAgICAvLyBUaGVzZSByZXNvdXJjZXMg
Y2FuIGNvcnJ1cHQgb25seSB0aGUgZnJhbWUncyBwaXhlbHMuCiAgICAgICAgIGlmIChGcmFtZSog
ZiA9IGZyYW1lKCkpIHsKQEAgLTM1NSwxMyArMzcxLDE5IEBAIHZvaWQgRG9jTG9hZGVyOjpjaGVj
a0NhY2hlT2JqZWN0U3RhdHVzKEMKICAgICBmcmFtZSgpLT5sb2FkZXIoKS0+bG9hZGVkUmVzb3Vy
Y2VGcm9tTWVtb3J5Q2FjaGUocmVzb3VyY2UpOwogfQogCi12b2lkIERvY0xvYWRlcjo6aW5jcmVt
ZW50UmVxdWVzdENvdW50KCkKK3ZvaWQgRG9jTG9hZGVyOjppbmNyZW1lbnRSZXF1ZXN0Q291bnQo
Y29uc3QgQ2FjaGVkUmVzb3VyY2UqIHJlcykKIHsKKyAgICBpZiAocmVzLT5pc1ByZWZldGNoKCkp
CisgICAgICAgIHJldHVybjsKKwogICAgICsrbV9yZXF1ZXN0Q291bnQ7CiB9CiAKLXZvaWQgRG9j
TG9hZGVyOjpkZWNyZW1lbnRSZXF1ZXN0Q291bnQoKQordm9pZCBEb2NMb2FkZXI6OmRlY3JlbWVu
dFJlcXVlc3RDb3VudChjb25zdCBDYWNoZWRSZXNvdXJjZSogcmVzKQogeworICAgIGlmIChyZXMt
PmlzUHJlZmV0Y2goKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgLS1tX3JlcXVlc3RDb3VudDsK
ICAgICBBU1NFUlQobV9yZXF1ZXN0Q291bnQgPiAtMSk7CiB9CkluZGV4OiBXZWJDb3JlL2xvYWRl
ci9Eb2NMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9Eb2NMb2FkZXIuaAko
cmV2aXNpb24gNjExMjMpCisrKyBXZWJDb3JlL2xvYWRlci9Eb2NMb2FkZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtNDUsNiArNDUsOSBAQCBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEZyYW1lOwogY2xh
c3MgSW1hZ2VMb2FkZXI7CiBjbGFzcyBLVVJMOworI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQor
Y2xhc3MgQ2FjaGVkTGlua1ByZWZldGNoOworI2VuZGlmCiAKIC8vIFRoZSBEb2NMb2FkZXIgbWFu
YWdlcyB0aGUgbG9hZGluZyBvZiBzY3JpcHRzL2ltYWdlcy9zdHlsZXNoZWV0cyBmb3IgYSBzaW5n
bGUgZG9jdW1lbnQuCiBjbGFzcyBEb2NMb2FkZXIgOiBwdWJsaWMgTm9uY29weWFibGUgewpAQCAt
NjcsNiArNzAsOSBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFhCTCkKICAgICBDYWNoZWRYQkxEb2N1
bWVudCogcmVxdWVzdFhCTERvY3VtZW50KGNvbnN0IFN0cmluZyAmdXJsKTsKICNlbmRpZgorI2lm
IEVOQUJMRShMSU5LX1BSRUZFVENIKQorICAgIENhY2hlZExpbmtQcmVmZXRjaCogcmVxdWVzdExp
bmtQcmVmZXRjaChjb25zdCBTdHJpbmcgJnVybCk7CisjZW5kaWYKIAogICAgIC8vIExvZ3MgYW4g
YWNjZXNzIGRlbmllZCBtZXNzYWdlIHRvIHRoZSBjb25zb2xlIGZvciB0aGUgc3BlY2lmaWVkIFVS
TC4KICAgICB2b2lkIHByaW50QWNjZXNzRGVuaWVkTWVzc2FnZShjb25zdCBLVVJMJiB1cmwpIGNv
bnN0OwpAQCAtOTEsOCArOTcsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBzZXRBbGxvd1N0
YWxlUmVzb3VyY2VzKGJvb2wgYWxsb3dTdGFsZVJlc291cmNlcykgeyBtX2FsbG93U3RhbGVSZXNv
dXJjZXMgPSBhbGxvd1N0YWxlUmVzb3VyY2VzOyB9CiAKLSAgICB2b2lkIGluY3JlbWVudFJlcXVl
c3RDb3VudCgpOwotICAgIHZvaWQgZGVjcmVtZW50UmVxdWVzdENvdW50KCk7CisgICAgdm9pZCBp
bmNyZW1lbnRSZXF1ZXN0Q291bnQoY29uc3QgQ2FjaGVkUmVzb3VyY2UqKTsKKyAgICB2b2lkIGRl
Y3JlbWVudFJlcXVlc3RDb3VudChjb25zdCBDYWNoZWRSZXNvdXJjZSopOwogICAgIGludCByZXF1
ZXN0Q291bnQoKTsKICAgICAKICAgICB2b2lkIGNsZWFyUHJlbG9hZHMoKTsKSW5kZXg6IFdlYkNv
cmUvbG9hZGVyL2xvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvbG9hZGVy
LmNwcAkocmV2aXNpb24gNjExMjMpCisrKyBXZWJDb3JlL2xvYWRlci9sb2FkZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04OSw3ICs4OSwxMiBAQCBzdGF0aWMgUmVzb3VyY2VSZXF1ZXN0OjpUYXJn
ZXRUeXBlIGNhY2hlCiAgICAgICAgIHJldHVybiBSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldElzRm9u
dFJlc291cmNlOwogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkltYWdlUmVzb3VyY2U6CiAgICAg
ICAgIHJldHVybiBSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldElzSW1hZ2U7CisjaWYgRU5BQkxFKExJ
TktfUFJFRkVUQ0gpCisgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6TGlua1ByZWZldGNoOgorICAg
ICAgICByZXR1cm4gUmVzb3VyY2VSZXF1ZXN0OjpUYXJnZXRJc1ByZWZldGNoOworI2VuZGlmCiAg
ICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBSZXNvdXJjZVJlcXVl
c3Q6OlRhcmdldElzU3VicmVzb3VyY2U7CiB9CiAKQEAgLTExMCw2ICsxMTUsMTAgQEAgTG9hZGVy
OjpQcmlvcml0eSBMb2FkZXI6OmRldGVybWluZVByaW9yaQogICAgICAgICAgICAgcmV0dXJuIE1l
ZGl1bTsKICAgICAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6SW1hZ2VSZXNvdXJjZToKICAgICAg
ICAgICAgIHJldHVybiBMb3c7CisjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCisgICAgICAgIGNh
c2UgQ2FjaGVkUmVzb3VyY2U6OkxpbmtQcmVmZXRjaDoKKyAgICAgICAgICAgIHJldHVybiBWZXJ5
TG93OworI2VuZGlmCiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVy
biBMb3c7CkBAIC0xMzksOSArMTQ4LDkgQEAgdm9pZCBMb2FkZXI6OmxvYWQoRG9jTG9hZGVyKiBk
b2NMb2FkZXIsIAogICAgIGJvb2wgaGFkUmVxdWVzdHMgPSBob3N0LT5oYXNSZXF1ZXN0cygpOwog
ICAgIFByaW9yaXR5IHByaW9yaXR5ID0gZGV0ZXJtaW5lUHJpb3JpdHkocmVzb3VyY2UpOwogICAg
IGhvc3QtPmFkZFJlcXVlc3QocmVxdWVzdCwgcHJpb3JpdHkpOwotICAgIGRvY0xvYWRlci0+aW5j
cmVtZW50UmVxdWVzdENvdW50KCk7CisgICAgZG9jTG9hZGVyLT5pbmNyZW1lbnRSZXF1ZXN0Q291
bnQocmVxdWVzdC0+Y2FjaGVkUmVzb3VyY2UoKSk7CiAKLSAgICBpZiAocHJpb3JpdHkgPiBMb3cg
fHwgIXVybC5wcm90b2NvbEluSFRUUEZhbWlseSgpIHx8ICFoYWRSZXF1ZXN0cykgeworICAgIGlm
IChwcmlvcml0eSA+IExvdyB8fCAhdXJsLnByb3RvY29sSW5IVFRQRmFtaWx5KCkgfHwgKHByaW9y
aXR5ID09IExvdyAmJiAhaGFkUmVxdWVzdHMpKSB7CiAgICAgICAgIC8vIFRyeSB0byByZXF1ZXN0
IGltcG9ydGFudCByZXNvdXJjZXMgaW1tZWRpYXRlbHkKICAgICAgICAgaG9zdC0+c2VydmVQZW5k
aW5nUmVxdWVzdHMocHJpb3JpdHkpOwogICAgIH0gZWxzZSB7CkBAIC0zNjEsNiArMzcwLDExIEBA
IHZvaWQgTG9hZGVyOjpIb3N0OjpzZXJ2ZVBlbmRpbmdSZXF1ZXN0cygKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogCisjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCisgICAgICAgIGlmIChyZXF1
ZXN0LT5jYWNoZWRSZXNvdXJjZSgpLT50eXBlKCkgPT0gQ2FjaGVkUmVzb3VyY2U6OkxpbmtQcmVm
ZXRjaCkKKyAgICAgICAgICAgIHJlc291cmNlUmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoIlgt
TW96IiwgInByZWZldGNoIik7CisjZW5kaWYKKwogICAgICAgICBSZWZQdHI8U3VicmVzb3VyY2VM
b2FkZXI+IGxvYWRlciA9IFN1YnJlc291cmNlTG9hZGVyOjpjcmVhdGUoZG9jTG9hZGVyLT5kb2Mo
KS0+ZnJhbWUoKSwKICAgICAgICAgICAgIHRoaXMsIHJlc291cmNlUmVxdWVzdCwgcmVxdWVzdC0+
c2hvdWxkRG9TZWN1cml0eUNoZWNrKCksIHJlcXVlc3QtPnNlbmRSZXNvdXJjZUxvYWRDYWxsYmFj
a3MoKSk7CiAgICAgICAgIGlmIChsb2FkZXIpIHsKQEAgLTM3MCw3ICszODQsNyBAQCB2b2lkIExv
YWRlcjo6SG9zdDo6c2VydmVQZW5kaW5nUmVxdWVzdHMoCiAgICAgICAgICAgICBwcmludGYoIkhP
U1QgJXMgQ09VTlQgJWQgTE9BRElORyAlc1xuIiwgcmVzb3VyY2VSZXF1ZXN0LnVybCgpLmhvc3Qo
KS5sYXRpbjEoKS5kYXRhKCksIG1fcmVxdWVzdHNMb2FkaW5nLnNpemUoKSwgcmVxdWVzdC0+Y2Fj
aGVkUmVzb3VyY2UoKS0+dXJsKCkubGF0aW4xKCkuZGF0YSgpKTsKICNlbmRpZgogICAgICAgICB9
IGVsc2UgeyAgICAgICAgICAgIAotICAgICAgICAgICAgZG9jTG9hZGVyLT5kZWNyZW1lbnRSZXF1
ZXN0Q291bnQoKTsKKyAgICAgICAgICAgIGRvY0xvYWRlci0+ZGVjcmVtZW50UmVxdWVzdENvdW50
KHJlcXVlc3QtPmNhY2hlZFJlc291cmNlKCkpOwogICAgICAgICAgICAgZG9jTG9hZGVyLT5zZXRM
b2FkSW5Qcm9ncmVzcyh0cnVlKTsKICAgICAgICAgICAgIHJlcXVlc3QtPmNhY2hlZFJlc291cmNl
KCktPmVycm9yKCk7CiAgICAgICAgICAgICBkb2NMb2FkZXItPnNldExvYWRJblByb2dyZXNzKGZh
bHNlKTsKQEAgLTM5NCw3ICs0MDgsNyBAQCB2b2lkIExvYWRlcjo6SG9zdDo6ZGlkRmluaXNoTG9h
ZGluZyhTdWJyCiAgICAgLy8gdGhlIGRvY0xvYWRlciB0aGF0IGl0IHdpbGwgZGVsZXRlIHdoZW4g
dGhlIGRvY3VtZW50IGdldHMgZGVsZXRlZC4KICAgICBSZWZQdHI8RG9jdW1lbnQ+IHByb3RlY3Rv
cihkb2NMb2FkZXItPmRvYygpKTsKICAgICBpZiAoIXJlcXVlc3QtPmlzTXVsdGlwYXJ0KCkpCi0g
ICAgICAgIGRvY0xvYWRlci0+ZGVjcmVtZW50UmVxdWVzdENvdW50KCk7CisgICAgICAgIGRvY0xv
YWRlci0+ZGVjcmVtZW50UmVxdWVzdENvdW50KHJlcXVlc3QtPmNhY2hlZFJlc291cmNlKCkpOwog
CiAgICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlID0gcmVxdWVzdC0+Y2FjaGVkUmVzb3VyY2Uo
KTsKICAgICBBU1NFUlQoIXJlc291cmNlLT5yZXNvdXJjZVRvUmV2YWxpZGF0ZSgpKTsKQEAgLTQ0
Miw3ICs0NTYsNyBAQCB2b2lkIExvYWRlcjo6SG9zdDo6ZGlkRmFpbChTdWJyZXNvdXJjZUxvCiAg
ICAgLy8gdGhlIGRvY0xvYWRlciB0aGF0IGl0IHdpbGwgZGVsZXRlIHdoZW4gdGhlIGRvY3VtZW50
IGdldHMgZGVsZXRlZC4KICAgICBSZWZQdHI8RG9jdW1lbnQ+IHByb3RlY3Rvcihkb2NMb2FkZXIt
PmRvYygpKTsKICAgICBpZiAoIXJlcXVlc3QtPmlzTXVsdGlwYXJ0KCkpCi0gICAgICAgIGRvY0xv
YWRlci0+ZGVjcmVtZW50UmVxdWVzdENvdW50KCk7CisgICAgICAgIGRvY0xvYWRlci0+ZGVjcmVt
ZW50UmVxdWVzdENvdW50KHJlcXVlc3QtPmNhY2hlZFJlc291cmNlKCkpOwogCiAgICAgQ2FjaGVk
UmVzb3VyY2UqIHJlc291cmNlID0gcmVxdWVzdC0+Y2FjaGVkUmVzb3VyY2UoKTsKICAgICAKQEAg
LTQ4Nyw3ICs1MDEsNyBAQCB2b2lkIExvYWRlcjo6SG9zdDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFN1
CiAgICAgICAgICAgICAvLyAzMDQgTm90IG1vZGlmaWVkIC8gVXNlIGxvY2FsIGNvcHkKICAgICAg
ICAgICAgIG1fcmVxdWVzdHNMb2FkaW5nLnJlbW92ZShsb2FkZXIpOwogICAgICAgICAgICAgbG9h
ZGVyLT5jbGVhckNsaWVudCgpOwotICAgICAgICAgICAgcmVxdWVzdC0+ZG9jTG9hZGVyKCktPmRl
Y3JlbWVudFJlcXVlc3RDb3VudCgpOworICAgICAgICAgICAgcmVxdWVzdC0+ZG9jTG9hZGVyKCkt
PmRlY3JlbWVudFJlcXVlc3RDb3VudChyZXF1ZXN0LT5jYWNoZWRSZXNvdXJjZSgpKTsKIAogICAg
ICAgICAgICAgLy8gRXhpc3RpbmcgcmVzb3VyY2UgaXMgb2ssIGp1c3QgdXNlIGl0IHVwZGF0aW5n
IHRoZSBleHBpcmF0aW9uIHRpbWUuCiAgICAgICAgICAgICBjYWNoZSgpLT5yZXZhbGlkYXRpb25T
dWNjZWVkZWQocmVzb3VyY2UsIHJlc3BvbnNlKTsKQEAgLTUxOSw3ICs1MzMsNyBAQCB2b2lkIExv
YWRlcjo6SG9zdDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFN1CiAgICAgICAgIHJlcXVlc3QtPnNldElz
TXVsdGlwYXJ0KHRydWUpOwogICAgICAgICAKICAgICAgICAgLy8gV2UgZG9uJ3QgY291bnQgbXVs
dGlQYXJ0cyBpbiBhIERvY0xvYWRlcidzIHJlcXVlc3QgY291bnQKLSAgICAgICAgcmVxdWVzdC0+
ZG9jTG9hZGVyKCktPmRlY3JlbWVudFJlcXVlc3RDb3VudCgpOworICAgICAgICByZXF1ZXN0LT5k
b2NMb2FkZXIoKS0+ZGVjcmVtZW50UmVxdWVzdENvdW50KHJlcXVlc3QtPmNhY2hlZFJlc291cmNl
KCkpOwogCiAgICAgICAgIC8vIElmIHdlIGdldCBhIG11bHRpcGFydCByZXNwb25zZSwgd2UgbXVz
dCBoYXZlIGEgaGFuZGxlCiAgICAgICAgIEFTU0VSVChsb2FkZXItPmhhbmRsZSgpKTsKQEAgLTU4
Miw3ICs1OTYsNyBAQCB2b2lkIExvYWRlcjo6SG9zdDo6Y2FuY2VsUGVuZGluZ1JlcXVlc3RzCiAg
ICAgICAgIGlmIChyZXF1ZXN0LT5kb2NMb2FkZXIoKSA9PSBkb2NMb2FkZXIpIHsKICAgICAgICAg
ICAgIGNhY2hlKCktPnJlbW92ZShyZXF1ZXN0LT5jYWNoZWRSZXNvdXJjZSgpKTsKICAgICAgICAg
ICAgIGRlbGV0ZSByZXF1ZXN0OwotICAgICAgICAgICAgZG9jTG9hZGVyLT5kZWNyZW1lbnRSZXF1
ZXN0Q291bnQoKTsKKyAgICAgICAgICAgIGRvY0xvYWRlci0+ZGVjcmVtZW50UmVxdWVzdENvdW50
KHJlcXVlc3QtPmNhY2hlZFJlc291cmNlKCkpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAg
IHJlbWFpbmluZy5hcHBlbmQocmVxdWVzdCk7CiAgICAgfQpJbmRleDogV2ViQ29yZS9sb2FkZXIv
bG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvbG9hZGVyLmgJKHJldmlzaW9u
IDYxMTIzKQorKysgV2ViQ29yZS9sb2FkZXIvbG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4
LDggKzQ4LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZvaWQgY2FuY2VsUmVx
dWVzdHMoRG9jTG9hZGVyKik7CiAgICAgICAgIAotICAgICAgICBlbnVtIFByaW9yaXR5IHsgTG93
LCBNZWRpdW0sIEhpZ2ggfTsKLSAgICAgICAgdm9pZCBzZXJ2ZVBlbmRpbmdSZXF1ZXN0cyhQcmlv
cml0eSBtaW5pbXVtUHJpb3JpdHkgPSBMb3cpOworICAgICAgICBlbnVtIFByaW9yaXR5IHsgVmVy
eUxvdywgTG93LCBNZWRpdW0sIEhpZ2ggfTsKKyAgICAgICAgdm9pZCBzZXJ2ZVBlbmRpbmdSZXF1
ZXN0cyhQcmlvcml0eSBtaW5pbXVtUHJpb3JpdHkgPSBWZXJ5TG93KTsKIAogICAgICAgICBib29s
IGlzU3VzcGVuZGluZ1BlbmRpbmdSZXF1ZXN0cygpIHsgcmV0dXJuIG1faXNTdXNwZW5kaW5nUGVu
ZGluZ1JlcXVlc3RzOyB9CiAgICAgICAgIHZvaWQgc3VzcGVuZFBlbmRpbmdSZXF1ZXN0cygpOwpA
QCAtNzYsNyArNzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICB2b2lkIGFk
ZFJlcXVlc3QoUmVxdWVzdCosIFByaW9yaXR5KTsKICAgICAgICAgICAgIHZvaWQgbm9uQ2FjaGVS
ZXF1ZXN0SW5GbGlnaHQoKTsKICAgICAgICAgICAgIHZvaWQgbm9uQ2FjaGVSZXF1ZXN0Q29tcGxl
dGUoKTsKLSAgICAgICAgICAgIHZvaWQgc2VydmVQZW5kaW5nUmVxdWVzdHMoUHJpb3JpdHkgbWlu
aW11bVByaW9yaXR5ID0gTG93KTsKKyAgICAgICAgICAgIHZvaWQgc2VydmVQZW5kaW5nUmVxdWVz
dHMoUHJpb3JpdHkgbWluaW11bVByaW9yaXR5ID0gVmVyeUxvdyk7CiAgICAgICAgICAgICB2b2lk
IGNhbmNlbFJlcXVlc3RzKERvY0xvYWRlciopOwogICAgICAgICAgICAgYm9vbCBoYXNSZXF1ZXN0
cygpIGNvbnN0OwogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1
ZXN0QmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZVJlcXVlc3RCYXNlLmgJKHJldmlzaW9uIDYxMTIzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtNjMsNyArNjMsOCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBUYXJnZXRJc09iamVjdCwKICAgICAg
ICAgICAgIFRhcmdldElzTWVkaWEsCiAgICAgICAgICAgICBUYXJnZXRJc1dvcmtlciwKLSAgICAg
ICAgICAgIFRhcmdldElzU2hhcmVkV29ya2VyCisgICAgICAgICAgICBUYXJnZXRJc1NoYXJlZFdv
cmtlciwKKyAgICAgICAgICAgIFRhcmdldElzUHJlZmV0Y2gsCiAgICAgICAgIH07CiAKICAgICAg
ICAgc3RhdGljIFBhc3NPd25QdHI8UmVzb3VyY2VSZXF1ZXN0PiBhZG9wdChQYXNzT3duUHRyPENy
b3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4pOwpJbmRleDogV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lv
biA2MTEyNCkKKysrIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxMyBAQAorMjAxMC0wNi0xNCAgTGVvbiBDbGFya2UgIDxsZW9uY2xhcmtlQGdvb2ds
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIHN1cHBvcnQgZm9yIGxpbmsgcmVsPXByZWZldGNoCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjUyCisKKyAgICAgICAgKiBwdWJsaWMvV2ViVVJM
UmVxdWVzdC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxSZXF1ZXN0OjopOgorCiAyMDEwLTA2
LTE0ICBKZXJlbXkgT3Jsb3cgIDxqb3Jsb3dAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEJ1aWxk
IGZpeC4KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVVJMUmVxdWVzdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVVJMUmVxdWVzdC5oCShyZXZpc2lv
biA2MTEyMykKKysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVVJMUmVxdWVzdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC02OSw3ICs2OSw4IEBAIHB1YmxpYzoKICAgICAgICAgVGFyZ2V0SXNPYmpl
Y3QgPSA3LAogICAgICAgICBUYXJnZXRJc01lZGlhID0gOCwKICAgICAgICAgVGFyZ2V0SXNXb3Jr
ZXIgPSA5LAotICAgICAgICBUYXJnZXRJc1NoYXJlZFdvcmtlciA9IDEwCisgICAgICAgIFRhcmdl
dElzU2hhcmVkV29ya2VyID0gMTAsCisgICAgICAgIFRhcmdldElzUHJlZmV0Y2ggPSAxMSwKICAg
ICB9OwogCiAgICAgfldlYlVSTFJlcXVlc3QoKSB7IHJlc2V0KCk7IH0KSW5kZXg6IExheW91dFRl
c3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlz
aW9uIDYxMTI0KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTkgQEAKKzIwMTAtMDYtMTQgIExlb24gQ2xhcmtlICA8bGVvbmNsYXJrZUBnb29nbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZCBhIGxheW91dCB0ZXN0IGZvciBsaW5rIHJlbD1wcmVmZXRjaC4gSXQncyBkaXNhYmxlZCBzaW5j
ZSB0aGUgZmVhdHVyZSBpcworICAgICAgICBkaXNhYmxlZCBieSBkZWZhdWx0LgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY1MgorCisgICAgICAgICog
ZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLW9ubG9hZC1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC1vbmxvYWQu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNo
Lmxpbms6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9Ta2lwcGVkOgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1NraXBwZWQ6Cisg
ICAgICAgICogcGxhdGZvcm0vd2luL1NraXBwZWQ6CisKIDIwMTAtMDYtMDggIE1hcmN1cyBCdWxh
Y2ggIDxidWxhY2hAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEplcmVteSBP
cmxvdy4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRj
aC1vbmxvYWQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9t
L0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC1vbmxvYWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLW9ubG9h
ZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNiBAQAorVGhpcyB0ZXN0cyB0
aGF0IG9ubG9hZCBldmVudHMgY2FuIGJlIGF0dGFjaGVkIHRvIGxpbmsgZWxlbWVudHMgd2l0aCBy
ZWw9cHJlZmV0Y2guIFNpbmNlIHByZWZldGNoIGxpbmtzIGFyZSBqdXN0IHRoZXJlIGFzIGEgcGVy
Zm9ybWFuY2Ugb3B0aW1pemF0aW9uLCB0aGUgb25sb2FkIGV2ZW50IGlzIHRoZWlyIG9ubHkgcHJv
Z3JhbWF0aWMgc2lkZS1lZmZlY3QuCisKK0lmIGl0IHdvcmtzIHlvdSBzaG91bGQgc2VlIGEgbWVz
c2FnZSBiZWxvdyBzYXlpbmcgdGhlIHRlc3QgaGFzIHBhc3NlZC4KKworVEVTVCBQQVNTRUQuIFRo
ZSBzdHlsZXNoZWV0IGxpbmsgb25sb2FkIGhhbmRsZXIgaGFzIGZpcmVkIGFmdGVyIHRoZSBkb2N1
bWVudCBvbmxvYWQgaGFuZGxlcgorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlu
a0VsZW1lbnQvcHJlZmV0Y2gtb25sb2FkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLW9ubG9hZC5odG1sCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLW9ubG9h
ZC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ0IEBACis8aHRtbD4KKyAgICA8aGVhZD4K
KyAgICAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgICAgICAgICAgZ290
X21haW4gPSBmYWxzZTsKKyAgICAgICAgICAgIGdvdF9wcmVmZXRjaCA9IGZhbHNlOworCisgICAg
ICAgICAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICB2YXIgaXRlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7CisgICAgICAgICAg
ICAgICAgaXRlbS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdlKSk7
CisgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5hcHBl
bmRDaGlsZChpdGVtKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZ1bmN0aW9uIGRvbmUo
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGdvdF9wcmVmZXRjaCA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgaWYgKGdvdF9tYWluKSB7CisgICAgICAgICAgICAgICAgICAgIGxvZygi
VEVTVCBQQVNTRUQuIFRoZSBzdHlsZXNoZWV0IGxpbmsgb25sb2FkIGhhbmRsZXIgaGFzIGZpcmVk
IGFmdGVyIHRoZSBkb2N1bWVudCBvbmxvYWQgaGFuZGxlciIpOworICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGxvZygiVEVTVCBGQUlMRUQuIFRoZSBzdHlsZXNo
ZWV0IGxpbmsgb25sb2FkIGhhbmRsZXIgaGFzIGZpcmVkIGJlZm9yZSB0aGUgZG9jdW1lbnQgb25s
b2FkIGhhbmRsZXIiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICAgICAgICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBtYWluX29ubG9hZCgpIHsKKyAgICAgICAgICAg
ICAgICBnb3RfbWFpbiA9IHRydWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICAgICAgfQorCisJPC9zY3JpcHQ+CisgICAg
PC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ibWFpbl9vbmxvYWQoKSI+CisgICAgICAgIDxwPlRo
aXMgdGVzdHMgdGhhdCBvbmxvYWQgZXZlbnRzIGNhbiBiZSBhdHRhY2hlZCB0byBsaW5rIGVsZW1l
bnRzIHdpdGggcmVsPXByZWZldGNoLiBTaW5jZSBwcmVmZXRjaCBsaW5rcyBhcmUganVzdCB0aGVy
ZSBhcyBhIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiwgdGhlIG9ubG9hZCBldmVudCBpcyB0aGVp
ciBvbmx5IHByb2dyYW1hdGljIHNpZGUtZWZmZWN0LjwvcD4KKyAgICAgICAgPHA+SWYgaXQgd29y
a3MgeW91IHNob3VsZCBzZWUgYSBtZXNzYWdlIGJlbG93IHNheWluZyB0aGUgdGVzdCBoYXMgcGFz
c2VkLjwvcD4KKyAgICAgICAgPGxpbmsgaHJlZj0icHJlZmV0Y2gubGluayIgcmVsPSJwcmVmZXRj
aCIgb25sb2FkPSJkb25lKCkiID4KKyAgICAgICAgPGhyPgorICAgICAgICA8cD48b2wgaWQ9ImNv
bnNvbGUiPjwvb2w+PC9wPgorICAgIDwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC5saW5rCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC5saW5rCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLmxp
bmsJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEgQEAKK1RoaXMgaXMgdGhlIGxpbmsgdGhhdCBpcyBm
ZXRjaGVkIGJ5IHRoZSBwcmVmZXRjaC1vbmxvYWQgdGVzdApJbmRleDogTGF5b3V0VGVzdHMvcGxh
dGZvcm0vZ3RrL1NraXBwZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3Rr
L1NraXBwZWQJKHJldmlzaW9uIDYxMTIzKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Nr
aXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTU5MzQsMyArNTkzNCw3IEBAIGZhc3QvZm9ybXMvc2xp
ZGVyLXRyYW5zZm9ybWVkLmh0bWwKICMgb2YgdGhlIHNsaWRlciB0aHVtYiBpbiBHVEsrIHRoZW1l
cy4KIGZhc3QvZm9ybXMvc2xpZGVyLW1vdXNlLWV2ZW50cy5odG1sCiBmYXN0L2Zvcm1zL3NsaWRl
ci16b29tZWQuaHRtbAorCisjIExpbmsgcHJlZmV0Y2ggaXMgZGlzYWJsZWQgYnkgZGVmYXVsdAor
I2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC1vbmxvYWQuaHRtbAorCkluZGV4OiBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZAkocmV2aXNpb24gNjExMjMpCisrKyBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvU2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAtMjkwLDYgKzI5MCw5IEBAIHN0
b3JhZ2UvaW5kZXhlZGRiCiBmYXN0L2RvbS9EZXZpY2VPcmllbnRhdGlvbgogZmFzdC9kb20vV2lu
ZG93L3dpbmRvdy1wcm9wZXJ0aWVzLW9uLWRldmljZS1vcmllbnRhdGlvbi5odG1sCiAKKyMgTGlu
ayBwcmVmZXRjaCBpcyBkaXNhYmxlZCBieSBkZWZhdWx0CisjZmFzdC9kb20vSFRNTExpbmtFbGVt
ZW50L3ByZWZldGNoLW9ubG9hZC5odG1sCisKICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTM5OTA4CiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9tYXhpbXVtLWFnZS5odG1s
CiAKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAkocmV2aXNpb24gNjExMjMpCisrKyBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC01NDExLDMgKzU0
MTEsOCBAQCBzdmcvVzNDLVNWRy0xLjEvZmlsdGVycy1saWdodC0wNC1mLnN2ZwogIyA9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PSAjCiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9jYWxsYmFjay10by1yZW1vdGUt
Y29udGV4dDIuaHRtbCAKIAorIyBMaW5rIHByZWZldGNoIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQK
KyNmYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0Y2gtb25sb2FkLmh0bWwKKworCisKSW5k
ZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCShyZXZpc2lvbiA2MTEyMykKKysrIExheW91dFRl
c3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC04OTMsMyArODkzLDYg
QEAgc3RvcmFnZS9pbmRleGVkZGIKICMgVGhpcyBwb3J0IGRvZXNuJ3Qgc3VwcG9ydCBEZXZpY2VP
cmllbnRhdGlvbi4KIGZhc3QvZG9tL0RldmljZU9yaWVudGF0aW9uCiBmYXN0L2RvbS9XaW5kb3cv
d2luZG93LXByb3BlcnRpZXMtb24tZGV2aWNlLW9yaWVudGF0aW9uLmh0bWwKKworIyBMaW5rIHBy
ZWZldGNoIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQKK2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9w
cmVmZXRjaC1vbmxvYWQuaHRtbAo=
</data>
<flag name="review"
          id="45066"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59107</attachid>
            <date>2010-06-18 07:40:28 -0700</date>
            <delta_ts>2010-06-18 07:46:01 -0700</delta_ts>
            <desc>Remove the header</desc>
            <filename>prefetch6.patch</filename>
            <type>text/plain</type>
            <size>29456</size>
            <attacher name="Leon Clarke">leonclarke</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MTQwNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTUgQEAKKzIwMTAtMDYtMTggIExlb24gQ2xhcmtlICA8bGVvbmNsYXJrZUBnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisJQWRkIHN1
cHBvcnQgZm9yIGxpbmsgcmVsPXByZWZldGNoCisJaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTM2NTIKKworICAgICAgICBUZXN0OiBmYXN0L2RvbS9IVE1MTGlua0VsZW1l
bnQvcHJlZmV0Y2gtb25sb2FkLmh0bWwKKworICAgICAgICAqIGh0bWwvSFRNTExpbmtFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRy
aWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50Ojp0b2tlbml6ZVJlbEF0
dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OnByb2Nlc3MpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAg
ICAgICogaHRtbC9IVE1MTGlua0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5r
RWxlbWVudDo6UmVsQXR0cmlidXRlOjpSZWxBdHRyaWJ1dGUpOgorICAgICAgICAqIGxvYWRlci9D
YWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVSZXNvdXJjZSk6CisgICAgICAgICog
bG9hZGVyL0NhY2hlZExpbmtQcmVmZXRjaC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZExpbmtQcmVmZXRjaDo6Q2FjaGVkTGlua1ByZWZldGNoKToKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZExpbmtQcmVmZXRjaDo6fkNhY2hlZExpbmtQcmVmZXRjaCk6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRMaW5rUHJlZmV0Y2g6OmRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
TGlua1ByZWZldGNoOjplcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRMaW5rUHJlZmV0
Y2g6OnNjaGVkdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZExpbmtQcmVmZXRjaDo6aXNQ
cmVmZXRjaCk6CisgICAgICAgICogbG9hZGVyL0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpkaWRBZGRDbGllbnQpOgorICAgICAgICAqIGxvYWRl
ci9DYWNoZWRSZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6Oik6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6aXNQcmVmZXRjaCk6CisgICAgICAg
ICogbG9hZGVyL0NhY2hlZFNjcmlwdC5jcHA6CisgICAgICAgICogbG9hZGVyL0NhY2hlZFNjcmlw
dC5oOgorICAgICAgICAqIGxvYWRlci9Eb2NMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RG9jTG9hZGVyOjpyZXF1ZXN0TGlua1ByZWZldGNoKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY0xv
YWRlcjo6Y2FuUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2NMb2FkZXI6OmluY3JlbWVu
dFJlcXVlc3RDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2NMb2FkZXI6OmRlY3JlbWVudFJl
cXVlc3RDb3VudCk6CisgICAgICAgICogbG9hZGVyL0RvY0xvYWRlci5oOgorICAgICAgICAqIGxv
YWRlci9sb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2FjaGVkUmVzb3VyY2VUeXBlVG9U
YXJnZXRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRlcjo6ZGV0ZXJtaW5lUHJpb3JpdHkp
OgorICAgICAgICAoV2ViQ29yZTo6TG9hZGVyOjpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6Okxv
YWRlcjo6SG9zdDo6c2VydmVQZW5kaW5nUmVxdWVzdHMpOgorICAgICAgICAoV2ViQ29yZTo6TG9h
ZGVyOjpIb3N0OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRlcjo6
SG9zdDo6ZGlkRmFpbCk6CisgICAgICAgIChXZWJDb3JlOjpMb2FkZXI6Okhvc3Q6OmRpZFJlY2Vp
dmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpMb2FkZXI6Okhvc3Q6OmNhbmNlbFBlbmRp
bmdSZXF1ZXN0cyk6CisgICAgICAgICogbG9hZGVyL2xvYWRlci5oOgorICAgICAgICAoV2ViQ29y
ZTo6TG9hZGVyOjopOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0
QmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0QmFzZTo6KToKKwogMjAx
MC0wNi0xOCAgQW50b24gTXVoaW4gIDxhbnRvbm1AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MTGlua0Vs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3Bw
CShyZXZpc2lvbiA2MTQwMCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw5IEBACiAjaW5jbHVkZSAiU2NyaXB0RXZlbnRMaXN0
ZW5lci5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJh
cy5oPgorI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQorI2luY2x1ZGUgIkNhY2hlZExpbmtQcmVm
ZXRjaC5oIgorI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTMwLDYgKzEzMyw4
IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnUKICAgICAgICAgc2V0
RGlzYWJsZWRTdGF0ZSghYXR0ci0+aXNOdWxsKCkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUo
KSA9PSBvbmJlZm9yZWxvYWRBdHRyKQogICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVy
KGV2ZW50TmFtZXMoKS5iZWZvcmVsb2FkRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVu
ZXIodGhpcywgYXR0cikpOworICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBvbmxvYWRBdHRy
KQorICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5sb2FkRXZl
bnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cikpOwogICAgIGVsc2Ug
ewogICAgICAgICBpZiAoYXR0ci0+bmFtZSgpID09IHRpdGxlQXR0ciAmJiBtX3NoZWV0KQogICAg
ICAgICAgICAgbV9zaGVldC0+c2V0VGl0bGUoYXR0ci0+dmFsdWUoKSk7CkBAIC0xNDMsMTIgKzE0
OCwxOSBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6dG9rZW5pemVSZWxBdHRyaWJ1CiAgICAgcmVs
QXR0cmlidXRlLm1faXNJY29uID0gZmFsc2U7CiAgICAgcmVsQXR0cmlidXRlLm1faXNBbHRlcm5h
dGUgPSBmYWxzZTsKICAgICByZWxBdHRyaWJ1dGUubV9pc0ROU1ByZWZldGNoID0gZmFsc2U7Cisj
aWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCisgICAgcmVsQXR0cmlidXRlLm1faXNMaW5rUHJlZmV0
Y2ggPSBmYWxzZTsKKyNlbmRpZgogICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShyZWwsICJzdHls
ZXNoZWV0IikpCiAgICAgICAgIHJlbEF0dHJpYnV0ZS5tX2lzU3R5bGVTaGVldCA9IHRydWU7CiAg
ICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UocmVsLCAiaWNvbiIpIHx8IGVxdWFsSWdub3Jp
bmdDYXNlKHJlbCwgInNob3J0Y3V0IGljb24iKSkKICAgICAgICAgcmVsQXR0cmlidXRlLm1faXNJ
Y29uID0gdHJ1ZTsKICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShyZWwsICJkbnMtcHJl
ZmV0Y2giKSkKICAgICAgICAgcmVsQXR0cmlidXRlLm1faXNETlNQcmVmZXRjaCA9IHRydWU7Cisj
aWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCisgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uo
cmVsLCAicHJlZmV0Y2giKSkKKyAgICAgICAgcmVsQXR0cmlidXRlLm1faXNMaW5rUHJlZmV0Y2gg
PSB0cnVlOworI2VuZGlmCiAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UocmVsLCAiYWx0
ZXJuYXRlIHN0eWxlc2hlZXQiKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShyZWwsICJzdHlsZXNoZWV0
IGFsdGVybmF0ZSIpKSB7CiAgICAgICAgIHJlbEF0dHJpYnV0ZS5tX2lzU3R5bGVTaGVldCA9IHRy
dWU7CiAgICAgICAgIHJlbEF0dHJpYnV0ZS5tX2lzQWx0ZXJuYXRlID0gdHJ1ZTsKQEAgLTE4NSw2
ICsxOTcsMTYgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnByb2Nlc3MoKQogICAgIGlmIChtX3Jl
bEF0dHJpYnV0ZS5tX2lzRE5TUHJlZmV0Y2ggJiYgbV91cmwuaXNWYWxpZCgpICYmICFtX3VybC5p
c0VtcHR5KCkpCiAgICAgICAgIFJlc291cmNlSGFuZGxlOjpwcmVwYXJlRm9yVVJMKG1fdXJsKTsK
IAorI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQorICAgIGlmIChtX3JlbEF0dHJpYnV0ZS5tX2lz
TGlua1ByZWZldGNoICYmIG1fdXJsLmlzVmFsaWQoKSkgeworICAgICAgICBtX2NhY2hlZExpbmtQ
cmVmZXRjaCA9IGRvY3VtZW50KCktPmRvY0xvYWRlcigpLT5yZXF1ZXN0TGlua1ByZWZldGNoKG1f
dXJsKTsKKyAgICAgICAgbV9sb2FkaW5nID0gdHJ1ZTsKKworICAgICAgICBpZiAobV9jYWNoZWRM
aW5rUHJlZmV0Y2gpCisgICAgICAgICAgICBtX2NhY2hlZExpbmtQcmVmZXRjaC0+YWRkQ2xpZW50
KHRoaXMpOworICAgIH0KKyNlbmRpZgorCiAgICAgYm9vbCBhY2NlcHRJZlR5cGVDb250YWluc1Rl
eHRDU1MgPSBkb2N1bWVudCgpLT5wYWdlKCkgJiYgZG9jdW1lbnQoKS0+cGFnZSgpLT5zZXR0aW5n
cygpICYmIGRvY3VtZW50KCktPnBhZ2UoKS0+c2V0dGluZ3MoKS0+dHJlYXRzQW55VGV4dENTU0xp
bmtBc1N0eWxlc2hlZXQoKTsKIAogICAgIC8vIFN0eWxlc2hlZXQKQEAgLTMyMyw2ICszNDUsMTEg
QEAgYm9vbCBIVE1MTGlua0VsZW1lbnQ6OmlzTG9hZGluZygpIGNvbnN0CiAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PENTU1N0eWxlU2hlZXQgKj4obV9zaGVldC5nZXQoKSktPmlzTG9hZGluZygpOwog
fQogCit2b2lkIEhUTUxMaW5rRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2Uq
KQoreworICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkubG9hZEV2
ZW50LCBmYWxzZSwgZmFsc2UpKTsKK30KKwogYm9vbCBIVE1MTGlua0VsZW1lbnQ6OnNoZWV0TG9h
ZGVkKCkKIHsKICAgICBpZiAoIWlzTG9hZGluZygpICYmICFpc0Rpc2FibGVkKCkgJiYgIWlzQWx0
ZXJuYXRlKCkpIHsKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgJKHJldmlzaW9uIDYxNDAwKQor
KysgV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2
ICszMSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENhY2hlZENTU1N0eWxlU2hl
ZXQ7CitjbGFzcyBDYWNoZWRMaW5rUHJlZmV0Y2g7CiBjbGFzcyBLVVJMOwogCiBjbGFzcyBIVE1M
TGlua0VsZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1lbnQsIHB1YmxpYyBDYWNoZWRSZXNvdXJjZUNs
aWVudCB7CkBAIC00MCw4ICs0MSwxOSBAQCBwdWJsaWM6CiAgICAgICAgIGJvb2wgbV9pc0ljb247
CiAgICAgICAgIGJvb2wgbV9pc0FsdGVybmF0ZTsKICAgICAgICAgYm9vbCBtX2lzRE5TUHJlZmV0
Y2g7CisjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCisgICAgICAgIGJvb2wgbV9pc0xpbmtQcmVm
ZXRjaDsKKyNlbmRpZgogCi0gICAgICAgIFJlbEF0dHJpYnV0ZSgpIDogbV9pc1N0eWxlU2hlZXQo
ZmFsc2UpLCBtX2lzSWNvbihmYWxzZSksIG1faXNBbHRlcm5hdGUoZmFsc2UpLCBtX2lzRE5TUHJl
ZmV0Y2goZmFsc2UpIHsgfQorICAgICAgICBSZWxBdHRyaWJ1dGUoKQorICAgICAgICA6ICAgICBt
X2lzU3R5bGVTaGVldChmYWxzZSkKKyAgICAgICAgICAgICwgbV9pc0ljb24oZmFsc2UpCisgICAg
ICAgICAgICAsIG1faXNBbHRlcm5hdGUoZmFsc2UpCisgICAgICAgICAgICAsIG1faXNETlNQcmVm
ZXRjaChmYWxzZSkKKyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKKyAgICAgICAgICAgICwgbV9p
c0xpbmtQcmVmZXRjaChmYWxzZSkKKyNlbmRpZgorICAgICAgICAgICAgeyB9OwogICAgIH07CiAK
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MTGlua0VsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiwgRG9jdW1lbnQqLCBib29sIGNyZWF0ZWRCeVBhcnNlcik7CkBAIC05NSw2ICsx
MDcsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gZnJvbSBDYWNoZWRSZXNvdXJjZUNsaWVudAogICAg
IHZpcnR1YWwgdm9pZCBzZXRDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3Qg
S1VSTCYgYmFzZVVSTCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBjb25zdCBDYWNoZWRDU1NTdHls
ZVNoZWV0KiBzaGVldCk7CisgICAgdmlydHVhbCB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJl
c291cmNlKik7CiAgICAgdmlydHVhbCBib29sIHNoZWV0TG9hZGVkKCk7CiAKICAgICBib29sIGlz
QWx0ZXJuYXRlKCkgY29uc3QgeyByZXR1cm4gbV9kaXNhYmxlZFN0YXRlID09IFVuc2V0ICYmIG1f
cmVsQXR0cmlidXRlLm1faXNBbHRlcm5hdGU7IH0KQEAgLTEyMiw2ICsxMzUsOSBAQCBwcml2YXRl
OgogCiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkQ1NTU3R5bGVTaGVldD4gbV9jYWNo
ZWRTaGVldDsKICAgICBSZWZQdHI8Q1NTU3R5bGVTaGVldD4gbV9zaGVldDsKKyNpZiBFTkFCTEUo
TElOS19QUkVGRVRDSCkKKyAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRMaW5rUHJlZmV0
Y2g+IG1fY2FjaGVkTGlua1ByZWZldGNoOworI2VuZGlmCiAgICAgS1VSTCBtX3VybDsKICAgICBT
dHJpbmcgbV90eXBlOwogICAgIFN0cmluZyBtX21lZGlhOwpJbmRleDogV2ViQ29yZS9sb2FkZXIv
Q2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0NhY2hlLmNwcAkocmV2aXNp
b24gNjE0MDApCisrKyBXZWJDb3JlL2xvYWRlci9DYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM4LDYgKzM4LDkgQEAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgPHN0
ZGlvLmg+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisjaWYgRU5BQkxFKExJTktfUFJF
RkVUQ0gpCisjaW5jbHVkZSAiQ2FjaGVkTGlua1ByZWZldGNoLmgiCisjZW5kaWYKIAogdXNpbmcg
bmFtZXNwYWNlIHN0ZDsKIApAQCAtODYsNiArODksMTAgQEAgc3RhdGljIENhY2hlZFJlc291cmNl
KiBjcmVhdGVSZXNvdXJjZShDYQogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlhCTFN0eWxlU2hl
ZXQ6CiAgICAgICAgIHJldHVybiBuZXcgQ2FjaGVkWEJMRG9jdW1lbnQodXJsLnN0cmluZygpKTsK
ICNlbmRpZgorI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQorICAgIGNhc2UgQ2FjaGVkUmVzb3Vy
Y2U6OkxpbmtQcmVmZXRjaDoKKyAgICAgICAgcmV0dXJuIG5ldyBDYWNoZWRMaW5rUHJlZmV0Y2go
dXJsLnN0cmluZygpKTsKKyNlbmRpZgogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAg
IH0KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0NhY2hlZExpbmtQcmVmZXRjaC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvbG9hZGVyL0NhY2hlZExpbmtQcmVmZXRjaC5oCShyZXZpc2lvbiAwKQorKysg
V2ViQ29yZS9sb2FkZXIvQ2FjaGVkTGlua1ByZWZldGNoLmgJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxMCwgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2Ug
UHJvamVjdAorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVCBPV05FUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCisqLworCisjaWZuZGVmIENhY2hlZExpbmtQcmVmZXRjaF9oCisjZGVmaW5lIENh
Y2hlZExpbmtQcmVmZXRjaF9oCisKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZS5oIgorI2luY2x1
ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGll
bnRXYWxrZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERvY0xvYWRlcjsKKwor
Y2xhc3MgQ2FjaGVkTGlua1ByZWZldGNoIDogcHVibGljIENhY2hlZFJlc291cmNlIHsKK3B1Ymxp
YzoKKyAgICBDYWNoZWRMaW5rUHJlZmV0Y2goY29uc3QgU3RyaW5nJiBVUkwpIDogQ2FjaGVkUmVz
b3VyY2UoVVJMLCBMaW5rUHJlZmV0Y2gpIHsgfTsKKyAgICB2aXJ0dWFsIH5DYWNoZWRMaW5rUHJl
ZmV0Y2goKSB7IH07CisKKyAgICB2aXJ0dWFsIHZvaWQgZGF0YShQYXNzUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4sIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQorICAgIHsKKyAgICAgICAgaWYgKCFhbGxEYXRh
UmVjZWl2ZWQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgQ2FjaGVkUmVzb3VyY2VD
bGllbnRXYWxrZXIgdyhtX2NsaWVudHMpOworICAgICAgICB3aGlsZSAoQ2FjaGVkUmVzb3VyY2VD
bGllbnQqIGMgPSB3Lm5leHQoKSkKKyAgICAgICAgICAgIGMtPm5vdGlmeUZpbmlzaGVkKHRoaXMp
OworICAgIH07CisKKyAgICB2aXJ0dWFsIHZvaWQgZXJyb3IoKSB7IH07CisKKyAgICB2aXJ0dWFs
IGJvb2wgc2NoZWR1bGUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisKKyAgICB2aXJ0dWFsIGJv
b2wgaXNQcmVmZXRjaCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KK307Cit9CisKKyNlbmRpZgpJ
bmRleDogV2ViQ29yZS9sb2FkZXIvQ2FjaGVkUmVzb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvbG9hZGVyL0NhY2hlZFJlc291cmNlLmNwcAkocmV2aXNpb24gNjE0MDApCisrKyBXZWJD
b3JlL2xvYWRlci9DYWNoZWRSZXNvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2
LDcgQEAKIAogI2luY2x1ZGUgIkNhY2hlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkTWV0YWRhdGEuaCIK
KyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291
cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiRG9jTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIK
QEAgLTIwNCw2ICsyMDUsMTIgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6YWRkQ2xpZW50KENhY2hl
ZFJlcwogICAgIGRpZEFkZENsaWVudChjbGllbnQpOwogfQogCit2b2lkIENhY2hlZFJlc291cmNl
OjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqIGMpCit7CisgICAgaWYgKCFpc0xv
YWRpbmcoKSkKKyAgICAgICAgYy0+bm90aWZ5RmluaXNoZWQodGhpcyk7Cit9CisKIHZvaWQgQ2Fj
aGVkUmVzb3VyY2U6OmFkZENsaWVudFRvU2V0KENhY2hlZFJlc291cmNlQ2xpZW50KiBjbGllbnQp
CiB7CiAgICAgQVNTRVJUKCFpc1B1cmdlYWJsZSgpKTsKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0Nh
Y2hlZFJlc291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvQ2FjaGVkUmVzb3Vy
Y2UuaAkocmV2aXNpb24gNjE0MDApCisrKyBXZWJDb3JlL2xvYWRlci9DYWNoZWRSZXNvdXJjZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC02NCw2ICs2NCw5IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoWEJM
KQogICAgICAgICAsIFhCTAogI2VuZGlmCisjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCisgICAg
ICAgICwgTGlua1ByZWZldGNoCisjZW5kaWYKICAgICB9OwogCiAgICAgZW51bSBTdGF0dXMgewpA
QCAtMTAzLDcgKzEwNiw3IEBAIHB1YmxpYzoKICAgICBQcmVsb2FkUmVzdWx0IHByZWxvYWRSZXN1
bHQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxQcmVsb2FkUmVzdWx0PihtX3ByZWxvYWRS
ZXN1bHQpOyB9CiAgICAgdm9pZCBzZXRSZXF1ZXN0ZWRGcm9tTmV0d29ya2luZ0xheWVyKCkgeyBt
X3JlcXVlc3RlZEZyb21OZXR3b3JraW5nTGF5ZXIgPSB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50KikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqKTsKICAgICB2aXJ0dWFsIHZv
aWQgYWxsQ2xpZW50c1JlbW92ZWQoKSB7IH0KIAogICAgIHVuc2lnbmVkIGNvdW50KCkgY29uc3Qg
eyByZXR1cm4gbV9jbGllbnRzLnNpemUoKTsgfQpAQCAtMTIyLDYgKzEyNSw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldExvYWRpbmcoYm9vbCBiKSB7IG1fbG9hZGluZyA9IGI7IH0KIAogICAgIHZp
cnR1YWwgYm9vbCBpc0ltYWdlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFs
IGJvb2wgaXNQcmVmZXRjaCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB1bnNpZ25l
ZCBhY2Nlc3NDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fYWNjZXNzQ291bnQ7IH0KICAgICB2b2lk
IGluY3JlYXNlQWNjZXNzQ291bnQoKSB7IG1fYWNjZXNzQ291bnQrKzsgfQpJbmRleDogV2ViQ29y
ZS9sb2FkZXIvQ2FjaGVkU2NyaXB0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9D
YWNoZWRTY3JpcHQuY3BwCShyZXZpc2lvbiA2MTQwMCkKKysrIFdlYkNvcmUvbG9hZGVyL0NhY2hl
ZFNjcmlwdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDEyICs1MCw2IEBAIENhY2hlZFNjcmlw
dDo6fkNhY2hlZFNjcmlwdCgpCiB7CiB9CiAKLXZvaWQgQ2FjaGVkU2NyaXB0OjpkaWRBZGRDbGll
bnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqIGMpCi17Ci0gICAgaWYgKCFpc0xvYWRpbmcoKSkKLSAg
ICAgICAgYy0+bm90aWZ5RmluaXNoZWQodGhpcyk7Ci19Ci0KIHZvaWQgQ2FjaGVkU2NyaXB0Ojph
bGxDbGllbnRzUmVtb3ZlZCgpCiB7CiAgICAgbV9kZWNvZGVkRGF0YURlbGV0aW9uVGltZXIuc3Rh
cnRPbmVTaG90KDApOwpJbmRleDogV2ViQ29yZS9sb2FkZXIvQ2FjaGVkU2NyaXB0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvQ2FjaGVkU2NyaXB0LmgJKHJldmlzaW9uIDYxNDAwKQor
KysgV2ViQ29yZS9sb2FkZXIvQ2FjaGVkU2NyaXB0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcg
KzQxLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIGNvbnN0IFN0cmluZyYgc2Ny
aXB0KCk7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJj
ZUNsaWVudCopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgYWxsQ2xpZW50c1JlbW92ZWQoKTsKIAog
ICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJik7CkluZGV4OiBX
ZWJDb3JlL2xvYWRlci9Eb2NMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVy
L0RvY0xvYWRlci5jcHAJKHJldmlzaW9uIDYxNDAwKQorKysgV2ViQ29yZS9sb2FkZXIvRG9jTG9h
ZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsOSBAQAogI2luY2x1ZGUgImxvYWRl
ci5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIK
KyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKKyNpbmNsdWRlICJDYWNoZWRMaW5rUHJlZmV0Y2gu
aCIKKyNlbmRpZgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogI2RlZmluZSBQUkVM
T0FEX0RFQlVHIDAKQEAgLTE2OCw2ICsxNzEsMTMgQEAgQ2FjaGVkWEJMRG9jdW1lbnQqIERvY0xv
YWRlcjo6cmVxdWVzdFhCTAogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkK
K0NhY2hlZExpbmtQcmVmZXRjaCogRG9jTG9hZGVyOjpyZXF1ZXN0TGlua1ByZWZldGNoKGNvbnN0
IFN0cmluZyYgdXJsKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxDYWNoZWRMaW5rUHJlZmV0
Y2gqPihyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OkxpbmtQcmVmZXRjaCwgdXJsLCBT
dHJpbmcoKSkpOworfQorI2VuZGlmCisKIGJvb2wgRG9jTG9hZGVyOjpjYW5SZXF1ZXN0KENhY2hl
ZFJlc291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IEtVUkwmIHVybCkKIHsKICAgICAvLyBTb21lIHR5
cGVzIG9mIHJlc291cmNlcyBjYW4gYmUgbG9hZGVkIG9ubHkgZnJvbSB0aGUgc2FtZSBvcmlnaW4u
ICBPdGhlcgpAQCAtMTc4LDYgKzE4OCw5IEBAIGJvb2wgRG9jTG9hZGVyOjpjYW5SZXF1ZXN0KENh
Y2hlZFJlc291cmMKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpDU1NTdHlsZVNoZWV0OgogICAg
IGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlNjcmlwdDoKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpG
b250UmVzb3VyY2U6CisjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCisgICAgY2FzZSBDYWNoZWRS
ZXNvdXJjZTo6TGlua1ByZWZldGNoOgorI2VuZGlmCiAgICAgICAgIC8vIFRoZXNlIHR5cGVzIG9m
IHJlc291cmNlcyBjYW4gYmUgbG9hZGVkIGZyb20gYW55IG9yaWdpbi4KICAgICAgICAgLy8gRklY
TUU6IEFyZSB3ZSBzdXJlIGFib3V0IENhY2hlZFJlc291cmNlOjpGb250UmVzb3VyY2U/CiAgICAg
ICAgIGJyZWFrOwpAQCAtMjIwLDYgKzIzMyw5IEBAIGJvb2wgRG9jTG9hZGVyOjpjYW5SZXF1ZXN0
KENhY2hlZFJlc291cmMKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6
SW1hZ2VSZXNvdXJjZToKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpDU1NTdHlsZVNoZWV0Ogor
I2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQorICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkxpbmtQ
cmVmZXRjaDoKKyNlbmRpZgogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkZvbnRSZXNvdXJjZTog
ewogICAgICAgICAvLyBUaGVzZSByZXNvdXJjZXMgY2FuIGNvcnJ1cHQgb25seSB0aGUgZnJhbWUn
cyBwaXhlbHMuCiAgICAgICAgIGlmIChGcmFtZSogZiA9IGZyYW1lKCkpIHsKQEAgLTM1NSwxMyAr
MzcxLDE5IEBAIHZvaWQgRG9jTG9hZGVyOjpjaGVja0NhY2hlT2JqZWN0U3RhdHVzKEMKICAgICBm
cmFtZSgpLT5sb2FkZXIoKS0+bG9hZGVkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUocmVzb3VyY2Up
OwogfQogCi12b2lkIERvY0xvYWRlcjo6aW5jcmVtZW50UmVxdWVzdENvdW50KCkKK3ZvaWQgRG9j
TG9hZGVyOjppbmNyZW1lbnRSZXF1ZXN0Q291bnQoY29uc3QgQ2FjaGVkUmVzb3VyY2UqIHJlcykK
IHsKKyAgICBpZiAocmVzLT5pc1ByZWZldGNoKCkpCisgICAgICAgIHJldHVybjsKKwogICAgICsr
bV9yZXF1ZXN0Q291bnQ7CiB9CiAKLXZvaWQgRG9jTG9hZGVyOjpkZWNyZW1lbnRSZXF1ZXN0Q291
bnQoKQordm9pZCBEb2NMb2FkZXI6OmRlY3JlbWVudFJlcXVlc3RDb3VudChjb25zdCBDYWNoZWRS
ZXNvdXJjZSogcmVzKQogeworICAgIGlmIChyZXMtPmlzUHJlZmV0Y2goKSkKKyAgICAgICAgcmV0
dXJuOworCiAgICAgLS1tX3JlcXVlc3RDb3VudDsKICAgICBBU1NFUlQobV9yZXF1ZXN0Q291bnQg
PiAtMSk7CiB9CkluZGV4OiBXZWJDb3JlL2xvYWRlci9Eb2NMb2FkZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2xvYWRlci9Eb2NMb2FkZXIuaAkocmV2aXNpb24gNjE0MDApCisrKyBXZWJDb3Jl
L2xvYWRlci9Eb2NMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsOSBAQCBjbGFz
cyBEb2N1bWVudDsKIGNsYXNzIEZyYW1lOwogY2xhc3MgSW1hZ2VMb2FkZXI7CiBjbGFzcyBLVVJM
OworI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQorY2xhc3MgQ2FjaGVkTGlua1ByZWZldGNoOwor
I2VuZGlmCiAKIC8vIFRoZSBEb2NMb2FkZXIgbWFuYWdlcyB0aGUgbG9hZGluZyBvZiBzY3JpcHRz
L2ltYWdlcy9zdHlsZXNoZWV0cyBmb3IgYSBzaW5nbGUgZG9jdW1lbnQuCiBjbGFzcyBEb2NMb2Fk
ZXIgOiBwdWJsaWMgTm9uY29weWFibGUgewpAQCAtNjcsNiArNzAsOSBAQCBwdWJsaWM6CiAjaWYg
RU5BQkxFKFhCTCkKICAgICBDYWNoZWRYQkxEb2N1bWVudCogcmVxdWVzdFhCTERvY3VtZW50KGNv
bnN0IFN0cmluZyAmdXJsKTsKICNlbmRpZgorI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQorICAg
IENhY2hlZExpbmtQcmVmZXRjaCogcmVxdWVzdExpbmtQcmVmZXRjaChjb25zdCBTdHJpbmcgJnVy
bCk7CisjZW5kaWYKIAogICAgIC8vIExvZ3MgYW4gYWNjZXNzIGRlbmllZCBtZXNzYWdlIHRvIHRo
ZSBjb25zb2xlIGZvciB0aGUgc3BlY2lmaWVkIFVSTC4KICAgICB2b2lkIHByaW50QWNjZXNzRGVu
aWVkTWVzc2FnZShjb25zdCBLVVJMJiB1cmwpIGNvbnN0OwpAQCAtOTEsOCArOTcsOCBAQCBwdWJs
aWM6CiAgICAgCiAgICAgdm9pZCBzZXRBbGxvd1N0YWxlUmVzb3VyY2VzKGJvb2wgYWxsb3dTdGFs
ZVJlc291cmNlcykgeyBtX2FsbG93U3RhbGVSZXNvdXJjZXMgPSBhbGxvd1N0YWxlUmVzb3VyY2Vz
OyB9CiAKLSAgICB2b2lkIGluY3JlbWVudFJlcXVlc3RDb3VudCgpOwotICAgIHZvaWQgZGVjcmVt
ZW50UmVxdWVzdENvdW50KCk7CisgICAgdm9pZCBpbmNyZW1lbnRSZXF1ZXN0Q291bnQoY29uc3Qg
Q2FjaGVkUmVzb3VyY2UqKTsKKyAgICB2b2lkIGRlY3JlbWVudFJlcXVlc3RDb3VudChjb25zdCBD
YWNoZWRSZXNvdXJjZSopOwogICAgIGludCByZXF1ZXN0Q291bnQoKTsKICAgICAKICAgICB2b2lk
IGNsZWFyUHJlbG9hZHMoKTsKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL2xvYWRlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvbG9hZGVyLmNwcAkocmV2aXNpb24gNjE0MDApCisrKyBX
ZWJDb3JlL2xvYWRlci9sb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSw3ICs4OSwxMiBA
QCBzdGF0aWMgUmVzb3VyY2VSZXF1ZXN0OjpUYXJnZXRUeXBlIGNhY2hlCiAgICAgICAgIHJldHVy
biBSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldElzRm9udFJlc291cmNlOwogICAgIGNhc2UgQ2FjaGVk
UmVzb3VyY2U6OkltYWdlUmVzb3VyY2U6CiAgICAgICAgIHJldHVybiBSZXNvdXJjZVJlcXVlc3Q6
OlRhcmdldElzSW1hZ2U7CisjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCisgICAgY2FzZSBDYWNo
ZWRSZXNvdXJjZTo6TGlua1ByZWZldGNoOgorICAgICAgICByZXR1cm4gUmVzb3VyY2VSZXF1ZXN0
OjpUYXJnZXRJc1ByZWZldGNoOworI2VuZGlmCiAgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgIHJldHVybiBSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldElzU3VicmVzb3VyY2U7CiB9
CiAKQEAgLTExMCw2ICsxMTUsMTAgQEAgTG9hZGVyOjpQcmlvcml0eSBMb2FkZXI6OmRldGVybWlu
ZVByaW9yaQogICAgICAgICAgICAgcmV0dXJuIE1lZGl1bTsKICAgICAgICAgY2FzZSBDYWNoZWRS
ZXNvdXJjZTo6SW1hZ2VSZXNvdXJjZToKICAgICAgICAgICAgIHJldHVybiBMb3c7CisjaWYgRU5B
QkxFKExJTktfUFJFRkVUQ0gpCisgICAgICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkxpbmtQcmVm
ZXRjaDoKKyAgICAgICAgICAgIHJldHVybiBWZXJ5TG93OworI2VuZGlmCiAgICAgfQogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBMb3c7CkBAIC0xMzksOSArMTQ4LDkgQEAg
dm9pZCBMb2FkZXI6OmxvYWQoRG9jTG9hZGVyKiBkb2NMb2FkZXIsIAogICAgIGJvb2wgaGFkUmVx
dWVzdHMgPSBob3N0LT5oYXNSZXF1ZXN0cygpOwogICAgIFByaW9yaXR5IHByaW9yaXR5ID0gZGV0
ZXJtaW5lUHJpb3JpdHkocmVzb3VyY2UpOwogICAgIGhvc3QtPmFkZFJlcXVlc3QocmVxdWVzdCwg
cHJpb3JpdHkpOwotICAgIGRvY0xvYWRlci0+aW5jcmVtZW50UmVxdWVzdENvdW50KCk7CisgICAg
ZG9jTG9hZGVyLT5pbmNyZW1lbnRSZXF1ZXN0Q291bnQocmVxdWVzdC0+Y2FjaGVkUmVzb3VyY2Uo
KSk7CiAKLSAgICBpZiAocHJpb3JpdHkgPiBMb3cgfHwgIXVybC5wcm90b2NvbEluSFRUUEZhbWls
eSgpIHx8ICFoYWRSZXF1ZXN0cykgeworICAgIGlmIChwcmlvcml0eSA+IExvdyB8fCAhdXJsLnBy
b3RvY29sSW5IVFRQRmFtaWx5KCkgfHwgKHByaW9yaXR5ID09IExvdyAmJiAhaGFkUmVxdWVzdHMp
KSB7CiAgICAgICAgIC8vIFRyeSB0byByZXF1ZXN0IGltcG9ydGFudCByZXNvdXJjZXMgaW1tZWRp
YXRlbHkKICAgICAgICAgaG9zdC0+c2VydmVQZW5kaW5nUmVxdWVzdHMocHJpb3JpdHkpOwogICAg
IH0gZWxzZSB7CkBAIC0zNzAsNyArMzc5LDcgQEAgdm9pZCBMb2FkZXI6Okhvc3Q6OnNlcnZlUGVu
ZGluZ1JlcXVlc3RzKAogICAgICAgICAgICAgcHJpbnRmKCJIT1NUICVzIENPVU5UICVkIExPQURJ
TkcgJXNcbiIsIHJlc291cmNlUmVxdWVzdC51cmwoKS5ob3N0KCkubGF0aW4xKCkuZGF0YSgpLCBt
X3JlcXVlc3RzTG9hZGluZy5zaXplKCksIHJlcXVlc3QtPmNhY2hlZFJlc291cmNlKCktPnVybCgp
LmxhdGluMSgpLmRhdGEoKSk7CiAjZW5kaWYKICAgICAgICAgfSBlbHNlIHsgICAgICAgICAgICAK
LSAgICAgICAgICAgIGRvY0xvYWRlci0+ZGVjcmVtZW50UmVxdWVzdENvdW50KCk7CisgICAgICAg
ICAgICBkb2NMb2FkZXItPmRlY3JlbWVudFJlcXVlc3RDb3VudChyZXF1ZXN0LT5jYWNoZWRSZXNv
dXJjZSgpKTsKICAgICAgICAgICAgIGRvY0xvYWRlci0+c2V0TG9hZEluUHJvZ3Jlc3ModHJ1ZSk7
CiAgICAgICAgICAgICByZXF1ZXN0LT5jYWNoZWRSZXNvdXJjZSgpLT5lcnJvcigpOwogICAgICAg
ICAgICAgZG9jTG9hZGVyLT5zZXRMb2FkSW5Qcm9ncmVzcyhmYWxzZSk7CkBAIC0zOTQsNyArNDAz
LDcgQEAgdm9pZCBMb2FkZXI6Okhvc3Q6OmRpZEZpbmlzaExvYWRpbmcoU3VicgogICAgIC8vIHRo
ZSBkb2NMb2FkZXIgdGhhdCBpdCB3aWxsIGRlbGV0ZSB3aGVuIHRoZSBkb2N1bWVudCBnZXRzIGRl
bGV0ZWQuCiAgICAgUmVmUHRyPERvY3VtZW50PiBwcm90ZWN0b3IoZG9jTG9hZGVyLT5kb2MoKSk7
CiAgICAgaWYgKCFyZXF1ZXN0LT5pc011bHRpcGFydCgpKQotICAgICAgICBkb2NMb2FkZXItPmRl
Y3JlbWVudFJlcXVlc3RDb3VudCgpOworICAgICAgICBkb2NMb2FkZXItPmRlY3JlbWVudFJlcXVl
c3RDb3VudChyZXF1ZXN0LT5jYWNoZWRSZXNvdXJjZSgpKTsKIAogICAgIENhY2hlZFJlc291cmNl
KiByZXNvdXJjZSA9IHJlcXVlc3QtPmNhY2hlZFJlc291cmNlKCk7CiAgICAgQVNTRVJUKCFyZXNv
dXJjZS0+cmVzb3VyY2VUb1JldmFsaWRhdGUoKSk7CkBAIC00NDIsNyArNDUxLDcgQEAgdm9pZCBM
b2FkZXI6Okhvc3Q6OmRpZEZhaWwoU3VicmVzb3VyY2VMbwogICAgIC8vIHRoZSBkb2NMb2FkZXIg
dGhhdCBpdCB3aWxsIGRlbGV0ZSB3aGVuIHRoZSBkb2N1bWVudCBnZXRzIGRlbGV0ZWQuCiAgICAg
UmVmUHRyPERvY3VtZW50PiBwcm90ZWN0b3IoZG9jTG9hZGVyLT5kb2MoKSk7CiAgICAgaWYgKCFy
ZXF1ZXN0LT5pc011bHRpcGFydCgpKQotICAgICAgICBkb2NMb2FkZXItPmRlY3JlbWVudFJlcXVl
c3RDb3VudCgpOworICAgICAgICBkb2NMb2FkZXItPmRlY3JlbWVudFJlcXVlc3RDb3VudChyZXF1
ZXN0LT5jYWNoZWRSZXNvdXJjZSgpKTsKIAogICAgIENhY2hlZFJlc291cmNlKiByZXNvdXJjZSA9
IHJlcXVlc3QtPmNhY2hlZFJlc291cmNlKCk7CiAgICAgCkBAIC00ODcsNyArNDk2LDcgQEAgdm9p
ZCBMb2FkZXI6Okhvc3Q6OmRpZFJlY2VpdmVSZXNwb25zZShTdQogICAgICAgICAgICAgLy8gMzA0
IE5vdCBtb2RpZmllZCAvIFVzZSBsb2NhbCBjb3B5CiAgICAgICAgICAgICBtX3JlcXVlc3RzTG9h
ZGluZy5yZW1vdmUobG9hZGVyKTsKICAgICAgICAgICAgIGxvYWRlci0+Y2xlYXJDbGllbnQoKTsK
LSAgICAgICAgICAgIHJlcXVlc3QtPmRvY0xvYWRlcigpLT5kZWNyZW1lbnRSZXF1ZXN0Q291bnQo
KTsKKyAgICAgICAgICAgIHJlcXVlc3QtPmRvY0xvYWRlcigpLT5kZWNyZW1lbnRSZXF1ZXN0Q291
bnQocmVxdWVzdC0+Y2FjaGVkUmVzb3VyY2UoKSk7CiAKICAgICAgICAgICAgIC8vIEV4aXN0aW5n
IHJlc291cmNlIGlzIG9rLCBqdXN0IHVzZSBpdCB1cGRhdGluZyB0aGUgZXhwaXJhdGlvbiB0aW1l
LgogICAgICAgICAgICAgY2FjaGUoKS0+cmV2YWxpZGF0aW9uU3VjY2VlZGVkKHJlc291cmNlLCBy
ZXNwb25zZSk7CkBAIC01MTksNyArNTI4LDcgQEAgdm9pZCBMb2FkZXI6Okhvc3Q6OmRpZFJlY2Vp
dmVSZXNwb25zZShTdQogICAgICAgICByZXF1ZXN0LT5zZXRJc011bHRpcGFydCh0cnVlKTsKICAg
ICAgICAgCiAgICAgICAgIC8vIFdlIGRvbid0IGNvdW50IG11bHRpUGFydHMgaW4gYSBEb2NMb2Fk
ZXIncyByZXF1ZXN0IGNvdW50Ci0gICAgICAgIHJlcXVlc3QtPmRvY0xvYWRlcigpLT5kZWNyZW1l
bnRSZXF1ZXN0Q291bnQoKTsKKyAgICAgICAgcmVxdWVzdC0+ZG9jTG9hZGVyKCktPmRlY3JlbWVu
dFJlcXVlc3RDb3VudChyZXF1ZXN0LT5jYWNoZWRSZXNvdXJjZSgpKTsKIAogICAgICAgICAvLyBJ
ZiB3ZSBnZXQgYSBtdWx0aXBhcnQgcmVzcG9uc2UsIHdlIG11c3QgaGF2ZSBhIGhhbmRsZQogICAg
ICAgICBBU1NFUlQobG9hZGVyLT5oYW5kbGUoKSk7CkBAIC01ODIsNyArNTkxLDcgQEAgdm9pZCBM
b2FkZXI6Okhvc3Q6OmNhbmNlbFBlbmRpbmdSZXF1ZXN0cwogICAgICAgICBpZiAocmVxdWVzdC0+
ZG9jTG9hZGVyKCkgPT0gZG9jTG9hZGVyKSB7CiAgICAgICAgICAgICBjYWNoZSgpLT5yZW1vdmUo
cmVxdWVzdC0+Y2FjaGVkUmVzb3VyY2UoKSk7CiAgICAgICAgICAgICBkZWxldGUgcmVxdWVzdDsK
LSAgICAgICAgICAgIGRvY0xvYWRlci0+ZGVjcmVtZW50UmVxdWVzdENvdW50KCk7CisgICAgICAg
ICAgICBkb2NMb2FkZXItPmRlY3JlbWVudFJlcXVlc3RDb3VudChyZXF1ZXN0LT5jYWNoZWRSZXNv
dXJjZSgpKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICByZW1haW5pbmcuYXBwZW5kKHJl
cXVlc3QpOwogICAgIH0KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL2xvYWRlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvbG9hZGVyL2xvYWRlci5oCShyZXZpc2lvbiA2MTQwMCkKKysrIFdlYkNvcmUv
bG9hZGVyL2xvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw4ICs0OCw4IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIGNhbmNlbFJlcXVlc3RzKERvY0xvYWRlciopOwog
ICAgICAgICAKLSAgICAgICAgZW51bSBQcmlvcml0eSB7IExvdywgTWVkaXVtLCBIaWdoIH07Ci0g
ICAgICAgIHZvaWQgc2VydmVQZW5kaW5nUmVxdWVzdHMoUHJpb3JpdHkgbWluaW11bVByaW9yaXR5
ID0gTG93KTsKKyAgICAgICAgZW51bSBQcmlvcml0eSB7IFZlcnlMb3csIExvdywgTWVkaXVtLCBI
aWdoIH07CisgICAgICAgIHZvaWQgc2VydmVQZW5kaW5nUmVxdWVzdHMoUHJpb3JpdHkgbWluaW11
bVByaW9yaXR5ID0gVmVyeUxvdyk7CiAKICAgICAgICAgYm9vbCBpc1N1c3BlbmRpbmdQZW5kaW5n
UmVxdWVzdHMoKSB7IHJldHVybiBtX2lzU3VzcGVuZGluZ1BlbmRpbmdSZXF1ZXN0czsgfQogICAg
ICAgICB2b2lkIHN1c3BlbmRQZW5kaW5nUmVxdWVzdHMoKTsKQEAgLTc2LDcgKzc2LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgdm9pZCBhZGRSZXF1ZXN0KFJlcXVlc3QqLCBQ
cmlvcml0eSk7CiAgICAgICAgICAgICB2b2lkIG5vbkNhY2hlUmVxdWVzdEluRmxpZ2h0KCk7CiAg
ICAgICAgICAgICB2b2lkIG5vbkNhY2hlUmVxdWVzdENvbXBsZXRlKCk7Ci0gICAgICAgICAgICB2
b2lkIHNlcnZlUGVuZGluZ1JlcXVlc3RzKFByaW9yaXR5IG1pbmltdW1Qcmlvcml0eSA9IExvdyk7
CisgICAgICAgICAgICB2b2lkIHNlcnZlUGVuZGluZ1JlcXVlc3RzKFByaW9yaXR5IG1pbmltdW1Q
cmlvcml0eSA9IFZlcnlMb3cpOwogICAgICAgICAgICAgdm9pZCBjYW5jZWxSZXF1ZXN0cyhEb2NM
b2FkZXIqKTsKICAgICAgICAgICAgIGJvb2wgaGFzUmVxdWVzdHMoKSBjb25zdDsKIApJbmRleDog
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCShyZXZp
c2lvbiA2MTQwMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RC
YXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDcgKzYzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICAgICAgVGFyZ2V0SXNPYmplY3QsCiAgICAgICAgICAgICBUYXJnZXRJc01lZGlh
LAogICAgICAgICAgICAgVGFyZ2V0SXNXb3JrZXIsCi0gICAgICAgICAgICBUYXJnZXRJc1NoYXJl
ZFdvcmtlcgorICAgICAgICAgICAgVGFyZ2V0SXNTaGFyZWRXb3JrZXIsCisgICAgICAgICAgICBU
YXJnZXRJc1ByZWZldGNoLAogICAgICAgICB9OwogCiAgICAgICAgIHN0YXRpYyBQYXNzT3duUHRy
PFJlc291cmNlUmVxdWVzdD4gYWRvcHQoUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVx
dWVzdERhdGE+KTsKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNjE0MDQpCisrKyBXZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAt
MDYtMTggIExlb24gQ2xhcmtlICA8bGVvbmNsYXJrZUBnb29nbGUuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisJQWRkIHN1cHBvcnQgZm9yIGxpbmsgcmVsPXBy
ZWZldGNoCisJaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2NTIKKwor
ICAgICAgICAqIHB1YmxpYy9XZWJVUkxSZXF1ZXN0Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlVS
TFJlcXVlc3Q6Oik6CisKIDIwMTAtMDYtMTggIEFudG9uIE11aGluICA8YW50b25tQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCkluZGV4OiBXZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYlVSTFJlcXVlc3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYlVSTFJlcXVlc3QuaAkocmV2aXNpb24gNjE0MDApCisrKyBXZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYlVSTFJlcXVlc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNjks
NyArNjksOCBAQCBwdWJsaWM6CiAgICAgICAgIFRhcmdldElzT2JqZWN0ID0gNywKICAgICAgICAg
VGFyZ2V0SXNNZWRpYSA9IDgsCiAgICAgICAgIFRhcmdldElzV29ya2VyID0gOSwKLSAgICAgICAg
VGFyZ2V0SXNTaGFyZWRXb3JrZXIgPSAxMAorICAgICAgICBUYXJnZXRJc1NoYXJlZFdvcmtlciA9
IDEwLAorICAgICAgICBUYXJnZXRJc1ByZWZldGNoID0gMTEsCiAgICAgfTsKIAogICAgIH5XZWJV
UkxSZXF1ZXN0KCkgeyByZXNldCgpOyB9CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2MTQwNCkKKysrIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDEw
LTA2LTE4ICBMZW9uIENsYXJrZSAgPGxlb25jbGFya2VAZ29vZ2xlLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBsYXlvdXQgdGVzdCBm
b3IgbGluayByZWw9cHJlZmV0Y2guIEl0J3MgZGlzYWJsZWQgc2luY2UgdGhlCisgICAgICAgIGZl
YXR1cmUgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTM2NTIKKworICAgICAgICAqIGZhc3QvZG9tL0hUTUxMaW5r
RWxlbWVudC9wcmVmZXRjaC1vbmxvYWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0Y2gtb25sb2FkLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC5saW5rOiBBZGRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ndGsvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2tp
cHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3Jt
L3dpbi9Ta2lwcGVkOgorCiAyMDEwLTA2LTE4ICBEaXJrIFNjaHVsemUgIDxrcml0QHdlYmtpdC5v
cmc+CiAKICAgICAgICAgTm90IHJldmlld2VkLiBSZWJhc2VsaW5lIGd0ayByZXN1bHRzLgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLW9ubG9hZC1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtF
bGVtZW50L3ByZWZldGNoLW9ubG9hZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0Y2gtb25sb2FkLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2IEBACitUaGlzIHRlc3RzIHRoYXQgb25sb2Fk
IGV2ZW50cyBjYW4gYmUgYXR0YWNoZWQgdG8gbGluayBlbGVtZW50cyB3aXRoIHJlbD1wcmVmZXRj
aC4gU2luY2UgcHJlZmV0Y2ggbGlua3MgYXJlIGp1c3QgdGhlcmUgYXMgYSBwZXJmb3JtYW5jZSBv
cHRpbWl6YXRpb24sIHRoZSBvbmxvYWQgZXZlbnQgaXMgdGhlaXIgb25seSBwcm9ncmFtYXRpYyBz
aWRlLWVmZmVjdC4KKworSWYgaXQgd29ya3MgeW91IHNob3VsZCBzZWUgYSBtZXNzYWdlIGJlbG93
IHNheWluZyB0aGUgdGVzdCBoYXMgcGFzc2VkLgorCitURVNUIFBBU1NFRC4gVGhlIHN0eWxlc2hl
ZXQgbGluayBvbmxvYWQgaGFuZGxlciBoYXMgZmlyZWQgYWZ0ZXIgdGhlIGRvY3VtZW50IG9ubG9h
ZCBoYW5kbGVyCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9w
cmVmZXRjaC1vbmxvYWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9I
VE1MTGlua0VsZW1lbnQvcHJlZmV0Y2gtb25sb2FkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0Y2gtb25sb2FkLmh0bWwJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNDQgQEAKKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgICAgICAgICBnb3RfbWFpbiA9IGZh
bHNlOworICAgICAgICAgICAgZ290X3ByZWZldGNoID0gZmFsc2U7CisKKyAgICAgICAgICAgIGZ1
bmN0aW9uIGxvZyhtZXNzYWdlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhciBp
dGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGkiKTsKKyAgICAgICAgICAgICAgICBpdGVt
LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1lc3NhZ2UpKTsKKyAgICAgICAg
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmFwcGVuZENoaWxkKGl0
ZW0pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZnVuY3Rpb24gZG9uZSgpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgZ290X3ByZWZldGNoID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICBpZiAoZ290X21haW4pIHsKKyAgICAgICAgICAgICAgICAgICAgbG9nKCJURVNUIFBBU1NF
RC4gVGhlIHN0eWxlc2hlZXQgbGluayBvbmxvYWQgaGFuZGxlciBoYXMgZmlyZWQgYWZ0ZXIgdGhl
IGRvY3VtZW50IG9ubG9hZCBoYW5kbGVyIik7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICAgICAgbG9nKCJURVNUIEZBSUxFRC4gVGhlIHN0eWxlc2hlZXQgbGluayBv
bmxvYWQgaGFuZGxlciBoYXMgZmlyZWQgYmVmb3JlIHRoZSBkb2N1bWVudCBvbmxvYWQgaGFuZGxl
ciIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGZ1bmN0aW9uIG1haW5fb25sb2FkKCkgeworICAgICAgICAgICAgICAgIGdvdF9t
YWluID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0
VW50aWxEb25lKCk7CisgICAgICAgICAgICB9CisKKwk8L3NjcmlwdD4KKyAgICA8L2hlYWQ+Cisg
ICAgPGJvZHkgb25sb2FkPSJtYWluX29ubG9hZCgpIj4KKyAgICAgICAgPHA+VGhpcyB0ZXN0cyB0
aGF0IG9ubG9hZCBldmVudHMgY2FuIGJlIGF0dGFjaGVkIHRvIGxpbmsgZWxlbWVudHMgd2l0aCBy
ZWw9cHJlZmV0Y2guIFNpbmNlIHByZWZldGNoIGxpbmtzIGFyZSBqdXN0IHRoZXJlIGFzIGEgcGVy
Zm9ybWFuY2Ugb3B0aW1pemF0aW9uLCB0aGUgb25sb2FkIGV2ZW50IGlzIHRoZWlyIG9ubHkgcHJv
Z3JhbWF0aWMgc2lkZS1lZmZlY3QuPC9wPgorICAgICAgICA8cD5JZiBpdCB3b3JrcyB5b3Ugc2hv
dWxkIHNlZSBhIG1lc3NhZ2UgYmVsb3cgc2F5aW5nIHRoZSB0ZXN0IGhhcyBwYXNzZWQuPC9wPgor
ICAgICAgICA8bGluayBocmVmPSJwcmVmZXRjaC5saW5rIiByZWw9InByZWZldGNoIiBvbmxvYWQ9
ImRvbmUoKSIgPgorICAgICAgICA8aHI+CisgICAgICAgIDxwPjxvbCBpZD0iY29uc29sZSI+PC9v
bD48L3A+CisgICAgPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20v
SFRNTExpbmtFbGVtZW50L3ByZWZldGNoLmxpbmsKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLmxpbmsJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0Y2gubGluawkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSBAQAorVGhpcyBpcyB0aGUgbGluayB0aGF0IGlzIGZldGNoZWQgYnkg
dGhlIHByZWZldGNoLW9ubG9hZCB0ZXN0CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsv
U2tpcHBlZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAko
cmV2aXNpb24gNjE0MDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAkod29y
a2luZyBjb3B5KQpAQCAtNTkyOCw2ICs1OTI4LDkgQEAgZmFzdC9mb3Jtcy9zbGlkZXItdHJhbnNm
b3JtZWQuaHRtbAogZmFzdC9mb3Jtcy9zbGlkZXItbW91c2UtZXZlbnRzLmh0bWwKIGZhc3QvZm9y
bXMvc2xpZGVyLXpvb21lZC5odG1sCiAKKyMgTGluayBwcmVmZXRjaCBpcyBkaXNhYmxlZCBieSBk
ZWZhdWx0CisjZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLW9ubG9hZC5odG1sCisK
ICMgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhZ2VQcm9wZXJ0eSBpcyBub3QgaW1wbGVtZW50ZWQg
Zm9yIEdUSyB5ZXQuCiBwcmludGluZy9wYWdlLXJ1bGUtc2VsZWN0aW9uLmh0bWwKIApJbmRleDog
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL1NraXBwZWQJKHJldmlzaW9uIDYxNDAwKQorKysgTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTI5MCw2ICsyOTAsOSBAQCBz
dG9yYWdlL2luZGV4ZWRkYgogZmFzdC9kb20vRGV2aWNlT3JpZW50YXRpb24KIGZhc3QvZG9tL1dp
bmRvdy93aW5kb3ctcHJvcGVydGllcy1vbi1kZXZpY2Utb3JpZW50YXRpb24uaHRtbAogCisjIExp
bmsgcHJlZmV0Y2ggaXMgZGlzYWJsZWQgYnkgZGVmYXVsdAorI2Zhc3QvZG9tL0hUTUxMaW5rRWxl
bWVudC9wcmVmZXRjaC1vbmxvYWQuaHRtbAorCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zOTkwOAogZmFzdC9kb20vR2VvbG9jYXRpb24vbWF4aW11bS1hZ2UuaHRt
bAogCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQJKHJldmlzaW9uIDYxNDAwKQorKysgTGF5
b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAtNTQxNCw2ICs1
NDE0LDkgQEAgc3ZnL1czQy1TVkctMS4xL2ZpbHRlcnMtbGlnaHQtMDQtZi5zdmcKICMgPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0gIwogZmFzdC9kb20vR2VvbG9jYXRpb24vY2FsbGJhY2stdG8tcmVtb3Rl
LWNvbnRleHQyLmh0bWwKIAorIyBMaW5rIHByZWZldGNoIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQK
KyNmYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0Y2gtb25sb2FkLmh0bWwKKwogIyBGYWls
aW5nIGFmdGVyIGVuYWJsaW5nIEhUTUw1IHBhcnNlciBpbiByNjEyMzQKICMgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwNjYxCiBmYXN0L2VuY29kaW5nL2phcGFuZXNl
LWVuY29kaW5nLW1peC5odG1sCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBl
ZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAkocmV2aXNp
b24gNjE0MDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAkod29ya2luZyBj
b3B5KQpAQCAtODk2LDUgKzg5Niw4IEBAIHN0b3JhZ2UvaW5kZXhlZGRiCiBmYXN0L2RvbS9EZXZp
Y2VPcmllbnRhdGlvbgogZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLW9uLWRldmlj
ZS1vcmllbnRhdGlvbi5odG1sCiAKKyMgTGluayBwcmVmZXRjaCBpcyBkaXNhYmxlZCBieSBkZWZh
dWx0CitmYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0Y2gtb25sb2FkLmh0bWwKKwogIyBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6cGFnZVByb3BlcnR5IGlzIG5vdCBpbXBsZW1lbnRlZCBmb3Ig
V0lOIHlldC4KIHByaW50aW5nL3BhZ2UtcnVsZS1zZWxlY3Rpb24uaHRtbAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59108</attachid>
            <date>2010-06-18 07:46:01 -0700</date>
            <delta_ts>2010-07-09 06:30:16 -0700</delta_ts>
            <desc>Remove tabs from changelog</desc>
            <filename>prefetch7.patch</filename>
            <type>text/plain</type>
            <size>29484</size>
            <attacher name="Leon Clarke">leonclarke</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MTQwNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTUgQEAKKzIwMTAtMDYtMTggIExlb24gQ2xhcmtlICA8bGVvbmNsYXJrZUBnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBzdXBwb3J0IGZvciBsaW5rIHJlbD1wcmVmZXRjaAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY1MgorCisgICAgICAgIFRlc3Q6IGZhc3QvZG9t
L0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC1vbmxvYWQuaHRtbAorCisgICAgICAgICogaHRtbC9I
VE1MTGlua0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50Ojpw
YXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6
OnRva2VuaXplUmVsQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVu
dDo6cHJvY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6Om5vdGlmeUZp
bmlzaGVkKToKKyAgICAgICAgKiBodG1sL0hUTUxMaW5rRWxlbWVudC5oOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTExpbmtFbGVtZW50OjpSZWxBdHRyaWJ1dGU6OlJlbEF0dHJpYnV0ZSk6CisgICAg
ICAgICogbG9hZGVyL0NhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVJlc291cmNl
KToKKyAgICAgICAgKiBsb2FkZXIvQ2FjaGVkTGlua1ByZWZldGNoLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkTGlua1ByZWZldGNoOjpDYWNoZWRMaW5rUHJlZmV0Y2gpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkTGlua1ByZWZldGNoOjp+Q2FjaGVkTGlua1ByZWZldGNoKToK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZExpbmtQcmVmZXRjaDo6ZGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRMaW5rUHJlZmV0Y2g6OmVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZExpbmtQcmVmZXRjaDo6c2NoZWR1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkTGlu
a1ByZWZldGNoOjppc1ByZWZldGNoKToKKyAgICAgICAgKiBsb2FkZXIvQ2FjaGVkUmVzb3VyY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmRpZEFkZENsaWVudCk6Cisg
ICAgICAgICogbG9hZGVyL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRSZXNvdXJjZTo6KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjppc1ByZWZl
dGNoKToKKyAgICAgICAgKiBsb2FkZXIvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKiBsb2Fk
ZXIvQ2FjaGVkU2NyaXB0Lmg6CisgICAgICAgICogbG9hZGVyL0RvY0xvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEb2NMb2FkZXI6OnJlcXVlc3RMaW5rUHJlZmV0Y2gpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jTG9hZGVyOjpjYW5SZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY0xv
YWRlcjo6aW5jcmVtZW50UmVxdWVzdENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY0xvYWRl
cjo6ZGVjcmVtZW50UmVxdWVzdENvdW50KToKKyAgICAgICAgKiBsb2FkZXIvRG9jTG9hZGVyLmg6
CisgICAgICAgICogbG9hZGVyL2xvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWNoZWRS
ZXNvdXJjZVR5cGVUb1RhcmdldFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TG9hZGVyOjpkZXRl
cm1pbmVQcmlvcml0eSk6CisgICAgICAgIChXZWJDb3JlOjpMb2FkZXI6OmxvYWQpOgorICAgICAg
ICAoV2ViQ29yZTo6TG9hZGVyOjpIb3N0OjpzZXJ2ZVBlbmRpbmdSZXF1ZXN0cyk6CisgICAgICAg
IChXZWJDb3JlOjpMb2FkZXI6Okhvc3Q6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6TG9hZGVyOjpIb3N0OjpkaWRGYWlsKToKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRlcjo6
SG9zdDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRlcjo6SG9z
dDo6Y2FuY2VsUGVuZGluZ1JlcXVlc3RzKToKKyAgICAgICAgKiBsb2FkZXIvbG9hZGVyLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpMb2FkZXI6Oik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZVJlcXVlc3RCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RC
YXNlOjopOgorCiAyMDEwLTA2LTE4ICBBbnRvbiBNdWhpbiAgPGFudG9ubUBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgpJbmRleDogV2ViQ29yZS9o
dG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxM
aW5rRWxlbWVudC5jcHAJKHJldmlzaW9uIDYxNDAwKQorKysgV2ViQ29yZS9odG1sL0hUTUxMaW5r
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDkgQEAKICNpbmNsdWRlICJT
Y3JpcHRFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlIDx3
dGYvU3RkTGliRXh0cmFzLmg+CisjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCisjaW5jbHVkZSAi
Q2FjaGVkTGlua1ByZWZldGNoLmgiCisjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC0xMzAsNiArMTMzLDggQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmli
dQogICAgICAgICBzZXREaXNhYmxlZFN0YXRlKCFhdHRyLT5pc051bGwoKSk7CiAgICAgZWxzZSBp
ZiAoYXR0ci0+bmFtZSgpID09IG9uYmVmb3JlbG9hZEF0dHIpCiAgICAgICAgIHNldEF0dHJpYnV0
ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmJlZm9yZWxvYWRFdmVudCwgY3JlYXRlQXR0cmli
dXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyKSk7CisgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgp
ID09IG9ubG9hZEF0dHIpCisgICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnRO
YW1lcygpLmxvYWRFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRy
KSk7CiAgICAgZWxzZSB7CiAgICAgICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gdGl0bGVBdHRyICYm
IG1fc2hlZXQpCiAgICAgICAgICAgICBtX3NoZWV0LT5zZXRUaXRsZShhdHRyLT52YWx1ZSgpKTsK
QEAgLTE0MywxMiArMTQ4LDE5IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50Ojp0b2tlbml6ZVJlbEF0
dHJpYnUKICAgICByZWxBdHRyaWJ1dGUubV9pc0ljb24gPSBmYWxzZTsKICAgICByZWxBdHRyaWJ1
dGUubV9pc0FsdGVybmF0ZSA9IGZhbHNlOwogICAgIHJlbEF0dHJpYnV0ZS5tX2lzRE5TUHJlZmV0
Y2ggPSBmYWxzZTsKKyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKKyAgICByZWxBdHRyaWJ1dGUu
bV9pc0xpbmtQcmVmZXRjaCA9IGZhbHNlOworI2VuZGlmCiAgICAgaWYgKGVxdWFsSWdub3JpbmdD
YXNlKHJlbCwgInN0eWxlc2hlZXQiKSkKICAgICAgICAgcmVsQXR0cmlidXRlLm1faXNTdHlsZVNo
ZWV0ID0gdHJ1ZTsKICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShyZWwsICJpY29uIikg
fHwgZXF1YWxJZ25vcmluZ0Nhc2UocmVsLCAic2hvcnRjdXQgaWNvbiIpKQogICAgICAgICByZWxB
dHRyaWJ1dGUubV9pc0ljb24gPSB0cnVlOwogICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNl
KHJlbCwgImRucy1wcmVmZXRjaCIpKQogICAgICAgICByZWxBdHRyaWJ1dGUubV9pc0ROU1ByZWZl
dGNoID0gdHJ1ZTsKKyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKKyAgICBlbHNlIGlmIChlcXVh
bElnbm9yaW5nQ2FzZShyZWwsICJwcmVmZXRjaCIpKQorICAgICAgICByZWxBdHRyaWJ1dGUubV9p
c0xpbmtQcmVmZXRjaCA9IHRydWU7CisjZW5kaWYKICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5n
Q2FzZShyZWwsICJhbHRlcm5hdGUgc3R5bGVzaGVldCIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKHJl
bCwgInN0eWxlc2hlZXQgYWx0ZXJuYXRlIikpIHsKICAgICAgICAgcmVsQXR0cmlidXRlLm1faXNT
dHlsZVNoZWV0ID0gdHJ1ZTsKICAgICAgICAgcmVsQXR0cmlidXRlLm1faXNBbHRlcm5hdGUgPSB0
cnVlOwpAQCAtMTg1LDYgKzE5NywxNiBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6cHJvY2Vzcygp
CiAgICAgaWYgKG1fcmVsQXR0cmlidXRlLm1faXNETlNQcmVmZXRjaCAmJiBtX3VybC5pc1ZhbGlk
KCkgJiYgIW1fdXJsLmlzRW1wdHkoKSkKICAgICAgICAgUmVzb3VyY2VIYW5kbGU6OnByZXBhcmVG
b3JVUkwobV91cmwpOwogCisjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCisgICAgaWYgKG1fcmVs
QXR0cmlidXRlLm1faXNMaW5rUHJlZmV0Y2ggJiYgbV91cmwuaXNWYWxpZCgpKSB7CisgICAgICAg
IG1fY2FjaGVkTGlua1ByZWZldGNoID0gZG9jdW1lbnQoKS0+ZG9jTG9hZGVyKCktPnJlcXVlc3RM
aW5rUHJlZmV0Y2gobV91cmwpOworICAgICAgICBtX2xvYWRpbmcgPSB0cnVlOworCisgICAgICAg
IGlmIChtX2NhY2hlZExpbmtQcmVmZXRjaCkKKyAgICAgICAgICAgIG1fY2FjaGVkTGlua1ByZWZl
dGNoLT5hZGRDbGllbnQodGhpcyk7CisgICAgfQorI2VuZGlmCisKICAgICBib29sIGFjY2VwdElm
VHlwZUNvbnRhaW5zVGV4dENTUyA9IGRvY3VtZW50KCktPnBhZ2UoKSAmJiBkb2N1bWVudCgpLT5w
YWdlKCktPnNldHRpbmdzKCkgJiYgZG9jdW1lbnQoKS0+cGFnZSgpLT5zZXR0aW5ncygpLT50cmVh
dHNBbnlUZXh0Q1NTTGlua0FzU3R5bGVzaGVldCgpOwogCiAgICAgLy8gU3R5bGVzaGVldApAQCAt
MzIzLDYgKzM0NSwxMSBAQCBib29sIEhUTUxMaW5rRWxlbWVudDo6aXNMb2FkaW5nKCkgY29uc3QK
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q1NTU3R5bGVTaGVldCAqPihtX3NoZWV0LmdldCgpKS0+
aXNMb2FkaW5nKCk7CiB9CiAKK3ZvaWQgSFRNTExpbmtFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChD
YWNoZWRSZXNvdXJjZSopCit7CisgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50
TmFtZXMoKS5sb2FkRXZlbnQsIGZhbHNlLCBmYWxzZSkpOworfQorCiBib29sIEhUTUxMaW5rRWxl
bWVudDo6c2hlZXRMb2FkZWQoKQogewogICAgIGlmICghaXNMb2FkaW5nKCkgJiYgIWlzRGlzYWJs
ZWQoKSAmJiAhaXNBbHRlcm5hdGUoKSkgewpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaAkocmV2
aXNpb24gNjE0MDApCisrKyBXZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMxLDYgKzMxLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2Fj
aGVkQ1NTU3R5bGVTaGVldDsKK2NsYXNzIENhY2hlZExpbmtQcmVmZXRjaDsKIGNsYXNzIEtVUkw7
CiAKIGNsYXNzIEhUTUxMaW5rRWxlbWVudCA6IHB1YmxpYyBIVE1MRWxlbWVudCwgcHVibGljIENh
Y2hlZFJlc291cmNlQ2xpZW50IHsKQEAgLTQwLDggKzQxLDE5IEBAIHB1YmxpYzoKICAgICAgICAg
Ym9vbCBtX2lzSWNvbjsKICAgICAgICAgYm9vbCBtX2lzQWx0ZXJuYXRlOwogICAgICAgICBib29s
IG1faXNETlNQcmVmZXRjaDsKKyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKKyAgICAgICAgYm9v
bCBtX2lzTGlua1ByZWZldGNoOworI2VuZGlmCiAKLSAgICAgICAgUmVsQXR0cmlidXRlKCkgOiBt
X2lzU3R5bGVTaGVldChmYWxzZSksIG1faXNJY29uKGZhbHNlKSwgbV9pc0FsdGVybmF0ZShmYWxz
ZSksIG1faXNETlNQcmVmZXRjaChmYWxzZSkgeyB9CisgICAgICAgIFJlbEF0dHJpYnV0ZSgpCisg
ICAgICAgIDogICAgIG1faXNTdHlsZVNoZWV0KGZhbHNlKQorICAgICAgICAgICAgLCBtX2lzSWNv
bihmYWxzZSkKKyAgICAgICAgICAgICwgbV9pc0FsdGVybmF0ZShmYWxzZSkKKyAgICAgICAgICAg
ICwgbV9pc0ROU1ByZWZldGNoKGZhbHNlKQorI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQorICAg
ICAgICAgICAgLCBtX2lzTGlua1ByZWZldGNoKGZhbHNlKQorI2VuZGlmCisgICAgICAgICAgICB7
IH07CiAgICAgfTsKIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxMaW5rRWxlbWVudD4gY3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCosIGJvb2wgY3JlYXRlZEJ5UGFyc2Vy
KTsKQEAgLTk1LDYgKzEwNyw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBmcm9tIENhY2hlZFJlc291
cmNlQ2xpZW50CiAgICAgdmlydHVhbCB2b2lkIHNldENTU1N0eWxlU2hlZXQoY29uc3QgU3RyaW5n
JiBocmVmLCBjb25zdCBLVVJMJiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIGNvbnN0
IENhY2hlZENTU1N0eWxlU2hlZXQqIHNoZWV0KTsKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5Rmlu
aXNoZWQoQ2FjaGVkUmVzb3VyY2UqKTsKICAgICB2aXJ0dWFsIGJvb2wgc2hlZXRMb2FkZWQoKTsK
IAogICAgIGJvb2wgaXNBbHRlcm5hdGUoKSBjb25zdCB7IHJldHVybiBtX2Rpc2FibGVkU3RhdGUg
PT0gVW5zZXQgJiYgbV9yZWxBdHRyaWJ1dGUubV9pc0FsdGVybmF0ZTsgfQpAQCAtMTIyLDYgKzEz
NSw5IEBAIHByaXZhdGU6CiAKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRDU1NTdHls
ZVNoZWV0PiBtX2NhY2hlZFNoZWV0OwogICAgIFJlZlB0cjxDU1NTdHlsZVNoZWV0PiBtX3NoZWV0
OworI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQorICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENh
Y2hlZExpbmtQcmVmZXRjaD4gbV9jYWNoZWRMaW5rUHJlZmV0Y2g7CisjZW5kaWYKICAgICBLVVJM
IG1fdXJsOwogICAgIFN0cmluZyBtX3R5cGU7CiAgICAgU3RyaW5nIG1fbWVkaWE7CkluZGV4OiBX
ZWJDb3JlL2xvYWRlci9DYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvQ2Fj
aGUuY3BwCShyZXZpc2lvbiA2MTQwMCkKKysrIFdlYkNvcmUvbG9hZGVyL0NhY2hlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzgsNiArMzgsOSBAQAogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgi
CiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KKyNpZiBF
TkFCTEUoTElOS19QUkVGRVRDSCkKKyNpbmNsdWRlICJDYWNoZWRMaW5rUHJlZmV0Y2guaCIKKyNl
bmRpZgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCkBAIC04Niw2ICs4OSwxMCBAQCBzdGF0aWMg
Q2FjaGVkUmVzb3VyY2UqIGNyZWF0ZVJlc291cmNlKENhCiAgICAgY2FzZSBDYWNoZWRSZXNvdXJj
ZTo6WEJMU3R5bGVTaGVldDoKICAgICAgICAgcmV0dXJuIG5ldyBDYWNoZWRYQkxEb2N1bWVudCh1
cmwuc3RyaW5nKCkpOwogI2VuZGlmCisjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCisgICAgY2Fz
ZSBDYWNoZWRSZXNvdXJjZTo6TGlua1ByZWZldGNoOgorICAgICAgICByZXR1cm4gbmV3IENhY2hl
ZExpbmtQcmVmZXRjaCh1cmwuc3RyaW5nKCkpOworI2VuZGlmCiAgICAgZGVmYXVsdDoKICAgICAg
ICAgYnJlYWs7CiAgICAgfQpJbmRleDogV2ViQ29yZS9sb2FkZXIvQ2FjaGVkTGlua1ByZWZldGNo
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvQ2FjaGVkTGlua1ByZWZldGNoLmgJKHJl
dmlzaW9uIDApCisrKyBXZWJDb3JlL2xvYWRlci9DYWNoZWRMaW5rUHJlZmV0Y2guaAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDEwLCBUaGUgQW5kcm9p
ZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyovCisKKyNpZm5kZWYgQ2FjaGVkTGlua1ByZWZldGNo
X2gKKyNkZWZpbmUgQ2FjaGVkTGlua1ByZWZldGNoX2gKKworI2luY2x1ZGUgIkNhY2hlZFJlc291
cmNlLmgiCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCIKKyNpbmNsdWRlICJDYWNo
ZWRSZXNvdXJjZUNsaWVudFdhbGtlci5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
RG9jTG9hZGVyOworCitjbGFzcyBDYWNoZWRMaW5rUHJlZmV0Y2ggOiBwdWJsaWMgQ2FjaGVkUmVz
b3VyY2UgeworcHVibGljOgorICAgIENhY2hlZExpbmtQcmVmZXRjaChjb25zdCBTdHJpbmcmIFVS
TCkgOiBDYWNoZWRSZXNvdXJjZShVUkwsIExpbmtQcmVmZXRjaCkgeyB9OworICAgIHZpcnR1YWwg
fkNhY2hlZExpbmtQcmVmZXRjaCgpIHsgfTsKKworICAgIHZpcnR1YWwgdm9pZCBkYXRhKFBhc3NS
ZWZQdHI8U2hhcmVkQnVmZmVyPiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCisgICAgeworICAgICAg
ICBpZiAoIWFsbERhdGFSZWNlaXZlZCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBD
YWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlciB3KG1fY2xpZW50cyk7CisgICAgICAgIHdoaWxlIChD
YWNoZWRSZXNvdXJjZUNsaWVudCogYyA9IHcubmV4dCgpKQorICAgICAgICAgICAgYy0+bm90aWZ5
RmluaXNoZWQodGhpcyk7CisgICAgfTsKKworICAgIHZpcnR1YWwgdm9pZCBlcnJvcigpIHsgfTsK
KworICAgIHZpcnR1YWwgYm9vbCBzY2hlZHVsZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKwor
ICAgIHZpcnR1YWwgYm9vbCBpc1ByZWZldGNoKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorfTsK
K30KKworI2VuZGlmCkluZGV4OiBXZWJDb3JlL2xvYWRlci9DYWNoZWRSZXNvdXJjZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvQ2FjaGVkUmVzb3VyY2UuY3BwCShyZXZpc2lvbiA2
MTQwMCkKKysrIFdlYkNvcmUvbG9hZGVyL0NhY2hlZFJlc291cmNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjYsNiArMjYsNyBAQAogCiAjaW5jbHVkZSAiQ2FjaGUuaCIKICNpbmNsdWRlICJDYWNo
ZWRNZXRhZGF0YS5oIgorI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJEb2NMb2FkZXIuaCIKICNpbmNs
dWRlICJGcmFtZS5oIgpAQCAtMjA0LDYgKzIwNSwxMiBAQCB2b2lkIENhY2hlZFJlc291cmNlOjph
ZGRDbGllbnQoQ2FjaGVkUmVzCiAgICAgZGlkQWRkQ2xpZW50KGNsaWVudCk7CiB9CiAKK3ZvaWQg
Q2FjaGVkUmVzb3VyY2U6OmRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCogYykKK3sK
KyAgICBpZiAoIWlzTG9hZGluZygpKQorICAgICAgICBjLT5ub3RpZnlGaW5pc2hlZCh0aGlzKTsK
K30KKwogdm9pZCBDYWNoZWRSZXNvdXJjZTo6YWRkQ2xpZW50VG9TZXQoQ2FjaGVkUmVzb3VyY2VD
bGllbnQqIGNsaWVudCkKIHsKICAgICBBU1NFUlQoIWlzUHVyZ2VhYmxlKCkpOwpJbmRleDogV2Vi
Q29yZS9sb2FkZXIvQ2FjaGVkUmVzb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRl
ci9DYWNoZWRSZXNvdXJjZS5oCShyZXZpc2lvbiA2MTQwMCkKKysrIFdlYkNvcmUvbG9hZGVyL0Nh
Y2hlZFJlc291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDYgKzY0LDkgQEAgcHVibGljOgog
I2lmIEVOQUJMRShYQkwpCiAgICAgICAgICwgWEJMCiAjZW5kaWYKKyNpZiBFTkFCTEUoTElOS19Q
UkVGRVRDSCkKKyAgICAgICAgLCBMaW5rUHJlZmV0Y2gKKyNlbmRpZgogICAgIH07CiAKICAgICBl
bnVtIFN0YXR1cyB7CkBAIC0xMDMsNyArMTA2LDcgQEAgcHVibGljOgogICAgIFByZWxvYWRSZXN1
bHQgcHJlbG9hZFJlc3VsdCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFByZWxvYWRSZXN1
bHQ+KG1fcHJlbG9hZFJlc3VsdCk7IH0KICAgICB2b2lkIHNldFJlcXVlc3RlZEZyb21OZXR3b3Jr
aW5nTGF5ZXIoKSB7IG1fcmVxdWVzdGVkRnJvbU5ldHdvcmtpbmdMYXllciA9IHRydWU7IH0KIAot
ICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCopOwog
ICAgIHZpcnR1YWwgdm9pZCBhbGxDbGllbnRzUmVtb3ZlZCgpIHsgfQogCiAgICAgdW5zaWduZWQg
Y291bnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudHMuc2l6ZSgpOyB9CkBAIC0xMjIsNiArMTI1
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TG9hZGluZyhib29sIGIpIHsgbV9sb2FkaW5nID0g
YjsgfQogCiAgICAgdmlydHVhbCBib29sIGlzSW1hZ2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQorICAgIHZpcnR1YWwgYm9vbCBpc1ByZWZldGNoKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
IAogICAgIHVuc2lnbmVkIGFjY2Vzc0NvdW50KCkgY29uc3QgeyByZXR1cm4gbV9hY2Nlc3NDb3Vu
dDsgfQogICAgIHZvaWQgaW5jcmVhc2VBY2Nlc3NDb3VudCgpIHsgbV9hY2Nlc3NDb3VudCsrOyB9
CkluZGV4OiBXZWJDb3JlL2xvYWRlci9DYWNoZWRTY3JpcHQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvbG9hZGVyL0NhY2hlZFNjcmlwdC5jcHAJKHJldmlzaW9uIDYxNDAwKQorKysgV2ViQ29y
ZS9sb2FkZXIvQ2FjaGVkU2NyaXB0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTIgKzUwLDYg
QEAgQ2FjaGVkU2NyaXB0Ojp+Q2FjaGVkU2NyaXB0KCkKIHsKIH0KIAotdm9pZCBDYWNoZWRTY3Jp
cHQ6OmRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCogYykKLXsKLSAgICBpZiAoIWlz
TG9hZGluZygpKQotICAgICAgICBjLT5ub3RpZnlGaW5pc2hlZCh0aGlzKTsKLX0KLQogdm9pZCBD
YWNoZWRTY3JpcHQ6OmFsbENsaWVudHNSZW1vdmVkKCkKIHsKICAgICBtX2RlY29kZWREYXRhRGVs
ZXRpb25UaW1lci5zdGFydE9uZVNob3QoMCk7CkluZGV4OiBXZWJDb3JlL2xvYWRlci9DYWNoZWRT
Y3JpcHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9DYWNoZWRTY3JpcHQuaAkocmV2
aXNpb24gNjE0MDApCisrKyBXZWJDb3JlL2xvYWRlci9DYWNoZWRTY3JpcHQuaAkod29ya2luZyBj
b3B5KQpAQCAtNDEsNyArNDEsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgY29u
c3QgU3RyaW5nJiBzY3JpcHQoKTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkQ2xpZW50
KENhY2hlZFJlc291cmNlQ2xpZW50Kik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBhbGxDbGllbnRz
UmVtb3ZlZCgpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJp
bmcmKTsKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0RvY0xvYWRlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9sb2FkZXIvRG9jTG9hZGVyLmNwcAkocmV2aXNpb24gNjE0MDApCisrKyBXZWJDb3Jl
L2xvYWRlci9Eb2NMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw5IEBACiAj
aW5jbHVkZSAibG9hZGVyLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRl
ICJTZXR0aW5ncy5oIgorI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQorI2luY2x1ZGUgIkNhY2hl
ZExpbmtQcmVmZXRjaC5oIgorI2VuZGlmCiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgog
CiAjZGVmaW5lIFBSRUxPQURfREVCVUcgMApAQCAtMTY4LDYgKzE3MSwxMyBAQCBDYWNoZWRYQkxE
b2N1bWVudCogRG9jTG9hZGVyOjpyZXF1ZXN0WEJMCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShM
SU5LX1BSRUZFVENIKQorQ2FjaGVkTGlua1ByZWZldGNoKiBEb2NMb2FkZXI6OnJlcXVlc3RMaW5r
UHJlZmV0Y2goY29uc3QgU3RyaW5nJiB1cmwpCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENh
Y2hlZExpbmtQcmVmZXRjaCo+KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6TGlua1By
ZWZldGNoLCB1cmwsIFN0cmluZygpKSk7Cit9CisjZW5kaWYKKwogYm9vbCBEb2NMb2FkZXI6OmNh
blJlcXVlc3QoQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgS1VSTCYgdXJsKQogewog
ICAgIC8vIFNvbWUgdHlwZXMgb2YgcmVzb3VyY2VzIGNhbiBiZSBsb2FkZWQgb25seSBmcm9tIHRo
ZSBzYW1lIG9yaWdpbi4gIE90aGVyCkBAIC0xNzgsNiArMTg4LDkgQEAgYm9vbCBEb2NMb2FkZXI6
OmNhblJlcXVlc3QoQ2FjaGVkUmVzb3VyYwogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkNTU1N0
eWxlU2hlZXQ6CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6U2NyaXB0OgogICAgIGNhc2UgQ2Fj
aGVkUmVzb3VyY2U6OkZvbnRSZXNvdXJjZToKKyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKKyAg
ICBjYXNlIENhY2hlZFJlc291cmNlOjpMaW5rUHJlZmV0Y2g6CisjZW5kaWYKICAgICAgICAgLy8g
VGhlc2UgdHlwZXMgb2YgcmVzb3VyY2VzIGNhbiBiZSBsb2FkZWQgZnJvbSBhbnkgb3JpZ2luLgog
ICAgICAgICAvLyBGSVhNRTogQXJlIHdlIHN1cmUgYWJvdXQgQ2FjaGVkUmVzb3VyY2U6OkZvbnRS
ZXNvdXJjZT8KICAgICAgICAgYnJlYWs7CkBAIC0yMjAsNiArMjMzLDkgQEAgYm9vbCBEb2NMb2Fk
ZXI6OmNhblJlcXVlc3QoQ2FjaGVkUmVzb3VyYwogICAgICAgICBicmVhazsKICAgICBjYXNlIENh
Y2hlZFJlc291cmNlOjpJbWFnZVJlc291cmNlOgogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkNT
U1N0eWxlU2hlZXQ6CisjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCisgICAgY2FzZSBDYWNoZWRS
ZXNvdXJjZTo6TGlua1ByZWZldGNoOgorI2VuZGlmCiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6
Rm9udFJlc291cmNlOiB7CiAgICAgICAgIC8vIFRoZXNlIHJlc291cmNlcyBjYW4gY29ycnVwdCBv
bmx5IHRoZSBmcmFtZSdzIHBpeGVscy4KICAgICAgICAgaWYgKEZyYW1lKiBmID0gZnJhbWUoKSkg
ewpAQCAtMzU1LDEzICszNzEsMTkgQEAgdm9pZCBEb2NMb2FkZXI6OmNoZWNrQ2FjaGVPYmplY3RT
dGF0dXMoQwogICAgIGZyYW1lKCktPmxvYWRlcigpLT5sb2FkZWRSZXNvdXJjZUZyb21NZW1vcnlD
YWNoZShyZXNvdXJjZSk7CiB9CiAKLXZvaWQgRG9jTG9hZGVyOjppbmNyZW1lbnRSZXF1ZXN0Q291
bnQoKQordm9pZCBEb2NMb2FkZXI6OmluY3JlbWVudFJlcXVlc3RDb3VudChjb25zdCBDYWNoZWRS
ZXNvdXJjZSogcmVzKQogeworICAgIGlmIChyZXMtPmlzUHJlZmV0Y2goKSkKKyAgICAgICAgcmV0
dXJuOworCiAgICAgKyttX3JlcXVlc3RDb3VudDsKIH0KIAotdm9pZCBEb2NMb2FkZXI6OmRlY3Jl
bWVudFJlcXVlc3RDb3VudCgpCit2b2lkIERvY0xvYWRlcjo6ZGVjcmVtZW50UmVxdWVzdENvdW50
KGNvbnN0IENhY2hlZFJlc291cmNlKiByZXMpCiB7CisgICAgaWYgKHJlcy0+aXNQcmVmZXRjaCgp
KQorICAgICAgICByZXR1cm47CisKICAgICAtLW1fcmVxdWVzdENvdW50OwogICAgIEFTU0VSVCht
X3JlcXVlc3RDb3VudCA+IC0xKTsKIH0KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0RvY0xvYWRlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0RvY0xvYWRlci5oCShyZXZpc2lvbiA2MTQw
MCkKKysrIFdlYkNvcmUvbG9hZGVyL0RvY0xvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2
ICs0NSw5IEBAIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRnJhbWU7CiBjbGFzcyBJbWFnZUxvYWRl
cjsKIGNsYXNzIEtVUkw7CisjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCitjbGFzcyBDYWNoZWRM
aW5rUHJlZmV0Y2g7CisjZW5kaWYKIAogLy8gVGhlIERvY0xvYWRlciBtYW5hZ2VzIHRoZSBsb2Fk
aW5nIG9mIHNjcmlwdHMvaW1hZ2VzL3N0eWxlc2hlZXRzIGZvciBhIHNpbmdsZSBkb2N1bWVudC4K
IGNsYXNzIERvY0xvYWRlciA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CkBAIC02Nyw2ICs3MCw5IEBA
IHB1YmxpYzoKICNpZiBFTkFCTEUoWEJMKQogICAgIENhY2hlZFhCTERvY3VtZW50KiByZXF1ZXN0
WEJMRG9jdW1lbnQoY29uc3QgU3RyaW5nICZ1cmwpOwogI2VuZGlmCisjaWYgRU5BQkxFKExJTktf
UFJFRkVUQ0gpCisgICAgQ2FjaGVkTGlua1ByZWZldGNoKiByZXF1ZXN0TGlua1ByZWZldGNoKGNv
bnN0IFN0cmluZyAmdXJsKTsKKyNlbmRpZgogCiAgICAgLy8gTG9ncyBhbiBhY2Nlc3MgZGVuaWVk
IG1lc3NhZ2UgdG8gdGhlIGNvbnNvbGUgZm9yIHRoZSBzcGVjaWZpZWQgVVJMLgogICAgIHZvaWQg
cHJpbnRBY2Nlc3NEZW5pZWRNZXNzYWdlKGNvbnN0IEtVUkwmIHVybCkgY29uc3Q7CkBAIC05MSw4
ICs5Nyw4IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIHNldEFsbG93U3RhbGVSZXNvdXJjZXMo
Ym9vbCBhbGxvd1N0YWxlUmVzb3VyY2VzKSB7IG1fYWxsb3dTdGFsZVJlc291cmNlcyA9IGFsbG93
U3RhbGVSZXNvdXJjZXM7IH0KIAotICAgIHZvaWQgaW5jcmVtZW50UmVxdWVzdENvdW50KCk7Ci0g
ICAgdm9pZCBkZWNyZW1lbnRSZXF1ZXN0Q291bnQoKTsKKyAgICB2b2lkIGluY3JlbWVudFJlcXVl
c3RDb3VudChjb25zdCBDYWNoZWRSZXNvdXJjZSopOworICAgIHZvaWQgZGVjcmVtZW50UmVxdWVz
dENvdW50KGNvbnN0IENhY2hlZFJlc291cmNlKik7CiAgICAgaW50IHJlcXVlc3RDb3VudCgpOwog
ICAgIAogICAgIHZvaWQgY2xlYXJQcmVsb2FkcygpOwpJbmRleDogV2ViQ29yZS9sb2FkZXIvbG9h
ZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9sb2FkZXIuY3BwCShyZXZpc2lv
biA2MTQwMCkKKysrIFdlYkNvcmUvbG9hZGVyL2xvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTg5LDcgKzg5LDEyIEBAIHN0YXRpYyBSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldFR5cGUgY2FjaGUK
ICAgICAgICAgcmV0dXJuIFJlc291cmNlUmVxdWVzdDo6VGFyZ2V0SXNGb250UmVzb3VyY2U7CiAg
ICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6SW1hZ2VSZXNvdXJjZToKICAgICAgICAgcmV0dXJuIFJl
c291cmNlUmVxdWVzdDo6VGFyZ2V0SXNJbWFnZTsKKyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkK
KyAgICBjYXNlIENhY2hlZFJlc291cmNlOjpMaW5rUHJlZmV0Y2g6CisgICAgICAgIHJldHVybiBS
ZXNvdXJjZVJlcXVlc3Q6OlRhcmdldElzUHJlZmV0Y2g7CisjZW5kaWYKICAgICB9CisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIFJlc291cmNlUmVxdWVzdDo6VGFyZ2V0SXNT
dWJyZXNvdXJjZTsKIH0KIApAQCAtMTEwLDYgKzExNSwxMCBAQCBMb2FkZXI6OlByaW9yaXR5IExv
YWRlcjo6ZGV0ZXJtaW5lUHJpb3JpCiAgICAgICAgICAgICByZXR1cm4gTWVkaXVtOwogICAgICAg
ICBjYXNlIENhY2hlZFJlc291cmNlOjpJbWFnZVJlc291cmNlOgogICAgICAgICAgICAgcmV0dXJu
IExvdzsKKyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKKyAgICAgICAgY2FzZSBDYWNoZWRSZXNv
dXJjZTo6TGlua1ByZWZldGNoOgorICAgICAgICAgICAgcmV0dXJuIFZlcnlMb3c7CisjZW5kaWYK
ICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIExvdzsKQEAgLTEz
OSw5ICsxNDgsOSBAQCB2b2lkIExvYWRlcjo6bG9hZChEb2NMb2FkZXIqIGRvY0xvYWRlciwgCiAg
ICAgYm9vbCBoYWRSZXF1ZXN0cyA9IGhvc3QtPmhhc1JlcXVlc3RzKCk7CiAgICAgUHJpb3JpdHkg
cHJpb3JpdHkgPSBkZXRlcm1pbmVQcmlvcml0eShyZXNvdXJjZSk7CiAgICAgaG9zdC0+YWRkUmVx
dWVzdChyZXF1ZXN0LCBwcmlvcml0eSk7Ci0gICAgZG9jTG9hZGVyLT5pbmNyZW1lbnRSZXF1ZXN0
Q291bnQoKTsKKyAgICBkb2NMb2FkZXItPmluY3JlbWVudFJlcXVlc3RDb3VudChyZXF1ZXN0LT5j
YWNoZWRSZXNvdXJjZSgpKTsKIAotICAgIGlmIChwcmlvcml0eSA+IExvdyB8fCAhdXJsLnByb3Rv
Y29sSW5IVFRQRmFtaWx5KCkgfHwgIWhhZFJlcXVlc3RzKSB7CisgICAgaWYgKHByaW9yaXR5ID4g
TG93IHx8ICF1cmwucHJvdG9jb2xJbkhUVFBGYW1pbHkoKSB8fCAocHJpb3JpdHkgPT0gTG93ICYm
ICFoYWRSZXF1ZXN0cykpIHsKICAgICAgICAgLy8gVHJ5IHRvIHJlcXVlc3QgaW1wb3J0YW50IHJl
c291cmNlcyBpbW1lZGlhdGVseQogICAgICAgICBob3N0LT5zZXJ2ZVBlbmRpbmdSZXF1ZXN0cyhw
cmlvcml0eSk7CiAgICAgfSBlbHNlIHsKQEAgLTM3MCw3ICszNzksNyBAQCB2b2lkIExvYWRlcjo6
SG9zdDo6c2VydmVQZW5kaW5nUmVxdWVzdHMoCiAgICAgICAgICAgICBwcmludGYoIkhPU1QgJXMg
Q09VTlQgJWQgTE9BRElORyAlc1xuIiwgcmVzb3VyY2VSZXF1ZXN0LnVybCgpLmhvc3QoKS5sYXRp
bjEoKS5kYXRhKCksIG1fcmVxdWVzdHNMb2FkaW5nLnNpemUoKSwgcmVxdWVzdC0+Y2FjaGVkUmVz
b3VyY2UoKS0+dXJsKCkubGF0aW4xKCkuZGF0YSgpKTsKICNlbmRpZgogICAgICAgICB9IGVsc2Ug
eyAgICAgICAgICAgIAotICAgICAgICAgICAgZG9jTG9hZGVyLT5kZWNyZW1lbnRSZXF1ZXN0Q291
bnQoKTsKKyAgICAgICAgICAgIGRvY0xvYWRlci0+ZGVjcmVtZW50UmVxdWVzdENvdW50KHJlcXVl
c3QtPmNhY2hlZFJlc291cmNlKCkpOwogICAgICAgICAgICAgZG9jTG9hZGVyLT5zZXRMb2FkSW5Q
cm9ncmVzcyh0cnVlKTsKICAgICAgICAgICAgIHJlcXVlc3QtPmNhY2hlZFJlc291cmNlKCktPmVy
cm9yKCk7CiAgICAgICAgICAgICBkb2NMb2FkZXItPnNldExvYWRJblByb2dyZXNzKGZhbHNlKTsK
QEAgLTM5NCw3ICs0MDMsNyBAQCB2b2lkIExvYWRlcjo6SG9zdDo6ZGlkRmluaXNoTG9hZGluZyhT
dWJyCiAgICAgLy8gdGhlIGRvY0xvYWRlciB0aGF0IGl0IHdpbGwgZGVsZXRlIHdoZW4gdGhlIGRv
Y3VtZW50IGdldHMgZGVsZXRlZC4KICAgICBSZWZQdHI8RG9jdW1lbnQ+IHByb3RlY3Rvcihkb2NM
b2FkZXItPmRvYygpKTsKICAgICBpZiAoIXJlcXVlc3QtPmlzTXVsdGlwYXJ0KCkpCi0gICAgICAg
IGRvY0xvYWRlci0+ZGVjcmVtZW50UmVxdWVzdENvdW50KCk7CisgICAgICAgIGRvY0xvYWRlci0+
ZGVjcmVtZW50UmVxdWVzdENvdW50KHJlcXVlc3QtPmNhY2hlZFJlc291cmNlKCkpOwogCiAgICAg
Q2FjaGVkUmVzb3VyY2UqIHJlc291cmNlID0gcmVxdWVzdC0+Y2FjaGVkUmVzb3VyY2UoKTsKICAg
ICBBU1NFUlQoIXJlc291cmNlLT5yZXNvdXJjZVRvUmV2YWxpZGF0ZSgpKTsKQEAgLTQ0Miw3ICs0
NTEsNyBAQCB2b2lkIExvYWRlcjo6SG9zdDo6ZGlkRmFpbChTdWJyZXNvdXJjZUxvCiAgICAgLy8g
dGhlIGRvY0xvYWRlciB0aGF0IGl0IHdpbGwgZGVsZXRlIHdoZW4gdGhlIGRvY3VtZW50IGdldHMg
ZGVsZXRlZC4KICAgICBSZWZQdHI8RG9jdW1lbnQ+IHByb3RlY3Rvcihkb2NMb2FkZXItPmRvYygp
KTsKICAgICBpZiAoIXJlcXVlc3QtPmlzTXVsdGlwYXJ0KCkpCi0gICAgICAgIGRvY0xvYWRlci0+
ZGVjcmVtZW50UmVxdWVzdENvdW50KCk7CisgICAgICAgIGRvY0xvYWRlci0+ZGVjcmVtZW50UmVx
dWVzdENvdW50KHJlcXVlc3QtPmNhY2hlZFJlc291cmNlKCkpOwogCiAgICAgQ2FjaGVkUmVzb3Vy
Y2UqIHJlc291cmNlID0gcmVxdWVzdC0+Y2FjaGVkUmVzb3VyY2UoKTsKICAgICAKQEAgLTQ4Nyw3
ICs0OTYsNyBAQCB2b2lkIExvYWRlcjo6SG9zdDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFN1CiAgICAg
ICAgICAgICAvLyAzMDQgTm90IG1vZGlmaWVkIC8gVXNlIGxvY2FsIGNvcHkKICAgICAgICAgICAg
IG1fcmVxdWVzdHNMb2FkaW5nLnJlbW92ZShsb2FkZXIpOwogICAgICAgICAgICAgbG9hZGVyLT5j
bGVhckNsaWVudCgpOwotICAgICAgICAgICAgcmVxdWVzdC0+ZG9jTG9hZGVyKCktPmRlY3JlbWVu
dFJlcXVlc3RDb3VudCgpOworICAgICAgICAgICAgcmVxdWVzdC0+ZG9jTG9hZGVyKCktPmRlY3Jl
bWVudFJlcXVlc3RDb3VudChyZXF1ZXN0LT5jYWNoZWRSZXNvdXJjZSgpKTsKIAogICAgICAgICAg
ICAgLy8gRXhpc3RpbmcgcmVzb3VyY2UgaXMgb2ssIGp1c3QgdXNlIGl0IHVwZGF0aW5nIHRoZSBl
eHBpcmF0aW9uIHRpbWUuCiAgICAgICAgICAgICBjYWNoZSgpLT5yZXZhbGlkYXRpb25TdWNjZWVk
ZWQocmVzb3VyY2UsIHJlc3BvbnNlKTsKQEAgLTUxOSw3ICs1MjgsNyBAQCB2b2lkIExvYWRlcjo6
SG9zdDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFN1CiAgICAgICAgIHJlcXVlc3QtPnNldElzTXVsdGlw
YXJ0KHRydWUpOwogICAgICAgICAKICAgICAgICAgLy8gV2UgZG9uJ3QgY291bnQgbXVsdGlQYXJ0
cyBpbiBhIERvY0xvYWRlcidzIHJlcXVlc3QgY291bnQKLSAgICAgICAgcmVxdWVzdC0+ZG9jTG9h
ZGVyKCktPmRlY3JlbWVudFJlcXVlc3RDb3VudCgpOworICAgICAgICByZXF1ZXN0LT5kb2NMb2Fk
ZXIoKS0+ZGVjcmVtZW50UmVxdWVzdENvdW50KHJlcXVlc3QtPmNhY2hlZFJlc291cmNlKCkpOwog
CiAgICAgICAgIC8vIElmIHdlIGdldCBhIG11bHRpcGFydCByZXNwb25zZSwgd2UgbXVzdCBoYXZl
IGEgaGFuZGxlCiAgICAgICAgIEFTU0VSVChsb2FkZXItPmhhbmRsZSgpKTsKQEAgLTU4Miw3ICs1
OTEsNyBAQCB2b2lkIExvYWRlcjo6SG9zdDo6Y2FuY2VsUGVuZGluZ1JlcXVlc3RzCiAgICAgICAg
IGlmIChyZXF1ZXN0LT5kb2NMb2FkZXIoKSA9PSBkb2NMb2FkZXIpIHsKICAgICAgICAgICAgIGNh
Y2hlKCktPnJlbW92ZShyZXF1ZXN0LT5jYWNoZWRSZXNvdXJjZSgpKTsKICAgICAgICAgICAgIGRl
bGV0ZSByZXF1ZXN0OwotICAgICAgICAgICAgZG9jTG9hZGVyLT5kZWNyZW1lbnRSZXF1ZXN0Q291
bnQoKTsKKyAgICAgICAgICAgIGRvY0xvYWRlci0+ZGVjcmVtZW50UmVxdWVzdENvdW50KHJlcXVl
c3QtPmNhY2hlZFJlc291cmNlKCkpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHJlbWFp
bmluZy5hcHBlbmQocmVxdWVzdCk7CiAgICAgfQpJbmRleDogV2ViQ29yZS9sb2FkZXIvbG9hZGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvbG9hZGVyLmgJKHJldmlzaW9uIDYxNDAw
KQorKysgV2ViQ29yZS9sb2FkZXIvbG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDggKzQ4
LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZvaWQgY2FuY2VsUmVxdWVzdHMo
RG9jTG9hZGVyKik7CiAgICAgICAgIAotICAgICAgICBlbnVtIFByaW9yaXR5IHsgTG93LCBNZWRp
dW0sIEhpZ2ggfTsKLSAgICAgICAgdm9pZCBzZXJ2ZVBlbmRpbmdSZXF1ZXN0cyhQcmlvcml0eSBt
aW5pbXVtUHJpb3JpdHkgPSBMb3cpOworICAgICAgICBlbnVtIFByaW9yaXR5IHsgVmVyeUxvdywg
TG93LCBNZWRpdW0sIEhpZ2ggfTsKKyAgICAgICAgdm9pZCBzZXJ2ZVBlbmRpbmdSZXF1ZXN0cyhQ
cmlvcml0eSBtaW5pbXVtUHJpb3JpdHkgPSBWZXJ5TG93KTsKIAogICAgICAgICBib29sIGlzU3Vz
cGVuZGluZ1BlbmRpbmdSZXF1ZXN0cygpIHsgcmV0dXJuIG1faXNTdXNwZW5kaW5nUGVuZGluZ1Jl
cXVlc3RzOyB9CiAgICAgICAgIHZvaWQgc3VzcGVuZFBlbmRpbmdSZXF1ZXN0cygpOwpAQCAtNzYs
NyArNzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICB2b2lkIGFkZFJlcXVl
c3QoUmVxdWVzdCosIFByaW9yaXR5KTsKICAgICAgICAgICAgIHZvaWQgbm9uQ2FjaGVSZXF1ZXN0
SW5GbGlnaHQoKTsKICAgICAgICAgICAgIHZvaWQgbm9uQ2FjaGVSZXF1ZXN0Q29tcGxldGUoKTsK
LSAgICAgICAgICAgIHZvaWQgc2VydmVQZW5kaW5nUmVxdWVzdHMoUHJpb3JpdHkgbWluaW11bVBy
aW9yaXR5ID0gTG93KTsKKyAgICAgICAgICAgIHZvaWQgc2VydmVQZW5kaW5nUmVxdWVzdHMoUHJp
b3JpdHkgbWluaW11bVByaW9yaXR5ID0gVmVyeUxvdyk7CiAgICAgICAgICAgICB2b2lkIGNhbmNl
bFJlcXVlc3RzKERvY0xvYWRlciopOwogICAgICAgICAgICAgYm9vbCBoYXNSZXF1ZXN0cygpIGNv
bnN0OwogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFz
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVl
c3RCYXNlLmgJKHJldmlzaW9uIDYxNDAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlUmVxdWVzdEJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtNjMsNyArNjMsOCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBUYXJnZXRJc09iamVjdCwKICAgICAgICAgICAg
IFRhcmdldElzTWVkaWEsCiAgICAgICAgICAgICBUYXJnZXRJc1dvcmtlciwKLSAgICAgICAgICAg
IFRhcmdldElzU2hhcmVkV29ya2VyCisgICAgICAgICAgICBUYXJnZXRJc1NoYXJlZFdvcmtlciwK
KyAgICAgICAgICAgIFRhcmdldElzUHJlZmV0Y2gsCiAgICAgICAgIH07CiAKICAgICAgICAgc3Rh
dGljIFBhc3NPd25QdHI8UmVzb3VyY2VSZXF1ZXN0PiBhZG9wdChQYXNzT3duUHRyPENyb3NzVGhy
ZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4pOwpJbmRleDogV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA2MTQw
NCkKKysrIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxMyBAQAorMjAxMC0wNi0xOCAgTGVvbiBDbGFya2UgIDxsZW9uY2xhcmtlQGdvb2dsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1
cHBvcnQgZm9yIGxpbmsgcmVsPXByZWZldGNoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zNjUyCisKKyAgICAgICAgKiBwdWJsaWMvV2ViVVJMUmVxdWVz
dC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxSZXF1ZXN0OjopOgorCiAyMDEwLTA2LTE4ICBB
bnRvbiBNdWhpbiAgPGFudG9ubUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
RGltaXRyaSBHbGF6a292LgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVUkxSZXF1
ZXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVUkxSZXF1ZXN0
LmgJKHJldmlzaW9uIDYxNDAwKQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVUkxSZXF1
ZXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDggQEAgcHVibGljOgogICAgICAgICBU
YXJnZXRJc09iamVjdCA9IDcsCiAgICAgICAgIFRhcmdldElzTWVkaWEgPSA4LAogICAgICAgICBU
YXJnZXRJc1dvcmtlciA9IDksCi0gICAgICAgIFRhcmdldElzU2hhcmVkV29ya2VyID0gMTAKKyAg
ICAgICAgVGFyZ2V0SXNTaGFyZWRXb3JrZXIgPSAxMCwKKyAgICAgICAgVGFyZ2V0SXNQcmVmZXRj
aCA9IDExLAogICAgIH07CiAKICAgICB+V2ViVVJMUmVxdWVzdCgpIHsgcmVzZXQoKTsgfQpJbmRl
eDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkocmV2aXNpb24gNjE0MDQpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAxMC0wNi0xOCAgTGVvbiBDbGFya2UgIDxsZW9uY2xh
cmtlQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIGEgbGF5b3V0IHRlc3QgZm9yIGxpbmsgcmVsPXByZWZldGNoLiBJdCdzIGRp
c2FibGVkIHNpbmNlIHRoZQorICAgICAgICBmZWF0dXJlIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjUyCisK
KyAgICAgICAgKiBmYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0Y2gtb25sb2FkLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZl
dGNoLW9ubG9hZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MTGlua0VsZW1l
bnQvcHJlZmV0Y2gubGluazogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL1NraXBwZWQ6
CisgICAgICAgICogcGxhdGZvcm0vbWFjL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vcXQv
U2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2tpcHBlZDoKKwogMjAxMC0wNi0xOCAg
RGlyayBTY2h1bHplICA8a3JpdEB3ZWJraXQub3JnPgogCiAgICAgICAgIE5vdCByZXZpZXdlZC4g
UmViYXNlbGluZSBndGsgcmVzdWx0cy4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxM
aW5rRWxlbWVudC9wcmVmZXRjaC1vbmxvYWQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC1vbmxvYWQtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVt
ZW50L3ByZWZldGNoLW9ubG9hZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NiBAQAorVGhpcyB0ZXN0cyB0aGF0IG9ubG9hZCBldmVudHMgY2FuIGJlIGF0dGFjaGVkIHRvIGxp
bmsgZWxlbWVudHMgd2l0aCByZWw9cHJlZmV0Y2guIFNpbmNlIHByZWZldGNoIGxpbmtzIGFyZSBq
dXN0IHRoZXJlIGFzIGEgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uLCB0aGUgb25sb2FkIGV2ZW50
IGlzIHRoZWlyIG9ubHkgcHJvZ3JhbWF0aWMgc2lkZS1lZmZlY3QuCisKK0lmIGl0IHdvcmtzIHlv
dSBzaG91bGQgc2VlIGEgbWVzc2FnZSBiZWxvdyBzYXlpbmcgdGhlIHRlc3QgaGFzIHBhc3NlZC4K
KworVEVTVCBQQVNTRUQuIFRoZSBzdHlsZXNoZWV0IGxpbmsgb25sb2FkIGhhbmRsZXIgaGFzIGZp
cmVkIGFmdGVyIHRoZSBkb2N1bWVudCBvbmxvYWQgaGFuZGxlcgorCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0Y2gtb25sb2FkLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLW9ubG9h
ZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVt
ZW50L3ByZWZldGNoLW9ubG9hZC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ0IEBACis8
aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
PgorICAgICAgICAgICAgZ290X21haW4gPSBmYWxzZTsKKyAgICAgICAgICAgIGdvdF9wcmVmZXRj
aCA9IGZhbHNlOworCisgICAgICAgICAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICB2YXIgaXRlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImxpIik7CisgICAgICAgICAgICAgICAgaXRlbS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVU
ZXh0Tm9kZShtZXNzYWdlKSk7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImNvbnNvbGUiKS5hcHBlbmRDaGlsZChpdGVtKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGZ1bmN0aW9uIGRvbmUoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGdvdF9w
cmVmZXRjaCA9IHRydWU7CisgICAgICAgICAgICAgICAgaWYgKGdvdF9tYWluKSB7CisgICAgICAg
ICAgICAgICAgICAgIGxvZygiVEVTVCBQQVNTRUQuIFRoZSBzdHlsZXNoZWV0IGxpbmsgb25sb2Fk
IGhhbmRsZXIgaGFzIGZpcmVkIGFmdGVyIHRoZSBkb2N1bWVudCBvbmxvYWQgaGFuZGxlciIpOwor
ICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGxvZygiVEVTVCBG
QUlMRUQuIFRoZSBzdHlsZXNoZWV0IGxpbmsgb25sb2FkIGhhbmRsZXIgaGFzIGZpcmVkIGJlZm9y
ZSB0aGUgZG9jdW1lbnQgb25sb2FkIGhhbmRsZXIiKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICAg
ICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBtYWluX29ubG9h
ZCgpIHsKKyAgICAgICAgICAgICAgICBnb3RfbWFpbiA9IHRydWU7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAg
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICAgICAgfQor
CisJPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ibWFpbl9vbmxvYWQo
KSI+CisgICAgICAgIDxwPlRoaXMgdGVzdHMgdGhhdCBvbmxvYWQgZXZlbnRzIGNhbiBiZSBhdHRh
Y2hlZCB0byBsaW5rIGVsZW1lbnRzIHdpdGggcmVsPXByZWZldGNoLiBTaW5jZSBwcmVmZXRjaCBs
aW5rcyBhcmUganVzdCB0aGVyZSBhcyBhIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiwgdGhlIG9u
bG9hZCBldmVudCBpcyB0aGVpciBvbmx5IHByb2dyYW1hdGljIHNpZGUtZWZmZWN0LjwvcD4KKyAg
ICAgICAgPHA+SWYgaXQgd29ya3MgeW91IHNob3VsZCBzZWUgYSBtZXNzYWdlIGJlbG93IHNheWlu
ZyB0aGUgdGVzdCBoYXMgcGFzc2VkLjwvcD4KKyAgICAgICAgPGxpbmsgaHJlZj0icHJlZmV0Y2gu
bGluayIgcmVsPSJwcmVmZXRjaCIgb25sb2FkPSJkb25lKCkiID4KKyAgICAgICAgPGhyPgorICAg
ICAgICA8cD48b2wgaWQ9ImNvbnNvbGUiPjwvb2w+PC9wPgorICAgIDwvYm9keT4KKzwvaHRtbD4K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC5saW5r
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVm
ZXRjaC5saW5rCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtF
bGVtZW50L3ByZWZldGNoLmxpbmsJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEgQEAKK1RoaXMgaXMg
dGhlIGxpbmsgdGhhdCBpcyBmZXRjaGVkIGJ5IHRoZSBwcmVmZXRjaC1vbmxvYWQgdGVzdApJbmRl
eDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQJKHJldmlzaW9uIDYxNDAwKQorKysgTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTU5MjgsNiArNTkyOCw5
IEBAIGZhc3QvZm9ybXMvc2xpZGVyLXRyYW5zZm9ybWVkLmh0bWwKIGZhc3QvZm9ybXMvc2xpZGVy
LW1vdXNlLWV2ZW50cy5odG1sCiBmYXN0L2Zvcm1zL3NsaWRlci16b29tZWQuaHRtbAogCisjIExp
bmsgcHJlZmV0Y2ggaXMgZGlzYWJsZWQgYnkgZGVmYXVsdAorI2Zhc3QvZG9tL0hUTUxMaW5rRWxl
bWVudC9wcmVmZXRjaC1vbmxvYWQuaHRtbAorCiAjIExheW91dFRlc3RDb250cm9sbGVyOjpwYWdl
UHJvcGVydHkgaXMgbm90IGltcGxlbWVudGVkIGZvciBHVEsgeWV0LgogcHJpbnRpbmcvcGFnZS1y
dWxlLXNlbGVjdGlvbi5odG1sCiAKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lw
cGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCShyZXZp
c2lvbiA2MTQwMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCSh3b3JraW5n
IGNvcHkpCkBAIC0yOTAsNiArMjkwLDkgQEAgc3RvcmFnZS9pbmRleGVkZGIKIGZhc3QvZG9tL0Rl
dmljZU9yaWVudGF0aW9uCiBmYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMtb24tZGV2
aWNlLW9yaWVudGF0aW9uLmh0bWwKIAorIyBMaW5rIHByZWZldGNoIGlzIGRpc2FibGVkIGJ5IGRl
ZmF1bHQKKyNmYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0Y2gtb25sb2FkLmh0bWwKKwog
IyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk5MDgKIGZhc3QvZG9t
L0dlb2xvY2F0aW9uL21heGltdW0tYWdlLmh0bWwKIApJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZv
cm0vcXQvU2tpcHBlZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lw
cGVkCShyZXZpc2lvbiA2MTQwMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQJ
KHdvcmtpbmcgY29weSkKQEAgLTU0MTQsNiArNTQxNCw5IEBAIHN2Zy9XM0MtU1ZHLTEuMS9maWx0
ZXJzLWxpZ2h0LTA0LWYuc3ZnCiAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICMKIGZhc3QvZG9tL0dl
b2xvY2F0aW9uL2NhbGxiYWNrLXRvLXJlbW90ZS1jb250ZXh0Mi5odG1sCiAKKyMgTGluayBwcmVm
ZXRjaCBpcyBkaXNhYmxlZCBieSBkZWZhdWx0CisjZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3By
ZWZldGNoLW9ubG9hZC5odG1sCisKICMgRmFpbGluZyBhZnRlciBlbmFibGluZyBIVE1MNSBwYXJz
ZXIgaW4gcjYxMjM0CiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
MDY2MQogZmFzdC9lbmNvZGluZy9qYXBhbmVzZS1lbmNvZGluZy1taXguaHRtbApJbmRleDogTGF5
b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
cGxhdGZvcm0vd2luL1NraXBwZWQJKHJldmlzaW9uIDYxNDAwKQorKysgTGF5b3V0VGVzdHMvcGxh
dGZvcm0vd2luL1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTg5Niw1ICs4OTYsOCBAQCBzdG9y
YWdlL2luZGV4ZWRkYgogZmFzdC9kb20vRGV2aWNlT3JpZW50YXRpb24KIGZhc3QvZG9tL1dpbmRv
dy93aW5kb3ctcHJvcGVydGllcy1vbi1kZXZpY2Utb3JpZW50YXRpb24uaHRtbAogCisjIExpbmsg
cHJlZmV0Y2ggaXMgZGlzYWJsZWQgYnkgZGVmYXVsdAorZmFzdC9kb20vSFRNTExpbmtFbGVtZW50
L3ByZWZldGNoLW9ubG9hZC5odG1sCisKICMgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhZ2VQcm9w
ZXJ0eSBpcyBub3QgaW1wbGVtZW50ZWQgZm9yIFdJTiB5ZXQuCiBwcmludGluZy9wYWdlLXJ1bGUt
c2VsZWN0aW9uLmh0bWwK
</data>
<flag name="review"
          id="45761"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>60668</attachid>
            <date>2010-07-06 18:03:52 -0700</date>
            <delta_ts>2010-07-07 14:39:32 -0700</delta_ts>
            <desc>alternate layout test for prefetch</desc>
            <filename>prefetch.html</filename>
            <type>text/html</type>
            <size>398</size>
            <attacher name="Gavin Peters">gavinp</attacher>
            
              <data encoding="base64">PGJvZHk+CjxzY3JpcHQ+CmlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBSZXNvdXJjZVJl
c3BvbnNlTUlNRVR5cGVzKCk7CiAgICBzZXRUaW1lb3V0KCJsYXlvdXRUZXN0Q29udHJvbGxlci5u
b3RpZnlEb25lKCkiLDUwKTsKfQo8L3NjcmlwdD4KPGJvZHk+CjxwPlRoaXMgdGVzdCByZXF1aXJl
cyBEdW1wUmVuZGVyVHJlZSB0byBzZWUgdGhlIGxvZyBvZiB3aGF0IHJlc291cmNlcyBhcmUgbG9h
ZGVkLgo8bGluayBocmVmPSJwcmVmZXRjaC5saW5rIiByZWw9InByZWZldGNoIj4KPC9ib2R5Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60779</attachid>
            <date>2010-07-07 14:39:32 -0700</date>
            <delta_ts>2010-07-07 14:52:23 -0700</delta_ts>
            <desc>Patch that removes onload, simplifies cache object, and adds a new layouttest</desc>
            <filename>3652-no-onload.txt</filename>
            <type>text/plain</type>
            <size>38768</size>
            <attacher name="Gavin Peters">gavinp</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDYyNjk5KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTAtMDctMDcgIEdhdmluIFBl
dGVycyAgPGdhdmlucEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgYWRkIHN1cHBvcnQgZm9yIGxpbmsgcHJlZmV0Y2hpbmcKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2NTIKKworICAg
ICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgorCiAyMDEwLTA3
LTA3ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgU2FtIFdlaW5pZy4KSW5kZXg6IEphdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1
cmVEZWZpbmVzLnhjY29uZmlnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0NvbmZpZ3Vy
YXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCShyZXZpc2lvbiA2MjY5MykKKysrIEphdmFT
Y3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCSh3b3JraW5n
IGNvcHkpCkBAIC0zMSw2ICszMSw4IEBACiAKIC8vIFNldCBhbnkgRU5BQkxFX0ZFQVRVUkVfTkFN
RSBtYWNybyB0byBhbiBlbXB0eSBzdHJpbmcgdG8gZGlzYWJsZSB0aGF0IGZlYXR1cmUuCiAKK0VO
QUJMRV9MSU5LX1BSRUZFVENIID0gOworCiBFTkFCTEVfM0RfQ0FOVkFTID0gJChFTkFCTEVfM0Rf
Q0FOVkFTXyQoVEFSR0VUX01BQ19PU19YX1ZFUlNJT05fTUFKT1IpKTsKIEVOQUJMRV8zRF9DQU5W
QVNfMTA1MCA9IEVOQUJMRV8zRF9DQU5WQVM7CiBFTkFCTEVfM0RfQ0FOVkFTXzEwNjAgPSBFTkFC
TEVfM0RfQ0FOVkFTOwpAQCAtODQsNSArODYsNCBAQCBFTkFCTEVfWEhUTUxNUCA9IDsKIEVOQUJM
RV9YUEFUSCA9IEVOQUJMRV9YUEFUSDsKIEVOQUJMRV9YU0xUID0gRU5BQkxFX1hTTFQ7CiAKLUZF
QVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX0NBTlZBUykgJChFTkFCTEVfM0RfUkVOREVSSU5H
KSAkKEVOQUJMRV9CTE9CX1NMSUNFKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFC
TEVfQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9EQVRBQkFTRSkgJChFTkFCTEVf
REFUQUdSSUQpICQoRU5BQkxFX0RBVEFMSVNUKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04p
ICQoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQpICQoRU5BQkxFX0RPTV9TVE9SQUdFKSAkKEVOQUJM
RV9FVkVOVFNPVVJDRSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfRklMRV9SRUFERVIpICQo
RU5BQkxFX0ZJTEVfV1JJVEVSKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSUNPTkRB
VEFCQVNFKSAkKEVOQUJMRV9JTUFHRV9SRVNJWkVSKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNF
KSAkKEVOQUJMRV9JTlBVVF9TUEVFQ0gpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQo
RU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVURVJfVEFHKSAkKEVOQUJMRV9OT1RJRklDQVRJT05T
KSAkKEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpICQoRU5BQkxFX1BST0dSRVNTX1RB
RykgJChFTkFCTEVfUlVCWSkgJChFTkFCTEVfU0FOREJPWCkgJChFTkFCTEVfU0hBUkVEX1dPUktF
UlMpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0FOSU1BVElPTikgJChFTkFCTEVfU1ZHX0FT
X0lNQUdFKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpICQoRU5BQkxFX1NWR19GT05U
UykgJChFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUKSAkKEVOQUJMRV9TVkdfVVNFKSAkKEVOQUJM
RV9WSURFTykgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5B
QkxFX1dNTCkgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWEhUTUxNUCkgJChFTkFCTEVfWFBB
VEgpICQoRU5BQkxFX1hTTFQpOwotCitGRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV9MSU5LX1BS
RUZFVENIKSAkKEVOQUJMRV8zRF9DQU5WQVMpICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFC
TEVfQkxPQl9TTElDRSkgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NMSUVO
VF9CQVNFRF9HRU9MT0NBVElPTikgJChFTkFCTEVfREFUQUJBU0UpICQoRU5BQkxFX0RBVEFHUklE
KSAkKEVOQUJMRV9EQVRBTElTVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJM
RV9ESVJFQ1RPUllfVVBMT0FEKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVfRVZFTlRT
T1VSQ0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZJTEVfUkVBREVSKSAkKEVOQUJMRV9G
SUxFX1dSSVRFUikgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFTRSkg
JChFTkFCTEVfSU1BR0VfUkVTSVpFUikgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFC
TEVfSU5QVVRfU1BFRUNIKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9N
QVRITUwpICQoRU5BQkxFX01FVEVSX1RBRykgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFC
TEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKSAkKEVOQUJMRV9QUk9HUkVTU19UQUcpICQoRU5B
QkxFX1JVQlkpICQoRU5BQkxFX1NBTkRCT1gpICQoRU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAkKEVO
QUJMRV9TVkcpICQoRU5BQkxFX1NWR19BTklNQVRJT04pICQoRU5BQkxFX1NWR19BU19JTUFHRSkg
JChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5B
QkxFX1NWR19GT1JFSUdOX09CSkVDVCkgJChFTkFCTEVfU1ZHX1VTRSkgJChFTkFCTEVfVklERU8p
ICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVOQUJMRV9XTUwp
ICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hIVE1MTVApICQoRU5BQkxFX1hQQVRIKSAkKEVO
QUJMRV9YU0xUKTsKSW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA2MjY5OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsNTIgQEAKKzIwMTAtMDctMDcgIEdhdmluIFBldGVycyAgPGdh
dmlucEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKwliYXNlZCBtb3N0bHkgb24gYSBwYXRjaCBieSBMZW9uIENsYXJrZSwgbGVvbmNsYXJrZUBn
b29nbGUuY29tCisJCisgICAgICAgIGFkZCBzdXBwb3J0IGZvciBsaW5rIHByZWZldGNoaW5nCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjUyCisKKyAg
ICAgICAgVGVzdDogZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLmh0bWwKKworICAg
ICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgorICAgICAgICAq
IGh0bWwvSFRNTExpbmtFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxl
bWVudDo6dG9rZW5pemVSZWxBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtF
bGVtZW50Ojpwcm9jZXNzKToKKyAgICAgICAgKiBodG1sL0hUTUxMaW5rRWxlbWVudC5oOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50OjpSZWxBdHRyaWJ1dGU6OlJlbEF0dHJpYnV0
ZSk6CisgICAgICAgICogbG9hZGVyL0NhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZVJlc291cmNlKToKKyAgICAgICAgKiBsb2FkZXIvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkUmVzb3VyY2U6OmRpZEFkZENsaWVudCk6CisgICAgICAgICogbG9hZGVyL0NhY2hlZFJlc291
cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6KToKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZFJlc291cmNlOjplcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRS
ZXNvdXJjZTo6aXNQcmVmZXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6
c2NoZWR1bGUpOgorICAgICAgICAqIGxvYWRlci9DYWNoZWRTY3JpcHQuY3BwOgorICAgICAgICAq
IGxvYWRlci9DYWNoZWRTY3JpcHQuaDoKKyAgICAgICAgKiBsb2FkZXIvRG9jTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRvY0xvYWRlcjo6cmVxdWVzdExpbmtQcmVmZXRjaCk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2NMb2FkZXI6OmNhblJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jTG9hZGVyOjppbmNyZW1lbnRSZXF1ZXN0Q291bnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
TG9hZGVyOjpkZWNyZW1lbnRSZXF1ZXN0Q291bnQpOgorICAgICAgICAqIGxvYWRlci9Eb2NMb2Fk
ZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvbG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNh
Y2hlZFJlc291cmNlVHlwZVRvVGFyZ2V0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpMb2FkZXI6
OmRldGVybWluZVByaW9yaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRlcjo6bG9hZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMb2FkZXI6Okhvc3Q6OnNlcnZlUGVuZGluZ1JlcXVlc3RzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxvYWRlcjo6SG9zdDo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpMb2FkZXI6Okhvc3Q6OmRpZEZhaWwpOgorICAgICAgICAoV2ViQ29yZTo6TG9h
ZGVyOjpIb3N0OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6TG9hZGVy
OjpIb3N0OjpjYW5jZWxQZW5kaW5nUmVxdWVzdHMpOgorICAgICAgICAqIGxvYWRlci9sb2FkZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRlcjo6KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdEJhc2U6Oik6CisKIDIwMTAtMDctMDcgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpJbmRleDogV2ViQ29yZS9Db25m
aWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCShyZXZpc2lvbiA2MjY5MykK
KysrIFdlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcJKHdvcmtp
bmcgY29weSkKQEAgLTMxLDYgKzMxLDggQEAKIAogLy8gU2V0IGFueSBFTkFCTEVfRkVBVFVSRV9O
QU1FIG1hY3JvIHRvIGFuIGVtcHR5IHN0cmluZyB0byBkaXNhYmxlIHRoYXQgZmVhdHVyZS4KIAor
RU5BQkxFX0xJTktfUFJFRkVUQ0ggPSA7CisKIEVOQUJMRV8zRF9DQU5WQVMgPSAkKEVOQUJMRV8z
RF9DQU5WQVNfJChUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUikpOwogRU5BQkxFXzNEX0NB
TlZBU18xMDUwID0gRU5BQkxFXzNEX0NBTlZBUzsKIEVOQUJMRV8zRF9DQU5WQVNfMTA2MCA9IEVO
QUJMRV8zRF9DQU5WQVM7CkBAIC04NCw1ICs4Niw0IEBAIEVOQUJMRV9YSFRNTE1QID0gOwogRU5B
QkxFX1hQQVRIID0gRU5BQkxFX1hQQVRIOwogRU5BQkxFX1hTTFQgPSBFTkFCTEVfWFNMVDsKIAot
RkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfQ0FOVkFTKSAkKEVOQUJMRV8zRF9SRU5ERVJJ
TkcpICQoRU5BQkxFX0JMT0JfU0xJQ0UpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVO
QUJMRV9DTElFTlRfQkFTRURfR0VPTE9DQVRJT04pICQoRU5BQkxFX0RBVEFCQVNFKSAkKEVOQUJM
RV9EQVRBR1JJRCkgJChFTkFCTEVfREFUQUxJU1QpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElP
TikgJChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCkgJChFTkFCTEVfRE9NX1NUT1JBR0UpICQoRU5B
QkxFX0VWRU5UU09VUkNFKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GSUxFX1JFQURFUikg
JChFTkFCTEVfRklMRV9XUklURVIpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09O
REFUQUJBU0UpICQoRU5BQkxFX0lNQUdFX1JFU0laRVIpICQoRU5BQkxFX0lOREVYRURfREFUQUJB
U0UpICQoRU5BQkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikg
JChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRVRFUl9UQUcpICQoRU5BQkxFX05PVElGSUNBVElP
TlMpICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVfUFJPR1JFU1Nf
VEFHKSAkKEVOQUJMRV9SVUJZKSAkKEVOQUJMRV9TQU5EQk9YKSAkKEVOQUJMRV9TSEFSRURfV09S
S0VSUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdf
QVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZP
TlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5B
QkxFX1ZJREVPKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykgJChF
TkFCTEVfV01MKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YSFRNTE1QKSAkKEVOQUJMRV9Y
UEFUSCkgJChFTkFCTEVfWFNMVCk7Ci0KK0ZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFX0xJTktf
UFJFRkVUQ0gpICQoRU5BQkxFXzNEX0NBTlZBUykgJChFTkFCTEVfM0RfUkVOREVSSU5HKSAkKEVO
QUJMRV9CTE9CX1NMSUNFKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfQ0xJ
RU5UX0JBU0VEX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9EQVRBQkFTRSkgJChFTkFCTEVfREFUQUdS
SUQpICQoRU5BQkxFX0RBVEFMSVNUKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04pICQoRU5B
QkxFX0RJUkVDVE9SWV9VUExPQUQpICQoRU5BQkxFX0RPTV9TVE9SQUdFKSAkKEVOQUJMRV9FVkVO
VFNPVVJDRSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfRklMRV9SRUFERVIpICQoRU5BQkxF
X0ZJTEVfV1JJVEVSKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSUNPTkRBVEFCQVNF
KSAkKEVOQUJMRV9JTUFHRV9SRVNJWkVSKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVO
QUJMRV9JTlBVVF9TUEVFQ0gpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxF
X01BVEhNTCkgJChFTkFCTEVfTUVURVJfVEFHKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVO
QUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpICQoRU5BQkxFX1BST0dSRVNTX1RBRykgJChF
TkFCTEVfUlVCWSkgJChFTkFCTEVfU0FOREJPWCkgJChFTkFCTEVfU0hBUkVEX1dPUktFUlMpICQo
RU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0FOSU1BVElPTikgJChFTkFCTEVfU1ZHX0FTX0lNQUdF
KSAkKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpICQoRU5BQkxFX1NWR19GT05UUykgJChF
TkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUKSAkKEVOQUJMRV9TVkdfVVNFKSAkKEVOQUJMRV9WSURF
TykgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5BQkxFX1dN
TCkgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWEhUTUxNUCkgJChFTkFCTEVfWFBBVEgpICQo
RU5BQkxFX1hTTFQpOwpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAJKHJldmlzaW9uIDYy
NjkzKQorKysgV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE0NCwxMiArMTQ0LDE5IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50Ojp0b2tlbml6ZVJlbEF0
dHJpYnUKICAgICByZWxBdHRyaWJ1dGUubV9pc0ljb24gPSBmYWxzZTsKICAgICByZWxBdHRyaWJ1
dGUubV9pc0FsdGVybmF0ZSA9IGZhbHNlOwogICAgIHJlbEF0dHJpYnV0ZS5tX2lzRE5TUHJlZmV0
Y2ggPSBmYWxzZTsKKyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKKyAgICByZWxBdHRyaWJ1dGUu
bV9pc0xpbmtQcmVmZXRjaCA9IGZhbHNlOworI2VuZGlmCiAgICAgaWYgKGVxdWFsSWdub3JpbmdD
YXNlKHJlbCwgInN0eWxlc2hlZXQiKSkKICAgICAgICAgcmVsQXR0cmlidXRlLm1faXNTdHlsZVNo
ZWV0ID0gdHJ1ZTsKICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShyZWwsICJpY29uIikg
fHwgZXF1YWxJZ25vcmluZ0Nhc2UocmVsLCAic2hvcnRjdXQgaWNvbiIpKQogICAgICAgICByZWxB
dHRyaWJ1dGUubV9pc0ljb24gPSB0cnVlOwogICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNl
KHJlbCwgImRucy1wcmVmZXRjaCIpKQogICAgICAgICByZWxBdHRyaWJ1dGUubV9pc0ROU1ByZWZl
dGNoID0gdHJ1ZTsKKyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKKyAgICBlbHNlIGlmIChlcXVh
bElnbm9yaW5nQ2FzZShyZWwsICJwcmVmZXRjaCIpKQorICAgICAgICByZWxBdHRyaWJ1dGUubV9p
c0xpbmtQcmVmZXRjaCA9IHRydWU7CisjZW5kaWYKICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5n
Q2FzZShyZWwsICJhbHRlcm5hdGUgc3R5bGVzaGVldCIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKHJl
bCwgInN0eWxlc2hlZXQgYWx0ZXJuYXRlIikpIHsKICAgICAgICAgcmVsQXR0cmlidXRlLm1faXNT
dHlsZVNoZWV0ID0gdHJ1ZTsKICAgICAgICAgcmVsQXR0cmlidXRlLm1faXNBbHRlcm5hdGUgPSB0
cnVlOwpAQCAtMTg2LDYgKzE5MywxMSBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6cHJvY2Vzcygp
CiAgICAgaWYgKG1fcmVsQXR0cmlidXRlLm1faXNETlNQcmVmZXRjaCAmJiBtX3VybC5pc1ZhbGlk
KCkgJiYgIW1fdXJsLmlzRW1wdHkoKSkKICAgICAgICAgUmVzb3VyY2VIYW5kbGU6OnByZXBhcmVG
b3JVUkwobV91cmwpOwogCisjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCisgICAgaWYgKG1fcmVs
QXR0cmlidXRlLm1faXNMaW5rUHJlZmV0Y2ggJiYgbV91cmwuaXNWYWxpZCgpKQorICAgICAgICBk
b2N1bWVudCgpLT5kb2NMb2FkZXIoKS0+cmVxdWVzdExpbmtQcmVmZXRjaChtX3VybCk7CisjZW5k
aWYKKwogICAgIGJvb2wgYWNjZXB0SWZUeXBlQ29udGFpbnNUZXh0Q1NTID0gZG9jdW1lbnQoKS0+
cGFnZSgpICYmIGRvY3VtZW50KCktPnBhZ2UoKS0+c2V0dGluZ3MoKSAmJiBkb2N1bWVudCgpLT5w
YWdlKCktPnNldHRpbmdzKCktPnRyZWF0c0FueVRleHRDU1NMaW5rQXNTdHlsZXNoZWV0KCk7CiAK
ICAgICAvLyBTdHlsZXNoZWV0CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCShyZXZpc2lvbiA2
MjY5MykKKysrIFdlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMzEsNiArMzEsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNoZWRDU1NT
dHlsZVNoZWV0OworY2xhc3MgQ2FjaGVkTGlua1ByZWZldGNoOwogY2xhc3MgS1VSTDsKIAogY2xh
c3MgSFRNTExpbmtFbGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50LCBwdWJsaWMgQ2FjaGVkUmVz
b3VyY2VDbGllbnQgewpAQCAtNDAsOCArNDEsMTkgQEAgcHVibGljOgogICAgICAgICBib29sIG1f
aXNJY29uOwogICAgICAgICBib29sIG1faXNBbHRlcm5hdGU7CiAgICAgICAgIGJvb2wgbV9pc0RO
U1ByZWZldGNoOworI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQorICAgICAgICBib29sIG1faXNM
aW5rUHJlZmV0Y2g7CisjZW5kaWYKIAotICAgICAgICBSZWxBdHRyaWJ1dGUoKSA6IG1faXNTdHls
ZVNoZWV0KGZhbHNlKSwgbV9pc0ljb24oZmFsc2UpLCBtX2lzQWx0ZXJuYXRlKGZhbHNlKSwgbV9p
c0ROU1ByZWZldGNoKGZhbHNlKSB7IH0KKyAgICAgICAgUmVsQXR0cmlidXRlKCkKKyAgICAgICAg
OiAgICAgbV9pc1N0eWxlU2hlZXQoZmFsc2UpCisgICAgICAgICAgICAsIG1faXNJY29uKGZhbHNl
KQorICAgICAgICAgICAgLCBtX2lzQWx0ZXJuYXRlKGZhbHNlKQorICAgICAgICAgICAgLCBtX2lz
RE5TUHJlZmV0Y2goZmFsc2UpCisjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCisgICAgICAgICAg
ICAsIG1faXNMaW5rUHJlZmV0Y2goZmFsc2UpCisjZW5kaWYKKyAgICAgICAgICAgIHsgfTsKICAg
ICB9OwogCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTExpbmtFbGVtZW50PiBjcmVhdGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50KiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpOwpJbmRl
eDogV2ViQ29yZS9sb2FkZXIvQ2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVy
L0NhY2hlLmNwcAkocmV2aXNpb24gNjI2OTMpCisrKyBXZWJDb3JlL2xvYWRlci9DYWNoZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTg2LDYgKzg2LDEwIEBAIHN0YXRpYyBDYWNoZWRSZXNvdXJjZSog
Y3JlYXRlUmVzb3VyY2UoQ2EKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpYQkxTdHlsZVNoZWV0
OgogICAgICAgICByZXR1cm4gbmV3IENhY2hlZFhCTERvY3VtZW50KHVybC5zdHJpbmcoKSk7CiAj
ZW5kaWYKKyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKKyAgICBjYXNlIENhY2hlZFJlc291cmNl
OjpMaW5rUHJlZmV0Y2g6CisgICAgICAgIHJldHVybiBuZXcgQ2FjaGVkUmVzb3VyY2UodXJsLnN0
cmluZygpLCBDYWNoZWRSZXNvdXJjZTo6TGlua1ByZWZldGNoKTsKKyNlbmRpZgogICAgIGRlZmF1
bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0NhY2hlZFJl
c291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9DYWNoZWRSZXNvdXJjZS5j
cHAJKHJldmlzaW9uIDYyNjkzKQorKysgV2ViQ29yZS9sb2FkZXIvQ2FjaGVkUmVzb3VyY2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw4IEBACiAKICNpbmNsdWRlICJDYWNoZS5oIgog
I2luY2x1ZGUgIkNhY2hlZE1ldGFkYXRhLmgiCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGll
bnQuaCIKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlci5oIgogI2luY2x1ZGUg
IkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiRG9jTG9hZGVyLmgiCiAjaW5jbHVk
ZSAiRnJhbWUuaCIKQEAgLTEwOCw2ICsxMTAsMTYgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6bG9h
ZChEb2NMb2FkZXIqIGRvYwogICAgIG1fbG9hZGluZyA9IHRydWU7CiB9CiAKK3ZvaWQgQ2FjaGVk
UmVzb3VyY2U6OmRhdGEoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LCBib29sIGFsbERhdGFSZWNl
aXZlZCkKK3sKKyAgICBpZiAoIWFsbERhdGFSZWNlaXZlZCkKKyAgICAgICAgcmV0dXJuOworICAg
IAorICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyIHcobV9jbGllbnRzKTsKKyAgICB3aGls
ZSAoQ2FjaGVkUmVzb3VyY2VDbGllbnQqIGMgPSB3Lm5leHQoKSkKKyAgICAgICAgYy0+bm90aWZ5
RmluaXNoZWQodGhpcyk7Cit9CisKIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaCgpCiB7CiAg
ICAgbV9zdGF0dXMgPSBDYWNoZWQ7CkBAIC0yMDQsNiArMjE2LDEyIEBAIHZvaWQgQ2FjaGVkUmVz
b3VyY2U6OmFkZENsaWVudChDYWNoZWRSZXMKICAgICBkaWRBZGRDbGllbnQoY2xpZW50KTsKIH0K
IAordm9pZCBDYWNoZWRSZXNvdXJjZTo6ZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50
KiBjKQoreworICAgIGlmICghaXNMb2FkaW5nKCkpCisgICAgICAgIGMtPm5vdGlmeUZpbmlzaGVk
KHRoaXMpOworfQorCiB2b2lkIENhY2hlZFJlc291cmNlOjphZGRDbGllbnRUb1NldChDYWNoZWRS
ZXNvdXJjZUNsaWVudCogY2xpZW50KQogewogICAgIEFTU0VSVCghaXNQdXJnZWFibGUoKSk7Cklu
ZGV4OiBXZWJDb3JlL2xvYWRlci9DYWNoZWRSZXNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvbG9hZGVyL0NhY2hlZFJlc291cmNlLmgJKHJldmlzaW9uIDYyNjkzKQorKysgV2ViQ29yZS9s
b2FkZXIvQ2FjaGVkUmVzb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNjQsNiArNjQsOSBAQCBw
dWJsaWM6CiAjaWYgRU5BQkxFKFhCTCkKICAgICAgICAgLCBYQkwKICNlbmRpZgorI2lmIEVOQUJM
RShMSU5LX1BSRUZFVENIKQorICAgICAgICAsIExpbmtQcmVmZXRjaAorI2VuZGlmCiAgICAgfTsK
IAogICAgIGVudW0gU3RhdHVzIHsKQEAgLTgyLDggKzg1LDggQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwgU3Ry
aW5nIGVuY29kaW5nKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgZGF0YShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZXJyb3IoKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGRhdGEoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZXJyb3IoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgaHR0cFN0
YXR1c0NvZGVFcnJvcigpIHsgZXJyb3IoKTsgfSAvLyBJbWFnZXMga2VlcCBsb2FkaW5nIGluIHNw
aXRlIG9mIEhUVFAgZXJyb3JzIChmb3IgbGVnYWN5IGNvbXBhdCB3aXRoIDxpbWc+LCBldGMuKS4K
IAogICAgIGNvbnN0IFN0cmluZyAmdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KQEAgLTEw
Myw3ICsxMDYsNyBAQCBwdWJsaWM6CiAgICAgUHJlbG9hZFJlc3VsdCBwcmVsb2FkUmVzdWx0KCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UHJlbG9hZFJlc3VsdD4obV9wcmVsb2FkUmVzdWx0
KTsgfQogICAgIHZvaWQgc2V0UmVxdWVzdGVkRnJvbU5ldHdvcmtpbmdMYXllcigpIHsgbV9yZXF1
ZXN0ZWRGcm9tTmV0d29ya2luZ0xheWVyID0gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRp
ZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50Kik7CiAgICAgdmlydHVhbCB2b2lkIGFs
bENsaWVudHNSZW1vdmVkKCkgeyB9CiAKICAgICB1bnNpZ25lZCBjb3VudCgpIGNvbnN0IHsgcmV0
dXJuIG1fY2xpZW50cy5zaXplKCk7IH0KQEAgLTEyMiw2ICsxMjUsMTEgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0TG9hZGluZyhib29sIGIpIHsgbV9sb2FkaW5nID0gYjsgfQogCiAgICAgdmlydHVh
bCBib29sIGlzSW1hZ2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorI2lmIEVOQUJMRShMSU5L
X1BSRUZFVENIKQorICAgIHZpcnR1YWwgYm9vbCBpc1ByZWZldGNoKCkgY29uc3QgeyByZXR1cm4g
dHlwZSgpICE9IExpbmtQcmVmZXRjaDsgfQorI2Vsc2UKKyAgICB2aXJ0dWFsIGJvb2wgaXNQcmVm
ZXRjaCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisjZW5kaWYKIAogICAgIHVuc2lnbmVkIGFj
Y2Vzc0NvdW50KCkgY29uc3QgeyByZXR1cm4gbV9hY2Nlc3NDb3VudDsgfQogICAgIHZvaWQgaW5j
cmVhc2VBY2Nlc3NDb3VudCgpIHsgbV9hY2Nlc3NDb3VudCsrOyB9CkBAIC0xNjIsNyArMTcwLDcg
QEAgcHVibGljOgogCiAgICAgYm9vbCBpc0V4cGlyZWQoKSBjb25zdDsKIAotICAgIHZpcnR1YWwg
Ym9vbCBzY2hlZHVsZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29s
IHNjaGVkdWxlKCkgY29uc3QgeyByZXR1cm4gaXNQcmVmZXRjaCgpOyB9CiAKICAgICAvLyBMaXN0
IG9mIGFjY2VwdGFibGUgTUlNRSB0eXBlcyBzZXBhcmF0ZWQgYnkgIiwiLgogICAgIC8vIEEgTUlN
RSB0eXBlIG1heSBjb250YWluIGEgd2lsZGNhcmQsIGUuZy4gInRleHQvKiIuCkluZGV4OiBXZWJD
b3JlL2xvYWRlci9DYWNoZWRTY3JpcHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVy
L0NhY2hlZFNjcmlwdC5jcHAJKHJldmlzaW9uIDYyNjkzKQorKysgV2ViQ29yZS9sb2FkZXIvQ2Fj
aGVkU2NyaXB0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsMTIgKzUxLDYgQEAgQ2FjaGVkU2Ny
aXB0Ojp+Q2FjaGVkU2NyaXB0KCkKIHsKIH0KIAotdm9pZCBDYWNoZWRTY3JpcHQ6OmRpZEFkZENs
aWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCogYykKLXsKLSAgICBpZiAoIWlzTG9hZGluZygpKQot
ICAgICAgICBjLT5ub3RpZnlGaW5pc2hlZCh0aGlzKTsKLX0KLQogdm9pZCBDYWNoZWRTY3JpcHQ6
OmFsbENsaWVudHNSZW1vdmVkKCkKIHsKICAgICBtX2RlY29kZWREYXRhRGVsZXRpb25UaW1lci5z
dGFydE9uZVNob3QoMCk7CkluZGV4OiBXZWJDb3JlL2xvYWRlci9DYWNoZWRTY3JpcHQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9DYWNoZWRTY3JpcHQuaAkocmV2aXNpb24gNjI2OTMp
CisrKyBXZWJDb3JlL2xvYWRlci9DYWNoZWRTY3JpcHQuaAkod29ya2luZyBjb3B5KQpAQCAtNDEs
NyArNDEsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgY29uc3QgU3RyaW5nJiBz
Y3JpcHQoKTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291
cmNlQ2xpZW50Kik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBhbGxDbGllbnRzUmVtb3ZlZCgpOwog
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKTsKSW5kZXg6
IFdlYkNvcmUvbG9hZGVyL0RvY0xvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2Fk
ZXIvRG9jTG9hZGVyLmNwcAkocmV2aXNpb24gNjI2OTMpCisrKyBXZWJDb3JlL2xvYWRlci9Eb2NM
b2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjgsNiArMTY4LDEzIEBAIENhY2hlZFhCTERv
Y3VtZW50KiBEb2NMb2FkZXI6OnJlcXVlc3RYQkwKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKExJ
TktfUFJFRkVUQ0gpCitDYWNoZWRSZXNvdXJjZSogRG9jTG9hZGVyOjpyZXF1ZXN0TGlua1ByZWZl
dGNoKGNvbnN0IFN0cmluZyYgdXJsKQoreworICAgIHJldHVybiByZXF1ZXN0UmVzb3VyY2UoQ2Fj
aGVkUmVzb3VyY2U6OkxpbmtQcmVmZXRjaCwgdXJsLCBTdHJpbmcoKSk7Cit9CisjZW5kaWYKKwog
Ym9vbCBEb2NMb2FkZXI6OmNhblJlcXVlc3QoQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwgY29u
c3QgS1VSTCYgdXJsKQogewogICAgIC8vIFNvbWUgdHlwZXMgb2YgcmVzb3VyY2VzIGNhbiBiZSBs
b2FkZWQgb25seSBmcm9tIHRoZSBzYW1lIG9yaWdpbi4gIE90aGVyCkBAIC0xNzgsNiArMTg1LDkg
QEAgYm9vbCBEb2NMb2FkZXI6OmNhblJlcXVlc3QoQ2FjaGVkUmVzb3VyYwogICAgIGNhc2UgQ2Fj
aGVkUmVzb3VyY2U6OkNTU1N0eWxlU2hlZXQ6CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6U2Ny
aXB0OgogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkZvbnRSZXNvdXJjZToKKyNpZiBFTkFCTEUo
TElOS19QUkVGRVRDSCkKKyAgICBjYXNlIENhY2hlZFJlc291cmNlOjpMaW5rUHJlZmV0Y2g6Cisj
ZW5kaWYKICAgICAgICAgLy8gVGhlc2UgdHlwZXMgb2YgcmVzb3VyY2VzIGNhbiBiZSBsb2FkZWQg
ZnJvbSBhbnkgb3JpZ2luLgogICAgICAgICAvLyBGSVhNRTogQXJlIHdlIHN1cmUgYWJvdXQgQ2Fj
aGVkUmVzb3VyY2U6OkZvbnRSZXNvdXJjZT8KICAgICAgICAgYnJlYWs7CkBAIC0yMjAsNiArMjMw
LDkgQEAgYm9vbCBEb2NMb2FkZXI6OmNhblJlcXVlc3QoQ2FjaGVkUmVzb3VyYwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpJbWFnZVJlc291cmNlOgogICAgIGNhc2Ug
Q2FjaGVkUmVzb3VyY2U6OkNTU1N0eWxlU2hlZXQ6CisjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gp
CisgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6TGlua1ByZWZldGNoOgorI2VuZGlmCiAgICAgY2Fz
ZSBDYWNoZWRSZXNvdXJjZTo6Rm9udFJlc291cmNlOiB7CiAgICAgICAgIC8vIFRoZXNlIHJlc291
cmNlcyBjYW4gY29ycnVwdCBvbmx5IHRoZSBmcmFtZSdzIHBpeGVscy4KICAgICAgICAgaWYgKEZy
YW1lKiBmID0gZnJhbWUoKSkgewpAQCAtMzU1LDEzICszNjgsMTkgQEAgdm9pZCBEb2NMb2FkZXI6
OmNoZWNrQ2FjaGVPYmplY3RTdGF0dXMoQwogICAgIGZyYW1lKCktPmxvYWRlcigpLT5sb2FkZWRS
ZXNvdXJjZUZyb21NZW1vcnlDYWNoZShyZXNvdXJjZSk7CiB9CiAKLXZvaWQgRG9jTG9hZGVyOjpp
bmNyZW1lbnRSZXF1ZXN0Q291bnQoKQordm9pZCBEb2NMb2FkZXI6OmluY3JlbWVudFJlcXVlc3RD
b3VudChjb25zdCBDYWNoZWRSZXNvdXJjZSogcmVzKQogeworICAgIGlmIChyZXMtPmlzUHJlZmV0
Y2goKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgKyttX3JlcXVlc3RDb3VudDsKIH0KIAotdm9p
ZCBEb2NMb2FkZXI6OmRlY3JlbWVudFJlcXVlc3RDb3VudCgpCit2b2lkIERvY0xvYWRlcjo6ZGVj
cmVtZW50UmVxdWVzdENvdW50KGNvbnN0IENhY2hlZFJlc291cmNlKiByZXMpCiB7CisgICAgaWYg
KHJlcy0+aXNQcmVmZXRjaCgpKQorICAgICAgICByZXR1cm47CisKICAgICAtLW1fcmVxdWVzdENv
dW50OwogICAgIEFTU0VSVChtX3JlcXVlc3RDb3VudCA+IC0xKTsKIH0KSW5kZXg6IFdlYkNvcmUv
bG9hZGVyL0RvY0xvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0RvY0xvYWRl
ci5oCShyZXZpc2lvbiA2MjY5MykKKysrIFdlYkNvcmUvbG9hZGVyL0RvY0xvYWRlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC02Nyw2ICs2Nyw5IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoWEJMKQogICAg
IENhY2hlZFhCTERvY3VtZW50KiByZXF1ZXN0WEJMRG9jdW1lbnQoY29uc3QgU3RyaW5nICZ1cmwp
OwogI2VuZGlmCisjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCisgICAgQ2FjaGVkUmVzb3VyY2Uq
IHJlcXVlc3RMaW5rUHJlZmV0Y2goY29uc3QgU3RyaW5nICZ1cmwpOworI2VuZGlmCiAKICAgICAv
LyBMb2dzIGFuIGFjY2VzcyBkZW5pZWQgbWVzc2FnZSB0byB0aGUgY29uc29sZSBmb3IgdGhlIHNw
ZWNpZmllZCBVUkwuCiAgICAgdm9pZCBwcmludEFjY2Vzc0RlbmllZE1lc3NhZ2UoY29uc3QgS1VS
TCYgdXJsKSBjb25zdDsKQEAgLTkxLDggKzk0LDggQEAgcHVibGljOgogICAgIAogICAgIHZvaWQg
c2V0QWxsb3dTdGFsZVJlc291cmNlcyhib29sIGFsbG93U3RhbGVSZXNvdXJjZXMpIHsgbV9hbGxv
d1N0YWxlUmVzb3VyY2VzID0gYWxsb3dTdGFsZVJlc291cmNlczsgfQogCi0gICAgdm9pZCBpbmNy
ZW1lbnRSZXF1ZXN0Q291bnQoKTsKLSAgICB2b2lkIGRlY3JlbWVudFJlcXVlc3RDb3VudCgpOwor
ICAgIHZvaWQgaW5jcmVtZW50UmVxdWVzdENvdW50KGNvbnN0IENhY2hlZFJlc291cmNlKik7Cisg
ICAgdm9pZCBkZWNyZW1lbnRSZXF1ZXN0Q291bnQoY29uc3QgQ2FjaGVkUmVzb3VyY2UqKTsKICAg
ICBpbnQgcmVxdWVzdENvdW50KCk7CiAgICAgCiAgICAgdm9pZCBjbGVhclByZWxvYWRzKCk7Cklu
ZGV4OiBXZWJDb3JlL2xvYWRlci9sb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9h
ZGVyL2xvYWRlci5jcHAJKHJldmlzaW9uIDYyNjkzKQorKysgV2ViQ29yZS9sb2FkZXIvbG9hZGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODksNyArODksMTIgQEAgc3RhdGljIFJlc291cmNlUmVx
dWVzdDo6VGFyZ2V0VHlwZSBjYWNoZQogICAgICAgICByZXR1cm4gUmVzb3VyY2VSZXF1ZXN0OjpU
YXJnZXRJc0ZvbnRSZXNvdXJjZTsKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpJbWFnZVJlc291
cmNlOgogICAgICAgICByZXR1cm4gUmVzb3VyY2VSZXF1ZXN0OjpUYXJnZXRJc0ltYWdlOworI2lm
IEVOQUJMRShMSU5LX1BSRUZFVENIKQorICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkxpbmtQcmVm
ZXRjaDoKKyAgICAgICAgcmV0dXJuIFJlc291cmNlUmVxdWVzdDo6VGFyZ2V0SXNQcmVmZXRjaDsK
KyNlbmRpZgogICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gUmVz
b3VyY2VSZXF1ZXN0OjpUYXJnZXRJc1N1YnJlc291cmNlOwogfQogCkBAIC0xMTAsNiArMTE1LDEw
IEBAIExvYWRlcjo6UHJpb3JpdHkgTG9hZGVyOjpkZXRlcm1pbmVQcmlvcmkKICAgICAgICAgICAg
IHJldHVybiBNZWRpdW07CiAgICAgICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkltYWdlUmVzb3Vy
Y2U6CiAgICAgICAgICAgICByZXR1cm4gTG93OworI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQor
ICAgICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpMaW5rUHJlZmV0Y2g6CisgICAgICAgICAgICBy
ZXR1cm4gVmVyeUxvdzsKKyNlbmRpZgogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICByZXR1cm4gTG93OwpAQCAtMTM5LDkgKzE0OCw5IEBAIHZvaWQgTG9hZGVyOjpsb2FkKERv
Y0xvYWRlciogZG9jTG9hZGVyLCAKICAgICBib29sIGhhZFJlcXVlc3RzID0gaG9zdC0+aGFzUmVx
dWVzdHMoKTsKICAgICBQcmlvcml0eSBwcmlvcml0eSA9IGRldGVybWluZVByaW9yaXR5KHJlc291
cmNlKTsKICAgICBob3N0LT5hZGRSZXF1ZXN0KHJlcXVlc3QsIHByaW9yaXR5KTsKLSAgICBkb2NM
b2FkZXItPmluY3JlbWVudFJlcXVlc3RDb3VudCgpOworICAgIGRvY0xvYWRlci0+aW5jcmVtZW50
UmVxdWVzdENvdW50KHJlcXVlc3QtPmNhY2hlZFJlc291cmNlKCkpOwogCi0gICAgaWYgKHByaW9y
aXR5ID4gTG93IHx8ICF1cmwucHJvdG9jb2xJbkhUVFBGYW1pbHkoKSB8fCAhaGFkUmVxdWVzdHMp
IHsKKyAgICBpZiAocHJpb3JpdHkgPiBMb3cgfHwgIXVybC5wcm90b2NvbEluSFRUUEZhbWlseSgp
IHx8IChwcmlvcml0eSA9PSBMb3cgJiYgIWhhZFJlcXVlc3RzKSkgewogICAgICAgICAvLyBUcnkg
dG8gcmVxdWVzdCBpbXBvcnRhbnQgcmVzb3VyY2VzIGltbWVkaWF0ZWx5CiAgICAgICAgIGhvc3Qt
PnNlcnZlUGVuZGluZ1JlcXVlc3RzKHByaW9yaXR5KTsKICAgICB9IGVsc2UgewpAQCAtMzcwLDcg
KzM3OSw3IEBAIHZvaWQgTG9hZGVyOjpIb3N0OjpzZXJ2ZVBlbmRpbmdSZXF1ZXN0cygKICAgICAg
ICAgICAgIHByaW50ZigiSE9TVCAlcyBDT1VOVCAlZCBMT0FESU5HICVzXG4iLCByZXNvdXJjZVJl
cXVlc3QudXJsKCkuaG9zdCgpLmxhdGluMSgpLmRhdGEoKSwgbV9yZXF1ZXN0c0xvYWRpbmcuc2l6
ZSgpLCByZXF1ZXN0LT5jYWNoZWRSZXNvdXJjZSgpLT51cmwoKS5sYXRpbjEoKS5kYXRhKCkpOwog
I2VuZGlmCiAgICAgICAgIH0gZWxzZSB7ICAgICAgICAgICAgCi0gICAgICAgICAgICBkb2NMb2Fk
ZXItPmRlY3JlbWVudFJlcXVlc3RDb3VudCgpOworICAgICAgICAgICAgZG9jTG9hZGVyLT5kZWNy
ZW1lbnRSZXF1ZXN0Q291bnQocmVxdWVzdC0+Y2FjaGVkUmVzb3VyY2UoKSk7CiAgICAgICAgICAg
ICBkb2NMb2FkZXItPnNldExvYWRJblByb2dyZXNzKHRydWUpOwogICAgICAgICAgICAgcmVxdWVz
dC0+Y2FjaGVkUmVzb3VyY2UoKS0+ZXJyb3IoKTsKICAgICAgICAgICAgIGRvY0xvYWRlci0+c2V0
TG9hZEluUHJvZ3Jlc3MoZmFsc2UpOwpAQCAtMzk0LDcgKzQwMyw3IEBAIHZvaWQgTG9hZGVyOjpI
b3N0OjpkaWRGaW5pc2hMb2FkaW5nKFN1YnIKICAgICAvLyB0aGUgZG9jTG9hZGVyIHRoYXQgaXQg
d2lsbCBkZWxldGUgd2hlbiB0aGUgZG9jdW1lbnQgZ2V0cyBkZWxldGVkLgogICAgIFJlZlB0cjxE
b2N1bWVudD4gcHJvdGVjdG9yKGRvY0xvYWRlci0+ZG9jKCkpOwogICAgIGlmICghcmVxdWVzdC0+
aXNNdWx0aXBhcnQoKSkKLSAgICAgICAgZG9jTG9hZGVyLT5kZWNyZW1lbnRSZXF1ZXN0Q291bnQo
KTsKKyAgICAgICAgZG9jTG9hZGVyLT5kZWNyZW1lbnRSZXF1ZXN0Q291bnQocmVxdWVzdC0+Y2Fj
aGVkUmVzb3VyY2UoKSk7CiAKICAgICBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UgPSByZXF1ZXN0
LT5jYWNoZWRSZXNvdXJjZSgpOwogICAgIEFTU0VSVCghcmVzb3VyY2UtPnJlc291cmNlVG9SZXZh
bGlkYXRlKCkpOwpAQCAtNDQyLDcgKzQ1MSw3IEBAIHZvaWQgTG9hZGVyOjpIb3N0OjpkaWRGYWls
KFN1YnJlc291cmNlTG8KICAgICAvLyB0aGUgZG9jTG9hZGVyIHRoYXQgaXQgd2lsbCBkZWxldGUg
d2hlbiB0aGUgZG9jdW1lbnQgZ2V0cyBkZWxldGVkLgogICAgIFJlZlB0cjxEb2N1bWVudD4gcHJv
dGVjdG9yKGRvY0xvYWRlci0+ZG9jKCkpOwogICAgIGlmICghcmVxdWVzdC0+aXNNdWx0aXBhcnQo
KSkKLSAgICAgICAgZG9jTG9hZGVyLT5kZWNyZW1lbnRSZXF1ZXN0Q291bnQoKTsKKyAgICAgICAg
ZG9jTG9hZGVyLT5kZWNyZW1lbnRSZXF1ZXN0Q291bnQocmVxdWVzdC0+Y2FjaGVkUmVzb3VyY2Uo
KSk7CiAKICAgICBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UgPSByZXF1ZXN0LT5jYWNoZWRSZXNv
dXJjZSgpOwogICAgIApAQCAtNDg3LDcgKzQ5Niw3IEBAIHZvaWQgTG9hZGVyOjpIb3N0OjpkaWRS
ZWNlaXZlUmVzcG9uc2UoU3UKICAgICAgICAgICAgIC8vIDMwNCBOb3QgbW9kaWZpZWQgLyBVc2Ug
bG9jYWwgY29weQogICAgICAgICAgICAgbV9yZXF1ZXN0c0xvYWRpbmcucmVtb3ZlKGxvYWRlcik7
CiAgICAgICAgICAgICBsb2FkZXItPmNsZWFyQ2xpZW50KCk7Ci0gICAgICAgICAgICByZXF1ZXN0
LT5kb2NMb2FkZXIoKS0+ZGVjcmVtZW50UmVxdWVzdENvdW50KCk7CisgICAgICAgICAgICByZXF1
ZXN0LT5kb2NMb2FkZXIoKS0+ZGVjcmVtZW50UmVxdWVzdENvdW50KHJlcXVlc3QtPmNhY2hlZFJl
c291cmNlKCkpOwogCiAgICAgICAgICAgICAvLyBFeGlzdGluZyByZXNvdXJjZSBpcyBvaywganVz
dCB1c2UgaXQgdXBkYXRpbmcgdGhlIGV4cGlyYXRpb24gdGltZS4KICAgICAgICAgICAgIGNhY2hl
KCktPnJldmFsaWRhdGlvblN1Y2NlZWRlZChyZXNvdXJjZSwgcmVzcG9uc2UpOwpAQCAtNTE5LDcg
KzUyOCw3IEBAIHZvaWQgTG9hZGVyOjpIb3N0OjpkaWRSZWNlaXZlUmVzcG9uc2UoU3UKICAgICAg
ICAgcmVxdWVzdC0+c2V0SXNNdWx0aXBhcnQodHJ1ZSk7CiAgICAgICAgIAogICAgICAgICAvLyBX
ZSBkb24ndCBjb3VudCBtdWx0aVBhcnRzIGluIGEgRG9jTG9hZGVyJ3MgcmVxdWVzdCBjb3VudAot
ICAgICAgICByZXF1ZXN0LT5kb2NMb2FkZXIoKS0+ZGVjcmVtZW50UmVxdWVzdENvdW50KCk7Cisg
ICAgICAgIHJlcXVlc3QtPmRvY0xvYWRlcigpLT5kZWNyZW1lbnRSZXF1ZXN0Q291bnQocmVxdWVz
dC0+Y2FjaGVkUmVzb3VyY2UoKSk7CiAKICAgICAgICAgLy8gSWYgd2UgZ2V0IGEgbXVsdGlwYXJ0
IHJlc3BvbnNlLCB3ZSBtdXN0IGhhdmUgYSBoYW5kbGUKICAgICAgICAgQVNTRVJUKGxvYWRlci0+
aGFuZGxlKCkpOwpAQCAtNTgyLDcgKzU5MSw3IEBAIHZvaWQgTG9hZGVyOjpIb3N0OjpjYW5jZWxQ
ZW5kaW5nUmVxdWVzdHMKICAgICAgICAgaWYgKHJlcXVlc3QtPmRvY0xvYWRlcigpID09IGRvY0xv
YWRlcikgewogICAgICAgICAgICAgY2FjaGUoKS0+cmVtb3ZlKHJlcXVlc3QtPmNhY2hlZFJlc291
cmNlKCkpOwogICAgICAgICAgICAgZGVsZXRlIHJlcXVlc3Q7Ci0gICAgICAgICAgICBkb2NMb2Fk
ZXItPmRlY3JlbWVudFJlcXVlc3RDb3VudCgpOworICAgICAgICAgICAgZG9jTG9hZGVyLT5kZWNy
ZW1lbnRSZXF1ZXN0Q291bnQocmVxdWVzdC0+Y2FjaGVkUmVzb3VyY2UoKSk7CiAgICAgICAgIH0g
ZWxzZQogICAgICAgICAgICAgcmVtYWluaW5nLmFwcGVuZChyZXF1ZXN0KTsKICAgICB9CkluZGV4
OiBXZWJDb3JlL2xvYWRlci9sb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9s
b2FkZXIuaAkocmV2aXNpb24gNjI2OTMpCisrKyBXZWJDb3JlL2xvYWRlci9sb2FkZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtNDgsOCArNDgsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAg
ICAgdm9pZCBjYW5jZWxSZXF1ZXN0cyhEb2NMb2FkZXIqKTsKICAgICAgICAgCi0gICAgICAgIGVu
dW0gUHJpb3JpdHkgeyBMb3csIE1lZGl1bSwgSGlnaCB9OwotICAgICAgICB2b2lkIHNlcnZlUGVu
ZGluZ1JlcXVlc3RzKFByaW9yaXR5IG1pbmltdW1Qcmlvcml0eSA9IExvdyk7CisgICAgICAgIGVu
dW0gUHJpb3JpdHkgeyBWZXJ5TG93LCBMb3csIE1lZGl1bSwgSGlnaCB9OworICAgICAgICB2b2lk
IHNlcnZlUGVuZGluZ1JlcXVlc3RzKFByaW9yaXR5IG1pbmltdW1Qcmlvcml0eSA9IFZlcnlMb3cp
OwogCiAgICAgICAgIGJvb2wgaXNTdXNwZW5kaW5nUGVuZGluZ1JlcXVlc3RzKCkgeyByZXR1cm4g
bV9pc1N1c3BlbmRpbmdQZW5kaW5nUmVxdWVzdHM7IH0KICAgICAgICAgdm9pZCBzdXNwZW5kUGVu
ZGluZ1JlcXVlc3RzKCk7CkBAIC03Niw3ICs3Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgICAgIHZvaWQgYWRkUmVxdWVzdChSZXF1ZXN0KiwgUHJpb3JpdHkpOwogICAgICAgICAg
ICAgdm9pZCBub25DYWNoZVJlcXVlc3RJbkZsaWdodCgpOwogICAgICAgICAgICAgdm9pZCBub25D
YWNoZVJlcXVlc3RDb21wbGV0ZSgpOwotICAgICAgICAgICAgdm9pZCBzZXJ2ZVBlbmRpbmdSZXF1
ZXN0cyhQcmlvcml0eSBtaW5pbXVtUHJpb3JpdHkgPSBMb3cpOworICAgICAgICAgICAgdm9pZCBz
ZXJ2ZVBlbmRpbmdSZXF1ZXN0cyhQcmlvcml0eSBtaW5pbXVtUHJpb3JpdHkgPSBWZXJ5TG93KTsK
ICAgICAgICAgICAgIHZvaWQgY2FuY2VsUmVxdWVzdHMoRG9jTG9hZGVyKik7CiAgICAgICAgICAg
ICBib29sIGhhc1JlcXVlc3RzKCkgY29uc3Q7CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaAkocmV2aXNpb24gNjI2OTMpCisrKyBXZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC02Myw3ICs2Myw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIFRhcmdl
dElzT2JqZWN0LAogICAgICAgICAgICAgVGFyZ2V0SXNNZWRpYSwKICAgICAgICAgICAgIFRhcmdl
dElzV29ya2VyLAotICAgICAgICAgICAgVGFyZ2V0SXNTaGFyZWRXb3JrZXIKKyAgICAgICAgICAg
IFRhcmdldElzU2hhcmVkV29ya2VyLAorICAgICAgICAgICAgVGFyZ2V0SXNQcmVmZXRjaCwKICAg
ICAgICAgfTsKIAogICAgICAgICBzdGF0aWMgUGFzc093blB0cjxSZXNvdXJjZVJlcXVlc3Q+IGFk
b3B0KFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPik7CkluZGV4OiBX
ZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNp
b24gNjI2OTkpCisrKyBXZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDEyIEBACisyMDEwLTA3LTA3ICBHYXZpbiBQZXRlcnMgIDxnYXZpbnBAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGFkZCBzdXBw
b3J0IGZvciBsaW5rIHByZWZldGNoaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zNjUyCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJl
RGVmaW5lcy54Y2NvbmZpZzoKKwogMjAxMC0wNy0wNyAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KSW5kZXg6IFdlYktp
dDIvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0Mi9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwkocmV2aXNpb24g
NjI2OTMpCisrKyBXZWJLaXQyL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmln
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw4IEBACiAKIC8vIFNldCBhbnkgRU5BQkxFX0ZF
QVRVUkVfTkFNRSBtYWNybyB0byBhbiBlbXB0eSBzdHJpbmcgdG8gZGlzYWJsZSB0aGF0IGZlYXR1
cmUuCiAKK0VOQUJMRV9MSU5LX1BSRUZFVENIID0gOworCiBFTkFCTEVfM0RfQ0FOVkFTID0gJChF
TkFCTEVfM0RfQ0FOVkFTXyQoVEFSR0VUX01BQ19PU19YX1ZFUlNJT05fTUFKT1IpKTsKIEVOQUJM
RV8zRF9DQU5WQVNfMTA1MCA9IEVOQUJMRV8zRF9DQU5WQVM7CiBFTkFCTEVfM0RfQ0FOVkFTXzEw
NjAgPSBFTkFCTEVfM0RfQ0FOVkFTOwpAQCAtNDcsNiArNDksNyBAQCBFTkFCTEVfQ0xJRU5UX0JB
U0VEX0dFT0xPQ0FUSU9OID0gRU5BQkxFCiBFTkFCTEVfREFUQUJBU0UgPSBFTkFCTEVfREFUQUJB
U0U7CiBFTkFCTEVfREFUQUdSSUQgPSA7CiBFTkFCTEVfREFUQUxJU1QgPSBFTkFCTEVfREFUQUxJ
U1Q7CitFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OID0gOwogRU5BQkxFX0RJUkVDVE9SWV9VUExP
QUQgPSA7CiBFTkFCTEVfRE9NX1NUT1JBR0UgPSBFTkFCTEVfRE9NX1NUT1JBR0U7CiBFTkFCTEVf
RVZFTlRTT1VSQ0UgPSBFTkFCTEVfRVZFTlRTT1VSQ0U7CkBAIC01NSw2ICs1OCw3IEBAIEVOQUJM
RV9GSUxFX1JFQURFUiA9IEVOQUJMRV9GSUxFX1JFQURFUjsKIEVOQUJMRV9GSUxFX1dSSVRFUiA9
IDsKIEVOQUJMRV9HRU9MT0NBVElPTiA9IEVOQUJMRV9HRU9MT0NBVElPTjsKIEVOQUJMRV9JQ09O
REFUQUJBU0UgPSBFTkFCTEVfSUNPTkRBVEFCQVNFOworRU5BQkxFX0lNQUdFX1JFU0laRVIgPSA7
CiBFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSA9IDsKIEVOQUJMRV9JTlBVVF9TUEVFQ0ggPSA7CiBF
TkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUiA9IEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSOwpA
QCAtODIsNSArODYsNCBAQCBFTkFCTEVfWEhUTUxNUCA9IDsKIEVOQUJMRV9YUEFUSCA9IEVOQUJM
RV9YUEFUSDsKIEVOQUJMRV9YU0xUID0gRU5BQkxFX1hTTFQ7CiAKLUZFQVRVUkVfREVGSU5FUyA9
ICQoRU5BQkxFXzNEX0NBTlZBUykgJChFTkFCTEVfM0RfUkVOREVSSU5HKSAkKEVOQUJMRV9CTE9C
X1NMSUNFKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfQ0xJRU5UX0JBU0VE
X0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9EQVRBQkFTRSkgJChFTkFCTEVfREFUQUdSSUQpICQoRU5B
QkxFX0RBVEFMSVNUKSAkKEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEKSAkKEVOQUJMRV9ESVJFQ1RP
UllfVVBMT0FEKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVfRVZFTlRTT1VSQ0UpICQo
RU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZJTEVfUkVBREVSKSAkKEVOQUJMRV9GSUxFX1dSSVRF
UikgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVf
SU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSU5QVVRfU1BFRUNIKSAkKEVOQUJMRV9KQVZBU0NS
SVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FVEVSX1RBRykgJChFTkFC
TEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKSAkKEVO
QUJMRV9QUk9HUkVTU19UQUcpICQoRU5BQkxFX1JVQlkpICQoRU5BQkxFX1NBTkRCT1gpICQoRU5B
QkxFX1NIQVJFRF9XT1JLRVJTKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19BTklNQVRJT04p
ICQoRU5BQkxFX1NWR19BU19JTUFHRSkgJChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAk
KEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1NWR19GT1JFSUdOX09CSkVDVCkgJChFTkFCTEVf
U1ZHX1VTRSkgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9X
RUJfVElNSU5HKSAkKEVOQUJMRV9XTUwpICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hIVE1M
TVApICQoRU5BQkxFX1hQQVRIKSAkKEVOQUJMRV9YU0xUKTsKLQorRkVBVFVSRV9ERUZJTkVTID0g
JChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfM0RfQ0FOVkFTKSAkKEVOQUJMRV8zRF9S
RU5ERVJJTkcpICQoRU5BQkxFX0JMT0JfU0xJQ0UpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5H
KSAkKEVOQUJMRV9DTElFTlRfQkFTRURfR0VPTE9DQVRJT04pICQoRU5BQkxFX0RBVEFCQVNFKSAk
KEVOQUJMRV9EQVRBR1JJRCkgJChFTkFCTEVfREFUQUxJU1QpICQoRU5BQkxFX0RFVklDRV9PUklF
TlRBVElPTikgJChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCkgJChFTkFCTEVfRE9NX1NUT1JBR0Up
ICQoRU5BQkxFX0VWRU5UU09VUkNFKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GSUxFX1JF
QURFUikgJChFTkFCTEVfRklMRV9XUklURVIpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJM
RV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lNQUdFX1JFU0laRVIpICQoRU5BQkxFX0lOREVYRURf
REFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJV
R0dFUikgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRVRFUl9UQUcpICQoRU5BQkxFX05PVElG
SUNBVElPTlMpICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVfUFJP
R1JFU1NfVEFHKSAkKEVOQUJMRV9SVUJZKSAkKEVOQUJMRV9TQU5EQk9YKSAkKEVOQUJMRV9TSEFS
RURfV09SS0VSUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJM
RV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVf
U1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0Up
ICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlO
RykgJChFTkFCTEVfV01MKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YSFRNTE1QKSAkKEVO
QUJMRV9YUEFUSCkgJChFTkFCTEVfWFNMVCk7CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDYy
Njk5KQorKysgV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDEzIEBACisyMDEwLTA3LTA3ICBHYXZpbiBQZXRlcnMgIDxnYXZpbnBAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGFkZCBz
dXBwb3J0IGZvciBsaW5rIHByZWZldGNoaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zNjUyCisKKyAgICAgICAgKiBwdWJsaWMvV2ViVVJMUmVxdWVz
dC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxSZXF1ZXN0OjopOgorCiAyMDEwLTA3LTA3ICBT
YW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJz
IENhcmxzc29uLgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVUkxSZXF1ZXN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVUkxSZXF1ZXN0LmgJKHJl
dmlzaW9uIDYyNjkzKQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVUkxSZXF1ZXN0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDEwIEBAIHB1YmxpYzoKICAgICAgICAgVGFyZ2V0
SXNPYmplY3QgPSA3LAogICAgICAgICBUYXJnZXRJc01lZGlhID0gOCwKICAgICAgICAgVGFyZ2V0
SXNXb3JrZXIgPSA5LAotICAgICAgICBUYXJnZXRJc1NoYXJlZFdvcmtlciA9IDEwCisgICAgICAg
IFRhcmdldElzU2hhcmVkV29ya2VyID0gMTAsCisjaWYgRU5BQkxFRChMSU5LX1BSRUZFVENIKQor
ICAgICAgICBUYXJnZXRJc1ByZWZldGNoID0gMTEsCisjZW5kaWYKICAgICB9OwogCiAgICAgfldl
YlVSTFJlcXVlc3QoKSB7IHJlc2V0KCk7IH0KSW5kZXg6IFdlYktpdC9tYWMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2MjY5OSkKKysrIFdl
YktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTAt
MDctMDcgIEdhdmluIFBldGVycyAgPGdhdmlucEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgYWRkIHN1cHBvcnQgZm9yIGxpbmsg
cHJlZmV0Y2hpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTM2NTIKKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29u
ZmlnOgorCiAyMDEwLTA3LTA3ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgpJbmRleDogV2ViS2l0L21hYy9Db25maWd1
cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFj
L0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCShyZXZpc2lvbiA2MjY5MykK
KysrIFdlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcJKHdv
cmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDggQEAKIAogLy8gU2V0IGFueSBFTkFCTEVfRkVBVFVS
RV9OQU1FIG1hY3JvIHRvIGFuIGVtcHR5IHN0cmluZyB0byBkaXNhYmxlIHRoYXQgZmVhdHVyZS4K
IAorRU5BQkxFX0xJTktfUFJFRkVUQ0ggPSA7CisKIEVOQUJMRV8zRF9DQU5WQVMgPSAkKEVOQUJM
RV8zRF9DQU5WQVNfJChUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUikpOwogRU5BQkxFXzNE
X0NBTlZBU18xMDUwID0gRU5BQkxFXzNEX0NBTlZBUzsKIEVOQUJMRV8zRF9DQU5WQVNfMTA2MCA9
IEVOQUJMRV8zRF9DQU5WQVM7CkBAIC04NCw0ICs4Niw0IEBAIEVOQUJMRV9YSFRNTE1QID0gOwog
RU5BQkxFX1hQQVRIID0gRU5BQkxFX1hQQVRIOwogRU5BQkxFX1hTTFQgPSBFTkFCTEVfWFNMVDsK
IAotRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfQ0FOVkFTKSAkKEVOQUJMRV8zRF9SRU5E
RVJJTkcpICQoRU5BQkxFX0JMT0JfU0xJQ0UpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAk
KEVOQUJMRV9DTElFTlRfQkFTRURfR0VPTE9DQVRJT04pICQoRU5BQkxFX0RBVEFCQVNFKSAkKEVO
QUJMRV9EQVRBR1JJRCkgJChFTkFCTEVfREFUQUxJU1QpICQoRU5BQkxFX0RFVklDRV9PUklFTlRB
VElPTikgJChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCkgJChFTkFCTEVfRE9NX1NUT1JBR0UpICQo
RU5BQkxFX0VWRU5UU09VUkNFKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GSUxFX1JFQURF
UikgJChFTkFCTEVfRklMRV9XUklURVIpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9J
Q09OREFUQUJBU0UpICQoRU5BQkxFX0lNQUdFX1JFU0laRVIpICQoRU5BQkxFX0lOREVYRURfREFU
QUJBU0UpICQoRU5BQkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dF
UikgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRVRFUl9UQUcpICQoRU5BQkxFX05PVElGSUNB
VElPTlMpICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVfUFJPR1JF
U1NfVEFHKSAkKEVOQUJMRV9SVUJZKSAkKEVOQUJMRV9TQU5EQk9YKSAkKEVOQUJMRV9TSEFSRURf
V09SS0VSUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9T
VkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZH
X0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0UpICQo
RU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykg
JChFTkFCTEVfV01MKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YSFRNTE1QKSAkKEVOQUJM
RV9YUEFUSCkgJChFTkFCTEVfWFNMVCk7CitGRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV9MSU5L
X1BSRUZFVENIKSAkKEVOQUJMRV8zRF9DQU5WQVMpICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChF
TkFCTEVfQkxPQl9TTElDRSkgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NM
SUVOVF9CQVNFRF9HRU9MT0NBVElPTikgJChFTkFCTEVfREFUQUJBU0UpICQoRU5BQkxFX0RBVEFH
UklEKSAkKEVOQUJMRV9EQVRBTElTVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVO
QUJMRV9ESVJFQ1RPUllfVVBMT0FEKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVfRVZF
TlRTT1VSQ0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZJTEVfUkVBREVSKSAkKEVOQUJM
RV9GSUxFX1dSSVRFUikgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFT
RSkgJChFTkFCTEVfSU1BR0VfUkVTSVpFUikgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChF
TkFCTEVfSU5QVVRfU1BFRUNIKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJM
RV9NQVRITUwpICQoRU5BQkxFX01FVEVSX1RBRykgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChF
TkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKSAkKEVOQUJMRV9QUk9HUkVTU19UQUcpICQo
RU5BQkxFX1JVQlkpICQoRU5BQkxFX1NBTkRCT1gpICQoRU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAk
KEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19BTklNQVRJT04pICQoRU5BQkxFX1NWR19BU19JTUFH
RSkgJChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQo
RU5BQkxFX1NWR19GT1JFSUdOX09CSkVDVCkgJChFTkFCTEVfU1ZHX1VTRSkgJChFTkFCTEVfVklE
RU8pICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVOQUJMRV9X
TUwpICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hIVE1MTVApICQoRU5BQkxFX1hQQVRIKSAk
KEVOQUJMRV9YU0xUKTsKSW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDYyNjk5KQorKysgV2ViS2l0VG9vbHMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTAtMDctMDcgIEdh
dmluIFBldGVycyAgPGdhdmlucEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgYWRkIHN1cHBvcnQgZm9yIGxpbmsgcHJlZmV0Y2hp
bmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2NTIK
KworICAgICAgICAqIFNjcmlwdHMvYnVpbGQtd2Via2l0OgorCiAyMDEwLTA3LTA3ICBLZXZpbiBP
bGxpdmllciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29tPgogCiAgICAgICAgIFt3eF0gQnVpbGQg
Zml4LiBwYWdlUHJvcGVydHkgbmVlZHMgdG8gcmV0dXJuIGEgdmFsdWUuCkluZGV4OiBXZWJLaXRU
b29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9TY3Jp
cHRzL2J1aWxkLXdlYmtpdAkocmV2aXNpb24gNjI2OTMpCisrKyBXZWJLaXRUb29scy9TY3JpcHRz
L2J1aWxkLXdlYmtpdAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCBteSAkcHJlZml4
UGF0aDsKIG15ICRtYWtlQXJnczsKIG15ICRzdGFydFRpbWUgPSB0aW1lKCk7CiAKLW15ICgkdGhy
ZWVEQ2FudmFzU3VwcG9ydCwgJHRocmVlRFJlbmRlcmluZ1N1cHBvcnQsICRjaGFubmVsTWVzc2Fn
aW5nU3VwcG9ydCwgJGNsaWVudEJhc2VkR2VvbG9jYXRpb25TdXBwb3J0LCAkZGF0YWJhc2VTdXBw
b3J0LCAkZGF0YWdyaWRTdXBwb3J0LCAkZGF0YWxpc3RTdXBwb3J0LAorbXkgKCRsaW5rUHJlZmV0
Y2hTdXBwb3J0LCAkdGhyZWVEQ2FudmFzU3VwcG9ydCwgJHRocmVlRFJlbmRlcmluZ1N1cHBvcnQs
ICRjaGFubmVsTWVzc2FnaW5nU3VwcG9ydCwgJGNsaWVudEJhc2VkR2VvbG9jYXRpb25TdXBwb3J0
LCAkZGF0YWJhc2VTdXBwb3J0LCAkZGF0YWdyaWRTdXBwb3J0LCAkZGF0YWxpc3RTdXBwb3J0LAog
ICAgICRkb21TdG9yYWdlU3VwcG9ydCwgJGV2ZW50c291cmNlU3VwcG9ydCwgJGZpbHRlcnNTdXBw
b3J0LCAkZ2VvbG9jYXRpb25TdXBwb3J0LCAkaWNvbkRhdGFiYXNlU3VwcG9ydCwgJGltYWdlUmVz
aXplclN1cHBvcnQsICRpbmRleGVkRGF0YWJhc2VTdXBwb3J0LCAkaW5wdXRTcGVlY2hTdXBwb3J0
LAogICAgICRqYXZhU2NyaXB0RGVidWdnZXJTdXBwb3J0LCAkbWF0aG1sU3VwcG9ydCwgJG9mZmxp
bmVXZWJBcHBsaWNhdGlvblN1cHBvcnQsICRydWJ5U3VwcG9ydCwgJHN5c3RlbU1hbGxvY1N1cHBv
cnQsICRzYW5kYm94U3VwcG9ydCwgJHNoYXJlZFdvcmtlcnNTdXBwb3J0LAogICAgICRzdmdTdXBw
b3J0LCAkc3ZnQW5pbWF0aW9uU3VwcG9ydCwgJHN2Z0FzSW1hZ2VTdXBwb3J0LCAkc3ZnRE9NT2Jq
Q0JpbmRpbmdzU3VwcG9ydCwgJHN2Z0ZvbnRzU3VwcG9ydCwKQEAgLTY0LDYgKzY0LDkgQEAgbXkg
KCR0aHJlZURDYW52YXNTdXBwb3J0LCAkdGhyZWVEUmVuZGVyaQogICAgICRmaWxlUmVhZGVyU3Vw
cG9ydCwgJGZpbGVXcml0ZXJTdXBwb3J0LCAkZGlyZWN0b3J5VXBsb2FkU3VwcG9ydCk7CiAKIG15
IEBmZWF0dXJlcyA9ICgKKyAgICB7IG9wdGlvbiA9PiAibGluay1wcmVmZXRjaCIsIGRlc2MgPT4g
IlRvZ2dsZSBwcmUgZmV0Y2hpbmcgc3VwcG9ydCIsCisgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9M
SU5LX1BSRUZFVENIIiwgZGVmYXVsdCA9PiAwLCB2YWx1ZSA9PiBcJGxpbmtQcmVmZXRjaFN1cHBv
cnQgfSwKKwogICAgIHsgb3B0aW9uID0+ICIzZC1jYW52YXMiLCBkZXNjID0+ICJUb2dnbGUgM0Qg
Y2FudmFzIHN1cHBvcnQiLAogICAgICAgZGVmaW5lID0+ICJFTkFCTEVfM0RfQ0FOVkFTIiwgZGVm
YXVsdCA9PiAoaXNBcHBsZU1hY1dlYktpdCgpICYmICFpc1RpZ2VyKCkpLCB2YWx1ZSA9PiBcJHRo
cmVlRENhbnZhc1N1cHBvcnQgfSwKIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNjI2OTkpCisrKyBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMC0w
Ny0wNyAgR2F2aW4gUGV0ZXJzICA8Z2F2aW5wQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBhZGQgc3VwcG9ydCBmb3IgbGluayBw
cmVmZXRjaGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MzY1MgorCisgICAgICAgICogZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3By
ZWZldGNoLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9w
cmVmZXRjaC5saW5rOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2tpcHBlZDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9Ta2lw
cGVkOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9Ta2lwcGVkOgorCiAyMDEwLTA3LTA3ICBDaHJp
cyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
QmV0aCBEYWtpbi4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9w
cmVmZXRjaC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20v
SFRNTExpbmtFbGVtZW50L3ByZWZldGNoLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNSBAQAorVGhpcyB0ZXN0IHJlcXVpcmVzIER1bXBSZW5k
ZXJUcmVlIHRvIHNlZSB0aGUgbG9nIG9mIHdoYXQgcmVzb3VyY2VzIGFyZSBsb2FkZWQuCisKKzxs
aW5rIGhyZWY9InByZWZldGNoLmxpbmsiIHJlbD0icHJlZmV0Y2giPgorCisKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZl
dGNoLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMgQEAKKzxib2R5PgorPHNjcmlwdD4K
K2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBSZXNvdXJjZVJlc3BvbnNlTUlNRVR5
cGVzKCk7CisgICAgc2V0VGltZW91dCgibGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgp
Iiw1MCk7Cit9Cis8L3NjcmlwdD4KK1RoaXMgdGVzdCByZXF1aXJlcyBEdW1wUmVuZGVyVHJlZSB0
byBzZWUgdGhlIGxvZyBvZiB3aGF0IHJlc291cmNlcyBhcmUgbG9hZGVkLgorPHNjcmlwdD5kb2N1
bWVudC53cml0ZSgiPHBsYWludGV4dD4iKTs8L3NjcmlwdD4KKzxsaW5rIGhyZWY9InByZWZldGNo
LmxpbmsiIHJlbD0icHJlZmV0Y2giPgorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1M
TGlua0VsZW1lbnQvcHJlZmV0Y2gubGluawo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0Y2gubGluawkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC5saW5rCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxIEBACitUaGlzIGlzIHRoZSBsaW5rIHRoYXQgaXMgZmV0Y2hlZCBieSB0aGUg
cHJlZmV0Y2gtb25sb2FkIHRlc3QKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lw
cGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCShyZXZp
c2lvbiA2MjY5MykKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCSh3b3JraW5n
IGNvcHkpCkBAIC01NzU0LDYgKzU3NTQsOSBAQCBmYXN0L2Zvcm1zL3NsaWRlci10cmFuc2Zvcm1l
ZC5odG1sCiBmYXN0L2Zvcm1zL3NsaWRlci1tb3VzZS1ldmVudHMuaHRtbAogZmFzdC9mb3Jtcy9z
bGlkZXItem9vbWVkLmh0bWwKIAorIyBMaW5rIHByZWZldGNoIGlzIGRpc2FibGVkIGJ5IGRlZmF1
bHQKKyNmYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0Y2guaHRtbAorCiAjIExheW91dFRl
c3RDb250cm9sbGVyOjpwYWdlUHJvcGVydHkgaXMgbm90IGltcGxlbWVudGVkIGZvciBHVEsgeWV0
LgogcHJpbnRpbmcvcGFnZS1ydWxlLXNlbGVjdGlvbi5odG1sCiAKSW5kZXg6IExheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9Ta2lwcGVkCShyZXZpc2lvbiA2MjY5MykKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9Ta2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC0yODIsNiArMjgyLDkgQEAgc3RvcmFnZS9pbmRl
eGVkZGIKIGZhc3QvZG9tL0RldmljZU9yaWVudGF0aW9uCiBmYXN0L2RvbS9XaW5kb3cvd2luZG93
LXByb3BlcnRpZXMtZGV2aWNlLW9yaWVudGF0aW9uLmh0bWwKIAorIyBMaW5rIHByZWZldGNoIGlz
IGRpc2FibGVkIGJ5IGRlZmF1bHQKKyNmYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0Y2gu
aHRtbAorCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTkwOAog
ZmFzdC9kb20vR2VvbG9jYXRpb24vbWF4aW11bS1hZ2UuaHRtbAogCkluZGV4OiBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3Jt
L3F0L1NraXBwZWQJKHJldmlzaW9uIDYyNjkzKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQv
U2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAtNTQwNiw2ICs1NDA2LDkgQEAgc3ZnL1czQy1TVkct
MS4xL2ZpbHRlcnMtbGlnaHQtMDQtZi5zdmcKICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gIwogZmFz
dC9kb20vR2VvbG9jYXRpb24vY2FsbGJhY2stdG8tcmVtb3RlLWNvbnRleHQyLmh0bWwKIAorIyBM
aW5rIHByZWZldGNoIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQKKyNmYXN0L2RvbS9IVE1MTGlua0Vs
ZW1lbnQvcHJlZmV0Y2guaHRtbAorCiAjIEZhaWxpbmcgYWZ0ZXIgZW5hYmxpbmcgSFRNTDUgcGFy
c2VyIGluIHI2MTIzNAogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDA2NjEKIGZhc3QvZW5jb2RpbmcvamFwYW5lc2UtZW5jb2RpbmctbWl4Lmh0bWwKSW5kZXg6IExh
eW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3BsYXRmb3JtL3dpbi9Ta2lwcGVkCShyZXZpc2lvbiA2MjY5MykKKysrIExheW91dFRlc3RzL3Bs
YXRmb3JtL3dpbi9Ta2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC05MDAsNiArOTAwLDkgQEAgc3Rv
cmFnZS9pbmRleGVkZGIKIGZhc3QvZG9tL0RldmljZU9yaWVudGF0aW9uCiBmYXN0L2RvbS9XaW5k
b3cvd2luZG93LXByb3BlcnRpZXMtZGV2aWNlLW9yaWVudGF0aW9uLmh0bWwKIAorIyBMaW5rIHBy
ZWZldGNoIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQKK2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9w
cmVmZXRjaC5odG1sCisKICMgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhZ2VQcm9wZXJ0eSBpcyBu
b3QgaW1wbGVtZW50ZWQgZm9yIFdJTiB5ZXQuCiBwcmludGluZy9wYWdlLXJ1bGUtc2VsZWN0aW9u
Lmh0bWwKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60782</attachid>
            <date>2010-07-07 14:52:23 -0700</date>
            <delta_ts>2010-07-07 18:48:59 -0700</delta_ts>
            <desc>Remove tabs from changelog from last patch</desc>
            <filename>3652-no-onload.txt</filename>
            <type>text/plain</type>
            <size>38774</size>
            <attacher name="Gavin Peters">gavinp</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDYyNjk5KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTAtMDctMDcgIEdhdmluIFBl
dGVycyAgPGdhdmlucEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgYWRkIHN1cHBvcnQgZm9yIGxpbmsgcHJlZmV0Y2hpbmcKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2NTIKKworICAg
ICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgorCiAyMDEwLTA3
LTA3ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgU2FtIFdlaW5pZy4KSW5kZXg6IEphdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1
cmVEZWZpbmVzLnhjY29uZmlnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0NvbmZpZ3Vy
YXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCShyZXZpc2lvbiA2MjY5MykKKysrIEphdmFT
Y3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCSh3b3JraW5n
IGNvcHkpCkBAIC0zMSw2ICszMSw4IEBACiAKIC8vIFNldCBhbnkgRU5BQkxFX0ZFQVRVUkVfTkFN
RSBtYWNybyB0byBhbiBlbXB0eSBzdHJpbmcgdG8gZGlzYWJsZSB0aGF0IGZlYXR1cmUuCiAKK0VO
QUJMRV9MSU5LX1BSRUZFVENIID0gOworCiBFTkFCTEVfM0RfQ0FOVkFTID0gJChFTkFCTEVfM0Rf
Q0FOVkFTXyQoVEFSR0VUX01BQ19PU19YX1ZFUlNJT05fTUFKT1IpKTsKIEVOQUJMRV8zRF9DQU5W
QVNfMTA1MCA9IEVOQUJMRV8zRF9DQU5WQVM7CiBFTkFCTEVfM0RfQ0FOVkFTXzEwNjAgPSBFTkFC
TEVfM0RfQ0FOVkFTOwpAQCAtODQsNSArODYsNCBAQCBFTkFCTEVfWEhUTUxNUCA9IDsKIEVOQUJM
RV9YUEFUSCA9IEVOQUJMRV9YUEFUSDsKIEVOQUJMRV9YU0xUID0gRU5BQkxFX1hTTFQ7CiAKLUZF
QVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX0NBTlZBUykgJChFTkFCTEVfM0RfUkVOREVSSU5H
KSAkKEVOQUJMRV9CTE9CX1NMSUNFKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFC
TEVfQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9EQVRBQkFTRSkgJChFTkFCTEVf
REFUQUdSSUQpICQoRU5BQkxFX0RBVEFMSVNUKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04p
ICQoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQpICQoRU5BQkxFX0RPTV9TVE9SQUdFKSAkKEVOQUJM
RV9FVkVOVFNPVVJDRSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfRklMRV9SRUFERVIpICQo
RU5BQkxFX0ZJTEVfV1JJVEVSKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSUNPTkRB
VEFCQVNFKSAkKEVOQUJMRV9JTUFHRV9SRVNJWkVSKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNF
KSAkKEVOQUJMRV9JTlBVVF9TUEVFQ0gpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQo
RU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVURVJfVEFHKSAkKEVOQUJMRV9OT1RJRklDQVRJT05T
KSAkKEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpICQoRU5BQkxFX1BST0dSRVNTX1RB
RykgJChFTkFCTEVfUlVCWSkgJChFTkFCTEVfU0FOREJPWCkgJChFTkFCTEVfU0hBUkVEX1dPUktF
UlMpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0FOSU1BVElPTikgJChFTkFCTEVfU1ZHX0FT
X0lNQUdFKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpICQoRU5BQkxFX1NWR19GT05U
UykgJChFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUKSAkKEVOQUJMRV9TVkdfVVNFKSAkKEVOQUJM
RV9WSURFTykgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5B
QkxFX1dNTCkgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWEhUTUxNUCkgJChFTkFCTEVfWFBB
VEgpICQoRU5BQkxFX1hTTFQpOwotCitGRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV9MSU5LX1BS
RUZFVENIKSAkKEVOQUJMRV8zRF9DQU5WQVMpICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFC
TEVfQkxPQl9TTElDRSkgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NMSUVO
VF9CQVNFRF9HRU9MT0NBVElPTikgJChFTkFCTEVfREFUQUJBU0UpICQoRU5BQkxFX0RBVEFHUklE
KSAkKEVOQUJMRV9EQVRBTElTVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJM
RV9ESVJFQ1RPUllfVVBMT0FEKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVfRVZFTlRT
T1VSQ0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZJTEVfUkVBREVSKSAkKEVOQUJMRV9G
SUxFX1dSSVRFUikgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFTRSkg
JChFTkFCTEVfSU1BR0VfUkVTSVpFUikgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFC
TEVfSU5QVVRfU1BFRUNIKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9N
QVRITUwpICQoRU5BQkxFX01FVEVSX1RBRykgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFC
TEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKSAkKEVOQUJMRV9QUk9HUkVTU19UQUcpICQoRU5B
QkxFX1JVQlkpICQoRU5BQkxFX1NBTkRCT1gpICQoRU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAkKEVO
QUJMRV9TVkcpICQoRU5BQkxFX1NWR19BTklNQVRJT04pICQoRU5BQkxFX1NWR19BU19JTUFHRSkg
JChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5B
QkxFX1NWR19GT1JFSUdOX09CSkVDVCkgJChFTkFCTEVfU1ZHX1VTRSkgJChFTkFCTEVfVklERU8p
ICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVOQUJMRV9XTUwp
ICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hIVE1MTVApICQoRU5BQkxFX1hQQVRIKSAkKEVO
QUJMRV9YU0xUKTsKSW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA2MjY5OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsNTIgQEAKKzIwMTAtMDctMDcgIEdhdmluIFBldGVycyAgPGdh
dmlucEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgYmFzZWQgbW9zdGx5IG9uIGEgcGF0Y2ggYnkgTGVvbiBDbGFya2UsIGxlb25j
bGFya2VAZ29vZ2xlLmNvbQorCisgICAgICAgIGFkZCBzdXBwb3J0IGZvciBsaW5rIHByZWZldGNo
aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjUy
CisKKyAgICAgICAgVGVzdDogZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLmh0bWwK
KworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgorICAg
ICAgICAqIGh0bWwvSFRNTExpbmtFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxM
aW5rRWxlbWVudDo6dG9rZW5pemVSZWxBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TExpbmtFbGVtZW50Ojpwcm9jZXNzKToKKyAgICAgICAgKiBodG1sL0hUTUxMaW5rRWxlbWVudC5o
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50OjpSZWxBdHRyaWJ1dGU6OlJlbEF0
dHJpYnV0ZSk6CisgICAgICAgICogbG9hZGVyL0NhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZVJlc291cmNlKToKKyAgICAgICAgKiBsb2FkZXIvQ2FjaGVkUmVzb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmRhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkUmVzb3VyY2U6OmRpZEFkZENsaWVudCk6CisgICAgICAgICogbG9hZGVyL0NhY2hl
ZFJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjplcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRSZXNvdXJjZTo6aXNQcmVmZXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNv
dXJjZTo6c2NoZWR1bGUpOgorICAgICAgICAqIGxvYWRlci9DYWNoZWRTY3JpcHQuY3BwOgorICAg
ICAgICAqIGxvYWRlci9DYWNoZWRTY3JpcHQuaDoKKyAgICAgICAgKiBsb2FkZXIvRG9jTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY0xvYWRlcjo6cmVxdWVzdExpbmtQcmVmZXRjaCk6
CisgICAgICAgIChXZWJDb3JlOjpEb2NMb2FkZXI6OmNhblJlcXVlc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jTG9hZGVyOjppbmNyZW1lbnRSZXF1ZXN0Q291bnQpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jTG9hZGVyOjpkZWNyZW1lbnRSZXF1ZXN0Q291bnQpOgorICAgICAgICAqIGxvYWRlci9E
b2NMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvbG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNhY2hlZFJlc291cmNlVHlwZVRvVGFyZ2V0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpM
b2FkZXI6OmRldGVybWluZVByaW9yaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRlcjo6bG9h
ZCk6CisgICAgICAgIChXZWJDb3JlOjpMb2FkZXI6Okhvc3Q6OnNlcnZlUGVuZGluZ1JlcXVlc3Rz
KToKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRlcjo6SG9zdDo6ZGlkRmluaXNoTG9hZGluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpMb2FkZXI6Okhvc3Q6OmRpZEZhaWwpOgorICAgICAgICAoV2ViQ29y
ZTo6TG9hZGVyOjpIb3N0OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6
TG9hZGVyOjpIb3N0OjpjYW5jZWxQZW5kaW5nUmVxdWVzdHMpOgorICAgICAgICAqIGxvYWRlci9s
b2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRlcjo6KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdEJhc2U6Oik6CisKIDIwMTAtMDctMDcgIEFkYW0gQmFydGggIDxhYmFydGhAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpJbmRleDogV2ViQ29y
ZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCShyZXZpc2lvbiA2
MjY5MykKKysrIFdlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcJ
KHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDggQEAKIAogLy8gU2V0IGFueSBFTkFCTEVfRkVB
VFVSRV9OQU1FIG1hY3JvIHRvIGFuIGVtcHR5IHN0cmluZyB0byBkaXNhYmxlIHRoYXQgZmVhdHVy
ZS4KIAorRU5BQkxFX0xJTktfUFJFRkVUQ0ggPSA7CisKIEVOQUJMRV8zRF9DQU5WQVMgPSAkKEVO
QUJMRV8zRF9DQU5WQVNfJChUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUikpOwogRU5BQkxF
XzNEX0NBTlZBU18xMDUwID0gRU5BQkxFXzNEX0NBTlZBUzsKIEVOQUJMRV8zRF9DQU5WQVNfMTA2
MCA9IEVOQUJMRV8zRF9DQU5WQVM7CkBAIC04NCw1ICs4Niw0IEBAIEVOQUJMRV9YSFRNTE1QID0g
OwogRU5BQkxFX1hQQVRIID0gRU5BQkxFX1hQQVRIOwogRU5BQkxFX1hTTFQgPSBFTkFCTEVfWFNM
VDsKIAotRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfQ0FOVkFTKSAkKEVOQUJMRV8zRF9S
RU5ERVJJTkcpICQoRU5BQkxFX0JMT0JfU0xJQ0UpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5H
KSAkKEVOQUJMRV9DTElFTlRfQkFTRURfR0VPTE9DQVRJT04pICQoRU5BQkxFX0RBVEFCQVNFKSAk
KEVOQUJMRV9EQVRBR1JJRCkgJChFTkFCTEVfREFUQUxJU1QpICQoRU5BQkxFX0RFVklDRV9PUklF
TlRBVElPTikgJChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCkgJChFTkFCTEVfRE9NX1NUT1JBR0Up
ICQoRU5BQkxFX0VWRU5UU09VUkNFKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GSUxFX1JF
QURFUikgJChFTkFCTEVfRklMRV9XUklURVIpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJM
RV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lNQUdFX1JFU0laRVIpICQoRU5BQkxFX0lOREVYRURf
REFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJV
R0dFUikgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRVRFUl9UQUcpICQoRU5BQkxFX05PVElG
SUNBVElPTlMpICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVfUFJP
R1JFU1NfVEFHKSAkKEVOQUJMRV9SVUJZKSAkKEVOQUJMRV9TQU5EQk9YKSAkKEVOQUJMRV9TSEFS
RURfV09SS0VSUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJM
RV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVf
U1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0Up
ICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlO
RykgJChFTkFCTEVfV01MKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YSFRNTE1QKSAkKEVO
QUJMRV9YUEFUSCkgJChFTkFCTEVfWFNMVCk7Ci0KK0ZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxF
X0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFXzNEX0NBTlZBUykgJChFTkFCTEVfM0RfUkVOREVSSU5H
KSAkKEVOQUJMRV9CTE9CX1NMSUNFKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFC
TEVfQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9EQVRBQkFTRSkgJChFTkFCTEVf
REFUQUdSSUQpICQoRU5BQkxFX0RBVEFMSVNUKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04p
ICQoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQpICQoRU5BQkxFX0RPTV9TVE9SQUdFKSAkKEVOQUJM
RV9FVkVOVFNPVVJDRSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfRklMRV9SRUFERVIpICQo
RU5BQkxFX0ZJTEVfV1JJVEVSKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSUNPTkRB
VEFCQVNFKSAkKEVOQUJMRV9JTUFHRV9SRVNJWkVSKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNF
KSAkKEVOQUJMRV9JTlBVVF9TUEVFQ0gpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQo
RU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVURVJfVEFHKSAkKEVOQUJMRV9OT1RJRklDQVRJT05T
KSAkKEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpICQoRU5BQkxFX1BST0dSRVNTX1RB
RykgJChFTkFCTEVfUlVCWSkgJChFTkFCTEVfU0FOREJPWCkgJChFTkFCTEVfU0hBUkVEX1dPUktF
UlMpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0FOSU1BVElPTikgJChFTkFCTEVfU1ZHX0FT
X0lNQUdFKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpICQoRU5BQkxFX1NWR19GT05U
UykgJChFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUKSAkKEVOQUJMRV9TVkdfVVNFKSAkKEVOQUJM
RV9WSURFTykgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5B
QkxFX1dNTCkgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWEhUTUxNUCkgJChFTkFCTEVfWFBB
VEgpICQoRU5BQkxFX1hTTFQpOwpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAJKHJldmlz
aW9uIDYyNjkzKQorKysgV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE0NCwxMiArMTQ0LDE5IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50Ojp0b2tlbml6
ZVJlbEF0dHJpYnUKICAgICByZWxBdHRyaWJ1dGUubV9pc0ljb24gPSBmYWxzZTsKICAgICByZWxB
dHRyaWJ1dGUubV9pc0FsdGVybmF0ZSA9IGZhbHNlOwogICAgIHJlbEF0dHJpYnV0ZS5tX2lzRE5T
UHJlZmV0Y2ggPSBmYWxzZTsKKyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKKyAgICByZWxBdHRy
aWJ1dGUubV9pc0xpbmtQcmVmZXRjaCA9IGZhbHNlOworI2VuZGlmCiAgICAgaWYgKGVxdWFsSWdu
b3JpbmdDYXNlKHJlbCwgInN0eWxlc2hlZXQiKSkKICAgICAgICAgcmVsQXR0cmlidXRlLm1faXNT
dHlsZVNoZWV0ID0gdHJ1ZTsKICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShyZWwsICJp
Y29uIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UocmVsLCAic2hvcnRjdXQgaWNvbiIpKQogICAgICAg
ICByZWxBdHRyaWJ1dGUubV9pc0ljb24gPSB0cnVlOwogICAgIGVsc2UgaWYgKGVxdWFsSWdub3Jp
bmdDYXNlKHJlbCwgImRucy1wcmVmZXRjaCIpKQogICAgICAgICByZWxBdHRyaWJ1dGUubV9pc0RO
U1ByZWZldGNoID0gdHJ1ZTsKKyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKKyAgICBlbHNlIGlm
IChlcXVhbElnbm9yaW5nQ2FzZShyZWwsICJwcmVmZXRjaCIpKQorICAgICAgICByZWxBdHRyaWJ1
dGUubV9pc0xpbmtQcmVmZXRjaCA9IHRydWU7CisjZW5kaWYKICAgICBlbHNlIGlmIChlcXVhbEln
bm9yaW5nQ2FzZShyZWwsICJhbHRlcm5hdGUgc3R5bGVzaGVldCIpIHx8IGVxdWFsSWdub3JpbmdD
YXNlKHJlbCwgInN0eWxlc2hlZXQgYWx0ZXJuYXRlIikpIHsKICAgICAgICAgcmVsQXR0cmlidXRl
Lm1faXNTdHlsZVNoZWV0ID0gdHJ1ZTsKICAgICAgICAgcmVsQXR0cmlidXRlLm1faXNBbHRlcm5h
dGUgPSB0cnVlOwpAQCAtMTg2LDYgKzE5MywxMSBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6cHJv
Y2VzcygpCiAgICAgaWYgKG1fcmVsQXR0cmlidXRlLm1faXNETlNQcmVmZXRjaCAmJiBtX3VybC5p
c1ZhbGlkKCkgJiYgIW1fdXJsLmlzRW1wdHkoKSkKICAgICAgICAgUmVzb3VyY2VIYW5kbGU6OnBy
ZXBhcmVGb3JVUkwobV91cmwpOwogCisjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCisgICAgaWYg
KG1fcmVsQXR0cmlidXRlLm1faXNMaW5rUHJlZmV0Y2ggJiYgbV91cmwuaXNWYWxpZCgpKQorICAg
ICAgICBkb2N1bWVudCgpLT5kb2NMb2FkZXIoKS0+cmVxdWVzdExpbmtQcmVmZXRjaChtX3VybCk7
CisjZW5kaWYKKwogICAgIGJvb2wgYWNjZXB0SWZUeXBlQ29udGFpbnNUZXh0Q1NTID0gZG9jdW1l
bnQoKS0+cGFnZSgpICYmIGRvY3VtZW50KCktPnBhZ2UoKS0+c2V0dGluZ3MoKSAmJiBkb2N1bWVu
dCgpLT5wYWdlKCktPnNldHRpbmdzKCktPnRyZWF0c0FueVRleHRDU1NMaW5rQXNTdHlsZXNoZWV0
KCk7CiAKICAgICAvLyBTdHlsZXNoZWV0CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCShyZXZp
c2lvbiA2MjY5MykKKysrIFdlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMzEsNiArMzEsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNo
ZWRDU1NTdHlsZVNoZWV0OworY2xhc3MgQ2FjaGVkTGlua1ByZWZldGNoOwogY2xhc3MgS1VSTDsK
IAogY2xhc3MgSFRNTExpbmtFbGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50LCBwdWJsaWMgQ2Fj
aGVkUmVzb3VyY2VDbGllbnQgewpAQCAtNDAsOCArNDEsMTkgQEAgcHVibGljOgogICAgICAgICBi
b29sIG1faXNJY29uOwogICAgICAgICBib29sIG1faXNBbHRlcm5hdGU7CiAgICAgICAgIGJvb2wg
bV9pc0ROU1ByZWZldGNoOworI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQorICAgICAgICBib29s
IG1faXNMaW5rUHJlZmV0Y2g7CisjZW5kaWYKIAotICAgICAgICBSZWxBdHRyaWJ1dGUoKSA6IG1f
aXNTdHlsZVNoZWV0KGZhbHNlKSwgbV9pc0ljb24oZmFsc2UpLCBtX2lzQWx0ZXJuYXRlKGZhbHNl
KSwgbV9pc0ROU1ByZWZldGNoKGZhbHNlKSB7IH0KKyAgICAgICAgUmVsQXR0cmlidXRlKCkKKyAg
ICAgICAgOiAgICAgbV9pc1N0eWxlU2hlZXQoZmFsc2UpCisgICAgICAgICAgICAsIG1faXNJY29u
KGZhbHNlKQorICAgICAgICAgICAgLCBtX2lzQWx0ZXJuYXRlKGZhbHNlKQorICAgICAgICAgICAg
LCBtX2lzRE5TUHJlZmV0Y2goZmFsc2UpCisjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCisgICAg
ICAgICAgICAsIG1faXNMaW5rUHJlZmV0Y2goZmFsc2UpCisjZW5kaWYKKyAgICAgICAgICAgIHsg
fTsKICAgICB9OwogCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTExpbmtFbGVtZW50PiBjcmVh
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50KiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIp
OwpJbmRleDogV2ViQ29yZS9sb2FkZXIvQ2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
bG9hZGVyL0NhY2hlLmNwcAkocmV2aXNpb24gNjI2OTMpCisrKyBXZWJDb3JlL2xvYWRlci9DYWNo
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDYgKzg2LDEwIEBAIHN0YXRpYyBDYWNoZWRSZXNv
dXJjZSogY3JlYXRlUmVzb3VyY2UoQ2EKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpYQkxTdHls
ZVNoZWV0OgogICAgICAgICByZXR1cm4gbmV3IENhY2hlZFhCTERvY3VtZW50KHVybC5zdHJpbmco
KSk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKKyAgICBjYXNlIENhY2hlZFJl
c291cmNlOjpMaW5rUHJlZmV0Y2g6CisgICAgICAgIHJldHVybiBuZXcgQ2FjaGVkUmVzb3VyY2Uo
dXJsLnN0cmluZygpLCBDYWNoZWRSZXNvdXJjZTo6TGlua1ByZWZldGNoKTsKKyNlbmRpZgogICAg
IGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0Nh
Y2hlZFJlc291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9DYWNoZWRSZXNv
dXJjZS5jcHAJKHJldmlzaW9uIDYyNjkzKQorKysgV2ViQ29yZS9sb2FkZXIvQ2FjaGVkUmVzb3Vy
Y2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw4IEBACiAKICNpbmNsdWRlICJDYWNo
ZS5oIgogI2luY2x1ZGUgIkNhY2hlZE1ldGFkYXRhLmgiCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3Vy
Y2VDbGllbnQuaCIKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlci5oIgogI2lu
Y2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiRG9jTG9hZGVyLmgiCiAj
aW5jbHVkZSAiRnJhbWUuaCIKQEAgLTEwOCw2ICsxMTAsMTYgQEAgdm9pZCBDYWNoZWRSZXNvdXJj
ZTo6bG9hZChEb2NMb2FkZXIqIGRvYwogICAgIG1fbG9hZGluZyA9IHRydWU7CiB9CiAKK3ZvaWQg
Q2FjaGVkUmVzb3VyY2U6OmRhdGEoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LCBib29sIGFsbERh
dGFSZWNlaXZlZCkKK3sKKyAgICBpZiAoIWFsbERhdGFSZWNlaXZlZCkKKyAgICAgICAgcmV0dXJu
OworICAgIAorICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyIHcobV9jbGllbnRzKTsKKyAg
ICB3aGlsZSAoQ2FjaGVkUmVzb3VyY2VDbGllbnQqIGMgPSB3Lm5leHQoKSkKKyAgICAgICAgYy0+
bm90aWZ5RmluaXNoZWQodGhpcyk7Cit9CisKIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaCgp
CiB7CiAgICAgbV9zdGF0dXMgPSBDYWNoZWQ7CkBAIC0yMDQsNiArMjE2LDEyIEBAIHZvaWQgQ2Fj
aGVkUmVzb3VyY2U6OmFkZENsaWVudChDYWNoZWRSZXMKICAgICBkaWRBZGRDbGllbnQoY2xpZW50
KTsKIH0KIAordm9pZCBDYWNoZWRSZXNvdXJjZTo6ZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNl
Q2xpZW50KiBjKQoreworICAgIGlmICghaXNMb2FkaW5nKCkpCisgICAgICAgIGMtPm5vdGlmeUZp
bmlzaGVkKHRoaXMpOworfQorCiB2b2lkIENhY2hlZFJlc291cmNlOjphZGRDbGllbnRUb1NldChD
YWNoZWRSZXNvdXJjZUNsaWVudCogY2xpZW50KQogewogICAgIEFTU0VSVCghaXNQdXJnZWFibGUo
KSk7CkluZGV4OiBXZWJDb3JlL2xvYWRlci9DYWNoZWRSZXNvdXJjZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvbG9hZGVyL0NhY2hlZFJlc291cmNlLmgJKHJldmlzaW9uIDYyNjkzKQorKysgV2Vi
Q29yZS9sb2FkZXIvQ2FjaGVkUmVzb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNjQsNiArNjQs
OSBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFhCTCkKICAgICAgICAgLCBYQkwKICNlbmRpZgorI2lm
IEVOQUJMRShMSU5LX1BSRUZFVENIKQorICAgICAgICAsIExpbmtQcmVmZXRjaAorI2VuZGlmCiAg
ICAgfTsKIAogICAgIGVudW0gU3RhdHVzIHsKQEAgLTgyLDggKzg1LDggQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIHsgfQogICAgIHZpcnR1
YWwgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgZGF0YShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZXJyb3IoKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGRhdGEoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEsIGJvb2wgYWxsRGF0YVJl
Y2VpdmVkKTsKKyAgICB2aXJ0dWFsIHZvaWQgZXJyb3IoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
aHR0cFN0YXR1c0NvZGVFcnJvcigpIHsgZXJyb3IoKTsgfSAvLyBJbWFnZXMga2VlcCBsb2FkaW5n
IGluIHNwaXRlIG9mIEhUVFAgZXJyb3JzIChmb3IgbGVnYWN5IGNvbXBhdCB3aXRoIDxpbWc+LCBl
dGMuKS4KIAogICAgIGNvbnN0IFN0cmluZyAmdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0K
QEAgLTEwMyw3ICsxMDYsNyBAQCBwdWJsaWM6CiAgICAgUHJlbG9hZFJlc3VsdCBwcmVsb2FkUmVz
dWx0KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UHJlbG9hZFJlc3VsdD4obV9wcmVsb2Fk
UmVzdWx0KTsgfQogICAgIHZvaWQgc2V0UmVxdWVzdGVkRnJvbU5ldHdvcmtpbmdMYXllcigpIHsg
bV9yZXF1ZXN0ZWRGcm9tTmV0d29ya2luZ0xheWVyID0gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCB2
b2lkIGRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCopID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50Kik7CiAgICAgdmlydHVhbCB2
b2lkIGFsbENsaWVudHNSZW1vdmVkKCkgeyB9CiAKICAgICB1bnNpZ25lZCBjb3VudCgpIGNvbnN0
IHsgcmV0dXJuIG1fY2xpZW50cy5zaXplKCk7IH0KQEAgLTEyMiw2ICsxMjUsMTEgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0TG9hZGluZyhib29sIGIpIHsgbV9sb2FkaW5nID0gYjsgfQogCiAgICAg
dmlydHVhbCBib29sIGlzSW1hZ2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorI2lmIEVOQUJM
RShMSU5LX1BSRUZFVENIKQorICAgIHZpcnR1YWwgYm9vbCBpc1ByZWZldGNoKCkgY29uc3QgeyBy
ZXR1cm4gdHlwZSgpICE9IExpbmtQcmVmZXRjaDsgfQorI2Vsc2UKKyAgICB2aXJ0dWFsIGJvb2wg
aXNQcmVmZXRjaCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisjZW5kaWYKIAogICAgIHVuc2ln
bmVkIGFjY2Vzc0NvdW50KCkgY29uc3QgeyByZXR1cm4gbV9hY2Nlc3NDb3VudDsgfQogICAgIHZv
aWQgaW5jcmVhc2VBY2Nlc3NDb3VudCgpIHsgbV9hY2Nlc3NDb3VudCsrOyB9CkBAIC0xNjIsNyAr
MTcwLDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0V4cGlyZWQoKSBjb25zdDsKIAotICAgIHZp
cnR1YWwgYm9vbCBzY2hlZHVsZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVh
bCBib29sIHNjaGVkdWxlKCkgY29uc3QgeyByZXR1cm4gaXNQcmVmZXRjaCgpOyB9CiAKICAgICAv
LyBMaXN0IG9mIGFjY2VwdGFibGUgTUlNRSB0eXBlcyBzZXBhcmF0ZWQgYnkgIiwiLgogICAgIC8v
IEEgTUlNRSB0eXBlIG1heSBjb250YWluIGEgd2lsZGNhcmQsIGUuZy4gInRleHQvKiIuCkluZGV4
OiBXZWJDb3JlL2xvYWRlci9DYWNoZWRTY3JpcHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
bG9hZGVyL0NhY2hlZFNjcmlwdC5jcHAJKHJldmlzaW9uIDYyNjkzKQorKysgV2ViQ29yZS9sb2Fk
ZXIvQ2FjaGVkU2NyaXB0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsMTIgKzUxLDYgQEAgQ2Fj
aGVkU2NyaXB0Ojp+Q2FjaGVkU2NyaXB0KCkKIHsKIH0KIAotdm9pZCBDYWNoZWRTY3JpcHQ6OmRp
ZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCogYykKLXsKLSAgICBpZiAoIWlzTG9hZGlu
ZygpKQotICAgICAgICBjLT5ub3RpZnlGaW5pc2hlZCh0aGlzKTsKLX0KLQogdm9pZCBDYWNoZWRT
Y3JpcHQ6OmFsbENsaWVudHNSZW1vdmVkKCkKIHsKICAgICBtX2RlY29kZWREYXRhRGVsZXRpb25U
aW1lci5zdGFydE9uZVNob3QoMCk7CkluZGV4OiBXZWJDb3JlL2xvYWRlci9DYWNoZWRTY3JpcHQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9DYWNoZWRTY3JpcHQuaAkocmV2aXNpb24g
NjI2OTMpCisrKyBXZWJDb3JlL2xvYWRlci9DYWNoZWRTY3JpcHQuaAkod29ya2luZyBjb3B5KQpA
QCAtNDEsNyArNDEsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgY29uc3QgU3Ry
aW5nJiBzY3JpcHQoKTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hl
ZFJlc291cmNlQ2xpZW50Kik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBhbGxDbGllbnRzUmVtb3Zl
ZCgpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKTsK
SW5kZXg6IFdlYkNvcmUvbG9hZGVyL0RvY0xvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9sb2FkZXIvRG9jTG9hZGVyLmNwcAkocmV2aXNpb24gNjI2OTMpCisrKyBXZWJDb3JlL2xvYWRl
ci9Eb2NMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjgsNiArMTY4LDEzIEBAIENhY2hl
ZFhCTERvY3VtZW50KiBEb2NMb2FkZXI6OnJlcXVlc3RYQkwKIH0KICNlbmRpZgogCisjaWYgRU5B
QkxFKExJTktfUFJFRkVUQ0gpCitDYWNoZWRSZXNvdXJjZSogRG9jTG9hZGVyOjpyZXF1ZXN0TGlu
a1ByZWZldGNoKGNvbnN0IFN0cmluZyYgdXJsKQoreworICAgIHJldHVybiByZXF1ZXN0UmVzb3Vy
Y2UoQ2FjaGVkUmVzb3VyY2U6OkxpbmtQcmVmZXRjaCwgdXJsLCBTdHJpbmcoKSk7Cit9CisjZW5k
aWYKKwogYm9vbCBEb2NMb2FkZXI6OmNhblJlcXVlc3QoQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlw
ZSwgY29uc3QgS1VSTCYgdXJsKQogewogICAgIC8vIFNvbWUgdHlwZXMgb2YgcmVzb3VyY2VzIGNh
biBiZSBsb2FkZWQgb25seSBmcm9tIHRoZSBzYW1lIG9yaWdpbi4gIE90aGVyCkBAIC0xNzgsNiAr
MTg1LDkgQEAgYm9vbCBEb2NMb2FkZXI6OmNhblJlcXVlc3QoQ2FjaGVkUmVzb3VyYwogICAgIGNh
c2UgQ2FjaGVkUmVzb3VyY2U6OkNTU1N0eWxlU2hlZXQ6CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJj
ZTo6U2NyaXB0OgogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkZvbnRSZXNvdXJjZToKKyNpZiBF
TkFCTEUoTElOS19QUkVGRVRDSCkKKyAgICBjYXNlIENhY2hlZFJlc291cmNlOjpMaW5rUHJlZmV0
Y2g6CisjZW5kaWYKICAgICAgICAgLy8gVGhlc2UgdHlwZXMgb2YgcmVzb3VyY2VzIGNhbiBiZSBs
b2FkZWQgZnJvbSBhbnkgb3JpZ2luLgogICAgICAgICAvLyBGSVhNRTogQXJlIHdlIHN1cmUgYWJv
dXQgQ2FjaGVkUmVzb3VyY2U6OkZvbnRSZXNvdXJjZT8KICAgICAgICAgYnJlYWs7CkBAIC0yMjAs
NiArMjMwLDkgQEAgYm9vbCBEb2NMb2FkZXI6OmNhblJlcXVlc3QoQ2FjaGVkUmVzb3VyYwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpJbWFnZVJlc291cmNlOgogICAg
IGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkNTU1N0eWxlU2hlZXQ6CisjaWYgRU5BQkxFKExJTktfUFJF
RkVUQ0gpCisgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6TGlua1ByZWZldGNoOgorI2VuZGlmCiAg
ICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6Rm9udFJlc291cmNlOiB7CiAgICAgICAgIC8vIFRoZXNl
IHJlc291cmNlcyBjYW4gY29ycnVwdCBvbmx5IHRoZSBmcmFtZSdzIHBpeGVscy4KICAgICAgICAg
aWYgKEZyYW1lKiBmID0gZnJhbWUoKSkgewpAQCAtMzU1LDEzICszNjgsMTkgQEAgdm9pZCBEb2NM
b2FkZXI6OmNoZWNrQ2FjaGVPYmplY3RTdGF0dXMoQwogICAgIGZyYW1lKCktPmxvYWRlcigpLT5s
b2FkZWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShyZXNvdXJjZSk7CiB9CiAKLXZvaWQgRG9jTG9h
ZGVyOjppbmNyZW1lbnRSZXF1ZXN0Q291bnQoKQordm9pZCBEb2NMb2FkZXI6OmluY3JlbWVudFJl
cXVlc3RDb3VudChjb25zdCBDYWNoZWRSZXNvdXJjZSogcmVzKQogeworICAgIGlmIChyZXMtPmlz
UHJlZmV0Y2goKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgKyttX3JlcXVlc3RDb3VudDsKIH0K
IAotdm9pZCBEb2NMb2FkZXI6OmRlY3JlbWVudFJlcXVlc3RDb3VudCgpCit2b2lkIERvY0xvYWRl
cjo6ZGVjcmVtZW50UmVxdWVzdENvdW50KGNvbnN0IENhY2hlZFJlc291cmNlKiByZXMpCiB7Cisg
ICAgaWYgKHJlcy0+aXNQcmVmZXRjaCgpKQorICAgICAgICByZXR1cm47CisKICAgICAtLW1fcmVx
dWVzdENvdW50OwogICAgIEFTU0VSVChtX3JlcXVlc3RDb3VudCA+IC0xKTsKIH0KSW5kZXg6IFdl
YkNvcmUvbG9hZGVyL0RvY0xvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0Rv
Y0xvYWRlci5oCShyZXZpc2lvbiA2MjY5MykKKysrIFdlYkNvcmUvbG9hZGVyL0RvY0xvYWRlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC02Nyw2ICs2Nyw5IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoWEJM
KQogICAgIENhY2hlZFhCTERvY3VtZW50KiByZXF1ZXN0WEJMRG9jdW1lbnQoY29uc3QgU3RyaW5n
ICZ1cmwpOwogI2VuZGlmCisjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCisgICAgQ2FjaGVkUmVz
b3VyY2UqIHJlcXVlc3RMaW5rUHJlZmV0Y2goY29uc3QgU3RyaW5nICZ1cmwpOworI2VuZGlmCiAK
ICAgICAvLyBMb2dzIGFuIGFjY2VzcyBkZW5pZWQgbWVzc2FnZSB0byB0aGUgY29uc29sZSBmb3Ig
dGhlIHNwZWNpZmllZCBVUkwuCiAgICAgdm9pZCBwcmludEFjY2Vzc0RlbmllZE1lc3NhZ2UoY29u
c3QgS1VSTCYgdXJsKSBjb25zdDsKQEAgLTkxLDggKzk0LDggQEAgcHVibGljOgogICAgIAogICAg
IHZvaWQgc2V0QWxsb3dTdGFsZVJlc291cmNlcyhib29sIGFsbG93U3RhbGVSZXNvdXJjZXMpIHsg
bV9hbGxvd1N0YWxlUmVzb3VyY2VzID0gYWxsb3dTdGFsZVJlc291cmNlczsgfQogCi0gICAgdm9p
ZCBpbmNyZW1lbnRSZXF1ZXN0Q291bnQoKTsKLSAgICB2b2lkIGRlY3JlbWVudFJlcXVlc3RDb3Vu
dCgpOworICAgIHZvaWQgaW5jcmVtZW50UmVxdWVzdENvdW50KGNvbnN0IENhY2hlZFJlc291cmNl
Kik7CisgICAgdm9pZCBkZWNyZW1lbnRSZXF1ZXN0Q291bnQoY29uc3QgQ2FjaGVkUmVzb3VyY2Uq
KTsKICAgICBpbnQgcmVxdWVzdENvdW50KCk7CiAgICAgCiAgICAgdm9pZCBjbGVhclByZWxvYWRz
KCk7CkluZGV4OiBXZWJDb3JlL2xvYWRlci9sb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvbG9hZGVyL2xvYWRlci5jcHAJKHJldmlzaW9uIDYyNjkzKQorKysgV2ViQ29yZS9sb2FkZXIv
bG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODksNyArODksMTIgQEAgc3RhdGljIFJlc291
cmNlUmVxdWVzdDo6VGFyZ2V0VHlwZSBjYWNoZQogICAgICAgICByZXR1cm4gUmVzb3VyY2VSZXF1
ZXN0OjpUYXJnZXRJc0ZvbnRSZXNvdXJjZTsKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpJbWFn
ZVJlc291cmNlOgogICAgICAgICByZXR1cm4gUmVzb3VyY2VSZXF1ZXN0OjpUYXJnZXRJc0ltYWdl
OworI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQorICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6Okxp
bmtQcmVmZXRjaDoKKyAgICAgICAgcmV0dXJuIFJlc291cmNlUmVxdWVzdDo6VGFyZ2V0SXNQcmVm
ZXRjaDsKKyNlbmRpZgogICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1
cm4gUmVzb3VyY2VSZXF1ZXN0OjpUYXJnZXRJc1N1YnJlc291cmNlOwogfQogCkBAIC0xMTAsNiAr
MTE1LDEwIEBAIExvYWRlcjo6UHJpb3JpdHkgTG9hZGVyOjpkZXRlcm1pbmVQcmlvcmkKICAgICAg
ICAgICAgIHJldHVybiBNZWRpdW07CiAgICAgICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkltYWdl
UmVzb3VyY2U6CiAgICAgICAgICAgICByZXR1cm4gTG93OworI2lmIEVOQUJMRShMSU5LX1BSRUZF
VENIKQorICAgICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpMaW5rUHJlZmV0Y2g6CisgICAgICAg
ICAgICByZXR1cm4gVmVyeUxvdzsKKyNlbmRpZgogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICByZXR1cm4gTG93OwpAQCAtMTM5LDkgKzE0OCw5IEBAIHZvaWQgTG9hZGVyOjps
b2FkKERvY0xvYWRlciogZG9jTG9hZGVyLCAKICAgICBib29sIGhhZFJlcXVlc3RzID0gaG9zdC0+
aGFzUmVxdWVzdHMoKTsKICAgICBQcmlvcml0eSBwcmlvcml0eSA9IGRldGVybWluZVByaW9yaXR5
KHJlc291cmNlKTsKICAgICBob3N0LT5hZGRSZXF1ZXN0KHJlcXVlc3QsIHByaW9yaXR5KTsKLSAg
ICBkb2NMb2FkZXItPmluY3JlbWVudFJlcXVlc3RDb3VudCgpOworICAgIGRvY0xvYWRlci0+aW5j
cmVtZW50UmVxdWVzdENvdW50KHJlcXVlc3QtPmNhY2hlZFJlc291cmNlKCkpOwogCi0gICAgaWYg
KHByaW9yaXR5ID4gTG93IHx8ICF1cmwucHJvdG9jb2xJbkhUVFBGYW1pbHkoKSB8fCAhaGFkUmVx
dWVzdHMpIHsKKyAgICBpZiAocHJpb3JpdHkgPiBMb3cgfHwgIXVybC5wcm90b2NvbEluSFRUUEZh
bWlseSgpIHx8IChwcmlvcml0eSA9PSBMb3cgJiYgIWhhZFJlcXVlc3RzKSkgewogICAgICAgICAv
LyBUcnkgdG8gcmVxdWVzdCBpbXBvcnRhbnQgcmVzb3VyY2VzIGltbWVkaWF0ZWx5CiAgICAgICAg
IGhvc3QtPnNlcnZlUGVuZGluZ1JlcXVlc3RzKHByaW9yaXR5KTsKICAgICB9IGVsc2UgewpAQCAt
MzcwLDcgKzM3OSw3IEBAIHZvaWQgTG9hZGVyOjpIb3N0OjpzZXJ2ZVBlbmRpbmdSZXF1ZXN0cygK
ICAgICAgICAgICAgIHByaW50ZigiSE9TVCAlcyBDT1VOVCAlZCBMT0FESU5HICVzXG4iLCByZXNv
dXJjZVJlcXVlc3QudXJsKCkuaG9zdCgpLmxhdGluMSgpLmRhdGEoKSwgbV9yZXF1ZXN0c0xvYWRp
bmcuc2l6ZSgpLCByZXF1ZXN0LT5jYWNoZWRSZXNvdXJjZSgpLT51cmwoKS5sYXRpbjEoKS5kYXRh
KCkpOwogI2VuZGlmCiAgICAgICAgIH0gZWxzZSB7ICAgICAgICAgICAgCi0gICAgICAgICAgICBk
b2NMb2FkZXItPmRlY3JlbWVudFJlcXVlc3RDb3VudCgpOworICAgICAgICAgICAgZG9jTG9hZGVy
LT5kZWNyZW1lbnRSZXF1ZXN0Q291bnQocmVxdWVzdC0+Y2FjaGVkUmVzb3VyY2UoKSk7CiAgICAg
ICAgICAgICBkb2NMb2FkZXItPnNldExvYWRJblByb2dyZXNzKHRydWUpOwogICAgICAgICAgICAg
cmVxdWVzdC0+Y2FjaGVkUmVzb3VyY2UoKS0+ZXJyb3IoKTsKICAgICAgICAgICAgIGRvY0xvYWRl
ci0+c2V0TG9hZEluUHJvZ3Jlc3MoZmFsc2UpOwpAQCAtMzk0LDcgKzQwMyw3IEBAIHZvaWQgTG9h
ZGVyOjpIb3N0OjpkaWRGaW5pc2hMb2FkaW5nKFN1YnIKICAgICAvLyB0aGUgZG9jTG9hZGVyIHRo
YXQgaXQgd2lsbCBkZWxldGUgd2hlbiB0aGUgZG9jdW1lbnQgZ2V0cyBkZWxldGVkLgogICAgIFJl
ZlB0cjxEb2N1bWVudD4gcHJvdGVjdG9yKGRvY0xvYWRlci0+ZG9jKCkpOwogICAgIGlmICghcmVx
dWVzdC0+aXNNdWx0aXBhcnQoKSkKLSAgICAgICAgZG9jTG9hZGVyLT5kZWNyZW1lbnRSZXF1ZXN0
Q291bnQoKTsKKyAgICAgICAgZG9jTG9hZGVyLT5kZWNyZW1lbnRSZXF1ZXN0Q291bnQocmVxdWVz
dC0+Y2FjaGVkUmVzb3VyY2UoKSk7CiAKICAgICBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UgPSBy
ZXF1ZXN0LT5jYWNoZWRSZXNvdXJjZSgpOwogICAgIEFTU0VSVCghcmVzb3VyY2UtPnJlc291cmNl
VG9SZXZhbGlkYXRlKCkpOwpAQCAtNDQyLDcgKzQ1MSw3IEBAIHZvaWQgTG9hZGVyOjpIb3N0Ojpk
aWRGYWlsKFN1YnJlc291cmNlTG8KICAgICAvLyB0aGUgZG9jTG9hZGVyIHRoYXQgaXQgd2lsbCBk
ZWxldGUgd2hlbiB0aGUgZG9jdW1lbnQgZ2V0cyBkZWxldGVkLgogICAgIFJlZlB0cjxEb2N1bWVu
dD4gcHJvdGVjdG9yKGRvY0xvYWRlci0+ZG9jKCkpOwogICAgIGlmICghcmVxdWVzdC0+aXNNdWx0
aXBhcnQoKSkKLSAgICAgICAgZG9jTG9hZGVyLT5kZWNyZW1lbnRSZXF1ZXN0Q291bnQoKTsKKyAg
ICAgICAgZG9jTG9hZGVyLT5kZWNyZW1lbnRSZXF1ZXN0Q291bnQocmVxdWVzdC0+Y2FjaGVkUmVz
b3VyY2UoKSk7CiAKICAgICBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UgPSByZXF1ZXN0LT5jYWNo
ZWRSZXNvdXJjZSgpOwogICAgIApAQCAtNDg3LDcgKzQ5Niw3IEBAIHZvaWQgTG9hZGVyOjpIb3N0
OjpkaWRSZWNlaXZlUmVzcG9uc2UoU3UKICAgICAgICAgICAgIC8vIDMwNCBOb3QgbW9kaWZpZWQg
LyBVc2UgbG9jYWwgY29weQogICAgICAgICAgICAgbV9yZXF1ZXN0c0xvYWRpbmcucmVtb3ZlKGxv
YWRlcik7CiAgICAgICAgICAgICBsb2FkZXItPmNsZWFyQ2xpZW50KCk7Ci0gICAgICAgICAgICBy
ZXF1ZXN0LT5kb2NMb2FkZXIoKS0+ZGVjcmVtZW50UmVxdWVzdENvdW50KCk7CisgICAgICAgICAg
ICByZXF1ZXN0LT5kb2NMb2FkZXIoKS0+ZGVjcmVtZW50UmVxdWVzdENvdW50KHJlcXVlc3QtPmNh
Y2hlZFJlc291cmNlKCkpOwogCiAgICAgICAgICAgICAvLyBFeGlzdGluZyByZXNvdXJjZSBpcyBv
aywganVzdCB1c2UgaXQgdXBkYXRpbmcgdGhlIGV4cGlyYXRpb24gdGltZS4KICAgICAgICAgICAg
IGNhY2hlKCktPnJldmFsaWRhdGlvblN1Y2NlZWRlZChyZXNvdXJjZSwgcmVzcG9uc2UpOwpAQCAt
NTE5LDcgKzUyOCw3IEBAIHZvaWQgTG9hZGVyOjpIb3N0OjpkaWRSZWNlaXZlUmVzcG9uc2UoU3UK
ICAgICAgICAgcmVxdWVzdC0+c2V0SXNNdWx0aXBhcnQodHJ1ZSk7CiAgICAgICAgIAogICAgICAg
ICAvLyBXZSBkb24ndCBjb3VudCBtdWx0aVBhcnRzIGluIGEgRG9jTG9hZGVyJ3MgcmVxdWVzdCBj
b3VudAotICAgICAgICByZXF1ZXN0LT5kb2NMb2FkZXIoKS0+ZGVjcmVtZW50UmVxdWVzdENvdW50
KCk7CisgICAgICAgIHJlcXVlc3QtPmRvY0xvYWRlcigpLT5kZWNyZW1lbnRSZXF1ZXN0Q291bnQo
cmVxdWVzdC0+Y2FjaGVkUmVzb3VyY2UoKSk7CiAKICAgICAgICAgLy8gSWYgd2UgZ2V0IGEgbXVs
dGlwYXJ0IHJlc3BvbnNlLCB3ZSBtdXN0IGhhdmUgYSBoYW5kbGUKICAgICAgICAgQVNTRVJUKGxv
YWRlci0+aGFuZGxlKCkpOwpAQCAtNTgyLDcgKzU5MSw3IEBAIHZvaWQgTG9hZGVyOjpIb3N0Ojpj
YW5jZWxQZW5kaW5nUmVxdWVzdHMKICAgICAgICAgaWYgKHJlcXVlc3QtPmRvY0xvYWRlcigpID09
IGRvY0xvYWRlcikgewogICAgICAgICAgICAgY2FjaGUoKS0+cmVtb3ZlKHJlcXVlc3QtPmNhY2hl
ZFJlc291cmNlKCkpOwogICAgICAgICAgICAgZGVsZXRlIHJlcXVlc3Q7Ci0gICAgICAgICAgICBk
b2NMb2FkZXItPmRlY3JlbWVudFJlcXVlc3RDb3VudCgpOworICAgICAgICAgICAgZG9jTG9hZGVy
LT5kZWNyZW1lbnRSZXF1ZXN0Q291bnQocmVxdWVzdC0+Y2FjaGVkUmVzb3VyY2UoKSk7CiAgICAg
ICAgIH0gZWxzZQogICAgICAgICAgICAgcmVtYWluaW5nLmFwcGVuZChyZXF1ZXN0KTsKICAgICB9
CkluZGV4OiBXZWJDb3JlL2xvYWRlci9sb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xv
YWRlci9sb2FkZXIuaAkocmV2aXNpb24gNjI2OTMpCisrKyBXZWJDb3JlL2xvYWRlci9sb2FkZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtNDgsOCArNDgsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ICAgICAgICAgdm9pZCBjYW5jZWxSZXF1ZXN0cyhEb2NMb2FkZXIqKTsKICAgICAgICAgCi0gICAg
ICAgIGVudW0gUHJpb3JpdHkgeyBMb3csIE1lZGl1bSwgSGlnaCB9OwotICAgICAgICB2b2lkIHNl
cnZlUGVuZGluZ1JlcXVlc3RzKFByaW9yaXR5IG1pbmltdW1Qcmlvcml0eSA9IExvdyk7CisgICAg
ICAgIGVudW0gUHJpb3JpdHkgeyBWZXJ5TG93LCBMb3csIE1lZGl1bSwgSGlnaCB9OworICAgICAg
ICB2b2lkIHNlcnZlUGVuZGluZ1JlcXVlc3RzKFByaW9yaXR5IG1pbmltdW1Qcmlvcml0eSA9IFZl
cnlMb3cpOwogCiAgICAgICAgIGJvb2wgaXNTdXNwZW5kaW5nUGVuZGluZ1JlcXVlc3RzKCkgeyBy
ZXR1cm4gbV9pc1N1c3BlbmRpbmdQZW5kaW5nUmVxdWVzdHM7IH0KICAgICAgICAgdm9pZCBzdXNw
ZW5kUGVuZGluZ1JlcXVlc3RzKCk7CkBAIC03Niw3ICs3Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgICAgIHZvaWQgYWRkUmVxdWVzdChSZXF1ZXN0KiwgUHJpb3JpdHkpOwogICAg
ICAgICAgICAgdm9pZCBub25DYWNoZVJlcXVlc3RJbkZsaWdodCgpOwogICAgICAgICAgICAgdm9p
ZCBub25DYWNoZVJlcXVlc3RDb21wbGV0ZSgpOwotICAgICAgICAgICAgdm9pZCBzZXJ2ZVBlbmRp
bmdSZXF1ZXN0cyhQcmlvcml0eSBtaW5pbXVtUHJpb3JpdHkgPSBMb3cpOworICAgICAgICAgICAg
dm9pZCBzZXJ2ZVBlbmRpbmdSZXF1ZXN0cyhQcmlvcml0eSBtaW5pbXVtUHJpb3JpdHkgPSBWZXJ5
TG93KTsKICAgICAgICAgICAgIHZvaWQgY2FuY2VsUmVxdWVzdHMoRG9jTG9hZGVyKik7CiAgICAg
ICAgICAgICBib29sIGhhc1JlcXVlc3RzKCkgY29uc3Q7CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaAkocmV2aXNpb24gNjI2OTMpCisr
KyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC02Myw3ICs2Myw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAg
IFRhcmdldElzT2JqZWN0LAogICAgICAgICAgICAgVGFyZ2V0SXNNZWRpYSwKICAgICAgICAgICAg
IFRhcmdldElzV29ya2VyLAotICAgICAgICAgICAgVGFyZ2V0SXNTaGFyZWRXb3JrZXIKKyAgICAg
ICAgICAgIFRhcmdldElzU2hhcmVkV29ya2VyLAorICAgICAgICAgICAgVGFyZ2V0SXNQcmVmZXRj
aCwKICAgICAgICAgfTsKIAogICAgICAgICBzdGF0aWMgUGFzc093blB0cjxSZXNvdXJjZVJlcXVl
c3Q+IGFkb3B0KFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPik7Cklu
ZGV4OiBXZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL0NoYW5nZUxvZwko
cmV2aXNpb24gNjI2OTkpCisrKyBXZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDEyIEBACisyMDEwLTA3LTA3ICBHYXZpbiBQZXRlcnMgIDxnYXZpbnBAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGFk
ZCBzdXBwb3J0IGZvciBsaW5rIHByZWZldGNoaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjUyCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9G
ZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzoKKwogMjAxMC0wNy0wNyAgU2FtIFdlaW5pZyAgPHNhbUB3
ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KSW5kZXg6
IFdlYktpdDIvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwkocmV2
aXNpb24gNjI2OTMpCisrKyBXZWJLaXQyL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhj
Y29uZmlnCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw4IEBACiAKIC8vIFNldCBhbnkgRU5B
QkxFX0ZFQVRVUkVfTkFNRSBtYWNybyB0byBhbiBlbXB0eSBzdHJpbmcgdG8gZGlzYWJsZSB0aGF0
IGZlYXR1cmUuCiAKK0VOQUJMRV9MSU5LX1BSRUZFVENIID0gOworCiBFTkFCTEVfM0RfQ0FOVkFT
ID0gJChFTkFCTEVfM0RfQ0FOVkFTXyQoVEFSR0VUX01BQ19PU19YX1ZFUlNJT05fTUFKT1IpKTsK
IEVOQUJMRV8zRF9DQU5WQVNfMTA1MCA9IEVOQUJMRV8zRF9DQU5WQVM7CiBFTkFCTEVfM0RfQ0FO
VkFTXzEwNjAgPSBFTkFCTEVfM0RfQ0FOVkFTOwpAQCAtNDcsNiArNDksNyBAQCBFTkFCTEVfQ0xJ
RU5UX0JBU0VEX0dFT0xPQ0FUSU9OID0gRU5BQkxFCiBFTkFCTEVfREFUQUJBU0UgPSBFTkFCTEVf
REFUQUJBU0U7CiBFTkFCTEVfREFUQUdSSUQgPSA7CiBFTkFCTEVfREFUQUxJU1QgPSBFTkFCTEVf
REFUQUxJU1Q7CitFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OID0gOwogRU5BQkxFX0RJUkVDVE9S
WV9VUExPQUQgPSA7CiBFTkFCTEVfRE9NX1NUT1JBR0UgPSBFTkFCTEVfRE9NX1NUT1JBR0U7CiBF
TkFCTEVfRVZFTlRTT1VSQ0UgPSBFTkFCTEVfRVZFTlRTT1VSQ0U7CkBAIC01NSw2ICs1OCw3IEBA
IEVOQUJMRV9GSUxFX1JFQURFUiA9IEVOQUJMRV9GSUxFX1JFQURFUjsKIEVOQUJMRV9GSUxFX1dS
SVRFUiA9IDsKIEVOQUJMRV9HRU9MT0NBVElPTiA9IEVOQUJMRV9HRU9MT0NBVElPTjsKIEVOQUJM
RV9JQ09OREFUQUJBU0UgPSBFTkFCTEVfSUNPTkRBVEFCQVNFOworRU5BQkxFX0lNQUdFX1JFU0la
RVIgPSA7CiBFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSA9IDsKIEVOQUJMRV9JTlBVVF9TUEVFQ0gg
PSA7CiBFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUiA9IEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVH
R0VSOwpAQCAtODIsNSArODYsNCBAQCBFTkFCTEVfWEhUTUxNUCA9IDsKIEVOQUJMRV9YUEFUSCA9
IEVOQUJMRV9YUEFUSDsKIEVOQUJMRV9YU0xUID0gRU5BQkxFX1hTTFQ7CiAKLUZFQVRVUkVfREVG
SU5FUyA9ICQoRU5BQkxFXzNEX0NBTlZBUykgJChFTkFCTEVfM0RfUkVOREVSSU5HKSAkKEVOQUJM
RV9CTE9CX1NMSUNFKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfQ0xJRU5U
X0JBU0VEX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9EQVRBQkFTRSkgJChFTkFCTEVfREFUQUdSSUQp
ICQoRU5BQkxFX0RBVEFMSVNUKSAkKEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEKSAkKEVOQUJMRV9E
SVJFQ1RPUllfVVBMT0FEKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVfRVZFTlRTT1VS
Q0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZJTEVfUkVBREVSKSAkKEVOQUJMRV9GSUxF
X1dSSVRFUikgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChF
TkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSU5QVVRfU1BFRUNIKSAkKEVOQUJMRV9K
QVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FVEVSX1RBRykg
JChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05T
KSAkKEVOQUJMRV9QUk9HUkVTU19UQUcpICQoRU5BQkxFX1JVQlkpICQoRU5BQkxFX1NBTkRCT1gp
ICQoRU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19BTklN
QVRJT04pICQoRU5BQkxFX1NWR19BU19JTUFHRSkgJChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJ
TkdTKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1NWR19GT1JFSUdOX09CSkVDVCkgJChF
TkFCTEVfU1ZHX1VTRSkgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVO
QUJMRV9XRUJfVElNSU5HKSAkKEVOQUJMRV9XTUwpICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxF
X1hIVE1MTVApICQoRU5BQkxFX1hQQVRIKSAkKEVOQUJMRV9YU0xUKTsKLQorRkVBVFVSRV9ERUZJ
TkVTID0gJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfM0RfQ0FOVkFTKSAkKEVOQUJM
RV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0JMT0JfU0xJQ0UpICQoRU5BQkxFX0NIQU5ORUxfTUVT
U0FHSU5HKSAkKEVOQUJMRV9DTElFTlRfQkFTRURfR0VPTE9DQVRJT04pICQoRU5BQkxFX0RBVEFC
QVNFKSAkKEVOQUJMRV9EQVRBR1JJRCkgJChFTkFCTEVfREFUQUxJU1QpICQoRU5BQkxFX0RFVklD
RV9PUklFTlRBVElPTikgJChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCkgJChFTkFCTEVfRE9NX1NU
T1JBR0UpICQoRU5BQkxFX0VWRU5UU09VUkNFKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9G
SUxFX1JFQURFUikgJChFTkFCTEVfRklMRV9XUklURVIpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAk
KEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lNQUdFX1JFU0laRVIpICQoRU5BQkxFX0lO
REVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSkFWQVNDUklQ
VF9ERUJVR0dFUikgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRVRFUl9UQUcpICQoRU5BQkxF
X05PVElGSUNBVElPTlMpICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFC
TEVfUFJPR1JFU1NfVEFHKSAkKEVOQUJMRV9SVUJZKSAkKEVOQUJMRV9TQU5EQk9YKSAkKEVOQUJM
RV9TSEFSRURfV09SS0VSUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAk
KEVOQUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChF
TkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NW
R19VU0UpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VC
X1RJTUlORykgJChFTkFCTEVfV01MKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YSFRNTE1Q
KSAkKEVOQUJMRV9YUEFUSCkgJChFTkFCTEVfWFNMVCk7CkluZGV4OiBXZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlz
aW9uIDYyNjk5KQorKysgV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDEwLTA3LTA3ICBHYXZpbiBQZXRlcnMgIDxnYXZpbnBAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IGFkZCBzdXBwb3J0IGZvciBsaW5rIHByZWZldGNoaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjUyCisKKyAgICAgICAgKiBwdWJsaWMvV2ViVVJM
UmVxdWVzdC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxSZXF1ZXN0OjopOgorCiAyMDEwLTA3
LTA3ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
QW5kZXJzIENhcmxzc29uLgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVUkxSZXF1
ZXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVUkxSZXF1ZXN0
LmgJKHJldmlzaW9uIDYyNjkzKQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVUkxSZXF1
ZXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDEwIEBAIHB1YmxpYzoKICAgICAgICAg
VGFyZ2V0SXNPYmplY3QgPSA3LAogICAgICAgICBUYXJnZXRJc01lZGlhID0gOCwKICAgICAgICAg
VGFyZ2V0SXNXb3JrZXIgPSA5LAotICAgICAgICBUYXJnZXRJc1NoYXJlZFdvcmtlciA9IDEwCisg
ICAgICAgIFRhcmdldElzU2hhcmVkV29ya2VyID0gMTAsCisjaWYgRU5BQkxFRChMSU5LX1BSRUZF
VENIKQorICAgICAgICBUYXJnZXRJc1ByZWZldGNoID0gMTEsCisjZW5kaWYKICAgICB9OwogCiAg
ICAgfldlYlVSTFJlcXVlc3QoKSB7IHJlc2V0KCk7IH0KSW5kZXg6IFdlYktpdC9tYWMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2MjY5OSkK
KysrIFdlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTAtMDctMDcgIEdhdmluIFBldGVycyAgPGdhdmlucEBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgYWRkIHN1cHBvcnQgZm9y
IGxpbmsgcHJlZmV0Y2hpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTM2NTIKKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVz
LnhjY29uZmlnOgorCiAyMDEwLTA3LTA3ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgpJbmRleDogV2ViS2l0L21hYy9D
b25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCShyZXZpc2lvbiA2
MjY5MykKKysrIFdlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25m
aWcJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDggQEAKIAogLy8gU2V0IGFueSBFTkFCTEVf
RkVBVFVSRV9OQU1FIG1hY3JvIHRvIGFuIGVtcHR5IHN0cmluZyB0byBkaXNhYmxlIHRoYXQgZmVh
dHVyZS4KIAorRU5BQkxFX0xJTktfUFJFRkVUQ0ggPSA7CisKIEVOQUJMRV8zRF9DQU5WQVMgPSAk
KEVOQUJMRV8zRF9DQU5WQVNfJChUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUikpOwogRU5B
QkxFXzNEX0NBTlZBU18xMDUwID0gRU5BQkxFXzNEX0NBTlZBUzsKIEVOQUJMRV8zRF9DQU5WQVNf
MTA2MCA9IEVOQUJMRV8zRF9DQU5WQVM7CkBAIC04NCw0ICs4Niw0IEBAIEVOQUJMRV9YSFRNTE1Q
ID0gOwogRU5BQkxFX1hQQVRIID0gRU5BQkxFX1hQQVRIOwogRU5BQkxFX1hTTFQgPSBFTkFCTEVf
WFNMVDsKIAotRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfQ0FOVkFTKSAkKEVOQUJMRV8z
RF9SRU5ERVJJTkcpICQoRU5BQkxFX0JMT0JfU0xJQ0UpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FH
SU5HKSAkKEVOQUJMRV9DTElFTlRfQkFTRURfR0VPTE9DQVRJT04pICQoRU5BQkxFX0RBVEFCQVNF
KSAkKEVOQUJMRV9EQVRBR1JJRCkgJChFTkFCTEVfREFUQUxJU1QpICQoRU5BQkxFX0RFVklDRV9P
UklFTlRBVElPTikgJChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCkgJChFTkFCTEVfRE9NX1NUT1JB
R0UpICQoRU5BQkxFX0VWRU5UU09VUkNFKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GSUxF
X1JFQURFUikgJChFTkFCTEVfRklMRV9XUklURVIpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVO
QUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lNQUdFX1JFU0laRVIpICQoRU5BQkxFX0lOREVY
RURfREFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSkFWQVNDUklQVF9E
RUJVR0dFUikgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRVRFUl9UQUcpICQoRU5BQkxFX05P
VElGSUNBVElPTlMpICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVf
UFJPR1JFU1NfVEFHKSAkKEVOQUJMRV9SVUJZKSAkKEVOQUJMRV9TQU5EQk9YKSAkKEVOQUJMRV9T
SEFSRURfV09SS0VSUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVO
QUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFC
TEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19V
U0UpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJ
TUlORykgJChFTkFCTEVfV01MKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YSFRNTE1QKSAk
KEVOQUJMRV9YUEFUSCkgJChFTkFCTEVfWFNMVCk7CitGRUFUVVJFX0RFRklORVMgPSAkKEVOQUJM
RV9MSU5LX1BSRUZFVENIKSAkKEVOQUJMRV8zRF9DQU5WQVMpICQoRU5BQkxFXzNEX1JFTkRFUklO
RykgJChFTkFCTEVfQkxPQl9TTElDRSkgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5B
QkxFX0NMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikgJChFTkFCTEVfREFUQUJBU0UpICQoRU5BQkxF
X0RBVEFHUklEKSAkKEVOQUJMRV9EQVRBTElTVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9O
KSAkKEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFC
TEVfRVZFTlRTT1VSQ0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZJTEVfUkVBREVSKSAk
KEVOQUJMRV9GSUxFX1dSSVRFUikgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lDT05E
QVRBQkFTRSkgJChFTkFCTEVfSU1BR0VfUkVTSVpFUikgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFT
RSkgJChFTkFCTEVfSU5QVVRfU1BFRUNIKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAk
KEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FVEVSX1RBRykgJChFTkFCTEVfTk9USUZJQ0FUSU9O
UykgJChFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKSAkKEVOQUJMRV9QUk9HUkVTU19U
QUcpICQoRU5BQkxFX1JVQlkpICQoRU5BQkxFX1NBTkRCT1gpICQoRU5BQkxFX1NIQVJFRF9XT1JL
RVJTKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19BTklNQVRJT04pICQoRU5BQkxFX1NWR19B
U19JTUFHRSkgJChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9TVkdfRk9O
VFMpICQoRU5BQkxFX1NWR19GT1JFSUdOX09CSkVDVCkgJChFTkFCTEVfU1ZHX1VTRSkgJChFTkFC
TEVfVklERU8pICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVO
QUJMRV9XTUwpICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hIVE1MTVApICQoRU5BQkxFX1hQ
QVRIKSAkKEVOQUJMRV9YU0xUKTsKSW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDYyNjk5KQorKysgV2ViS2l0
VG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTAtMDct
MDcgIEdhdmluIFBldGVycyAgPGdhdmlucEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgYWRkIHN1cHBvcnQgZm9yIGxpbmsgcHJl
ZmV0Y2hpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTM2NTIKKworICAgICAgICAqIFNjcmlwdHMvYnVpbGQtd2Via2l0OgorCiAyMDEwLTA3LTA3ICBL
ZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29tPgogCiAgICAgICAgIFt3eF0g
QnVpbGQgZml4LiBwYWdlUHJvcGVydHkgbmVlZHMgdG8gcmV0dXJuIGEgdmFsdWUuCkluZGV4OiBX
ZWJLaXRUb29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29s
cy9TY3JpcHRzL2J1aWxkLXdlYmtpdAkocmV2aXNpb24gNjI2OTMpCisrKyBXZWJLaXRUb29scy9T
Y3JpcHRzL2J1aWxkLXdlYmtpdAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCBteSAk
cHJlZml4UGF0aDsKIG15ICRtYWtlQXJnczsKIG15ICRzdGFydFRpbWUgPSB0aW1lKCk7CiAKLW15
ICgkdGhyZWVEQ2FudmFzU3VwcG9ydCwgJHRocmVlRFJlbmRlcmluZ1N1cHBvcnQsICRjaGFubmVs
TWVzc2FnaW5nU3VwcG9ydCwgJGNsaWVudEJhc2VkR2VvbG9jYXRpb25TdXBwb3J0LCAkZGF0YWJh
c2VTdXBwb3J0LCAkZGF0YWdyaWRTdXBwb3J0LCAkZGF0YWxpc3RTdXBwb3J0LAorbXkgKCRsaW5r
UHJlZmV0Y2hTdXBwb3J0LCAkdGhyZWVEQ2FudmFzU3VwcG9ydCwgJHRocmVlRFJlbmRlcmluZ1N1
cHBvcnQsICRjaGFubmVsTWVzc2FnaW5nU3VwcG9ydCwgJGNsaWVudEJhc2VkR2VvbG9jYXRpb25T
dXBwb3J0LCAkZGF0YWJhc2VTdXBwb3J0LCAkZGF0YWdyaWRTdXBwb3J0LCAkZGF0YWxpc3RTdXBw
b3J0LAogICAgICRkb21TdG9yYWdlU3VwcG9ydCwgJGV2ZW50c291cmNlU3VwcG9ydCwgJGZpbHRl
cnNTdXBwb3J0LCAkZ2VvbG9jYXRpb25TdXBwb3J0LCAkaWNvbkRhdGFiYXNlU3VwcG9ydCwgJGlt
YWdlUmVzaXplclN1cHBvcnQsICRpbmRleGVkRGF0YWJhc2VTdXBwb3J0LCAkaW5wdXRTcGVlY2hT
dXBwb3J0LAogICAgICRqYXZhU2NyaXB0RGVidWdnZXJTdXBwb3J0LCAkbWF0aG1sU3VwcG9ydCwg
JG9mZmxpbmVXZWJBcHBsaWNhdGlvblN1cHBvcnQsICRydWJ5U3VwcG9ydCwgJHN5c3RlbU1hbGxv
Y1N1cHBvcnQsICRzYW5kYm94U3VwcG9ydCwgJHNoYXJlZFdvcmtlcnNTdXBwb3J0LAogICAgICRz
dmdTdXBwb3J0LCAkc3ZnQW5pbWF0aW9uU3VwcG9ydCwgJHN2Z0FzSW1hZ2VTdXBwb3J0LCAkc3Zn
RE9NT2JqQ0JpbmRpbmdzU3VwcG9ydCwgJHN2Z0ZvbnRzU3VwcG9ydCwKQEAgLTY0LDYgKzY0LDkg
QEAgbXkgKCR0aHJlZURDYW52YXNTdXBwb3J0LCAkdGhyZWVEUmVuZGVyaQogICAgICRmaWxlUmVh
ZGVyU3VwcG9ydCwgJGZpbGVXcml0ZXJTdXBwb3J0LCAkZGlyZWN0b3J5VXBsb2FkU3VwcG9ydCk7
CiAKIG15IEBmZWF0dXJlcyA9ICgKKyAgICB7IG9wdGlvbiA9PiAibGluay1wcmVmZXRjaCIsIGRl
c2MgPT4gIlRvZ2dsZSBwcmUgZmV0Y2hpbmcgc3VwcG9ydCIsCisgICAgICBkZWZpbmUgPT4gIkVO
QUJMRV9MSU5LX1BSRUZFVENIIiwgZGVmYXVsdCA9PiAwLCB2YWx1ZSA9PiBcJGxpbmtQcmVmZXRj
aFN1cHBvcnQgfSwKKwogICAgIHsgb3B0aW9uID0+ICIzZC1jYW52YXMiLCBkZXNjID0+ICJUb2dn
bGUgM0QgY2FudmFzIHN1cHBvcnQiLAogICAgICAgZGVmaW5lID0+ICJFTkFCTEVfM0RfQ0FOVkFT
IiwgZGVmYXVsdCA9PiAoaXNBcHBsZU1hY1dlYktpdCgpICYmICFpc1RpZ2VyKCkpLCB2YWx1ZSA9
PiBcJHRocmVlRENhbnZhc1N1cHBvcnQgfSwKIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNjI2OTkpCisr
KyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAor
MjAxMC0wNy0wNyAgR2F2aW4gUGV0ZXJzICA8Z2F2aW5wQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBhZGQgc3VwcG9ydCBmb3Ig
bGluayBwcmVmZXRjaGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MzY1MgorCisgICAgICAgICogZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZl
dGNoLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTExpbmtFbGVt
ZW50L3ByZWZldGNoLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxMaW5rRWxl
bWVudC9wcmVmZXRjaC5saW5rOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2tpcHBl
ZDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS9x
dC9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9Ta2lwcGVkOgorCiAyMDEwLTA3LTA3
ICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgQmV0aCBEYWtpbi4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxl
bWVudC9wcmVmZXRjaC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNSBAQAorVGhpcyB0ZXN0IHJlcXVpcmVzIER1
bXBSZW5kZXJUcmVlIHRvIHNlZSB0aGUgbG9nIG9mIHdoYXQgcmVzb3VyY2VzIGFyZSBsb2FkZWQu
CisKKzxsaW5rIGhyZWY9InByZWZldGNoLmxpbmsiIHJlbD0icHJlZmV0Y2giPgorCisKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC5o
dG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50
L3ByZWZldGNoLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMgQEAKKzxib2R5PgorPHNj
cmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBSZXNvdXJjZVJlc3BvbnNl
TUlNRVR5cGVzKCk7CisgICAgc2V0VGltZW91dCgibGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5
RG9uZSgpIiw1MCk7Cit9Cis8L3NjcmlwdD4KK1RoaXMgdGVzdCByZXF1aXJlcyBEdW1wUmVuZGVy
VHJlZSB0byBzZWUgdGhlIGxvZyBvZiB3aGF0IHJlc291cmNlcyBhcmUgbG9hZGVkLgorPHNjcmlw
dD5kb2N1bWVudC53cml0ZSgiPHBsYWludGV4dD4iKTs8L3NjcmlwdD4KKzxsaW5rIGhyZWY9InBy
ZWZldGNoLmxpbmsiIHJlbD0icHJlZmV0Y2giPgorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0Y2gubGluawo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0Y2gubGluawkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC5saW5rCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxIEBACitUaGlzIGlzIHRoZSBsaW5rIHRoYXQgaXMgZmV0Y2hlZCBi
eSB0aGUgcHJlZmV0Y2gtb25sb2FkIHRlc3QKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2d0
ay9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVk
CShyZXZpc2lvbiA2MjY5MykKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCSh3
b3JraW5nIGNvcHkpCkBAIC01NzU0LDYgKzU3NTQsOSBAQCBmYXN0L2Zvcm1zL3NsaWRlci10cmFu
c2Zvcm1lZC5odG1sCiBmYXN0L2Zvcm1zL3NsaWRlci1tb3VzZS1ldmVudHMuaHRtbAogZmFzdC9m
b3Jtcy9zbGlkZXItem9vbWVkLmh0bWwKIAorIyBMaW5rIHByZWZldGNoIGlzIGRpc2FibGVkIGJ5
IGRlZmF1bHQKKyNmYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0Y2guaHRtbAorCiAjIExh
eW91dFRlc3RDb250cm9sbGVyOjpwYWdlUHJvcGVydHkgaXMgbm90IGltcGxlbWVudGVkIGZvciBH
VEsgeWV0LgogcHJpbnRpbmcvcGFnZS1ydWxlLXNlbGVjdGlvbi5odG1sCiAKSW5kZXg6IExheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9Ta2lwcGVkCShyZXZpc2lvbiA2MjY5MykKKysrIExheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9Ta2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC0yODIsNiArMjgyLDkgQEAgc3RvcmFn
ZS9pbmRleGVkZGIKIGZhc3QvZG9tL0RldmljZU9yaWVudGF0aW9uCiBmYXN0L2RvbS9XaW5kb3cv
d2luZG93LXByb3BlcnRpZXMtZGV2aWNlLW9yaWVudGF0aW9uLmh0bWwKIAorIyBMaW5rIHByZWZl
dGNoIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQKKyNmYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJl
ZmV0Y2guaHRtbAorCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
OTkwOAogZmFzdC9kb20vR2VvbG9jYXRpb24vbWF4aW11bS1hZ2UuaHRtbAogCkluZGV4OiBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3Bs
YXRmb3JtL3F0L1NraXBwZWQJKHJldmlzaW9uIDYyNjkzKQorKysgTGF5b3V0VGVzdHMvcGxhdGZv
cm0vcXQvU2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAtNTQwNiw2ICs1NDA2LDkgQEAgc3ZnL1cz
Qy1TVkctMS4xL2ZpbHRlcnMtbGlnaHQtMDQtZi5zdmcKICMgPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0g
IwogZmFzdC9kb20vR2VvbG9jYXRpb24vY2FsbGJhY2stdG8tcmVtb3RlLWNvbnRleHQyLmh0bWwK
IAorIyBMaW5rIHByZWZldGNoIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQKKyNmYXN0L2RvbS9IVE1M
TGlua0VsZW1lbnQvcHJlZmV0Y2guaHRtbAorCiAjIEZhaWxpbmcgYWZ0ZXIgZW5hYmxpbmcgSFRN
TDUgcGFyc2VyIGluIHI2MTIzNAogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDA2NjEKIGZhc3QvZW5jb2RpbmcvamFwYW5lc2UtZW5jb2RpbmctbWl4Lmh0bWwKSW5k
ZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCShyZXZpc2lvbiA2MjY5MykKKysrIExheW91dFRl
c3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC05MDAsNiArOTAwLDkg
QEAgc3RvcmFnZS9pbmRleGVkZGIKIGZhc3QvZG9tL0RldmljZU9yaWVudGF0aW9uCiBmYXN0L2Rv
bS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMtZGV2aWNlLW9yaWVudGF0aW9uLmh0bWwKIAorIyBM
aW5rIHByZWZldGNoIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQKK2Zhc3QvZG9tL0hUTUxMaW5rRWxl
bWVudC9wcmVmZXRjaC5odG1sCisKICMgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhZ2VQcm9wZXJ0
eSBpcyBub3QgaW1wbGVtZW50ZWQgZm9yIFdJTiB5ZXQuCiBwcmludGluZy9wYWdlLXJ1bGUtc2Vs
ZWN0aW9uLmh0bWwKIAo=
</data>
<flag name="review"
          id="48542"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60822</attachid>
            <date>2010-07-07 18:48:59 -0700</date>
            <delta_ts>2010-07-08 05:33:38 -0700</delta_ts>
            <desc>remediated to abarth&apos;s comments</desc>
            <filename>3652-per-abarth.txt</filename>
            <type>text/plain</type>
            <size>38035</size>
            <attacher name="Gavin Peters">gavinp</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDYyNjk5KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTAtMDctMDcgIEdhdmluIFBl
dGVycyAgPGdhdmlucEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgYWRkIHN1cHBvcnQgZm9yIGxpbmsgcHJlZmV0Y2hpbmcKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2NTIKKworICAg
ICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgorCiAyMDEwLTA3
LTA3ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgU2FtIFdlaW5pZy4KSW5kZXg6IEphdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1
cmVEZWZpbmVzLnhjY29uZmlnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0NvbmZpZ3Vy
YXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCShyZXZpc2lvbiA2MjY5MykKKysrIEphdmFT
Y3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCSh3b3JraW5n
IGNvcHkpCkBAIC0zMSw2ICszMSw4IEBACiAKIC8vIFNldCBhbnkgRU5BQkxFX0ZFQVRVUkVfTkFN
RSBtYWNybyB0byBhbiBlbXB0eSBzdHJpbmcgdG8gZGlzYWJsZSB0aGF0IGZlYXR1cmUuCiAKK0VO
QUJMRV9MSU5LX1BSRUZFVENIID0gOworCiBFTkFCTEVfM0RfQ0FOVkFTID0gJChFTkFCTEVfM0Rf
Q0FOVkFTXyQoVEFSR0VUX01BQ19PU19YX1ZFUlNJT05fTUFKT1IpKTsKIEVOQUJMRV8zRF9DQU5W
QVNfMTA1MCA9IEVOQUJMRV8zRF9DQU5WQVM7CiBFTkFCTEVfM0RfQ0FOVkFTXzEwNjAgPSBFTkFC
TEVfM0RfQ0FOVkFTOwpAQCAtODQsNSArODYsNCBAQCBFTkFCTEVfWEhUTUxNUCA9IDsKIEVOQUJM
RV9YUEFUSCA9IEVOQUJMRV9YUEFUSDsKIEVOQUJMRV9YU0xUID0gRU5BQkxFX1hTTFQ7CiAKLUZF
QVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX0NBTlZBUykgJChFTkFCTEVfM0RfUkVOREVSSU5H
KSAkKEVOQUJMRV9CTE9CX1NMSUNFKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFC
TEVfQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9EQVRBQkFTRSkgJChFTkFCTEVf
REFUQUdSSUQpICQoRU5BQkxFX0RBVEFMSVNUKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04p
ICQoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQpICQoRU5BQkxFX0RPTV9TVE9SQUdFKSAkKEVOQUJM
RV9FVkVOVFNPVVJDRSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfRklMRV9SRUFERVIpICQo
RU5BQkxFX0ZJTEVfV1JJVEVSKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSUNPTkRB
VEFCQVNFKSAkKEVOQUJMRV9JTUFHRV9SRVNJWkVSKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNF
KSAkKEVOQUJMRV9JTlBVVF9TUEVFQ0gpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQo
RU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVURVJfVEFHKSAkKEVOQUJMRV9OT1RJRklDQVRJT05T
KSAkKEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpICQoRU5BQkxFX1BST0dSRVNTX1RB
RykgJChFTkFCTEVfUlVCWSkgJChFTkFCTEVfU0FOREJPWCkgJChFTkFCTEVfU0hBUkVEX1dPUktF
UlMpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0FOSU1BVElPTikgJChFTkFCTEVfU1ZHX0FT
X0lNQUdFKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpICQoRU5BQkxFX1NWR19GT05U
UykgJChFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUKSAkKEVOQUJMRV9TVkdfVVNFKSAkKEVOQUJM
RV9WSURFTykgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5B
QkxFX1dNTCkgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWEhUTUxNUCkgJChFTkFCTEVfWFBB
VEgpICQoRU5BQkxFX1hTTFQpOwotCitGRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV9MSU5LX1BS
RUZFVENIKSAkKEVOQUJMRV8zRF9DQU5WQVMpICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFC
TEVfQkxPQl9TTElDRSkgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NMSUVO
VF9CQVNFRF9HRU9MT0NBVElPTikgJChFTkFCTEVfREFUQUJBU0UpICQoRU5BQkxFX0RBVEFHUklE
KSAkKEVOQUJMRV9EQVRBTElTVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJM
RV9ESVJFQ1RPUllfVVBMT0FEKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVfRVZFTlRT
T1VSQ0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZJTEVfUkVBREVSKSAkKEVOQUJMRV9G
SUxFX1dSSVRFUikgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFTRSkg
JChFTkFCTEVfSU1BR0VfUkVTSVpFUikgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFC
TEVfSU5QVVRfU1BFRUNIKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9N
QVRITUwpICQoRU5BQkxFX01FVEVSX1RBRykgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFC
TEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKSAkKEVOQUJMRV9QUk9HUkVTU19UQUcpICQoRU5B
QkxFX1JVQlkpICQoRU5BQkxFX1NBTkRCT1gpICQoRU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAkKEVO
QUJMRV9TVkcpICQoRU5BQkxFX1NWR19BTklNQVRJT04pICQoRU5BQkxFX1NWR19BU19JTUFHRSkg
JChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5B
QkxFX1NWR19GT1JFSUdOX09CSkVDVCkgJChFTkFCTEVfU1ZHX1VTRSkgJChFTkFCTEVfVklERU8p
ICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVOQUJMRV9XTUwp
ICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hIVE1MTVApICQoRU5BQkxFX1hQQVRIKSAkKEVO
QUJMRV9YU0xUKTsKSW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA2MjY5OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsNTIgQEAKKzIwMTAtMDctMDcgIEdhdmluIFBldGVycyAgPGdh
dmlucEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgYmFzZWQgbW9zdGx5IG9uIGEgcGF0Y2ggYnkgTGVvbiBDbGFya2UsIGxlb25j
bGFya2VAZ29vZ2xlLmNvbQorCisgICAgICAgIGFkZCBzdXBwb3J0IGZvciBsaW5rIHByZWZldGNo
aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjUy
CisKKyAgICAgICAgVGVzdDogZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLmh0bWwK
KworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgorICAg
ICAgICAqIGh0bWwvSFRNTExpbmtFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxM
aW5rRWxlbWVudDo6dG9rZW5pemVSZWxBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TExpbmtFbGVtZW50Ojpwcm9jZXNzKToKKyAgICAgICAgKiBodG1sL0hUTUxMaW5rRWxlbWVudC5o
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50OjpSZWxBdHRyaWJ1dGU6OlJlbEF0
dHJpYnV0ZSk6CisgICAgICAgICogbG9hZGVyL0NhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZVJlc291cmNlKToKKyAgICAgICAgKiBsb2FkZXIvQ2FjaGVkUmVzb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmRhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkUmVzb3VyY2U6OmRpZEFkZENsaWVudCk6CisgICAgICAgICogbG9hZGVyL0NhY2hl
ZFJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjplcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRSZXNvdXJjZTo6aXNQcmVmZXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNv
dXJjZTo6c2NoZWR1bGUpOgorICAgICAgICAqIGxvYWRlci9DYWNoZWRTY3JpcHQuY3BwOgorICAg
ICAgICAqIGxvYWRlci9DYWNoZWRTY3JpcHQuaDoKKyAgICAgICAgKiBsb2FkZXIvRG9jTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY0xvYWRlcjo6cmVxdWVzdExpbmtQcmVmZXRjaCk6
CisgICAgICAgIChXZWJDb3JlOjpEb2NMb2FkZXI6OmNhblJlcXVlc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jTG9hZGVyOjppbmNyZW1lbnRSZXF1ZXN0Q291bnQpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jTG9hZGVyOjpkZWNyZW1lbnRSZXF1ZXN0Q291bnQpOgorICAgICAgICAqIGxvYWRlci9E
b2NMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvbG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNhY2hlZFJlc291cmNlVHlwZVRvVGFyZ2V0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpM
b2FkZXI6OmRldGVybWluZVByaW9yaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRlcjo6bG9h
ZCk6CisgICAgICAgIChXZWJDb3JlOjpMb2FkZXI6Okhvc3Q6OnNlcnZlUGVuZGluZ1JlcXVlc3Rz
KToKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRlcjo6SG9zdDo6ZGlkRmluaXNoTG9hZGluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpMb2FkZXI6Okhvc3Q6OmRpZEZhaWwpOgorICAgICAgICAoV2ViQ29y
ZTo6TG9hZGVyOjpIb3N0OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6
TG9hZGVyOjpIb3N0OjpjYW5jZWxQZW5kaW5nUmVxdWVzdHMpOgorICAgICAgICAqIGxvYWRlci9s
b2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRlcjo6KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdEJhc2U6Oik6CisKIDIwMTAtMDctMDcgIEFkYW0gQmFydGggIDxhYmFydGhAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpJbmRleDogV2ViQ29y
ZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCShyZXZpc2lvbiA2
MjY5MykKKysrIFdlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcJ
KHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDggQEAKIAogLy8gU2V0IGFueSBFTkFCTEVfRkVB
VFVSRV9OQU1FIG1hY3JvIHRvIGFuIGVtcHR5IHN0cmluZyB0byBkaXNhYmxlIHRoYXQgZmVhdHVy
ZS4KIAorRU5BQkxFX0xJTktfUFJFRkVUQ0ggPSA7CisKIEVOQUJMRV8zRF9DQU5WQVMgPSAkKEVO
QUJMRV8zRF9DQU5WQVNfJChUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUikpOwogRU5BQkxF
XzNEX0NBTlZBU18xMDUwID0gRU5BQkxFXzNEX0NBTlZBUzsKIEVOQUJMRV8zRF9DQU5WQVNfMTA2
MCA9IEVOQUJMRV8zRF9DQU5WQVM7CkBAIC04NCw1ICs4Niw0IEBAIEVOQUJMRV9YSFRNTE1QID0g
OwogRU5BQkxFX1hQQVRIID0gRU5BQkxFX1hQQVRIOwogRU5BQkxFX1hTTFQgPSBFTkFCTEVfWFNM
VDsKIAotRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfQ0FOVkFTKSAkKEVOQUJMRV8zRF9S
RU5ERVJJTkcpICQoRU5BQkxFX0JMT0JfU0xJQ0UpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5H
KSAkKEVOQUJMRV9DTElFTlRfQkFTRURfR0VPTE9DQVRJT04pICQoRU5BQkxFX0RBVEFCQVNFKSAk
KEVOQUJMRV9EQVRBR1JJRCkgJChFTkFCTEVfREFUQUxJU1QpICQoRU5BQkxFX0RFVklDRV9PUklF
TlRBVElPTikgJChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCkgJChFTkFCTEVfRE9NX1NUT1JBR0Up
ICQoRU5BQkxFX0VWRU5UU09VUkNFKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GSUxFX1JF
QURFUikgJChFTkFCTEVfRklMRV9XUklURVIpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJM
RV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lNQUdFX1JFU0laRVIpICQoRU5BQkxFX0lOREVYRURf
REFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJV
R0dFUikgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRVRFUl9UQUcpICQoRU5BQkxFX05PVElG
SUNBVElPTlMpICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVfUFJP
R1JFU1NfVEFHKSAkKEVOQUJMRV9SVUJZKSAkKEVOQUJMRV9TQU5EQk9YKSAkKEVOQUJMRV9TSEFS
RURfV09SS0VSUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJM
RV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVf
U1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0Up
ICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlO
RykgJChFTkFCTEVfV01MKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YSFRNTE1QKSAkKEVO
QUJMRV9YUEFUSCkgJChFTkFCTEVfWFNMVCk7Ci0KK0ZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxF
X0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFXzNEX0NBTlZBUykgJChFTkFCTEVfM0RfUkVOREVSSU5H
KSAkKEVOQUJMRV9CTE9CX1NMSUNFKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFC
TEVfQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9EQVRBQkFTRSkgJChFTkFCTEVf
REFUQUdSSUQpICQoRU5BQkxFX0RBVEFMSVNUKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04p
ICQoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQpICQoRU5BQkxFX0RPTV9TVE9SQUdFKSAkKEVOQUJM
RV9FVkVOVFNPVVJDRSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfRklMRV9SRUFERVIpICQo
RU5BQkxFX0ZJTEVfV1JJVEVSKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSUNPTkRB
VEFCQVNFKSAkKEVOQUJMRV9JTUFHRV9SRVNJWkVSKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNF
KSAkKEVOQUJMRV9JTlBVVF9TUEVFQ0gpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQo
RU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVURVJfVEFHKSAkKEVOQUJMRV9OT1RJRklDQVRJT05T
KSAkKEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpICQoRU5BQkxFX1BST0dSRVNTX1RB
RykgJChFTkFCTEVfUlVCWSkgJChFTkFCTEVfU0FOREJPWCkgJChFTkFCTEVfU0hBUkVEX1dPUktF
UlMpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0FOSU1BVElPTikgJChFTkFCTEVfU1ZHX0FT
X0lNQUdFKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpICQoRU5BQkxFX1NWR19GT05U
UykgJChFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUKSAkKEVOQUJMRV9TVkdfVVNFKSAkKEVOQUJM
RV9WSURFTykgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5B
QkxFX1dNTCkgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWEhUTUxNUCkgJChFTkFCTEVfWFBB
VEgpICQoRU5BQkxFX1hTTFQpOwpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAJKHJldmlz
aW9uIDYyNjkzKQorKysgV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE0NCwxMiArMTQ0LDE5IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50Ojp0b2tlbml6
ZVJlbEF0dHJpYnUKICAgICByZWxBdHRyaWJ1dGUubV9pc0ljb24gPSBmYWxzZTsKICAgICByZWxB
dHRyaWJ1dGUubV9pc0FsdGVybmF0ZSA9IGZhbHNlOwogICAgIHJlbEF0dHJpYnV0ZS5tX2lzRE5T
UHJlZmV0Y2ggPSBmYWxzZTsKKyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKKyAgICByZWxBdHRy
aWJ1dGUubV9pc0xpbmtQcmVmZXRjaCA9IGZhbHNlOworI2VuZGlmCiAgICAgaWYgKGVxdWFsSWdu
b3JpbmdDYXNlKHJlbCwgInN0eWxlc2hlZXQiKSkKICAgICAgICAgcmVsQXR0cmlidXRlLm1faXNT
dHlsZVNoZWV0ID0gdHJ1ZTsKICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShyZWwsICJp
Y29uIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UocmVsLCAic2hvcnRjdXQgaWNvbiIpKQogICAgICAg
ICByZWxBdHRyaWJ1dGUubV9pc0ljb24gPSB0cnVlOwogICAgIGVsc2UgaWYgKGVxdWFsSWdub3Jp
bmdDYXNlKHJlbCwgImRucy1wcmVmZXRjaCIpKQogICAgICAgICByZWxBdHRyaWJ1dGUubV9pc0RO
U1ByZWZldGNoID0gdHJ1ZTsKKyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKKyAgICBlbHNlIGlm
IChlcXVhbElnbm9yaW5nQ2FzZShyZWwsICJwcmVmZXRjaCIpKQorICAgICAgICByZWxBdHRyaWJ1
dGUubV9pc0xpbmtQcmVmZXRjaCA9IHRydWU7CisjZW5kaWYKICAgICBlbHNlIGlmIChlcXVhbEln
bm9yaW5nQ2FzZShyZWwsICJhbHRlcm5hdGUgc3R5bGVzaGVldCIpIHx8IGVxdWFsSWdub3JpbmdD
YXNlKHJlbCwgInN0eWxlc2hlZXQgYWx0ZXJuYXRlIikpIHsKICAgICAgICAgcmVsQXR0cmlidXRl
Lm1faXNTdHlsZVNoZWV0ID0gdHJ1ZTsKICAgICAgICAgcmVsQXR0cmlidXRlLm1faXNBbHRlcm5h
dGUgPSB0cnVlOwpAQCAtMTg2LDYgKzE5MywxMSBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6cHJv
Y2VzcygpCiAgICAgaWYgKG1fcmVsQXR0cmlidXRlLm1faXNETlNQcmVmZXRjaCAmJiBtX3VybC5p
c1ZhbGlkKCkgJiYgIW1fdXJsLmlzRW1wdHkoKSkKICAgICAgICAgUmVzb3VyY2VIYW5kbGU6OnBy
ZXBhcmVGb3JVUkwobV91cmwpOwogCisjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCisgICAgaWYg
KG1fcmVsQXR0cmlidXRlLm1faXNMaW5rUHJlZmV0Y2ggJiYgbV91cmwuaXNWYWxpZCgpKQorICAg
ICAgICBkb2N1bWVudCgpLT5kb2NMb2FkZXIoKS0+cmVxdWVzdExpbmtQcmVmZXRjaChtX3VybCk7
CisjZW5kaWYKKwogICAgIGJvb2wgYWNjZXB0SWZUeXBlQ29udGFpbnNUZXh0Q1NTID0gZG9jdW1l
bnQoKS0+cGFnZSgpICYmIGRvY3VtZW50KCktPnBhZ2UoKS0+c2V0dGluZ3MoKSAmJiBkb2N1bWVu
dCgpLT5wYWdlKCktPnNldHRpbmdzKCktPnRyZWF0c0FueVRleHRDU1NMaW5rQXNTdHlsZXNoZWV0
KCk7CiAKICAgICAvLyBTdHlsZXNoZWV0CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCShyZXZp
c2lvbiA2MjY5MykKKysrIFdlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMzEsNiArMzEsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNo
ZWRDU1NTdHlsZVNoZWV0OworY2xhc3MgQ2FjaGVkTGlua1ByZWZldGNoOwogY2xhc3MgS1VSTDsK
IAogY2xhc3MgSFRNTExpbmtFbGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50LCBwdWJsaWMgQ2Fj
aGVkUmVzb3VyY2VDbGllbnQgewpAQCAtNDAsOCArNDEsMjAgQEAgcHVibGljOgogICAgICAgICBi
b29sIG1faXNJY29uOwogICAgICAgICBib29sIG1faXNBbHRlcm5hdGU7CiAgICAgICAgIGJvb2wg
bV9pc0ROU1ByZWZldGNoOworI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQorICAgICAgICBib29s
IG1faXNMaW5rUHJlZmV0Y2g7CisjZW5kaWYKIAotICAgICAgICBSZWxBdHRyaWJ1dGUoKSA6IG1f
aXNTdHlsZVNoZWV0KGZhbHNlKSwgbV9pc0ljb24oZmFsc2UpLCBtX2lzQWx0ZXJuYXRlKGZhbHNl
KSwgbV9pc0ROU1ByZWZldGNoKGZhbHNlKSB7IH0KKyAgICAgICAgUmVsQXR0cmlidXRlKCkKKyAg
ICAgICAgICAgIDogbV9pc1N0eWxlU2hlZXQoZmFsc2UpCisgICAgICAgICAgICAsIG1faXNJY29u
KGZhbHNlKQorICAgICAgICAgICAgLCBtX2lzQWx0ZXJuYXRlKGZhbHNlKQorICAgICAgICAgICAg
LCBtX2lzRE5TUHJlZmV0Y2goZmFsc2UpCisjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCisgICAg
ICAgICAgICAsIG1faXNMaW5rUHJlZmV0Y2goZmFsc2UpCisjZW5kaWYKKyAgICAgICAgICAgIHsg
CisgICAgICAgICAgICB9CiAgICAgfTsKIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxMaW5r
RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCosIGJvb2wgY3Jl
YXRlZEJ5UGFyc2VyKTsKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0NhY2hlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2xvYWRlci9DYWNoZS5jcHAJKHJldmlzaW9uIDYyNjkzKQorKysgV2ViQ29y
ZS9sb2FkZXIvQ2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Niw2ICs4NiwxMCBAQCBzdGF0
aWMgQ2FjaGVkUmVzb3VyY2UqIGNyZWF0ZVJlc291cmNlKENhCiAgICAgY2FzZSBDYWNoZWRSZXNv
dXJjZTo6WEJMU3R5bGVTaGVldDoKICAgICAgICAgcmV0dXJuIG5ldyBDYWNoZWRYQkxEb2N1bWVu
dCh1cmwuc3RyaW5nKCkpOwogI2VuZGlmCisjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCisgICAg
Y2FzZSBDYWNoZWRSZXNvdXJjZTo6TGlua1ByZWZldGNoOgorICAgICAgICByZXR1cm4gbmV3IENh
Y2hlZFJlc291cmNlKHVybC5zdHJpbmcoKSwgQ2FjaGVkUmVzb3VyY2U6OkxpbmtQcmVmZXRjaCk7
CisjZW5kaWYKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CkluZGV4OiBXZWJD
b3JlL2xvYWRlci9DYWNoZWRSZXNvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2Fk
ZXIvQ2FjaGVkUmVzb3VyY2UuY3BwCShyZXZpc2lvbiA2MjY5MykKKysrIFdlYkNvcmUvbG9hZGVy
L0NhY2hlZFJlc291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsOCBAQAogCiAj
aW5jbHVkZSAiQ2FjaGUuaCIKICNpbmNsdWRlICJDYWNoZWRNZXRhZGF0YS5oIgorI2luY2x1ZGUg
IkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnRX
YWxrZXIuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIkRv
Y0xvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC0xMDgsNiArMTEwLDE2IEBAIHZvaWQg
Q2FjaGVkUmVzb3VyY2U6OmxvYWQoRG9jTG9hZGVyKiBkb2MKICAgICBtX2xvYWRpbmcgPSB0cnVl
OwogfQogCit2b2lkIENhY2hlZFJlc291cmNlOjpkYXRhKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVy
PiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit7CisgICAgaWYgKCFhbGxEYXRhUmVjZWl2ZWQpCisg
ICAgICAgIHJldHVybjsKKyAgICAKKyAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlciB3KG1f
Y2xpZW50cyk7CisgICAgd2hpbGUgKENhY2hlZFJlc291cmNlQ2xpZW50KiBjID0gdy5uZXh0KCkp
CisgICAgICAgIGMtPm5vdGlmeUZpbmlzaGVkKHRoaXMpOworfQorCiB2b2lkIENhY2hlZFJlc291
cmNlOjpmaW5pc2goKQogewogICAgIG1fc3RhdHVzID0gQ2FjaGVkOwpAQCAtMjA0LDYgKzIxNiwx
MiBAQCB2b2lkIENhY2hlZFJlc291cmNlOjphZGRDbGllbnQoQ2FjaGVkUmVzCiAgICAgZGlkQWRk
Q2xpZW50KGNsaWVudCk7CiB9CiAKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OmRpZEFkZENsaWVudChD
YWNoZWRSZXNvdXJjZUNsaWVudCogYykKK3sKKyAgICBpZiAoIWlzTG9hZGluZygpKQorICAgICAg
ICBjLT5ub3RpZnlGaW5pc2hlZCh0aGlzKTsKK30KKwogdm9pZCBDYWNoZWRSZXNvdXJjZTo6YWRk
Q2xpZW50VG9TZXQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqIGNsaWVudCkKIHsKICAgICBBU1NFUlQo
IWlzUHVyZ2VhYmxlKCkpOwpJbmRleDogV2ViQ29yZS9sb2FkZXIvQ2FjaGVkUmVzb3VyY2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9DYWNoZWRSZXNvdXJjZS5oCShyZXZpc2lvbiA2
MjY5MykKKysrIFdlYkNvcmUvbG9hZGVyL0NhY2hlZFJlc291cmNlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTY0LDYgKzY0LDkgQEAgcHVibGljOgogI2lmIEVOQUJMRShYQkwpCiAgICAgICAgICwgWEJM
CiAjZW5kaWYKKyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKKyAgICAgICAgLCBMaW5rUHJlZmV0
Y2gKKyNlbmRpZgogICAgIH07CiAKICAgICBlbnVtIFN0YXR1cyB7CkBAIC04Miw4ICs4NSw4IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSB7
IH0KICAgICB2aXJ0dWFsIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygp
OyB9Ci0gICAgdmlydHVhbCB2b2lkIGRhdGEoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGVycm9yKCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBkYXRhKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhLCBi
b29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgdmlydHVhbCB2b2lkIGVycm9yKCkgeyB9CiAgICAg
dmlydHVhbCB2b2lkIGh0dHBTdGF0dXNDb2RlRXJyb3IoKSB7IGVycm9yKCk7IH0gLy8gSW1hZ2Vz
IGtlZXAgbG9hZGluZyBpbiBzcGl0ZSBvZiBIVFRQIGVycm9ycyAoZm9yIGxlZ2FjeSBjb21wYXQg
d2l0aCA8aW1nPiwgZXRjLikuCiAKICAgICBjb25zdCBTdHJpbmcgJnVybCgpIGNvbnN0IHsgcmV0
dXJuIG1fdXJsOyB9CkBAIC0xMDMsNyArMTA2LDcgQEAgcHVibGljOgogICAgIFByZWxvYWRSZXN1
bHQgcHJlbG9hZFJlc3VsdCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFByZWxvYWRSZXN1
bHQ+KG1fcHJlbG9hZFJlc3VsdCk7IH0KICAgICB2b2lkIHNldFJlcXVlc3RlZEZyb21OZXR3b3Jr
aW5nTGF5ZXIoKSB7IG1fcmVxdWVzdGVkRnJvbU5ldHdvcmtpbmdMYXllciA9IHRydWU7IH0KIAot
ICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCopOwog
ICAgIHZpcnR1YWwgdm9pZCBhbGxDbGllbnRzUmVtb3ZlZCgpIHsgfQogCiAgICAgdW5zaWduZWQg
Y291bnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudHMuc2l6ZSgpOyB9CkBAIC0xMjIsNiArMTI1
LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldExvYWRpbmcoYm9vbCBiKSB7IG1fbG9hZGluZyA9
IGI7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBpc0ltYWdlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KKyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKKyAgICB2aXJ0dWFsIGJvb2wgaXNQcmVmZXRj
aCgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSAhPSBMaW5rUHJlZmV0Y2g7IH0KKyNlbHNlCisgICAg
dmlydHVhbCBib29sIGlzUHJlZmV0Y2goKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorI2VuZGlm
CiAKICAgICB1bnNpZ25lZCBhY2Nlc3NDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fYWNjZXNzQ291
bnQ7IH0KICAgICB2b2lkIGluY3JlYXNlQWNjZXNzQ291bnQoKSB7IG1fYWNjZXNzQ291bnQrKzsg
fQpAQCAtMTYyLDcgKzE3MCw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNFeHBpcmVkKCkgY29u
c3Q7CiAKLSAgICB2aXJ0dWFsIGJvb2wgc2NoZWR1bGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQorICAgIHZpcnR1YWwgYm9vbCBzY2hlZHVsZSgpIGNvbnN0IHsgcmV0dXJuIGlzUHJlZmV0Y2go
KTsgfQogCiAgICAgLy8gTGlzdCBvZiBhY2NlcHRhYmxlIE1JTUUgdHlwZXMgc2VwYXJhdGVkIGJ5
ICIsIi4KICAgICAvLyBBIE1JTUUgdHlwZSBtYXkgY29udGFpbiBhIHdpbGRjYXJkLCBlLmcuICJ0
ZXh0LyoiLgpJbmRleDogV2ViQ29yZS9sb2FkZXIvQ2FjaGVkU2NyaXB0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2xvYWRlci9DYWNoZWRTY3JpcHQuY3BwCShyZXZpc2lvbiA2MjY5MykKKysr
IFdlYkNvcmUvbG9hZGVyL0NhY2hlZFNjcmlwdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDEy
ICs1MSw2IEBAIENhY2hlZFNjcmlwdDo6fkNhY2hlZFNjcmlwdCgpCiB7CiB9CiAKLXZvaWQgQ2Fj
aGVkU2NyaXB0OjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqIGMpCi17Ci0gICAg
aWYgKCFpc0xvYWRpbmcoKSkKLSAgICAgICAgYy0+bm90aWZ5RmluaXNoZWQodGhpcyk7Ci19Ci0K
IHZvaWQgQ2FjaGVkU2NyaXB0OjphbGxDbGllbnRzUmVtb3ZlZCgpCiB7CiAgICAgbV9kZWNvZGVk
RGF0YURlbGV0aW9uVGltZXIuc3RhcnRPbmVTaG90KDApOwpJbmRleDogV2ViQ29yZS9sb2FkZXIv
Q2FjaGVkU2NyaXB0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvQ2FjaGVkU2NyaXB0
LmgJKHJldmlzaW9uIDYyNjkzKQorKysgV2ViQ29yZS9sb2FkZXIvQ2FjaGVkU2NyaXB0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAg
ICAgIGNvbnN0IFN0cmluZyYgc2NyaXB0KCk7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZEFk
ZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgYWxs
Q2xpZW50c1JlbW92ZWQoKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0RW5jb2RpbmcoY29u
c3QgU3RyaW5nJik7CkluZGV4OiBXZWJDb3JlL2xvYWRlci9Eb2NMb2FkZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0RvY0xvYWRlci5jcHAJKHJldmlzaW9uIDYyNjkzKQorKysg
V2ViQ29yZS9sb2FkZXIvRG9jTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY4LDYgKzE2
OCwxMyBAQCBDYWNoZWRYQkxEb2N1bWVudCogRG9jTG9hZGVyOjpyZXF1ZXN0WEJMCiB9CiAjZW5k
aWYKIAorI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQorQ2FjaGVkUmVzb3VyY2UqIERvY0xvYWRl
cjo6cmVxdWVzdExpbmtQcmVmZXRjaChjb25zdCBTdHJpbmcmIHVybCkKK3sKKyAgICByZXR1cm4g
cmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpMaW5rUHJlZmV0Y2gsIHVybCwgU3RyaW5n
KCkpOworfQorI2VuZGlmCisKIGJvb2wgRG9jTG9hZGVyOjpjYW5SZXF1ZXN0KENhY2hlZFJlc291
cmNlOjpUeXBlIHR5cGUsIGNvbnN0IEtVUkwmIHVybCkKIHsKICAgICAvLyBTb21lIHR5cGVzIG9m
IHJlc291cmNlcyBjYW4gYmUgbG9hZGVkIG9ubHkgZnJvbSB0aGUgc2FtZSBvcmlnaW4uICBPdGhl
cgpAQCAtMTc4LDYgKzE4NSw5IEBAIGJvb2wgRG9jTG9hZGVyOjpjYW5SZXF1ZXN0KENhY2hlZFJl
c291cmMKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpDU1NTdHlsZVNoZWV0OgogICAgIGNhc2Ug
Q2FjaGVkUmVzb3VyY2U6OlNjcmlwdDoKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpGb250UmVz
b3VyY2U6CisjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCisgICAgY2FzZSBDYWNoZWRSZXNvdXJj
ZTo6TGlua1ByZWZldGNoOgorI2VuZGlmCiAgICAgICAgIC8vIFRoZXNlIHR5cGVzIG9mIHJlc291
cmNlcyBjYW4gYmUgbG9hZGVkIGZyb20gYW55IG9yaWdpbi4KICAgICAgICAgLy8gRklYTUU6IEFy
ZSB3ZSBzdXJlIGFib3V0IENhY2hlZFJlc291cmNlOjpGb250UmVzb3VyY2U/CiAgICAgICAgIGJy
ZWFrOwpAQCAtMjI4LDYgKzIzOCwxMSBAQCBib29sIERvY0xvYWRlcjo6Y2FuUmVxdWVzdChDYWNo
ZWRSZXNvdXJjCiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQorI2lmIEVOQUJMRShM
SU5LX1BSRUZFVENIKQorICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkxpbmtQcmVmZXRjaDoKKyAg
ICAgICAgLy8gUHJlZmV0Y2ggY2Fubm90IGFmZmVjdCB0aGUgY3VycmVudCBkb2N1bWVudC4KKyAg
ICAgICAgYnJlYWs7CisjZW5kaWYKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICAgICAgYnJlYWs7CkBAIC0zNTUsMTMgKzM3MCwxOSBAQCB2b2lkIERvY0xv
YWRlcjo6Y2hlY2tDYWNoZU9iamVjdFN0YXR1cyhDCiAgICAgZnJhbWUoKS0+bG9hZGVyKCktPmxv
YWRlZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKHJlc291cmNlKTsKIH0KIAotdm9pZCBEb2NMb2Fk
ZXI6OmluY3JlbWVudFJlcXVlc3RDb3VudCgpCit2b2lkIERvY0xvYWRlcjo6aW5jcmVtZW50UmVx
dWVzdENvdW50KGNvbnN0IENhY2hlZFJlc291cmNlKiByZXMpCiB7CisgICAgaWYgKHJlcy0+aXNQ
cmVmZXRjaCgpKQorICAgICAgICByZXR1cm47CisKICAgICArK21fcmVxdWVzdENvdW50OwogfQog
Ci12b2lkIERvY0xvYWRlcjo6ZGVjcmVtZW50UmVxdWVzdENvdW50KCkKK3ZvaWQgRG9jTG9hZGVy
OjpkZWNyZW1lbnRSZXF1ZXN0Q291bnQoY29uc3QgQ2FjaGVkUmVzb3VyY2UqIHJlcykKIHsKKyAg
ICBpZiAocmVzLT5pc1ByZWZldGNoKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIC0tbV9yZXF1
ZXN0Q291bnQ7CiAgICAgQVNTRVJUKG1fcmVxdWVzdENvdW50ID4gLTEpOwogfQpJbmRleDogV2Vi
Q29yZS9sb2FkZXIvRG9jTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRG9j
TG9hZGVyLmgJKHJldmlzaW9uIDYyNjkzKQorKysgV2ViQ29yZS9sb2FkZXIvRG9jTG9hZGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTY3LDYgKzY3LDkgQEAgcHVibGljOgogI2lmIEVOQUJMRShYQkwp
CiAgICAgQ2FjaGVkWEJMRG9jdW1lbnQqIHJlcXVlc3RYQkxEb2N1bWVudChjb25zdCBTdHJpbmcg
JnVybCk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKKyAgICBDYWNoZWRSZXNv
dXJjZSogcmVxdWVzdExpbmtQcmVmZXRjaChjb25zdCBTdHJpbmcgJnVybCk7CisjZW5kaWYKIAog
ICAgIC8vIExvZ3MgYW4gYWNjZXNzIGRlbmllZCBtZXNzYWdlIHRvIHRoZSBjb25zb2xlIGZvciB0
aGUgc3BlY2lmaWVkIFVSTC4KICAgICB2b2lkIHByaW50QWNjZXNzRGVuaWVkTWVzc2FnZShjb25z
dCBLVVJMJiB1cmwpIGNvbnN0OwpAQCAtOTEsOCArOTQsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAg
dm9pZCBzZXRBbGxvd1N0YWxlUmVzb3VyY2VzKGJvb2wgYWxsb3dTdGFsZVJlc291cmNlcykgeyBt
X2FsbG93U3RhbGVSZXNvdXJjZXMgPSBhbGxvd1N0YWxlUmVzb3VyY2VzOyB9CiAKLSAgICB2b2lk
IGluY3JlbWVudFJlcXVlc3RDb3VudCgpOwotICAgIHZvaWQgZGVjcmVtZW50UmVxdWVzdENvdW50
KCk7CisgICAgdm9pZCBpbmNyZW1lbnRSZXF1ZXN0Q291bnQoY29uc3QgQ2FjaGVkUmVzb3VyY2Uq
KTsKKyAgICB2b2lkIGRlY3JlbWVudFJlcXVlc3RDb3VudChjb25zdCBDYWNoZWRSZXNvdXJjZSop
OwogICAgIGludCByZXF1ZXN0Q291bnQoKTsKICAgICAKICAgICB2b2lkIGNsZWFyUHJlbG9hZHMo
KTsKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL2xvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9sb2FkZXIvbG9hZGVyLmNwcAkocmV2aXNpb24gNjI2OTMpCisrKyBXZWJDb3JlL2xvYWRlci9s
b2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSw3ICs4OSwxMiBAQCBzdGF0aWMgUmVzb3Vy
Y2VSZXF1ZXN0OjpUYXJnZXRUeXBlIGNhY2hlCiAgICAgICAgIHJldHVybiBSZXNvdXJjZVJlcXVl
c3Q6OlRhcmdldElzRm9udFJlc291cmNlOwogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkltYWdl
UmVzb3VyY2U6CiAgICAgICAgIHJldHVybiBSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldElzSW1hZ2U7
CisjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCisgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6TGlu
a1ByZWZldGNoOgorICAgICAgICByZXR1cm4gUmVzb3VyY2VSZXF1ZXN0OjpUYXJnZXRJc1ByZWZl
dGNoOworI2VuZGlmCiAgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVy
biBSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldElzU3VicmVzb3VyY2U7CiB9CiAKQEAgLTExMCw2ICsx
MTUsMTAgQEAgTG9hZGVyOjpQcmlvcml0eSBMb2FkZXI6OmRldGVybWluZVByaW9yaQogICAgICAg
ICAgICAgcmV0dXJuIE1lZGl1bTsKICAgICAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6SW1hZ2VS
ZXNvdXJjZToKICAgICAgICAgICAgIHJldHVybiBMb3c7CisjaWYgRU5BQkxFKExJTktfUFJFRkVU
Q0gpCisgICAgICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkxpbmtQcmVmZXRjaDoKKyAgICAgICAg
ICAgIHJldHVybiBWZXJ5TG93OworI2VuZGlmCiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgIHJldHVybiBMb3c7CkBAIC0xMzksOSArMTQ4LDkgQEAgdm9pZCBMb2FkZXI6Omxv
YWQoRG9jTG9hZGVyKiBkb2NMb2FkZXIsIAogICAgIGJvb2wgaGFkUmVxdWVzdHMgPSBob3N0LT5o
YXNSZXF1ZXN0cygpOwogICAgIFByaW9yaXR5IHByaW9yaXR5ID0gZGV0ZXJtaW5lUHJpb3JpdHko
cmVzb3VyY2UpOwogICAgIGhvc3QtPmFkZFJlcXVlc3QocmVxdWVzdCwgcHJpb3JpdHkpOwotICAg
IGRvY0xvYWRlci0+aW5jcmVtZW50UmVxdWVzdENvdW50KCk7CisgICAgZG9jTG9hZGVyLT5pbmNy
ZW1lbnRSZXF1ZXN0Q291bnQocmVxdWVzdC0+Y2FjaGVkUmVzb3VyY2UoKSk7CiAKLSAgICBpZiAo
cHJpb3JpdHkgPiBMb3cgfHwgIXVybC5wcm90b2NvbEluSFRUUEZhbWlseSgpIHx8ICFoYWRSZXF1
ZXN0cykgeworICAgIGlmIChwcmlvcml0eSA+IExvdyB8fCAhdXJsLnByb3RvY29sSW5IVFRQRmFt
aWx5KCkgfHwgKHByaW9yaXR5ID09IExvdyAmJiAhaGFkUmVxdWVzdHMpKSB7CiAgICAgICAgIC8v
IFRyeSB0byByZXF1ZXN0IGltcG9ydGFudCByZXNvdXJjZXMgaW1tZWRpYXRlbHkKICAgICAgICAg
aG9zdC0+c2VydmVQZW5kaW5nUmVxdWVzdHMocHJpb3JpdHkpOwogICAgIH0gZWxzZSB7CkBAIC0z
NzAsNyArMzc5LDcgQEAgdm9pZCBMb2FkZXI6Okhvc3Q6OnNlcnZlUGVuZGluZ1JlcXVlc3RzKAog
ICAgICAgICAgICAgcHJpbnRmKCJIT1NUICVzIENPVU5UICVkIExPQURJTkcgJXNcbiIsIHJlc291
cmNlUmVxdWVzdC51cmwoKS5ob3N0KCkubGF0aW4xKCkuZGF0YSgpLCBtX3JlcXVlc3RzTG9hZGlu
Zy5zaXplKCksIHJlcXVlc3QtPmNhY2hlZFJlc291cmNlKCktPnVybCgpLmxhdGluMSgpLmRhdGEo
KSk7CiAjZW5kaWYKICAgICAgICAgfSBlbHNlIHsgICAgICAgICAgICAKLSAgICAgICAgICAgIGRv
Y0xvYWRlci0+ZGVjcmVtZW50UmVxdWVzdENvdW50KCk7CisgICAgICAgICAgICBkb2NMb2FkZXIt
PmRlY3JlbWVudFJlcXVlc3RDb3VudChyZXF1ZXN0LT5jYWNoZWRSZXNvdXJjZSgpKTsKICAgICAg
ICAgICAgIGRvY0xvYWRlci0+c2V0TG9hZEluUHJvZ3Jlc3ModHJ1ZSk7CiAgICAgICAgICAgICBy
ZXF1ZXN0LT5jYWNoZWRSZXNvdXJjZSgpLT5lcnJvcigpOwogICAgICAgICAgICAgZG9jTG9hZGVy
LT5zZXRMb2FkSW5Qcm9ncmVzcyhmYWxzZSk7CkBAIC0zOTQsNyArNDAzLDcgQEAgdm9pZCBMb2Fk
ZXI6Okhvc3Q6OmRpZEZpbmlzaExvYWRpbmcoU3VicgogICAgIC8vIHRoZSBkb2NMb2FkZXIgdGhh
dCBpdCB3aWxsIGRlbGV0ZSB3aGVuIHRoZSBkb2N1bWVudCBnZXRzIGRlbGV0ZWQuCiAgICAgUmVm
UHRyPERvY3VtZW50PiBwcm90ZWN0b3IoZG9jTG9hZGVyLT5kb2MoKSk7CiAgICAgaWYgKCFyZXF1
ZXN0LT5pc011bHRpcGFydCgpKQotICAgICAgICBkb2NMb2FkZXItPmRlY3JlbWVudFJlcXVlc3RD
b3VudCgpOworICAgICAgICBkb2NMb2FkZXItPmRlY3JlbWVudFJlcXVlc3RDb3VudChyZXF1ZXN0
LT5jYWNoZWRSZXNvdXJjZSgpKTsKIAogICAgIENhY2hlZFJlc291cmNlKiByZXNvdXJjZSA9IHJl
cXVlc3QtPmNhY2hlZFJlc291cmNlKCk7CiAgICAgQVNTRVJUKCFyZXNvdXJjZS0+cmVzb3VyY2VU
b1JldmFsaWRhdGUoKSk7CkBAIC00NDIsNyArNDUxLDcgQEAgdm9pZCBMb2FkZXI6Okhvc3Q6OmRp
ZEZhaWwoU3VicmVzb3VyY2VMbwogICAgIC8vIHRoZSBkb2NMb2FkZXIgdGhhdCBpdCB3aWxsIGRl
bGV0ZSB3aGVuIHRoZSBkb2N1bWVudCBnZXRzIGRlbGV0ZWQuCiAgICAgUmVmUHRyPERvY3VtZW50
PiBwcm90ZWN0b3IoZG9jTG9hZGVyLT5kb2MoKSk7CiAgICAgaWYgKCFyZXF1ZXN0LT5pc011bHRp
cGFydCgpKQotICAgICAgICBkb2NMb2FkZXItPmRlY3JlbWVudFJlcXVlc3RDb3VudCgpOworICAg
ICAgICBkb2NMb2FkZXItPmRlY3JlbWVudFJlcXVlc3RDb3VudChyZXF1ZXN0LT5jYWNoZWRSZXNv
dXJjZSgpKTsKIAogICAgIENhY2hlZFJlc291cmNlKiByZXNvdXJjZSA9IHJlcXVlc3QtPmNhY2hl
ZFJlc291cmNlKCk7CiAgICAgCkBAIC00ODcsNyArNDk2LDcgQEAgdm9pZCBMb2FkZXI6Okhvc3Q6
OmRpZFJlY2VpdmVSZXNwb25zZShTdQogICAgICAgICAgICAgLy8gMzA0IE5vdCBtb2RpZmllZCAv
IFVzZSBsb2NhbCBjb3B5CiAgICAgICAgICAgICBtX3JlcXVlc3RzTG9hZGluZy5yZW1vdmUobG9h
ZGVyKTsKICAgICAgICAgICAgIGxvYWRlci0+Y2xlYXJDbGllbnQoKTsKLSAgICAgICAgICAgIHJl
cXVlc3QtPmRvY0xvYWRlcigpLT5kZWNyZW1lbnRSZXF1ZXN0Q291bnQoKTsKKyAgICAgICAgICAg
IHJlcXVlc3QtPmRvY0xvYWRlcigpLT5kZWNyZW1lbnRSZXF1ZXN0Q291bnQocmVxdWVzdC0+Y2Fj
aGVkUmVzb3VyY2UoKSk7CiAKICAgICAgICAgICAgIC8vIEV4aXN0aW5nIHJlc291cmNlIGlzIG9r
LCBqdXN0IHVzZSBpdCB1cGRhdGluZyB0aGUgZXhwaXJhdGlvbiB0aW1lLgogICAgICAgICAgICAg
Y2FjaGUoKS0+cmV2YWxpZGF0aW9uU3VjY2VlZGVkKHJlc291cmNlLCByZXNwb25zZSk7CkBAIC01
MTksNyArNTI4LDcgQEAgdm9pZCBMb2FkZXI6Okhvc3Q6OmRpZFJlY2VpdmVSZXNwb25zZShTdQog
ICAgICAgICByZXF1ZXN0LT5zZXRJc011bHRpcGFydCh0cnVlKTsKICAgICAgICAgCiAgICAgICAg
IC8vIFdlIGRvbid0IGNvdW50IG11bHRpUGFydHMgaW4gYSBEb2NMb2FkZXIncyByZXF1ZXN0IGNv
dW50Ci0gICAgICAgIHJlcXVlc3QtPmRvY0xvYWRlcigpLT5kZWNyZW1lbnRSZXF1ZXN0Q291bnQo
KTsKKyAgICAgICAgcmVxdWVzdC0+ZG9jTG9hZGVyKCktPmRlY3JlbWVudFJlcXVlc3RDb3VudChy
ZXF1ZXN0LT5jYWNoZWRSZXNvdXJjZSgpKTsKIAogICAgICAgICAvLyBJZiB3ZSBnZXQgYSBtdWx0
aXBhcnQgcmVzcG9uc2UsIHdlIG11c3QgaGF2ZSBhIGhhbmRsZQogICAgICAgICBBU1NFUlQobG9h
ZGVyLT5oYW5kbGUoKSk7CkBAIC01ODIsNyArNTkxLDcgQEAgdm9pZCBMb2FkZXI6Okhvc3Q6OmNh
bmNlbFBlbmRpbmdSZXF1ZXN0cwogICAgICAgICBpZiAocmVxdWVzdC0+ZG9jTG9hZGVyKCkgPT0g
ZG9jTG9hZGVyKSB7CiAgICAgICAgICAgICBjYWNoZSgpLT5yZW1vdmUocmVxdWVzdC0+Y2FjaGVk
UmVzb3VyY2UoKSk7CiAgICAgICAgICAgICBkZWxldGUgcmVxdWVzdDsKLSAgICAgICAgICAgIGRv
Y0xvYWRlci0+ZGVjcmVtZW50UmVxdWVzdENvdW50KCk7CisgICAgICAgICAgICBkb2NMb2FkZXIt
PmRlY3JlbWVudFJlcXVlc3RDb3VudChyZXF1ZXN0LT5jYWNoZWRSZXNvdXJjZSgpKTsKICAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICByZW1haW5pbmcuYXBwZW5kKHJlcXVlc3QpOwogICAgIH0K
SW5kZXg6IFdlYkNvcmUvbG9hZGVyL2xvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9h
ZGVyL2xvYWRlci5oCShyZXZpc2lvbiA2MjY5MykKKysrIFdlYkNvcmUvbG9hZGVyL2xvYWRlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC00OCw4ICs0OCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ICAgICAgICB2b2lkIGNhbmNlbFJlcXVlc3RzKERvY0xvYWRlciopOwogICAgICAgICAKLSAgICAg
ICAgZW51bSBQcmlvcml0eSB7IExvdywgTWVkaXVtLCBIaWdoIH07Ci0gICAgICAgIHZvaWQgc2Vy
dmVQZW5kaW5nUmVxdWVzdHMoUHJpb3JpdHkgbWluaW11bVByaW9yaXR5ID0gTG93KTsKKyAgICAg
ICAgZW51bSBQcmlvcml0eSB7IFZlcnlMb3csIExvdywgTWVkaXVtLCBIaWdoIH07CisgICAgICAg
IHZvaWQgc2VydmVQZW5kaW5nUmVxdWVzdHMoUHJpb3JpdHkgbWluaW11bVByaW9yaXR5ID0gVmVy
eUxvdyk7CiAKICAgICAgICAgYm9vbCBpc1N1c3BlbmRpbmdQZW5kaW5nUmVxdWVzdHMoKSB7IHJl
dHVybiBtX2lzU3VzcGVuZGluZ1BlbmRpbmdSZXF1ZXN0czsgfQogICAgICAgICB2b2lkIHN1c3Bl
bmRQZW5kaW5nUmVxdWVzdHMoKTsKQEAgLTc2LDcgKzc2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICAgICAgdm9pZCBhZGRSZXF1ZXN0KFJlcXVlc3QqLCBQcmlvcml0eSk7CiAgICAg
ICAgICAgICB2b2lkIG5vbkNhY2hlUmVxdWVzdEluRmxpZ2h0KCk7CiAgICAgICAgICAgICB2b2lk
IG5vbkNhY2hlUmVxdWVzdENvbXBsZXRlKCk7Ci0gICAgICAgICAgICB2b2lkIHNlcnZlUGVuZGlu
Z1JlcXVlc3RzKFByaW9yaXR5IG1pbmltdW1Qcmlvcml0eSA9IExvdyk7CisgICAgICAgICAgICB2
b2lkIHNlcnZlUGVuZGluZ1JlcXVlc3RzKFByaW9yaXR5IG1pbmltdW1Qcmlvcml0eSA9IFZlcnlM
b3cpOwogICAgICAgICAgICAgdm9pZCBjYW5jZWxSZXF1ZXN0cyhEb2NMb2FkZXIqKTsKICAgICAg
ICAgICAgIGJvb2wgaGFzUmVxdWVzdHMoKSBjb25zdDsKIApJbmRleDogV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCShyZXZpc2lvbiA2MjY5MykKKysr
IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTYzLDcgKzYzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAg
VGFyZ2V0SXNPYmplY3QsCiAgICAgICAgICAgICBUYXJnZXRJc01lZGlhLAogICAgICAgICAgICAg
VGFyZ2V0SXNXb3JrZXIsCi0gICAgICAgICAgICBUYXJnZXRJc1NoYXJlZFdvcmtlcgorICAgICAg
ICAgICAgVGFyZ2V0SXNTaGFyZWRXb3JrZXIsCisgICAgICAgICAgICBUYXJnZXRJc1ByZWZldGNo
LAogICAgICAgICB9OwogCiAgICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPFJlc291cmNlUmVxdWVz
dD4gYWRvcHQoUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+KTsKSW5k
ZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9nCShy
ZXZpc2lvbiA2MjY5OSkKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTIgQEAKKzIwMTAtMDctMDcgIEdhdmluIFBldGVycyAgPGdhdmlucEBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgYWRk
IHN1cHBvcnQgZm9yIGxpbmsgcHJlZmV0Y2hpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTM2NTIKKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0Zl
YXR1cmVEZWZpbmVzLnhjY29uZmlnOgorCiAyMDEwLTA3LTA3ICBTYW0gV2VpbmlnICA8c2FtQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgpJbmRleDog
V2ViS2l0Mi9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQyL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCShyZXZp
c2lvbiA2MjY5MykKKysrIFdlYktpdDIvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNj
b25maWcJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDggQEAKIAogLy8gU2V0IGFueSBFTkFC
TEVfRkVBVFVSRV9OQU1FIG1hY3JvIHRvIGFuIGVtcHR5IHN0cmluZyB0byBkaXNhYmxlIHRoYXQg
ZmVhdHVyZS4KIAorRU5BQkxFX0xJTktfUFJFRkVUQ0ggPSA7CisKIEVOQUJMRV8zRF9DQU5WQVMg
PSAkKEVOQUJMRV8zRF9DQU5WQVNfJChUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUikpOwog
RU5BQkxFXzNEX0NBTlZBU18xMDUwID0gRU5BQkxFXzNEX0NBTlZBUzsKIEVOQUJMRV8zRF9DQU5W
QVNfMTA2MCA9IEVOQUJMRV8zRF9DQU5WQVM7CkBAIC04Miw1ICs4NCw0IEBAIEVOQUJMRV9YSFRN
TE1QID0gOwogRU5BQkxFX1hQQVRIID0gRU5BQkxFX1hQQVRIOwogRU5BQkxFX1hTTFQgPSBFTkFC
TEVfWFNMVDsKIAotRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfQ0FOVkFTKSAkKEVOQUJM
RV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0JMT0JfU0xJQ0UpICQoRU5BQkxFX0NIQU5ORUxfTUVT
U0FHSU5HKSAkKEVOQUJMRV9DTElFTlRfQkFTRURfR0VPTE9DQVRJT04pICQoRU5BQkxFX0RBVEFC
QVNFKSAkKEVOQUJMRV9EQVRBR1JJRCkgJChFTkFCTEVfREFUQUxJU1QpICQoRU5BQkxFX0RJUkVD
VE9SWV9VUExPQUQpICQoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQpICQoRU5BQkxFX0RPTV9TVE9S
QUdFKSAkKEVOQUJMRV9FVkVOVFNPVVJDRSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfRklM
RV9SRUFERVIpICQoRU5BQkxFX0ZJTEVfV1JJVEVSKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChF
TkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9J
TlBVVF9TUEVFQ0gpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX01BVEhN
TCkgJChFTkFCTEVfTUVURVJfVEFHKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9P
RkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpICQoRU5BQkxFX1BST0dSRVNTX1RBRykgJChFTkFCTEVf
UlVCWSkgJChFTkFCTEVfU0FOREJPWCkgJChFTkFCTEVfU0hBUkVEX1dPUktFUlMpICQoRU5BQkxF
X1NWRykgJChFTkFCTEVfU1ZHX0FOSU1BVElPTikgJChFTkFCTEVfU1ZHX0FTX0lNQUdFKSAkKEVO
QUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVf
U1ZHX0ZPUkVJR05fT0JKRUNUKSAkKEVOQUJMRV9TVkdfVVNFKSAkKEVOQUJMRV9WSURFTykgJChF
TkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5BQkxFX1dNTCkgJChF
TkFCTEVfV09SS0VSUykgJChFTkFCTEVfWEhUTUxNUCkgJChFTkFCTEVfWFBBVEgpICQoRU5BQkxF
X1hTTFQpOwotCitGRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVO
QUJMRV8zRF9DQU5WQVMpICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQkxPQl9TTElD
RSkgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NMSUVOVF9CQVNFRF9HRU9M
T0NBVElPTikgJChFTkFCTEVfREFUQUJBU0UpICQoRU5BQkxFX0RBVEFHUklEKSAkKEVOQUJMRV9E
QVRBTElTVCkgJChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCkgJChFTkFCTEVfRE9NX1NUT1JBR0Up
ICQoRU5BQkxFX0VWRU5UU09VUkNFKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GSUxFX1JF
QURFUikgJChFTkFCTEVfRklMRV9XUklURVIpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJM
RV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lOUFVU
X1NQRUVDSCkgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfTUFUSE1MKSAk
KEVOQUJMRV9NRVRFUl9UQUcpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX09GRkxJ
TkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVfUFJPR1JFU1NfVEFHKSAkKEVOQUJMRV9SVUJZ
KSAkKEVOQUJMRV9TQU5EQk9YKSAkKEVOQUJMRV9TSEFSRURfV09SS0VSUykgJChFTkFCTEVfU1ZH
KSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxF
X1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdf
Rk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJM
RV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykgJChFTkFCTEVfV01MKSAkKEVOQUJM
RV9XT1JLRVJTKSAkKEVOQUJMRV9YSFRNTE1QKSAkKEVOQUJMRV9YUEFUSCkgJChFTkFCTEVfWFNM
VCk7CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDYyNjk5KQorKysgV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEwLTA3LTA3ICBH
YXZpbiBQZXRlcnMgIDxnYXZpbnBAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGFkZCBzdXBwb3J0IGZvciBsaW5rIHByZWZldGNo
aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjUy
CisKKyAgICAgICAgKiBwdWJsaWMvV2ViVVJMUmVxdWVzdC5oOgorICAgICAgICAoV2ViS2l0OjpX
ZWJVUkxSZXF1ZXN0OjopOgorCiAyMDEwLTA3LTA3ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgpJbmRleDogV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJVUkxSZXF1ZXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJVUkxSZXF1ZXN0LmgJKHJldmlzaW9uIDYyNjkzKQorKysgV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJVUkxSZXF1ZXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcg
KzY5LDEwIEBAIHB1YmxpYzoKICAgICAgICAgVGFyZ2V0SXNPYmplY3QgPSA3LAogICAgICAgICBU
YXJnZXRJc01lZGlhID0gOCwKICAgICAgICAgVGFyZ2V0SXNXb3JrZXIgPSA5LAotICAgICAgICBU
YXJnZXRJc1NoYXJlZFdvcmtlciA9IDEwCisgICAgICAgIFRhcmdldElzU2hhcmVkV29ya2VyID0g
MTAsCisjaWYgRU5BQkxFRChMSU5LX1BSRUZFVENIKQorICAgICAgICBUYXJnZXRJc1ByZWZldGNo
ID0gMTEsCisjZW5kaWYKICAgICB9OwogCiAgICAgfldlYlVSTFJlcXVlc3QoKSB7IHJlc2V0KCk7
IH0KSW5kZXg6IFdlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMv
Q2hhbmdlTG9nCShyZXZpc2lvbiA2MjY5OSkKKysrIFdlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTAtMDctMDcgIEdhdmluIFBldGVycyAgPGdh
dmlucEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgYWRkIHN1cHBvcnQgZm9yIGxpbmsgcHJlZmV0Y2hpbmcKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2NTIKKworICAgICAgICAqIENv
bmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgorCiAyMDEwLTA3LTA3ICBTYW0g
V2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENh
cmxzc29uLgpJbmRleDogV2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54
Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVE
ZWZpbmVzLnhjY29uZmlnCShyZXZpc2lvbiA2MjY5MykKKysrIFdlYktpdC9tYWMvQ29uZmlndXJh
dGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMx
LDggQEAKIAogLy8gU2V0IGFueSBFTkFCTEVfRkVBVFVSRV9OQU1FIG1hY3JvIHRvIGFuIGVtcHR5
IHN0cmluZyB0byBkaXNhYmxlIHRoYXQgZmVhdHVyZS4KIAorRU5BQkxFX0xJTktfUFJFRkVUQ0gg
PSA7CisKIEVOQUJMRV8zRF9DQU5WQVMgPSAkKEVOQUJMRV8zRF9DQU5WQVNfJChUQVJHRVRfTUFD
X09TX1hfVkVSU0lPTl9NQUpPUikpOwogRU5BQkxFXzNEX0NBTlZBU18xMDUwID0gRU5BQkxFXzNE
X0NBTlZBUzsKIEVOQUJMRV8zRF9DQU5WQVNfMTA2MCA9IEVOQUJMRV8zRF9DQU5WQVM7CkBAIC04
NCw0ICs4Niw0IEBAIEVOQUJMRV9YSFRNTE1QID0gOwogRU5BQkxFX1hQQVRIID0gRU5BQkxFX1hQ
QVRIOwogRU5BQkxFX1hTTFQgPSBFTkFCTEVfWFNMVDsKIAotRkVBVFVSRV9ERUZJTkVTID0gJChF
TkFCTEVfM0RfQ0FOVkFTKSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0JMT0JfU0xJ
Q0UpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9DTElFTlRfQkFTRURfR0VP
TE9DQVRJT04pICQoRU5BQkxFX0RBVEFCQVNFKSAkKEVOQUJMRV9EQVRBR1JJRCkgJChFTkFCTEVf
REFUQUxJU1QpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRElSRUNUT1JZ
X1VQTE9BRCkgJChFTkFCTEVfRE9NX1NUT1JBR0UpICQoRU5BQkxFX0VWRU5UU09VUkNFKSAkKEVO
QUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GSUxFX1JFQURFUikgJChFTkFCTEVfRklMRV9XUklURVIp
ICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lN
QUdFX1JFU0laRVIpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1NQ
RUVDSCkgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfTUFUSE1MKSAkKEVO
QUJMRV9NRVRFUl9UQUcpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX09GRkxJTkVf
V0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVfUFJPR1JFU1NfVEFHKSAkKEVOQUJMRV9SVUJZKSAk
KEVOQUJMRV9TQU5EQk9YKSAkKEVOQUJMRV9TSEFSRURfV09SS0VSUykgJChFTkFCTEVfU1ZHKSAk
KEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NW
R19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9S
RUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9X
RUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykgJChFTkFCTEVfV01MKSAkKEVOQUJMRV9X
T1JLRVJTKSAkKEVOQUJMRV9YSFRNTE1QKSAkKEVOQUJMRV9YUEFUSCkgJChFTkFCTEVfWFNMVCk7
CitGRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVOQUJMRV8zRF9D
QU5WQVMpICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQkxPQl9TTElDRSkgJChFTkFC
TEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikg
JChFTkFCTEVfREFUQUJBU0UpICQoRU5BQkxFX0RBVEFHUklEKSAkKEVOQUJMRV9EQVRBTElTVCkg
JChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEKSAk
KEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVfRVZFTlRTT1VSQ0UpICQoRU5BQkxFX0ZJTFRF
UlMpICQoRU5BQkxFX0ZJTEVfUkVBREVSKSAkKEVOQUJMRV9GSUxFX1dSSVRFUikgJChFTkFCTEVf
R0VPTE9DQVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSU1BR0VfUkVTSVpF
UikgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSU5QVVRfU1BFRUNIKSAkKEVO
QUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FVEVS
X1RBRykgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElD
QVRJT05TKSAkKEVOQUJMRV9QUk9HUkVTU19UQUcpICQoRU5BQkxFX1JVQlkpICQoRU5BQkxFX1NB
TkRCT1gpICQoRU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxFX1NW
R19BTklNQVRJT04pICQoRU5BQkxFX1NWR19BU19JTUFHRSkgJChFTkFCTEVfU1ZHX0RPTV9PQkpD
X0JJTkRJTkdTKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1NWR19GT1JFSUdOX09CSkVD
VCkgJChFTkFCTEVfU1ZHX1VTRSkgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1dFQl9TT0NLRVRT
KSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVOQUJMRV9XTUwpICQoRU5BQkxFX1dPUktFUlMpICQo
RU5BQkxFX1hIVE1MTVApICQoRU5BQkxFX1hQQVRIKSAkKEVOQUJMRV9YU0xUKTsKSW5kZXg6IFdl
YktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDYyNjk5KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTIgQEAKKzIwMTAtMDctMDcgIEdhdmluIFBldGVycyAgPGdhdmlucEBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgYWRkIHN1cHBvcnQgZm9yIGxpbmsgcHJlZmV0Y2hpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2NTIKKworICAgICAgICAqIFNjcmlwdHMvYnVp
bGQtd2Via2l0OgorCiAyMDEwLTA3LTA3ICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVvbGxp
dmllcnMuY29tPgogCiAgICAgICAgIFt3eF0gQnVpbGQgZml4LiBwYWdlUHJvcGVydHkgbmVlZHMg
dG8gcmV0dXJuIGEgdmFsdWUuCkluZGV4OiBXZWJLaXRUb29scy9TY3JpcHRzL2J1aWxkLXdlYmtp
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdAkocmV2aXNp
b24gNjI2OTMpCisrKyBXZWJLaXRUb29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdAkod29ya2luZyBj
b3B5KQpAQCAtNTUsNyArNTUsNyBAQCBteSAkcHJlZml4UGF0aDsKIG15ICRtYWtlQXJnczsKIG15
ICRzdGFydFRpbWUgPSB0aW1lKCk7CiAKLW15ICgkdGhyZWVEQ2FudmFzU3VwcG9ydCwgJHRocmVl
RFJlbmRlcmluZ1N1cHBvcnQsICRjaGFubmVsTWVzc2FnaW5nU3VwcG9ydCwgJGNsaWVudEJhc2Vk
R2VvbG9jYXRpb25TdXBwb3J0LCAkZGF0YWJhc2VTdXBwb3J0LCAkZGF0YWdyaWRTdXBwb3J0LCAk
ZGF0YWxpc3RTdXBwb3J0LAorbXkgKCRsaW5rUHJlZmV0Y2hTdXBwb3J0LCAkdGhyZWVEQ2FudmFz
U3VwcG9ydCwgJHRocmVlRFJlbmRlcmluZ1N1cHBvcnQsICRjaGFubmVsTWVzc2FnaW5nU3VwcG9y
dCwgJGNsaWVudEJhc2VkR2VvbG9jYXRpb25TdXBwb3J0LCAkZGF0YWJhc2VTdXBwb3J0LCAkZGF0
YWdyaWRTdXBwb3J0LCAkZGF0YWxpc3RTdXBwb3J0LAogICAgICRkb21TdG9yYWdlU3VwcG9ydCwg
JGV2ZW50c291cmNlU3VwcG9ydCwgJGZpbHRlcnNTdXBwb3J0LCAkZ2VvbG9jYXRpb25TdXBwb3J0
LCAkaWNvbkRhdGFiYXNlU3VwcG9ydCwgJGltYWdlUmVzaXplclN1cHBvcnQsICRpbmRleGVkRGF0
YWJhc2VTdXBwb3J0LCAkaW5wdXRTcGVlY2hTdXBwb3J0LAogICAgICRqYXZhU2NyaXB0RGVidWdn
ZXJTdXBwb3J0LCAkbWF0aG1sU3VwcG9ydCwgJG9mZmxpbmVXZWJBcHBsaWNhdGlvblN1cHBvcnQs
ICRydWJ5U3VwcG9ydCwgJHN5c3RlbU1hbGxvY1N1cHBvcnQsICRzYW5kYm94U3VwcG9ydCwgJHNo
YXJlZFdvcmtlcnNTdXBwb3J0LAogICAgICRzdmdTdXBwb3J0LCAkc3ZnQW5pbWF0aW9uU3VwcG9y
dCwgJHN2Z0FzSW1hZ2VTdXBwb3J0LCAkc3ZnRE9NT2JqQ0JpbmRpbmdzU3VwcG9ydCwgJHN2Z0Zv
bnRzU3VwcG9ydCwKQEAgLTY0LDYgKzY0LDkgQEAgbXkgKCR0aHJlZURDYW52YXNTdXBwb3J0LCAk
dGhyZWVEUmVuZGVyaQogICAgICRmaWxlUmVhZGVyU3VwcG9ydCwgJGZpbGVXcml0ZXJTdXBwb3J0
LCAkZGlyZWN0b3J5VXBsb2FkU3VwcG9ydCk7CiAKIG15IEBmZWF0dXJlcyA9ICgKKyAgICB7IG9w
dGlvbiA9PiAibGluay1wcmVmZXRjaCIsIGRlc2MgPT4gIlRvZ2dsZSBwcmUgZmV0Y2hpbmcgc3Vw
cG9ydCIsCisgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9MSU5LX1BSRUZFVENIIiwgZGVmYXVsdCA9
PiAwLCB2YWx1ZSA9PiBcJGxpbmtQcmVmZXRjaFN1cHBvcnQgfSwKKwogICAgIHsgb3B0aW9uID0+
ICIzZC1jYW52YXMiLCBkZXNjID0+ICJUb2dnbGUgM0QgY2FudmFzIHN1cHBvcnQiLAogICAgICAg
ZGVmaW5lID0+ICJFTkFCTEVfM0RfQ0FOVkFTIiwgZGVmYXVsdCA9PiAoaXNBcHBsZU1hY1dlYktp
dCgpICYmICFpc1RpZ2VyKCkpLCB2YWx1ZSA9PiBcJHRocmVlRENhbnZhc1N1cHBvcnQgfSwKIApJ
bmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0No
YW5nZUxvZwkocmV2aXNpb24gNjI2OTkpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMC0wNy0wNyAgR2F2aW4gUGV0ZXJzICA8Z2F2
aW5wQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBhZGQgc3VwcG9ydCBmb3IgbGluayBwcmVmZXRjaGluZworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY1MgorCisgICAgICAgICogZmFz
dC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC5saW5rOiBBZGRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ndGsvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2tp
cHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3Jt
L3dpbi9Ta2lwcGVkOgorCiAyMDEwLTA3LTA3ICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBh
cHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQmV0aCBEYWtpbi4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNo
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxM
aW5rRWxlbWVudC9wcmVmZXRjaC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MiBAQAorcHJlZmV0Y2gubGluayBoYXMgTUlNRSB0eXBlIGFwcGxpY2F0aW9uL29jdGV0LXN0cmVh
bQorVGhpcyB0ZXN0IHJlcXVpcmVzIER1bXBSZW5kZXJUcmVlIHRvIHNlZSB0aGUgbG9nIG9mIHdo
YXQgcmVzb3VyY2VzIGFyZSBsb2FkZWQuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1M
TGlua0VsZW1lbnQvcHJlZmV0Y2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0Y2guaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC5odG1sCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDE0IEBACis8Ym9keT4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgp
OworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wUmVzb3VyY2VSZXNwb25zZU1JTUVUeXBlcygpOworICAgIHNldFRpbWVv
dXQoImxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKSIsNTApOworfQorPC9zY3JpcHQ+
Cis8aHRtbD4KKzxwPlRoaXMgdGVzdCByZXF1aXJlcyBEdW1wUmVuZGVyVHJlZSB0byBzZWUgdGhl
IGxvZyBvZiB3aGF0IHJlc291cmNlcyBhcmUgbG9hZGVkLgorPGxpbmsgaHJlZj0icHJlZmV0Y2gu
bGluayIgcmVsPSJwcmVmZXRjaCI+Cis8L2h0bWw+CisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC5saW5rCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC5saW5rCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLmxpbmsJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEgQEAKK1RoaXMgaXMgdGhlIGxpbmsgdGhhdCBpcyBmZXRjaGVk
IGJ5IHRoZSBwcmVmZXRjaC1vbmxvYWQgdGVzdApJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Z3RrL1NraXBwZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBw
ZWQJKHJldmlzaW9uIDYyNjkzKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQJ
KHdvcmtpbmcgY29weSkKQEAgLTU3NTQsNiArNTc1NCw5IEBAIGZhc3QvZm9ybXMvc2xpZGVyLXRy
YW5zZm9ybWVkLmh0bWwKIGZhc3QvZm9ybXMvc2xpZGVyLW1vdXNlLWV2ZW50cy5odG1sCiBmYXN0
L2Zvcm1zL3NsaWRlci16b29tZWQuaHRtbAogCisjIExpbmsgcHJlZmV0Y2ggaXMgZGlzYWJsZWQg
YnkgZGVmYXVsdAorI2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC5odG1sCisKICMg
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhZ2VQcm9wZXJ0eSBpcyBub3QgaW1wbGVtZW50ZWQgZm9y
IEdUSyB5ZXQuCiBwcmludGluZy9wYWdlLXJ1bGUtc2VsZWN0aW9uLmh0bWwKIApJbmRleDogTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL1NraXBwZWQJKHJldmlzaW9uIDYyNjkzKQorKysgTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTI4Miw2ICsyODIsOSBAQCBzdG9y
YWdlL2luZGV4ZWRkYgogZmFzdC9kb20vRGV2aWNlT3JpZW50YXRpb24KIGZhc3QvZG9tL1dpbmRv
dy93aW5kb3ctcHJvcGVydGllcy1kZXZpY2Utb3JpZW50YXRpb24uaHRtbAogCisjIExpbmsgcHJl
ZmV0Y2ggaXMgZGlzYWJsZWQgYnkgZGVmYXVsdAorI2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9w
cmVmZXRjaC5odG1sCisKICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTM5OTA4CiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9tYXhpbXVtLWFnZS5odG1sCiAKSW5kZXg6IExh
eW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
cGxhdGZvcm0vcXQvU2tpcHBlZAkocmV2aXNpb24gNjI2OTMpCisrKyBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9xdC9Ta2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC01NDA2LDYgKzU0MDYsOSBAQCBzdmcv
VzNDLVNWRy0xLjEvZmlsdGVycy1saWdodC0wNC1mLnN2ZwogIyA9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PSAjCiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9jYWxsYmFjay10by1yZW1vdGUtY29udGV4dDIuaHRt
bAogCisjIExpbmsgcHJlZmV0Y2ggaXMgZGlzYWJsZWQgYnkgZGVmYXVsdAorI2Zhc3QvZG9tL0hU
TUxMaW5rRWxlbWVudC9wcmVmZXRjaC5odG1sCisKICMgRmFpbGluZyBhZnRlciBlbmFibGluZyBI
VE1MNSBwYXJzZXIgaW4gcjYxMjM0CiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00MDY2MQogZmFzdC9lbmNvZGluZy9qYXBhbmVzZS1lbmNvZGluZy1taXguaHRtbApJ
bmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQJKHJldmlzaW9uIDYyNjkzKQorKysgTGF5b3V0
VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTkwMCw2ICs5MDAs
OSBAQCBzdG9yYWdlL2luZGV4ZWRkYgogZmFzdC9kb20vRGV2aWNlT3JpZW50YXRpb24KIGZhc3Qv
ZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1kZXZpY2Utb3JpZW50YXRpb24uaHRtbAogCisj
IExpbmsgcHJlZmV0Y2ggaXMgZGlzYWJsZWQgYnkgZGVmYXVsdAorZmFzdC9kb20vSFRNTExpbmtF
bGVtZW50L3ByZWZldGNoLmh0bWwKKwogIyBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGFnZVByb3Bl
cnR5IGlzIG5vdCBpbXBsZW1lbnRlZCBmb3IgV0lOIHlldC4KIHByaW50aW5nL3BhZ2UtcnVsZS1z
ZWxlY3Rpb24uaHRtbAogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60868</attachid>
            <date>2010-07-08 05:33:38 -0700</date>
            <delta_ts>2010-07-08 07:02:57 -0700</delta_ts>
            <desc>fixed chromium fat finger</desc>
            <filename>3652-per-abarth.txt</filename>
            <type>text/plain</type>
            <size>38034</size>
            <attacher name="Gavin Peters">gavinp</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDYyNjk5KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTAtMDctMDcgIEdhdmluIFBl
dGVycyAgPGdhdmlucEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgYWRkIHN1cHBvcnQgZm9yIGxpbmsgcHJlZmV0Y2hpbmcKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2NTIKKworICAg
ICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgorCiAyMDEwLTA3
LTA3ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgU2FtIFdlaW5pZy4KSW5kZXg6IEphdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1
cmVEZWZpbmVzLnhjY29uZmlnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0NvbmZpZ3Vy
YXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCShyZXZpc2lvbiA2MjY5MykKKysrIEphdmFT
Y3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCSh3b3JraW5n
IGNvcHkpCkBAIC0zMSw2ICszMSw4IEBACiAKIC8vIFNldCBhbnkgRU5BQkxFX0ZFQVRVUkVfTkFN
RSBtYWNybyB0byBhbiBlbXB0eSBzdHJpbmcgdG8gZGlzYWJsZSB0aGF0IGZlYXR1cmUuCiAKK0VO
QUJMRV9MSU5LX1BSRUZFVENIID0gOworCiBFTkFCTEVfM0RfQ0FOVkFTID0gJChFTkFCTEVfM0Rf
Q0FOVkFTXyQoVEFSR0VUX01BQ19PU19YX1ZFUlNJT05fTUFKT1IpKTsKIEVOQUJMRV8zRF9DQU5W
QVNfMTA1MCA9IEVOQUJMRV8zRF9DQU5WQVM7CiBFTkFCTEVfM0RfQ0FOVkFTXzEwNjAgPSBFTkFC
TEVfM0RfQ0FOVkFTOwpAQCAtODQsNSArODYsNCBAQCBFTkFCTEVfWEhUTUxNUCA9IDsKIEVOQUJM
RV9YUEFUSCA9IEVOQUJMRV9YUEFUSDsKIEVOQUJMRV9YU0xUID0gRU5BQkxFX1hTTFQ7CiAKLUZF
QVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX0NBTlZBUykgJChFTkFCTEVfM0RfUkVOREVSSU5H
KSAkKEVOQUJMRV9CTE9CX1NMSUNFKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFC
TEVfQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9EQVRBQkFTRSkgJChFTkFCTEVf
REFUQUdSSUQpICQoRU5BQkxFX0RBVEFMSVNUKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04p
ICQoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQpICQoRU5BQkxFX0RPTV9TVE9SQUdFKSAkKEVOQUJM
RV9FVkVOVFNPVVJDRSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfRklMRV9SRUFERVIpICQo
RU5BQkxFX0ZJTEVfV1JJVEVSKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSUNPTkRB
VEFCQVNFKSAkKEVOQUJMRV9JTUFHRV9SRVNJWkVSKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNF
KSAkKEVOQUJMRV9JTlBVVF9TUEVFQ0gpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQo
RU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVURVJfVEFHKSAkKEVOQUJMRV9OT1RJRklDQVRJT05T
KSAkKEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpICQoRU5BQkxFX1BST0dSRVNTX1RB
RykgJChFTkFCTEVfUlVCWSkgJChFTkFCTEVfU0FOREJPWCkgJChFTkFCTEVfU0hBUkVEX1dPUktF
UlMpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0FOSU1BVElPTikgJChFTkFCTEVfU1ZHX0FT
X0lNQUdFKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpICQoRU5BQkxFX1NWR19GT05U
UykgJChFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUKSAkKEVOQUJMRV9TVkdfVVNFKSAkKEVOQUJM
RV9WSURFTykgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5B
QkxFX1dNTCkgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWEhUTUxNUCkgJChFTkFCTEVfWFBB
VEgpICQoRU5BQkxFX1hTTFQpOwotCitGRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV9MSU5LX1BS
RUZFVENIKSAkKEVOQUJMRV8zRF9DQU5WQVMpICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFC
TEVfQkxPQl9TTElDRSkgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NMSUVO
VF9CQVNFRF9HRU9MT0NBVElPTikgJChFTkFCTEVfREFUQUJBU0UpICQoRU5BQkxFX0RBVEFHUklE
KSAkKEVOQUJMRV9EQVRBTElTVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJM
RV9ESVJFQ1RPUllfVVBMT0FEKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVfRVZFTlRT
T1VSQ0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZJTEVfUkVBREVSKSAkKEVOQUJMRV9G
SUxFX1dSSVRFUikgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFTRSkg
JChFTkFCTEVfSU1BR0VfUkVTSVpFUikgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFC
TEVfSU5QVVRfU1BFRUNIKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9N
QVRITUwpICQoRU5BQkxFX01FVEVSX1RBRykgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFC
TEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKSAkKEVOQUJMRV9QUk9HUkVTU19UQUcpICQoRU5B
QkxFX1JVQlkpICQoRU5BQkxFX1NBTkRCT1gpICQoRU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAkKEVO
QUJMRV9TVkcpICQoRU5BQkxFX1NWR19BTklNQVRJT04pICQoRU5BQkxFX1NWR19BU19JTUFHRSkg
JChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5B
QkxFX1NWR19GT1JFSUdOX09CSkVDVCkgJChFTkFCTEVfU1ZHX1VTRSkgJChFTkFCTEVfVklERU8p
ICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVOQUJMRV9XTUwp
ICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hIVE1MTVApICQoRU5BQkxFX1hQQVRIKSAkKEVO
QUJMRV9YU0xUKTsKSW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA2MjY5OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsNTIgQEAKKzIwMTAtMDctMDcgIEdhdmluIFBldGVycyAgPGdh
dmlucEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgYmFzZWQgbW9zdGx5IG9uIGEgcGF0Y2ggYnkgTGVvbiBDbGFya2UsIGxlb25j
bGFya2VAZ29vZ2xlLmNvbQorCisgICAgICAgIGFkZCBzdXBwb3J0IGZvciBsaW5rIHByZWZldGNo
aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjUy
CisKKyAgICAgICAgVGVzdDogZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLmh0bWwK
KworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgorICAg
ICAgICAqIGh0bWwvSFRNTExpbmtFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxM
aW5rRWxlbWVudDo6dG9rZW5pemVSZWxBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TExpbmtFbGVtZW50Ojpwcm9jZXNzKToKKyAgICAgICAgKiBodG1sL0hUTUxMaW5rRWxlbWVudC5o
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50OjpSZWxBdHRyaWJ1dGU6OlJlbEF0
dHJpYnV0ZSk6CisgICAgICAgICogbG9hZGVyL0NhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZVJlc291cmNlKToKKyAgICAgICAgKiBsb2FkZXIvQ2FjaGVkUmVzb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmRhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkUmVzb3VyY2U6OmRpZEFkZENsaWVudCk6CisgICAgICAgICogbG9hZGVyL0NhY2hl
ZFJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjplcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRSZXNvdXJjZTo6aXNQcmVmZXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNv
dXJjZTo6c2NoZWR1bGUpOgorICAgICAgICAqIGxvYWRlci9DYWNoZWRTY3JpcHQuY3BwOgorICAg
ICAgICAqIGxvYWRlci9DYWNoZWRTY3JpcHQuaDoKKyAgICAgICAgKiBsb2FkZXIvRG9jTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY0xvYWRlcjo6cmVxdWVzdExpbmtQcmVmZXRjaCk6
CisgICAgICAgIChXZWJDb3JlOjpEb2NMb2FkZXI6OmNhblJlcXVlc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jTG9hZGVyOjppbmNyZW1lbnRSZXF1ZXN0Q291bnQpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jTG9hZGVyOjpkZWNyZW1lbnRSZXF1ZXN0Q291bnQpOgorICAgICAgICAqIGxvYWRlci9E
b2NMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvbG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNhY2hlZFJlc291cmNlVHlwZVRvVGFyZ2V0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpM
b2FkZXI6OmRldGVybWluZVByaW9yaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRlcjo6bG9h
ZCk6CisgICAgICAgIChXZWJDb3JlOjpMb2FkZXI6Okhvc3Q6OnNlcnZlUGVuZGluZ1JlcXVlc3Rz
KToKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRlcjo6SG9zdDo6ZGlkRmluaXNoTG9hZGluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpMb2FkZXI6Okhvc3Q6OmRpZEZhaWwpOgorICAgICAgICAoV2ViQ29y
ZTo6TG9hZGVyOjpIb3N0OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6
TG9hZGVyOjpIb3N0OjpjYW5jZWxQZW5kaW5nUmVxdWVzdHMpOgorICAgICAgICAqIGxvYWRlci9s
b2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRlcjo6KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdEJhc2U6Oik6CisKIDIwMTAtMDctMDcgIEFkYW0gQmFydGggIDxhYmFydGhAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpJbmRleDogV2ViQ29y
ZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCShyZXZpc2lvbiA2
MjY5MykKKysrIFdlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcJ
KHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDggQEAKIAogLy8gU2V0IGFueSBFTkFCTEVfRkVB
VFVSRV9OQU1FIG1hY3JvIHRvIGFuIGVtcHR5IHN0cmluZyB0byBkaXNhYmxlIHRoYXQgZmVhdHVy
ZS4KIAorRU5BQkxFX0xJTktfUFJFRkVUQ0ggPSA7CisKIEVOQUJMRV8zRF9DQU5WQVMgPSAkKEVO
QUJMRV8zRF9DQU5WQVNfJChUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUikpOwogRU5BQkxF
XzNEX0NBTlZBU18xMDUwID0gRU5BQkxFXzNEX0NBTlZBUzsKIEVOQUJMRV8zRF9DQU5WQVNfMTA2
MCA9IEVOQUJMRV8zRF9DQU5WQVM7CkBAIC04NCw1ICs4Niw0IEBAIEVOQUJMRV9YSFRNTE1QID0g
OwogRU5BQkxFX1hQQVRIID0gRU5BQkxFX1hQQVRIOwogRU5BQkxFX1hTTFQgPSBFTkFCTEVfWFNM
VDsKIAotRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfQ0FOVkFTKSAkKEVOQUJMRV8zRF9S
RU5ERVJJTkcpICQoRU5BQkxFX0JMT0JfU0xJQ0UpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5H
KSAkKEVOQUJMRV9DTElFTlRfQkFTRURfR0VPTE9DQVRJT04pICQoRU5BQkxFX0RBVEFCQVNFKSAk
KEVOQUJMRV9EQVRBR1JJRCkgJChFTkFCTEVfREFUQUxJU1QpICQoRU5BQkxFX0RFVklDRV9PUklF
TlRBVElPTikgJChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCkgJChFTkFCTEVfRE9NX1NUT1JBR0Up
ICQoRU5BQkxFX0VWRU5UU09VUkNFKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GSUxFX1JF
QURFUikgJChFTkFCTEVfRklMRV9XUklURVIpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJM
RV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lNQUdFX1JFU0laRVIpICQoRU5BQkxFX0lOREVYRURf
REFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJV
R0dFUikgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRVRFUl9UQUcpICQoRU5BQkxFX05PVElG
SUNBVElPTlMpICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVfUFJP
R1JFU1NfVEFHKSAkKEVOQUJMRV9SVUJZKSAkKEVOQUJMRV9TQU5EQk9YKSAkKEVOQUJMRV9TSEFS
RURfV09SS0VSUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJM
RV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVf
U1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0Up
ICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlO
RykgJChFTkFCTEVfV01MKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YSFRNTE1QKSAkKEVO
QUJMRV9YUEFUSCkgJChFTkFCTEVfWFNMVCk7Ci0KK0ZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxF
X0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFXzNEX0NBTlZBUykgJChFTkFCTEVfM0RfUkVOREVSSU5H
KSAkKEVOQUJMRV9CTE9CX1NMSUNFKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFC
TEVfQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9EQVRBQkFTRSkgJChFTkFCTEVf
REFUQUdSSUQpICQoRU5BQkxFX0RBVEFMSVNUKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04p
ICQoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQpICQoRU5BQkxFX0RPTV9TVE9SQUdFKSAkKEVOQUJM
RV9FVkVOVFNPVVJDRSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfRklMRV9SRUFERVIpICQo
RU5BQkxFX0ZJTEVfV1JJVEVSKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSUNPTkRB
VEFCQVNFKSAkKEVOQUJMRV9JTUFHRV9SRVNJWkVSKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNF
KSAkKEVOQUJMRV9JTlBVVF9TUEVFQ0gpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQo
RU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVURVJfVEFHKSAkKEVOQUJMRV9OT1RJRklDQVRJT05T
KSAkKEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpICQoRU5BQkxFX1BST0dSRVNTX1RB
RykgJChFTkFCTEVfUlVCWSkgJChFTkFCTEVfU0FOREJPWCkgJChFTkFCTEVfU0hBUkVEX1dPUktF
UlMpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0FOSU1BVElPTikgJChFTkFCTEVfU1ZHX0FT
X0lNQUdFKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpICQoRU5BQkxFX1NWR19GT05U
UykgJChFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUKSAkKEVOQUJMRV9TVkdfVVNFKSAkKEVOQUJM
RV9WSURFTykgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5B
QkxFX1dNTCkgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWEhUTUxNUCkgJChFTkFCTEVfWFBB
VEgpICQoRU5BQkxFX1hTTFQpOwpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAJKHJldmlz
aW9uIDYyNjkzKQorKysgV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE0NCwxMiArMTQ0LDE5IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50Ojp0b2tlbml6
ZVJlbEF0dHJpYnUKICAgICByZWxBdHRyaWJ1dGUubV9pc0ljb24gPSBmYWxzZTsKICAgICByZWxB
dHRyaWJ1dGUubV9pc0FsdGVybmF0ZSA9IGZhbHNlOwogICAgIHJlbEF0dHJpYnV0ZS5tX2lzRE5T
UHJlZmV0Y2ggPSBmYWxzZTsKKyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKKyAgICByZWxBdHRy
aWJ1dGUubV9pc0xpbmtQcmVmZXRjaCA9IGZhbHNlOworI2VuZGlmCiAgICAgaWYgKGVxdWFsSWdu
b3JpbmdDYXNlKHJlbCwgInN0eWxlc2hlZXQiKSkKICAgICAgICAgcmVsQXR0cmlidXRlLm1faXNT
dHlsZVNoZWV0ID0gdHJ1ZTsKICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShyZWwsICJp
Y29uIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UocmVsLCAic2hvcnRjdXQgaWNvbiIpKQogICAgICAg
ICByZWxBdHRyaWJ1dGUubV9pc0ljb24gPSB0cnVlOwogICAgIGVsc2UgaWYgKGVxdWFsSWdub3Jp
bmdDYXNlKHJlbCwgImRucy1wcmVmZXRjaCIpKQogICAgICAgICByZWxBdHRyaWJ1dGUubV9pc0RO
U1ByZWZldGNoID0gdHJ1ZTsKKyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKKyAgICBlbHNlIGlm
IChlcXVhbElnbm9yaW5nQ2FzZShyZWwsICJwcmVmZXRjaCIpKQorICAgICAgICByZWxBdHRyaWJ1
dGUubV9pc0xpbmtQcmVmZXRjaCA9IHRydWU7CisjZW5kaWYKICAgICBlbHNlIGlmIChlcXVhbEln
bm9yaW5nQ2FzZShyZWwsICJhbHRlcm5hdGUgc3R5bGVzaGVldCIpIHx8IGVxdWFsSWdub3JpbmdD
YXNlKHJlbCwgInN0eWxlc2hlZXQgYWx0ZXJuYXRlIikpIHsKICAgICAgICAgcmVsQXR0cmlidXRl
Lm1faXNTdHlsZVNoZWV0ID0gdHJ1ZTsKICAgICAgICAgcmVsQXR0cmlidXRlLm1faXNBbHRlcm5h
dGUgPSB0cnVlOwpAQCAtMTg2LDYgKzE5MywxMSBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6cHJv
Y2VzcygpCiAgICAgaWYgKG1fcmVsQXR0cmlidXRlLm1faXNETlNQcmVmZXRjaCAmJiBtX3VybC5p
c1ZhbGlkKCkgJiYgIW1fdXJsLmlzRW1wdHkoKSkKICAgICAgICAgUmVzb3VyY2VIYW5kbGU6OnBy
ZXBhcmVGb3JVUkwobV91cmwpOwogCisjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCisgICAgaWYg
KG1fcmVsQXR0cmlidXRlLm1faXNMaW5rUHJlZmV0Y2ggJiYgbV91cmwuaXNWYWxpZCgpKQorICAg
ICAgICBkb2N1bWVudCgpLT5kb2NMb2FkZXIoKS0+cmVxdWVzdExpbmtQcmVmZXRjaChtX3VybCk7
CisjZW5kaWYKKwogICAgIGJvb2wgYWNjZXB0SWZUeXBlQ29udGFpbnNUZXh0Q1NTID0gZG9jdW1l
bnQoKS0+cGFnZSgpICYmIGRvY3VtZW50KCktPnBhZ2UoKS0+c2V0dGluZ3MoKSAmJiBkb2N1bWVu
dCgpLT5wYWdlKCktPnNldHRpbmdzKCktPnRyZWF0c0FueVRleHRDU1NMaW5rQXNTdHlsZXNoZWV0
KCk7CiAKICAgICAvLyBTdHlsZXNoZWV0CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCShyZXZp
c2lvbiA2MjY5MykKKysrIFdlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMzEsNiArMzEsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNo
ZWRDU1NTdHlsZVNoZWV0OworY2xhc3MgQ2FjaGVkTGlua1ByZWZldGNoOwogY2xhc3MgS1VSTDsK
IAogY2xhc3MgSFRNTExpbmtFbGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50LCBwdWJsaWMgQ2Fj
aGVkUmVzb3VyY2VDbGllbnQgewpAQCAtNDAsOCArNDEsMjAgQEAgcHVibGljOgogICAgICAgICBi
b29sIG1faXNJY29uOwogICAgICAgICBib29sIG1faXNBbHRlcm5hdGU7CiAgICAgICAgIGJvb2wg
bV9pc0ROU1ByZWZldGNoOworI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQorICAgICAgICBib29s
IG1faXNMaW5rUHJlZmV0Y2g7CisjZW5kaWYKIAotICAgICAgICBSZWxBdHRyaWJ1dGUoKSA6IG1f
aXNTdHlsZVNoZWV0KGZhbHNlKSwgbV9pc0ljb24oZmFsc2UpLCBtX2lzQWx0ZXJuYXRlKGZhbHNl
KSwgbV9pc0ROU1ByZWZldGNoKGZhbHNlKSB7IH0KKyAgICAgICAgUmVsQXR0cmlidXRlKCkKKyAg
ICAgICAgICAgIDogbV9pc1N0eWxlU2hlZXQoZmFsc2UpCisgICAgICAgICAgICAsIG1faXNJY29u
KGZhbHNlKQorICAgICAgICAgICAgLCBtX2lzQWx0ZXJuYXRlKGZhbHNlKQorICAgICAgICAgICAg
LCBtX2lzRE5TUHJlZmV0Y2goZmFsc2UpCisjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCisgICAg
ICAgICAgICAsIG1faXNMaW5rUHJlZmV0Y2goZmFsc2UpCisjZW5kaWYKKyAgICAgICAgICAgIHsg
CisgICAgICAgICAgICB9CiAgICAgfTsKIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxMaW5r
RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCosIGJvb2wgY3Jl
YXRlZEJ5UGFyc2VyKTsKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0NhY2hlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2xvYWRlci9DYWNoZS5jcHAJKHJldmlzaW9uIDYyNjkzKQorKysgV2ViQ29y
ZS9sb2FkZXIvQ2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Niw2ICs4NiwxMCBAQCBzdGF0
aWMgQ2FjaGVkUmVzb3VyY2UqIGNyZWF0ZVJlc291cmNlKENhCiAgICAgY2FzZSBDYWNoZWRSZXNv
dXJjZTo6WEJMU3R5bGVTaGVldDoKICAgICAgICAgcmV0dXJuIG5ldyBDYWNoZWRYQkxEb2N1bWVu
dCh1cmwuc3RyaW5nKCkpOwogI2VuZGlmCisjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCisgICAg
Y2FzZSBDYWNoZWRSZXNvdXJjZTo6TGlua1ByZWZldGNoOgorICAgICAgICByZXR1cm4gbmV3IENh
Y2hlZFJlc291cmNlKHVybC5zdHJpbmcoKSwgQ2FjaGVkUmVzb3VyY2U6OkxpbmtQcmVmZXRjaCk7
CisjZW5kaWYKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CkluZGV4OiBXZWJD
b3JlL2xvYWRlci9DYWNoZWRSZXNvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2Fk
ZXIvQ2FjaGVkUmVzb3VyY2UuY3BwCShyZXZpc2lvbiA2MjY5MykKKysrIFdlYkNvcmUvbG9hZGVy
L0NhY2hlZFJlc291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsOCBAQAogCiAj
aW5jbHVkZSAiQ2FjaGUuaCIKICNpbmNsdWRlICJDYWNoZWRNZXRhZGF0YS5oIgorI2luY2x1ZGUg
IkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnRX
YWxrZXIuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIkRv
Y0xvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC0xMDgsNiArMTEwLDE2IEBAIHZvaWQg
Q2FjaGVkUmVzb3VyY2U6OmxvYWQoRG9jTG9hZGVyKiBkb2MKICAgICBtX2xvYWRpbmcgPSB0cnVl
OwogfQogCit2b2lkIENhY2hlZFJlc291cmNlOjpkYXRhKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVy
PiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit7CisgICAgaWYgKCFhbGxEYXRhUmVjZWl2ZWQpCisg
ICAgICAgIHJldHVybjsKKyAgICAKKyAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlciB3KG1f
Y2xpZW50cyk7CisgICAgd2hpbGUgKENhY2hlZFJlc291cmNlQ2xpZW50KiBjID0gdy5uZXh0KCkp
CisgICAgICAgIGMtPm5vdGlmeUZpbmlzaGVkKHRoaXMpOworfQorCiB2b2lkIENhY2hlZFJlc291
cmNlOjpmaW5pc2goKQogewogICAgIG1fc3RhdHVzID0gQ2FjaGVkOwpAQCAtMjA0LDYgKzIxNiwx
MiBAQCB2b2lkIENhY2hlZFJlc291cmNlOjphZGRDbGllbnQoQ2FjaGVkUmVzCiAgICAgZGlkQWRk
Q2xpZW50KGNsaWVudCk7CiB9CiAKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OmRpZEFkZENsaWVudChD
YWNoZWRSZXNvdXJjZUNsaWVudCogYykKK3sKKyAgICBpZiAoIWlzTG9hZGluZygpKQorICAgICAg
ICBjLT5ub3RpZnlGaW5pc2hlZCh0aGlzKTsKK30KKwogdm9pZCBDYWNoZWRSZXNvdXJjZTo6YWRk
Q2xpZW50VG9TZXQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqIGNsaWVudCkKIHsKICAgICBBU1NFUlQo
IWlzUHVyZ2VhYmxlKCkpOwpJbmRleDogV2ViQ29yZS9sb2FkZXIvQ2FjaGVkUmVzb3VyY2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9DYWNoZWRSZXNvdXJjZS5oCShyZXZpc2lvbiA2
MjY5MykKKysrIFdlYkNvcmUvbG9hZGVyL0NhY2hlZFJlc291cmNlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTY0LDYgKzY0LDkgQEAgcHVibGljOgogI2lmIEVOQUJMRShYQkwpCiAgICAgICAgICwgWEJM
CiAjZW5kaWYKKyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKKyAgICAgICAgLCBMaW5rUHJlZmV0
Y2gKKyNlbmRpZgogICAgIH07CiAKICAgICBlbnVtIFN0YXR1cyB7CkBAIC04Miw4ICs4NSw4IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSB7
IH0KICAgICB2aXJ0dWFsIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygp
OyB9Ci0gICAgdmlydHVhbCB2b2lkIGRhdGEoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGVycm9yKCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBkYXRhKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhLCBi
b29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgdmlydHVhbCB2b2lkIGVycm9yKCkgeyB9CiAgICAg
dmlydHVhbCB2b2lkIGh0dHBTdGF0dXNDb2RlRXJyb3IoKSB7IGVycm9yKCk7IH0gLy8gSW1hZ2Vz
IGtlZXAgbG9hZGluZyBpbiBzcGl0ZSBvZiBIVFRQIGVycm9ycyAoZm9yIGxlZ2FjeSBjb21wYXQg
d2l0aCA8aW1nPiwgZXRjLikuCiAKICAgICBjb25zdCBTdHJpbmcgJnVybCgpIGNvbnN0IHsgcmV0
dXJuIG1fdXJsOyB9CkBAIC0xMDMsNyArMTA2LDcgQEAgcHVibGljOgogICAgIFByZWxvYWRSZXN1
bHQgcHJlbG9hZFJlc3VsdCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFByZWxvYWRSZXN1
bHQ+KG1fcHJlbG9hZFJlc3VsdCk7IH0KICAgICB2b2lkIHNldFJlcXVlc3RlZEZyb21OZXR3b3Jr
aW5nTGF5ZXIoKSB7IG1fcmVxdWVzdGVkRnJvbU5ldHdvcmtpbmdMYXllciA9IHRydWU7IH0KIAot
ICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCopOwog
ICAgIHZpcnR1YWwgdm9pZCBhbGxDbGllbnRzUmVtb3ZlZCgpIHsgfQogCiAgICAgdW5zaWduZWQg
Y291bnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudHMuc2l6ZSgpOyB9CkBAIC0xMjIsNiArMTI1
LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldExvYWRpbmcoYm9vbCBiKSB7IG1fbG9hZGluZyA9
IGI7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBpc0ltYWdlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KKyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKKyAgICB2aXJ0dWFsIGJvb2wgaXNQcmVmZXRj
aCgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSAhPSBMaW5rUHJlZmV0Y2g7IH0KKyNlbHNlCisgICAg
dmlydHVhbCBib29sIGlzUHJlZmV0Y2goKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorI2VuZGlm
CiAKICAgICB1bnNpZ25lZCBhY2Nlc3NDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fYWNjZXNzQ291
bnQ7IH0KICAgICB2b2lkIGluY3JlYXNlQWNjZXNzQ291bnQoKSB7IG1fYWNjZXNzQ291bnQrKzsg
fQpAQCAtMTYyLDcgKzE3MCw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNFeHBpcmVkKCkgY29u
c3Q7CiAKLSAgICB2aXJ0dWFsIGJvb2wgc2NoZWR1bGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQorICAgIHZpcnR1YWwgYm9vbCBzY2hlZHVsZSgpIGNvbnN0IHsgcmV0dXJuIGlzUHJlZmV0Y2go
KTsgfQogCiAgICAgLy8gTGlzdCBvZiBhY2NlcHRhYmxlIE1JTUUgdHlwZXMgc2VwYXJhdGVkIGJ5
ICIsIi4KICAgICAvLyBBIE1JTUUgdHlwZSBtYXkgY29udGFpbiBhIHdpbGRjYXJkLCBlLmcuICJ0
ZXh0LyoiLgpJbmRleDogV2ViQ29yZS9sb2FkZXIvQ2FjaGVkU2NyaXB0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2xvYWRlci9DYWNoZWRTY3JpcHQuY3BwCShyZXZpc2lvbiA2MjY5MykKKysr
IFdlYkNvcmUvbG9hZGVyL0NhY2hlZFNjcmlwdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDEy
ICs1MSw2IEBAIENhY2hlZFNjcmlwdDo6fkNhY2hlZFNjcmlwdCgpCiB7CiB9CiAKLXZvaWQgQ2Fj
aGVkU2NyaXB0OjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqIGMpCi17Ci0gICAg
aWYgKCFpc0xvYWRpbmcoKSkKLSAgICAgICAgYy0+bm90aWZ5RmluaXNoZWQodGhpcyk7Ci19Ci0K
IHZvaWQgQ2FjaGVkU2NyaXB0OjphbGxDbGllbnRzUmVtb3ZlZCgpCiB7CiAgICAgbV9kZWNvZGVk
RGF0YURlbGV0aW9uVGltZXIuc3RhcnRPbmVTaG90KDApOwpJbmRleDogV2ViQ29yZS9sb2FkZXIv
Q2FjaGVkU2NyaXB0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvQ2FjaGVkU2NyaXB0
LmgJKHJldmlzaW9uIDYyNjkzKQorKysgV2ViQ29yZS9sb2FkZXIvQ2FjaGVkU2NyaXB0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAg
ICAgIGNvbnN0IFN0cmluZyYgc2NyaXB0KCk7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZEFk
ZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgYWxs
Q2xpZW50c1JlbW92ZWQoKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0RW5jb2RpbmcoY29u
c3QgU3RyaW5nJik7CkluZGV4OiBXZWJDb3JlL2xvYWRlci9Eb2NMb2FkZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0RvY0xvYWRlci5jcHAJKHJldmlzaW9uIDYyNjkzKQorKysg
V2ViQ29yZS9sb2FkZXIvRG9jTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY4LDYgKzE2
OCwxMyBAQCBDYWNoZWRYQkxEb2N1bWVudCogRG9jTG9hZGVyOjpyZXF1ZXN0WEJMCiB9CiAjZW5k
aWYKIAorI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQorQ2FjaGVkUmVzb3VyY2UqIERvY0xvYWRl
cjo6cmVxdWVzdExpbmtQcmVmZXRjaChjb25zdCBTdHJpbmcmIHVybCkKK3sKKyAgICByZXR1cm4g
cmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpMaW5rUHJlZmV0Y2gsIHVybCwgU3RyaW5n
KCkpOworfQorI2VuZGlmCisKIGJvb2wgRG9jTG9hZGVyOjpjYW5SZXF1ZXN0KENhY2hlZFJlc291
cmNlOjpUeXBlIHR5cGUsIGNvbnN0IEtVUkwmIHVybCkKIHsKICAgICAvLyBTb21lIHR5cGVzIG9m
IHJlc291cmNlcyBjYW4gYmUgbG9hZGVkIG9ubHkgZnJvbSB0aGUgc2FtZSBvcmlnaW4uICBPdGhl
cgpAQCAtMTc4LDYgKzE4NSw5IEBAIGJvb2wgRG9jTG9hZGVyOjpjYW5SZXF1ZXN0KENhY2hlZFJl
c291cmMKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpDU1NTdHlsZVNoZWV0OgogICAgIGNhc2Ug
Q2FjaGVkUmVzb3VyY2U6OlNjcmlwdDoKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpGb250UmVz
b3VyY2U6CisjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCisgICAgY2FzZSBDYWNoZWRSZXNvdXJj
ZTo6TGlua1ByZWZldGNoOgorI2VuZGlmCiAgICAgICAgIC8vIFRoZXNlIHR5cGVzIG9mIHJlc291
cmNlcyBjYW4gYmUgbG9hZGVkIGZyb20gYW55IG9yaWdpbi4KICAgICAgICAgLy8gRklYTUU6IEFy
ZSB3ZSBzdXJlIGFib3V0IENhY2hlZFJlc291cmNlOjpGb250UmVzb3VyY2U/CiAgICAgICAgIGJy
ZWFrOwpAQCAtMjI4LDYgKzIzOCwxMSBAQCBib29sIERvY0xvYWRlcjo6Y2FuUmVxdWVzdChDYWNo
ZWRSZXNvdXJjCiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQorI2lmIEVOQUJMRShM
SU5LX1BSRUZFVENIKQorICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkxpbmtQcmVmZXRjaDoKKyAg
ICAgICAgLy8gUHJlZmV0Y2ggY2Fubm90IGFmZmVjdCB0aGUgY3VycmVudCBkb2N1bWVudC4KKyAg
ICAgICAgYnJlYWs7CisjZW5kaWYKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICAgICAgYnJlYWs7CkBAIC0zNTUsMTMgKzM3MCwxOSBAQCB2b2lkIERvY0xv
YWRlcjo6Y2hlY2tDYWNoZU9iamVjdFN0YXR1cyhDCiAgICAgZnJhbWUoKS0+bG9hZGVyKCktPmxv
YWRlZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKHJlc291cmNlKTsKIH0KIAotdm9pZCBEb2NMb2Fk
ZXI6OmluY3JlbWVudFJlcXVlc3RDb3VudCgpCit2b2lkIERvY0xvYWRlcjo6aW5jcmVtZW50UmVx
dWVzdENvdW50KGNvbnN0IENhY2hlZFJlc291cmNlKiByZXMpCiB7CisgICAgaWYgKHJlcy0+aXNQ
cmVmZXRjaCgpKQorICAgICAgICByZXR1cm47CisKICAgICArK21fcmVxdWVzdENvdW50OwogfQog
Ci12b2lkIERvY0xvYWRlcjo6ZGVjcmVtZW50UmVxdWVzdENvdW50KCkKK3ZvaWQgRG9jTG9hZGVy
OjpkZWNyZW1lbnRSZXF1ZXN0Q291bnQoY29uc3QgQ2FjaGVkUmVzb3VyY2UqIHJlcykKIHsKKyAg
ICBpZiAocmVzLT5pc1ByZWZldGNoKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIC0tbV9yZXF1
ZXN0Q291bnQ7CiAgICAgQVNTRVJUKG1fcmVxdWVzdENvdW50ID4gLTEpOwogfQpJbmRleDogV2Vi
Q29yZS9sb2FkZXIvRG9jTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRG9j
TG9hZGVyLmgJKHJldmlzaW9uIDYyNjkzKQorKysgV2ViQ29yZS9sb2FkZXIvRG9jTG9hZGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTY3LDYgKzY3LDkgQEAgcHVibGljOgogI2lmIEVOQUJMRShYQkwp
CiAgICAgQ2FjaGVkWEJMRG9jdW1lbnQqIHJlcXVlc3RYQkxEb2N1bWVudChjb25zdCBTdHJpbmcg
JnVybCk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKKyAgICBDYWNoZWRSZXNv
dXJjZSogcmVxdWVzdExpbmtQcmVmZXRjaChjb25zdCBTdHJpbmcgJnVybCk7CisjZW5kaWYKIAog
ICAgIC8vIExvZ3MgYW4gYWNjZXNzIGRlbmllZCBtZXNzYWdlIHRvIHRoZSBjb25zb2xlIGZvciB0
aGUgc3BlY2lmaWVkIFVSTC4KICAgICB2b2lkIHByaW50QWNjZXNzRGVuaWVkTWVzc2FnZShjb25z
dCBLVVJMJiB1cmwpIGNvbnN0OwpAQCAtOTEsOCArOTQsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAg
dm9pZCBzZXRBbGxvd1N0YWxlUmVzb3VyY2VzKGJvb2wgYWxsb3dTdGFsZVJlc291cmNlcykgeyBt
X2FsbG93U3RhbGVSZXNvdXJjZXMgPSBhbGxvd1N0YWxlUmVzb3VyY2VzOyB9CiAKLSAgICB2b2lk
IGluY3JlbWVudFJlcXVlc3RDb3VudCgpOwotICAgIHZvaWQgZGVjcmVtZW50UmVxdWVzdENvdW50
KCk7CisgICAgdm9pZCBpbmNyZW1lbnRSZXF1ZXN0Q291bnQoY29uc3QgQ2FjaGVkUmVzb3VyY2Uq
KTsKKyAgICB2b2lkIGRlY3JlbWVudFJlcXVlc3RDb3VudChjb25zdCBDYWNoZWRSZXNvdXJjZSop
OwogICAgIGludCByZXF1ZXN0Q291bnQoKTsKICAgICAKICAgICB2b2lkIGNsZWFyUHJlbG9hZHMo
KTsKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL2xvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9sb2FkZXIvbG9hZGVyLmNwcAkocmV2aXNpb24gNjI2OTMpCisrKyBXZWJDb3JlL2xvYWRlci9s
b2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSw3ICs4OSwxMiBAQCBzdGF0aWMgUmVzb3Vy
Y2VSZXF1ZXN0OjpUYXJnZXRUeXBlIGNhY2hlCiAgICAgICAgIHJldHVybiBSZXNvdXJjZVJlcXVl
c3Q6OlRhcmdldElzRm9udFJlc291cmNlOwogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkltYWdl
UmVzb3VyY2U6CiAgICAgICAgIHJldHVybiBSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldElzSW1hZ2U7
CisjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCisgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6TGlu
a1ByZWZldGNoOgorICAgICAgICByZXR1cm4gUmVzb3VyY2VSZXF1ZXN0OjpUYXJnZXRJc1ByZWZl
dGNoOworI2VuZGlmCiAgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVy
biBSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldElzU3VicmVzb3VyY2U7CiB9CiAKQEAgLTExMCw2ICsx
MTUsMTAgQEAgTG9hZGVyOjpQcmlvcml0eSBMb2FkZXI6OmRldGVybWluZVByaW9yaQogICAgICAg
ICAgICAgcmV0dXJuIE1lZGl1bTsKICAgICAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6SW1hZ2VS
ZXNvdXJjZToKICAgICAgICAgICAgIHJldHVybiBMb3c7CisjaWYgRU5BQkxFKExJTktfUFJFRkVU
Q0gpCisgICAgICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkxpbmtQcmVmZXRjaDoKKyAgICAgICAg
ICAgIHJldHVybiBWZXJ5TG93OworI2VuZGlmCiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgIHJldHVybiBMb3c7CkBAIC0xMzksOSArMTQ4LDkgQEAgdm9pZCBMb2FkZXI6Omxv
YWQoRG9jTG9hZGVyKiBkb2NMb2FkZXIsIAogICAgIGJvb2wgaGFkUmVxdWVzdHMgPSBob3N0LT5o
YXNSZXF1ZXN0cygpOwogICAgIFByaW9yaXR5IHByaW9yaXR5ID0gZGV0ZXJtaW5lUHJpb3JpdHko
cmVzb3VyY2UpOwogICAgIGhvc3QtPmFkZFJlcXVlc3QocmVxdWVzdCwgcHJpb3JpdHkpOwotICAg
IGRvY0xvYWRlci0+aW5jcmVtZW50UmVxdWVzdENvdW50KCk7CisgICAgZG9jTG9hZGVyLT5pbmNy
ZW1lbnRSZXF1ZXN0Q291bnQocmVxdWVzdC0+Y2FjaGVkUmVzb3VyY2UoKSk7CiAKLSAgICBpZiAo
cHJpb3JpdHkgPiBMb3cgfHwgIXVybC5wcm90b2NvbEluSFRUUEZhbWlseSgpIHx8ICFoYWRSZXF1
ZXN0cykgeworICAgIGlmIChwcmlvcml0eSA+IExvdyB8fCAhdXJsLnByb3RvY29sSW5IVFRQRmFt
aWx5KCkgfHwgKHByaW9yaXR5ID09IExvdyAmJiAhaGFkUmVxdWVzdHMpKSB7CiAgICAgICAgIC8v
IFRyeSB0byByZXF1ZXN0IGltcG9ydGFudCByZXNvdXJjZXMgaW1tZWRpYXRlbHkKICAgICAgICAg
aG9zdC0+c2VydmVQZW5kaW5nUmVxdWVzdHMocHJpb3JpdHkpOwogICAgIH0gZWxzZSB7CkBAIC0z
NzAsNyArMzc5LDcgQEAgdm9pZCBMb2FkZXI6Okhvc3Q6OnNlcnZlUGVuZGluZ1JlcXVlc3RzKAog
ICAgICAgICAgICAgcHJpbnRmKCJIT1NUICVzIENPVU5UICVkIExPQURJTkcgJXNcbiIsIHJlc291
cmNlUmVxdWVzdC51cmwoKS5ob3N0KCkubGF0aW4xKCkuZGF0YSgpLCBtX3JlcXVlc3RzTG9hZGlu
Zy5zaXplKCksIHJlcXVlc3QtPmNhY2hlZFJlc291cmNlKCktPnVybCgpLmxhdGluMSgpLmRhdGEo
KSk7CiAjZW5kaWYKICAgICAgICAgfSBlbHNlIHsgICAgICAgICAgICAKLSAgICAgICAgICAgIGRv
Y0xvYWRlci0+ZGVjcmVtZW50UmVxdWVzdENvdW50KCk7CisgICAgICAgICAgICBkb2NMb2FkZXIt
PmRlY3JlbWVudFJlcXVlc3RDb3VudChyZXF1ZXN0LT5jYWNoZWRSZXNvdXJjZSgpKTsKICAgICAg
ICAgICAgIGRvY0xvYWRlci0+c2V0TG9hZEluUHJvZ3Jlc3ModHJ1ZSk7CiAgICAgICAgICAgICBy
ZXF1ZXN0LT5jYWNoZWRSZXNvdXJjZSgpLT5lcnJvcigpOwogICAgICAgICAgICAgZG9jTG9hZGVy
LT5zZXRMb2FkSW5Qcm9ncmVzcyhmYWxzZSk7CkBAIC0zOTQsNyArNDAzLDcgQEAgdm9pZCBMb2Fk
ZXI6Okhvc3Q6OmRpZEZpbmlzaExvYWRpbmcoU3VicgogICAgIC8vIHRoZSBkb2NMb2FkZXIgdGhh
dCBpdCB3aWxsIGRlbGV0ZSB3aGVuIHRoZSBkb2N1bWVudCBnZXRzIGRlbGV0ZWQuCiAgICAgUmVm
UHRyPERvY3VtZW50PiBwcm90ZWN0b3IoZG9jTG9hZGVyLT5kb2MoKSk7CiAgICAgaWYgKCFyZXF1
ZXN0LT5pc011bHRpcGFydCgpKQotICAgICAgICBkb2NMb2FkZXItPmRlY3JlbWVudFJlcXVlc3RD
b3VudCgpOworICAgICAgICBkb2NMb2FkZXItPmRlY3JlbWVudFJlcXVlc3RDb3VudChyZXF1ZXN0
LT5jYWNoZWRSZXNvdXJjZSgpKTsKIAogICAgIENhY2hlZFJlc291cmNlKiByZXNvdXJjZSA9IHJl
cXVlc3QtPmNhY2hlZFJlc291cmNlKCk7CiAgICAgQVNTRVJUKCFyZXNvdXJjZS0+cmVzb3VyY2VU
b1JldmFsaWRhdGUoKSk7CkBAIC00NDIsNyArNDUxLDcgQEAgdm9pZCBMb2FkZXI6Okhvc3Q6OmRp
ZEZhaWwoU3VicmVzb3VyY2VMbwogICAgIC8vIHRoZSBkb2NMb2FkZXIgdGhhdCBpdCB3aWxsIGRl
bGV0ZSB3aGVuIHRoZSBkb2N1bWVudCBnZXRzIGRlbGV0ZWQuCiAgICAgUmVmUHRyPERvY3VtZW50
PiBwcm90ZWN0b3IoZG9jTG9hZGVyLT5kb2MoKSk7CiAgICAgaWYgKCFyZXF1ZXN0LT5pc011bHRp
cGFydCgpKQotICAgICAgICBkb2NMb2FkZXItPmRlY3JlbWVudFJlcXVlc3RDb3VudCgpOworICAg
ICAgICBkb2NMb2FkZXItPmRlY3JlbWVudFJlcXVlc3RDb3VudChyZXF1ZXN0LT5jYWNoZWRSZXNv
dXJjZSgpKTsKIAogICAgIENhY2hlZFJlc291cmNlKiByZXNvdXJjZSA9IHJlcXVlc3QtPmNhY2hl
ZFJlc291cmNlKCk7CiAgICAgCkBAIC00ODcsNyArNDk2LDcgQEAgdm9pZCBMb2FkZXI6Okhvc3Q6
OmRpZFJlY2VpdmVSZXNwb25zZShTdQogICAgICAgICAgICAgLy8gMzA0IE5vdCBtb2RpZmllZCAv
IFVzZSBsb2NhbCBjb3B5CiAgICAgICAgICAgICBtX3JlcXVlc3RzTG9hZGluZy5yZW1vdmUobG9h
ZGVyKTsKICAgICAgICAgICAgIGxvYWRlci0+Y2xlYXJDbGllbnQoKTsKLSAgICAgICAgICAgIHJl
cXVlc3QtPmRvY0xvYWRlcigpLT5kZWNyZW1lbnRSZXF1ZXN0Q291bnQoKTsKKyAgICAgICAgICAg
IHJlcXVlc3QtPmRvY0xvYWRlcigpLT5kZWNyZW1lbnRSZXF1ZXN0Q291bnQocmVxdWVzdC0+Y2Fj
aGVkUmVzb3VyY2UoKSk7CiAKICAgICAgICAgICAgIC8vIEV4aXN0aW5nIHJlc291cmNlIGlzIG9r
LCBqdXN0IHVzZSBpdCB1cGRhdGluZyB0aGUgZXhwaXJhdGlvbiB0aW1lLgogICAgICAgICAgICAg
Y2FjaGUoKS0+cmV2YWxpZGF0aW9uU3VjY2VlZGVkKHJlc291cmNlLCByZXNwb25zZSk7CkBAIC01
MTksNyArNTI4LDcgQEAgdm9pZCBMb2FkZXI6Okhvc3Q6OmRpZFJlY2VpdmVSZXNwb25zZShTdQog
ICAgICAgICByZXF1ZXN0LT5zZXRJc011bHRpcGFydCh0cnVlKTsKICAgICAgICAgCiAgICAgICAg
IC8vIFdlIGRvbid0IGNvdW50IG11bHRpUGFydHMgaW4gYSBEb2NMb2FkZXIncyByZXF1ZXN0IGNv
dW50Ci0gICAgICAgIHJlcXVlc3QtPmRvY0xvYWRlcigpLT5kZWNyZW1lbnRSZXF1ZXN0Q291bnQo
KTsKKyAgICAgICAgcmVxdWVzdC0+ZG9jTG9hZGVyKCktPmRlY3JlbWVudFJlcXVlc3RDb3VudChy
ZXF1ZXN0LT5jYWNoZWRSZXNvdXJjZSgpKTsKIAogICAgICAgICAvLyBJZiB3ZSBnZXQgYSBtdWx0
aXBhcnQgcmVzcG9uc2UsIHdlIG11c3QgaGF2ZSBhIGhhbmRsZQogICAgICAgICBBU1NFUlQobG9h
ZGVyLT5oYW5kbGUoKSk7CkBAIC01ODIsNyArNTkxLDcgQEAgdm9pZCBMb2FkZXI6Okhvc3Q6OmNh
bmNlbFBlbmRpbmdSZXF1ZXN0cwogICAgICAgICBpZiAocmVxdWVzdC0+ZG9jTG9hZGVyKCkgPT0g
ZG9jTG9hZGVyKSB7CiAgICAgICAgICAgICBjYWNoZSgpLT5yZW1vdmUocmVxdWVzdC0+Y2FjaGVk
UmVzb3VyY2UoKSk7CiAgICAgICAgICAgICBkZWxldGUgcmVxdWVzdDsKLSAgICAgICAgICAgIGRv
Y0xvYWRlci0+ZGVjcmVtZW50UmVxdWVzdENvdW50KCk7CisgICAgICAgICAgICBkb2NMb2FkZXIt
PmRlY3JlbWVudFJlcXVlc3RDb3VudChyZXF1ZXN0LT5jYWNoZWRSZXNvdXJjZSgpKTsKICAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICByZW1haW5pbmcuYXBwZW5kKHJlcXVlc3QpOwogICAgIH0K
SW5kZXg6IFdlYkNvcmUvbG9hZGVyL2xvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9h
ZGVyL2xvYWRlci5oCShyZXZpc2lvbiA2MjY5MykKKysrIFdlYkNvcmUvbG9hZGVyL2xvYWRlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC00OCw4ICs0OCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ICAgICAgICB2b2lkIGNhbmNlbFJlcXVlc3RzKERvY0xvYWRlciopOwogICAgICAgICAKLSAgICAg
ICAgZW51bSBQcmlvcml0eSB7IExvdywgTWVkaXVtLCBIaWdoIH07Ci0gICAgICAgIHZvaWQgc2Vy
dmVQZW5kaW5nUmVxdWVzdHMoUHJpb3JpdHkgbWluaW11bVByaW9yaXR5ID0gTG93KTsKKyAgICAg
ICAgZW51bSBQcmlvcml0eSB7IFZlcnlMb3csIExvdywgTWVkaXVtLCBIaWdoIH07CisgICAgICAg
IHZvaWQgc2VydmVQZW5kaW5nUmVxdWVzdHMoUHJpb3JpdHkgbWluaW11bVByaW9yaXR5ID0gVmVy
eUxvdyk7CiAKICAgICAgICAgYm9vbCBpc1N1c3BlbmRpbmdQZW5kaW5nUmVxdWVzdHMoKSB7IHJl
dHVybiBtX2lzU3VzcGVuZGluZ1BlbmRpbmdSZXF1ZXN0czsgfQogICAgICAgICB2b2lkIHN1c3Bl
bmRQZW5kaW5nUmVxdWVzdHMoKTsKQEAgLTc2LDcgKzc2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICAgICAgdm9pZCBhZGRSZXF1ZXN0KFJlcXVlc3QqLCBQcmlvcml0eSk7CiAgICAg
ICAgICAgICB2b2lkIG5vbkNhY2hlUmVxdWVzdEluRmxpZ2h0KCk7CiAgICAgICAgICAgICB2b2lk
IG5vbkNhY2hlUmVxdWVzdENvbXBsZXRlKCk7Ci0gICAgICAgICAgICB2b2lkIHNlcnZlUGVuZGlu
Z1JlcXVlc3RzKFByaW9yaXR5IG1pbmltdW1Qcmlvcml0eSA9IExvdyk7CisgICAgICAgICAgICB2
b2lkIHNlcnZlUGVuZGluZ1JlcXVlc3RzKFByaW9yaXR5IG1pbmltdW1Qcmlvcml0eSA9IFZlcnlM
b3cpOwogICAgICAgICAgICAgdm9pZCBjYW5jZWxSZXF1ZXN0cyhEb2NMb2FkZXIqKTsKICAgICAg
ICAgICAgIGJvb2wgaGFzUmVxdWVzdHMoKSBjb25zdDsKIApJbmRleDogV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCShyZXZpc2lvbiA2MjY5MykKKysr
IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTYzLDcgKzYzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAg
VGFyZ2V0SXNPYmplY3QsCiAgICAgICAgICAgICBUYXJnZXRJc01lZGlhLAogICAgICAgICAgICAg
VGFyZ2V0SXNXb3JrZXIsCi0gICAgICAgICAgICBUYXJnZXRJc1NoYXJlZFdvcmtlcgorICAgICAg
ICAgICAgVGFyZ2V0SXNTaGFyZWRXb3JrZXIsCisgICAgICAgICAgICBUYXJnZXRJc1ByZWZldGNo
LAogICAgICAgICB9OwogCiAgICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPFJlc291cmNlUmVxdWVz
dD4gYWRvcHQoUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+KTsKSW5k
ZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9nCShy
ZXZpc2lvbiA2MjY5OSkKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTIgQEAKKzIwMTAtMDctMDcgIEdhdmluIFBldGVycyAgPGdhdmlucEBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgYWRk
IHN1cHBvcnQgZm9yIGxpbmsgcHJlZmV0Y2hpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTM2NTIKKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0Zl
YXR1cmVEZWZpbmVzLnhjY29uZmlnOgorCiAyMDEwLTA3LTA3ICBTYW0gV2VpbmlnICA8c2FtQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgpJbmRleDog
V2ViS2l0Mi9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQyL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCShyZXZp
c2lvbiA2MjY5MykKKysrIFdlYktpdDIvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNj
b25maWcJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDggQEAKIAogLy8gU2V0IGFueSBFTkFC
TEVfRkVBVFVSRV9OQU1FIG1hY3JvIHRvIGFuIGVtcHR5IHN0cmluZyB0byBkaXNhYmxlIHRoYXQg
ZmVhdHVyZS4KIAorRU5BQkxFX0xJTktfUFJFRkVUQ0ggPSA7CisKIEVOQUJMRV8zRF9DQU5WQVMg
PSAkKEVOQUJMRV8zRF9DQU5WQVNfJChUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUikpOwog
RU5BQkxFXzNEX0NBTlZBU18xMDUwID0gRU5BQkxFXzNEX0NBTlZBUzsKIEVOQUJMRV8zRF9DQU5W
QVNfMTA2MCA9IEVOQUJMRV8zRF9DQU5WQVM7CkBAIC04Miw1ICs4NCw0IEBAIEVOQUJMRV9YSFRN
TE1QID0gOwogRU5BQkxFX1hQQVRIID0gRU5BQkxFX1hQQVRIOwogRU5BQkxFX1hTTFQgPSBFTkFC
TEVfWFNMVDsKIAotRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfQ0FOVkFTKSAkKEVOQUJM
RV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0JMT0JfU0xJQ0UpICQoRU5BQkxFX0NIQU5ORUxfTUVT
U0FHSU5HKSAkKEVOQUJMRV9DTElFTlRfQkFTRURfR0VPTE9DQVRJT04pICQoRU5BQkxFX0RBVEFC
QVNFKSAkKEVOQUJMRV9EQVRBR1JJRCkgJChFTkFCTEVfREFUQUxJU1QpICQoRU5BQkxFX0RJUkVD
VE9SWV9VUExPQUQpICQoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQpICQoRU5BQkxFX0RPTV9TVE9S
QUdFKSAkKEVOQUJMRV9FVkVOVFNPVVJDRSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfRklM
RV9SRUFERVIpICQoRU5BQkxFX0ZJTEVfV1JJVEVSKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChF
TkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9J
TlBVVF9TUEVFQ0gpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX01BVEhN
TCkgJChFTkFCTEVfTUVURVJfVEFHKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9P
RkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpICQoRU5BQkxFX1BST0dSRVNTX1RBRykgJChFTkFCTEVf
UlVCWSkgJChFTkFCTEVfU0FOREJPWCkgJChFTkFCTEVfU0hBUkVEX1dPUktFUlMpICQoRU5BQkxF
X1NWRykgJChFTkFCTEVfU1ZHX0FOSU1BVElPTikgJChFTkFCTEVfU1ZHX0FTX0lNQUdFKSAkKEVO
QUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVf
U1ZHX0ZPUkVJR05fT0JKRUNUKSAkKEVOQUJMRV9TVkdfVVNFKSAkKEVOQUJMRV9WSURFTykgJChF
TkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5BQkxFX1dNTCkgJChF
TkFCTEVfV09SS0VSUykgJChFTkFCTEVfWEhUTUxNUCkgJChFTkFCTEVfWFBBVEgpICQoRU5BQkxF
X1hTTFQpOwotCitGRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVO
QUJMRV8zRF9DQU5WQVMpICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQkxPQl9TTElD
RSkgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NMSUVOVF9CQVNFRF9HRU9M
T0NBVElPTikgJChFTkFCTEVfREFUQUJBU0UpICQoRU5BQkxFX0RBVEFHUklEKSAkKEVOQUJMRV9E
QVRBTElTVCkgJChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCkgJChFTkFCTEVfRE9NX1NUT1JBR0Up
ICQoRU5BQkxFX0VWRU5UU09VUkNFKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GSUxFX1JF
QURFUikgJChFTkFCTEVfRklMRV9XUklURVIpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJM
RV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lOUFVU
X1NQRUVDSCkgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfTUFUSE1MKSAk
KEVOQUJMRV9NRVRFUl9UQUcpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX09GRkxJ
TkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVfUFJPR1JFU1NfVEFHKSAkKEVOQUJMRV9SVUJZ
KSAkKEVOQUJMRV9TQU5EQk9YKSAkKEVOQUJMRV9TSEFSRURfV09SS0VSUykgJChFTkFCTEVfU1ZH
KSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxF
X1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdf
Rk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJM
RV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykgJChFTkFCTEVfV01MKSAkKEVOQUJM
RV9XT1JLRVJTKSAkKEVOQUJMRV9YSFRNTE1QKSAkKEVOQUJMRV9YUEFUSCkgJChFTkFCTEVfWFNM
VCk7CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDYyNjk5KQorKysgV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEwLTA3LTA3ICBH
YXZpbiBQZXRlcnMgIDxnYXZpbnBAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGFkZCBzdXBwb3J0IGZvciBsaW5rIHByZWZldGNo
aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjUy
CisKKyAgICAgICAgKiBwdWJsaWMvV2ViVVJMUmVxdWVzdC5oOgorICAgICAgICAoV2ViS2l0OjpX
ZWJVUkxSZXF1ZXN0OjopOgorCiAyMDEwLTA3LTA3ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgpJbmRleDogV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJVUkxSZXF1ZXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJVUkxSZXF1ZXN0LmgJKHJldmlzaW9uIDYyNjkzKQorKysgV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJVUkxSZXF1ZXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcg
KzY5LDEwIEBAIHB1YmxpYzoKICAgICAgICAgVGFyZ2V0SXNPYmplY3QgPSA3LAogICAgICAgICBU
YXJnZXRJc01lZGlhID0gOCwKICAgICAgICAgVGFyZ2V0SXNXb3JrZXIgPSA5LAotICAgICAgICBU
YXJnZXRJc1NoYXJlZFdvcmtlciA9IDEwCisgICAgICAgIFRhcmdldElzU2hhcmVkV29ya2VyID0g
MTAsCisjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCisgICAgICAgIFRhcmdldElzUHJlZmV0Y2gg
PSAxMSwKKyNlbmRpZgogICAgIH07CiAKICAgICB+V2ViVVJMUmVxdWVzdCgpIHsgcmVzZXQoKTsg
fQpJbmRleDogV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDYyNjk5KQorKysgV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxMiBAQAorMjAxMC0wNy0wNyAgR2F2aW4gUGV0ZXJzICA8Z2F2
aW5wQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBhZGQgc3VwcG9ydCBmb3IgbGluayBwcmVmZXRjaGluZworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY1MgorCisgICAgICAgICogQ29u
ZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6CisKIDIwMTAtMDctMDcgIFNhbSBX
ZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2Fy
bHNzb24uCkluZGV4OiBXZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhj
Y29uZmlnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURl
ZmluZXMueGNjb25maWcJKHJldmlzaW9uIDYyNjkzKQorKysgV2ViS2l0L21hYy9Db25maWd1cmF0
aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEs
OCBAQAogCiAvLyBTZXQgYW55IEVOQUJMRV9GRUFUVVJFX05BTUUgbWFjcm8gdG8gYW4gZW1wdHkg
c3RyaW5nIHRvIGRpc2FibGUgdGhhdCBmZWF0dXJlLgogCitFTkFCTEVfTElOS19QUkVGRVRDSCA9
IDsKKwogRU5BQkxFXzNEX0NBTlZBUyA9ICQoRU5BQkxFXzNEX0NBTlZBU18kKFRBUkdFVF9NQUNf
T1NfWF9WRVJTSU9OX01BSk9SKSk7CiBFTkFCTEVfM0RfQ0FOVkFTXzEwNTAgPSBFTkFCTEVfM0Rf
Q0FOVkFTOwogRU5BQkxFXzNEX0NBTlZBU18xMDYwID0gRU5BQkxFXzNEX0NBTlZBUzsKQEAgLTg0
LDQgKzg2LDQgQEAgRU5BQkxFX1hIVE1MTVAgPSA7CiBFTkFCTEVfWFBBVEggPSBFTkFCTEVfWFBB
VEg7CiBFTkFCTEVfWFNMVCA9IEVOQUJMRV9YU0xUOwogCi1GRUFUVVJFX0RFRklORVMgPSAkKEVO
QUJMRV8zRF9DQU5WQVMpICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQkxPQl9TTElD
RSkgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NMSUVOVF9CQVNFRF9HRU9M
T0NBVElPTikgJChFTkFCTEVfREFUQUJBU0UpICQoRU5BQkxFX0RBVEFHUklEKSAkKEVOQUJMRV9E
QVRBTElTVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9ESVJFQ1RPUllf
VVBMT0FEKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVfRVZFTlRTT1VSQ0UpICQoRU5B
QkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZJTEVfUkVBREVSKSAkKEVOQUJMRV9GSUxFX1dSSVRFUikg
JChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSU1B
R0VfUkVTSVpFUikgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSU5QVVRfU1BF
RUNIKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9NQVRITUwpICQoRU5B
QkxFX01FVEVSX1RBRykgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfT0ZGTElORV9X
RUJfQVBQTElDQVRJT05TKSAkKEVOQUJMRV9QUk9HUkVTU19UQUcpICQoRU5BQkxFX1JVQlkpICQo
RU5BQkxFX1NBTkRCT1gpICQoRU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAkKEVOQUJMRV9TVkcpICQo
RU5BQkxFX1NWR19BTklNQVRJT04pICQoRU5BQkxFX1NWR19BU19JTUFHRSkgJChFTkFCTEVfU1ZH
X0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1NWR19GT1JF
SUdOX09CSkVDVCkgJChFTkFCTEVfU1ZHX1VTRSkgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1dF
Ql9TT0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVOQUJMRV9XTUwpICQoRU5BQkxFX1dP
UktFUlMpICQoRU5BQkxFX1hIVE1MTVApICQoRU5BQkxFX1hQQVRIKSAkKEVOQUJMRV9YU0xUKTsK
K0ZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFXzNEX0NB
TlZBUykgJChFTkFCTEVfM0RfUkVOREVSSU5HKSAkKEVOQUJMRV9CTE9CX1NMSUNFKSAkKEVOQUJM
RV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKSAk
KEVOQUJMRV9EQVRBQkFTRSkgJChFTkFCTEVfREFUQUdSSUQpICQoRU5BQkxFX0RBVEFMSVNUKSAk
KEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQpICQo
RU5BQkxFX0RPTV9TVE9SQUdFKSAkKEVOQUJMRV9FVkVOVFNPVVJDRSkgJChFTkFCTEVfRklMVEVS
UykgJChFTkFCTEVfRklMRV9SRUFERVIpICQoRU5BQkxFX0ZJTEVfV1JJVEVSKSAkKEVOQUJMRV9H
RU9MT0NBVElPTikgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9JTUFHRV9SRVNJWkVS
KSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9JTlBVVF9TUEVFQ0gpICQoRU5B
QkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVURVJf
VEFHKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNB
VElPTlMpICQoRU5BQkxFX1BST0dSRVNTX1RBRykgJChFTkFCTEVfUlVCWSkgJChFTkFCTEVfU0FO
REJPWCkgJChFTkFCTEVfU0hBUkVEX1dPUktFUlMpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZH
X0FOSU1BVElPTikgJChFTkFCTEVfU1ZHX0FTX0lNQUdFKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNf
QklORElOR1MpICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNU
KSAkKEVOQUJMRV9TVkdfVVNFKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfV0VCX1NPQ0tFVFMp
ICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5BQkxFX1dNTCkgJChFTkFCTEVfV09SS0VSUykgJChF
TkFCTEVfWEhUTUxNUCkgJChFTkFCTEVfWFBBVEgpICQoRU5BQkxFX1hTTFQpOwpJbmRleDogV2Vi
S2l0VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0NoYW5nZUxvZwko
cmV2aXNpb24gNjI2OTkpCisrKyBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxMiBAQAorMjAxMC0wNy0wNyAgR2F2aW4gUGV0ZXJzICA8Z2F2aW5wQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBhZGQgc3VwcG9ydCBmb3IgbGluayBwcmVmZXRjaGluZworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY1MgorCisgICAgICAgICogU2NyaXB0cy9idWls
ZC13ZWJraXQ6CisKIDIwMTAtMDctMDcgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2
aWVycy5jb20+CiAKICAgICAgICAgW3d4XSBCdWlsZCBmaXguIHBhZ2VQcm9wZXJ0eSBuZWVkcyB0
byByZXR1cm4gYSB2YWx1ZS4KSW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0CShyZXZpc2lv
biA2MjY5MykKKysrIFdlYktpdFRvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0CSh3b3JraW5nIGNv
cHkpCkBAIC01NSw3ICs1NSw3IEBAIG15ICRwcmVmaXhQYXRoOwogbXkgJG1ha2VBcmdzOwogbXkg
JHN0YXJ0VGltZSA9IHRpbWUoKTsKIAotbXkgKCR0aHJlZURDYW52YXNTdXBwb3J0LCAkdGhyZWVE
UmVuZGVyaW5nU3VwcG9ydCwgJGNoYW5uZWxNZXNzYWdpbmdTdXBwb3J0LCAkY2xpZW50QmFzZWRH
ZW9sb2NhdGlvblN1cHBvcnQsICRkYXRhYmFzZVN1cHBvcnQsICRkYXRhZ3JpZFN1cHBvcnQsICRk
YXRhbGlzdFN1cHBvcnQsCitteSAoJGxpbmtQcmVmZXRjaFN1cHBvcnQsICR0aHJlZURDYW52YXNT
dXBwb3J0LCAkdGhyZWVEUmVuZGVyaW5nU3VwcG9ydCwgJGNoYW5uZWxNZXNzYWdpbmdTdXBwb3J0
LCAkY2xpZW50QmFzZWRHZW9sb2NhdGlvblN1cHBvcnQsICRkYXRhYmFzZVN1cHBvcnQsICRkYXRh
Z3JpZFN1cHBvcnQsICRkYXRhbGlzdFN1cHBvcnQsCiAgICAgJGRvbVN0b3JhZ2VTdXBwb3J0LCAk
ZXZlbnRzb3VyY2VTdXBwb3J0LCAkZmlsdGVyc1N1cHBvcnQsICRnZW9sb2NhdGlvblN1cHBvcnQs
ICRpY29uRGF0YWJhc2VTdXBwb3J0LCAkaW1hZ2VSZXNpemVyU3VwcG9ydCwgJGluZGV4ZWREYXRh
YmFzZVN1cHBvcnQsICRpbnB1dFNwZWVjaFN1cHBvcnQsCiAgICAgJGphdmFTY3JpcHREZWJ1Z2dl
clN1cHBvcnQsICRtYXRobWxTdXBwb3J0LCAkb2ZmbGluZVdlYkFwcGxpY2F0aW9uU3VwcG9ydCwg
JHJ1YnlTdXBwb3J0LCAkc3lzdGVtTWFsbG9jU3VwcG9ydCwgJHNhbmRib3hTdXBwb3J0LCAkc2hh
cmVkV29ya2Vyc1N1cHBvcnQsCiAgICAgJHN2Z1N1cHBvcnQsICRzdmdBbmltYXRpb25TdXBwb3J0
LCAkc3ZnQXNJbWFnZVN1cHBvcnQsICRzdmdET01PYmpDQmluZGluZ3NTdXBwb3J0LCAkc3ZnRm9u
dHNTdXBwb3J0LApAQCAtNjQsNiArNjQsOSBAQCBteSAoJHRocmVlRENhbnZhc1N1cHBvcnQsICR0
aHJlZURSZW5kZXJpCiAgICAgJGZpbGVSZWFkZXJTdXBwb3J0LCAkZmlsZVdyaXRlclN1cHBvcnQs
ICRkaXJlY3RvcnlVcGxvYWRTdXBwb3J0KTsKIAogbXkgQGZlYXR1cmVzID0gKAorICAgIHsgb3B0
aW9uID0+ICJsaW5rLXByZWZldGNoIiwgZGVzYyA9PiAiVG9nZ2xlIHByZSBmZXRjaGluZyBzdXBw
b3J0IiwKKyAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0xJTktfUFJFRkVUQ0giLCBkZWZhdWx0ID0+
IDAsIHZhbHVlID0+IFwkbGlua1ByZWZldGNoU3VwcG9ydCB9LAorCiAgICAgeyBvcHRpb24gPT4g
IjNkLWNhbnZhcyIsIGRlc2MgPT4gIlRvZ2dsZSAzRCBjYW52YXMgc3VwcG9ydCIsCiAgICAgICBk
ZWZpbmUgPT4gIkVOQUJMRV8zRF9DQU5WQVMiLCBkZWZhdWx0ID0+IChpc0FwcGxlTWFjV2ViS2l0
KCkgJiYgIWlzVGlnZXIoKSksIHZhbHVlID0+IFwkdGhyZWVEQ2FudmFzU3VwcG9ydCB9LAogCklu
ZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCShyZXZpc2lvbiA2MjY5OSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDEwLTA3LTA3ICBHYXZpbiBQZXRlcnMgIDxnYXZp
bnBAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIGFkZCBzdXBwb3J0IGZvciBsaW5rIHByZWZldGNoaW5nCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjUyCisKKyAgICAgICAgKiBmYXN0
L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0Y2gtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0Y2guaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLmxpbms6IEFkZGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2d0ay9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9Ta2lw
cGVkOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0v
d2luL1NraXBwZWQ6CisKIDIwMTAtMDctMDcgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBCZXRoIERha2luLgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0Y2gt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExp
bmtFbGVtZW50L3ByZWZldGNoLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwy
IEBACitwcmVmZXRjaC5saW5rIGhhcyBNSU1FIHR5cGUgYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFt
CitUaGlzIHRlc3QgcmVxdWlyZXMgRHVtcFJlbmRlclRyZWUgdG8gc2VlIHRoZSBsb2cgb2Ygd2hh
dCByZXNvdXJjZXMgYXJlIGxvYWRlZC4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxM
aW5rRWxlbWVudC9wcmVmZXRjaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLmh0bWwJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMTQgQEAKKzxib2R5PgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBSZXNvdXJjZVJlc3BvbnNlTUlNRVR5cGVzKCk7CisgICAgc2V0VGltZW91
dCgibGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpIiw1MCk7Cit9Cis8L3NjcmlwdD4K
KzxodG1sPgorPHA+VGhpcyB0ZXN0IHJlcXVpcmVzIER1bXBSZW5kZXJUcmVlIHRvIHNlZSB0aGUg
bG9nIG9mIHdoYXQgcmVzb3VyY2VzIGFyZSBsb2FkZWQuCis8bGluayBocmVmPSJwcmVmZXRjaC5s
aW5rIiByZWw9InByZWZldGNoIj4KKzwvaHRtbD4KKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9k
b20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLmxpbmsKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLmxpbmsJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0Y2gubGluawkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSBAQAorVGhpcyBpcyB0aGUgbGluayB0aGF0IGlzIGZldGNoZWQg
YnkgdGhlIHByZWZldGNoLW9ubG9hZCB0ZXN0CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9n
dGsvU2tpcHBlZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBl
ZAkocmV2aXNpb24gNjI2OTMpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAko
d29ya2luZyBjb3B5KQpAQCAtNTc1NCw2ICs1NzU0LDkgQEAgZmFzdC9mb3Jtcy9zbGlkZXItdHJh
bnNmb3JtZWQuaHRtbAogZmFzdC9mb3Jtcy9zbGlkZXItbW91c2UtZXZlbnRzLmh0bWwKIGZhc3Qv
Zm9ybXMvc2xpZGVyLXpvb21lZC5odG1sCiAKKyMgTGluayBwcmVmZXRjaCBpcyBkaXNhYmxlZCBi
eSBkZWZhdWx0CisjZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLmh0bWwKKwogIyBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6cGFnZVByb3BlcnR5IGlzIG5vdCBpbXBsZW1lbnRlZCBmb3Ig
R1RLIHlldC4KIHByaW50aW5nL3BhZ2UtcnVsZS1zZWxlY3Rpb24uaHRtbAogCkluZGV4OiBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvU2tpcHBlZAkocmV2aXNpb24gNjI2OTMpCisrKyBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvU2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAtMjgyLDYgKzI4Miw5IEBAIHN0b3Jh
Z2UvaW5kZXhlZGRiCiBmYXN0L2RvbS9EZXZpY2VPcmllbnRhdGlvbgogZmFzdC9kb20vV2luZG93
L3dpbmRvdy1wcm9wZXJ0aWVzLWRldmljZS1vcmllbnRhdGlvbi5odG1sCiAKKyMgTGluayBwcmVm
ZXRjaCBpcyBkaXNhYmxlZCBieSBkZWZhdWx0CisjZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3By
ZWZldGNoLmh0bWwKKwogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
Mzk5MDgKIGZhc3QvZG9tL0dlb2xvY2F0aW9uL21heGltdW0tYWdlLmh0bWwKIApJbmRleDogTGF5
b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9xdC9Ta2lwcGVkCShyZXZpc2lvbiA2MjY5MykKKysrIExheW91dFRlc3RzL3BsYXRm
b3JtL3F0L1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTU0MDYsNiArNTQwNiw5IEBAIHN2Zy9X
M0MtU1ZHLTEuMS9maWx0ZXJzLWxpZ2h0LTA0LWYuc3ZnCiAjID09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
ICMKIGZhc3QvZG9tL0dlb2xvY2F0aW9uL2NhbGxiYWNrLXRvLXJlbW90ZS1jb250ZXh0Mi5odG1s
CiAKKyMgTGluayBwcmVmZXRjaCBpcyBkaXNhYmxlZCBieSBkZWZhdWx0CisjZmFzdC9kb20vSFRN
TExpbmtFbGVtZW50L3ByZWZldGNoLmh0bWwKKwogIyBGYWlsaW5nIGFmdGVyIGVuYWJsaW5nIEhU
TUw1IHBhcnNlciBpbiByNjEyMzQKICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQwNjYxCiBmYXN0L2VuY29kaW5nL2phcGFuZXNlLWVuY29kaW5nLW1peC5odG1sCklu
ZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAkocmV2aXNpb24gNjI2OTMpCisrKyBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAtOTAwLDYgKzkwMCw5
IEBAIHN0b3JhZ2UvaW5kZXhlZGRiCiBmYXN0L2RvbS9EZXZpY2VPcmllbnRhdGlvbgogZmFzdC9k
b20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWRldmljZS1vcmllbnRhdGlvbi5odG1sCiAKKyMg
TGluayBwcmVmZXRjaCBpcyBkaXNhYmxlZCBieSBkZWZhdWx0CitmYXN0L2RvbS9IVE1MTGlua0Vs
ZW1lbnQvcHJlZmV0Y2guaHRtbAorCiAjIExheW91dFRlc3RDb250cm9sbGVyOjpwYWdlUHJvcGVy
dHkgaXMgbm90IGltcGxlbWVudGVkIGZvciBXSU4geWV0LgogcHJpbnRpbmcvcGFnZS1ydWxlLXNl
bGVjdGlvbi5odG1sCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60874</attachid>
            <date>2010-07-08 07:02:24 -0700</date>
            <delta_ts>2010-07-08 08:04:26 -0700</delta_ts>
            <desc>really fix chromium fat finger</desc>
            <filename>3652-per-abarth.txt</filename>
            <type>text/plain</type>
            <size>37999</size>
            <attacher name="Gavin Peters">gavinp</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDYyNjk5KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTAtMDctMDcgIEdhdmluIFBl
dGVycyAgPGdhdmlucEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgYWRkIHN1cHBvcnQgZm9yIGxpbmsgcHJlZmV0Y2hpbmcKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2NTIKKworICAg
ICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgorCiAyMDEwLTA3
LTA3ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgU2FtIFdlaW5pZy4KSW5kZXg6IEphdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1
cmVEZWZpbmVzLnhjY29uZmlnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0NvbmZpZ3Vy
YXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCShyZXZpc2lvbiA2MjY5MykKKysrIEphdmFT
Y3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCSh3b3JraW5n
IGNvcHkpCkBAIC0zMSw2ICszMSw4IEBACiAKIC8vIFNldCBhbnkgRU5BQkxFX0ZFQVRVUkVfTkFN
RSBtYWNybyB0byBhbiBlbXB0eSBzdHJpbmcgdG8gZGlzYWJsZSB0aGF0IGZlYXR1cmUuCiAKK0VO
QUJMRV9MSU5LX1BSRUZFVENIID0gOworCiBFTkFCTEVfM0RfQ0FOVkFTID0gJChFTkFCTEVfM0Rf
Q0FOVkFTXyQoVEFSR0VUX01BQ19PU19YX1ZFUlNJT05fTUFKT1IpKTsKIEVOQUJMRV8zRF9DQU5W
QVNfMTA1MCA9IEVOQUJMRV8zRF9DQU5WQVM7CiBFTkFCTEVfM0RfQ0FOVkFTXzEwNjAgPSBFTkFC
TEVfM0RfQ0FOVkFTOwpAQCAtODQsNSArODYsNCBAQCBFTkFCTEVfWEhUTUxNUCA9IDsKIEVOQUJM
RV9YUEFUSCA9IEVOQUJMRV9YUEFUSDsKIEVOQUJMRV9YU0xUID0gRU5BQkxFX1hTTFQ7CiAKLUZF
QVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX0NBTlZBUykgJChFTkFCTEVfM0RfUkVOREVSSU5H
KSAkKEVOQUJMRV9CTE9CX1NMSUNFKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFC
TEVfQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9EQVRBQkFTRSkgJChFTkFCTEVf
REFUQUdSSUQpICQoRU5BQkxFX0RBVEFMSVNUKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04p
ICQoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQpICQoRU5BQkxFX0RPTV9TVE9SQUdFKSAkKEVOQUJM
RV9FVkVOVFNPVVJDRSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfRklMRV9SRUFERVIpICQo
RU5BQkxFX0ZJTEVfV1JJVEVSKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSUNPTkRB
VEFCQVNFKSAkKEVOQUJMRV9JTUFHRV9SRVNJWkVSKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNF
KSAkKEVOQUJMRV9JTlBVVF9TUEVFQ0gpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQo
RU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVURVJfVEFHKSAkKEVOQUJMRV9OT1RJRklDQVRJT05T
KSAkKEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpICQoRU5BQkxFX1BST0dSRVNTX1RB
RykgJChFTkFCTEVfUlVCWSkgJChFTkFCTEVfU0FOREJPWCkgJChFTkFCTEVfU0hBUkVEX1dPUktF
UlMpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0FOSU1BVElPTikgJChFTkFCTEVfU1ZHX0FT
X0lNQUdFKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpICQoRU5BQkxFX1NWR19GT05U
UykgJChFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUKSAkKEVOQUJMRV9TVkdfVVNFKSAkKEVOQUJM
RV9WSURFTykgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5B
QkxFX1dNTCkgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWEhUTUxNUCkgJChFTkFCTEVfWFBB
VEgpICQoRU5BQkxFX1hTTFQpOwotCitGRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV9MSU5LX1BS
RUZFVENIKSAkKEVOQUJMRV8zRF9DQU5WQVMpICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFC
TEVfQkxPQl9TTElDRSkgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NMSUVO
VF9CQVNFRF9HRU9MT0NBVElPTikgJChFTkFCTEVfREFUQUJBU0UpICQoRU5BQkxFX0RBVEFHUklE
KSAkKEVOQUJMRV9EQVRBTElTVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJM
RV9ESVJFQ1RPUllfVVBMT0FEKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVfRVZFTlRT
T1VSQ0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZJTEVfUkVBREVSKSAkKEVOQUJMRV9G
SUxFX1dSSVRFUikgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFTRSkg
JChFTkFCTEVfSU1BR0VfUkVTSVpFUikgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFC
TEVfSU5QVVRfU1BFRUNIKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9N
QVRITUwpICQoRU5BQkxFX01FVEVSX1RBRykgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFC
TEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKSAkKEVOQUJMRV9QUk9HUkVTU19UQUcpICQoRU5B
QkxFX1JVQlkpICQoRU5BQkxFX1NBTkRCT1gpICQoRU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAkKEVO
QUJMRV9TVkcpICQoRU5BQkxFX1NWR19BTklNQVRJT04pICQoRU5BQkxFX1NWR19BU19JTUFHRSkg
JChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5B
QkxFX1NWR19GT1JFSUdOX09CSkVDVCkgJChFTkFCTEVfU1ZHX1VTRSkgJChFTkFCTEVfVklERU8p
ICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVOQUJMRV9XTUwp
ICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hIVE1MTVApICQoRU5BQkxFX1hQQVRIKSAkKEVO
QUJMRV9YU0xUKTsKSW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA2MjY5OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsNTIgQEAKKzIwMTAtMDctMDcgIEdhdmluIFBldGVycyAgPGdh
dmlucEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgYmFzZWQgbW9zdGx5IG9uIGEgcGF0Y2ggYnkgTGVvbiBDbGFya2UsIGxlb25j
bGFya2VAZ29vZ2xlLmNvbQorCisgICAgICAgIGFkZCBzdXBwb3J0IGZvciBsaW5rIHByZWZldGNo
aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjUy
CisKKyAgICAgICAgVGVzdDogZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLmh0bWwK
KworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgorICAg
ICAgICAqIGh0bWwvSFRNTExpbmtFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxM
aW5rRWxlbWVudDo6dG9rZW5pemVSZWxBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TExpbmtFbGVtZW50Ojpwcm9jZXNzKToKKyAgICAgICAgKiBodG1sL0hUTUxMaW5rRWxlbWVudC5o
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50OjpSZWxBdHRyaWJ1dGU6OlJlbEF0
dHJpYnV0ZSk6CisgICAgICAgICogbG9hZGVyL0NhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZVJlc291cmNlKToKKyAgICAgICAgKiBsb2FkZXIvQ2FjaGVkUmVzb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmRhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkUmVzb3VyY2U6OmRpZEFkZENsaWVudCk6CisgICAgICAgICogbG9hZGVyL0NhY2hl
ZFJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjplcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRSZXNvdXJjZTo6aXNQcmVmZXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNv
dXJjZTo6c2NoZWR1bGUpOgorICAgICAgICAqIGxvYWRlci9DYWNoZWRTY3JpcHQuY3BwOgorICAg
ICAgICAqIGxvYWRlci9DYWNoZWRTY3JpcHQuaDoKKyAgICAgICAgKiBsb2FkZXIvRG9jTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY0xvYWRlcjo6cmVxdWVzdExpbmtQcmVmZXRjaCk6
CisgICAgICAgIChXZWJDb3JlOjpEb2NMb2FkZXI6OmNhblJlcXVlc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jTG9hZGVyOjppbmNyZW1lbnRSZXF1ZXN0Q291bnQpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jTG9hZGVyOjpkZWNyZW1lbnRSZXF1ZXN0Q291bnQpOgorICAgICAgICAqIGxvYWRlci9E
b2NMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvbG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNhY2hlZFJlc291cmNlVHlwZVRvVGFyZ2V0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpM
b2FkZXI6OmRldGVybWluZVByaW9yaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRlcjo6bG9h
ZCk6CisgICAgICAgIChXZWJDb3JlOjpMb2FkZXI6Okhvc3Q6OnNlcnZlUGVuZGluZ1JlcXVlc3Rz
KToKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRlcjo6SG9zdDo6ZGlkRmluaXNoTG9hZGluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpMb2FkZXI6Okhvc3Q6OmRpZEZhaWwpOgorICAgICAgICAoV2ViQ29y
ZTo6TG9hZGVyOjpIb3N0OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6
TG9hZGVyOjpIb3N0OjpjYW5jZWxQZW5kaW5nUmVxdWVzdHMpOgorICAgICAgICAqIGxvYWRlci9s
b2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRlcjo6KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdEJhc2U6Oik6CisKIDIwMTAtMDctMDcgIEFkYW0gQmFydGggIDxhYmFydGhAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpJbmRleDogV2ViQ29y
ZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCShyZXZpc2lvbiA2
MjY5MykKKysrIFdlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcJ
KHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDggQEAKIAogLy8gU2V0IGFueSBFTkFCTEVfRkVB
VFVSRV9OQU1FIG1hY3JvIHRvIGFuIGVtcHR5IHN0cmluZyB0byBkaXNhYmxlIHRoYXQgZmVhdHVy
ZS4KIAorRU5BQkxFX0xJTktfUFJFRkVUQ0ggPSA7CisKIEVOQUJMRV8zRF9DQU5WQVMgPSAkKEVO
QUJMRV8zRF9DQU5WQVNfJChUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUikpOwogRU5BQkxF
XzNEX0NBTlZBU18xMDUwID0gRU5BQkxFXzNEX0NBTlZBUzsKIEVOQUJMRV8zRF9DQU5WQVNfMTA2
MCA9IEVOQUJMRV8zRF9DQU5WQVM7CkBAIC04NCw1ICs4Niw0IEBAIEVOQUJMRV9YSFRNTE1QID0g
OwogRU5BQkxFX1hQQVRIID0gRU5BQkxFX1hQQVRIOwogRU5BQkxFX1hTTFQgPSBFTkFCTEVfWFNM
VDsKIAotRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfQ0FOVkFTKSAkKEVOQUJMRV8zRF9S
RU5ERVJJTkcpICQoRU5BQkxFX0JMT0JfU0xJQ0UpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5H
KSAkKEVOQUJMRV9DTElFTlRfQkFTRURfR0VPTE9DQVRJT04pICQoRU5BQkxFX0RBVEFCQVNFKSAk
KEVOQUJMRV9EQVRBR1JJRCkgJChFTkFCTEVfREFUQUxJU1QpICQoRU5BQkxFX0RFVklDRV9PUklF
TlRBVElPTikgJChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCkgJChFTkFCTEVfRE9NX1NUT1JBR0Up
ICQoRU5BQkxFX0VWRU5UU09VUkNFKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GSUxFX1JF
QURFUikgJChFTkFCTEVfRklMRV9XUklURVIpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJM
RV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lNQUdFX1JFU0laRVIpICQoRU5BQkxFX0lOREVYRURf
REFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJV
R0dFUikgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRVRFUl9UQUcpICQoRU5BQkxFX05PVElG
SUNBVElPTlMpICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVfUFJP
R1JFU1NfVEFHKSAkKEVOQUJMRV9SVUJZKSAkKEVOQUJMRV9TQU5EQk9YKSAkKEVOQUJMRV9TSEFS
RURfV09SS0VSUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJM
RV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVf
U1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0Up
ICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlO
RykgJChFTkFCTEVfV01MKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YSFRNTE1QKSAkKEVO
QUJMRV9YUEFUSCkgJChFTkFCTEVfWFNMVCk7Ci0KK0ZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxF
X0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFXzNEX0NBTlZBUykgJChFTkFCTEVfM0RfUkVOREVSSU5H
KSAkKEVOQUJMRV9CTE9CX1NMSUNFKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFC
TEVfQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9EQVRBQkFTRSkgJChFTkFCTEVf
REFUQUdSSUQpICQoRU5BQkxFX0RBVEFMSVNUKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04p
ICQoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQpICQoRU5BQkxFX0RPTV9TVE9SQUdFKSAkKEVOQUJM
RV9FVkVOVFNPVVJDRSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfRklMRV9SRUFERVIpICQo
RU5BQkxFX0ZJTEVfV1JJVEVSKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSUNPTkRB
VEFCQVNFKSAkKEVOQUJMRV9JTUFHRV9SRVNJWkVSKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNF
KSAkKEVOQUJMRV9JTlBVVF9TUEVFQ0gpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQo
RU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVURVJfVEFHKSAkKEVOQUJMRV9OT1RJRklDQVRJT05T
KSAkKEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpICQoRU5BQkxFX1BST0dSRVNTX1RB
RykgJChFTkFCTEVfUlVCWSkgJChFTkFCTEVfU0FOREJPWCkgJChFTkFCTEVfU0hBUkVEX1dPUktF
UlMpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0FOSU1BVElPTikgJChFTkFCTEVfU1ZHX0FT
X0lNQUdFKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpICQoRU5BQkxFX1NWR19GT05U
UykgJChFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUKSAkKEVOQUJMRV9TVkdfVVNFKSAkKEVOQUJM
RV9WSURFTykgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5B
QkxFX1dNTCkgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWEhUTUxNUCkgJChFTkFCTEVfWFBB
VEgpICQoRU5BQkxFX1hTTFQpOwpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAJKHJldmlz
aW9uIDYyNjkzKQorKysgV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE0NCwxMiArMTQ0LDE5IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50Ojp0b2tlbml6
ZVJlbEF0dHJpYnUKICAgICByZWxBdHRyaWJ1dGUubV9pc0ljb24gPSBmYWxzZTsKICAgICByZWxB
dHRyaWJ1dGUubV9pc0FsdGVybmF0ZSA9IGZhbHNlOwogICAgIHJlbEF0dHJpYnV0ZS5tX2lzRE5T
UHJlZmV0Y2ggPSBmYWxzZTsKKyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKKyAgICByZWxBdHRy
aWJ1dGUubV9pc0xpbmtQcmVmZXRjaCA9IGZhbHNlOworI2VuZGlmCiAgICAgaWYgKGVxdWFsSWdu
b3JpbmdDYXNlKHJlbCwgInN0eWxlc2hlZXQiKSkKICAgICAgICAgcmVsQXR0cmlidXRlLm1faXNT
dHlsZVNoZWV0ID0gdHJ1ZTsKICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShyZWwsICJp
Y29uIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UocmVsLCAic2hvcnRjdXQgaWNvbiIpKQogICAgICAg
ICByZWxBdHRyaWJ1dGUubV9pc0ljb24gPSB0cnVlOwogICAgIGVsc2UgaWYgKGVxdWFsSWdub3Jp
bmdDYXNlKHJlbCwgImRucy1wcmVmZXRjaCIpKQogICAgICAgICByZWxBdHRyaWJ1dGUubV9pc0RO
U1ByZWZldGNoID0gdHJ1ZTsKKyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKKyAgICBlbHNlIGlm
IChlcXVhbElnbm9yaW5nQ2FzZShyZWwsICJwcmVmZXRjaCIpKQorICAgICAgICByZWxBdHRyaWJ1
dGUubV9pc0xpbmtQcmVmZXRjaCA9IHRydWU7CisjZW5kaWYKICAgICBlbHNlIGlmIChlcXVhbEln
bm9yaW5nQ2FzZShyZWwsICJhbHRlcm5hdGUgc3R5bGVzaGVldCIpIHx8IGVxdWFsSWdub3JpbmdD
YXNlKHJlbCwgInN0eWxlc2hlZXQgYWx0ZXJuYXRlIikpIHsKICAgICAgICAgcmVsQXR0cmlidXRl
Lm1faXNTdHlsZVNoZWV0ID0gdHJ1ZTsKICAgICAgICAgcmVsQXR0cmlidXRlLm1faXNBbHRlcm5h
dGUgPSB0cnVlOwpAQCAtMTg2LDYgKzE5MywxMSBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6cHJv
Y2VzcygpCiAgICAgaWYgKG1fcmVsQXR0cmlidXRlLm1faXNETlNQcmVmZXRjaCAmJiBtX3VybC5p
c1ZhbGlkKCkgJiYgIW1fdXJsLmlzRW1wdHkoKSkKICAgICAgICAgUmVzb3VyY2VIYW5kbGU6OnBy
ZXBhcmVGb3JVUkwobV91cmwpOwogCisjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCisgICAgaWYg
KG1fcmVsQXR0cmlidXRlLm1faXNMaW5rUHJlZmV0Y2ggJiYgbV91cmwuaXNWYWxpZCgpKQorICAg
ICAgICBkb2N1bWVudCgpLT5kb2NMb2FkZXIoKS0+cmVxdWVzdExpbmtQcmVmZXRjaChtX3VybCk7
CisjZW5kaWYKKwogICAgIGJvb2wgYWNjZXB0SWZUeXBlQ29udGFpbnNUZXh0Q1NTID0gZG9jdW1l
bnQoKS0+cGFnZSgpICYmIGRvY3VtZW50KCktPnBhZ2UoKS0+c2V0dGluZ3MoKSAmJiBkb2N1bWVu
dCgpLT5wYWdlKCktPnNldHRpbmdzKCktPnRyZWF0c0FueVRleHRDU1NMaW5rQXNTdHlsZXNoZWV0
KCk7CiAKICAgICAvLyBTdHlsZXNoZWV0CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCShyZXZp
c2lvbiA2MjY5MykKKysrIFdlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMzEsNiArMzEsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNo
ZWRDU1NTdHlsZVNoZWV0OworY2xhc3MgQ2FjaGVkTGlua1ByZWZldGNoOwogY2xhc3MgS1VSTDsK
IAogY2xhc3MgSFRNTExpbmtFbGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50LCBwdWJsaWMgQ2Fj
aGVkUmVzb3VyY2VDbGllbnQgewpAQCAtNDAsOCArNDEsMjAgQEAgcHVibGljOgogICAgICAgICBi
b29sIG1faXNJY29uOwogICAgICAgICBib29sIG1faXNBbHRlcm5hdGU7CiAgICAgICAgIGJvb2wg
bV9pc0ROU1ByZWZldGNoOworI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQorICAgICAgICBib29s
IG1faXNMaW5rUHJlZmV0Y2g7CisjZW5kaWYKIAotICAgICAgICBSZWxBdHRyaWJ1dGUoKSA6IG1f
aXNTdHlsZVNoZWV0KGZhbHNlKSwgbV9pc0ljb24oZmFsc2UpLCBtX2lzQWx0ZXJuYXRlKGZhbHNl
KSwgbV9pc0ROU1ByZWZldGNoKGZhbHNlKSB7IH0KKyAgICAgICAgUmVsQXR0cmlidXRlKCkKKyAg
ICAgICAgICAgIDogbV9pc1N0eWxlU2hlZXQoZmFsc2UpCisgICAgICAgICAgICAsIG1faXNJY29u
KGZhbHNlKQorICAgICAgICAgICAgLCBtX2lzQWx0ZXJuYXRlKGZhbHNlKQorICAgICAgICAgICAg
LCBtX2lzRE5TUHJlZmV0Y2goZmFsc2UpCisjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCisgICAg
ICAgICAgICAsIG1faXNMaW5rUHJlZmV0Y2goZmFsc2UpCisjZW5kaWYKKyAgICAgICAgICAgIHsg
CisgICAgICAgICAgICB9CiAgICAgfTsKIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxMaW5r
RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCosIGJvb2wgY3Jl
YXRlZEJ5UGFyc2VyKTsKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0NhY2hlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2xvYWRlci9DYWNoZS5jcHAJKHJldmlzaW9uIDYyNjkzKQorKysgV2ViQ29y
ZS9sb2FkZXIvQ2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Niw2ICs4NiwxMCBAQCBzdGF0
aWMgQ2FjaGVkUmVzb3VyY2UqIGNyZWF0ZVJlc291cmNlKENhCiAgICAgY2FzZSBDYWNoZWRSZXNv
dXJjZTo6WEJMU3R5bGVTaGVldDoKICAgICAgICAgcmV0dXJuIG5ldyBDYWNoZWRYQkxEb2N1bWVu
dCh1cmwuc3RyaW5nKCkpOwogI2VuZGlmCisjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCisgICAg
Y2FzZSBDYWNoZWRSZXNvdXJjZTo6TGlua1ByZWZldGNoOgorICAgICAgICByZXR1cm4gbmV3IENh
Y2hlZFJlc291cmNlKHVybC5zdHJpbmcoKSwgQ2FjaGVkUmVzb3VyY2U6OkxpbmtQcmVmZXRjaCk7
CisjZW5kaWYKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CkluZGV4OiBXZWJD
b3JlL2xvYWRlci9DYWNoZWRSZXNvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2Fk
ZXIvQ2FjaGVkUmVzb3VyY2UuY3BwCShyZXZpc2lvbiA2MjY5MykKKysrIFdlYkNvcmUvbG9hZGVy
L0NhY2hlZFJlc291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsOCBAQAogCiAj
aW5jbHVkZSAiQ2FjaGUuaCIKICNpbmNsdWRlICJDYWNoZWRNZXRhZGF0YS5oIgorI2luY2x1ZGUg
IkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnRX
YWxrZXIuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIkRv
Y0xvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC0xMDgsNiArMTEwLDE2IEBAIHZvaWQg
Q2FjaGVkUmVzb3VyY2U6OmxvYWQoRG9jTG9hZGVyKiBkb2MKICAgICBtX2xvYWRpbmcgPSB0cnVl
OwogfQogCit2b2lkIENhY2hlZFJlc291cmNlOjpkYXRhKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVy
PiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit7CisgICAgaWYgKCFhbGxEYXRhUmVjZWl2ZWQpCisg
ICAgICAgIHJldHVybjsKKyAgICAKKyAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlciB3KG1f
Y2xpZW50cyk7CisgICAgd2hpbGUgKENhY2hlZFJlc291cmNlQ2xpZW50KiBjID0gdy5uZXh0KCkp
CisgICAgICAgIGMtPm5vdGlmeUZpbmlzaGVkKHRoaXMpOworfQorCiB2b2lkIENhY2hlZFJlc291
cmNlOjpmaW5pc2goKQogewogICAgIG1fc3RhdHVzID0gQ2FjaGVkOwpAQCAtMjA0LDYgKzIxNiwx
MiBAQCB2b2lkIENhY2hlZFJlc291cmNlOjphZGRDbGllbnQoQ2FjaGVkUmVzCiAgICAgZGlkQWRk
Q2xpZW50KGNsaWVudCk7CiB9CiAKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OmRpZEFkZENsaWVudChD
YWNoZWRSZXNvdXJjZUNsaWVudCogYykKK3sKKyAgICBpZiAoIWlzTG9hZGluZygpKQorICAgICAg
ICBjLT5ub3RpZnlGaW5pc2hlZCh0aGlzKTsKK30KKwogdm9pZCBDYWNoZWRSZXNvdXJjZTo6YWRk
Q2xpZW50VG9TZXQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqIGNsaWVudCkKIHsKICAgICBBU1NFUlQo
IWlzUHVyZ2VhYmxlKCkpOwpJbmRleDogV2ViQ29yZS9sb2FkZXIvQ2FjaGVkUmVzb3VyY2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9DYWNoZWRSZXNvdXJjZS5oCShyZXZpc2lvbiA2
MjY5MykKKysrIFdlYkNvcmUvbG9hZGVyL0NhY2hlZFJlc291cmNlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTY0LDYgKzY0LDkgQEAgcHVibGljOgogI2lmIEVOQUJMRShYQkwpCiAgICAgICAgICwgWEJM
CiAjZW5kaWYKKyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKKyAgICAgICAgLCBMaW5rUHJlZmV0
Y2gKKyNlbmRpZgogICAgIH07CiAKICAgICBlbnVtIFN0YXR1cyB7CkBAIC04Miw4ICs4NSw4IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSB7
IH0KICAgICB2aXJ0dWFsIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygp
OyB9Ci0gICAgdmlydHVhbCB2b2lkIGRhdGEoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGVycm9yKCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBkYXRhKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhLCBi
b29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgdmlydHVhbCB2b2lkIGVycm9yKCkgeyB9CiAgICAg
dmlydHVhbCB2b2lkIGh0dHBTdGF0dXNDb2RlRXJyb3IoKSB7IGVycm9yKCk7IH0gLy8gSW1hZ2Vz
IGtlZXAgbG9hZGluZyBpbiBzcGl0ZSBvZiBIVFRQIGVycm9ycyAoZm9yIGxlZ2FjeSBjb21wYXQg
d2l0aCA8aW1nPiwgZXRjLikuCiAKICAgICBjb25zdCBTdHJpbmcgJnVybCgpIGNvbnN0IHsgcmV0
dXJuIG1fdXJsOyB9CkBAIC0xMDMsNyArMTA2LDcgQEAgcHVibGljOgogICAgIFByZWxvYWRSZXN1
bHQgcHJlbG9hZFJlc3VsdCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFByZWxvYWRSZXN1
bHQ+KG1fcHJlbG9hZFJlc3VsdCk7IH0KICAgICB2b2lkIHNldFJlcXVlc3RlZEZyb21OZXR3b3Jr
aW5nTGF5ZXIoKSB7IG1fcmVxdWVzdGVkRnJvbU5ldHdvcmtpbmdMYXllciA9IHRydWU7IH0KIAot
ICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCopOwog
ICAgIHZpcnR1YWwgdm9pZCBhbGxDbGllbnRzUmVtb3ZlZCgpIHsgfQogCiAgICAgdW5zaWduZWQg
Y291bnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudHMuc2l6ZSgpOyB9CkBAIC0xMjIsNiArMTI1
LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldExvYWRpbmcoYm9vbCBiKSB7IG1fbG9hZGluZyA9
IGI7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBpc0ltYWdlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KKyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKKyAgICB2aXJ0dWFsIGJvb2wgaXNQcmVmZXRj
aCgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSAhPSBMaW5rUHJlZmV0Y2g7IH0KKyNlbHNlCisgICAg
dmlydHVhbCBib29sIGlzUHJlZmV0Y2goKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorI2VuZGlm
CiAKICAgICB1bnNpZ25lZCBhY2Nlc3NDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fYWNjZXNzQ291
bnQ7IH0KICAgICB2b2lkIGluY3JlYXNlQWNjZXNzQ291bnQoKSB7IG1fYWNjZXNzQ291bnQrKzsg
fQpAQCAtMTYyLDcgKzE3MCw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNFeHBpcmVkKCkgY29u
c3Q7CiAKLSAgICB2aXJ0dWFsIGJvb2wgc2NoZWR1bGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQorICAgIHZpcnR1YWwgYm9vbCBzY2hlZHVsZSgpIGNvbnN0IHsgcmV0dXJuIGlzUHJlZmV0Y2go
KTsgfQogCiAgICAgLy8gTGlzdCBvZiBhY2NlcHRhYmxlIE1JTUUgdHlwZXMgc2VwYXJhdGVkIGJ5
ICIsIi4KICAgICAvLyBBIE1JTUUgdHlwZSBtYXkgY29udGFpbiBhIHdpbGRjYXJkLCBlLmcuICJ0
ZXh0LyoiLgpJbmRleDogV2ViQ29yZS9sb2FkZXIvQ2FjaGVkU2NyaXB0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2xvYWRlci9DYWNoZWRTY3JpcHQuY3BwCShyZXZpc2lvbiA2MjY5MykKKysr
IFdlYkNvcmUvbG9hZGVyL0NhY2hlZFNjcmlwdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDEy
ICs1MSw2IEBAIENhY2hlZFNjcmlwdDo6fkNhY2hlZFNjcmlwdCgpCiB7CiB9CiAKLXZvaWQgQ2Fj
aGVkU2NyaXB0OjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqIGMpCi17Ci0gICAg
aWYgKCFpc0xvYWRpbmcoKSkKLSAgICAgICAgYy0+bm90aWZ5RmluaXNoZWQodGhpcyk7Ci19Ci0K
IHZvaWQgQ2FjaGVkU2NyaXB0OjphbGxDbGllbnRzUmVtb3ZlZCgpCiB7CiAgICAgbV9kZWNvZGVk
RGF0YURlbGV0aW9uVGltZXIuc3RhcnRPbmVTaG90KDApOwpJbmRleDogV2ViQ29yZS9sb2FkZXIv
Q2FjaGVkU2NyaXB0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvQ2FjaGVkU2NyaXB0
LmgJKHJldmlzaW9uIDYyNjkzKQorKysgV2ViQ29yZS9sb2FkZXIvQ2FjaGVkU2NyaXB0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAg
ICAgIGNvbnN0IFN0cmluZyYgc2NyaXB0KCk7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZEFk
ZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgYWxs
Q2xpZW50c1JlbW92ZWQoKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0RW5jb2RpbmcoY29u
c3QgU3RyaW5nJik7CkluZGV4OiBXZWJDb3JlL2xvYWRlci9Eb2NMb2FkZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0RvY0xvYWRlci5jcHAJKHJldmlzaW9uIDYyNjkzKQorKysg
V2ViQ29yZS9sb2FkZXIvRG9jTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY4LDYgKzE2
OCwxMyBAQCBDYWNoZWRYQkxEb2N1bWVudCogRG9jTG9hZGVyOjpyZXF1ZXN0WEJMCiB9CiAjZW5k
aWYKIAorI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQorQ2FjaGVkUmVzb3VyY2UqIERvY0xvYWRl
cjo6cmVxdWVzdExpbmtQcmVmZXRjaChjb25zdCBTdHJpbmcmIHVybCkKK3sKKyAgICByZXR1cm4g
cmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpMaW5rUHJlZmV0Y2gsIHVybCwgU3RyaW5n
KCkpOworfQorI2VuZGlmCisKIGJvb2wgRG9jTG9hZGVyOjpjYW5SZXF1ZXN0KENhY2hlZFJlc291
cmNlOjpUeXBlIHR5cGUsIGNvbnN0IEtVUkwmIHVybCkKIHsKICAgICAvLyBTb21lIHR5cGVzIG9m
IHJlc291cmNlcyBjYW4gYmUgbG9hZGVkIG9ubHkgZnJvbSB0aGUgc2FtZSBvcmlnaW4uICBPdGhl
cgpAQCAtMTc4LDYgKzE4NSw5IEBAIGJvb2wgRG9jTG9hZGVyOjpjYW5SZXF1ZXN0KENhY2hlZFJl
c291cmMKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpDU1NTdHlsZVNoZWV0OgogICAgIGNhc2Ug
Q2FjaGVkUmVzb3VyY2U6OlNjcmlwdDoKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpGb250UmVz
b3VyY2U6CisjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCisgICAgY2FzZSBDYWNoZWRSZXNvdXJj
ZTo6TGlua1ByZWZldGNoOgorI2VuZGlmCiAgICAgICAgIC8vIFRoZXNlIHR5cGVzIG9mIHJlc291
cmNlcyBjYW4gYmUgbG9hZGVkIGZyb20gYW55IG9yaWdpbi4KICAgICAgICAgLy8gRklYTUU6IEFy
ZSB3ZSBzdXJlIGFib3V0IENhY2hlZFJlc291cmNlOjpGb250UmVzb3VyY2U/CiAgICAgICAgIGJy
ZWFrOwpAQCAtMjI4LDYgKzIzOCwxMSBAQCBib29sIERvY0xvYWRlcjo6Y2FuUmVxdWVzdChDYWNo
ZWRSZXNvdXJjCiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQorI2lmIEVOQUJMRShM
SU5LX1BSRUZFVENIKQorICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkxpbmtQcmVmZXRjaDoKKyAg
ICAgICAgLy8gUHJlZmV0Y2ggY2Fubm90IGFmZmVjdCB0aGUgY3VycmVudCBkb2N1bWVudC4KKyAg
ICAgICAgYnJlYWs7CisjZW5kaWYKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICAgICAgYnJlYWs7CkBAIC0zNTUsMTMgKzM3MCwxOSBAQCB2b2lkIERvY0xv
YWRlcjo6Y2hlY2tDYWNoZU9iamVjdFN0YXR1cyhDCiAgICAgZnJhbWUoKS0+bG9hZGVyKCktPmxv
YWRlZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKHJlc291cmNlKTsKIH0KIAotdm9pZCBEb2NMb2Fk
ZXI6OmluY3JlbWVudFJlcXVlc3RDb3VudCgpCit2b2lkIERvY0xvYWRlcjo6aW5jcmVtZW50UmVx
dWVzdENvdW50KGNvbnN0IENhY2hlZFJlc291cmNlKiByZXMpCiB7CisgICAgaWYgKHJlcy0+aXNQ
cmVmZXRjaCgpKQorICAgICAgICByZXR1cm47CisKICAgICArK21fcmVxdWVzdENvdW50OwogfQog
Ci12b2lkIERvY0xvYWRlcjo6ZGVjcmVtZW50UmVxdWVzdENvdW50KCkKK3ZvaWQgRG9jTG9hZGVy
OjpkZWNyZW1lbnRSZXF1ZXN0Q291bnQoY29uc3QgQ2FjaGVkUmVzb3VyY2UqIHJlcykKIHsKKyAg
ICBpZiAocmVzLT5pc1ByZWZldGNoKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIC0tbV9yZXF1
ZXN0Q291bnQ7CiAgICAgQVNTRVJUKG1fcmVxdWVzdENvdW50ID4gLTEpOwogfQpJbmRleDogV2Vi
Q29yZS9sb2FkZXIvRG9jTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRG9j
TG9hZGVyLmgJKHJldmlzaW9uIDYyNjkzKQorKysgV2ViQ29yZS9sb2FkZXIvRG9jTG9hZGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTY3LDYgKzY3LDkgQEAgcHVibGljOgogI2lmIEVOQUJMRShYQkwp
CiAgICAgQ2FjaGVkWEJMRG9jdW1lbnQqIHJlcXVlc3RYQkxEb2N1bWVudChjb25zdCBTdHJpbmcg
JnVybCk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKKyAgICBDYWNoZWRSZXNv
dXJjZSogcmVxdWVzdExpbmtQcmVmZXRjaChjb25zdCBTdHJpbmcgJnVybCk7CisjZW5kaWYKIAog
ICAgIC8vIExvZ3MgYW4gYWNjZXNzIGRlbmllZCBtZXNzYWdlIHRvIHRoZSBjb25zb2xlIGZvciB0
aGUgc3BlY2lmaWVkIFVSTC4KICAgICB2b2lkIHByaW50QWNjZXNzRGVuaWVkTWVzc2FnZShjb25z
dCBLVVJMJiB1cmwpIGNvbnN0OwpAQCAtOTEsOCArOTQsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAg
dm9pZCBzZXRBbGxvd1N0YWxlUmVzb3VyY2VzKGJvb2wgYWxsb3dTdGFsZVJlc291cmNlcykgeyBt
X2FsbG93U3RhbGVSZXNvdXJjZXMgPSBhbGxvd1N0YWxlUmVzb3VyY2VzOyB9CiAKLSAgICB2b2lk
IGluY3JlbWVudFJlcXVlc3RDb3VudCgpOwotICAgIHZvaWQgZGVjcmVtZW50UmVxdWVzdENvdW50
KCk7CisgICAgdm9pZCBpbmNyZW1lbnRSZXF1ZXN0Q291bnQoY29uc3QgQ2FjaGVkUmVzb3VyY2Uq
KTsKKyAgICB2b2lkIGRlY3JlbWVudFJlcXVlc3RDb3VudChjb25zdCBDYWNoZWRSZXNvdXJjZSop
OwogICAgIGludCByZXF1ZXN0Q291bnQoKTsKICAgICAKICAgICB2b2lkIGNsZWFyUHJlbG9hZHMo
KTsKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL2xvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9sb2FkZXIvbG9hZGVyLmNwcAkocmV2aXNpb24gNjI2OTMpCisrKyBXZWJDb3JlL2xvYWRlci9s
b2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSw3ICs4OSwxMiBAQCBzdGF0aWMgUmVzb3Vy
Y2VSZXF1ZXN0OjpUYXJnZXRUeXBlIGNhY2hlCiAgICAgICAgIHJldHVybiBSZXNvdXJjZVJlcXVl
c3Q6OlRhcmdldElzRm9udFJlc291cmNlOwogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkltYWdl
UmVzb3VyY2U6CiAgICAgICAgIHJldHVybiBSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldElzSW1hZ2U7
CisjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCisgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6TGlu
a1ByZWZldGNoOgorICAgICAgICByZXR1cm4gUmVzb3VyY2VSZXF1ZXN0OjpUYXJnZXRJc1ByZWZl
dGNoOworI2VuZGlmCiAgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVy
biBSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldElzU3VicmVzb3VyY2U7CiB9CiAKQEAgLTExMCw2ICsx
MTUsMTAgQEAgTG9hZGVyOjpQcmlvcml0eSBMb2FkZXI6OmRldGVybWluZVByaW9yaQogICAgICAg
ICAgICAgcmV0dXJuIE1lZGl1bTsKICAgICAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6SW1hZ2VS
ZXNvdXJjZToKICAgICAgICAgICAgIHJldHVybiBMb3c7CisjaWYgRU5BQkxFKExJTktfUFJFRkVU
Q0gpCisgICAgICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkxpbmtQcmVmZXRjaDoKKyAgICAgICAg
ICAgIHJldHVybiBWZXJ5TG93OworI2VuZGlmCiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgIHJldHVybiBMb3c7CkBAIC0xMzksOSArMTQ4LDkgQEAgdm9pZCBMb2FkZXI6Omxv
YWQoRG9jTG9hZGVyKiBkb2NMb2FkZXIsIAogICAgIGJvb2wgaGFkUmVxdWVzdHMgPSBob3N0LT5o
YXNSZXF1ZXN0cygpOwogICAgIFByaW9yaXR5IHByaW9yaXR5ID0gZGV0ZXJtaW5lUHJpb3JpdHko
cmVzb3VyY2UpOwogICAgIGhvc3QtPmFkZFJlcXVlc3QocmVxdWVzdCwgcHJpb3JpdHkpOwotICAg
IGRvY0xvYWRlci0+aW5jcmVtZW50UmVxdWVzdENvdW50KCk7CisgICAgZG9jTG9hZGVyLT5pbmNy
ZW1lbnRSZXF1ZXN0Q291bnQocmVxdWVzdC0+Y2FjaGVkUmVzb3VyY2UoKSk7CiAKLSAgICBpZiAo
cHJpb3JpdHkgPiBMb3cgfHwgIXVybC5wcm90b2NvbEluSFRUUEZhbWlseSgpIHx8ICFoYWRSZXF1
ZXN0cykgeworICAgIGlmIChwcmlvcml0eSA+IExvdyB8fCAhdXJsLnByb3RvY29sSW5IVFRQRmFt
aWx5KCkgfHwgKHByaW9yaXR5ID09IExvdyAmJiAhaGFkUmVxdWVzdHMpKSB7CiAgICAgICAgIC8v
IFRyeSB0byByZXF1ZXN0IGltcG9ydGFudCByZXNvdXJjZXMgaW1tZWRpYXRlbHkKICAgICAgICAg
aG9zdC0+c2VydmVQZW5kaW5nUmVxdWVzdHMocHJpb3JpdHkpOwogICAgIH0gZWxzZSB7CkBAIC0z
NzAsNyArMzc5LDcgQEAgdm9pZCBMb2FkZXI6Okhvc3Q6OnNlcnZlUGVuZGluZ1JlcXVlc3RzKAog
ICAgICAgICAgICAgcHJpbnRmKCJIT1NUICVzIENPVU5UICVkIExPQURJTkcgJXNcbiIsIHJlc291
cmNlUmVxdWVzdC51cmwoKS5ob3N0KCkubGF0aW4xKCkuZGF0YSgpLCBtX3JlcXVlc3RzTG9hZGlu
Zy5zaXplKCksIHJlcXVlc3QtPmNhY2hlZFJlc291cmNlKCktPnVybCgpLmxhdGluMSgpLmRhdGEo
KSk7CiAjZW5kaWYKICAgICAgICAgfSBlbHNlIHsgICAgICAgICAgICAKLSAgICAgICAgICAgIGRv
Y0xvYWRlci0+ZGVjcmVtZW50UmVxdWVzdENvdW50KCk7CisgICAgICAgICAgICBkb2NMb2FkZXIt
PmRlY3JlbWVudFJlcXVlc3RDb3VudChyZXF1ZXN0LT5jYWNoZWRSZXNvdXJjZSgpKTsKICAgICAg
ICAgICAgIGRvY0xvYWRlci0+c2V0TG9hZEluUHJvZ3Jlc3ModHJ1ZSk7CiAgICAgICAgICAgICBy
ZXF1ZXN0LT5jYWNoZWRSZXNvdXJjZSgpLT5lcnJvcigpOwogICAgICAgICAgICAgZG9jTG9hZGVy
LT5zZXRMb2FkSW5Qcm9ncmVzcyhmYWxzZSk7CkBAIC0zOTQsNyArNDAzLDcgQEAgdm9pZCBMb2Fk
ZXI6Okhvc3Q6OmRpZEZpbmlzaExvYWRpbmcoU3VicgogICAgIC8vIHRoZSBkb2NMb2FkZXIgdGhh
dCBpdCB3aWxsIGRlbGV0ZSB3aGVuIHRoZSBkb2N1bWVudCBnZXRzIGRlbGV0ZWQuCiAgICAgUmVm
UHRyPERvY3VtZW50PiBwcm90ZWN0b3IoZG9jTG9hZGVyLT5kb2MoKSk7CiAgICAgaWYgKCFyZXF1
ZXN0LT5pc011bHRpcGFydCgpKQotICAgICAgICBkb2NMb2FkZXItPmRlY3JlbWVudFJlcXVlc3RD
b3VudCgpOworICAgICAgICBkb2NMb2FkZXItPmRlY3JlbWVudFJlcXVlc3RDb3VudChyZXF1ZXN0
LT5jYWNoZWRSZXNvdXJjZSgpKTsKIAogICAgIENhY2hlZFJlc291cmNlKiByZXNvdXJjZSA9IHJl
cXVlc3QtPmNhY2hlZFJlc291cmNlKCk7CiAgICAgQVNTRVJUKCFyZXNvdXJjZS0+cmVzb3VyY2VU
b1JldmFsaWRhdGUoKSk7CkBAIC00NDIsNyArNDUxLDcgQEAgdm9pZCBMb2FkZXI6Okhvc3Q6OmRp
ZEZhaWwoU3VicmVzb3VyY2VMbwogICAgIC8vIHRoZSBkb2NMb2FkZXIgdGhhdCBpdCB3aWxsIGRl
bGV0ZSB3aGVuIHRoZSBkb2N1bWVudCBnZXRzIGRlbGV0ZWQuCiAgICAgUmVmUHRyPERvY3VtZW50
PiBwcm90ZWN0b3IoZG9jTG9hZGVyLT5kb2MoKSk7CiAgICAgaWYgKCFyZXF1ZXN0LT5pc011bHRp
cGFydCgpKQotICAgICAgICBkb2NMb2FkZXItPmRlY3JlbWVudFJlcXVlc3RDb3VudCgpOworICAg
ICAgICBkb2NMb2FkZXItPmRlY3JlbWVudFJlcXVlc3RDb3VudChyZXF1ZXN0LT5jYWNoZWRSZXNv
dXJjZSgpKTsKIAogICAgIENhY2hlZFJlc291cmNlKiByZXNvdXJjZSA9IHJlcXVlc3QtPmNhY2hl
ZFJlc291cmNlKCk7CiAgICAgCkBAIC00ODcsNyArNDk2LDcgQEAgdm9pZCBMb2FkZXI6Okhvc3Q6
OmRpZFJlY2VpdmVSZXNwb25zZShTdQogICAgICAgICAgICAgLy8gMzA0IE5vdCBtb2RpZmllZCAv
IFVzZSBsb2NhbCBjb3B5CiAgICAgICAgICAgICBtX3JlcXVlc3RzTG9hZGluZy5yZW1vdmUobG9h
ZGVyKTsKICAgICAgICAgICAgIGxvYWRlci0+Y2xlYXJDbGllbnQoKTsKLSAgICAgICAgICAgIHJl
cXVlc3QtPmRvY0xvYWRlcigpLT5kZWNyZW1lbnRSZXF1ZXN0Q291bnQoKTsKKyAgICAgICAgICAg
IHJlcXVlc3QtPmRvY0xvYWRlcigpLT5kZWNyZW1lbnRSZXF1ZXN0Q291bnQocmVxdWVzdC0+Y2Fj
aGVkUmVzb3VyY2UoKSk7CiAKICAgICAgICAgICAgIC8vIEV4aXN0aW5nIHJlc291cmNlIGlzIG9r
LCBqdXN0IHVzZSBpdCB1cGRhdGluZyB0aGUgZXhwaXJhdGlvbiB0aW1lLgogICAgICAgICAgICAg
Y2FjaGUoKS0+cmV2YWxpZGF0aW9uU3VjY2VlZGVkKHJlc291cmNlLCByZXNwb25zZSk7CkBAIC01
MTksNyArNTI4LDcgQEAgdm9pZCBMb2FkZXI6Okhvc3Q6OmRpZFJlY2VpdmVSZXNwb25zZShTdQog
ICAgICAgICByZXF1ZXN0LT5zZXRJc011bHRpcGFydCh0cnVlKTsKICAgICAgICAgCiAgICAgICAg
IC8vIFdlIGRvbid0IGNvdW50IG11bHRpUGFydHMgaW4gYSBEb2NMb2FkZXIncyByZXF1ZXN0IGNv
dW50Ci0gICAgICAgIHJlcXVlc3QtPmRvY0xvYWRlcigpLT5kZWNyZW1lbnRSZXF1ZXN0Q291bnQo
KTsKKyAgICAgICAgcmVxdWVzdC0+ZG9jTG9hZGVyKCktPmRlY3JlbWVudFJlcXVlc3RDb3VudChy
ZXF1ZXN0LT5jYWNoZWRSZXNvdXJjZSgpKTsKIAogICAgICAgICAvLyBJZiB3ZSBnZXQgYSBtdWx0
aXBhcnQgcmVzcG9uc2UsIHdlIG11c3QgaGF2ZSBhIGhhbmRsZQogICAgICAgICBBU1NFUlQobG9h
ZGVyLT5oYW5kbGUoKSk7CkBAIC01ODIsNyArNTkxLDcgQEAgdm9pZCBMb2FkZXI6Okhvc3Q6OmNh
bmNlbFBlbmRpbmdSZXF1ZXN0cwogICAgICAgICBpZiAocmVxdWVzdC0+ZG9jTG9hZGVyKCkgPT0g
ZG9jTG9hZGVyKSB7CiAgICAgICAgICAgICBjYWNoZSgpLT5yZW1vdmUocmVxdWVzdC0+Y2FjaGVk
UmVzb3VyY2UoKSk7CiAgICAgICAgICAgICBkZWxldGUgcmVxdWVzdDsKLSAgICAgICAgICAgIGRv
Y0xvYWRlci0+ZGVjcmVtZW50UmVxdWVzdENvdW50KCk7CisgICAgICAgICAgICBkb2NMb2FkZXIt
PmRlY3JlbWVudFJlcXVlc3RDb3VudChyZXF1ZXN0LT5jYWNoZWRSZXNvdXJjZSgpKTsKICAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICByZW1haW5pbmcuYXBwZW5kKHJlcXVlc3QpOwogICAgIH0K
SW5kZXg6IFdlYkNvcmUvbG9hZGVyL2xvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9h
ZGVyL2xvYWRlci5oCShyZXZpc2lvbiA2MjY5MykKKysrIFdlYkNvcmUvbG9hZGVyL2xvYWRlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC00OCw4ICs0OCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ICAgICAgICB2b2lkIGNhbmNlbFJlcXVlc3RzKERvY0xvYWRlciopOwogICAgICAgICAKLSAgICAg
ICAgZW51bSBQcmlvcml0eSB7IExvdywgTWVkaXVtLCBIaWdoIH07Ci0gICAgICAgIHZvaWQgc2Vy
dmVQZW5kaW5nUmVxdWVzdHMoUHJpb3JpdHkgbWluaW11bVByaW9yaXR5ID0gTG93KTsKKyAgICAg
ICAgZW51bSBQcmlvcml0eSB7IFZlcnlMb3csIExvdywgTWVkaXVtLCBIaWdoIH07CisgICAgICAg
IHZvaWQgc2VydmVQZW5kaW5nUmVxdWVzdHMoUHJpb3JpdHkgbWluaW11bVByaW9yaXR5ID0gVmVy
eUxvdyk7CiAKICAgICAgICAgYm9vbCBpc1N1c3BlbmRpbmdQZW5kaW5nUmVxdWVzdHMoKSB7IHJl
dHVybiBtX2lzU3VzcGVuZGluZ1BlbmRpbmdSZXF1ZXN0czsgfQogICAgICAgICB2b2lkIHN1c3Bl
bmRQZW5kaW5nUmVxdWVzdHMoKTsKQEAgLTc2LDcgKzc2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICAgICAgdm9pZCBhZGRSZXF1ZXN0KFJlcXVlc3QqLCBQcmlvcml0eSk7CiAgICAg
ICAgICAgICB2b2lkIG5vbkNhY2hlUmVxdWVzdEluRmxpZ2h0KCk7CiAgICAgICAgICAgICB2b2lk
IG5vbkNhY2hlUmVxdWVzdENvbXBsZXRlKCk7Ci0gICAgICAgICAgICB2b2lkIHNlcnZlUGVuZGlu
Z1JlcXVlc3RzKFByaW9yaXR5IG1pbmltdW1Qcmlvcml0eSA9IExvdyk7CisgICAgICAgICAgICB2
b2lkIHNlcnZlUGVuZGluZ1JlcXVlc3RzKFByaW9yaXR5IG1pbmltdW1Qcmlvcml0eSA9IFZlcnlM
b3cpOwogICAgICAgICAgICAgdm9pZCBjYW5jZWxSZXF1ZXN0cyhEb2NMb2FkZXIqKTsKICAgICAg
ICAgICAgIGJvb2wgaGFzUmVxdWVzdHMoKSBjb25zdDsKIApJbmRleDogV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCShyZXZpc2lvbiA2MjY5MykKKysr
IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTYzLDcgKzYzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAg
VGFyZ2V0SXNPYmplY3QsCiAgICAgICAgICAgICBUYXJnZXRJc01lZGlhLAogICAgICAgICAgICAg
VGFyZ2V0SXNXb3JrZXIsCi0gICAgICAgICAgICBUYXJnZXRJc1NoYXJlZFdvcmtlcgorICAgICAg
ICAgICAgVGFyZ2V0SXNTaGFyZWRXb3JrZXIsCisgICAgICAgICAgICBUYXJnZXRJc1ByZWZldGNo
LAogICAgICAgICB9OwogCiAgICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPFJlc291cmNlUmVxdWVz
dD4gYWRvcHQoUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+KTsKSW5k
ZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9nCShy
ZXZpc2lvbiA2MjY5OSkKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTIgQEAKKzIwMTAtMDctMDcgIEdhdmluIFBldGVycyAgPGdhdmlucEBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgYWRk
IHN1cHBvcnQgZm9yIGxpbmsgcHJlZmV0Y2hpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTM2NTIKKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0Zl
YXR1cmVEZWZpbmVzLnhjY29uZmlnOgorCiAyMDEwLTA3LTA3ICBTYW0gV2VpbmlnICA8c2FtQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgpJbmRleDog
V2ViS2l0Mi9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQyL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCShyZXZp
c2lvbiA2MjY5MykKKysrIFdlYktpdDIvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNj
b25maWcJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDggQEAKIAogLy8gU2V0IGFueSBFTkFC
TEVfRkVBVFVSRV9OQU1FIG1hY3JvIHRvIGFuIGVtcHR5IHN0cmluZyB0byBkaXNhYmxlIHRoYXQg
ZmVhdHVyZS4KIAorRU5BQkxFX0xJTktfUFJFRkVUQ0ggPSA7CisKIEVOQUJMRV8zRF9DQU5WQVMg
PSAkKEVOQUJMRV8zRF9DQU5WQVNfJChUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUikpOwog
RU5BQkxFXzNEX0NBTlZBU18xMDUwID0gRU5BQkxFXzNEX0NBTlZBUzsKIEVOQUJMRV8zRF9DQU5W
QVNfMTA2MCA9IEVOQUJMRV8zRF9DQU5WQVM7CkBAIC04Miw1ICs4NCw0IEBAIEVOQUJMRV9YSFRN
TE1QID0gOwogRU5BQkxFX1hQQVRIID0gRU5BQkxFX1hQQVRIOwogRU5BQkxFX1hTTFQgPSBFTkFC
TEVfWFNMVDsKIAotRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfQ0FOVkFTKSAkKEVOQUJM
RV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0JMT0JfU0xJQ0UpICQoRU5BQkxFX0NIQU5ORUxfTUVT
U0FHSU5HKSAkKEVOQUJMRV9DTElFTlRfQkFTRURfR0VPTE9DQVRJT04pICQoRU5BQkxFX0RBVEFC
QVNFKSAkKEVOQUJMRV9EQVRBR1JJRCkgJChFTkFCTEVfREFUQUxJU1QpICQoRU5BQkxFX0RJUkVD
VE9SWV9VUExPQUQpICQoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQpICQoRU5BQkxFX0RPTV9TVE9S
QUdFKSAkKEVOQUJMRV9FVkVOVFNPVVJDRSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfRklM
RV9SRUFERVIpICQoRU5BQkxFX0ZJTEVfV1JJVEVSKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChF
TkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9J
TlBVVF9TUEVFQ0gpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX01BVEhN
TCkgJChFTkFCTEVfTUVURVJfVEFHKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9P
RkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpICQoRU5BQkxFX1BST0dSRVNTX1RBRykgJChFTkFCTEVf
UlVCWSkgJChFTkFCTEVfU0FOREJPWCkgJChFTkFCTEVfU0hBUkVEX1dPUktFUlMpICQoRU5BQkxF
X1NWRykgJChFTkFCTEVfU1ZHX0FOSU1BVElPTikgJChFTkFCTEVfU1ZHX0FTX0lNQUdFKSAkKEVO
QUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVf
U1ZHX0ZPUkVJR05fT0JKRUNUKSAkKEVOQUJMRV9TVkdfVVNFKSAkKEVOQUJMRV9WSURFTykgJChF
TkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5BQkxFX1dNTCkgJChF
TkFCTEVfV09SS0VSUykgJChFTkFCTEVfWEhUTUxNUCkgJChFTkFCTEVfWFBBVEgpICQoRU5BQkxF
X1hTTFQpOwotCitGRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVO
QUJMRV8zRF9DQU5WQVMpICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQkxPQl9TTElD
RSkgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NMSUVOVF9CQVNFRF9HRU9M
T0NBVElPTikgJChFTkFCTEVfREFUQUJBU0UpICQoRU5BQkxFX0RBVEFHUklEKSAkKEVOQUJMRV9E
QVRBTElTVCkgJChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCkgJChFTkFCTEVfRE9NX1NUT1JBR0Up
ICQoRU5BQkxFX0VWRU5UU09VUkNFKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GSUxFX1JF
QURFUikgJChFTkFCTEVfRklMRV9XUklURVIpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJM
RV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lOUFVU
X1NQRUVDSCkgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfTUFUSE1MKSAk
KEVOQUJMRV9NRVRFUl9UQUcpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX09GRkxJ
TkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVfUFJPR1JFU1NfVEFHKSAkKEVOQUJMRV9SVUJZ
KSAkKEVOQUJMRV9TQU5EQk9YKSAkKEVOQUJMRV9TSEFSRURfV09SS0VSUykgJChFTkFCTEVfU1ZH
KSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxF
X1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdf
Rk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJM
RV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykgJChFTkFCTEVfV01MKSAkKEVOQUJM
RV9XT1JLRVJTKSAkKEVOQUJMRV9YSFRNTE1QKSAkKEVOQUJMRV9YUEFUSCkgJChFTkFCTEVfWFNM
VCk7CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDYyNjk5KQorKysgV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEwLTA3LTA3ICBH
YXZpbiBQZXRlcnMgIDxnYXZpbnBAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGFkZCBzdXBwb3J0IGZvciBsaW5rIHByZWZldGNo
aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjUy
CisKKyAgICAgICAgKiBwdWJsaWMvV2ViVVJMUmVxdWVzdC5oOgorICAgICAgICAoV2ViS2l0OjpX
ZWJVUkxSZXF1ZXN0OjopOgorCiAyMDEwLTA3LTA3ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgpJbmRleDogV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJVUkxSZXF1ZXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJVUkxSZXF1ZXN0LmgJKHJldmlzaW9uIDYyNjkzKQorKysgV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJVUkxSZXF1ZXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcg
KzY5LDEwIEBAIHB1YmxpYzoKICAgICAgICAgVGFyZ2V0SXNPYmplY3QgPSA3LAogICAgICAgICBU
YXJnZXRJc01lZGlhID0gOCwKICAgICAgICAgVGFyZ2V0SXNXb3JrZXIgPSA5LAotICAgICAgICBU
YXJnZXRJc1NoYXJlZFdvcmtlciA9IDEwCisgICAgICAgIFRhcmdldElzU2hhcmVkV29ya2VyID0g
MTAsCisgICAgICAgIFRhcmdldElzUHJlZmV0Y2ggPSAxMSwKICAgICB9OwogCiAgICAgfldlYlVS
TFJlcXVlc3QoKSB7IHJlc2V0KCk7IH0KSW5kZXg6IFdlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2MjY5OSkKKysrIFdlYktp
dC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTAtMDct
MDcgIEdhdmluIFBldGVycyAgPGdhdmlucEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgYWRkIHN1cHBvcnQgZm9yIGxpbmsgcHJl
ZmV0Y2hpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTM2NTIKKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmln
OgorCiAyMDEwLTA3LTA3ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgpJbmRleDogV2ViS2l0L21hYy9Db25maWd1cmF0
aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL0Nv
bmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCShyZXZpc2lvbiA2MjY5MykKKysr
IFdlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcJKHdvcmtp
bmcgY29weSkKQEAgLTMxLDYgKzMxLDggQEAKIAogLy8gU2V0IGFueSBFTkFCTEVfRkVBVFVSRV9O
QU1FIG1hY3JvIHRvIGFuIGVtcHR5IHN0cmluZyB0byBkaXNhYmxlIHRoYXQgZmVhdHVyZS4KIAor
RU5BQkxFX0xJTktfUFJFRkVUQ0ggPSA7CisKIEVOQUJMRV8zRF9DQU5WQVMgPSAkKEVOQUJMRV8z
RF9DQU5WQVNfJChUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUikpOwogRU5BQkxFXzNEX0NB
TlZBU18xMDUwID0gRU5BQkxFXzNEX0NBTlZBUzsKIEVOQUJMRV8zRF9DQU5WQVNfMTA2MCA9IEVO
QUJMRV8zRF9DQU5WQVM7CkBAIC04NCw0ICs4Niw0IEBAIEVOQUJMRV9YSFRNTE1QID0gOwogRU5B
QkxFX1hQQVRIID0gRU5BQkxFX1hQQVRIOwogRU5BQkxFX1hTTFQgPSBFTkFCTEVfWFNMVDsKIAot
RkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfQ0FOVkFTKSAkKEVOQUJMRV8zRF9SRU5ERVJJ
TkcpICQoRU5BQkxFX0JMT0JfU0xJQ0UpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVO
QUJMRV9DTElFTlRfQkFTRURfR0VPTE9DQVRJT04pICQoRU5BQkxFX0RBVEFCQVNFKSAkKEVOQUJM
RV9EQVRBR1JJRCkgJChFTkFCTEVfREFUQUxJU1QpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElP
TikgJChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCkgJChFTkFCTEVfRE9NX1NUT1JBR0UpICQoRU5B
QkxFX0VWRU5UU09VUkNFKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GSUxFX1JFQURFUikg
JChFTkFCTEVfRklMRV9XUklURVIpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09O
REFUQUJBU0UpICQoRU5BQkxFX0lNQUdFX1JFU0laRVIpICQoRU5BQkxFX0lOREVYRURfREFUQUJB
U0UpICQoRU5BQkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikg
JChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRVRFUl9UQUcpICQoRU5BQkxFX05PVElGSUNBVElP
TlMpICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVfUFJPR1JFU1Nf
VEFHKSAkKEVOQUJMRV9SVUJZKSAkKEVOQUJMRV9TQU5EQk9YKSAkKEVOQUJMRV9TSEFSRURfV09S
S0VSUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdf
QVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZP
TlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5B
QkxFX1ZJREVPKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykgJChF
TkFCTEVfV01MKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YSFRNTE1QKSAkKEVOQUJMRV9Y
UEFUSCkgJChFTkFCTEVfWFNMVCk7CitGRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV9MSU5LX1BS
RUZFVENIKSAkKEVOQUJMRV8zRF9DQU5WQVMpICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFC
TEVfQkxPQl9TTElDRSkgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NMSUVO
VF9CQVNFRF9HRU9MT0NBVElPTikgJChFTkFCTEVfREFUQUJBU0UpICQoRU5BQkxFX0RBVEFHUklE
KSAkKEVOQUJMRV9EQVRBTElTVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJM
RV9ESVJFQ1RPUllfVVBMT0FEKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVfRVZFTlRT
T1VSQ0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZJTEVfUkVBREVSKSAkKEVOQUJMRV9G
SUxFX1dSSVRFUikgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFTRSkg
JChFTkFCTEVfSU1BR0VfUkVTSVpFUikgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFC
TEVfSU5QVVRfU1BFRUNIKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9N
QVRITUwpICQoRU5BQkxFX01FVEVSX1RBRykgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFC
TEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKSAkKEVOQUJMRV9QUk9HUkVTU19UQUcpICQoRU5B
QkxFX1JVQlkpICQoRU5BQkxFX1NBTkRCT1gpICQoRU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAkKEVO
QUJMRV9TVkcpICQoRU5BQkxFX1NWR19BTklNQVRJT04pICQoRU5BQkxFX1NWR19BU19JTUFHRSkg
JChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5B
QkxFX1NWR19GT1JFSUdOX09CSkVDVCkgJChFTkFCTEVfU1ZHX1VTRSkgJChFTkFCTEVfVklERU8p
ICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVOQUJMRV9XTUwp
ICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hIVE1MTVApICQoRU5BQkxFX1hQQVRIKSAkKEVO
QUJMRV9YU0xUKTsKSW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXRUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDYyNjk5KQorKysgV2ViS2l0VG9vbHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTAtMDctMDcgIEdhdmlu
IFBldGVycyAgPGdhdmlucEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgYWRkIHN1cHBvcnQgZm9yIGxpbmsgcHJlZmV0Y2hpbmcK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2NTIKKwor
ICAgICAgICAqIFNjcmlwdHMvYnVpbGQtd2Via2l0OgorCiAyMDEwLTA3LTA3ICBLZXZpbiBPbGxp
dmllciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29tPgogCiAgICAgICAgIFt3eF0gQnVpbGQgZml4
LiBwYWdlUHJvcGVydHkgbmVlZHMgdG8gcmV0dXJuIGEgdmFsdWUuCkluZGV4OiBXZWJLaXRUb29s
cy9TY3JpcHRzL2J1aWxkLXdlYmtpdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRz
L2J1aWxkLXdlYmtpdAkocmV2aXNpb24gNjI2OTMpCisrKyBXZWJLaXRUb29scy9TY3JpcHRzL2J1
aWxkLXdlYmtpdAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCBteSAkcHJlZml4UGF0
aDsKIG15ICRtYWtlQXJnczsKIG15ICRzdGFydFRpbWUgPSB0aW1lKCk7CiAKLW15ICgkdGhyZWVE
Q2FudmFzU3VwcG9ydCwgJHRocmVlRFJlbmRlcmluZ1N1cHBvcnQsICRjaGFubmVsTWVzc2FnaW5n
U3VwcG9ydCwgJGNsaWVudEJhc2VkR2VvbG9jYXRpb25TdXBwb3J0LCAkZGF0YWJhc2VTdXBwb3J0
LCAkZGF0YWdyaWRTdXBwb3J0LCAkZGF0YWxpc3RTdXBwb3J0LAorbXkgKCRsaW5rUHJlZmV0Y2hT
dXBwb3J0LCAkdGhyZWVEQ2FudmFzU3VwcG9ydCwgJHRocmVlRFJlbmRlcmluZ1N1cHBvcnQsICRj
aGFubmVsTWVzc2FnaW5nU3VwcG9ydCwgJGNsaWVudEJhc2VkR2VvbG9jYXRpb25TdXBwb3J0LCAk
ZGF0YWJhc2VTdXBwb3J0LCAkZGF0YWdyaWRTdXBwb3J0LCAkZGF0YWxpc3RTdXBwb3J0LAogICAg
ICRkb21TdG9yYWdlU3VwcG9ydCwgJGV2ZW50c291cmNlU3VwcG9ydCwgJGZpbHRlcnNTdXBwb3J0
LCAkZ2VvbG9jYXRpb25TdXBwb3J0LCAkaWNvbkRhdGFiYXNlU3VwcG9ydCwgJGltYWdlUmVzaXpl
clN1cHBvcnQsICRpbmRleGVkRGF0YWJhc2VTdXBwb3J0LCAkaW5wdXRTcGVlY2hTdXBwb3J0LAog
ICAgICRqYXZhU2NyaXB0RGVidWdnZXJTdXBwb3J0LCAkbWF0aG1sU3VwcG9ydCwgJG9mZmxpbmVX
ZWJBcHBsaWNhdGlvblN1cHBvcnQsICRydWJ5U3VwcG9ydCwgJHN5c3RlbU1hbGxvY1N1cHBvcnQs
ICRzYW5kYm94U3VwcG9ydCwgJHNoYXJlZFdvcmtlcnNTdXBwb3J0LAogICAgICRzdmdTdXBwb3J0
LCAkc3ZnQW5pbWF0aW9uU3VwcG9ydCwgJHN2Z0FzSW1hZ2VTdXBwb3J0LCAkc3ZnRE9NT2JqQ0Jp
bmRpbmdzU3VwcG9ydCwgJHN2Z0ZvbnRzU3VwcG9ydCwKQEAgLTY0LDYgKzY0LDkgQEAgbXkgKCR0
aHJlZURDYW52YXNTdXBwb3J0LCAkdGhyZWVEUmVuZGVyaQogICAgICRmaWxlUmVhZGVyU3VwcG9y
dCwgJGZpbGVXcml0ZXJTdXBwb3J0LCAkZGlyZWN0b3J5VXBsb2FkU3VwcG9ydCk7CiAKIG15IEBm
ZWF0dXJlcyA9ICgKKyAgICB7IG9wdGlvbiA9PiAibGluay1wcmVmZXRjaCIsIGRlc2MgPT4gIlRv
Z2dsZSBwcmUgZmV0Y2hpbmcgc3VwcG9ydCIsCisgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9MSU5L
X1BSRUZFVENIIiwgZGVmYXVsdCA9PiAwLCB2YWx1ZSA9PiBcJGxpbmtQcmVmZXRjaFN1cHBvcnQg
fSwKKwogICAgIHsgb3B0aW9uID0+ICIzZC1jYW52YXMiLCBkZXNjID0+ICJUb2dnbGUgM0QgY2Fu
dmFzIHN1cHBvcnQiLAogICAgICAgZGVmaW5lID0+ICJFTkFCTEVfM0RfQ0FOVkFTIiwgZGVmYXVs
dCA9PiAoaXNBcHBsZU1hY1dlYktpdCgpICYmICFpc1RpZ2VyKCkpLCB2YWx1ZSA9PiBcJHRocmVl
RENhbnZhc1N1cHBvcnQgfSwKIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNjI2OTkpCisrKyBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMC0wNy0w
NyAgR2F2aW4gUGV0ZXJzICA8Z2F2aW5wQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBhZGQgc3VwcG9ydCBmb3IgbGluayBwcmVm
ZXRjaGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MzY1MgorCisgICAgICAgICogZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZl
dGNoLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVm
ZXRjaC5saW5rOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2tpcHBlZDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9Ta2lwcGVk
OgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9Ta2lwcGVkOgorCiAyMDEwLTA3LTA3ICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQmV0
aCBEYWtpbi4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVm
ZXRjaC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRN
TExpbmtFbGVtZW50L3ByZWZldGNoLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMiBAQAorcHJlZmV0Y2gubGluayBoYXMgTUlNRSB0eXBlIGFw
cGxpY2F0aW9uL29jdGV0LXN0cmVhbQorVGhpcyB0ZXN0IHJlcXVpcmVzIER1bXBSZW5kZXJUcmVl
IHRvIHNlZSB0aGUgbG9nIG9mIHdoYXQgcmVzb3VyY2VzIGFyZSBsb2FkZWQuCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0Y2guaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0Y2guaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVm
ZXRjaC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0IEBACis8Ym9keT4KKzxzY3JpcHQ+
CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wUmVzb3VyY2VSZXNwb25zZU1JTUVU
eXBlcygpOworICAgIHNldFRpbWVvdXQoImxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUo
KSIsNTApOworfQorPC9zY3JpcHQ+Cis8aHRtbD4KKzxwPlRoaXMgdGVzdCByZXF1aXJlcyBEdW1w
UmVuZGVyVHJlZSB0byBzZWUgdGhlIGxvZyBvZiB3aGF0IHJlc291cmNlcyBhcmUgbG9hZGVkLgor
PGxpbmsgaHJlZj0icHJlZmV0Y2gubGluayIgcmVsPSJwcmVmZXRjaCI+Cis8L2h0bWw+CisKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC5saW5rCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRj
aC5saW5rCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVt
ZW50L3ByZWZldGNoLmxpbmsJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEgQEAKK1RoaXMgaXMgdGhl
IGxpbmsgdGhhdCBpcyBmZXRjaGVkIGJ5IHRoZSBwcmVmZXRjaC1vbmxvYWQgdGVzdApJbmRleDog
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQJKHJldmlzaW9uIDYyNjkzKQorKysgTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZ3RrL1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTU3NTQsNiArNTc1NCw5IEBA
IGZhc3QvZm9ybXMvc2xpZGVyLXRyYW5zZm9ybWVkLmh0bWwKIGZhc3QvZm9ybXMvc2xpZGVyLW1v
dXNlLWV2ZW50cy5odG1sCiBmYXN0L2Zvcm1zL3NsaWRlci16b29tZWQuaHRtbAogCisjIExpbmsg
cHJlZmV0Y2ggaXMgZGlzYWJsZWQgYnkgZGVmYXVsdAorI2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVu
dC9wcmVmZXRjaC5odG1sCisKICMgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhZ2VQcm9wZXJ0eSBp
cyBub3QgaW1wbGVtZW50ZWQgZm9yIEdUSyB5ZXQuCiBwcmludGluZy9wYWdlLXJ1bGUtc2VsZWN0
aW9uLmh0bWwKIApJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQJKHJldmlzaW9uIDYyNjkz
KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAg
LTI4Miw2ICsyODIsOSBAQCBzdG9yYWdlL2luZGV4ZWRkYgogZmFzdC9kb20vRGV2aWNlT3JpZW50
YXRpb24KIGZhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1kZXZpY2Utb3JpZW50YXRp
b24uaHRtbAogCisjIExpbmsgcHJlZmV0Y2ggaXMgZGlzYWJsZWQgYnkgZGVmYXVsdAorI2Zhc3Qv
ZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC5odG1sCisKICMgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTM5OTA4CiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9tYXhpbXVt
LWFnZS5odG1sCiAKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAkocmV2aXNpb24gNjI2OTMp
CisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC01
NDA2LDYgKzU0MDYsOSBAQCBzdmcvVzNDLVNWRy0xLjEvZmlsdGVycy1saWdodC0wNC1mLnN2Zwog
IyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PSAjCiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9jYWxsYmFjay10
by1yZW1vdGUtY29udGV4dDIuaHRtbAogCisjIExpbmsgcHJlZmV0Y2ggaXMgZGlzYWJsZWQgYnkg
ZGVmYXVsdAorI2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC5odG1sCisKICMgRmFp
bGluZyBhZnRlciBlbmFibGluZyBIVE1MNSBwYXJzZXIgaW4gcjYxMjM0CiAjIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDY2MQogZmFzdC9lbmNvZGluZy9qYXBhbmVz
ZS1lbmNvZGluZy1taXguaHRtbApJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBw
ZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQJKHJldmlz
aW9uIDYyNjkzKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQJKHdvcmtpbmcg
Y29weSkKQEAgLTkwMCw2ICs5MDAsOSBAQCBzdG9yYWdlL2luZGV4ZWRkYgogZmFzdC9kb20vRGV2
aWNlT3JpZW50YXRpb24KIGZhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1kZXZpY2Ut
b3JpZW50YXRpb24uaHRtbAogCisjIExpbmsgcHJlZmV0Y2ggaXMgZGlzYWJsZWQgYnkgZGVmYXVs
dAorZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLmh0bWwKKwogIyBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6cGFnZVByb3BlcnR5IGlzIG5vdCBpbXBsZW1lbnRlZCBmb3IgV0lOIHlldC4K
IHByaW50aW5nL3BhZ2UtcnVsZS1zZWxlY3Rpb24uaHRtbAogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60883</attachid>
            <date>2010-07-08 08:04:26 -0700</date>
            <delta_ts>2010-07-09 05:35:33 -0700</delta_ts>
            <desc>fat finger begone</desc>
            <filename>3652-per-abarth.txt</filename>
            <type>text/plain</type>
            <size>37998</size>
            <attacher name="Gavin Peters">gavinp</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDYyNjk5KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTAtMDctMDcgIEdhdmluIFBl
dGVycyAgPGdhdmlucEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgYWRkIHN1cHBvcnQgZm9yIGxpbmsgcHJlZmV0Y2hpbmcKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2NTIKKworICAg
ICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgorCiAyMDEwLTA3
LTA3ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgU2FtIFdlaW5pZy4KSW5kZXg6IEphdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1
cmVEZWZpbmVzLnhjY29uZmlnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0NvbmZpZ3Vy
YXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCShyZXZpc2lvbiA2MjY5MykKKysrIEphdmFT
Y3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCSh3b3JraW5n
IGNvcHkpCkBAIC0zMSw2ICszMSw4IEBACiAKIC8vIFNldCBhbnkgRU5BQkxFX0ZFQVRVUkVfTkFN
RSBtYWNybyB0byBhbiBlbXB0eSBzdHJpbmcgdG8gZGlzYWJsZSB0aGF0IGZlYXR1cmUuCiAKK0VO
QUJMRV9MSU5LX1BSRUZFVENIID0gOworCiBFTkFCTEVfM0RfQ0FOVkFTID0gJChFTkFCTEVfM0Rf
Q0FOVkFTXyQoVEFSR0VUX01BQ19PU19YX1ZFUlNJT05fTUFKT1IpKTsKIEVOQUJMRV8zRF9DQU5W
QVNfMTA1MCA9IEVOQUJMRV8zRF9DQU5WQVM7CiBFTkFCTEVfM0RfQ0FOVkFTXzEwNjAgPSBFTkFC
TEVfM0RfQ0FOVkFTOwpAQCAtODQsNSArODYsNCBAQCBFTkFCTEVfWEhUTUxNUCA9IDsKIEVOQUJM
RV9YUEFUSCA9IEVOQUJMRV9YUEFUSDsKIEVOQUJMRV9YU0xUID0gRU5BQkxFX1hTTFQ7CiAKLUZF
QVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX0NBTlZBUykgJChFTkFCTEVfM0RfUkVOREVSSU5H
KSAkKEVOQUJMRV9CTE9CX1NMSUNFKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFC
TEVfQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9EQVRBQkFTRSkgJChFTkFCTEVf
REFUQUdSSUQpICQoRU5BQkxFX0RBVEFMSVNUKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04p
ICQoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQpICQoRU5BQkxFX0RPTV9TVE9SQUdFKSAkKEVOQUJM
RV9FVkVOVFNPVVJDRSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfRklMRV9SRUFERVIpICQo
RU5BQkxFX0ZJTEVfV1JJVEVSKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSUNPTkRB
VEFCQVNFKSAkKEVOQUJMRV9JTUFHRV9SRVNJWkVSKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNF
KSAkKEVOQUJMRV9JTlBVVF9TUEVFQ0gpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQo
RU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVURVJfVEFHKSAkKEVOQUJMRV9OT1RJRklDQVRJT05T
KSAkKEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpICQoRU5BQkxFX1BST0dSRVNTX1RB
RykgJChFTkFCTEVfUlVCWSkgJChFTkFCTEVfU0FOREJPWCkgJChFTkFCTEVfU0hBUkVEX1dPUktF
UlMpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0FOSU1BVElPTikgJChFTkFCTEVfU1ZHX0FT
X0lNQUdFKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpICQoRU5BQkxFX1NWR19GT05U
UykgJChFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUKSAkKEVOQUJMRV9TVkdfVVNFKSAkKEVOQUJM
RV9WSURFTykgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5B
QkxFX1dNTCkgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWEhUTUxNUCkgJChFTkFCTEVfWFBB
VEgpICQoRU5BQkxFX1hTTFQpOwotCitGRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV9MSU5LX1BS
RUZFVENIKSAkKEVOQUJMRV8zRF9DQU5WQVMpICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFC
TEVfQkxPQl9TTElDRSkgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NMSUVO
VF9CQVNFRF9HRU9MT0NBVElPTikgJChFTkFCTEVfREFUQUJBU0UpICQoRU5BQkxFX0RBVEFHUklE
KSAkKEVOQUJMRV9EQVRBTElTVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJM
RV9ESVJFQ1RPUllfVVBMT0FEKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVfRVZFTlRT
T1VSQ0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZJTEVfUkVBREVSKSAkKEVOQUJMRV9G
SUxFX1dSSVRFUikgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFTRSkg
JChFTkFCTEVfSU1BR0VfUkVTSVpFUikgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFC
TEVfSU5QVVRfU1BFRUNIKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9N
QVRITUwpICQoRU5BQkxFX01FVEVSX1RBRykgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFC
TEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKSAkKEVOQUJMRV9QUk9HUkVTU19UQUcpICQoRU5B
QkxFX1JVQlkpICQoRU5BQkxFX1NBTkRCT1gpICQoRU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAkKEVO
QUJMRV9TVkcpICQoRU5BQkxFX1NWR19BTklNQVRJT04pICQoRU5BQkxFX1NWR19BU19JTUFHRSkg
JChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5B
QkxFX1NWR19GT1JFSUdOX09CSkVDVCkgJChFTkFCTEVfU1ZHX1VTRSkgJChFTkFCTEVfVklERU8p
ICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVOQUJMRV9XTUwp
ICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hIVE1MTVApICQoRU5BQkxFX1hQQVRIKSAkKEVO
QUJMRV9YU0xUKTsKSW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA2MjY5OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsNTIgQEAKKzIwMTAtMDctMDcgIEdhdmluIFBldGVycyAgPGdh
dmlucEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgYmFzZWQgbW9zdGx5IG9uIGEgcGF0Y2ggYnkgTGVvbiBDbGFya2UsIGxlb25j
bGFya2VAZ29vZ2xlLmNvbQorCisgICAgICAgIGFkZCBzdXBwb3J0IGZvciBsaW5rIHByZWZldGNo
aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjUy
CisKKyAgICAgICAgVGVzdDogZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLmh0bWwK
KworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgorICAg
ICAgICAqIGh0bWwvSFRNTExpbmtFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxM
aW5rRWxlbWVudDo6dG9rZW5pemVSZWxBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TExpbmtFbGVtZW50Ojpwcm9jZXNzKToKKyAgICAgICAgKiBodG1sL0hUTUxMaW5rRWxlbWVudC5o
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50OjpSZWxBdHRyaWJ1dGU6OlJlbEF0
dHJpYnV0ZSk6CisgICAgICAgICogbG9hZGVyL0NhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZVJlc291cmNlKToKKyAgICAgICAgKiBsb2FkZXIvQ2FjaGVkUmVzb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmRhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkUmVzb3VyY2U6OmRpZEFkZENsaWVudCk6CisgICAgICAgICogbG9hZGVyL0NhY2hl
ZFJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjplcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRSZXNvdXJjZTo6aXNQcmVmZXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNv
dXJjZTo6c2NoZWR1bGUpOgorICAgICAgICAqIGxvYWRlci9DYWNoZWRTY3JpcHQuY3BwOgorICAg
ICAgICAqIGxvYWRlci9DYWNoZWRTY3JpcHQuaDoKKyAgICAgICAgKiBsb2FkZXIvRG9jTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY0xvYWRlcjo6cmVxdWVzdExpbmtQcmVmZXRjaCk6
CisgICAgICAgIChXZWJDb3JlOjpEb2NMb2FkZXI6OmNhblJlcXVlc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jTG9hZGVyOjppbmNyZW1lbnRSZXF1ZXN0Q291bnQpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jTG9hZGVyOjpkZWNyZW1lbnRSZXF1ZXN0Q291bnQpOgorICAgICAgICAqIGxvYWRlci9E
b2NMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvbG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNhY2hlZFJlc291cmNlVHlwZVRvVGFyZ2V0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpM
b2FkZXI6OmRldGVybWluZVByaW9yaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRlcjo6bG9h
ZCk6CisgICAgICAgIChXZWJDb3JlOjpMb2FkZXI6Okhvc3Q6OnNlcnZlUGVuZGluZ1JlcXVlc3Rz
KToKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRlcjo6SG9zdDo6ZGlkRmluaXNoTG9hZGluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpMb2FkZXI6Okhvc3Q6OmRpZEZhaWwpOgorICAgICAgICAoV2ViQ29y
ZTo6TG9hZGVyOjpIb3N0OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6
TG9hZGVyOjpIb3N0OjpjYW5jZWxQZW5kaW5nUmVxdWVzdHMpOgorICAgICAgICAqIGxvYWRlci9s
b2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRlcjo6KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdEJhc2U6Oik6CisKIDIwMTAtMDctMDcgIEFkYW0gQmFydGggIDxhYmFydGhAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpJbmRleDogV2ViQ29y
ZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCShyZXZpc2lvbiA2
MjY5MykKKysrIFdlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcJ
KHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDggQEAKIAogLy8gU2V0IGFueSBFTkFCTEVfRkVB
VFVSRV9OQU1FIG1hY3JvIHRvIGFuIGVtcHR5IHN0cmluZyB0byBkaXNhYmxlIHRoYXQgZmVhdHVy
ZS4KIAorRU5BQkxFX0xJTktfUFJFRkVUQ0ggPSA7CisKIEVOQUJMRV8zRF9DQU5WQVMgPSAkKEVO
QUJMRV8zRF9DQU5WQVNfJChUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUikpOwogRU5BQkxF
XzNEX0NBTlZBU18xMDUwID0gRU5BQkxFXzNEX0NBTlZBUzsKIEVOQUJMRV8zRF9DQU5WQVNfMTA2
MCA9IEVOQUJMRV8zRF9DQU5WQVM7CkBAIC04NCw1ICs4Niw0IEBAIEVOQUJMRV9YSFRNTE1QID0g
OwogRU5BQkxFX1hQQVRIID0gRU5BQkxFX1hQQVRIOwogRU5BQkxFX1hTTFQgPSBFTkFCTEVfWFNM
VDsKIAotRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfQ0FOVkFTKSAkKEVOQUJMRV8zRF9S
RU5ERVJJTkcpICQoRU5BQkxFX0JMT0JfU0xJQ0UpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5H
KSAkKEVOQUJMRV9DTElFTlRfQkFTRURfR0VPTE9DQVRJT04pICQoRU5BQkxFX0RBVEFCQVNFKSAk
KEVOQUJMRV9EQVRBR1JJRCkgJChFTkFCTEVfREFUQUxJU1QpICQoRU5BQkxFX0RFVklDRV9PUklF
TlRBVElPTikgJChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCkgJChFTkFCTEVfRE9NX1NUT1JBR0Up
ICQoRU5BQkxFX0VWRU5UU09VUkNFKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GSUxFX1JF
QURFUikgJChFTkFCTEVfRklMRV9XUklURVIpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJM
RV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lNQUdFX1JFU0laRVIpICQoRU5BQkxFX0lOREVYRURf
REFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJV
R0dFUikgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRVRFUl9UQUcpICQoRU5BQkxFX05PVElG
SUNBVElPTlMpICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVfUFJP
R1JFU1NfVEFHKSAkKEVOQUJMRV9SVUJZKSAkKEVOQUJMRV9TQU5EQk9YKSAkKEVOQUJMRV9TSEFS
RURfV09SS0VSUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJM
RV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVf
U1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0Up
ICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlO
RykgJChFTkFCTEVfV01MKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YSFRNTE1QKSAkKEVO
QUJMRV9YUEFUSCkgJChFTkFCTEVfWFNMVCk7Ci0KK0ZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxF
X0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFXzNEX0NBTlZBUykgJChFTkFCTEVfM0RfUkVOREVSSU5H
KSAkKEVOQUJMRV9CTE9CX1NMSUNFKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFC
TEVfQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9EQVRBQkFTRSkgJChFTkFCTEVf
REFUQUdSSUQpICQoRU5BQkxFX0RBVEFMSVNUKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04p
ICQoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQpICQoRU5BQkxFX0RPTV9TVE9SQUdFKSAkKEVOQUJM
RV9FVkVOVFNPVVJDRSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfRklMRV9SRUFERVIpICQo
RU5BQkxFX0ZJTEVfV1JJVEVSKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSUNPTkRB
VEFCQVNFKSAkKEVOQUJMRV9JTUFHRV9SRVNJWkVSKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNF
KSAkKEVOQUJMRV9JTlBVVF9TUEVFQ0gpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQo
RU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVURVJfVEFHKSAkKEVOQUJMRV9OT1RJRklDQVRJT05T
KSAkKEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpICQoRU5BQkxFX1BST0dSRVNTX1RB
RykgJChFTkFCTEVfUlVCWSkgJChFTkFCTEVfU0FOREJPWCkgJChFTkFCTEVfU0hBUkVEX1dPUktF
UlMpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0FOSU1BVElPTikgJChFTkFCTEVfU1ZHX0FT
X0lNQUdFKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpICQoRU5BQkxFX1NWR19GT05U
UykgJChFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUKSAkKEVOQUJMRV9TVkdfVVNFKSAkKEVOQUJM
RV9WSURFTykgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5B
QkxFX1dNTCkgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWEhUTUxNUCkgJChFTkFCTEVfWFBB
VEgpICQoRU5BQkxFX1hTTFQpOwpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAJKHJldmlz
aW9uIDYyNjkzKQorKysgV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE0NCwxMiArMTQ0LDE5IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50Ojp0b2tlbml6
ZVJlbEF0dHJpYnUKICAgICByZWxBdHRyaWJ1dGUubV9pc0ljb24gPSBmYWxzZTsKICAgICByZWxB
dHRyaWJ1dGUubV9pc0FsdGVybmF0ZSA9IGZhbHNlOwogICAgIHJlbEF0dHJpYnV0ZS5tX2lzRE5T
UHJlZmV0Y2ggPSBmYWxzZTsKKyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKKyAgICByZWxBdHRy
aWJ1dGUubV9pc0xpbmtQcmVmZXRjaCA9IGZhbHNlOworI2VuZGlmCiAgICAgaWYgKGVxdWFsSWdu
b3JpbmdDYXNlKHJlbCwgInN0eWxlc2hlZXQiKSkKICAgICAgICAgcmVsQXR0cmlidXRlLm1faXNT
dHlsZVNoZWV0ID0gdHJ1ZTsKICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShyZWwsICJp
Y29uIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UocmVsLCAic2hvcnRjdXQgaWNvbiIpKQogICAgICAg
ICByZWxBdHRyaWJ1dGUubV9pc0ljb24gPSB0cnVlOwogICAgIGVsc2UgaWYgKGVxdWFsSWdub3Jp
bmdDYXNlKHJlbCwgImRucy1wcmVmZXRjaCIpKQogICAgICAgICByZWxBdHRyaWJ1dGUubV9pc0RO
U1ByZWZldGNoID0gdHJ1ZTsKKyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKKyAgICBlbHNlIGlm
IChlcXVhbElnbm9yaW5nQ2FzZShyZWwsICJwcmVmZXRjaCIpKQorICAgICAgICByZWxBdHRyaWJ1
dGUubV9pc0xpbmtQcmVmZXRjaCA9IHRydWU7CisjZW5kaWYKICAgICBlbHNlIGlmIChlcXVhbEln
bm9yaW5nQ2FzZShyZWwsICJhbHRlcm5hdGUgc3R5bGVzaGVldCIpIHx8IGVxdWFsSWdub3JpbmdD
YXNlKHJlbCwgInN0eWxlc2hlZXQgYWx0ZXJuYXRlIikpIHsKICAgICAgICAgcmVsQXR0cmlidXRl
Lm1faXNTdHlsZVNoZWV0ID0gdHJ1ZTsKICAgICAgICAgcmVsQXR0cmlidXRlLm1faXNBbHRlcm5h
dGUgPSB0cnVlOwpAQCAtMTg2LDYgKzE5MywxMSBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6cHJv
Y2VzcygpCiAgICAgaWYgKG1fcmVsQXR0cmlidXRlLm1faXNETlNQcmVmZXRjaCAmJiBtX3VybC5p
c1ZhbGlkKCkgJiYgIW1fdXJsLmlzRW1wdHkoKSkKICAgICAgICAgUmVzb3VyY2VIYW5kbGU6OnBy
ZXBhcmVGb3JVUkwobV91cmwpOwogCisjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCisgICAgaWYg
KG1fcmVsQXR0cmlidXRlLm1faXNMaW5rUHJlZmV0Y2ggJiYgbV91cmwuaXNWYWxpZCgpKQorICAg
ICAgICBkb2N1bWVudCgpLT5kb2NMb2FkZXIoKS0+cmVxdWVzdExpbmtQcmVmZXRjaChtX3VybCk7
CisjZW5kaWYKKwogICAgIGJvb2wgYWNjZXB0SWZUeXBlQ29udGFpbnNUZXh0Q1NTID0gZG9jdW1l
bnQoKS0+cGFnZSgpICYmIGRvY3VtZW50KCktPnBhZ2UoKS0+c2V0dGluZ3MoKSAmJiBkb2N1bWVu
dCgpLT5wYWdlKCktPnNldHRpbmdzKCktPnRyZWF0c0FueVRleHRDU1NMaW5rQXNTdHlsZXNoZWV0
KCk7CiAKICAgICAvLyBTdHlsZXNoZWV0CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCShyZXZp
c2lvbiA2MjY5MykKKysrIFdlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMzEsNiArMzEsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNo
ZWRDU1NTdHlsZVNoZWV0OworY2xhc3MgQ2FjaGVkTGlua1ByZWZldGNoOwogY2xhc3MgS1VSTDsK
IAogY2xhc3MgSFRNTExpbmtFbGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50LCBwdWJsaWMgQ2Fj
aGVkUmVzb3VyY2VDbGllbnQgewpAQCAtNDAsOCArNDEsMjAgQEAgcHVibGljOgogICAgICAgICBi
b29sIG1faXNJY29uOwogICAgICAgICBib29sIG1faXNBbHRlcm5hdGU7CiAgICAgICAgIGJvb2wg
bV9pc0ROU1ByZWZldGNoOworI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQorICAgICAgICBib29s
IG1faXNMaW5rUHJlZmV0Y2g7CisjZW5kaWYKIAotICAgICAgICBSZWxBdHRyaWJ1dGUoKSA6IG1f
aXNTdHlsZVNoZWV0KGZhbHNlKSwgbV9pc0ljb24oZmFsc2UpLCBtX2lzQWx0ZXJuYXRlKGZhbHNl
KSwgbV9pc0ROU1ByZWZldGNoKGZhbHNlKSB7IH0KKyAgICAgICAgUmVsQXR0cmlidXRlKCkKKyAg
ICAgICAgICAgIDogbV9pc1N0eWxlU2hlZXQoZmFsc2UpCisgICAgICAgICAgICAsIG1faXNJY29u
KGZhbHNlKQorICAgICAgICAgICAgLCBtX2lzQWx0ZXJuYXRlKGZhbHNlKQorICAgICAgICAgICAg
LCBtX2lzRE5TUHJlZmV0Y2goZmFsc2UpCisjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCisgICAg
ICAgICAgICAsIG1faXNMaW5rUHJlZmV0Y2goZmFsc2UpCisjZW5kaWYKKyAgICAgICAgICAgIHsg
CisgICAgICAgICAgICB9CiAgICAgfTsKIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxMaW5r
RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCosIGJvb2wgY3Jl
YXRlZEJ5UGFyc2VyKTsKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0NhY2hlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2xvYWRlci9DYWNoZS5jcHAJKHJldmlzaW9uIDYyNjkzKQorKysgV2ViQ29y
ZS9sb2FkZXIvQ2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Niw2ICs4NiwxMCBAQCBzdGF0
aWMgQ2FjaGVkUmVzb3VyY2UqIGNyZWF0ZVJlc291cmNlKENhCiAgICAgY2FzZSBDYWNoZWRSZXNv
dXJjZTo6WEJMU3R5bGVTaGVldDoKICAgICAgICAgcmV0dXJuIG5ldyBDYWNoZWRYQkxEb2N1bWVu
dCh1cmwuc3RyaW5nKCkpOwogI2VuZGlmCisjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCisgICAg
Y2FzZSBDYWNoZWRSZXNvdXJjZTo6TGlua1ByZWZldGNoOgorICAgICAgICByZXR1cm4gbmV3IENh
Y2hlZFJlc291cmNlKHVybC5zdHJpbmcoKSwgQ2FjaGVkUmVzb3VyY2U6OkxpbmtQcmVmZXRjaCk7
CisjZW5kaWYKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CkluZGV4OiBXZWJD
b3JlL2xvYWRlci9DYWNoZWRSZXNvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2Fk
ZXIvQ2FjaGVkUmVzb3VyY2UuY3BwCShyZXZpc2lvbiA2MjY5MykKKysrIFdlYkNvcmUvbG9hZGVy
L0NhY2hlZFJlc291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsOCBAQAogCiAj
aW5jbHVkZSAiQ2FjaGUuaCIKICNpbmNsdWRlICJDYWNoZWRNZXRhZGF0YS5oIgorI2luY2x1ZGUg
IkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnRX
YWxrZXIuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIkRv
Y0xvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC0xMDgsNiArMTEwLDE2IEBAIHZvaWQg
Q2FjaGVkUmVzb3VyY2U6OmxvYWQoRG9jTG9hZGVyKiBkb2MKICAgICBtX2xvYWRpbmcgPSB0cnVl
OwogfQogCit2b2lkIENhY2hlZFJlc291cmNlOjpkYXRhKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVy
PiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit7CisgICAgaWYgKCFhbGxEYXRhUmVjZWl2ZWQpCisg
ICAgICAgIHJldHVybjsKKyAgICAKKyAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlciB3KG1f
Y2xpZW50cyk7CisgICAgd2hpbGUgKENhY2hlZFJlc291cmNlQ2xpZW50KiBjID0gdy5uZXh0KCkp
CisgICAgICAgIGMtPm5vdGlmeUZpbmlzaGVkKHRoaXMpOworfQorCiB2b2lkIENhY2hlZFJlc291
cmNlOjpmaW5pc2goKQogewogICAgIG1fc3RhdHVzID0gQ2FjaGVkOwpAQCAtMjA0LDYgKzIxNiwx
MiBAQCB2b2lkIENhY2hlZFJlc291cmNlOjphZGRDbGllbnQoQ2FjaGVkUmVzCiAgICAgZGlkQWRk
Q2xpZW50KGNsaWVudCk7CiB9CiAKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OmRpZEFkZENsaWVudChD
YWNoZWRSZXNvdXJjZUNsaWVudCogYykKK3sKKyAgICBpZiAoIWlzTG9hZGluZygpKQorICAgICAg
ICBjLT5ub3RpZnlGaW5pc2hlZCh0aGlzKTsKK30KKwogdm9pZCBDYWNoZWRSZXNvdXJjZTo6YWRk
Q2xpZW50VG9TZXQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqIGNsaWVudCkKIHsKICAgICBBU1NFUlQo
IWlzUHVyZ2VhYmxlKCkpOwpJbmRleDogV2ViQ29yZS9sb2FkZXIvQ2FjaGVkUmVzb3VyY2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9DYWNoZWRSZXNvdXJjZS5oCShyZXZpc2lvbiA2
MjY5MykKKysrIFdlYkNvcmUvbG9hZGVyL0NhY2hlZFJlc291cmNlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTY0LDYgKzY0LDkgQEAgcHVibGljOgogI2lmIEVOQUJMRShYQkwpCiAgICAgICAgICwgWEJM
CiAjZW5kaWYKKyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKKyAgICAgICAgLCBMaW5rUHJlZmV0
Y2gKKyNlbmRpZgogICAgIH07CiAKICAgICBlbnVtIFN0YXR1cyB7CkBAIC04Miw4ICs4NSw4IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSB7
IH0KICAgICB2aXJ0dWFsIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygp
OyB9Ci0gICAgdmlydHVhbCB2b2lkIGRhdGEoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGVycm9yKCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBkYXRhKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhLCBi
b29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgdmlydHVhbCB2b2lkIGVycm9yKCkgeyB9CiAgICAg
dmlydHVhbCB2b2lkIGh0dHBTdGF0dXNDb2RlRXJyb3IoKSB7IGVycm9yKCk7IH0gLy8gSW1hZ2Vz
IGtlZXAgbG9hZGluZyBpbiBzcGl0ZSBvZiBIVFRQIGVycm9ycyAoZm9yIGxlZ2FjeSBjb21wYXQg
d2l0aCA8aW1nPiwgZXRjLikuCiAKICAgICBjb25zdCBTdHJpbmcgJnVybCgpIGNvbnN0IHsgcmV0
dXJuIG1fdXJsOyB9CkBAIC0xMDMsNyArMTA2LDcgQEAgcHVibGljOgogICAgIFByZWxvYWRSZXN1
bHQgcHJlbG9hZFJlc3VsdCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFByZWxvYWRSZXN1
bHQ+KG1fcHJlbG9hZFJlc3VsdCk7IH0KICAgICB2b2lkIHNldFJlcXVlc3RlZEZyb21OZXR3b3Jr
aW5nTGF5ZXIoKSB7IG1fcmVxdWVzdGVkRnJvbU5ldHdvcmtpbmdMYXllciA9IHRydWU7IH0KIAot
ICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCopOwog
ICAgIHZpcnR1YWwgdm9pZCBhbGxDbGllbnRzUmVtb3ZlZCgpIHsgfQogCiAgICAgdW5zaWduZWQg
Y291bnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudHMuc2l6ZSgpOyB9CkBAIC0xMjIsNiArMTI1
LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldExvYWRpbmcoYm9vbCBiKSB7IG1fbG9hZGluZyA9
IGI7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBpc0ltYWdlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KKyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKKyAgICB2aXJ0dWFsIGJvb2wgaXNQcmVmZXRj
aCgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSAhPSBMaW5rUHJlZmV0Y2g7IH0KKyNlbHNlCisgICAg
dmlydHVhbCBib29sIGlzUHJlZmV0Y2goKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorI2VuZGlm
CiAKICAgICB1bnNpZ25lZCBhY2Nlc3NDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fYWNjZXNzQ291
bnQ7IH0KICAgICB2b2lkIGluY3JlYXNlQWNjZXNzQ291bnQoKSB7IG1fYWNjZXNzQ291bnQrKzsg
fQpAQCAtMTYyLDcgKzE3MCw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNFeHBpcmVkKCkgY29u
c3Q7CiAKLSAgICB2aXJ0dWFsIGJvb2wgc2NoZWR1bGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQorICAgIHZpcnR1YWwgYm9vbCBzY2hlZHVsZSgpIGNvbnN0IHsgcmV0dXJuIGlzUHJlZmV0Y2go
KTsgfQogCiAgICAgLy8gTGlzdCBvZiBhY2NlcHRhYmxlIE1JTUUgdHlwZXMgc2VwYXJhdGVkIGJ5
ICIsIi4KICAgICAvLyBBIE1JTUUgdHlwZSBtYXkgY29udGFpbiBhIHdpbGRjYXJkLCBlLmcuICJ0
ZXh0LyoiLgpJbmRleDogV2ViQ29yZS9sb2FkZXIvQ2FjaGVkU2NyaXB0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2xvYWRlci9DYWNoZWRTY3JpcHQuY3BwCShyZXZpc2lvbiA2MjY5MykKKysr
IFdlYkNvcmUvbG9hZGVyL0NhY2hlZFNjcmlwdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDEy
ICs1MSw2IEBAIENhY2hlZFNjcmlwdDo6fkNhY2hlZFNjcmlwdCgpCiB7CiB9CiAKLXZvaWQgQ2Fj
aGVkU2NyaXB0OjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqIGMpCi17Ci0gICAg
aWYgKCFpc0xvYWRpbmcoKSkKLSAgICAgICAgYy0+bm90aWZ5RmluaXNoZWQodGhpcyk7Ci19Ci0K
IHZvaWQgQ2FjaGVkU2NyaXB0OjphbGxDbGllbnRzUmVtb3ZlZCgpCiB7CiAgICAgbV9kZWNvZGVk
RGF0YURlbGV0aW9uVGltZXIuc3RhcnRPbmVTaG90KDApOwpJbmRleDogV2ViQ29yZS9sb2FkZXIv
Q2FjaGVkU2NyaXB0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvQ2FjaGVkU2NyaXB0
LmgJKHJldmlzaW9uIDYyNjkzKQorKysgV2ViQ29yZS9sb2FkZXIvQ2FjaGVkU2NyaXB0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAg
ICAgIGNvbnN0IFN0cmluZyYgc2NyaXB0KCk7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZEFk
ZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgYWxs
Q2xpZW50c1JlbW92ZWQoKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0RW5jb2RpbmcoY29u
c3QgU3RyaW5nJik7CkluZGV4OiBXZWJDb3JlL2xvYWRlci9Eb2NMb2FkZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0RvY0xvYWRlci5jcHAJKHJldmlzaW9uIDYyNjkzKQorKysg
V2ViQ29yZS9sb2FkZXIvRG9jTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY4LDYgKzE2
OCwxMyBAQCBDYWNoZWRYQkxEb2N1bWVudCogRG9jTG9hZGVyOjpyZXF1ZXN0WEJMCiB9CiAjZW5k
aWYKIAorI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQorQ2FjaGVkUmVzb3VyY2UqIERvY0xvYWRl
cjo6cmVxdWVzdExpbmtQcmVmZXRjaChjb25zdCBTdHJpbmcmIHVybCkKK3sKKyAgICByZXR1cm4g
cmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpMaW5rUHJlZmV0Y2gsIHVybCwgU3RyaW5n
KCkpOworfQorI2VuZGlmCisKIGJvb2wgRG9jTG9hZGVyOjpjYW5SZXF1ZXN0KENhY2hlZFJlc291
cmNlOjpUeXBlIHR5cGUsIGNvbnN0IEtVUkwmIHVybCkKIHsKICAgICAvLyBTb21lIHR5cGVzIG9m
IHJlc291cmNlcyBjYW4gYmUgbG9hZGVkIG9ubHkgZnJvbSB0aGUgc2FtZSBvcmlnaW4uICBPdGhl
cgpAQCAtMTc4LDYgKzE4NSw5IEBAIGJvb2wgRG9jTG9hZGVyOjpjYW5SZXF1ZXN0KENhY2hlZFJl
c291cmMKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpDU1NTdHlsZVNoZWV0OgogICAgIGNhc2Ug
Q2FjaGVkUmVzb3VyY2U6OlNjcmlwdDoKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpGb250UmVz
b3VyY2U6CisjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCisgICAgY2FzZSBDYWNoZWRSZXNvdXJj
ZTo6TGlua1ByZWZldGNoOgorI2VuZGlmCiAgICAgICAgIC8vIFRoZXNlIHR5cGVzIG9mIHJlc291
cmNlcyBjYW4gYmUgbG9hZGVkIGZyb20gYW55IG9yaWdpbi4KICAgICAgICAgLy8gRklYTUU6IEFy
ZSB3ZSBzdXJlIGFib3V0IENhY2hlZFJlc291cmNlOjpGb250UmVzb3VyY2U/CiAgICAgICAgIGJy
ZWFrOwpAQCAtMjI4LDYgKzIzOCwxMSBAQCBib29sIERvY0xvYWRlcjo6Y2FuUmVxdWVzdChDYWNo
ZWRSZXNvdXJjCiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQorI2lmIEVOQUJMRShM
SU5LX1BSRUZFVENIKQorICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkxpbmtQcmVmZXRjaDoKKyAg
ICAgICAgLy8gUHJlZmV0Y2ggY2Fubm90IGFmZmVjdCB0aGUgY3VycmVudCBkb2N1bWVudC4KKyAg
ICAgICAgYnJlYWs7CisjZW5kaWYKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICAgICAgYnJlYWs7CkBAIC0zNTUsMTMgKzM3MCwxOSBAQCB2b2lkIERvY0xv
YWRlcjo6Y2hlY2tDYWNoZU9iamVjdFN0YXR1cyhDCiAgICAgZnJhbWUoKS0+bG9hZGVyKCktPmxv
YWRlZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKHJlc291cmNlKTsKIH0KIAotdm9pZCBEb2NMb2Fk
ZXI6OmluY3JlbWVudFJlcXVlc3RDb3VudCgpCit2b2lkIERvY0xvYWRlcjo6aW5jcmVtZW50UmVx
dWVzdENvdW50KGNvbnN0IENhY2hlZFJlc291cmNlKiByZXMpCiB7CisgICAgaWYgKHJlcy0+aXNQ
cmVmZXRjaCgpKQorICAgICAgICByZXR1cm47CisKICAgICArK21fcmVxdWVzdENvdW50OwogfQog
Ci12b2lkIERvY0xvYWRlcjo6ZGVjcmVtZW50UmVxdWVzdENvdW50KCkKK3ZvaWQgRG9jTG9hZGVy
OjpkZWNyZW1lbnRSZXF1ZXN0Q291bnQoY29uc3QgQ2FjaGVkUmVzb3VyY2UqIHJlcykKIHsKKyAg
ICBpZiAocmVzLT5pc1ByZWZldGNoKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIC0tbV9yZXF1
ZXN0Q291bnQ7CiAgICAgQVNTRVJUKG1fcmVxdWVzdENvdW50ID4gLTEpOwogfQpJbmRleDogV2Vi
Q29yZS9sb2FkZXIvRG9jTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRG9j
TG9hZGVyLmgJKHJldmlzaW9uIDYyNjkzKQorKysgV2ViQ29yZS9sb2FkZXIvRG9jTG9hZGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTY3LDYgKzY3LDkgQEAgcHVibGljOgogI2lmIEVOQUJMRShYQkwp
CiAgICAgQ2FjaGVkWEJMRG9jdW1lbnQqIHJlcXVlc3RYQkxEb2N1bWVudChjb25zdCBTdHJpbmcg
JnVybCk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKKyAgICBDYWNoZWRSZXNv
dXJjZSogcmVxdWVzdExpbmtQcmVmZXRjaChjb25zdCBTdHJpbmcgJnVybCk7CisjZW5kaWYKIAog
ICAgIC8vIExvZ3MgYW4gYWNjZXNzIGRlbmllZCBtZXNzYWdlIHRvIHRoZSBjb25zb2xlIGZvciB0
aGUgc3BlY2lmaWVkIFVSTC4KICAgICB2b2lkIHByaW50QWNjZXNzRGVuaWVkTWVzc2FnZShjb25z
dCBLVVJMJiB1cmwpIGNvbnN0OwpAQCAtOTEsOCArOTQsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAg
dm9pZCBzZXRBbGxvd1N0YWxlUmVzb3VyY2VzKGJvb2wgYWxsb3dTdGFsZVJlc291cmNlcykgeyBt
X2FsbG93U3RhbGVSZXNvdXJjZXMgPSBhbGxvd1N0YWxlUmVzb3VyY2VzOyB9CiAKLSAgICB2b2lk
IGluY3JlbWVudFJlcXVlc3RDb3VudCgpOwotICAgIHZvaWQgZGVjcmVtZW50UmVxdWVzdENvdW50
KCk7CisgICAgdm9pZCBpbmNyZW1lbnRSZXF1ZXN0Q291bnQoY29uc3QgQ2FjaGVkUmVzb3VyY2Uq
KTsKKyAgICB2b2lkIGRlY3JlbWVudFJlcXVlc3RDb3VudChjb25zdCBDYWNoZWRSZXNvdXJjZSop
OwogICAgIGludCByZXF1ZXN0Q291bnQoKTsKICAgICAKICAgICB2b2lkIGNsZWFyUHJlbG9hZHMo
KTsKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL2xvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9sb2FkZXIvbG9hZGVyLmNwcAkocmV2aXNpb24gNjI2OTMpCisrKyBXZWJDb3JlL2xvYWRlci9s
b2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSw3ICs4OSwxMiBAQCBzdGF0aWMgUmVzb3Vy
Y2VSZXF1ZXN0OjpUYXJnZXRUeXBlIGNhY2hlCiAgICAgICAgIHJldHVybiBSZXNvdXJjZVJlcXVl
c3Q6OlRhcmdldElzRm9udFJlc291cmNlOwogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkltYWdl
UmVzb3VyY2U6CiAgICAgICAgIHJldHVybiBSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldElzSW1hZ2U7
CisjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCisgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6TGlu
a1ByZWZldGNoOgorICAgICAgICByZXR1cm4gUmVzb3VyY2VSZXF1ZXN0OjpUYXJnZXRJc1ByZWZl
dGNoOworI2VuZGlmCiAgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVy
biBSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldElzU3VicmVzb3VyY2U7CiB9CiAKQEAgLTExMCw2ICsx
MTUsMTAgQEAgTG9hZGVyOjpQcmlvcml0eSBMb2FkZXI6OmRldGVybWluZVByaW9yaQogICAgICAg
ICAgICAgcmV0dXJuIE1lZGl1bTsKICAgICAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6SW1hZ2VS
ZXNvdXJjZToKICAgICAgICAgICAgIHJldHVybiBMb3c7CisjaWYgRU5BQkxFKExJTktfUFJFRkVU
Q0gpCisgICAgICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkxpbmtQcmVmZXRjaDoKKyAgICAgICAg
ICAgIHJldHVybiBWZXJ5TG93OworI2VuZGlmCiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgIHJldHVybiBMb3c7CkBAIC0xMzksOSArMTQ4LDkgQEAgdm9pZCBMb2FkZXI6Omxv
YWQoRG9jTG9hZGVyKiBkb2NMb2FkZXIsIAogICAgIGJvb2wgaGFkUmVxdWVzdHMgPSBob3N0LT5o
YXNSZXF1ZXN0cygpOwogICAgIFByaW9yaXR5IHByaW9yaXR5ID0gZGV0ZXJtaW5lUHJpb3JpdHko
cmVzb3VyY2UpOwogICAgIGhvc3QtPmFkZFJlcXVlc3QocmVxdWVzdCwgcHJpb3JpdHkpOwotICAg
IGRvY0xvYWRlci0+aW5jcmVtZW50UmVxdWVzdENvdW50KCk7CisgICAgZG9jTG9hZGVyLT5pbmNy
ZW1lbnRSZXF1ZXN0Q291bnQocmVxdWVzdC0+Y2FjaGVkUmVzb3VyY2UoKSk7CiAKLSAgICBpZiAo
cHJpb3JpdHkgPiBMb3cgfHwgIXVybC5wcm90b2NvbEluSFRUUEZhbWlseSgpIHx8ICFoYWRSZXF1
ZXN0cykgeworICAgIGlmIChwcmlvcml0eSA+IExvdyB8fCAhdXJsLnByb3RvY29sSW5IVFRQRmFt
aWx5KCkgfHwgKHByaW9yaXR5ID09IExvdyAmJiAhaGFkUmVxdWVzdHMpKSB7CiAgICAgICAgIC8v
IFRyeSB0byByZXF1ZXN0IGltcG9ydGFudCByZXNvdXJjZXMgaW1tZWRpYXRlbHkKICAgICAgICAg
aG9zdC0+c2VydmVQZW5kaW5nUmVxdWVzdHMocHJpb3JpdHkpOwogICAgIH0gZWxzZSB7CkBAIC0z
NzAsNyArMzc5LDcgQEAgdm9pZCBMb2FkZXI6Okhvc3Q6OnNlcnZlUGVuZGluZ1JlcXVlc3RzKAog
ICAgICAgICAgICAgcHJpbnRmKCJIT1NUICVzIENPVU5UICVkIExPQURJTkcgJXNcbiIsIHJlc291
cmNlUmVxdWVzdC51cmwoKS5ob3N0KCkubGF0aW4xKCkuZGF0YSgpLCBtX3JlcXVlc3RzTG9hZGlu
Zy5zaXplKCksIHJlcXVlc3QtPmNhY2hlZFJlc291cmNlKCktPnVybCgpLmxhdGluMSgpLmRhdGEo
KSk7CiAjZW5kaWYKICAgICAgICAgfSBlbHNlIHsgICAgICAgICAgICAKLSAgICAgICAgICAgIGRv
Y0xvYWRlci0+ZGVjcmVtZW50UmVxdWVzdENvdW50KCk7CisgICAgICAgICAgICBkb2NMb2FkZXIt
PmRlY3JlbWVudFJlcXVlc3RDb3VudChyZXF1ZXN0LT5jYWNoZWRSZXNvdXJjZSgpKTsKICAgICAg
ICAgICAgIGRvY0xvYWRlci0+c2V0TG9hZEluUHJvZ3Jlc3ModHJ1ZSk7CiAgICAgICAgICAgICBy
ZXF1ZXN0LT5jYWNoZWRSZXNvdXJjZSgpLT5lcnJvcigpOwogICAgICAgICAgICAgZG9jTG9hZGVy
LT5zZXRMb2FkSW5Qcm9ncmVzcyhmYWxzZSk7CkBAIC0zOTQsNyArNDAzLDcgQEAgdm9pZCBMb2Fk
ZXI6Okhvc3Q6OmRpZEZpbmlzaExvYWRpbmcoU3VicgogICAgIC8vIHRoZSBkb2NMb2FkZXIgdGhh
dCBpdCB3aWxsIGRlbGV0ZSB3aGVuIHRoZSBkb2N1bWVudCBnZXRzIGRlbGV0ZWQuCiAgICAgUmVm
UHRyPERvY3VtZW50PiBwcm90ZWN0b3IoZG9jTG9hZGVyLT5kb2MoKSk7CiAgICAgaWYgKCFyZXF1
ZXN0LT5pc011bHRpcGFydCgpKQotICAgICAgICBkb2NMb2FkZXItPmRlY3JlbWVudFJlcXVlc3RD
b3VudCgpOworICAgICAgICBkb2NMb2FkZXItPmRlY3JlbWVudFJlcXVlc3RDb3VudChyZXF1ZXN0
LT5jYWNoZWRSZXNvdXJjZSgpKTsKIAogICAgIENhY2hlZFJlc291cmNlKiByZXNvdXJjZSA9IHJl
cXVlc3QtPmNhY2hlZFJlc291cmNlKCk7CiAgICAgQVNTRVJUKCFyZXNvdXJjZS0+cmVzb3VyY2VU
b1JldmFsaWRhdGUoKSk7CkBAIC00NDIsNyArNDUxLDcgQEAgdm9pZCBMb2FkZXI6Okhvc3Q6OmRp
ZEZhaWwoU3VicmVzb3VyY2VMbwogICAgIC8vIHRoZSBkb2NMb2FkZXIgdGhhdCBpdCB3aWxsIGRl
bGV0ZSB3aGVuIHRoZSBkb2N1bWVudCBnZXRzIGRlbGV0ZWQuCiAgICAgUmVmUHRyPERvY3VtZW50
PiBwcm90ZWN0b3IoZG9jTG9hZGVyLT5kb2MoKSk7CiAgICAgaWYgKCFyZXF1ZXN0LT5pc011bHRp
cGFydCgpKQotICAgICAgICBkb2NMb2FkZXItPmRlY3JlbWVudFJlcXVlc3RDb3VudCgpOworICAg
ICAgICBkb2NMb2FkZXItPmRlY3JlbWVudFJlcXVlc3RDb3VudChyZXF1ZXN0LT5jYWNoZWRSZXNv
dXJjZSgpKTsKIAogICAgIENhY2hlZFJlc291cmNlKiByZXNvdXJjZSA9IHJlcXVlc3QtPmNhY2hl
ZFJlc291cmNlKCk7CiAgICAgCkBAIC00ODcsNyArNDk2LDcgQEAgdm9pZCBMb2FkZXI6Okhvc3Q6
OmRpZFJlY2VpdmVSZXNwb25zZShTdQogICAgICAgICAgICAgLy8gMzA0IE5vdCBtb2RpZmllZCAv
IFVzZSBsb2NhbCBjb3B5CiAgICAgICAgICAgICBtX3JlcXVlc3RzTG9hZGluZy5yZW1vdmUobG9h
ZGVyKTsKICAgICAgICAgICAgIGxvYWRlci0+Y2xlYXJDbGllbnQoKTsKLSAgICAgICAgICAgIHJl
cXVlc3QtPmRvY0xvYWRlcigpLT5kZWNyZW1lbnRSZXF1ZXN0Q291bnQoKTsKKyAgICAgICAgICAg
IHJlcXVlc3QtPmRvY0xvYWRlcigpLT5kZWNyZW1lbnRSZXF1ZXN0Q291bnQocmVxdWVzdC0+Y2Fj
aGVkUmVzb3VyY2UoKSk7CiAKICAgICAgICAgICAgIC8vIEV4aXN0aW5nIHJlc291cmNlIGlzIG9r
LCBqdXN0IHVzZSBpdCB1cGRhdGluZyB0aGUgZXhwaXJhdGlvbiB0aW1lLgogICAgICAgICAgICAg
Y2FjaGUoKS0+cmV2YWxpZGF0aW9uU3VjY2VlZGVkKHJlc291cmNlLCByZXNwb25zZSk7CkBAIC01
MTksNyArNTI4LDcgQEAgdm9pZCBMb2FkZXI6Okhvc3Q6OmRpZFJlY2VpdmVSZXNwb25zZShTdQog
ICAgICAgICByZXF1ZXN0LT5zZXRJc011bHRpcGFydCh0cnVlKTsKICAgICAgICAgCiAgICAgICAg
IC8vIFdlIGRvbid0IGNvdW50IG11bHRpUGFydHMgaW4gYSBEb2NMb2FkZXIncyByZXF1ZXN0IGNv
dW50Ci0gICAgICAgIHJlcXVlc3QtPmRvY0xvYWRlcigpLT5kZWNyZW1lbnRSZXF1ZXN0Q291bnQo
KTsKKyAgICAgICAgcmVxdWVzdC0+ZG9jTG9hZGVyKCktPmRlY3JlbWVudFJlcXVlc3RDb3VudChy
ZXF1ZXN0LT5jYWNoZWRSZXNvdXJjZSgpKTsKIAogICAgICAgICAvLyBJZiB3ZSBnZXQgYSBtdWx0
aXBhcnQgcmVzcG9uc2UsIHdlIG11c3QgaGF2ZSBhIGhhbmRsZQogICAgICAgICBBU1NFUlQobG9h
ZGVyLT5oYW5kbGUoKSk7CkBAIC01ODIsNyArNTkxLDcgQEAgdm9pZCBMb2FkZXI6Okhvc3Q6OmNh
bmNlbFBlbmRpbmdSZXF1ZXN0cwogICAgICAgICBpZiAocmVxdWVzdC0+ZG9jTG9hZGVyKCkgPT0g
ZG9jTG9hZGVyKSB7CiAgICAgICAgICAgICBjYWNoZSgpLT5yZW1vdmUocmVxdWVzdC0+Y2FjaGVk
UmVzb3VyY2UoKSk7CiAgICAgICAgICAgICBkZWxldGUgcmVxdWVzdDsKLSAgICAgICAgICAgIGRv
Y0xvYWRlci0+ZGVjcmVtZW50UmVxdWVzdENvdW50KCk7CisgICAgICAgICAgICBkb2NMb2FkZXIt
PmRlY3JlbWVudFJlcXVlc3RDb3VudChyZXF1ZXN0LT5jYWNoZWRSZXNvdXJjZSgpKTsKICAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICByZW1haW5pbmcuYXBwZW5kKHJlcXVlc3QpOwogICAgIH0K
SW5kZXg6IFdlYkNvcmUvbG9hZGVyL2xvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9h
ZGVyL2xvYWRlci5oCShyZXZpc2lvbiA2MjY5MykKKysrIFdlYkNvcmUvbG9hZGVyL2xvYWRlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC00OCw4ICs0OCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ICAgICAgICB2b2lkIGNhbmNlbFJlcXVlc3RzKERvY0xvYWRlciopOwogICAgICAgICAKLSAgICAg
ICAgZW51bSBQcmlvcml0eSB7IExvdywgTWVkaXVtLCBIaWdoIH07Ci0gICAgICAgIHZvaWQgc2Vy
dmVQZW5kaW5nUmVxdWVzdHMoUHJpb3JpdHkgbWluaW11bVByaW9yaXR5ID0gTG93KTsKKyAgICAg
ICAgZW51bSBQcmlvcml0eSB7IFZlcnlMb3csIExvdywgTWVkaXVtLCBIaWdoIH07CisgICAgICAg
IHZvaWQgc2VydmVQZW5kaW5nUmVxdWVzdHMoUHJpb3JpdHkgbWluaW11bVByaW9yaXR5ID0gVmVy
eUxvdyk7CiAKICAgICAgICAgYm9vbCBpc1N1c3BlbmRpbmdQZW5kaW5nUmVxdWVzdHMoKSB7IHJl
dHVybiBtX2lzU3VzcGVuZGluZ1BlbmRpbmdSZXF1ZXN0czsgfQogICAgICAgICB2b2lkIHN1c3Bl
bmRQZW5kaW5nUmVxdWVzdHMoKTsKQEAgLTc2LDcgKzc2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICAgICAgdm9pZCBhZGRSZXF1ZXN0KFJlcXVlc3QqLCBQcmlvcml0eSk7CiAgICAg
ICAgICAgICB2b2lkIG5vbkNhY2hlUmVxdWVzdEluRmxpZ2h0KCk7CiAgICAgICAgICAgICB2b2lk
IG5vbkNhY2hlUmVxdWVzdENvbXBsZXRlKCk7Ci0gICAgICAgICAgICB2b2lkIHNlcnZlUGVuZGlu
Z1JlcXVlc3RzKFByaW9yaXR5IG1pbmltdW1Qcmlvcml0eSA9IExvdyk7CisgICAgICAgICAgICB2
b2lkIHNlcnZlUGVuZGluZ1JlcXVlc3RzKFByaW9yaXR5IG1pbmltdW1Qcmlvcml0eSA9IFZlcnlM
b3cpOwogICAgICAgICAgICAgdm9pZCBjYW5jZWxSZXF1ZXN0cyhEb2NMb2FkZXIqKTsKICAgICAg
ICAgICAgIGJvb2wgaGFzUmVxdWVzdHMoKSBjb25zdDsKIApJbmRleDogV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCShyZXZpc2lvbiA2MjY5MykKKysr
IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTYzLDcgKzYzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAg
VGFyZ2V0SXNPYmplY3QsCiAgICAgICAgICAgICBUYXJnZXRJc01lZGlhLAogICAgICAgICAgICAg
VGFyZ2V0SXNXb3JrZXIsCi0gICAgICAgICAgICBUYXJnZXRJc1NoYXJlZFdvcmtlcgorICAgICAg
ICAgICAgVGFyZ2V0SXNTaGFyZWRXb3JrZXIsCisgICAgICAgICAgICBUYXJnZXRJc1ByZWZldGNo
LAogICAgICAgICB9OwogCiAgICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPFJlc291cmNlUmVxdWVz
dD4gYWRvcHQoUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+KTsKSW5k
ZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9nCShy
ZXZpc2lvbiA2MjY5OSkKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTIgQEAKKzIwMTAtMDctMDcgIEdhdmluIFBldGVycyAgPGdhdmlucEBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgYWRk
IHN1cHBvcnQgZm9yIGxpbmsgcHJlZmV0Y2hpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTM2NTIKKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0Zl
YXR1cmVEZWZpbmVzLnhjY29uZmlnOgorCiAyMDEwLTA3LTA3ICBTYW0gV2VpbmlnICA8c2FtQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgpJbmRleDog
V2ViS2l0Mi9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQyL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCShyZXZp
c2lvbiA2MjY5MykKKysrIFdlYktpdDIvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNj
b25maWcJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDggQEAKIAogLy8gU2V0IGFueSBFTkFC
TEVfRkVBVFVSRV9OQU1FIG1hY3JvIHRvIGFuIGVtcHR5IHN0cmluZyB0byBkaXNhYmxlIHRoYXQg
ZmVhdHVyZS4KIAorRU5BQkxFX0xJTktfUFJFRkVUQ0ggPSA7CisKIEVOQUJMRV8zRF9DQU5WQVMg
PSAkKEVOQUJMRV8zRF9DQU5WQVNfJChUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUikpOwog
RU5BQkxFXzNEX0NBTlZBU18xMDUwID0gRU5BQkxFXzNEX0NBTlZBUzsKIEVOQUJMRV8zRF9DQU5W
QVNfMTA2MCA9IEVOQUJMRV8zRF9DQU5WQVM7CkBAIC04Miw1ICs4NCw0IEBAIEVOQUJMRV9YSFRN
TE1QID0gOwogRU5BQkxFX1hQQVRIID0gRU5BQkxFX1hQQVRIOwogRU5BQkxFX1hTTFQgPSBFTkFC
TEVfWFNMVDsKIAotRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfQ0FOVkFTKSAkKEVOQUJM
RV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0JMT0JfU0xJQ0UpICQoRU5BQkxFX0NIQU5ORUxfTUVT
U0FHSU5HKSAkKEVOQUJMRV9DTElFTlRfQkFTRURfR0VPTE9DQVRJT04pICQoRU5BQkxFX0RBVEFC
QVNFKSAkKEVOQUJMRV9EQVRBR1JJRCkgJChFTkFCTEVfREFUQUxJU1QpICQoRU5BQkxFX0RJUkVD
VE9SWV9VUExPQUQpICQoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQpICQoRU5BQkxFX0RPTV9TVE9S
QUdFKSAkKEVOQUJMRV9FVkVOVFNPVVJDRSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfRklM
RV9SRUFERVIpICQoRU5BQkxFX0ZJTEVfV1JJVEVSKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChF
TkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9J
TlBVVF9TUEVFQ0gpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX01BVEhN
TCkgJChFTkFCTEVfTUVURVJfVEFHKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9P
RkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpICQoRU5BQkxFX1BST0dSRVNTX1RBRykgJChFTkFCTEVf
UlVCWSkgJChFTkFCTEVfU0FOREJPWCkgJChFTkFCTEVfU0hBUkVEX1dPUktFUlMpICQoRU5BQkxF
X1NWRykgJChFTkFCTEVfU1ZHX0FOSU1BVElPTikgJChFTkFCTEVfU1ZHX0FTX0lNQUdFKSAkKEVO
QUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVf
U1ZHX0ZPUkVJR05fT0JKRUNUKSAkKEVOQUJMRV9TVkdfVVNFKSAkKEVOQUJMRV9WSURFTykgJChF
TkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5BQkxFX1dNTCkgJChF
TkFCTEVfV09SS0VSUykgJChFTkFCTEVfWEhUTUxNUCkgJChFTkFCTEVfWFBBVEgpICQoRU5BQkxF
X1hTTFQpOwotCitGRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVO
QUJMRV8zRF9DQU5WQVMpICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQkxPQl9TTElD
RSkgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NMSUVOVF9CQVNFRF9HRU9M
T0NBVElPTikgJChFTkFCTEVfREFUQUJBU0UpICQoRU5BQkxFX0RBVEFHUklEKSAkKEVOQUJMRV9E
QVRBTElTVCkgJChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCkgJChFTkFCTEVfRE9NX1NUT1JBR0Up
ICQoRU5BQkxFX0VWRU5UU09VUkNFKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GSUxFX1JF
QURFUikgJChFTkFCTEVfRklMRV9XUklURVIpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJM
RV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lOUFVU
X1NQRUVDSCkgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfTUFUSE1MKSAk
KEVOQUJMRV9NRVRFUl9UQUcpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX09GRkxJ
TkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVfUFJPR1JFU1NfVEFHKSAkKEVOQUJMRV9SVUJZ
KSAkKEVOQUJMRV9TQU5EQk9YKSAkKEVOQUJMRV9TSEFSRURfV09SS0VSUykgJChFTkFCTEVfU1ZH
KSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxF
X1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdf
Rk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJM
RV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykgJChFTkFCTEVfV01MKSAkKEVOQUJM
RV9XT1JLRVJTKSAkKEVOQUJMRV9YSFRNTE1QKSAkKEVOQUJMRV9YUEFUSCkgJChFTkFCTEVfWFNM
VCk7CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDYyNjk5KQorKysgV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEwLTA3LTA3ICBH
YXZpbiBQZXRlcnMgIDxnYXZpbnBAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGFkZCBzdXBwb3J0IGZvciBsaW5rIHByZWZldGNo
aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjUy
CisKKyAgICAgICAgKiBwdWJsaWMvV2ViVVJMUmVxdWVzdC5oOgorICAgICAgICAoV2ViS2l0OjpX
ZWJVUkxSZXF1ZXN0OjopOgorCiAyMDEwLTA3LTA3ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgpJbmRleDogV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJVUkxSZXF1ZXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJVUkxSZXF1ZXN0LmgJKHJldmlzaW9uIDYyNjkzKQorKysgV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJVUkxSZXF1ZXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcg
KzY5LDggQEAgcHVibGljOgogICAgICAgICBUYXJnZXRJc09iamVjdCA9IDcsCiAgICAgICAgIFRh
cmdldElzTWVkaWEgPSA4LAogICAgICAgICBUYXJnZXRJc1dvcmtlciA9IDksCi0gICAgICAgIFRh
cmdldElzU2hhcmVkV29ya2VyID0gMTAKKyAgICAgICAgVGFyZ2V0SXNTaGFyZWRXb3JrZXIgPSAx
MCwKKyAgICAgICAgVGFyZ2V0SXNQcmVmZXRjaCA9IDExLAogICAgIH07CiAKICAgICB+V2ViVVJM
UmVxdWVzdCgpIHsgcmVzZXQoKTsgfQpJbmRleDogV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDYyNjk5KQorKysgV2ViS2l0
L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMiBAQAorMjAxMC0wNy0w
NyAgR2F2aW4gUGV0ZXJzICA8Z2F2aW5wQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBhZGQgc3VwcG9ydCBmb3IgbGluayBwcmVm
ZXRjaGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MzY1MgorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6
CisKIDIwMTAtMDctMDcgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCkluZGV4OiBXZWJLaXQvbWFjL0NvbmZpZ3VyYXRp
b25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvQ29u
ZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcJKHJldmlzaW9uIDYyNjkzKQorKysg
V2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwkod29ya2lu
ZyBjb3B5KQpAQCAtMzEsNiArMzEsOCBAQAogCiAvLyBTZXQgYW55IEVOQUJMRV9GRUFUVVJFX05B
TUUgbWFjcm8gdG8gYW4gZW1wdHkgc3RyaW5nIHRvIGRpc2FibGUgdGhhdCBmZWF0dXJlLgogCitF
TkFCTEVfTElOS19QUkVGRVRDSCA9IDsKKwogRU5BQkxFXzNEX0NBTlZBUyA9ICQoRU5BQkxFXzNE
X0NBTlZBU18kKFRBUkdFVF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SKSk7CiBFTkFCTEVfM0RfQ0FO
VkFTXzEwNTAgPSBFTkFCTEVfM0RfQ0FOVkFTOwogRU5BQkxFXzNEX0NBTlZBU18xMDYwID0gRU5B
QkxFXzNEX0NBTlZBUzsKQEAgLTg0LDQgKzg2LDQgQEAgRU5BQkxFX1hIVE1MTVAgPSA7CiBFTkFC
TEVfWFBBVEggPSBFTkFCTEVfWFBBVEg7CiBFTkFCTEVfWFNMVCA9IEVOQUJMRV9YU0xUOwogCi1G
RUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9DQU5WQVMpICQoRU5BQkxFXzNEX1JFTkRFUklO
RykgJChFTkFCTEVfQkxPQl9TTElDRSkgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5B
QkxFX0NMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikgJChFTkFCTEVfREFUQUJBU0UpICQoRU5BQkxF
X0RBVEFHUklEKSAkKEVOQUJMRV9EQVRBTElTVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9O
KSAkKEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFC
TEVfRVZFTlRTT1VSQ0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZJTEVfUkVBREVSKSAk
KEVOQUJMRV9GSUxFX1dSSVRFUikgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lDT05E
QVRBQkFTRSkgJChFTkFCTEVfSU1BR0VfUkVTSVpFUikgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFT
RSkgJChFTkFCTEVfSU5QVVRfU1BFRUNIKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAk
KEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FVEVSX1RBRykgJChFTkFCTEVfTk9USUZJQ0FUSU9O
UykgJChFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKSAkKEVOQUJMRV9QUk9HUkVTU19U
QUcpICQoRU5BQkxFX1JVQlkpICQoRU5BQkxFX1NBTkRCT1gpICQoRU5BQkxFX1NIQVJFRF9XT1JL
RVJTKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19BTklNQVRJT04pICQoRU5BQkxFX1NWR19B
U19JTUFHRSkgJChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9TVkdfRk9O
VFMpICQoRU5BQkxFX1NWR19GT1JFSUdOX09CSkVDVCkgJChFTkFCTEVfU1ZHX1VTRSkgJChFTkFC
TEVfVklERU8pICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVO
QUJMRV9XTUwpICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hIVE1MTVApICQoRU5BQkxFX1hQ
QVRIKSAkKEVOQUJMRV9YU0xUKTsKK0ZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFX0xJTktfUFJF
RkVUQ0gpICQoRU5BQkxFXzNEX0NBTlZBUykgJChFTkFCTEVfM0RfUkVOREVSSU5HKSAkKEVOQUJM
RV9CTE9CX1NMSUNFKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfQ0xJRU5U
X0JBU0VEX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9EQVRBQkFTRSkgJChFTkFCTEVfREFUQUdSSUQp
ICQoRU5BQkxFX0RBVEFMSVNUKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04pICQoRU5BQkxF
X0RJUkVDVE9SWV9VUExPQUQpICQoRU5BQkxFX0RPTV9TVE9SQUdFKSAkKEVOQUJMRV9FVkVOVFNP
VVJDRSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfRklMRV9SRUFERVIpICQoRU5BQkxFX0ZJ
TEVfV1JJVEVSKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAk
KEVOQUJMRV9JTUFHRV9SRVNJWkVSKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJM
RV9JTlBVVF9TUEVFQ0gpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX01B
VEhNTCkgJChFTkFCTEVfTUVURVJfVEFHKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJM
RV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpICQoRU5BQkxFX1BST0dSRVNTX1RBRykgJChFTkFC
TEVfUlVCWSkgJChFTkFCTEVfU0FOREJPWCkgJChFTkFCTEVfU0hBUkVEX1dPUktFUlMpICQoRU5B
QkxFX1NWRykgJChFTkFCTEVfU1ZHX0FOSU1BVElPTikgJChFTkFCTEVfU1ZHX0FTX0lNQUdFKSAk
KEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFC
TEVfU1ZHX0ZPUkVJR05fT0JKRUNUKSAkKEVOQUJMRV9TVkdfVVNFKSAkKEVOQUJMRV9WSURFTykg
JChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5BQkxFX1dNTCkg
JChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWEhUTUxNUCkgJChFTkFCTEVfWFBBVEgpICQoRU5B
QkxFX1hTTFQpOwpJbmRleDogV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gNjI2OTkpCisrKyBXZWJLaXRUb29scy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMiBAQAorMjAxMC0wNy0wNyAgR2F2aW4g
UGV0ZXJzICA8Z2F2aW5wQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBhZGQgc3VwcG9ydCBmb3IgbGluayBwcmVmZXRjaGluZwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY1MgorCisg
ICAgICAgICogU2NyaXB0cy9idWlsZC13ZWJraXQ6CisKIDIwMTAtMDctMDcgIEtldmluIE9sbGl2
aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CiAKICAgICAgICAgW3d4XSBCdWlsZCBmaXgu
IHBhZ2VQcm9wZXJ0eSBuZWVkcyB0byByZXR1cm4gYSB2YWx1ZS4KSW5kZXg6IFdlYktpdFRvb2xz
L1NjcmlwdHMvYnVpbGQtd2Via2l0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1NjcmlwdHMv
YnVpbGQtd2Via2l0CShyZXZpc2lvbiA2MjY5MykKKysrIFdlYktpdFRvb2xzL1NjcmlwdHMvYnVp
bGQtd2Via2l0CSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIG15ICRwcmVmaXhQYXRo
OwogbXkgJG1ha2VBcmdzOwogbXkgJHN0YXJ0VGltZSA9IHRpbWUoKTsKIAotbXkgKCR0aHJlZURD
YW52YXNTdXBwb3J0LCAkdGhyZWVEUmVuZGVyaW5nU3VwcG9ydCwgJGNoYW5uZWxNZXNzYWdpbmdT
dXBwb3J0LCAkY2xpZW50QmFzZWRHZW9sb2NhdGlvblN1cHBvcnQsICRkYXRhYmFzZVN1cHBvcnQs
ICRkYXRhZ3JpZFN1cHBvcnQsICRkYXRhbGlzdFN1cHBvcnQsCitteSAoJGxpbmtQcmVmZXRjaFN1
cHBvcnQsICR0aHJlZURDYW52YXNTdXBwb3J0LCAkdGhyZWVEUmVuZGVyaW5nU3VwcG9ydCwgJGNo
YW5uZWxNZXNzYWdpbmdTdXBwb3J0LCAkY2xpZW50QmFzZWRHZW9sb2NhdGlvblN1cHBvcnQsICRk
YXRhYmFzZVN1cHBvcnQsICRkYXRhZ3JpZFN1cHBvcnQsICRkYXRhbGlzdFN1cHBvcnQsCiAgICAg
JGRvbVN0b3JhZ2VTdXBwb3J0LCAkZXZlbnRzb3VyY2VTdXBwb3J0LCAkZmlsdGVyc1N1cHBvcnQs
ICRnZW9sb2NhdGlvblN1cHBvcnQsICRpY29uRGF0YWJhc2VTdXBwb3J0LCAkaW1hZ2VSZXNpemVy
U3VwcG9ydCwgJGluZGV4ZWREYXRhYmFzZVN1cHBvcnQsICRpbnB1dFNwZWVjaFN1cHBvcnQsCiAg
ICAgJGphdmFTY3JpcHREZWJ1Z2dlclN1cHBvcnQsICRtYXRobWxTdXBwb3J0LCAkb2ZmbGluZVdl
YkFwcGxpY2F0aW9uU3VwcG9ydCwgJHJ1YnlTdXBwb3J0LCAkc3lzdGVtTWFsbG9jU3VwcG9ydCwg
JHNhbmRib3hTdXBwb3J0LCAkc2hhcmVkV29ya2Vyc1N1cHBvcnQsCiAgICAgJHN2Z1N1cHBvcnQs
ICRzdmdBbmltYXRpb25TdXBwb3J0LCAkc3ZnQXNJbWFnZVN1cHBvcnQsICRzdmdET01PYmpDQmlu
ZGluZ3NTdXBwb3J0LCAkc3ZnRm9udHNTdXBwb3J0LApAQCAtNjQsNiArNjQsOSBAQCBteSAoJHRo
cmVlRENhbnZhc1N1cHBvcnQsICR0aHJlZURSZW5kZXJpCiAgICAgJGZpbGVSZWFkZXJTdXBwb3J0
LCAkZmlsZVdyaXRlclN1cHBvcnQsICRkaXJlY3RvcnlVcGxvYWRTdXBwb3J0KTsKIAogbXkgQGZl
YXR1cmVzID0gKAorICAgIHsgb3B0aW9uID0+ICJsaW5rLXByZWZldGNoIiwgZGVzYyA9PiAiVG9n
Z2xlIHByZSBmZXRjaGluZyBzdXBwb3J0IiwKKyAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0xJTktf
UFJFRkVUQ0giLCBkZWZhdWx0ID0+IDAsIHZhbHVlID0+IFwkbGlua1ByZWZldGNoU3VwcG9ydCB9
LAorCiAgICAgeyBvcHRpb24gPT4gIjNkLWNhbnZhcyIsIGRlc2MgPT4gIlRvZ2dsZSAzRCBjYW52
YXMgc3VwcG9ydCIsCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV8zRF9DQU5WQVMiLCBkZWZhdWx0
ID0+IChpc0FwcGxlTWFjV2ViS2l0KCkgJiYgIWlzVGlnZXIoKSksIHZhbHVlID0+IFwkdGhyZWVE
Q2FudmFzU3VwcG9ydCB9LAogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2MjY5OSkKKysrIExheW91dFRl
c3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDEwLTA3LTA3
ICBHYXZpbiBQZXRlcnMgIDxnYXZpbnBAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGFkZCBzdXBwb3J0IGZvciBsaW5rIHByZWZl
dGNoaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
NjUyCisKKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0Y2gtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0
Y2guaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZl
dGNoLmxpbms6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9Ta2lwcGVkOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1NraXBwZWQ6
CisgICAgICAgICogcGxhdGZvcm0vd2luL1NraXBwZWQ6CisKIDIwMTAtMDctMDcgIENocmlzIEZs
ZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBCZXRo
IERha2luLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZl
dGNoLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1M
TGlua0VsZW1lbnQvcHJlZmV0Y2gtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwyIEBACitwcmVmZXRjaC5saW5rIGhhcyBNSU1FIHR5cGUgYXBw
bGljYXRpb24vb2N0ZXQtc3RyZWFtCitUaGlzIHRlc3QgcmVxdWlyZXMgRHVtcFJlbmRlclRyZWUg
dG8gc2VlIHRoZSBsb2cgb2Ygd2hhdCByZXNvdXJjZXMgYXJlIGxvYWRlZC4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZl
dGNoLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQgQEAKKzxib2R5PgorPHNjcmlwdD4K
K2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBSZXNvdXJjZVJlc3BvbnNlTUlNRVR5
cGVzKCk7CisgICAgc2V0VGltZW91dCgibGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgp
Iiw1MCk7Cit9Cis8L3NjcmlwdD4KKzxodG1sPgorPHA+VGhpcyB0ZXN0IHJlcXVpcmVzIER1bXBS
ZW5kZXJUcmVlIHRvIHNlZSB0aGUgbG9nIG9mIHdoYXQgcmVzb3VyY2VzIGFyZSBsb2FkZWQuCis8
bGluayBocmVmPSJwcmVmZXRjaC5saW5rIiByZWw9InByZWZldGNoIj4KKzwvaHRtbD4KKwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLmxpbmsKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNo
LmxpbmsJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1l
bnQvcHJlZmV0Y2gubGluawkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorVGhpcyBpcyB0aGUg
bGluayB0aGF0IGlzIGZldGNoZWQgYnkgdGhlIHByZWZldGNoLW9ubG9hZCB0ZXN0CkluZGV4OiBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAkocmV2aXNpb24gNjI2OTMpCisrKyBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9ndGsvU2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAtNTc1NCw2ICs1NzU0LDkgQEAg
ZmFzdC9mb3Jtcy9zbGlkZXItdHJhbnNmb3JtZWQuaHRtbAogZmFzdC9mb3Jtcy9zbGlkZXItbW91
c2UtZXZlbnRzLmh0bWwKIGZhc3QvZm9ybXMvc2xpZGVyLXpvb21lZC5odG1sCiAKKyMgTGluayBw
cmVmZXRjaCBpcyBkaXNhYmxlZCBieSBkZWZhdWx0CisjZmFzdC9kb20vSFRNTExpbmtFbGVtZW50
L3ByZWZldGNoLmh0bWwKKwogIyBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGFnZVByb3BlcnR5IGlz
IG5vdCBpbXBsZW1lbnRlZCBmb3IgR1RLIHlldC4KIHByaW50aW5nL3BhZ2UtcnVsZS1zZWxlY3Rp
b24uaHRtbAogCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZAkocmV2aXNpb24gNjI2OTMp
CisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAt
MjgyLDYgKzI4Miw5IEBAIHN0b3JhZ2UvaW5kZXhlZGRiCiBmYXN0L2RvbS9EZXZpY2VPcmllbnRh
dGlvbgogZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWRldmljZS1vcmllbnRhdGlv
bi5odG1sCiAKKyMgTGluayBwcmVmZXRjaCBpcyBkaXNhYmxlZCBieSBkZWZhdWx0CisjZmFzdC9k
b20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLmh0bWwKKwogIyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk5MDgKIGZhc3QvZG9tL0dlb2xvY2F0aW9uL21heGltdW0t
YWdlLmh0bWwKIApJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCShyZXZpc2lvbiA2MjY5MykK
KysrIExheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTU0
MDYsNiArNTQwNiw5IEBAIHN2Zy9XM0MtU1ZHLTEuMS9maWx0ZXJzLWxpZ2h0LTA0LWYuc3ZnCiAj
ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09ICMKIGZhc3QvZG9tL0dlb2xvY2F0aW9uL2NhbGxiYWNrLXRv
LXJlbW90ZS1jb250ZXh0Mi5odG1sCiAKKyMgTGluayBwcmVmZXRjaCBpcyBkaXNhYmxlZCBieSBk
ZWZhdWx0CisjZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLmh0bWwKKwogIyBGYWls
aW5nIGFmdGVyIGVuYWJsaW5nIEhUTUw1IHBhcnNlciBpbiByNjEyMzQKICMgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwNjYxCiBmYXN0L2VuY29kaW5nL2phcGFuZXNl
LWVuY29kaW5nLW1peC5odG1sCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBl
ZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAkocmV2aXNp
b24gNjI2OTMpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAkod29ya2luZyBj
b3B5KQpAQCAtOTAwLDYgKzkwMCw5IEBAIHN0b3JhZ2UvaW5kZXhlZGRiCiBmYXN0L2RvbS9EZXZp
Y2VPcmllbnRhdGlvbgogZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWRldmljZS1v
cmllbnRhdGlvbi5odG1sCiAKKyMgTGluayBwcmVmZXRjaCBpcyBkaXNhYmxlZCBieSBkZWZhdWx0
CitmYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0Y2guaHRtbAorCiAjIExheW91dFRlc3RD
b250cm9sbGVyOjpwYWdlUHJvcGVydHkgaXMgbm90IGltcGxlbWVudGVkIGZvciBXSU4geWV0Lgog
cHJpbnRpbmcvcGFnZS1ydWxlLXNlbGVjdGlvbi5odG1sCiAK
</data>
<flag name="review"
          id="48694"
          type_id="1"
          status="+"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="48695"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61041</attachid>
            <date>2010-07-09 06:30:16 -0700</date>
            <delta_ts>2010-07-09 19:41:22 -0700</delta_ts>
            <desc>Actually skip the layout tests</desc>
            <filename>skip.patch</filename>
            <type>text/plain</type>
            <size>37928</size>
            <attacher name="Leon Clarke">leonclarke</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDYyOTQ0KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTAtMDctMDkgIExlb24gQ2xh
cmtlICA8bGVvbmNsYXJrZUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIGFkZCBzdXBwb3J0IGZvciBsaW5rIHByZWZldGNoaW5nCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjUyCisKKyAg
ICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzoKKwogMjAxMC0w
Ny0wOCAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IFNhbSBXZWluaWcuCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0
dXJlRGVmaW5lcy54Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9Db25maWd1
cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwkocmV2aXNpb24gNjI5NDQpCisrKyBKYXZh
U2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwkod29ya2lu
ZyBjb3B5KQpAQCAtMzEsNiArMzEsOCBAQAogCiAvLyBTZXQgYW55IEVOQUJMRV9GRUFUVVJFX05B
TUUgbWFjcm8gdG8gYW4gZW1wdHkgc3RyaW5nIHRvIGRpc2FibGUgdGhhdCBmZWF0dXJlLgogCitF
TkFCTEVfTElOS19QUkVGRVRDSCA9IDsKKwogRU5BQkxFXzNEX0NBTlZBUyA9ICQoRU5BQkxFXzNE
X0NBTlZBU18kKFRBUkdFVF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SKSk7CiBFTkFCTEVfM0RfQ0FO
VkFTXzEwNTAgPSBFTkFCTEVfM0RfQ0FOVkFTOwogRU5BQkxFXzNEX0NBTlZBU18xMDYwID0gRU5B
QkxFXzNEX0NBTlZBUzsKQEAgLTg0LDUgKzg2LDQgQEAgRU5BQkxFX1hIVE1MTVAgPSA7CiBFTkFC
TEVfWFBBVEggPSBFTkFCTEVfWFBBVEg7CiBFTkFCTEVfWFNMVCA9IEVOQUJMRV9YU0xUOwogCi1G
RUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9DQU5WQVMpICQoRU5BQkxFXzNEX1JFTkRFUklO
RykgJChFTkFCTEVfQkxPQl9TTElDRSkgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5B
QkxFX0NMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikgJChFTkFCTEVfREFUQUJBU0UpICQoRU5BQkxF
X0RBVEFHUklEKSAkKEVOQUJMRV9EQVRBTElTVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9O
KSAkKEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFC
TEVfRVZFTlRTT1VSQ0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZJTEVfUkVBREVSKSAk
KEVOQUJMRV9GSUxFX1dSSVRFUikgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lDT05E
QVRBQkFTRSkgJChFTkFCTEVfSU1BR0VfUkVTSVpFUikgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFT
RSkgJChFTkFCTEVfSU5QVVRfU1BFRUNIKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAk
KEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FVEVSX1RBRykgJChFTkFCTEVfTk9USUZJQ0FUSU9O
UykgJChFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKSAkKEVOQUJMRV9QUk9HUkVTU19U
QUcpICQoRU5BQkxFX1JVQlkpICQoRU5BQkxFX1NBTkRCT1gpICQoRU5BQkxFX1NIQVJFRF9XT1JL
RVJTKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19BTklNQVRJT04pICQoRU5BQkxFX1NWR19B
U19JTUFHRSkgJChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9TVkdfRk9O
VFMpICQoRU5BQkxFX1NWR19GT1JFSUdOX09CSkVDVCkgJChFTkFCTEVfU1ZHX1VTRSkgJChFTkFC
TEVfVklERU8pICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVO
QUJMRV9XTUwpICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hIVE1MTVApICQoRU5BQkxFX1hQ
QVRIKSAkKEVOQUJMRV9YU0xUKTsKLQorRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfTElOS19Q
UkVGRVRDSCkgJChFTkFCTEVfM0RfQ0FOVkFTKSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5B
QkxFX0JMT0JfU0xJQ0UpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9DTElF
TlRfQkFTRURfR0VPTE9DQVRJT04pICQoRU5BQkxFX0RBVEFCQVNFKSAkKEVOQUJMRV9EQVRBR1JJ
RCkgJChFTkFCTEVfREFUQUxJU1QpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikgJChFTkFC
TEVfRElSRUNUT1JZX1VQTE9BRCkgJChFTkFCTEVfRE9NX1NUT1JBR0UpICQoRU5BQkxFX0VWRU5U
U09VUkNFKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GSUxFX1JFQURFUikgJChFTkFCTEVf
RklMRV9XUklURVIpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0Up
ICQoRU5BQkxFX0lNQUdFX1JFU0laRVIpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5B
QkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVf
TUFUSE1MKSAkKEVOQUJMRV9NRVRFUl9UQUcpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5B
QkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVfUFJPR1JFU1NfVEFHKSAkKEVO
QUJMRV9SVUJZKSAkKEVOQUJMRV9TQU5EQk9YKSAkKEVOQUJMRV9TSEFSRURfV09SS0VSUykgJChF
TkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1BR0Up
ICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVO
QUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5BQkxFX1ZJREVP
KSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykgJChFTkFCTEVfV01M
KSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YSFRNTE1QKSAkKEVOQUJMRV9YUEFUSCkgJChF
TkFCTEVfWFNMVCk7CkluZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL0NoYW5nZUxvZwkocmV2aXNpb24gNjI5NDQpCisrKyBXZWJDb3JlL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBACisyMDEwLTA3LTA5ICBMZW9uIENsYXJrZSAgPGxl
b25jbGFya2VAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBhZGQgc3VwcG9ydCBmb3IgbGluayBwcmVmZXRjaGluZworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY1MgorCisgICAgICAgIFRl
c3Q6IGZhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC5odG1sCisKKyAgICAgICAgKiBD
b25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzoKKyAgICAgICAgKiBodG1sL0hU
TUxMaW5rRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OnRv
a2VuaXplUmVsQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6
cHJvY2Vzcyk6CisgICAgICAgICogaHRtbC9IVE1MTGlua0VsZW1lbnQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6UmVsQXR0cmlidXRlOjpSZWxBdHRyaWJ1dGUpOgorICAg
ICAgICAqIGxvYWRlci9DYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVSZXNvdXJj
ZSk6CisgICAgICAgICogbG9hZGVyL0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFJlc291cmNlOjpkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291
cmNlOjpkaWRBZGRDbGllbnQpOgorICAgICAgICAqIGxvYWRlci9DYWNoZWRSZXNvdXJjZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6Oik6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRSZXNvdXJjZTo6ZXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6
OmlzUHJlZmV0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnNjaGVkdWxl
KToKKyAgICAgICAgKiBsb2FkZXIvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKiBsb2FkZXIv
Q2FjaGVkU2NyaXB0Lmg6CisgICAgICAgICogbG9hZGVyL0RvY0xvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEb2NMb2FkZXI6OnJlcXVlc3RMaW5rUHJlZmV0Y2gpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jTG9hZGVyOjpjYW5SZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY0xvYWRl
cjo6aW5jcmVtZW50UmVxdWVzdENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY0xvYWRlcjo6
ZGVjcmVtZW50UmVxdWVzdENvdW50KToKKyAgICAgICAgKiBsb2FkZXIvRG9jTG9hZGVyLmg6Cisg
ICAgICAgICogbG9hZGVyL2xvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWNoZWRSZXNv
dXJjZVR5cGVUb1RhcmdldFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TG9hZGVyOjpkZXRlcm1p
bmVQcmlvcml0eSk6CisgICAgICAgIChXZWJDb3JlOjpMb2FkZXI6OmxvYWQpOgorICAgICAgICAo
V2ViQ29yZTo6TG9hZGVyOjpIb3N0OjpzZXJ2ZVBlbmRpbmdSZXF1ZXN0cyk6CisgICAgICAgIChX
ZWJDb3JlOjpMb2FkZXI6Okhvc3Q6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6TG9hZGVyOjpIb3N0OjpkaWRGYWlsKToKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRlcjo6SG9z
dDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRlcjo6SG9zdDo6
Y2FuY2VsUGVuZGluZ1JlcXVlc3RzKToKKyAgICAgICAgKiBsb2FkZXIvbG9hZGVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpMb2FkZXI6Oik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZVJlcXVlc3RCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNl
OjopOgorCiAyMDEwLTA3LTA5ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWls
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByNjI5MzcuCkluZGV4OiBX
ZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcJKHJldmlz
aW9uIDYyOTQ0KQorKysgV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2Nv
bmZpZwkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsOCBAQAogCiAvLyBTZXQgYW55IEVOQUJM
RV9GRUFUVVJFX05BTUUgbWFjcm8gdG8gYW4gZW1wdHkgc3RyaW5nIHRvIGRpc2FibGUgdGhhdCBm
ZWF0dXJlLgogCitFTkFCTEVfTElOS19QUkVGRVRDSCA9IDsKKwogRU5BQkxFXzNEX0NBTlZBUyA9
ICQoRU5BQkxFXzNEX0NBTlZBU18kKFRBUkdFVF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SKSk7CiBF
TkFCTEVfM0RfQ0FOVkFTXzEwNTAgPSBFTkFCTEVfM0RfQ0FOVkFTOwogRU5BQkxFXzNEX0NBTlZB
U18xMDYwID0gRU5BQkxFXzNEX0NBTlZBUzsKQEAgLTg0LDUgKzg2LDQgQEAgRU5BQkxFX1hIVE1M
TVAgPSA7CiBFTkFCTEVfWFBBVEggPSBFTkFCTEVfWFBBVEg7CiBFTkFCTEVfWFNMVCA9IEVOQUJM
RV9YU0xUOwogCi1GRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9DQU5WQVMpICQoRU5BQkxF
XzNEX1JFTkRFUklORykgJChFTkFCTEVfQkxPQl9TTElDRSkgJChFTkFCTEVfQ0hBTk5FTF9NRVNT
QUdJTkcpICQoRU5BQkxFX0NMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikgJChFTkFCTEVfREFUQUJB
U0UpICQoRU5BQkxFX0RBVEFHUklEKSAkKEVOQUJMRV9EQVRBTElTVCkgJChFTkFCTEVfREVWSUNF
X09SSUVOVEFUSU9OKSAkKEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEKSAkKEVOQUJMRV9ET01fU1RP
UkFHRSkgJChFTkFCTEVfRVZFTlRTT1VSQ0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZJ
TEVfUkVBREVSKSAkKEVOQUJMRV9GSUxFX1dSSVRFUikgJChFTkFCTEVfR0VPTE9DQVRJT04pICQo
RU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSU1BR0VfUkVTSVpFUikgJChFTkFCTEVfSU5E
RVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSU5QVVRfU1BFRUNIKSAkKEVOQUJMRV9KQVZBU0NSSVBU
X0RFQlVHR0VSKSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FVEVSX1RBRykgJChFTkFCTEVf
Tk9USUZJQ0FUSU9OUykgJChFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKSAkKEVOQUJM
RV9QUk9HUkVTU19UQUcpICQoRU5BQkxFX1JVQlkpICQoRU5BQkxFX1NBTkRCT1gpICQoRU5BQkxF
X1NIQVJFRF9XT1JLRVJTKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19BTklNQVRJT04pICQo
RU5BQkxFX1NWR19BU19JTUFHRSkgJChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVO
QUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1NWR19GT1JFSUdOX09CSkVDVCkgJChFTkFCTEVfU1ZH
X1VTRSkgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XRUJf
VElNSU5HKSAkKEVOQUJMRV9XTUwpICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hIVE1MTVAp
ICQoRU5BQkxFX1hQQVRIKSAkKEVOQUJMRV9YU0xUKTsKLQorRkVBVFVSRV9ERUZJTkVTID0gJChF
TkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfM0RfQ0FOVkFTKSAkKEVOQUJMRV8zRF9SRU5E
RVJJTkcpICQoRU5BQkxFX0JMT0JfU0xJQ0UpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAk
KEVOQUJMRV9DTElFTlRfQkFTRURfR0VPTE9DQVRJT04pICQoRU5BQkxFX0RBVEFCQVNFKSAkKEVO
QUJMRV9EQVRBR1JJRCkgJChFTkFCTEVfREFUQUxJU1QpICQoRU5BQkxFX0RFVklDRV9PUklFTlRB
VElPTikgJChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCkgJChFTkFCTEVfRE9NX1NUT1JBR0UpICQo
RU5BQkxFX0VWRU5UU09VUkNFKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GSUxFX1JFQURF
UikgJChFTkFCTEVfRklMRV9XUklURVIpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9J
Q09OREFUQUJBU0UpICQoRU5BQkxFX0lNQUdFX1JFU0laRVIpICQoRU5BQkxFX0lOREVYRURfREFU
QUJBU0UpICQoRU5BQkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dF
UikgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRVRFUl9UQUcpICQoRU5BQkxFX05PVElGSUNB
VElPTlMpICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVfUFJPR1JF
U1NfVEFHKSAkKEVOQUJMRV9SVUJZKSAkKEVOQUJMRV9TQU5EQk9YKSAkKEVOQUJMRV9TSEFSRURf
V09SS0VSUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9T
VkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZH
X0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0UpICQo
RU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykg
JChFTkFCTEVfV01MKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YSFRNTE1QKSAkKEVOQUJM
RV9YUEFUSCkgJChFTkFCTEVfWFNMVCk7CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAko
cmV2aXNpb24gNjI5NDQpCisrKyBXZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTQ0LDEyICsxNDQsMTkgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnRv
a2VuaXplUmVsQXR0cmlidQogICAgIHJlbEF0dHJpYnV0ZS5tX2lzSWNvbiA9IGZhbHNlOwogICAg
IHJlbEF0dHJpYnV0ZS5tX2lzQWx0ZXJuYXRlID0gZmFsc2U7CiAgICAgcmVsQXR0cmlidXRlLm1f
aXNETlNQcmVmZXRjaCA9IGZhbHNlOworI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQorICAgIHJl
bEF0dHJpYnV0ZS5tX2lzTGlua1ByZWZldGNoID0gZmFsc2U7CisjZW5kaWYKICAgICBpZiAoZXF1
YWxJZ25vcmluZ0Nhc2UocmVsLCAic3R5bGVzaGVldCIpKQogICAgICAgICByZWxBdHRyaWJ1dGUu
bV9pc1N0eWxlU2hlZXQgPSB0cnVlOwogICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHJl
bCwgImljb24iKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShyZWwsICJzaG9ydGN1dCBpY29uIikpCiAg
ICAgICAgIHJlbEF0dHJpYnV0ZS5tX2lzSWNvbiA9IHRydWU7CiAgICAgZWxzZSBpZiAoZXF1YWxJ
Z25vcmluZ0Nhc2UocmVsLCAiZG5zLXByZWZldGNoIikpCiAgICAgICAgIHJlbEF0dHJpYnV0ZS5t
X2lzRE5TUHJlZmV0Y2ggPSB0cnVlOworI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQorICAgIGVs
c2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHJlbCwgInByZWZldGNoIikpCisgICAgICAgIHJlbEF0
dHJpYnV0ZS5tX2lzTGlua1ByZWZldGNoID0gdHJ1ZTsKKyNlbmRpZgogICAgIGVsc2UgaWYgKGVx
dWFsSWdub3JpbmdDYXNlKHJlbCwgImFsdGVybmF0ZSBzdHlsZXNoZWV0IikgfHwgZXF1YWxJZ25v
cmluZ0Nhc2UocmVsLCAic3R5bGVzaGVldCBhbHRlcm5hdGUiKSkgewogICAgICAgICByZWxBdHRy
aWJ1dGUubV9pc1N0eWxlU2hlZXQgPSB0cnVlOwogICAgICAgICByZWxBdHRyaWJ1dGUubV9pc0Fs
dGVybmF0ZSA9IHRydWU7CkBAIC0xODYsNiArMTkzLDExIEBAIHZvaWQgSFRNTExpbmtFbGVtZW50
Ojpwcm9jZXNzKCkKICAgICBpZiAobV9yZWxBdHRyaWJ1dGUubV9pc0ROU1ByZWZldGNoICYmIG1f
dXJsLmlzVmFsaWQoKSAmJiAhbV91cmwuaXNFbXB0eSgpKQogICAgICAgICBSZXNvdXJjZUhhbmRs
ZTo6cHJlcGFyZUZvclVSTChtX3VybCk7CiAKKyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKKyAg
ICBpZiAobV9yZWxBdHRyaWJ1dGUubV9pc0xpbmtQcmVmZXRjaCAmJiBtX3VybC5pc1ZhbGlkKCkp
CisgICAgICAgIGRvY3VtZW50KCktPmRvY0xvYWRlcigpLT5yZXF1ZXN0TGlua1ByZWZldGNoKG1f
dXJsKTsKKyNlbmRpZgorCiAgICAgYm9vbCBhY2NlcHRJZlR5cGVDb250YWluc1RleHRDU1MgPSBk
b2N1bWVudCgpLT5wYWdlKCkgJiYgZG9jdW1lbnQoKS0+cGFnZSgpLT5zZXR0aW5ncygpICYmIGRv
Y3VtZW50KCktPnBhZ2UoKS0+c2V0dGluZ3MoKS0+dHJlYXRzQW55VGV4dENTU0xpbmtBc1N0eWxl
c2hlZXQoKTsKIAogICAgIC8vIFN0eWxlc2hlZXQKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MTGlu
a0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgJ
KHJldmlzaW9uIDYyOTQ0KQorKysgV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IENhY2hlZENTU1N0eWxlU2hlZXQ7CitjbGFzcyBDYWNoZWRMaW5rUHJlZmV0Y2g7CiBjbGFzcyBL
VVJMOwogCiBjbGFzcyBIVE1MTGlua0VsZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1lbnQsIHB1Ymxp
YyBDYWNoZWRSZXNvdXJjZUNsaWVudCB7CkBAIC00MCw4ICs0MSwyMCBAQCBwdWJsaWM6CiAgICAg
ICAgIGJvb2wgbV9pc0ljb247CiAgICAgICAgIGJvb2wgbV9pc0FsdGVybmF0ZTsKICAgICAgICAg
Ym9vbCBtX2lzRE5TUHJlZmV0Y2g7CisjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCisgICAgICAg
IGJvb2wgbV9pc0xpbmtQcmVmZXRjaDsKKyNlbmRpZgogCi0gICAgICAgIFJlbEF0dHJpYnV0ZSgp
IDogbV9pc1N0eWxlU2hlZXQoZmFsc2UpLCBtX2lzSWNvbihmYWxzZSksIG1faXNBbHRlcm5hdGUo
ZmFsc2UpLCBtX2lzRE5TUHJlZmV0Y2goZmFsc2UpIHsgfQorICAgICAgICBSZWxBdHRyaWJ1dGUo
KQorICAgICAgICAgICAgOiBtX2lzU3R5bGVTaGVldChmYWxzZSkKKyAgICAgICAgICAgICwgbV9p
c0ljb24oZmFsc2UpCisgICAgICAgICAgICAsIG1faXNBbHRlcm5hdGUoZmFsc2UpCisgICAgICAg
ICAgICAsIG1faXNETlNQcmVmZXRjaChmYWxzZSkKKyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkK
KyAgICAgICAgICAgICwgbV9pc0xpbmtQcmVmZXRjaChmYWxzZSkKKyNlbmRpZgorICAgICAgICAg
ICAgeyAKKyAgICAgICAgICAgIH0KICAgICB9OwogCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SFRN
TExpbmtFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50KiwgYm9v
bCBjcmVhdGVkQnlQYXJzZXIpOwpJbmRleDogV2ViQ29yZS9sb2FkZXIvQ2FjaGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0NhY2hlLmNwcAkocmV2aXNpb24gNjI5NDQpCisrKyBX
ZWJDb3JlL2xvYWRlci9DYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDYgKzg2LDEwIEBA
IHN0YXRpYyBDYWNoZWRSZXNvdXJjZSogY3JlYXRlUmVzb3VyY2UoQ2EKICAgICBjYXNlIENhY2hl
ZFJlc291cmNlOjpYQkxTdHlsZVNoZWV0OgogICAgICAgICByZXR1cm4gbmV3IENhY2hlZFhCTERv
Y3VtZW50KHVybC5zdHJpbmcoKSk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkK
KyAgICBjYXNlIENhY2hlZFJlc291cmNlOjpMaW5rUHJlZmV0Y2g6CisgICAgICAgIHJldHVybiBu
ZXcgQ2FjaGVkUmVzb3VyY2UodXJsLnN0cmluZygpLCBDYWNoZWRSZXNvdXJjZTo6TGlua1ByZWZl
dGNoKTsKKyNlbmRpZgogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KSW5kZXg6
IFdlYkNvcmUvbG9hZGVyL0NhY2hlZFJlc291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2xvYWRlci9DYWNoZWRSZXNvdXJjZS5jcHAJKHJldmlzaW9uIDYyOTQ0KQorKysgV2ViQ29yZS9s
b2FkZXIvQ2FjaGVkUmVzb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw4IEBA
CiAKICNpbmNsdWRlICJDYWNoZS5oIgogI2luY2x1ZGUgIkNhY2hlZE1ldGFkYXRhLmgiCisjaW5j
bHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCIKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNs
aWVudFdhbGtlci5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVk
ZSAiRG9jTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKQEAgLTEwOCw2ICsxMTAsMTYgQEAg
dm9pZCBDYWNoZWRSZXNvdXJjZTo6bG9hZChEb2NMb2FkZXIqIGRvYwogICAgIG1fbG9hZGluZyA9
IHRydWU7CiB9CiAKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OmRhdGEoUGFzc1JlZlB0cjxTaGFyZWRC
dWZmZXI+LCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3sKKyAgICBpZiAoIWFsbERhdGFSZWNlaXZl
ZCkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2Vy
IHcobV9jbGllbnRzKTsKKyAgICB3aGlsZSAoQ2FjaGVkUmVzb3VyY2VDbGllbnQqIGMgPSB3Lm5l
eHQoKSkKKyAgICAgICAgYy0+bm90aWZ5RmluaXNoZWQodGhpcyk7Cit9CisKIHZvaWQgQ2FjaGVk
UmVzb3VyY2U6OmZpbmlzaCgpCiB7CiAgICAgbV9zdGF0dXMgPSBDYWNoZWQ7CkBAIC0yMDQsNiAr
MjE2LDEyIEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OmFkZENsaWVudChDYWNoZWRSZXMKICAgICBk
aWRBZGRDbGllbnQoY2xpZW50KTsKIH0KIAordm9pZCBDYWNoZWRSZXNvdXJjZTo6ZGlkQWRkQ2xp
ZW50KENhY2hlZFJlc291cmNlQ2xpZW50KiBjKQoreworICAgIGlmICghaXNMb2FkaW5nKCkpCisg
ICAgICAgIGMtPm5vdGlmeUZpbmlzaGVkKHRoaXMpOworfQorCiB2b2lkIENhY2hlZFJlc291cmNl
OjphZGRDbGllbnRUb1NldChDYWNoZWRSZXNvdXJjZUNsaWVudCogY2xpZW50KQogewogICAgIEFT
U0VSVCghaXNQdXJnZWFibGUoKSk7CkluZGV4OiBXZWJDb3JlL2xvYWRlci9DYWNoZWRSZXNvdXJj
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0NhY2hlZFJlc291cmNlLmgJKHJldmlz
aW9uIDYyOTQ0KQorKysgV2ViQ29yZS9sb2FkZXIvQ2FjaGVkUmVzb3VyY2UuaAkod29ya2luZyBj
b3B5KQpAQCAtNjQsNiArNjQsOSBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFhCTCkKICAgICAgICAg
LCBYQkwKICNlbmRpZgorI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQorICAgICAgICAsIExpbmtQ
cmVmZXRjaAorI2VuZGlmCiAgICAgfTsKIAogICAgIGVudW0gU3RhdHVzIHsKQEAgLTgyLDggKzg1
LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmlu
ZyYpIHsgfQogICAgIHZpcnR1YWwgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgeyByZXR1cm4gU3Ry
aW5nKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGF0YShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
ZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZXJyb3Io
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRhdGEoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGRh
dGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICB2aXJ0dWFsIHZvaWQgZXJyb3IoKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgaHR0cFN0YXR1c0NvZGVFcnJvcigpIHsgZXJyb3IoKTsgfSAvLyBJ
bWFnZXMga2VlcCBsb2FkaW5nIGluIHNwaXRlIG9mIEhUVFAgZXJyb3JzIChmb3IgbGVnYWN5IGNv
bXBhdCB3aXRoIDxpbWc+LCBldGMuKS4KIAogICAgIGNvbnN0IFN0cmluZyAmdXJsKCkgY29uc3Qg
eyByZXR1cm4gbV91cmw7IH0KQEAgLTEwMyw3ICsxMDYsNyBAQCBwdWJsaWM6CiAgICAgUHJlbG9h
ZFJlc3VsdCBwcmVsb2FkUmVzdWx0KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UHJlbG9h
ZFJlc3VsdD4obV9wcmVsb2FkUmVzdWx0KTsgfQogICAgIHZvaWQgc2V0UmVxdWVzdGVkRnJvbU5l
dHdvcmtpbmdMYXllcigpIHsgbV9yZXF1ZXN0ZWRGcm9tTmV0d29ya2luZ0xheWVyID0gdHJ1ZTsg
fQogCi0gICAgdmlydHVhbCB2b2lkIGRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCop
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50
Kik7CiAgICAgdmlydHVhbCB2b2lkIGFsbENsaWVudHNSZW1vdmVkKCkgeyB9CiAKICAgICB1bnNp
Z25lZCBjb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50cy5zaXplKCk7IH0KQEAgLTEyMiw2
ICsxMjUsMTEgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TG9hZGluZyhib29sIGIpIHsgbV9sb2Fk
aW5nID0gYjsgfQogCiAgICAgdmlydHVhbCBib29sIGlzSW1hZ2UoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQorI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQorICAgIHZpcnR1YWwgYm9vbCBpc1By
ZWZldGNoKCkgY29uc3QgeyByZXR1cm4gdHlwZSgpICE9IExpbmtQcmVmZXRjaDsgfQorI2Vsc2UK
KyAgICB2aXJ0dWFsIGJvb2wgaXNQcmVmZXRjaCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Cisj
ZW5kaWYKIAogICAgIHVuc2lnbmVkIGFjY2Vzc0NvdW50KCkgY29uc3QgeyByZXR1cm4gbV9hY2Nl
c3NDb3VudDsgfQogICAgIHZvaWQgaW5jcmVhc2VBY2Nlc3NDb3VudCgpIHsgbV9hY2Nlc3NDb3Vu
dCsrOyB9CkBAIC0xNjIsNyArMTcwLDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0V4cGlyZWQo
KSBjb25zdDsKIAotICAgIHZpcnR1YWwgYm9vbCBzY2hlZHVsZSgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgdmlydHVhbCBib29sIHNjaGVkdWxlKCkgY29uc3QgeyByZXR1cm4gaXNQcmVm
ZXRjaCgpOyB9CiAKICAgICAvLyBMaXN0IG9mIGFjY2VwdGFibGUgTUlNRSB0eXBlcyBzZXBhcmF0
ZWQgYnkgIiwiLgogICAgIC8vIEEgTUlNRSB0eXBlIG1heSBjb250YWluIGEgd2lsZGNhcmQsIGUu
Zy4gInRleHQvKiIuCkluZGV4OiBXZWJDb3JlL2xvYWRlci9DYWNoZWRTY3JpcHQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0NhY2hlZFNjcmlwdC5jcHAJKHJldmlzaW9uIDYyOTQ0
KQorKysgV2ViQ29yZS9sb2FkZXIvQ2FjaGVkU2NyaXB0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTEsMTIgKzUxLDYgQEAgQ2FjaGVkU2NyaXB0Ojp+Q2FjaGVkU2NyaXB0KCkKIHsKIH0KIAotdm9p
ZCBDYWNoZWRTY3JpcHQ6OmRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCogYykKLXsK
LSAgICBpZiAoIWlzTG9hZGluZygpKQotICAgICAgICBjLT5ub3RpZnlGaW5pc2hlZCh0aGlzKTsK
LX0KLQogdm9pZCBDYWNoZWRTY3JpcHQ6OmFsbENsaWVudHNSZW1vdmVkKCkKIHsKICAgICBtX2Rl
Y29kZWREYXRhRGVsZXRpb25UaW1lci5zdGFydE9uZVNob3QoMCk7CkluZGV4OiBXZWJDb3JlL2xv
YWRlci9DYWNoZWRTY3JpcHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9DYWNoZWRT
Y3JpcHQuaAkocmV2aXNpb24gNjI5NDQpCisrKyBXZWJDb3JlL2xvYWRlci9DYWNoZWRTY3JpcHQu
aAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ICAgICAgICAgY29uc3QgU3RyaW5nJiBzY3JpcHQoKTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50Kik7CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBhbGxDbGllbnRzUmVtb3ZlZCgpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRFbmNvZGlu
Zyhjb25zdCBTdHJpbmcmKTsKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0RvY0xvYWRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRG9jTG9hZGVyLmNwcAkocmV2aXNpb24gNjI5NDQp
CisrKyBXZWJDb3JlL2xvYWRlci9Eb2NMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjgs
NiArMTY4LDEzIEBAIENhY2hlZFhCTERvY3VtZW50KiBEb2NMb2FkZXI6OnJlcXVlc3RYQkwKIH0K
ICNlbmRpZgogCisjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCitDYWNoZWRSZXNvdXJjZSogRG9j
TG9hZGVyOjpyZXF1ZXN0TGlua1ByZWZldGNoKGNvbnN0IFN0cmluZyYgdXJsKQoreworICAgIHJl
dHVybiByZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OkxpbmtQcmVmZXRjaCwgdXJsLCBT
dHJpbmcoKSk7Cit9CisjZW5kaWYKKwogYm9vbCBEb2NMb2FkZXI6OmNhblJlcXVlc3QoQ2FjaGVk
UmVzb3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgS1VSTCYgdXJsKQogewogICAgIC8vIFNvbWUgdHlw
ZXMgb2YgcmVzb3VyY2VzIGNhbiBiZSBsb2FkZWQgb25seSBmcm9tIHRoZSBzYW1lIG9yaWdpbi4g
IE90aGVyCkBAIC0xNzgsNiArMTg1LDkgQEAgYm9vbCBEb2NMb2FkZXI6OmNhblJlcXVlc3QoQ2Fj
aGVkUmVzb3VyYwogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkNTU1N0eWxlU2hlZXQ6CiAgICAg
Y2FzZSBDYWNoZWRSZXNvdXJjZTo6U2NyaXB0OgogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkZv
bnRSZXNvdXJjZToKKyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKKyAgICBjYXNlIENhY2hlZFJl
c291cmNlOjpMaW5rUHJlZmV0Y2g6CisjZW5kaWYKICAgICAgICAgLy8gVGhlc2UgdHlwZXMgb2Yg
cmVzb3VyY2VzIGNhbiBiZSBsb2FkZWQgZnJvbSBhbnkgb3JpZ2luLgogICAgICAgICAvLyBGSVhN
RTogQXJlIHdlIHN1cmUgYWJvdXQgQ2FjaGVkUmVzb3VyY2U6OkZvbnRSZXNvdXJjZT8KICAgICAg
ICAgYnJlYWs7CkBAIC0yMjgsNiArMjM4LDExIEBAIGJvb2wgRG9jTG9hZGVyOjpjYW5SZXF1ZXN0
KENhY2hlZFJlc291cmMKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICB9CisjaWYgRU5B
QkxFKExJTktfUFJFRkVUQ0gpCisgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6TGlua1ByZWZldGNo
OgorICAgICAgICAvLyBQcmVmZXRjaCBjYW5ub3QgYWZmZWN0IHRoZSBjdXJyZW50IGRvY3VtZW50
LgorICAgICAgICBicmVhazsKKyNlbmRpZgogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKQEAgLTM1NSwxMyArMzcwLDE5IEBAIHZvaWQg
RG9jTG9hZGVyOjpjaGVja0NhY2hlT2JqZWN0U3RhdHVzKEMKICAgICBmcmFtZSgpLT5sb2FkZXIo
KS0+bG9hZGVkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUocmVzb3VyY2UpOwogfQogCi12b2lkIERv
Y0xvYWRlcjo6aW5jcmVtZW50UmVxdWVzdENvdW50KCkKK3ZvaWQgRG9jTG9hZGVyOjppbmNyZW1l
bnRSZXF1ZXN0Q291bnQoY29uc3QgQ2FjaGVkUmVzb3VyY2UqIHJlcykKIHsKKyAgICBpZiAocmVz
LT5pc1ByZWZldGNoKCkpCisgICAgICAgIHJldHVybjsKKwogICAgICsrbV9yZXF1ZXN0Q291bnQ7
CiB9CiAKLXZvaWQgRG9jTG9hZGVyOjpkZWNyZW1lbnRSZXF1ZXN0Q291bnQoKQordm9pZCBEb2NM
b2FkZXI6OmRlY3JlbWVudFJlcXVlc3RDb3VudChjb25zdCBDYWNoZWRSZXNvdXJjZSogcmVzKQog
eworICAgIGlmIChyZXMtPmlzUHJlZmV0Y2goKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgLS1t
X3JlcXVlc3RDb3VudDsKICAgICBBU1NFUlQobV9yZXF1ZXN0Q291bnQgPiAtMSk7CiB9CkluZGV4
OiBXZWJDb3JlL2xvYWRlci9Eb2NMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRl
ci9Eb2NMb2FkZXIuaAkocmV2aXNpb24gNjI5NDQpCisrKyBXZWJDb3JlL2xvYWRlci9Eb2NMb2Fk
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjcsNiArNjcsOSBAQCBwdWJsaWM6CiAjaWYgRU5BQkxF
KFhCTCkKICAgICBDYWNoZWRYQkxEb2N1bWVudCogcmVxdWVzdFhCTERvY3VtZW50KGNvbnN0IFN0
cmluZyAmdXJsKTsKICNlbmRpZgorI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQorICAgIENhY2hl
ZFJlc291cmNlKiByZXF1ZXN0TGlua1ByZWZldGNoKGNvbnN0IFN0cmluZyAmdXJsKTsKKyNlbmRp
ZgogCiAgICAgLy8gTG9ncyBhbiBhY2Nlc3MgZGVuaWVkIG1lc3NhZ2UgdG8gdGhlIGNvbnNvbGUg
Zm9yIHRoZSBzcGVjaWZpZWQgVVJMLgogICAgIHZvaWQgcHJpbnRBY2Nlc3NEZW5pZWRNZXNzYWdl
KGNvbnN0IEtVUkwmIHVybCkgY29uc3Q7CkBAIC05MSw4ICs5NCw4IEBAIHB1YmxpYzoKICAgICAK
ICAgICB2b2lkIHNldEFsbG93U3RhbGVSZXNvdXJjZXMoYm9vbCBhbGxvd1N0YWxlUmVzb3VyY2Vz
KSB7IG1fYWxsb3dTdGFsZVJlc291cmNlcyA9IGFsbG93U3RhbGVSZXNvdXJjZXM7IH0KIAotICAg
IHZvaWQgaW5jcmVtZW50UmVxdWVzdENvdW50KCk7Ci0gICAgdm9pZCBkZWNyZW1lbnRSZXF1ZXN0
Q291bnQoKTsKKyAgICB2b2lkIGluY3JlbWVudFJlcXVlc3RDb3VudChjb25zdCBDYWNoZWRSZXNv
dXJjZSopOworICAgIHZvaWQgZGVjcmVtZW50UmVxdWVzdENvdW50KGNvbnN0IENhY2hlZFJlc291
cmNlKik7CiAgICAgaW50IHJlcXVlc3RDb3VudCgpOwogICAgIAogICAgIHZvaWQgY2xlYXJQcmVs
b2FkcygpOwpJbmRleDogV2ViQ29yZS9sb2FkZXIvbG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2xvYWRlci9sb2FkZXIuY3BwCShyZXZpc2lvbiA2Mjk0NCkKKysrIFdlYkNvcmUvbG9h
ZGVyL2xvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5LDcgKzg5LDEyIEBAIHN0YXRpYyBS
ZXNvdXJjZVJlcXVlc3Q6OlRhcmdldFR5cGUgY2FjaGUKICAgICAgICAgcmV0dXJuIFJlc291cmNl
UmVxdWVzdDo6VGFyZ2V0SXNGb250UmVzb3VyY2U7CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6
SW1hZ2VSZXNvdXJjZToKICAgICAgICAgcmV0dXJuIFJlc291cmNlUmVxdWVzdDo6VGFyZ2V0SXNJ
bWFnZTsKKyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKKyAgICBjYXNlIENhY2hlZFJlc291cmNl
OjpMaW5rUHJlZmV0Y2g6CisgICAgICAgIHJldHVybiBSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldElz
UHJlZmV0Y2g7CisjZW5kaWYKICAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
cmV0dXJuIFJlc291cmNlUmVxdWVzdDo6VGFyZ2V0SXNTdWJyZXNvdXJjZTsKIH0KIApAQCAtMTEw
LDYgKzExNSwxMCBAQCBMb2FkZXI6OlByaW9yaXR5IExvYWRlcjo6ZGV0ZXJtaW5lUHJpb3JpCiAg
ICAgICAgICAgICByZXR1cm4gTWVkaXVtOwogICAgICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpJ
bWFnZVJlc291cmNlOgogICAgICAgICAgICAgcmV0dXJuIExvdzsKKyNpZiBFTkFCTEUoTElOS19Q
UkVGRVRDSCkKKyAgICAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6TGlua1ByZWZldGNoOgorICAg
ICAgICAgICAgcmV0dXJuIFZlcnlMb3c7CisjZW5kaWYKICAgICB9CiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgcmV0dXJuIExvdzsKQEAgLTEzOSw5ICsxNDgsOSBAQCB2b2lkIExvYWRl
cjo6bG9hZChEb2NMb2FkZXIqIGRvY0xvYWRlciwgCiAgICAgYm9vbCBoYWRSZXF1ZXN0cyA9IGhv
c3QtPmhhc1JlcXVlc3RzKCk7CiAgICAgUHJpb3JpdHkgcHJpb3JpdHkgPSBkZXRlcm1pbmVQcmlv
cml0eShyZXNvdXJjZSk7CiAgICAgaG9zdC0+YWRkUmVxdWVzdChyZXF1ZXN0LCBwcmlvcml0eSk7
Ci0gICAgZG9jTG9hZGVyLT5pbmNyZW1lbnRSZXF1ZXN0Q291bnQoKTsKKyAgICBkb2NMb2FkZXIt
PmluY3JlbWVudFJlcXVlc3RDb3VudChyZXF1ZXN0LT5jYWNoZWRSZXNvdXJjZSgpKTsKIAotICAg
IGlmIChwcmlvcml0eSA+IExvdyB8fCAhdXJsLnByb3RvY29sSW5IVFRQRmFtaWx5KCkgfHwgIWhh
ZFJlcXVlc3RzKSB7CisgICAgaWYgKHByaW9yaXR5ID4gTG93IHx8ICF1cmwucHJvdG9jb2xJbkhU
VFBGYW1pbHkoKSB8fCAocHJpb3JpdHkgPT0gTG93ICYmICFoYWRSZXF1ZXN0cykpIHsKICAgICAg
ICAgLy8gVHJ5IHRvIHJlcXVlc3QgaW1wb3J0YW50IHJlc291cmNlcyBpbW1lZGlhdGVseQogICAg
ICAgICBob3N0LT5zZXJ2ZVBlbmRpbmdSZXF1ZXN0cyhwcmlvcml0eSk7CiAgICAgfSBlbHNlIHsK
QEAgLTM3MCw3ICszNzksNyBAQCB2b2lkIExvYWRlcjo6SG9zdDo6c2VydmVQZW5kaW5nUmVxdWVz
dHMoCiAgICAgICAgICAgICBwcmludGYoIkhPU1QgJXMgQ09VTlQgJWQgTE9BRElORyAlc1xuIiwg
cmVzb3VyY2VSZXF1ZXN0LnVybCgpLmhvc3QoKS5sYXRpbjEoKS5kYXRhKCksIG1fcmVxdWVzdHNM
b2FkaW5nLnNpemUoKSwgcmVxdWVzdC0+Y2FjaGVkUmVzb3VyY2UoKS0+dXJsKCkubGF0aW4xKCku
ZGF0YSgpKTsKICNlbmRpZgogICAgICAgICB9IGVsc2UgeyAgICAgICAgICAgIAotICAgICAgICAg
ICAgZG9jTG9hZGVyLT5kZWNyZW1lbnRSZXF1ZXN0Q291bnQoKTsKKyAgICAgICAgICAgIGRvY0xv
YWRlci0+ZGVjcmVtZW50UmVxdWVzdENvdW50KHJlcXVlc3QtPmNhY2hlZFJlc291cmNlKCkpOwog
ICAgICAgICAgICAgZG9jTG9hZGVyLT5zZXRMb2FkSW5Qcm9ncmVzcyh0cnVlKTsKICAgICAgICAg
ICAgIHJlcXVlc3QtPmNhY2hlZFJlc291cmNlKCktPmVycm9yKCk7CiAgICAgICAgICAgICBkb2NM
b2FkZXItPnNldExvYWRJblByb2dyZXNzKGZhbHNlKTsKQEAgLTM5NCw3ICs0MDMsNyBAQCB2b2lk
IExvYWRlcjo6SG9zdDo6ZGlkRmluaXNoTG9hZGluZyhTdWJyCiAgICAgLy8gdGhlIGRvY0xvYWRl
ciB0aGF0IGl0IHdpbGwgZGVsZXRlIHdoZW4gdGhlIGRvY3VtZW50IGdldHMgZGVsZXRlZC4KICAg
ICBSZWZQdHI8RG9jdW1lbnQ+IHByb3RlY3Rvcihkb2NMb2FkZXItPmRvYygpKTsKICAgICBpZiAo
IXJlcXVlc3QtPmlzTXVsdGlwYXJ0KCkpCi0gICAgICAgIGRvY0xvYWRlci0+ZGVjcmVtZW50UmVx
dWVzdENvdW50KCk7CisgICAgICAgIGRvY0xvYWRlci0+ZGVjcmVtZW50UmVxdWVzdENvdW50KHJl
cXVlc3QtPmNhY2hlZFJlc291cmNlKCkpOwogCiAgICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNl
ID0gcmVxdWVzdC0+Y2FjaGVkUmVzb3VyY2UoKTsKICAgICBBU1NFUlQoIXJlc291cmNlLT5yZXNv
dXJjZVRvUmV2YWxpZGF0ZSgpKTsKQEAgLTQ0Miw3ICs0NTEsNyBAQCB2b2lkIExvYWRlcjo6SG9z
dDo6ZGlkRmFpbChTdWJyZXNvdXJjZUxvCiAgICAgLy8gdGhlIGRvY0xvYWRlciB0aGF0IGl0IHdp
bGwgZGVsZXRlIHdoZW4gdGhlIGRvY3VtZW50IGdldHMgZGVsZXRlZC4KICAgICBSZWZQdHI8RG9j
dW1lbnQ+IHByb3RlY3Rvcihkb2NMb2FkZXItPmRvYygpKTsKICAgICBpZiAoIXJlcXVlc3QtPmlz
TXVsdGlwYXJ0KCkpCi0gICAgICAgIGRvY0xvYWRlci0+ZGVjcmVtZW50UmVxdWVzdENvdW50KCk7
CisgICAgICAgIGRvY0xvYWRlci0+ZGVjcmVtZW50UmVxdWVzdENvdW50KHJlcXVlc3QtPmNhY2hl
ZFJlc291cmNlKCkpOwogCiAgICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlID0gcmVxdWVzdC0+
Y2FjaGVkUmVzb3VyY2UoKTsKICAgICAKQEAgLTQ4Nyw3ICs0OTYsNyBAQCB2b2lkIExvYWRlcjo6
SG9zdDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFN1CiAgICAgICAgICAgICAvLyAzMDQgTm90IG1vZGlm
aWVkIC8gVXNlIGxvY2FsIGNvcHkKICAgICAgICAgICAgIG1fcmVxdWVzdHNMb2FkaW5nLnJlbW92
ZShsb2FkZXIpOwogICAgICAgICAgICAgbG9hZGVyLT5jbGVhckNsaWVudCgpOwotICAgICAgICAg
ICAgcmVxdWVzdC0+ZG9jTG9hZGVyKCktPmRlY3JlbWVudFJlcXVlc3RDb3VudCgpOworICAgICAg
ICAgICAgcmVxdWVzdC0+ZG9jTG9hZGVyKCktPmRlY3JlbWVudFJlcXVlc3RDb3VudChyZXF1ZXN0
LT5jYWNoZWRSZXNvdXJjZSgpKTsKIAogICAgICAgICAgICAgLy8gRXhpc3RpbmcgcmVzb3VyY2Ug
aXMgb2ssIGp1c3QgdXNlIGl0IHVwZGF0aW5nIHRoZSBleHBpcmF0aW9uIHRpbWUuCiAgICAgICAg
ICAgICBjYWNoZSgpLT5yZXZhbGlkYXRpb25TdWNjZWVkZWQocmVzb3VyY2UsIHJlc3BvbnNlKTsK
QEAgLTUxOSw3ICs1MjgsNyBAQCB2b2lkIExvYWRlcjo6SG9zdDo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KFN1CiAgICAgICAgIHJlcXVlc3QtPnNldElzTXVsdGlwYXJ0KHRydWUpOwogICAgICAgICAKICAg
ICAgICAgLy8gV2UgZG9uJ3QgY291bnQgbXVsdGlQYXJ0cyBpbiBhIERvY0xvYWRlcidzIHJlcXVl
c3QgY291bnQKLSAgICAgICAgcmVxdWVzdC0+ZG9jTG9hZGVyKCktPmRlY3JlbWVudFJlcXVlc3RD
b3VudCgpOworICAgICAgICByZXF1ZXN0LT5kb2NMb2FkZXIoKS0+ZGVjcmVtZW50UmVxdWVzdENv
dW50KHJlcXVlc3QtPmNhY2hlZFJlc291cmNlKCkpOwogCiAgICAgICAgIC8vIElmIHdlIGdldCBh
IG11bHRpcGFydCByZXNwb25zZSwgd2UgbXVzdCBoYXZlIGEgaGFuZGxlCiAgICAgICAgIEFTU0VS
VChsb2FkZXItPmhhbmRsZSgpKTsKQEAgLTU4Miw3ICs1OTEsNyBAQCB2b2lkIExvYWRlcjo6SG9z
dDo6Y2FuY2VsUGVuZGluZ1JlcXVlc3RzCiAgICAgICAgIGlmIChyZXF1ZXN0LT5kb2NMb2FkZXIo
KSA9PSBkb2NMb2FkZXIpIHsKICAgICAgICAgICAgIGNhY2hlKCktPnJlbW92ZShyZXF1ZXN0LT5j
YWNoZWRSZXNvdXJjZSgpKTsKICAgICAgICAgICAgIGRlbGV0ZSByZXF1ZXN0OwotICAgICAgICAg
ICAgZG9jTG9hZGVyLT5kZWNyZW1lbnRSZXF1ZXN0Q291bnQoKTsKKyAgICAgICAgICAgIGRvY0xv
YWRlci0+ZGVjcmVtZW50UmVxdWVzdENvdW50KHJlcXVlc3QtPmNhY2hlZFJlc291cmNlKCkpOwog
ICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHJlbWFpbmluZy5hcHBlbmQocmVxdWVzdCk7CiAg
ICAgfQpJbmRleDogV2ViQ29yZS9sb2FkZXIvbG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9sb2FkZXIvbG9hZGVyLmgJKHJldmlzaW9uIDYyOTQ0KQorKysgV2ViQ29yZS9sb2FkZXIvbG9h
ZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDggKzQ4LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAgICAgICAgIHZvaWQgY2FuY2VsUmVxdWVzdHMoRG9jTG9hZGVyKik7CiAgICAgICAgIAot
ICAgICAgICBlbnVtIFByaW9yaXR5IHsgTG93LCBNZWRpdW0sIEhpZ2ggfTsKLSAgICAgICAgdm9p
ZCBzZXJ2ZVBlbmRpbmdSZXF1ZXN0cyhQcmlvcml0eSBtaW5pbXVtUHJpb3JpdHkgPSBMb3cpOwor
ICAgICAgICBlbnVtIFByaW9yaXR5IHsgVmVyeUxvdywgTG93LCBNZWRpdW0sIEhpZ2ggfTsKKyAg
ICAgICAgdm9pZCBzZXJ2ZVBlbmRpbmdSZXF1ZXN0cyhQcmlvcml0eSBtaW5pbXVtUHJpb3JpdHkg
PSBWZXJ5TG93KTsKIAogICAgICAgICBib29sIGlzU3VzcGVuZGluZ1BlbmRpbmdSZXF1ZXN0cygp
IHsgcmV0dXJuIG1faXNTdXNwZW5kaW5nUGVuZGluZ1JlcXVlc3RzOyB9CiAgICAgICAgIHZvaWQg
c3VzcGVuZFBlbmRpbmdSZXF1ZXN0cygpOwpAQCAtNzYsNyArNzYsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgICAgICB2b2lkIGFkZFJlcXVlc3QoUmVxdWVzdCosIFByaW9yaXR5KTsK
ICAgICAgICAgICAgIHZvaWQgbm9uQ2FjaGVSZXF1ZXN0SW5GbGlnaHQoKTsKICAgICAgICAgICAg
IHZvaWQgbm9uQ2FjaGVSZXF1ZXN0Q29tcGxldGUoKTsKLSAgICAgICAgICAgIHZvaWQgc2VydmVQ
ZW5kaW5nUmVxdWVzdHMoUHJpb3JpdHkgbWluaW11bVByaW9yaXR5ID0gTG93KTsKKyAgICAgICAg
ICAgIHZvaWQgc2VydmVQZW5kaW5nUmVxdWVzdHMoUHJpb3JpdHkgbWluaW11bVByaW9yaXR5ID0g
VmVyeUxvdyk7CiAgICAgICAgICAgICB2b2lkIGNhbmNlbFJlcXVlc3RzKERvY0xvYWRlciopOwog
ICAgICAgICAgICAgYm9vbCBoYXNSZXF1ZXN0cygpIGNvbnN0OwogCkluZGV4OiBXZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgJKHJldmlzaW9uIDYyOTQ0
KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaAkod29y
a2luZyBjb3B5KQpAQCAtNjMsNyArNjMsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
ICAgICBUYXJnZXRJc09iamVjdCwKICAgICAgICAgICAgIFRhcmdldElzTWVkaWEsCiAgICAgICAg
ICAgICBUYXJnZXRJc1dvcmtlciwKLSAgICAgICAgICAgIFRhcmdldElzU2hhcmVkV29ya2VyCisg
ICAgICAgICAgICBUYXJnZXRJc1NoYXJlZFdvcmtlciwKKyAgICAgICAgICAgIFRhcmdldElzUHJl
ZmV0Y2gsCiAgICAgICAgIH07CiAKICAgICAgICAgc3RhdGljIFBhc3NPd25QdHI8UmVzb3VyY2VS
ZXF1ZXN0PiBhZG9wdChQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4p
OwpJbmRleDogV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9DaGFuZ2VM
b2cJKHJldmlzaW9uIDYyOTQ0KQorKysgV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxMiBAQAorMjAxMC0wNy0wOSAgTGVvbiBDbGFya2UgIDxsZW9uY2xhcmtlQGdv
b2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgYWRkIHN1cHBvcnQgZm9yIGxpbmsgcHJlZmV0Y2hpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2NTIKKworICAgICAgICAqIENvbmZpZ3VyYXRp
b25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgorCiAyMDEwLTA3LTA5ICBBbnR0aSBLb2l2aXN0
byAgPGtvaXZpc3RvQGlraS5maT4KIAogICAgICAgICBOb3QgcmV2aWV3ZWQuCkluZGV4OiBXZWJL
aXQyL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdDIvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcJKHJldmlzaW9u
IDYyOTQ0KQorKysgV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZp
Zwkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsOCBAQAogCiAvLyBTZXQgYW55IEVOQUJMRV9G
RUFUVVJFX05BTUUgbWFjcm8gdG8gYW4gZW1wdHkgc3RyaW5nIHRvIGRpc2FibGUgdGhhdCBmZWF0
dXJlLgogCitFTkFCTEVfTElOS19QUkVGRVRDSCA9IDsKKwogRU5BQkxFXzNEX0NBTlZBUyA9ICQo
RU5BQkxFXzNEX0NBTlZBU18kKFRBUkdFVF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SKSk7CiBFTkFC
TEVfM0RfQ0FOVkFTXzEwNTAgPSBFTkFCTEVfM0RfQ0FOVkFTOwogRU5BQkxFXzNEX0NBTlZBU18x
MDYwID0gRU5BQkxFXzNEX0NBTlZBUzsKQEAgLTgyLDUgKzg0LDQgQEAgRU5BQkxFX1hIVE1MTVAg
PSA7CiBFTkFCTEVfWFBBVEggPSBFTkFCTEVfWFBBVEg7CiBFTkFCTEVfWFNMVCA9IEVOQUJMRV9Y
U0xUOwogCi1GRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9DQU5WQVMpICQoRU5BQkxFXzNE
X1JFTkRFUklORykgJChFTkFCTEVfQkxPQl9TTElDRSkgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJ
TkcpICQoRU5BQkxFX0NMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikgJChFTkFCTEVfREFUQUJBU0Up
ICQoRU5BQkxFX0RBVEFHUklEKSAkKEVOQUJMRV9EQVRBTElTVCkgJChFTkFCTEVfRElSRUNUT1JZ
X1VQTE9BRCkgJChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCkgJChFTkFCTEVfRE9NX1NUT1JBR0Up
ICQoRU5BQkxFX0VWRU5UU09VUkNFKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GSUxFX1JF
QURFUikgJChFTkFCTEVfRklMRV9XUklURVIpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJM
RV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lOUFVU
X1NQRUVDSCkgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfTUFUSE1MKSAk
KEVOQUJMRV9NRVRFUl9UQUcpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX09GRkxJ
TkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVfUFJPR1JFU1NfVEFHKSAkKEVOQUJMRV9SVUJZ
KSAkKEVOQUJMRV9TQU5EQk9YKSAkKEVOQUJMRV9TSEFSRURfV09SS0VSUykgJChFTkFCTEVfU1ZH
KSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxF
X1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdf
Rk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJM
RV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykgJChFTkFCTEVfV01MKSAkKEVOQUJM
RV9XT1JLRVJTKSAkKEVOQUJMRV9YSFRNTE1QKSAkKEVOQUJMRV9YUEFUSCkgJChFTkFCTEVfWFNM
VCk7Ci0KK0ZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpICQoRU5BQkxF
XzNEX0NBTlZBUykgJChFTkFCTEVfM0RfUkVOREVSSU5HKSAkKEVOQUJMRV9CTE9CX1NMSUNFKSAk
KEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfQ0xJRU5UX0JBU0VEX0dFT0xPQ0FU
SU9OKSAkKEVOQUJMRV9EQVRBQkFTRSkgJChFTkFCTEVfREFUQUdSSUQpICQoRU5BQkxFX0RBVEFM
SVNUKSAkKEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChF
TkFCTEVfRVZFTlRTT1VSQ0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZJTEVfUkVBREVS
KSAkKEVOQUJMRV9GSUxFX1dSSVRFUikgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lD
T05EQVRBQkFTRSkgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSU5QVVRfU1BF
RUNIKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9NQVRITUwpICQoRU5B
QkxFX01FVEVSX1RBRykgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfT0ZGTElORV9X
RUJfQVBQTElDQVRJT05TKSAkKEVOQUJMRV9QUk9HUkVTU19UQUcpICQoRU5BQkxFX1JVQlkpICQo
RU5BQkxFX1NBTkRCT1gpICQoRU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAkKEVOQUJMRV9TVkcpICQo
RU5BQkxFX1NWR19BTklNQVRJT04pICQoRU5BQkxFX1NWR19BU19JTUFHRSkgJChFTkFCTEVfU1ZH
X0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1NWR19GT1JF
SUdOX09CSkVDVCkgJChFTkFCTEVfU1ZHX1VTRSkgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1dF
Ql9TT0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVOQUJMRV9XTUwpICQoRU5BQkxFX1dP
UktFUlMpICQoRU5BQkxFX1hIVE1MTVApICQoRU5BQkxFX1hQQVRIKSAkKEVOQUJMRV9YU0xUKTsK
SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNjI5NDQpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMDctMDkgIExlb24g
Q2xhcmtlICA8bGVvbmNsYXJrZUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIGFkZCBzdXBwb3J0IGZvciBsaW5rIHByZWZldGNoaW5n
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjUyCisK
KyAgICAgICAgKiBwdWJsaWMvV2ViVVJMUmVxdWVzdC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJV
UkxSZXF1ZXN0OjopOgorCiAyMDEwLTA3LTA5ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIE5vdCByZXZpZXdlZDogY2hyb21pdW0gYnVpbGQgZml4LgpJ
bmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVUkxSZXF1ZXN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVUkxSZXF1ZXN0LmgJKHJldmlzaW9uIDYyOTQ0
KQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVUkxSZXF1ZXN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTY5LDcgKzY5LDggQEAgcHVibGljOgogICAgICAgICBUYXJnZXRJc09iamVjdCA9IDcs
CiAgICAgICAgIFRhcmdldElzTWVkaWEgPSA4LAogICAgICAgICBUYXJnZXRJc1dvcmtlciA9IDks
Ci0gICAgICAgIFRhcmdldElzU2hhcmVkV29ya2VyID0gMTAKKyAgICAgICAgVGFyZ2V0SXNTaGFy
ZWRXb3JrZXIgPSAxMCwKKyAgICAgICAgVGFyZ2V0SXNQcmVmZXRjaCA9IDExLAogICAgIH07CiAK
ICAgICB+V2ViVVJMUmVxdWVzdCgpIHsgcmVzZXQoKTsgfQpJbmRleDogV2ViS2l0L21hYy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDYyOTQ0
KQorKysgV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMiBA
QAorMjAxMC0wNy0wOSAgTGVvbiBDbGFya2UgIDxsZW9uY2xhcmtlQGdvb2dsZS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgYWRkIHN1cHBvcnQg
Zm9yIGxpbmsgcHJlZmV0Y2hpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTM2NTIKKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZp
bmVzLnhjY29uZmlnOgorCiAyMDEwLTA3LTA4ICBBYXJvbiBCb29kbWFuICA8YWFAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KSW5kZXg6IFdlYktp
dC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwkocmV2
aXNpb24gNjI5NDQpCisrKyBXZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVz
LnhjY29uZmlnCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw4IEBACiAKIC8vIFNldCBhbnkg
RU5BQkxFX0ZFQVRVUkVfTkFNRSBtYWNybyB0byBhbiBlbXB0eSBzdHJpbmcgdG8gZGlzYWJsZSB0
aGF0IGZlYXR1cmUuCiAKK0VOQUJMRV9MSU5LX1BSRUZFVENIID0gOworCiBFTkFCTEVfM0RfQ0FO
VkFTID0gJChFTkFCTEVfM0RfQ0FOVkFTXyQoVEFSR0VUX01BQ19PU19YX1ZFUlNJT05fTUFKT1Ip
KTsKIEVOQUJMRV8zRF9DQU5WQVNfMTA1MCA9IEVOQUJMRV8zRF9DQU5WQVM7CiBFTkFCTEVfM0Rf
Q0FOVkFTXzEwNjAgPSBFTkFCTEVfM0RfQ0FOVkFTOwpAQCAtODQsNCArODYsNCBAQCBFTkFCTEVf
WEhUTUxNUCA9IDsKIEVOQUJMRV9YUEFUSCA9IEVOQUJMRV9YUEFUSDsKIEVOQUJMRV9YU0xUID0g
RU5BQkxFX1hTTFQ7CiAKLUZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX0NBTlZBUykgJChF
TkFCTEVfM0RfUkVOREVSSU5HKSAkKEVOQUJMRV9CTE9CX1NMSUNFKSAkKEVOQUJMRV9DSEFOTkVM
X01FU1NBR0lORykgJChFTkFCTEVfQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9E
QVRBQkFTRSkgJChFTkFCTEVfREFUQUdSSUQpICQoRU5BQkxFX0RBVEFMSVNUKSAkKEVOQUJMRV9E
RVZJQ0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQpICQoRU5BQkxFX0RP
TV9TVE9SQUdFKSAkKEVOQUJMRV9FVkVOVFNPVVJDRSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFC
TEVfRklMRV9SRUFERVIpICQoRU5BQkxFX0ZJTEVfV1JJVEVSKSAkKEVOQUJMRV9HRU9MT0NBVElP
TikgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9JTUFHRV9SRVNJWkVSKSAkKEVOQUJM
RV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9JTlBVVF9TUEVFQ0gpICQoRU5BQkxFX0pBVkFT
Q1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVURVJfVEFHKSAkKEVO
QUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpICQo
RU5BQkxFX1BST0dSRVNTX1RBRykgJChFTkFCTEVfUlVCWSkgJChFTkFCTEVfU0FOREJPWCkgJChF
TkFCTEVfU0hBUkVEX1dPUktFUlMpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0FOSU1BVElP
TikgJChFTkFCTEVfU1ZHX0FTX0lNQUdFKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1Mp
ICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUKSAkKEVOQUJM
RV9TVkdfVVNFKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxF
X1dFQl9USU1JTkcpICQoRU5BQkxFX1dNTCkgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWEhU
TUxNUCkgJChFTkFCTEVfWFBBVEgpICQoRU5BQkxFX1hTTFQpOworRkVBVFVSRV9ERUZJTkVTID0g
JChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfM0RfQ0FOVkFTKSAkKEVOQUJMRV8zRF9S
RU5ERVJJTkcpICQoRU5BQkxFX0JMT0JfU0xJQ0UpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5H
KSAkKEVOQUJMRV9DTElFTlRfQkFTRURfR0VPTE9DQVRJT04pICQoRU5BQkxFX0RBVEFCQVNFKSAk
KEVOQUJMRV9EQVRBR1JJRCkgJChFTkFCTEVfREFUQUxJU1QpICQoRU5BQkxFX0RFVklDRV9PUklF
TlRBVElPTikgJChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCkgJChFTkFCTEVfRE9NX1NUT1JBR0Up
ICQoRU5BQkxFX0VWRU5UU09VUkNFKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GSUxFX1JF
QURFUikgJChFTkFCTEVfRklMRV9XUklURVIpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJM
RV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lNQUdFX1JFU0laRVIpICQoRU5BQkxFX0lOREVYRURf
REFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJV
R0dFUikgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRVRFUl9UQUcpICQoRU5BQkxFX05PVElG
SUNBVElPTlMpICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVfUFJP
R1JFU1NfVEFHKSAkKEVOQUJMRV9SVUJZKSAkKEVOQUJMRV9TQU5EQk9YKSAkKEVOQUJMRV9TSEFS
RURfV09SS0VSUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJM
RV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVf
U1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0Up
ICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlO
RykgJChFTkFCTEVfV01MKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YSFRNTE1QKSAkKEVO
QUJMRV9YUEFUSCkgJChFTkFCTEVfWFNMVCk7CkluZGV4OiBXZWJLaXRUb29scy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2Mjk0NCkKKysr
IFdlYktpdFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisy
MDEwLTA3LTA5ICBMZW9uIENsYXJrZSAgPGxlb25jbGFya2VAZ29vZ2xlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBhZGQgc3VwcG9ydCBmb3Ig
bGluayBwcmVmZXRjaGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MzY1MgorCisgICAgICAgICogU2NyaXB0cy9idWlsZC13ZWJraXQ6CisKIDIwMTAt
MDctMDkgIEplZHJ6ZWogTm93YWNraSAgPGplZHJ6ZWoubm93YWNraUBub2tpYS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCkluZGV4OiBXZWJLaXRUb29scy9TY3Jp
cHRzL2J1aWxkLXdlYmtpdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL2J1aWxk
LXdlYmtpdAkocmV2aXNpb24gNjI5NDQpCisrKyBXZWJLaXRUb29scy9TY3JpcHRzL2J1aWxkLXdl
YmtpdAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCBteSAkcHJlZml4UGF0aDsKIG15
ICRtYWtlQXJnczsKIG15ICRzdGFydFRpbWUgPSB0aW1lKCk7CiAKLW15ICgkdGhyZWVEQ2FudmFz
U3VwcG9ydCwgJHRocmVlRFJlbmRlcmluZ1N1cHBvcnQsICRjaGFubmVsTWVzc2FnaW5nU3VwcG9y
dCwgJGNsaWVudEJhc2VkR2VvbG9jYXRpb25TdXBwb3J0LCAkZGF0YWJhc2VTdXBwb3J0LCAkZGF0
YWdyaWRTdXBwb3J0LCAkZGF0YWxpc3RTdXBwb3J0LAorbXkgKCRsaW5rUHJlZmV0Y2hTdXBwb3J0
LCAkdGhyZWVEQ2FudmFzU3VwcG9ydCwgJHRocmVlRFJlbmRlcmluZ1N1cHBvcnQsICRjaGFubmVs
TWVzc2FnaW5nU3VwcG9ydCwgJGNsaWVudEJhc2VkR2VvbG9jYXRpb25TdXBwb3J0LCAkZGF0YWJh
c2VTdXBwb3J0LCAkZGF0YWdyaWRTdXBwb3J0LCAkZGF0YWxpc3RTdXBwb3J0LAogICAgICRkb21T
dG9yYWdlU3VwcG9ydCwgJGV2ZW50c291cmNlU3VwcG9ydCwgJGZpbHRlcnNTdXBwb3J0LCAkZ2Vv
bG9jYXRpb25TdXBwb3J0LCAkaWNvbkRhdGFiYXNlU3VwcG9ydCwgJGltYWdlUmVzaXplclN1cHBv
cnQsICRpbmRleGVkRGF0YWJhc2VTdXBwb3J0LCAkaW5wdXRTcGVlY2hTdXBwb3J0LAogICAgICRq
YXZhU2NyaXB0RGVidWdnZXJTdXBwb3J0LCAkbWF0aG1sU3VwcG9ydCwgJG9mZmxpbmVXZWJBcHBs
aWNhdGlvblN1cHBvcnQsICRydWJ5U3VwcG9ydCwgJHN5c3RlbU1hbGxvY1N1cHBvcnQsICRzYW5k
Ym94U3VwcG9ydCwgJHNoYXJlZFdvcmtlcnNTdXBwb3J0LAogICAgICRzdmdTdXBwb3J0LCAkc3Zn
QW5pbWF0aW9uU3VwcG9ydCwgJHN2Z0FzSW1hZ2VTdXBwb3J0LCAkc3ZnRE9NT2JqQ0JpbmRpbmdz
U3VwcG9ydCwgJHN2Z0ZvbnRzU3VwcG9ydCwKQEAgLTY0LDYgKzY0LDkgQEAgbXkgKCR0aHJlZURD
YW52YXNTdXBwb3J0LCAkdGhyZWVEUmVuZGVyaQogICAgICRmaWxlUmVhZGVyU3VwcG9ydCwgJGZp
bGVXcml0ZXJTdXBwb3J0LCAkZGlyZWN0b3J5VXBsb2FkU3VwcG9ydCk7CiAKIG15IEBmZWF0dXJl
cyA9ICgKKyAgICB7IG9wdGlvbiA9PiAibGluay1wcmVmZXRjaCIsIGRlc2MgPT4gIlRvZ2dsZSBw
cmUgZmV0Y2hpbmcgc3VwcG9ydCIsCisgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9MSU5LX1BSRUZF
VENIIiwgZGVmYXVsdCA9PiAwLCB2YWx1ZSA9PiBcJGxpbmtQcmVmZXRjaFN1cHBvcnQgfSwKKwog
ICAgIHsgb3B0aW9uID0+ICIzZC1jYW52YXMiLCBkZXNjID0+ICJUb2dnbGUgM0QgY2FudmFzIHN1
cHBvcnQiLAogICAgICAgZGVmaW5lID0+ICJFTkFCTEVfM0RfQ0FOVkFTIiwgZGVmYXVsdCA9PiAo
aXNBcHBsZU1hY1dlYktpdCgpICYmICFpc1RpZ2VyKCkpLCB2YWx1ZSA9PiBcJHRocmVlRENhbnZh
c1N1cHBvcnQgfSwKIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNjI5NDQpCisrKyBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMC0wNy0wOSAgTGVv
biBDbGFya2UgIDxsZW9uY2xhcmtlQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgYWRkIHN1cHBvcnQgZm9yIGxpbmsgcHJlZmV0Y2hp
bmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2NTIK
KworICAgICAgICAqIGZhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0Y2gu
bGluazogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL1NraXBwZWQ6CisgICAgICAgICog
cGxhdGZvcm0vbWFjL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vcXQvU2tpcHBlZDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS93aW4vU2tpcHBlZDoKKwogMjAxMC0wNy0wOSAgTmlrb2xhcyBaaW1t
ZXJtYW5uICA8bnppbW1lcm1hbm5AcmltLmNvbT4KIAogICAgICAgICBOb3QgcmV2aWV3ZWQuCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0Y2gtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVu
dC9wcmVmZXRjaC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0Y2gtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDIgQEAKK3ByZWZldGNoLmxpbmsgaGFzIE1JTUUgdHlwZSBhcHBsaWNhdGlvbi9v
Y3RldC1zdHJlYW0KK1RoaXMgdGVzdCByZXF1aXJlcyBEdW1wUmVuZGVyVHJlZSB0byBzZWUgdGhl
IGxvZyBvZiB3aGF0IHJlc291cmNlcyBhcmUgbG9hZGVkLgpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLmh0bWwJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0Y2guaHRtbAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNCBAQAorPGJvZHk+Cis8c2NyaXB0PgoraWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRV
bnRpbERvbmUoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcFJlc291cmNlUmVzcG9uc2VNSU1FVHlwZXMoKTsKKyAg
ICBzZXRUaW1lb3V0KCJsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCkiLDUwKTsKK30K
Kzwvc2NyaXB0PgorPGh0bWw+Cis8cD5UaGlzIHRlc3QgcmVxdWlyZXMgRHVtcFJlbmRlclRyZWUg
dG8gc2VlIHRoZSBsb2cgb2Ygd2hhdCByZXNvdXJjZXMgYXJlIGxvYWRlZC4KKzxsaW5rIGhyZWY9
InByZWZldGNoLmxpbmsiIHJlbD0icHJlZmV0Y2giPgorPC9odG1sPgorCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0Y2gubGluawo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0Y2gubGluawkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRj
aC5saW5rCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBACitUaGlzIGlzIHRoZSBsaW5rIHRoYXQg
aXMgZmV0Y2hlZCBieSB0aGUgcHJlZmV0Y2gtb25sb2FkIHRlc3QKSW5kZXg6IExheW91dFRlc3Rz
L3BsYXRmb3JtL2d0ay9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3Jt
L2d0ay9Ta2lwcGVkCShyZXZpc2lvbiA2Mjk0NCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2d0
ay9Ta2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC01NzA1LDYgKzU3MDUsOSBAQCBmYXN0L2Zvcm1z
L3NsaWRlci10cmFuc2Zvcm1lZC5odG1sCiBmYXN0L2Zvcm1zL3NsaWRlci1tb3VzZS1ldmVudHMu
aHRtbAogZmFzdC9mb3Jtcy9zbGlkZXItem9vbWVkLmh0bWwKIAorIyBMaW5rIHByZWZldGNoIGlz
IGRpc2FibGVkIGJ5IGRlZmF1bHQKK2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC5o
dG1sCisKICMgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhZ2VQcm9wZXJ0eSBpcyBub3QgaW1wbGVt
ZW50ZWQgZm9yIEdUSyB5ZXQuCiBwcmludGluZy9wYWdlLXJ1bGUtc2VsZWN0aW9uLmh0bWwKIApJ
bmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQJKHJldmlzaW9uIDYyOTQ0KQorKysgTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTI3OCw2ICsyNzgs
OSBAQCBzdG9yYWdlL2luZGV4ZWRkYgogZmFzdC9kb20vRGV2aWNlT3JpZW50YXRpb24KIGZhc3Qv
ZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1kZXZpY2Utb3JpZW50YXRpb24uaHRtbAogCisj
IExpbmsgcHJlZmV0Y2ggaXMgZGlzYWJsZWQgYnkgZGVmYXVsdAorZmFzdC9kb20vSFRNTExpbmtF
bGVtZW50L3ByZWZldGNoLmh0bWwKKwogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9Mzk5MDgKIGZhc3QvZG9tL0dlb2xvY2F0aW9uL21heGltdW0tYWdlLmh0bWwKIApJ
bmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCShyZXZpc2lvbiA2Mjk0NCkKKysrIExheW91dFRl
c3RzL3BsYXRmb3JtL3F0L1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTU0MDYsNiArNTQwNiw5
IEBAIHN2Zy9XM0MtU1ZHLTEuMS9maWx0ZXJzLWxpZ2h0LTA0LWYuc3ZnCiAjID09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09ICMKIGZhc3QvZG9tL0dlb2xvY2F0aW9uL2NhbGxiYWNrLXRvLXJlbW90ZS1jb250
ZXh0Mi5odG1sCiAKKyMgTGluayBwcmVmZXRjaCBpcyBkaXNhYmxlZCBieSBkZWZhdWx0CitmYXN0
L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0Y2guaHRtbAorCiAjIEZhaWxpbmcgYWZ0ZXIgZW5h
YmxpbmcgSFRNTDUgcGFyc2VyIGluIHI2MTIzNAogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NDA2NjEKIGZhc3QvZW5jb2RpbmcvamFwYW5lc2UtZW5jb2RpbmctbWl4
Lmh0bWwKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCShyZXZpc2lvbiA2Mjk0NCkKKysr
IExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC05MDAs
NiArOTAwLDkgQEAgc3RvcmFnZS9pbmRleGVkZGIKIGZhc3QvZG9tL0RldmljZU9yaWVudGF0aW9u
CiBmYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMtZGV2aWNlLW9yaWVudGF0aW9uLmh0
bWwKIAorIyBMaW5rIHByZWZldGNoIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQKK2Zhc3QvZG9tL0hU
TUxMaW5rRWxlbWVudC9wcmVmZXRjaC5odG1sCisKICMgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBh
Z2VQcm9wZXJ0eSBpcyBub3QgaW1wbGVtZW50ZWQgZm9yIFdJTiB5ZXQuCiBwcmludGluZy9wYWdl
LXJ1bGUtc2VsZWN0aW9uLmh0bWwKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61349</attachid>
            <date>2010-07-13 03:04:23 -0700</date>
            <delta_ts>2010-07-13 03:10:58 -0700</delta_ts>
            <desc>Fix the issue Nate pointed out with accessing deleted objects.</desc>
            <filename>fix.patch</filename>
            <type>text/plain</type>
            <size>1800</size>
            <attacher name="Leon Clarke">leonclarke</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MzE4NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMTAtMDctMTMgIExlb24gQ2xhcmtlICA8bGVvbmNsYXJrZUBnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisJRG9uJ3Qg
YWNjZXNzIG9iamVjdHMgYWZ0ZXIgZGVsZXRpbmcgdGhlbSwgZm9sbG93aW5nCisJdGhlIGFkZGl0
aW9uIG9mIGxpbmsgcHJlZmV0Y2hpbmcuIEFsc28gcmVtb3ZlIGEgZm9yd2FyZCBkZWNsYXJhdGlv
bgorCW9mIHRoZSBub3ctbm9uZXhpc3RlbnQgQ2FjaGVkTGlua1ByZWZldGNoIGNsYXNzLgorCWh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjUyCisKKyAgICAgICAgTm8g
bmV3IHRlc3RzLiBDb3JyZWN0aW5nIGFzcGVjdHMgb2YgdGhlIHByZWZldGNoIGNoYW5nZSB0aGF0
IHNob3VsZG4ndAorCWhhdmUgYWZmZWN0ZWQgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIGh0
bWwvSFRNTExpbmtFbGVtZW50Lmg6CisgICAgICAgICogbG9hZGVyL2xvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMb2FkZXI6Okhvc3Q6OmNhbmNlbFBlbmRpbmdSZXF1ZXN0cyk6CisKIDIw
MTAtMDctMTIgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IEFkYW0gQmFydGguCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCShyZXZpc2lvbiA2
MzA4NykKKysrIFdlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMzEsNyArMzEsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNoZWRDU1NT
dHlsZVNoZWV0OwotY2xhc3MgQ2FjaGVkTGlua1ByZWZldGNoOwogY2xhc3MgS1VSTDsKIAogY2xh
c3MgSFRNTExpbmtFbGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50LCBwdWJsaWMgQ2FjaGVkUmVz
b3VyY2VDbGllbnQgewpJbmRleDogV2ViQ29yZS9sb2FkZXIvbG9hZGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2xvYWRlci9sb2FkZXIuY3BwCShyZXZpc2lvbiA2MzA4NykKKysrIFdlYkNv
cmUvbG9hZGVyL2xvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5MCw4ICs1OTAsOCBAQCB2
b2lkIExvYWRlcjo6SG9zdDo6Y2FuY2VsUGVuZGluZ1JlcXVlc3RzCiAgICAgICAgIFJlcXVlc3Qq
IHJlcXVlc3QgPSAqaXQ7CiAgICAgICAgIGlmIChyZXF1ZXN0LT5kb2NMb2FkZXIoKSA9PSBkb2NM
b2FkZXIpIHsKICAgICAgICAgICAgIGNhY2hlKCktPnJlbW92ZShyZXF1ZXN0LT5jYWNoZWRSZXNv
dXJjZSgpKTsKLSAgICAgICAgICAgIGRlbGV0ZSByZXF1ZXN0OwogICAgICAgICAgICAgZG9jTG9h
ZGVyLT5kZWNyZW1lbnRSZXF1ZXN0Q291bnQocmVxdWVzdC0+Y2FjaGVkUmVzb3VyY2UoKSk7Cisg
ICAgICAgICAgICBkZWxldGUgcmVxdWVzdDsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBy
ZW1haW5pbmcuYXBwZW5kKHJlcXVlc3QpOwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61350</attachid>
            <date>2010-07-13 03:10:58 -0700</date>
            <delta_ts>2010-08-11 03:48:46 -0700</delta_ts>
            <desc>And again without tabs in the changelog</desc>
            <filename>fix1.patch</filename>
            <type>text/plain</type>
            <size>1835</size>
            <attacher name="Leon Clarke">leonclarke</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MzE4NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMTAtMDctMTMgIExlb24gQ2xhcmtlICA8bGVvbmNsYXJrZUBnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IERvbid0IGFjY2VzcyBvYmplY3RzIGFmdGVyIGRlbGV0aW5nIHRoZW0sIGZvbGxvd2luZworICAg
ICAgICB0aGUgYWRkaXRpb24gb2YgbGluayBwcmVmZXRjaGluZy4gQWxzbyByZW1vdmUgYSBmb3J3
YXJkIGRlY2xhcmF0aW9uCisgICAgICAgIG9mIHRoZSBub3ctbm9uZXhpc3RlbnQgQ2FjaGVkTGlu
a1ByZWZldGNoIGNsYXNzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MzY1MgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gQ29ycmVjdGluZyBhc3BlY3Rz
IG9mIHRoZSBwcmVmZXRjaCBjaGFuZ2UgdGhhdCBzaG91bGRuJ3QKKyAgICAgICAgaGF2ZSBhZmZl
Y3RlZCBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogaHRtbC9IVE1MTGlua0VsZW1lbnQuaDoK
KyAgICAgICAgKiBsb2FkZXIvbG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRlcjo6
SG9zdDo6Y2FuY2VsUGVuZGluZ1JlcXVlc3RzKToKKwogMjAxMC0wNy0xMiAgRXJpYyBTZWlkZWwg
IDxlcmljQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KSW5k
ZXg6IFdlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2h0bWwvSFRNTExpbmtFbGVtZW50LmgJKHJldmlzaW9uIDYzMDg3KQorKysgV2ViQ29yZS9odG1s
L0hUTUxMaW5rRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw2IEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENhY2hlZENTU1N0eWxlU2hlZXQ7Ci1jbGFzcyBDYWNo
ZWRMaW5rUHJlZmV0Y2g7CiBjbGFzcyBLVVJMOwogCiBjbGFzcyBIVE1MTGlua0VsZW1lbnQgOiBw
dWJsaWMgSFRNTEVsZW1lbnQsIHB1YmxpYyBDYWNoZWRSZXNvdXJjZUNsaWVudCB7CkluZGV4OiBX
ZWJDb3JlL2xvYWRlci9sb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL2xv
YWRlci5jcHAJKHJldmlzaW9uIDYzMDg3KQorKysgV2ViQ29yZS9sb2FkZXIvbG9hZGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTkwLDggKzU5MCw4IEBAIHZvaWQgTG9hZGVyOjpIb3N0OjpjYW5j
ZWxQZW5kaW5nUmVxdWVzdHMKICAgICAgICAgUmVxdWVzdCogcmVxdWVzdCA9ICppdDsKICAgICAg
ICAgaWYgKHJlcXVlc3QtPmRvY0xvYWRlcigpID09IGRvY0xvYWRlcikgewogICAgICAgICAgICAg
Y2FjaGUoKS0+cmVtb3ZlKHJlcXVlc3QtPmNhY2hlZFJlc291cmNlKCkpOwotICAgICAgICAgICAg
ZGVsZXRlIHJlcXVlc3Q7CiAgICAgICAgICAgICBkb2NMb2FkZXItPmRlY3JlbWVudFJlcXVlc3RD
b3VudChyZXF1ZXN0LT5jYWNoZWRSZXNvdXJjZSgpKTsKKyAgICAgICAgICAgIGRlbGV0ZSByZXF1
ZXN0OwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHJlbWFpbmluZy5hcHBlbmQocmVxdWVz
dCk7CiAgICAgfQo=
</data>
<flag name="review"
          id="49365"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
    <flag name="commit-queue"
          id="52545"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>