<?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>105667</bug_id>
          
          <creation_ts>2012-12-21 15:55:33 -0800</creation_ts>
          <short_desc>Enable reuse of cached main resources</short_desc>
          <delta_ts>2013-02-07 15:26:05 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>107235</dependson>
          <blocked>107962</blocked>
    
    <blocked>108380</blocked>
    
    <blocked>108402</blocked>
    
    <blocked>108626</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Nate Chapin">japhet</reporter>
          <assigned_to name="Nate Chapin">japhet</assigned_to>
          <cc>abarth</cc>
    
    <cc>alex</cc>
    
    <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>dfarler</cc>
    
    <cc>dglazkov</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>koivisto</cc>
    
    <cc>leviw</cc>
    
    <cc>michaeln</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>philn</cc>
    
    <cc>rniwa</cc>
    
    <cc>skyul</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>796516</commentid>
    <comment_count>0</comment_count>
      <attachid>180566</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2012-12-21 15:55:33 -0800</bug_when>
    <thetext>Created attachment 180566
Work in Progress

With the re-plumbing to route main resource loads through the cache landed (bug 49246), the next task is to actually make use of the resources we are caching.

The attached patch is a first attempt.  It appears to work pretty well, except that it does not play nicely with appcache.  It&apos;s not obvious to me how much work will be required to support the intersection of appcache and memory cache hits properly, but it&apos;s clearly not trivial.  I&apos;ll be trying to iron those details out after the holidays.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796580</commentid>
    <comment_count>1</comment_count>
      <attachid>180566</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-21 18:41:19 -0800</bug_when>
    <thetext>Comment on attachment 180566
Work in Progress

Attachment 180566 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15454595

New failing tests:
http/tests/appcache/xhr-foreign-resource.html
http/tests/appcache/foreign-fallback.html
http/tests/appcache/remove-cache.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796607</commentid>
    <comment_count>2</comment_count>
      <attachid>180566</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-12-21 21:33:29 -0800</bug_when>
    <thetext>Comment on attachment 180566
Work in Progress

Attachment 180566 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15446734

New failing tests:
http/tests/inspector/resource-har-pages.html
http/tests/appcache/foreign-fallback.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800678</commentid>
    <comment_count>3</comment_count>
      <attachid>181392</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2013-01-04 15:22:09 -0800</bug_when>
    <thetext>Created attachment 181392
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800760</commentid>
    <comment_count>4</comment_count>
      <attachid>181392</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-04 17:03:27 -0800</bug_when>
    <thetext>Comment on attachment 181392
patch

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

The non-AppCache parts look reasonable to me.  I&apos;m not very confident about the AppCache parts.  Maybe we should have someone who knows more about AppCache look at them?

&gt; Source/WebCore/dom/Document.cpp:841
&gt; +    return documentElement() &amp;&amp; documentElement()-&gt;hasTagName(htmlTag) &amp;&amp; !documentElement()-&gt;getAttribute(manifestAttr).isEmpty();

getAttribute -&gt; hasAttribute?

&gt; Source/WebCore/loader/cache/CachedRawResource.cpp:91
&gt; +    for (size_t i = 0; i &lt; m_redirectChainRequests.size(); i++) {

Can we assert that m_redirectChainRequests doesn&apos;t change while we&apos;re iterating it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800763</commentid>
    <comment_count>5</comment_count>
      <attachid>181392</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-04 17:10:31 -0800</bug_when>
    <thetext>Comment on attachment 181392
patch

Attachment 181392 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15700350

New failing tests:
http/tests/appcache/offline-access.html
http/tests/appcache/main-resource-hash.html
http/tests/inspector/appcache/appcache-iframe-manifests.html
http/tests/appcache/reload.html
http/tests/inspector/appcache/appcache-swap.html
http/tests/appcache/top-frame-4.html
http/tests/appcache/cyrillic-uri.html
http/tests/appcache/crash-when-navigating-away-then-back.html
http/tests/appcache/local-content.html
http/tests/appcache/top-frame-3.html
http/tests/appcache/remove-cache.html
http/tests/appcache/xhr-foreign-resource.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801520</commentid>
    <comment_count>6</comment_count>
      <attachid>181542</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2013-01-07 12:01:08 -0800</bug_when>
    <thetext>Created attachment 181542
Address abarth&apos;s comments, fix mac crashes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801635</commentid>
    <comment_count>7</comment_count>
      <attachid>181542</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2013-01-07 14:07:31 -0800</bug_when>
    <thetext>Comment on attachment 181542
Address abarth&apos;s comments, fix mac crashes

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

&gt; Source/WebCore/loader/MainResourceLoader.cpp:383
&gt; +    if (r.appCacheID())

This much makes sense to me, if the main resource was loaded from the appcache, don&apos;t memcache it. How is the equivalent achieved for the &apos;native&apos; webcore case?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801640</commentid>
    <comment_count>8</comment_count>
      <attachid>181542</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2013-01-07 14:09:22 -0800</bug_when>
    <thetext>Comment on attachment 181542
Address abarth&apos;s comments, fix mac crashes

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

&gt;&gt; Source/WebCore/loader/MainResourceLoader.cpp:383
&gt;&gt; +    if (r.appCacheID())
&gt; 
&gt; This much makes sense to me, if the main resource was loaded from the appcache, don&apos;t memcache it. How is the equivalent achieved for the &apos;native&apos; webcore case?

maybeLoadFallbackForMainResponse() will return true if a load from appcache has begun.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801703</commentid>
    <comment_count>9</comment_count>
      <attachid>181542</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-07 15:09:32 -0800</bug_when>
    <thetext>Comment on attachment 181542
Address abarth&apos;s comments, fix mac crashes

This patch LGTM.  The only part I&apos;m unsure about is the AppCache integration, but michealn seems happy with that part.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801729</commentid>
    <comment_count>10</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2013-01-07 15:32:40 -0800</bug_when>
    <thetext>&gt; &gt;&gt; Source/WebCore/loader/MainResourceLoader.cpp:383
&gt; &gt;&gt; +    if (r.appCacheID())
&gt; &gt; 
&gt; &gt; This much makes sense to me, if the main resource was loaded from the appcache, don&apos;t memcache it. How is the equivalent achieved for the &apos;native&apos; webcore case?
&gt; 
&gt; maybeLoadFallbackForMainResponse() will return true if a load from appcache has begun.

I mean in these cases that occur prior to the &apos;fallback&apos; case.
  void maybeLoadMainResource(ResourceRequest&amp;, SubstituteData&amp;);
  void maybeLoadMainResourceForRedirect(ResourceRequest&amp;, SubstituteData&amp;);

In the chromium case, the condition you&apos;ve added covers main resources loaded in all of the above situations. What provisions are made to prevent the SubstitueData provided these other methods from being added to the memcache. (It might be that SubstitueData never goes into the memcache, but idk about that?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801746</commentid>
    <comment_count>11</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2013-01-07 15:43:41 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; &gt; &gt;&gt; Source/WebCore/loader/MainResourceLoader.cpp:383
&gt; &gt; &gt;&gt; +    if (r.appCacheID())
&gt; &gt; &gt; 
&gt; &gt; &gt; This much makes sense to me, if the main resource was loaded from the appcache, don&apos;t memcache it. How is the equivalent achieved for the &apos;native&apos; webcore case?
&gt; &gt; 
&gt; &gt; maybeLoadFallbackForMainResponse() will return true if a load from appcache has begun.
&gt; 
&gt; I mean in these cases that occur prior to the &apos;fallback&apos; case.
&gt;   void maybeLoadMainResource(ResourceRequest&amp;, SubstituteData&amp;);

maybeLoadMainResource() will cause MainResourceLoader::m_substituteData to be valid if it triggers a load from appcache. In this case, we will never request a CachedResource for this load.

&gt;   void maybeLoadMainResourceForRedirect(ResourceRequest&amp;, SubstituteData&amp;);
&gt; 

maybeLoadMainResourceForRedirect() will cause MainResourceLoader::m_substituteData to be valid in continueAfterNavigationPolicy(), where we will cancel the CachedResource load if the SubstituteData is valid.  A cancelled CachedResource will not be reused.

Similarly, for maybeLoadFallbackForMainError(), the CachedResource will show that an error occurred, and while the CachedResource will remain in the MemoryCache, it will not be reused due to the error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801812</commentid>
    <comment_count>12</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2013-01-07 16:38:36 -0800</bug_when>
    <thetext>&gt; &gt; I mean in these cases that occur prior to the &apos;fallback&apos; case.
&gt; &gt;   void maybeLoadMainResource(ResourceRequest&amp;, SubstituteData&amp;);
&gt; 
&gt; maybeLoadMainResource() will cause MainResourceLoader::m_substituteData to be valid if it triggers a load from appcache. In this case, we will never request a CachedResource for this load.
&gt; 
&gt; &gt;   void maybeLoadMainResourceForRedirect(ResourceRequest&amp;, SubstituteData&amp;);
&gt; &gt; 
&gt; 
&gt; maybeLoadMainResourceForRedirect() will cause MainResourceLoader::m_substituteData to be valid in continueAfterNavigationPolicy(), where we will cancel the CachedResource load if the SubstituteData is valid.  A cancelled CachedResource will not be reused.
&gt; 
&gt; Similarly, for maybeLoadFallbackForMainError(), the CachedResource will show that an error occurred, and while the CachedResource will remain in the MemoryCache, it will not be reused due to the error.

Yup, thnx for the explanation.

Also, looks like SubstituteData is never added to the memcache... so in the &apos;native&apos; case, an appcache retrieved resource (always in the form of SubstituteData) is never put there in any circumstance (main vs subresource / fallback vs not).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802359</commentid>
    <comment_count>13</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-01-08 10:39:38 -0800</bug_when>
    <thetext>Looks good though I have no clue if the app cache stuff and API delegates get synthesized correctly.

Is there a way to write a test that shows this working? Internals function to clear networking level cache or something?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802520</commentid>
    <comment_count>14</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2013-01-08 12:41:15 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; Looks good though I have no clue if the app cache stuff and API delegates get synthesized correctly.
&gt; 
&gt; Is there a way to write a test that shows this working? Internals function to clear networking level cache or something?

There are a bunch of tests that hit the cache because the load multiple iframes with the same src. There are quite a few, including the 4 tests that had expectations change in this patch.

I could also look into a test that explicitly covers this case, I suppose, though that would probably involve a php script that works exactly once, or perhaps Internals callbacks for cache hits.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804781</commentid>
    <comment_count>15</comment_count>
      <attachid>182218</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2013-01-10 15:29:16 -0800</bug_when>
    <thetext>Created attachment 182218
+ test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804802</commentid>
    <comment_count>16</comment_count>
      <attachid>182218</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-10 16:01:05 -0800</bug_when>
    <thetext>Comment on attachment 182218
+ test

Attachment 182218 did not pass win-ews (win):
Output: http://queues.webkit.org/results/15801217</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804837</commentid>
    <comment_count>17</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-01-10 17:36:42 -0800</bug_when>
    <thetext>It makes me a bit uneasy that a significant change like this is being made while we still have a lot of leaks, indicating architectural issues with code in trunk (see bug 106137).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805304</commentid>
    <comment_count>18</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2013-01-11 09:06:49 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; It makes me a bit uneasy that a significant change like this is being made while we still have a lot of leaks, indicating architectural issues with code in trunk (see bug 106137).

Is this a general concern, or a specific concern that http://trac.webkit.org/changeset/137607 caused some of those leaks?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805325</commentid>
    <comment_count>19</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-01-11 09:31:17 -0800</bug_when>
    <thetext>I don&apos;t know if r137607 specifically is to blame, but the loader appears to not be in a good shape now. Leaks are a particularly bad thing to overlook during major refactoring, because leaking can cover up lifetime issues that will turn into crashes once leaks get fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805494</commentid>
    <comment_count>20</comment_count>
      <attachid>182218</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-01-11 12:05:40 -0800</bug_when>
    <thetext>Comment on attachment 182218
+ test

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

review- because of the bad cast I found

&gt; Source/WebCore/loader/FrameLoader.cpp:2890
&gt; +    // Main resource delegate messages are synthesized in the same way as main resource SubstituteData loads.

For someone not as expert, this comment is a little oblique, like haiku. I would say something more like this:

    // Main resource delegate messages are synthesized, so we must not send them here.

Better to be specific about the function or class that does the synthesizing.

I’m not sure what the relevance of the SubstituteData comparison is, because this function doesn’t have code to handle SubstituteData as a special case. It’s sort of a riddle to compare the two here without explaining why that comparison is relevant to this code.

&gt; Source/WebCore/loader/MainResourceLoader.cpp:393
&gt; +    bool loadFallback = documentLoader()-&gt;applicationCacheHost()-&gt;maybeLoadFallbackForMainResponse(request(), r);

This should be named didLoadFallback. A variable named loadFallback would hold “a fallback”, not a boolean that indicates whether fallback occurred.

&gt; Source/WebCore/loader/MainResourceLoader.cpp:397
&gt; +    if (r.appCacheID())
&gt; +        shouldRemoveResourceFromCache = true;

Seems like this needs a why comment.

&gt; Source/WebCore/loader/MainResourceLoader.cpp:401
&gt; +    // The memory cache doesn&apos;t understand the application cache or its caching rules. So if a main resource is served
&gt; +    // from the application cache, ensure we don&apos;t save the result for future use.

Is this comment specific to the Chromium code, or is “did load fallback” also an implementation detail of the application cache?

&gt; Source/WebCore/loader/MainResourceLoader.cpp:573
&gt; +    // If the document specified an application cache manifest, it&apos;s risky to store in the memory cache
&gt; +    // and deny the appcache the chance to intercept it in the future, so remove from the memory cache.

Great comment, except for the use of the word “risky”. It seems this is either correct or incorrect, not “risky”. We don’t want to treat our software as if it’s a game of chance.

&gt; Source/WebCore/loader/MainResourceLoader.cpp:705
&gt; +    if (!loader()) {
&gt; +        m_substituteDataLoadIdentifier = m_documentLoader-&gt;frame()-&gt;page()-&gt;progress()-&gt;createUniqueIdentifier();
&gt; +        frameLoader()-&gt;notifier()-&gt;assignIdentifierToInitialRequest(m_substituteDataLoadIdentifier, documentLoader(), request);
&gt; +        frameLoader()-&gt;notifier()-&gt;dispatchWillSendRequest(documentLoader(), m_substituteDataLoadIdentifier, request, ResourceResponse());
&gt; +    }

Very enigmatic code. Why does not having a loader indicate we are loading substitute data? Seems like a why comment is needed.

&gt; Source/WebCore/loader/MainResourceLoader.cpp:714
&gt;      if (loader())
&gt;          request = loader()-&gt;originalRequest();
&gt; +    if (equalIgnoringFragmentIdentifier(initialRequest.url(), request.url()))
&gt; +        request.setURL(initialRequest.url());

The comment talks about a task, but then there are two sets of code that both seem to be trying to accomplish the task in two different ways. Why do we have to do both things? Is there a way to make that obvious, perhaps with more comment?

&gt; Source/WebCore/loader/cache/CachedRawResource.h:72
&gt; +    Vector&lt;ResourceRequest&gt; m_redirectChainRequests;
&gt; +    Vector&lt;ResourceResponse&gt; m_redirectChainResponses;

Vectors have quite a bit of overhead. I am worried this could have noticeable memory impact; maybe I’m mistaken. Is there a way we can make this more efficient? For example, we could have a Vector of structures containing request/response pairs instead of two vectors, which would save half of the overhead. Generally speaking, I’m worried about storing quite a bit more data here.

But maybe CachedRawResource isn’t used as often as I think it is?

&gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:544
&gt; +    if ((existingResource-&gt;type() == CachedResource::MainResource || existingResource-&gt;type() == CachedResource::RawResource) &amp;&amp; !static_cast&lt;CachedRawResource*&gt;(existingResource)-&gt;canReuse(request))
&gt;          return Reload;

This casts existingResource to CachedRawResource even when the type is CachedResource::MainResource. Bad cast!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805498</commentid>
    <comment_count>21</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2013-01-11 12:09:29 -0800</bug_when>
    <thetext>I&apos;ll look more carefully at the rest of the comments this afternoon.

(In reply to comment #20)
&gt; (From update of attachment 182218 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=182218&amp;action=review
&gt; 
&gt; 
&gt; &gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:544
&gt; &gt; +    if ((existingResource-&gt;type() == CachedResource::MainResource || existingResource-&gt;type() == CachedResource::RawResource) &amp;&amp; !static_cast&lt;CachedRawResource*&gt;(existingResource)-&gt;canReuse(request))
&gt; &gt;          return Reload;
&gt; 
&gt; This casts existingResource to CachedRawResource even when the type is CachedResource::MainResource. Bad cast!

This is bad naming, not a bad cast. CachedResource::MainResources are loaded via CachedRawResource.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806500</commentid>
    <comment_count>22</comment_count>
      <attachid>182606</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2013-01-14 11:59:25 -0800</bug_when>
    <thetext>Created attachment 182606
Address darin&apos;s comments

* Added some missing symbols for win and gtk.
* Made CachedRawResource::canReuse() virtual with a simple version on CachedResource to make the casting safer.
* Renamed m_substituteDataLoadIdentifier to better match its usage
* Reworked comments and reorder some code to try to make things clearer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806579</commentid>
    <comment_count>23</comment_count>
      <attachid>182606</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-01-14 13:40:24 -0800</bug_when>
    <thetext>Comment on attachment 182606
Address darin&apos;s comments

Attachment 182606 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/15873583</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806581</commentid>
    <comment_count>24</comment_count>
      <attachid>182621</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2013-01-14 13:40:36 -0800</bug_when>
    <thetext>Created attachment 182621
Fix symbols.filter</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806603</commentid>
    <comment_count>25</comment_count>
      <attachid>182625</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2013-01-14 14:03:55 -0800</bug_when>
    <thetext>Created attachment 182625
Fix symbols.filter again</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806701</commentid>
    <comment_count>26</comment_count>
      <attachid>182625</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-01-14 15:52:56 -0800</bug_when>
    <thetext>Comment on attachment 182625
Fix symbols.filter again

Nice, r=me!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806730</commentid>
    <comment_count>27</comment_count>
      <attachid>182625</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-14 16:11:34 -0800</bug_when>
    <thetext>Comment on attachment 182625
Fix symbols.filter again

Clearing flags on attachment: 182625

Committed r139683: &lt;http://trac.webkit.org/changeset/139683&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806731</commentid>
    <comment_count>28</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-14 16:11:39 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806811</commentid>
    <comment_count>29</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2013-01-14 17:25:14 -0800</bug_when>
    <thetext>Rolled out in r139683. This broke a bunch of webkit_unit_tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806813</commentid>
    <comment_count>30</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2013-01-14 17:27:00 -0800</bug_when>
    <thetext>Here&apos;s an example hideously-long url with logs:

http://test-results.appspot.com/dashboards/flakiness_dashboard.html#group=@ToT - chromium.org&amp;testType=webkit_unit_tests&amp;tests=WebViewTest.SetCompositionFromExistingText,WebPageNewSerializeTest.PageWithFrames,WebFrameTest.ContentText,WebViewTest.ExtendSelectionAndDelete,WebPageNewSerializeTest.BlankFrames,WebPageSerializerTest.MultipleFrames,WebFrameTest.FrameForEnteredContext</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806818</commentid>
    <comment_count>31</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2013-01-14 17:28:34 -0800</bug_when>
    <thetext>(In reply to comment #30)
&gt; Here&apos;s an example hideously-long url with logs:
&gt; 
&gt; http://test-results.appspot.com/dashboards/flakiness_dashboard.html#group=@ToT - chromium.org&amp;testType=webkit_unit_tests&amp;tests=WebViewTest.SetCompositionFromExistingText,WebPageNewSerializeTest.PageWithFrames,WebFrameTest.ContentText,WebViewTest.ExtendSelectionAndDelete,WebPageNewSerializeTest.BlankFrames,WebPageSerializerTest.MultipleFrames,WebFrameTest.FrameForEnteredContext

For a webkit.org failure, see 
http://build.webkit.org/builders/Chromium%20Mac%20Release%20%28Tests%29/builds/31711/steps/webkit-unit-tests/logs/stdio

In other news, it appears chromium ews bots don&apos;t correct turn red when webkit_unit_tests fail? Will be investigating more carefully tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807676</commentid>
    <comment_count>32</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2013-01-15 14:15:08 -0800</bug_when>
    <thetext>(In reply to comment #31)
&gt; (In reply to comment #30)
&gt; &gt; Here&apos;s an example hideously-long url with logs:
&gt; &gt; 
&gt; &gt; http://test-results.appspot.com/dashboards/flakiness_dashboard.html#group=@ToT - chromium.org&amp;testType=webkit_unit_tests&amp;tests=WebViewTest.SetCompositionFromExistingText,WebPageNewSerializeTest.PageWithFrames,WebFrameTest.ContentText,WebViewTest.ExtendSelectionAndDelete,WebPageNewSerializeTest.BlankFrames,WebPageSerializerTest.MultipleFrames,WebFrameTest.FrameForEnteredContext
&gt; 
&gt; For a webkit.org failure, see 
&gt; http://build.webkit.org/builders/Chromium%20Mac%20Release%20%28Tests%29/builds/31711/steps/webkit-unit-tests/logs/stdio
&gt; 
&gt; In other news, it appears chromium ews bots don&apos;t correct turn red when webkit_unit_tests fail? Will be investigating more carefully tomorrow.

It appears that these tests failed because of gaps in chromium&apos;s test infrastructure, which lives in chromium.org.

The good news is that we should be able to just reland https://bugs.webkit.org/attachment.cgi?id=182625&amp;action=review as it stands.

The bad news is that it will need to wait for a chromium DEPS roll. The review for the chromium patch is at https://codereview.chromium.org/11940002/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807681</commentid>
    <comment_count>33</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2013-01-15 14:17:42 -0800</bug_when>
    <thetext>Thanks for working to figure this out!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809468</commentid>
    <comment_count>34</comment_count>
      <attachid>182625</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2013-01-17 10:42:26 -0800</bug_when>
    <thetext>Comment on attachment 182625
Fix symbols.filter again

Chromium test infrastructure fixed in http://src.chromium.org/viewvc/chrome?view=rev&amp;revision=177276, rolled into chromium DEPS in http://trac.webkit.org/changeset/139956

I&apos;ve tested everything I can locally, and I think this is ready to go back into the commit queue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809477</commentid>
    <comment_count>35</comment_count>
      <attachid>182625</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-17 10:47:03 -0800</bug_when>
    <thetext>Comment on attachment 182625
Fix symbols.filter again

Rejecting attachment 182625 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue

/mnt/git/webkit-commit-queue/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: http://queues.webkit.org/results/15945020</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809516</commentid>
    <comment_count>36</comment_count>
      <attachid>182625</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-17 11:10:42 -0800</bug_when>
    <thetext>Comment on attachment 182625
Fix symbols.filter again

Clearing flags on attachment: 182625

Committed r140005: &lt;http://trac.webkit.org/changeset/140005&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809517</commentid>
    <comment_count>37</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-17 11:10:48 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810302</commentid>
    <comment_count>38</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-18 00:11:22 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 107235</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816790</commentid>
    <comment_count>39</comment_count>
      <attachid>184782</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2013-01-25 11:33:59 -0800</bug_when>
    <thetext>Created attachment 184782
Without caching on chromium

The diffs from the previous version should be confined to disabling caching for chromium in CachedResourceLoader::requestResource() and chromium&apos;s TestExpectations.

There are some open questions as to how main resource caching changes chromium&apos;s process selection strategy for navigations, and it seems prudent to allow some extra time to research those concerns. See https://bugs.webkit.org/show_bug.cgi?id=107962.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817863</commentid>
    <comment_count>40</comment_count>
      <attachid>185004</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2013-01-28 10:40:54 -0800</bug_when>
    <thetext>Created attachment 185004
Merged to trunk</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817923</commentid>
    <comment_count>41</comment_count>
      <attachid>185004</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-28 11:40:41 -0800</bug_when>
    <thetext>Comment on attachment 185004
Merged to trunk

ok.  I think it&apos;s fine to take an incremental approach here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817954</commentid>
    <comment_count>42</comment_count>
      <attachid>185004</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-28 12:09:12 -0800</bug_when>
    <thetext>Comment on attachment 185004
Merged to trunk

Attachment 185004 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16182067

New failing tests:
http/tests/cache/cached-main-resource.html
http/tests/w3c/webperf/submission/resource-timing/html/test_resource_script_types.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818032</commentid>
    <comment_count>43</comment_count>
      <attachid>185004</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-28 13:17:03 -0800</bug_when>
    <thetext>Comment on attachment 185004
Merged to trunk

Attachment 185004 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16154717

New failing tests:
http/tests/cache/cached-main-resource.html
http/tests/w3c/webperf/submission/resource-timing/html/test_resource_script_types.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819074</commentid>
    <comment_count>44</comment_count>
      <attachid>185260</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2013-01-29 10:31:23 -0800</bug_when>
    <thetext>Created attachment 185260
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819174</commentid>
    <comment_count>45</comment_count>
      <attachid>185260</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-29 12:07:51 -0800</bug_when>
    <thetext>Comment on attachment 185260
Patch for landing

Clearing flags on attachment: 185260

Committed r141136: &lt;http://trac.webkit.org/changeset/141136&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819175</commentid>
    <comment_count>46</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-29 12:07:59 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820503</commentid>
    <comment_count>47</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-01-30 13:46:32 -0800</bug_when>
    <thetext>It appears that this patch broke Apple&apos;s  internal performance test suite. Pages are no longer loading property after a while :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820575</commentid>
    <comment_count>48</comment_count>
    <who name="Alexander Romanovich">alex</who>
    <bug_when>2013-01-30 14:31:12 -0800</bug_when>
    <thetext>Not sure this is very helpful, but I can attest to that anecdotally. Since this landed, every once in a blue moon a tab I have left open will refuse to fetch the latest content when I refresh it. It gives a browser cached result every time. I have to restart WebKit, causing the tab to reload with the right response from the remote server. It happens very infrequently after being left open for a while.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820596</commentid>
    <comment_count>49</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2013-01-30 14:39:34 -0800</bug_when>
    <thetext>(In reply to comment #48)
&gt; Not sure this is very helpful, but I can attest to that anecdotally. Since this landed, every once in a blue moon a tab I have left open will refuse to fetch the latest content when I refresh it. It gives a browser cached result every time. I have to restart WebKit, causing the tab to reload with the right response from the remote server. It happens very infrequently after being left open for a while.

If you can find a reproducible case (or at least the request/response headers that triggered the problem), I&apos;d be interested to look at it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820758</commentid>
    <comment_count>50</comment_count>
    <who name="David Farler">dfarler</who>
    <bug_when>2013-01-30 16:15:35 -0800</bug_when>
    <thetext>It looks like r141136 might be causing inspector/debugger/debugger-reload-on-pause.html to crash on Apple Lion Debug WK1 Tests.

First seen in build #6316.

http://build.webkit.org/results/Apple%20Lion%20Debug%20WK1%20(Tests)/r141136%20(6316)/results.html
http://build.webkit.org/results/Apple%20Lion%20Debug%20WK1%20(Tests)/r141136%20(6316)/inspector/debugger/debugger-reload-on-pause-crash-log.txt


http://build.webkit.org/results/Apple%20Lion%20Debug%20WK1%20(Tests)/r141305%20(6354)/results.html
http://build.webkit.org/results/Apple%20Lion%20Debug%20WK1%20(Tests)/r141305%20(6354)/inspector/debugger/debugger-reload-on-pause-crash-log.txt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820828</commentid>
    <comment_count>51</comment_count>
    <who name="Alexander Romanovich">alex</who>
    <bug_when>2013-01-30 16:59:49 -0800</bug_when>
    <thetext>Seems like maybe sticky caching behavior can be reproduced with a simple PHP script? The following url gives a different timestamp with every refresh on shipping Safari as well as Chrome and FF. But in WebKit it remains the same through refreshes/shift-refreshes.

http://www.whitewhale.net/webkit/memory_cache/

Also note that I asked about the status of bug 17998 today, but I see you recently filed 108402 about 304s on main resource requests, so maybe that old bug can be closed as a duplicate.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180566</attachid>
            <date>2012-12-21 15:55:33 -0800</date>
            <delta_ts>2013-01-04 15:22:09 -0800</delta_ts>
            <desc>Work in Progress</desc>
            <filename>cmr4.txt</filename>
            <type>text/plain</type>
            <size>14444</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwCShy
ZXZpc2lvbiAxMzgzOTQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWFpblJlc291cmNlTG9h
ZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjU4LDYgKzY1OCwxMiBAQAogICAgICAgICBkb2N1
bWVudExvYWRlcigpLT5zZXRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCgpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KKworICAgIGlmICghbG9hZGVyKCkpIHsKKyAgICAgICAgbV9zdWJzdGl0dXRl
RGF0YUxvYWRJZGVudGlmaWVyID0gbV9kb2N1bWVudExvYWRlci0+ZnJhbWUoKS0+cGFnZSgpLT5w
cm9ncmVzcygpLT5jcmVhdGVVbmlxdWVJZGVudGlmaWVyKCk7CisgICAgICAgIGZyYW1lTG9hZGVy
KCktPm5vdGlmaWVyKCktPmFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KG1fc3Vic3Rp
dHV0ZURhdGFMb2FkSWRlbnRpZmllciwgZG9jdW1lbnRMb2FkZXIoKSwgcmVxdWVzdCk7CisgICAg
ICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCktPmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KGRv
Y3VtZW50TG9hZGVyKCksIG1fc3Vic3RpdHV0ZURhdGFMb2FkSWRlbnRpZmllciwgcmVxdWVzdCwg
UmVzb3VyY2VSZXNwb25zZSgpKTsKKyAgICB9CiAgICAgbV9yZXNvdXJjZS0+YWRkQ2xpZW50KHRo
aXMpOwogCiAgICAgLy8gV2UgbmVlZCB0byB3YWl0IHVudGlsIGFmdGVyIHJlcXVlc3RNYWluUmVz
b3VyY2UoKSBpcyBjYWxsZWQgdG8gc2V0UmVxdWVzdCgpLCBiZWNhdXNlIHRoZXJlIGFyZSBhIGJ1
bmNoIG9mIGhlYWRlcnMgc2V0IHdoZW4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcAkocmV2aXNpb24gMTM4Mzk0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg3OCw2ICsyODc4LDkgQEAKICAgICBpZiAo
IXJlc291cmNlLT5zaG91bGRTZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCkgfHwgbV9kb2N1bWVu
dExvYWRlci0+aGF2ZVRvbGRDbGllbnRBYm91dExvYWQocmVzb3VyY2UtPnVybCgpKSkKICAgICAg
ICAgcmV0dXJuOwogCisgICAgaWYgKHJlc291cmNlLT50eXBlKCkgPT0gQ2FjaGVkUmVzb3VyY2U6
Ok1haW5SZXNvdXJjZSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKCFwYWdlLT5hcmVNZW1v
cnlDYWNoZUNsaWVudENhbGxzRW5hYmxlZCgpKSB7CiAgICAgICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKHBhZ2UsIG1fZG9jdW1lbnRM
b2FkZXIuZ2V0KCksIHJlc291cmNlKTsKICAgICAgICAgbV9kb2N1bWVudExvYWRlci0+cmVjb3Jk
TWVtb3J5Q2FjaGVMb2FkRm9yRnV0dXJlQ2xpZW50Tm90aWZpY2F0aW9uKHJlc291cmNlLT51cmwo
KSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDEzODM5NCkKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUz
OSwxMiArNTM5LDkgQEAKICAgICAgICAgcmV0dXJuIFJlbG9hZDsKICAgICB9CiAKLSAgICBpZiAo
ZXhpc3RpbmdSZXNvdXJjZS0+dHlwZSgpID09IENhY2hlZFJlc291cmNlOjpNYWluUmVzb3VyY2Up
CisgICAgaWYgKChleGlzdGluZ1Jlc291cmNlLT50eXBlKCkgPT0gQ2FjaGVkUmVzb3VyY2U6Ok1h
aW5SZXNvdXJjZSB8fCBleGlzdGluZ1Jlc291cmNlLT50eXBlKCkgPT0gQ2FjaGVkUmVzb3VyY2U6
OlJhd1Jlc291cmNlKSAmJiAhc3RhdGljX2Nhc3Q8Q2FjaGVkUmF3UmVzb3VyY2UqPihleGlzdGlu
Z1Jlc291cmNlKS0+Y2FuUmV1c2UocmVxdWVzdCkpCiAgICAgICAgIHJldHVybiBSZWxvYWQ7CiAK
LSAgICBpZiAoZXhpc3RpbmdSZXNvdXJjZS0+dHlwZSgpID09IENhY2hlZFJlc291cmNlOjpSYXdS
ZXNvdXJjZSAmJiAhc3RhdGljX2Nhc3Q8Q2FjaGVkUmF3UmVzb3VyY2UqPihleGlzdGluZ1Jlc291
cmNlKS0+Y2FuUmV1c2UocmVxdWVzdCkpCi0gICAgICAgIHJldHVybiBSZWxvYWQ7Ci0KICAgICAv
LyBDZXJ0YWluIHJlcXVlc3RzIChlLmcuLCBYSFJzKSBtaWdodCBoYXZlIG1hbnVhbGx5IHNldCBo
ZWFkZXJzIHRoYXQgcmVxdWlyZSByZXZhbGlkYXRpb24uCiAgICAgLy8gRklYTUU6IEluIHRoZW9y
eSwgdGhpcyBzaG91bGQgYmUgYSBSZXZhbGlkYXRlIGNhc2UuIEluIHByYWN0aWNlLCB0aGUgTWVt
b3J5Q2FjaGUgcmV2YWxpZGF0aW9uIHBhdGggYXNzdW1lcyBhIHdob2xlIGJ1bmNoCiAgICAgLy8g
b2YgdGhpbmdzIGFib3V0IGhvdyByZXZhbGlkYXRpb24gd29ya3MgdGhhdCBtYW51YWwgaGVhZGVy
cyB2aW9sYXRlLCBzbyBwdW50IHRvIFJlbG9hZCBpbnN0ZWFkLgpJbmRleDogU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgJKHJldmlzaW9uIDEzODM5
NCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC02Nyw2ICs2Nyw5IEBACiAjZW5kaWYKIAogICAgIHVuc2lnbmVkIGxv
bmcgbV9pZGVudGlmaWVyOworCisgICAgVmVjdG9yPFJlc291cmNlUmVxdWVzdD4gbV9yZWRpcmVj
dENoYWluUmVxdWVzdHM7CisgICAgVmVjdG9yPFJlc291cmNlUmVzcG9uc2U+IG1fcmVkaXJlY3RD
aGFpblJlc3BvbnNlczsKIH07CiAKIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCShyZXZpc2lvbiAxMzgzOTQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
OTcsNyArNDk3LDcgQEAKICAgICBpZiAoIWhhc0NsaWVudHMoKSAmJiBpbkNhY2hlKCkpCiAgICAg
ICAgIG1lbW9yeUNhY2hlKCktPmFkZFRvTGl2ZVJlc291cmNlc1NpemUodGhpcyk7CiAKLSAgICBp
ZiAobV90eXBlID09IFJhd1Jlc291cmNlICYmICFtX3Jlc3BvbnNlLmlzTnVsbCgpICYmICFtX3By
b3h5UmVzb3VyY2UpIHsKKyAgICBpZiAoKG1fdHlwZSA9PSBSYXdSZXNvdXJjZSB8fCBtX3R5cGUg
PT0gTWFpblJlc291cmNlKSAmJiAhbV9yZXNwb25zZS5pc051bGwoKSAmJiAhbV9wcm94eVJlc291
cmNlKSB7CiAgICAgICAgIC8vIENlcnRhaW4gcmVzb3VyY2VzIChlc3BlY2lhbGx5IFhIUnMpIGRv
IGNyYXp5IHRoaW5ncyBpZiBhbiBhc3luY2hyb25vdXMgbG9hZCByZXR1cm5zCiAgICAgICAgIC8v
IHN5bmNocm9ub3VzbHkgKGUuZy4sIHNjcmlwdHMgbWF5IG5vdCBoYXZlIHNldCBhbGwgdGhlIHN0
YXRlIHRoZXkgbmVlZCB0byBoYW5kbGUgdGhlIGxvYWQpLgogICAgICAgICAvLyBUaGVyZWZvcmUs
IHJhdGhlciB0aGFuIGltbWVkaWF0ZWx5IHNlbmRpbmcgY2FsbGJhY2tzIG9uIGEgY2FjaGUgaGl0
IGxpa2Ugb3RoZXIgQ2FjaGVkUmVzb3VyY2VzLApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCShyZXZpc2lvbiAxMzgzOTQpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04MCwxNCArODAsMjIgQEAKIAogdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6
ZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50KiBjKQogewotICAgIGlmIChtX3Jlc3Bv
bnNlLmlzTnVsbCgpIHx8ICFoYXNDbGllbnQoYykpCisgICAgaWYgKCFoYXNDbGllbnQoYykpCiAg
ICAgICAgIHJldHVybjsKICAgICAvLyBUaGUgY2FsbHMgdG8gdGhlIGNsaWVudCBjYW4gcmVzdWx0
IGluIGV2ZW50cyBydW5uaW5nLCBwb3RlbnRpYWxseSBjYXVzaW5nCiAgICAgLy8gdGhpcyByZXNv
dXJjZSB0byBiZSBldmljdGVkIGZyb20gdGhlIGNhY2hlIGFuZCBhbGwgY2xpZW50cyB0byBiZSBy
ZW1vdmVkLAogICAgIC8vIHNvIGEgcHJvdGVjdG9yIGlzIG5lY2Vzc2FyeS4KICAgICBDYWNoZWRS
ZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVjdCh0aGlzKTsKICAgICBDYWNo
ZWRSYXdSZXNvdXJjZUNsaWVudCogY2xpZW50ID0gc3RhdGljX2Nhc3Q8Q2FjaGVkUmF3UmVzb3Vy
Y2VDbGllbnQqPihjKTsKLSAgICBjbGllbnQtPnJlc3BvbnNlUmVjZWl2ZWQodGhpcywgbV9yZXNw
b25zZSk7CisgICAgQVNTRVJUKG1fcmVkaXJlY3RDaGFpblJlcXVlc3RzLnNpemUoKSA9PSBtX3Jl
ZGlyZWN0Q2hhaW5SZXNwb25zZXMuc2l6ZSgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1fcmVkaXJlY3RDaGFpblJlcXVlc3RzLnNpemUoKTsgaSsrKSB7CisgICAgICAgIFJlc291cmNl
UmVxdWVzdCByZXF1ZXN0KG1fcmVkaXJlY3RDaGFpblJlcXVlc3RzW2ldKTsKKyAgICAgICAgY2xp
ZW50LT5yZWRpcmVjdFJlY2VpdmVkKHRoaXMsIHJlcXVlc3QsIG1fcmVkaXJlY3RDaGFpblJlc3Bv
bnNlc1tpXSk7CisgICAgICAgIGlmICghaGFzQ2xpZW50KGMpKQorICAgICAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICBpZiAoIW1fcmVzcG9uc2UuaXNOdWxsKCkpCisgICAgICAgIGNsaWVudC0+
cmVzcG9uc2VSZWNlaXZlZCh0aGlzLCBtX3Jlc3BvbnNlKTsKICAgICBpZiAoIWhhc0NsaWVudChj
KSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmIChtX2RhdGEpCkBAIC0xMTAsNiArMTE4LDggQEAK
ICAgICAgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXI8Q2FjaGVkUmF3UmVzb3VyY2VDbGll
bnQ+IHcobV9jbGllbnRzKTsKICAgICAgICAgd2hpbGUgKENhY2hlZFJhd1Jlc291cmNlQ2xpZW50
KiBjID0gdy5uZXh0KCkpCiAgICAgICAgICAgICBjLT5yZWRpcmVjdFJlY2VpdmVkKHRoaXMsIHJl
cXVlc3QsIHJlc3BvbnNlKTsKKyAgICAgICAgbV9yZWRpcmVjdENoYWluUmVxdWVzdHMuYXBwZW5k
KHJlcXVlc3QpOworICAgICAgICBtX3JlZGlyZWN0Q2hhaW5SZXNwb25zZXMuYXBwZW5kKHJlc3Bv
bnNlKTsKICAgICB9CiAgICAgQ2FjaGVkUmVzb3VyY2U6OndpbGxTZW5kUmVxdWVzdChyZXF1ZXN0
LCByZXNwb25zZSk7CiB9CkBAIC0xOTQsNiArMjA0LDEyIEBACiAgICAgICAgIGlmICghc2hvdWxk
SWdub3JlSGVhZGVyRm9yQ2FjaGVSZXVzZShoZWFkZXJOYW1lKSAmJiBpLT52YWx1ZSAhPSBuZXdI
ZWFkZXJzLmdldChoZWFkZXJOYW1lKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fcmVkaXJlY3RDaGFpblJlc3BvbnNlcy5z
aXplKCk7IGkrKykgeworICAgICAgICBpZiAobV9yZWRpcmVjdENoYWluUmVzcG9uc2VzW2ldLmNh
Y2hlQ29udHJvbENvbnRhaW5zTm9TdG9yZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKwogICAgIHJldHVybiB0cnVlOwogfQogCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL21pc2MvbGluay1yZWwtaWNvbi1iZWZvcmVsb2FkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvbGluay1yZWwtaWNvbi1iZWZvcmVsb2Fk
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTM4Mzk0KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9taXNjL2xpbmstcmVsLWljb24tYmVmb3JlbG9hZC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw2IEBACiA8dW5rbm93bj4gLSBkaWRGaW5pc2hMb2FkaW5nCiBodHRwOi8v
MTI3LjAuMC4xOjgwMDAvbWlzYy9saW5rLXJlbC1pY29uLWJlZm9yZWxvYWQuaHRtbCAtIHdpbGxT
ZW5kUmVxdWVzdCA8TlNVUkxSZXF1ZXN0IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbWlzYy9s
aW5rLXJlbC1pY29uLWJlZm9yZWxvYWQuaHRtbCwgbWFpbiBkb2N1bWVudCBVUkwgaHR0cDovLzEy
Ny4wLjAuMTo4MDAwL21pc2MvbGluay1yZWwtaWNvbi1iZWZvcmVsb2FkLmh0bWwsIGh0dHAgbWV0
aG9kIEdFVD4gcmVkaXJlY3RSZXNwb25zZSAobnVsbCkKIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9t
aXNjL2xpbmstcmVsLWljb24tYmVmb3JlbG9hZC5odG1sIC0gZGlkUmVjZWl2ZVJlc3BvbnNlIDxO
U1VSTFJlc3BvbnNlIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9taXNjL2xpbmstcmVsLWljb24tYmVm
b3JlbG9hZC5odG1sLCBodHRwIHN0YXR1cyBjb2RlIDIwMD4KK2h0dHA6Ly8xMjcuMC4wLjE6ODAw
MC9taXNjL2xpbmstcmVsLWljb24tYmVmb3JlbG9hZC5odG1sIC0gZGlkRmluaXNoTG9hZGluZwog
aHR0cDovLzEyNy4wLjAuMTo4MDAwL2Zhdmljb24uaWNvIC0gd2lsbFNlbmRSZXF1ZXN0IDxOU1VS
TFJlcXVlc3QgVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9mYXZpY29uLmljbywgbWFpbiBkb2N1
bWVudCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL21pc2MvbGluay1yZWwtaWNvbi1iZWZvcmVs
b2FkLmh0bWwsIGh0dHAgbWV0aG9kIEdFVD4gcmVkaXJlY3RSZXNwb25zZSAobnVsbCkKIFRoaXMg
dGVzdCBzaG91bGQgbm90IHNob3cgYSByZXF1ZXN0IGZvciB0aGUgZmF2aWNvbiBkb250LWxvYWQt
dGhpcy5pY28sIHNpbmNlIHRoZSBiZWZvcmVsb2FkIGhhbmRsZXIgb24gdGhlIGZhdmljb24gbGlu
ayByZXR1cm5zIGZhbHNlLiBUaGVyZWZvcmUsIGlmIHRoZSByZXNvdXJjZSByZXF1ZXN0IGxpc3Qg
YmVsb3cgc2hvd3MgYSByZXF1ZXN0IGZvciBkb250LWxvYWQtdGhpcy5pY28sIHRoZW4gdGhpcyB0
ZXN0IGhhcyBmYWlsZWQuCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvZmF2aWNv
bi1sb2Fkcy13aXRoLWltYWdlcy1kaXNhYmxlZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2Zhdmljb24tbG9hZHMtd2l0aC1pbWFnZXMtZGlz
YWJsZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxMzgzOTQpCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL21pc2MvZmF2aWNvbi1sb2Fkcy13aXRoLWltYWdlcy1kaXNhYmxlZC1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw3IEBACiA8dW5rbm93bj4gLSBkaWRGaW5pc2hM
b2FkaW5nCiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbWlzYy9mYXZpY29uLWxvYWRzLXdpdGgtaW1h
Z2VzLWRpc2FibGVkLmh0bWwgLSB3aWxsU2VuZFJlcXVlc3QgPE5TVVJMUmVxdWVzdCBVUkwgaHR0
cDovLzEyNy4wLjAuMTo4MDAwL21pc2MvZmF2aWNvbi1sb2Fkcy13aXRoLWltYWdlcy1kaXNhYmxl
ZC5odG1sLCBtYWluIGRvY3VtZW50IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbWlzYy9mYXZp
Y29uLWxvYWRzLXdpdGgtaW1hZ2VzLWRpc2FibGVkLmh0bWwsIGh0dHAgbWV0aG9kIEdFVD4gcmVk
aXJlY3RSZXNwb25zZSAobnVsbCkKIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9taXNjL2Zhdmljb24t
bG9hZHMtd2l0aC1pbWFnZXMtZGlzYWJsZWQuaHRtbCAtIGRpZFJlY2VpdmVSZXNwb25zZSA8TlNV
UkxSZXNwb25zZSBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbWlzYy9mYXZpY29uLWxvYWRzLXdpdGgt
aW1hZ2VzLWRpc2FibGVkLmh0bWwsIGh0dHAgc3RhdHVzIGNvZGUgMjAwPgoraHR0cDovLzEyNy4w
LjAuMTo4MDAwL21pc2MvZmF2aWNvbi1sb2Fkcy13aXRoLWltYWdlcy1kaXNhYmxlZC5odG1sIC0g
ZGlkRmluaXNoTG9hZGluZwogUmFkYXIgNjk3MzEwNiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTI3ODk2IC0gRmF2aWNvbnMgc3RpbGwgbG9hZCB3aGVuIGF1dG9t
YXRpYyBpbWFnZSBsb2FkaW5nIGlzIGRpc2FibGVkLgogVGhpcyB0ZXN0IHVzZXMgRFJUJ3MgcmVz
b3VyY2UgbG9hZCBkZWxlZ2F0ZSBjYWxsYmFjayBtb2RlIHRvIHNlZSBpZiB0aGUgZmF2aWNvbiBp
cyBsb2FkZWQgZXZlbiB3aGVuIGltYWdlIGxvYWRpbmcgaXMgb2ZmLgogCkluZGV4OiBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvcmVkaXJlY3QtbWV0aG9kcy1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL3JlZGlyZWN0LW1ldGhv
ZHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxMzgzOTQpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2xvYWRpbmcvcmVkaXJlY3QtbWV0aG9kcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTQyLDExICs0MiwxMSBAQAogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3Vy
Y2VzL3JlZGlyZWN0LW1ldGhvZHMtZm9ybS5odG1sIC0gZGlkUmVjZWl2ZVJlc3BvbnNlIDxOU1VS
TFJlc3BvbnNlIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVj
dC1tZXRob2RzLWZvcm0uaHRtbCwgaHR0cCBzdGF0dXMgY29kZSAyMDA+CiBmcmFtZSAiMSIgLSBk
aWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lCiBmcmFtZSAiMSIgLSBkaWRDb21taXRMb2Fk
Rm9yRnJhbWUKK2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVj
dC1tZXRob2RzLWZvcm0uaHRtbCAtIGRpZEZpbmlzaExvYWRpbmcKIGZyYW1lICIxIiAtIGRpZEZp
bmlzaERvY3VtZW50TG9hZEZvckZyYW1lCiBmcmFtZSAiMSIgLSB3aWxsUGVyZm9ybUNsaWVudFJl
ZGlyZWN0VG9VUkw6IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRp
cmVjdC1tZXRob2RzLXJlc3VsdC5waHAgCiBmcmFtZSAiMSIgLSBkaWRIYW5kbGVPbmxvYWRFdmVu
dHNGb3JGcmFtZQogZnJhbWUgIjEiIC0gZGlkRmluaXNoTG9hZEZvckZyYW1lCi1odHRwOi8vMTI3
LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1mb3JtLmh0bWwg
LSBkaWRGaW5pc2hMb2FkaW5nCiBmcmFtZSAiMSIgLSBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZv
ckZyYW1lCiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3Qt
bWV0aG9kcy1yZXN1bHQucGhwIC0gd2lsbFNlbmRSZXF1ZXN0IDxOU1VSTFJlcXVlc3QgVVJMIGh0
dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLXJl
c3VsdC5waHAsIG1haW4gZG9jdW1lbnQgVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5n
L3JlZGlyZWN0LW1ldGhvZHMuaHRtbCwgaHR0cCBtZXRob2QgUE9TVD4gcmVkaXJlY3RSZXNwb25z
ZSAobnVsbCkKIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVj
dC1tZXRob2RzLXJlc3VsdC5waHAgLSB3aWxsU2VuZFJlcXVlc3QgPE5TVVJMUmVxdWVzdCBVUkwg
aHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMt
cmVzdWx0LnBocD9yZWRpcmVjdGVkPXRydWUsIG1haW4gZG9jdW1lbnQgVVJMIGh0dHA6Ly8xMjcu
MC4wLjE6ODAwMC9sb2FkaW5nL3JlZGlyZWN0LW1ldGhvZHMuaHRtbCwgaHR0cCBtZXRob2QgR0VU
PiByZWRpcmVjdFJlc3BvbnNlIDxOU1VSTFJlc3BvbnNlIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9s
b2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLXJlc3VsdC5waHAsIGh0dHAgc3RhdHVz
IGNvZGUgMzAyPgpAQCAtNjksMTEgKzY5LDExIEBACiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9h
ZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1mb3JtLmh0bWwgLSBkaWRSZWNlaXZlUmVz
cG9uc2UgPE5TVVJMUmVzcG9uc2UgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3Vy
Y2VzL3JlZGlyZWN0LW1ldGhvZHMtZm9ybS5odG1sLCBodHRwIHN0YXR1cyBjb2RlIDIwMD4KIGZy
YW1lICIyIiAtIGRpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWUKIGZyYW1lICIyIiAtIGRp
ZENvbW1pdExvYWRGb3JGcmFtZQoraHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3Vy
Y2VzL3JlZGlyZWN0LW1ldGhvZHMtZm9ybS5odG1sIC0gZGlkRmluaXNoTG9hZGluZwogZnJhbWUg
IjIiIC0gZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUKIGZyYW1lICIyIiAtIHdpbGxQZXJm
b3JtQ2xpZW50UmVkaXJlY3RUb1VSTDogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVz
b3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtcmVzdWx0LnBocCAKIGZyYW1lICIyIiAtIGRpZEhhbmRs
ZU9ubG9hZEV2ZW50c0ZvckZyYW1lCiBmcmFtZSAiMiIgLSBkaWRGaW5pc2hMb2FkRm9yRnJhbWUK
LWh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2Rz
LWZvcm0uaHRtbCAtIGRpZEZpbmlzaExvYWRpbmcKIGZyYW1lICIyIiAtIGRpZFN0YXJ0UHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWUKIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNl
cy9yZWRpcmVjdC1tZXRob2RzLXJlc3VsdC5waHAgLSB3aWxsU2VuZFJlcXVlc3QgPE5TVVJMUmVx
dWVzdCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0
LW1ldGhvZHMtcmVzdWx0LnBocCwgbWFpbiBkb2N1bWVudCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4
MDAwL2xvYWRpbmcvcmVkaXJlY3QtbWV0aG9kcy5odG1sLCBodHRwIG1ldGhvZCBQT1NUPiByZWRp
cmVjdFJlc3BvbnNlIChudWxsKQogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3Vy
Y2VzL3JlZGlyZWN0LW1ldGhvZHMtcmVzdWx0LnBocCAtIHdpbGxTZW5kUmVxdWVzdCA8TlNVUkxS
ZXF1ZXN0IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJl
Y3QtbWV0aG9kcy1yZXN1bHQucGhwP3JlZGlyZWN0ZWQ9dHJ1ZSwgbWFpbiBkb2N1bWVudCBVUkwg
aHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVkaXJlY3QtbWV0aG9kcy5odG1sLCBodHRw
IG1ldGhvZCBHRVQ+IHJlZGlyZWN0UmVzcG9uc2UgPE5TVVJMUmVzcG9uc2UgaHR0cDovLzEyNy4w
LjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtcmVzdWx0LnBocCwg
aHR0cCBzdGF0dXMgY29kZSAzMDM+CkBAIC05NiwxMSArOTYsMTEgQEAKIGh0dHA6Ly8xMjcuMC4w
LjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLWZvcm0uaHRtbCAtIGRp
ZFJlY2VpdmVSZXNwb25zZSA8TlNVUkxSZXNwb25zZSBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9h
ZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1mb3JtLmh0bWwsIGh0dHAgc3RhdHVzIGNv
ZGUgMjAwPgogZnJhbWUgIjMiIC0gZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZQogZnJh
bWUgIjMiIC0gZGlkQ29tbWl0TG9hZEZvckZyYW1lCitodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9h
ZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1mb3JtLmh0bWwgLSBkaWRGaW5pc2hMb2Fk
aW5nCiBmcmFtZSAiMyIgLSBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZQogZnJhbWUgIjMi
IC0gd2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdFRvVVJMOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAv
bG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1yZXN1bHQucGhwIAogZnJhbWUgIjMi
IC0gZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUKIGZyYW1lICIzIiAtIGRpZEZpbmlzaExv
YWRGb3JGcmFtZQotaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGly
ZWN0LW1ldGhvZHMtZm9ybS5odG1sIC0gZGlkRmluaXNoTG9hZGluZwogZnJhbWUgIjMiIC0gZGlk
U3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZQogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRp
bmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtcmVzdWx0LnBocCAtIHdpbGxTZW5kUmVxdWVz
dCA8TlNVUkxSZXF1ZXN0IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJj
ZXMvcmVkaXJlY3QtbWV0aG9kcy1yZXN1bHQucGhwLCBtYWluIGRvY3VtZW50IFVSTCBodHRwOi8v
MTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZWRpcmVjdC1tZXRob2RzLmh0bWwsIGh0dHAgbWV0aG9k
IFBPU1Q+IHJlZGlyZWN0UmVzcG9uc2UgKG51bGwpCiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9h
ZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1yZXN1bHQucGhwIC0gd2lsbFNlbmRSZXF1
ZXN0IDxOU1VSTFJlcXVlc3QgVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291
cmNlcy9yZWRpcmVjdC1tZXRob2RzLXJlc3VsdC5waHA/cmVkaXJlY3RlZD10cnVlLCBtYWluIGRv
Y3VtZW50IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZWRpcmVjdC1tZXRob2Rz
Lmh0bWwsIGh0dHAgbWV0aG9kIFBPU1Q+IHJlZGlyZWN0UmVzcG9uc2UgPE5TVVJMUmVzcG9uc2Ug
aHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMt
cmVzdWx0LnBocCwgaHR0cCBzdGF0dXMgY29kZSAzMDc+CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9odHRwL3Rlc3RzL3NlY3VyaXR5L2luYWN0aXZlLWRvY3VtZW50LXdpdGgt
ZW1wdHktc2VjdXJpdHktb3JpZ2luLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9odHRwL3Rlc3RzL3NlY3VyaXR5L2luYWN0aXZlLWRvY3Vt
ZW50LXdpdGgtZW1wdHktc2VjdXJpdHktb3JpZ2luLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTM4
Mzk0KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaHR0cC90ZXN0cy9zZWN1cml0
eS9pbmFjdGl2ZS1kb2N1bWVudC13aXRoLWVtcHR5LXNlY3VyaXR5LW9yaWdpbi1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzIEBACi1DT05TT0xFIE1FU1NBR0U6IFVuc2Fm
ZSBKYXZhU2NyaXB0IGF0dGVtcHQgdG8gYWNjZXNzIGZyYW1lIHdpdGggVVJMIGFib3V0OmJsYW5r
IGZyb20gZnJhbWUgd2l0aCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L2luYWN0
aXZlLWRvY3VtZW50LXdpdGgtZW1wdHktc2VjdXJpdHktb3JpZ2luLmh0bWwjc3RvcC4gVGhlIGZy
YW1lIHJlcXVlc3RpbmcgYWNjZXNzIGhhcyBhIHByb3RvY29sIG9mICdodHRwJywgdGhlIGZyYW1l
IGJlaW5nIGFjY2Vzc2VkIGhhcyBhIHByb3RvY29sIG9mICcnLiBQcm90b2NvbHMgbXVzdCBtYXRj
aC4KK0NPTlNPTEUgTUVTU0FHRTogVW5zYWZlIEphdmFTY3JpcHQgYXR0ZW1wdCB0byBhY2Nlc3Mg
ZnJhbWUgd2l0aCBVUkwgYWJvdXQ6YmxhbmsgZnJvbSBmcmFtZSB3aXRoIFVSTCBodHRwOi8vMTI3
LjAuMC4xOjgwMDAvc2VjdXJpdHkvaW5hY3RpdmUtZG9jdW1lbnQtd2l0aC1lbXB0eS1zZWN1cml0
eS1vcmlnaW4uaHRtbC4gVGhlIGZyYW1lIHJlcXVlc3RpbmcgYWNjZXNzIGhhcyBhIHByb3RvY29s
IG9mICdodHRwJywgdGhlIGZyYW1lIGJlaW5nIGFjY2Vzc2VkIGhhcyBhIHByb3RvY29sIG9mICcn
LiBQcm90b2NvbHMgbXVzdCBtYXRjaC4KIAogVGhpcyB0ZXN0IHBhc3NlcyBpZiBpdCBkb2Vzbid0
IGFsZXJ0IHNvbWV0aGluZyB1Z2x5Lgo=
</data>
<flag name="commit-queue"
          id="197886"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181392</attachid>
            <date>2013-01-04 15:22:09 -0800</date>
            <delta_ts>2013-01-07 12:01:08 -0800</delta_ts>
            <desc>patch</desc>
            <filename>cmr.txt</filename>
            <type>text/plain</type>
            <size>20932</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiAxMzg4NTcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzQwLDYgKzM0MCw4IEBACiAg
ICAgewogICAgICAgICByZXR1cm4gbV9kb2N1bWVudEVsZW1lbnQuZ2V0KCk7CiAgICAgfQorCisg
ICAgYm9vbCBoYXNNYW5pZmVzdCgpIGNvbnN0OwogICAgIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxFbGVtZW50PiBjcmVhdGVFbGVtZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdGFnTmFtZSwgRXhj
ZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRG9j
dW1lbnRGcmFnbWVudCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAx
Mzg4NTcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC04MzYsNiArODM2LDExIEBACiAgICAgcmV0dXJuIG1faW1wbGVtZW50YXRpb24uZ2V0KCk7
CiB9CiAKK2Jvb2wgRG9jdW1lbnQ6Omhhc01hbmlmZXN0KCkgY29uc3QKK3sKKyAgICByZXR1cm4g
ZG9jdW1lbnRFbGVtZW50KCkgJiYgZG9jdW1lbnRFbGVtZW50KCktPmhhc1RhZ05hbWUoaHRtbFRh
ZykgJiYgIWRvY3VtZW50RWxlbWVudCgpLT5nZXRBdHRyaWJ1dGUobWFuaWZlc3RBdHRyKS5pc0Vt
cHR5KCk7Cit9CisKIHZvaWQgRG9jdW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRC
eVBhcnNlciwgTm9kZSogYmVmb3JlQ2hhbmdlLCBOb2RlKiBhZnRlckNoYW5nZSwgaW50IGNoaWxk
Q291bnREZWx0YSkKIHsKICAgICBDb250YWluZXJOb2RlOjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdl
ZEJ5UGFyc2VyLCBiZWZvcmVDaGFuZ2UsIGFmdGVyQ2hhbmdlLCBjaGlsZENvdW50RGVsdGEpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTM4ODU3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTMtMDEtMDQgIE5hdGUgQ2hh
cGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBFbmFibGUgcmV1c2Ugb2YgY2Fj
aGVkIG1haW4gcmVzb3VyY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDU2NjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBObyBuZXcgdGVzdHMsIHRob3VnaCByZXNvdXJjZSBsb2FkIGNhbGxiYWNrcyBo
YXBwZW4gaW4gYSBzbGlnaHRseSBkaWZmZXJlbnQgb3JkZXIuCisgICAgICAgIE5hbWVseSwgZGlk
RmluaXNoTG9hZGluZyBoYXBwZW5zIGVhcmxpZXIgaW4gdGhlIGNhY2hlIG9mIGEgY2FjaGUgaGl0
LgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjpoYXNNYW5pZmVzdCk6IFJldHVybnMgdHJ1ZSBpZiB0aGUgPGh0bWw+IGVsZW1lbnQgaGFz
IGEgbm9uLWVtcHR5IG1hbmlmZXN0IGF0dHJpYnV0ZS4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQu
aDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXI6OmxvYWRlZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKTogRG9uJ3Qgc2VuZCBk
ZWxlZ2F0ZSBjYWxsYmFja3MgZm9yIGNhY2hlIGhpdCBoZXJlLCBzaW5jZQorICAgICAgICAgICAg
TWFpblJlc291cmNlTG9hZGVyIHdpbGwgdGFrZSBjYXJlIG9mIGl0LgorICAgICAgICAqIGxvYWRl
ci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWFpblJlc291cmNl
TG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKTogRG9uJ3QgdHJ5IHRvIGNhY2hlIGxvYWRzIGZyb20g
dGhlIGFwcGxpY2F0aW9uIGNhY2hlLgorICAgICAgICAoV2ViQ29yZTo6TWFpblJlc291cmNlTG9h
ZGVyOjpkaWRGaW5pc2hMb2FkaW5nKTogRG9uJ3QgdHJ5IHRvIGNhY2hlIGxvYWRzIGZyb20gdGhl
IGFwcGxpY2F0aW9uIGNhY2hlLgorICAgICAgICAoV2ViQ29yZTo6TWFpblJlc291cmNlTG9hZGVy
Ojpsb2FkKTogRW5zdXJlIHdlIGNyZWF0ZSBhIHJlc291cmNlIGxvYWQgaWRlbnRpZmllciBmb3Ig
Y2FjaGUgaGl0cy4gQWxzbywKKyAgICAgICAgICAgIGVuc3VyZSB3ZSBjb3JyZWN0bHkgcG9wdWFs
YXRlIGZyYWdtZW50IGlkZW50aWZpZXJzIGluIHRoZSBSZXNvdXJjZVJlcXVlc3QgcmVwb3J0ZWQg
dG8gRG9jdW1lbnRMb2FkZXIuCisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291
cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjpkaWRBZGRDbGll
bnQpOiBTeW50aGVzaXplIHJlZGlyZWN0IG5vdGlmaWNhdGlvbnMgZm9yIGNhY2hlIGhpdHMgaWYg
bmVjZXNzYXJ5LgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OndpbGxTZW5k
UmVxdWVzdCk6IE5vdGUgdGhlIHJlZGlyZWN0cyB3ZSByZWNlaXZlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFJhd1Jlc291cmNlOjpjYW5SZXVzZSk6IERvbid0IHJldXNlIGEgcmVzb3VyY2Ug
aWYgdGhlIHJlZGlyZWN0IGNoYWluIGluY2x1ZGVkIGEgIkNhY2hlLWNvbnRyb2w6IG5vLXN0b3Jl
Ii4KKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaDoKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkUmVzb3VyY2U6OmFkZENsaWVudFRvU2V0KTogRG9uJ3QgcmV0dXJuIGNhY2hlZCBkYXRhIGZv
ciBhIG1haW4gcmVzb3VyY2Ugc3luY2hyb25vdXNseS4KKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3Vy
Y2VMb2FkZXI6OmRldGVybWluZVJldmFsaWRhdGlvblBvbGljeSk6IFBlcm1pdCBjYWNoZSByZXVz
ZSBmb3IgbWFpbiByZXNvdXJjZXMuCisKIDIwMTMtMDEtMDQgIEFkYW0gQmFydGggIDxhYmFydGhA
d2Via2l0Lm9yZz4KIAogICAgICAgICBIVE1MVHJlZUJ1aWxkZXIgc2hvdWxkIEFTU0VSVCB0aGF0
IGl0IGlzIG9uIHRoZSBtYWluIHRocmVhZCBiZWZvcmUgdG91Y2hpbmcgZWxlbWVudHMKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gMTM4ODU3KQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
Mjg3OCw2ICsyODc4LDEwIEBACiAgICAgaWYgKCFyZXNvdXJjZS0+c2hvdWxkU2VuZFJlc291cmNl
TG9hZENhbGxiYWNrcygpIHx8IG1fZG9jdW1lbnRMb2FkZXItPmhhdmVUb2xkQ2xpZW50QWJvdXRM
b2FkKHJlc291cmNlLT51cmwoKSkpCiAgICAgICAgIHJldHVybjsKIAorICAgIC8vIE1haW4gcmVz
b3VyY2UgZGVsZWdhdGUgbWVzc2FnZXMgYXJlIHN5bnRoZXNpemVkIGluIHRoZSBzYW1lIHdheSBh
cyBtYWluIHJlc291cmNlIFN1YnN0aXR1dGVEYXRhIGxvYWRzLgorICAgIGlmIChyZXNvdXJjZS0+
dHlwZSgpID09IENhY2hlZFJlc291cmNlOjpNYWluUmVzb3VyY2UpCisgICAgICAgIHJldHVybjsK
KwogICAgIGlmICghcGFnZS0+YXJlTWVtb3J5Q2FjaGVDbGllbnRDYWxsc0VuYWJsZWQoKSkgewog
ICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZExvYWRSZXNvdXJjZUZyb21NZW1v
cnlDYWNoZShwYWdlLCBtX2RvY3VtZW50TG9hZGVyLmdldCgpLCByZXNvdXJjZSk7CiAgICAgICAg
IG1fZG9jdW1lbnRMb2FkZXItPnJlY29yZE1lbW9yeUNhY2hlTG9hZEZvckZ1dHVyZUNsaWVudE5v
dGlmaWNhdGlvbihyZXNvdXJjZS0+dXJsKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAxMzg4
NTcpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NDAsMTIgKzU0MCw5IEBACiAgICAgICAgIHJldHVybiBS
ZWxvYWQ7CiAgICAgfQogCi0gICAgaWYgKGV4aXN0aW5nUmVzb3VyY2UtPnR5cGUoKSA9PSBDYWNo
ZWRSZXNvdXJjZTo6TWFpblJlc291cmNlKQorICAgIGlmICgoZXhpc3RpbmdSZXNvdXJjZS0+dHlw
ZSgpID09IENhY2hlZFJlc291cmNlOjpNYWluUmVzb3VyY2UgfHwgZXhpc3RpbmdSZXNvdXJjZS0+
dHlwZSgpID09IENhY2hlZFJlc291cmNlOjpSYXdSZXNvdXJjZSkgJiYgIXN0YXRpY19jYXN0PENh
Y2hlZFJhd1Jlc291cmNlKj4oZXhpc3RpbmdSZXNvdXJjZSktPmNhblJldXNlKHJlcXVlc3QpKQog
ICAgICAgICByZXR1cm4gUmVsb2FkOwogCi0gICAgaWYgKGV4aXN0aW5nUmVzb3VyY2UtPnR5cGUo
KSA9PSBDYWNoZWRSZXNvdXJjZTo6UmF3UmVzb3VyY2UgJiYgIXN0YXRpY19jYXN0PENhY2hlZFJh
d1Jlc291cmNlKj4oZXhpc3RpbmdSZXNvdXJjZSktPmNhblJldXNlKHJlcXVlc3QpKQotICAgICAg
ICByZXR1cm4gUmVsb2FkOwotCiAgICAgLy8gQ2VydGFpbiByZXF1ZXN0cyAoZS5nLiwgWEhScykg
bWlnaHQgaGF2ZSBtYW51YWxseSBzZXQgaGVhZGVycyB0aGF0IHJlcXVpcmUgcmV2YWxpZGF0aW9u
LgogICAgIC8vIEZJWE1FOiBJbiB0aGVvcnksIHRoaXMgc2hvdWxkIGJlIGEgUmV2YWxpZGF0ZSBj
YXNlLiBJbiBwcmFjdGljZSwgdGhlIE1lbW9yeUNhY2hlIHJldmFsaWRhdGlvbiBwYXRoIGFzc3Vt
ZXMgYSB3aG9sZSBidW5jaAogICAgIC8vIG9mIHRoaW5ncyBhYm91dCBob3cgcmV2YWxpZGF0aW9u
IHdvcmtzIHRoYXQgbWFudWFsIGhlYWRlcnMgdmlvbGF0ZSwgc28gcHVudCB0byBSZWxvYWQgaW5z
dGVhZC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJj
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdS
ZXNvdXJjZS5oCShyZXZpc2lvbiAxMzg4NTcpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmF3UmVzb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNjcsNiArNjcsOSBAQAog
I2VuZGlmCiAKICAgICB1bnNpZ25lZCBsb25nIG1faWRlbnRpZmllcjsKKworICAgIFZlY3RvcjxS
ZXNvdXJjZVJlcXVlc3Q+IG1fcmVkaXJlY3RDaGFpblJlcXVlc3RzOworICAgIFZlY3RvcjxSZXNv
dXJjZVJlc3BvbnNlPiBtX3JlZGlyZWN0Q2hhaW5SZXNwb25zZXM7CiB9OwogCiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAkocmV2aXNp
b24gMTM4ODU3KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDk3LDggKzQ5Nyw4IEBACiAgICAgaWYgKCFoYXNDbGll
bnRzKCkgJiYgaW5DYWNoZSgpKQogICAgICAgICBtZW1vcnlDYWNoZSgpLT5hZGRUb0xpdmVSZXNv
dXJjZXNTaXplKHRoaXMpOwogCi0gICAgaWYgKG1fdHlwZSA9PSBSYXdSZXNvdXJjZSAmJiAhbV9y
ZXNwb25zZS5pc051bGwoKSAmJiAhbV9wcm94eVJlc291cmNlKSB7Ci0gICAgICAgIC8vIENlcnRh
aW4gcmVzb3VyY2VzIChlc3BlY2lhbGx5IFhIUnMpIGRvIGNyYXp5IHRoaW5ncyBpZiBhbiBhc3lu
Y2hyb25vdXMgbG9hZCByZXR1cm5zCisgICAgaWYgKChtX3R5cGUgPT0gUmF3UmVzb3VyY2UgfHwg
bV90eXBlID09IE1haW5SZXNvdXJjZSkgJiYgIW1fcmVzcG9uc2UuaXNOdWxsKCkgJiYgIW1fcHJv
eHlSZXNvdXJjZSkgeworICAgICAgICAvLyBDZXJ0YWluIHJlc291cmNlcyAoZXNwZWNpYWxseSBY
SFJzIGFuZCBtYWluIHJlc291cmNlcykgZG8gY3JhenkgdGhpbmdzIGlmIGFuIGFzeW5jaHJvbm91
cyBsb2FkIHJldHVybnMKICAgICAgICAgLy8gc3luY2hyb25vdXNseSAoZS5nLiwgc2NyaXB0cyBt
YXkgbm90IGhhdmUgc2V0IGFsbCB0aGUgc3RhdGUgdGhleSBuZWVkIHRvIGhhbmRsZSB0aGUgbG9h
ZCkuCiAgICAgICAgIC8vIFRoZXJlZm9yZSwgcmF0aGVyIHRoYW4gaW1tZWRpYXRlbHkgc2VuZGlu
ZyBjYWxsYmFja3Mgb24gYSBjYWNoZSBoaXQgbGlrZSBvdGhlciBDYWNoZWRSZXNvdXJjZXMsCiAg
ICAgICAgIC8vIHdlIHNjaGVkdWxlIHRoZSBjYWxsYmFja3MgYW5kIGVuc3VyZSB3ZSBuZXZlciBm
aW5pc2ggc3luY2hyb25vdXNseS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSYXdSZXNvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAkocmV2aXNpb24gMTM4ODU3KQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODAsMTQgKzgwLDIyIEBACiAKIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmRpZEFkZENs
aWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCogYykKIHsKLSAgICBpZiAobV9yZXNwb25zZS5pc051
bGwoKSB8fCAhaGFzQ2xpZW50KGMpKQorICAgIGlmICghaGFzQ2xpZW50KGMpKQogICAgICAgICBy
ZXR1cm47CiAgICAgLy8gVGhlIGNhbGxzIHRvIHRoZSBjbGllbnQgY2FuIHJlc3VsdCBpbiBldmVu
dHMgcnVubmluZywgcG90ZW50aWFsbHkgY2F1c2luZwogICAgIC8vIHRoaXMgcmVzb3VyY2UgdG8g
YmUgZXZpY3RlZCBmcm9tIHRoZSBjYWNoZSBhbmQgYWxsIGNsaWVudHMgdG8gYmUgcmVtb3ZlZCwK
ICAgICAvLyBzbyBhIHByb3RlY3RvciBpcyBuZWNlc3NhcnkuCiAgICAgQ2FjaGVkUmVzb3VyY2VI
YW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IHByb3RlY3QodGhpcyk7CiAgICAgQ2FjaGVkUmF3UmVz
b3VyY2VDbGllbnQqIGNsaWVudCA9IHN0YXRpY19jYXN0PENhY2hlZFJhd1Jlc291cmNlQ2xpZW50
Kj4oYyk7Ci0gICAgY2xpZW50LT5yZXNwb25zZVJlY2VpdmVkKHRoaXMsIG1fcmVzcG9uc2UpOwor
ICAgIEFTU0VSVChtX3JlZGlyZWN0Q2hhaW5SZXF1ZXN0cy5zaXplKCkgPT0gbV9yZWRpcmVjdENo
YWluUmVzcG9uc2VzLnNpemUoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3JlZGly
ZWN0Q2hhaW5SZXF1ZXN0cy5zaXplKCk7IGkrKykgeworICAgICAgICBSZXNvdXJjZVJlcXVlc3Qg
cmVxdWVzdChtX3JlZGlyZWN0Q2hhaW5SZXF1ZXN0c1tpXSk7CisgICAgICAgIGNsaWVudC0+cmVk
aXJlY3RSZWNlaXZlZCh0aGlzLCByZXF1ZXN0LCBtX3JlZGlyZWN0Q2hhaW5SZXNwb25zZXNbaV0p
OworICAgICAgICBpZiAoIWhhc0NsaWVudChjKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgaWYgKCFtX3Jlc3BvbnNlLmlzTnVsbCgpKQorICAgICAgICBjbGllbnQtPnJlc3BvbnNl
UmVjZWl2ZWQodGhpcywgbV9yZXNwb25zZSk7CiAgICAgaWYgKCFoYXNDbGllbnQoYykpCiAgICAg
ICAgIHJldHVybjsKICAgICBpZiAobV9kYXRhKQpAQCAtMTEwLDYgKzExOCw4IEBACiAgICAgICAg
IENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZFJhd1Jlc291cmNlQ2xpZW50PiB3KG1f
Y2xpZW50cyk7CiAgICAgICAgIHdoaWxlIChDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCogYyA9IHcu
bmV4dCgpKQogICAgICAgICAgICAgYy0+cmVkaXJlY3RSZWNlaXZlZCh0aGlzLCByZXF1ZXN0LCBy
ZXNwb25zZSk7CisgICAgICAgIG1fcmVkaXJlY3RDaGFpblJlcXVlc3RzLmFwcGVuZChyZXF1ZXN0
KTsKKyAgICAgICAgbV9yZWRpcmVjdENoYWluUmVzcG9uc2VzLmFwcGVuZChyZXNwb25zZSk7CiAg
ICAgfQogICAgIENhY2hlZFJlc291cmNlOjp3aWxsU2VuZFJlcXVlc3QocmVxdWVzdCwgcmVzcG9u
c2UpOwogfQpAQCAtMTk0LDYgKzIwNCwxMiBAQAogICAgICAgICBpZiAoIXNob3VsZElnbm9yZUhl
YWRlckZvckNhY2hlUmV1c2UoaGVhZGVyTmFtZSkgJiYgaS0+dmFsdWUgIT0gbmV3SGVhZGVycy5n
ZXQoaGVhZGVyTmFtZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQorCisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3JlZGlyZWN0Q2hhaW5SZXNwb25zZXMuc2l6ZSgpOyBp
KyspIHsKKyAgICAgICAgaWYgKG1fcmVkaXJlY3RDaGFpblJlc3BvbnNlc1tpXS5jYWNoZUNvbnRy
b2xDb250YWluc05vU3RvcmUoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL01haW5S
ZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL01h
aW5SZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDEzODg1NykKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0
Niw3IEBACiAjaW5jbHVkZSAiSFRNTEZvcm1FbGVtZW50LmgiCiAjaW5jbHVkZSAiSGlzdG9yeUl0
ZW0uaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKKyNpbmNsdWRlICJN
ZW1vcnlDYWNoZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQcm9ncmVzc1RyYWNr
ZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZUJ1ZmZlci5oIgpAQCAtMzc2LDcgKzM3NywxOCBAQAog
dm9pZCBNYWluUmVzb3VyY2VMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2Uq
IHJlc291cmNlLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByKQogewogICAgIEFTU0VSVF9VTlVT
RUQocmVzb3VyY2UsIG1fcmVzb3VyY2UgPT0gcmVzb3VyY2UpOwotICAgIGlmIChkb2N1bWVudExv
YWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLT5tYXliZUxvYWRGYWxsYmFja0Zvck1haW5S
ZXNwb25zZShyZXF1ZXN0KCksIHIpKQorICAgIGJvb2wgbG9hZEZhbGxiYWNrID0gZG9jdW1lbnRM
b2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS0+bWF5YmVMb2FkRmFsbGJhY2tGb3JNYWlu
UmVzcG9uc2UocmVxdWVzdCgpLCByKTsKKyAgICBib29sIHNob3VsZFJlbW92ZVJlc291cmNlRnJv
bUNhY2hlID0gbG9hZEZhbGxiYWNrOworI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorICAgIGlmIChy
LmFwcENhY2hlSUQoKSkKKyAgICAgICAgc2hvdWxkUmVtb3ZlUmVzb3VyY2VGcm9tQ2FjaGUgPSB0
cnVlOworI2VuZGlmCisKKyAgICAvLyBUaGUgbWVtb3J5IGNhY2hlIGRvZXNuJ3QgdW5kZXJzdGFu
ZCB0aGUgYXBwbGljYXRpb24gY2FjaGUgb3IgaXRzIGNhY2hpbmcgcnVsZXMuIFNvIGlmIGEgbWFp
biByZXNvdXJjZSBpcyBzZXJ2ZWQKKyAgICAvLyBmcm9tIHRoZSBhcHBsaWNhdGlvbiBjYWNoZSwg
ZW5zdXJlIHdlIGRvbid0IHNhdmUgdGhlIHJlc3VsdCBmb3IgZnV0dXJlIHVzZS4KKyAgICBpZiAo
c2hvdWxkUmVtb3ZlUmVzb3VyY2VGcm9tQ2FjaGUpCisgICAgICAgIG1lbW9yeUNhY2hlKCktPnJl
bW92ZShtX3Jlc291cmNlLmdldCgpKTsKKyAgICBpZiAobG9hZEZhbGxiYWNrKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgeEZyYW1lT3B0
aW9uSGVhZGVyLCAoIngtZnJhbWUtb3B0aW9ucyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpKTsKQEAgLTU0NCw2ICs1NTYsMTMgQEAKICAgICBkb2N1bWVudExvYWRlcigpLT50
aW1pbmcoKS0+c2V0UmVzcG9uc2VFbmQoZmluaXNoVGltZSA/IGZpbmlzaFRpbWUgOiAobV90aW1l
T2ZMYXN0RGF0YVJlY2VpdmVkID8gbV90aW1lT2ZMYXN0RGF0YVJlY2VpdmVkIDogbW9ub3Rvbmlj
YWxseUluY3JlYXNpbmdUaW1lKCkpKTsKICAgICBkb2N1bWVudExvYWRlcigpLT5maW5pc2hlZExv
YWRpbmcoKTsKIAorICAgIC8vIElmIHRoZSBkb2N1bWVudCBzcGVjaWZpZWQgYW4gYXBwbGljYXRp
b24gY2FjaGUgbWFuaWZlc3QsIGl0J3Mgcmlza3kgdG8gc3RvcmUgaW4gdGhlIG1lbW9yeSBjYWNo
ZQorICAgIC8vIGFuZCBkZW55IHRoZSBhcHBjYWNoZSB0aGUgY2hhbmNlIHRvIGludGVyY2VwdCBp
dCBpbiB0aGUgZnV0dXJlLCBzbyByZW1vdmUgZnJvbSB0aGUgbWVtb3J5IGNhY2hlLgorICAgIGlm
IChGcmFtZSogZnJhbWUgPSBkb2N1bWVudExvYWRlcigpLT5mcmFtZSgpKSB7CisgICAgICAgIGlm
IChmcmFtZS0+ZG9jdW1lbnQoKS0+aGFzTWFuaWZlc3QoKSkKKyAgICAgICAgICAgIG1lbW9yeUNh
Y2hlKCktPnJlbW92ZShtX3Jlc291cmNlLmdldCgpKTsKKyAgICB9CisKICAgICBkbC0+YXBwbGlj
YXRpb25DYWNoZUhvc3QoKS0+ZmluaXNoZWRMb2FkaW5nTWFpblJlc291cmNlKCk7CiB9CiAKQEAg
LTY2MCw2ICs2NzksMTEgQEAKICAgICAgICAgZG9jdW1lbnRMb2FkZXIoKS0+c2V0UmVxdWVzdChS
ZXNvdXJjZVJlcXVlc3QoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgaWYgKCFsb2Fk
ZXIoKSkgeworICAgICAgICBtX3N1YnN0aXR1dGVEYXRhTG9hZElkZW50aWZpZXIgPSBtX2RvY3Vt
ZW50TG9hZGVyLT5mcmFtZSgpLT5wYWdlKCktPnByb2dyZXNzKCktPmNyZWF0ZVVuaXF1ZUlkZW50
aWZpZXIoKTsKKyAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS0+YXNzaWduSWRlbnRp
ZmllclRvSW5pdGlhbFJlcXVlc3QobV9zdWJzdGl0dXRlRGF0YUxvYWRJZGVudGlmaWVyLCBkb2N1
bWVudExvYWRlcigpLCByZXF1ZXN0KTsKKyAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIo
KS0+ZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3QoZG9jdW1lbnRMb2FkZXIoKSwgbV9zdWJzdGl0dXRl
RGF0YUxvYWRJZGVudGlmaWVyLCByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlKCkpOworICAgIH0K
ICAgICBtX3Jlc291cmNlLT5hZGRDbGllbnQodGhpcyk7CiAKICAgICAvLyBXZSBuZWVkIHRvIHdh
aXQgdW50aWwgYWZ0ZXIgcmVxdWVzdE1haW5SZXNvdXJjZSgpIGlzIGNhbGxlZCB0byBzZXRSZXF1
ZXN0KCksIGJlY2F1c2UgdGhlcmUgYXJlIGEgYnVuY2ggb2YgaGVhZGVycyBzZXQgd2hlbgpAQCAt
NjY3LDYgKzY5MSw4IEBACiAgICAgLy8gc3RyaXAgdGhlIGZyYWdtZW50IGlkZW50aWZpZXIgKHdo
aWNoIERvY3VtZW50TG9hZGVyOjptX3JlcXVlc3Qgc2hvdWxkIGFsc28gaW5jbHVkZSksIHNvIGFk
ZCB0aGF0IGJhY2sgaW4uCiAgICAgaWYgKGxvYWRlcigpKQogICAgICAgICByZXF1ZXN0ID0gbG9h
ZGVyKCktPm9yaWdpbmFsUmVxdWVzdCgpOworICAgIGlmIChlcXVhbElnbm9yaW5nRnJhZ21lbnRJ
ZGVudGlmaWVyKGluaXRpYWxSZXF1ZXN0LnVybCgpLCByZXF1ZXN0LnVybCgpKSkKKyAgICAgICAg
cmVxdWVzdC5zZXRVUkwoaW5pdGlhbFJlcXVlc3QudXJsKCkpOwogICAgIGRvY3VtZW50TG9hZGVy
KCktPnNldFJlcXVlc3QocmVxdWVzdCk7CiB9CiAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzODg1NykK
KysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBA
CisyMDEzLTAxLTA0ICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgRW5hYmxlIHJldXNlIG9mIGNhY2hlZCBtYWluIHJlc291cmNlcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1NjY3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9y
ZXNvdXJjZS1oYXItcGFnZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvbG9h
ZGluZy9yZWRpcmVjdC1tZXRob2RzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3Rz
L21pc2MvZmF2aWNvbi1sb2Fkcy13aXRoLWltYWdlcy1kaXNhYmxlZC1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogaHR0cC90ZXN0cy9taXNjL2xpbmstcmVsLWljb24tYmVmb3JlbG9hZC1leHBlY3Rl
ZC50eHQ6CisKIDIwMTMtMDEtMDQgIFJpY2sgQnllcnMgIDxyYnllcnNAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFVSTCBkdXBsaWNhdGlvbiBpbiBtb3VzZSBjdXJzb3IgdGVzdHMgbWVhbiBtaW5v
ciB0eXBvcyBjYW4gY2F1c2UgZmxha2luZXNzCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9yZXNvdXJjZS1oYXItcGFnZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlLWhhci1wYWdlcy1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDEzODg1NykKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL3Jlc291cmNlLWhhci1wYWdlcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTEsNiArMSw1IEBACiBUZXN0cyBjb252ZXJzaW9uIG9mIEluc3BlY3RvcidzIHJlc291cmNlIHJl
cHJlc2VudGF0aW9uIGludG8gSEFSIGZvcm1hdC4KIAotUGFnZSByZWxvYWRlZC4KIHsKICAgICAw
IDogewogICAgICAgICBpZCA6IDxzdHJpbmc+CkBAIC0yOCw0ICsyNyw1IEBACiBwYWdlOiBwYWdl
XzEgdXJsOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL3Jlc291cmNlcy9oYXItcGFn
ZXMtbmF2aWdhdGlvbi10YXJnZXQuaHRtbAogcGFnZTogcGFnZV8xIHVybDogaHR0cDovLzEyNy4w
LjAuMTo4MDAwL2luc3BlY3Rvci9yZXNvdXJjZXMvc291cmNlMS5qcwogcGFnZTogcGFnZV8xIHVy
bDogaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291cmNlcy9yZWRpcmVjdC5waHA/dXJsPS9pbnNw
ZWN0b3IvcmVzb3VyY2VzL2hhci1wYWdlcy1uYXZpZ2F0aW9uLXRhcmdldC5odG1sCitQYWdlIHJl
bG9hZGVkLgogCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvbGluay1yZWwtaWNv
bi1iZWZvcmVsb2FkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL21pc2MvbGluay1yZWwtaWNvbi1iZWZvcmVsb2FkLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMTM4ODU3KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2xpbmstcmVsLWljb24t
YmVmb3JlbG9hZC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiA8
dW5rbm93bj4gLSBkaWRGaW5pc2hMb2FkaW5nCiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbWlzYy9s
aW5rLXJlbC1pY29uLWJlZm9yZWxvYWQuaHRtbCAtIHdpbGxTZW5kUmVxdWVzdCA8TlNVUkxSZXF1
ZXN0IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbWlzYy9saW5rLXJlbC1pY29uLWJlZm9yZWxv
YWQuaHRtbCwgbWFpbiBkb2N1bWVudCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL21pc2MvbGlu
ay1yZWwtaWNvbi1iZWZvcmVsb2FkLmh0bWwsIGh0dHAgbWV0aG9kIEdFVD4gcmVkaXJlY3RSZXNw
b25zZSAobnVsbCkKIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9taXNjL2xpbmstcmVsLWljb24tYmVm
b3JlbG9hZC5odG1sIC0gZGlkUmVjZWl2ZVJlc3BvbnNlIDxOU1VSTFJlc3BvbnNlIGh0dHA6Ly8x
MjcuMC4wLjE6ODAwMC9taXNjL2xpbmstcmVsLWljb24tYmVmb3JlbG9hZC5odG1sLCBodHRwIHN0
YXR1cyBjb2RlIDIwMD4KK2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9taXNjL2xpbmstcmVsLWljb24t
YmVmb3JlbG9hZC5odG1sIC0gZGlkRmluaXNoTG9hZGluZwogaHR0cDovLzEyNy4wLjAuMTo4MDAw
L2Zhdmljb24uaWNvIC0gd2lsbFNlbmRSZXF1ZXN0IDxOU1VSTFJlcXVlc3QgVVJMIGh0dHA6Ly8x
MjcuMC4wLjE6ODAwMC9mYXZpY29uLmljbywgbWFpbiBkb2N1bWVudCBVUkwgaHR0cDovLzEyNy4w
LjAuMTo4MDAwL21pc2MvbGluay1yZWwtaWNvbi1iZWZvcmVsb2FkLmh0bWwsIGh0dHAgbWV0aG9k
IEdFVD4gcmVkaXJlY3RSZXNwb25zZSAobnVsbCkKIFRoaXMgdGVzdCBzaG91bGQgbm90IHNob3cg
YSByZXF1ZXN0IGZvciB0aGUgZmF2aWNvbiBkb250LWxvYWQtdGhpcy5pY28sIHNpbmNlIHRoZSBi
ZWZvcmVsb2FkIGhhbmRsZXIgb24gdGhlIGZhdmljb24gbGluayByZXR1cm5zIGZhbHNlLiBUaGVy
ZWZvcmUsIGlmIHRoZSByZXNvdXJjZSByZXF1ZXN0IGxpc3QgYmVsb3cgc2hvd3MgYSByZXF1ZXN0
IGZvciBkb250LWxvYWQtdGhpcy5pY28sIHRoZW4gdGhpcyB0ZXN0IGhhcyBmYWlsZWQuCkluZGV4
OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvZmF2aWNvbi1sb2Fkcy13aXRoLWltYWdlcy1k
aXNhYmxlZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9taXNjL2Zhdmljb24tbG9hZHMtd2l0aC1pbWFnZXMtZGlzYWJsZWQtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAxMzg4NTcpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvZmF2aWNvbi1s
b2Fkcy13aXRoLWltYWdlcy1kaXNhYmxlZC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTEsNiArMSw3IEBACiA8dW5rbm93bj4gLSBkaWRGaW5pc2hMb2FkaW5nCiBodHRwOi8vMTI3LjAu
MC4xOjgwMDAvbWlzYy9mYXZpY29uLWxvYWRzLXdpdGgtaW1hZ2VzLWRpc2FibGVkLmh0bWwgLSB3
aWxsU2VuZFJlcXVlc3QgPE5TVVJMUmVxdWVzdCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL21p
c2MvZmF2aWNvbi1sb2Fkcy13aXRoLWltYWdlcy1kaXNhYmxlZC5odG1sLCBtYWluIGRvY3VtZW50
IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbWlzYy9mYXZpY29uLWxvYWRzLXdpdGgtaW1hZ2Vz
LWRpc2FibGVkLmh0bWwsIGh0dHAgbWV0aG9kIEdFVD4gcmVkaXJlY3RSZXNwb25zZSAobnVsbCkK
IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9taXNjL2Zhdmljb24tbG9hZHMtd2l0aC1pbWFnZXMtZGlz
YWJsZWQuaHRtbCAtIGRpZFJlY2VpdmVSZXNwb25zZSA8TlNVUkxSZXNwb25zZSBodHRwOi8vMTI3
LjAuMC4xOjgwMDAvbWlzYy9mYXZpY29uLWxvYWRzLXdpdGgtaW1hZ2VzLWRpc2FibGVkLmh0bWws
IGh0dHAgc3RhdHVzIGNvZGUgMjAwPgoraHR0cDovLzEyNy4wLjAuMTo4MDAwL21pc2MvZmF2aWNv
bi1sb2Fkcy13aXRoLWltYWdlcy1kaXNhYmxlZC5odG1sIC0gZGlkRmluaXNoTG9hZGluZwogUmFk
YXIgNjk3MzEwNiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3
ODk2IC0gRmF2aWNvbnMgc3RpbGwgbG9hZCB3aGVuIGF1dG9tYXRpYyBpbWFnZSBsb2FkaW5nIGlz
IGRpc2FibGVkLgogVGhpcyB0ZXN0IHVzZXMgRFJUJ3MgcmVzb3VyY2UgbG9hZCBkZWxlZ2F0ZSBj
YWxsYmFjayBtb2RlIHRvIHNlZSBpZiB0aGUgZmF2aWNvbiBpcyBsb2FkZWQgZXZlbiB3aGVuIGlt
YWdlIGxvYWRpbmcgaXMgb2ZmLgogCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRp
bmcvcmVkaXJlY3QtbWV0aG9kcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9sb2FkaW5nL3JlZGlyZWN0LW1ldGhvZHMtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAxMzg4NTcpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvcmVkaXJlY3Qt
bWV0aG9kcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQyLDExICs0MiwxMSBAQAog
aHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMt
Zm9ybS5odG1sIC0gZGlkUmVjZWl2ZVJlc3BvbnNlIDxOU1VSTFJlc3BvbnNlIGh0dHA6Ly8xMjcu
MC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLWZvcm0uaHRtbCwg
aHR0cCBzdGF0dXMgY29kZSAyMDA+CiBmcmFtZSAiMSIgLSBkaWRDYW5jZWxDbGllbnRSZWRpcmVj
dEZvckZyYW1lCiBmcmFtZSAiMSIgLSBkaWRDb21taXRMb2FkRm9yRnJhbWUKK2h0dHA6Ly8xMjcu
MC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLWZvcm0uaHRtbCAt
IGRpZEZpbmlzaExvYWRpbmcKIGZyYW1lICIxIiAtIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZy
YW1lCiBmcmFtZSAiMSIgLSB3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0VG9VUkw6IGh0dHA6Ly8x
MjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLXJlc3VsdC5w
aHAgCiBmcmFtZSAiMSIgLSBkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZQogZnJhbWUgIjEi
IC0gZGlkRmluaXNoTG9hZEZvckZyYW1lCi1odHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9y
ZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1mb3JtLmh0bWwgLSBkaWRGaW5pc2hMb2FkaW5nCiBm
cmFtZSAiMSIgLSBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lCiBodHRwOi8vMTI3LjAu
MC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1yZXN1bHQucGhwIC0g
d2lsbFNlbmRSZXF1ZXN0IDxOU1VSTFJlcXVlc3QgVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9s
b2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLXJlc3VsdC5waHAsIG1haW4gZG9jdW1l
bnQgVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3JlZGlyZWN0LW1ldGhvZHMuaHRt
bCwgaHR0cCBtZXRob2QgUE9TVD4gcmVkaXJlY3RSZXNwb25zZSAobnVsbCkKIGh0dHA6Ly8xMjcu
MC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLXJlc3VsdC5waHAg
LSB3aWxsU2VuZFJlcXVlc3QgPE5TVVJMUmVxdWVzdCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAw
L2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtcmVzdWx0LnBocD9yZWRpcmVjdGVk
PXRydWUsIG1haW4gZG9jdW1lbnQgVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jl
ZGlyZWN0LW1ldGhvZHMuaHRtbCwgaHR0cCBtZXRob2QgR0VUPiByZWRpcmVjdFJlc3BvbnNlIDxO
U1VSTFJlc3BvbnNlIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRp
cmVjdC1tZXRob2RzLXJlc3VsdC5waHAsIGh0dHAgc3RhdHVzIGNvZGUgMzAyPgpAQCAtNjksMTEg
KzY5LDExIEBACiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJl
Y3QtbWV0aG9kcy1mb3JtLmh0bWwgLSBkaWRSZWNlaXZlUmVzcG9uc2UgPE5TVVJMUmVzcG9uc2Ug
aHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMt
Zm9ybS5odG1sLCBodHRwIHN0YXR1cyBjb2RlIDIwMD4KIGZyYW1lICIyIiAtIGRpZENhbmNlbENs
aWVudFJlZGlyZWN0Rm9yRnJhbWUKIGZyYW1lICIyIiAtIGRpZENvbW1pdExvYWRGb3JGcmFtZQor
aHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMt
Zm9ybS5odG1sIC0gZGlkRmluaXNoTG9hZGluZwogZnJhbWUgIjIiIC0gZGlkRmluaXNoRG9jdW1l
bnRMb2FkRm9yRnJhbWUKIGZyYW1lICIyIiAtIHdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RUb1VS
TDogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhv
ZHMtcmVzdWx0LnBocCAKIGZyYW1lICIyIiAtIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1l
CiBmcmFtZSAiMiIgLSBkaWRGaW5pc2hMb2FkRm9yRnJhbWUKLWh0dHA6Ly8xMjcuMC4wLjE6ODAw
MC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLWZvcm0uaHRtbCAtIGRpZEZpbmlz
aExvYWRpbmcKIGZyYW1lICIyIiAtIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUKIGh0
dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLXJl
c3VsdC5waHAgLSB3aWxsU2VuZFJlcXVlc3QgPE5TVVJMUmVxdWVzdCBVUkwgaHR0cDovLzEyNy4w
LjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtcmVzdWx0LnBocCwg
bWFpbiBkb2N1bWVudCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVkaXJlY3Qt
bWV0aG9kcy5odG1sLCBodHRwIG1ldGhvZCBQT1NUPiByZWRpcmVjdFJlc3BvbnNlIChudWxsKQog
aHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMt
cmVzdWx0LnBocCAtIHdpbGxTZW5kUmVxdWVzdCA8TlNVUkxSZXF1ZXN0IFVSTCBodHRwOi8vMTI3
LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1yZXN1bHQucGhw
P3JlZGlyZWN0ZWQ9dHJ1ZSwgbWFpbiBkb2N1bWVudCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAw
L2xvYWRpbmcvcmVkaXJlY3QtbWV0aG9kcy5odG1sLCBodHRwIG1ldGhvZCBHRVQ+IHJlZGlyZWN0
UmVzcG9uc2UgPE5TVVJMUmVzcG9uc2UgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVz
b3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtcmVzdWx0LnBocCwgaHR0cCBzdGF0dXMgY29kZSAzMDM+
CkBAIC05NiwxMSArOTYsMTEgQEAKIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291
cmNlcy9yZWRpcmVjdC1tZXRob2RzLWZvcm0uaHRtbCAtIGRpZFJlY2VpdmVSZXNwb25zZSA8TlNV
UkxSZXNwb25zZSBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJl
Y3QtbWV0aG9kcy1mb3JtLmh0bWwsIGh0dHAgc3RhdHVzIGNvZGUgMjAwPgogZnJhbWUgIjMiIC0g
ZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZQogZnJhbWUgIjMiIC0gZGlkQ29tbWl0TG9h
ZEZvckZyYW1lCitodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJl
Y3QtbWV0aG9kcy1mb3JtLmh0bWwgLSBkaWRGaW5pc2hMb2FkaW5nCiBmcmFtZSAiMyIgLSBkaWRG
aW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZQogZnJhbWUgIjMiIC0gd2lsbFBlcmZvcm1DbGllbnRS
ZWRpcmVjdFRvVVJMOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVk
aXJlY3QtbWV0aG9kcy1yZXN1bHQucGhwIAogZnJhbWUgIjMiIC0gZGlkSGFuZGxlT25sb2FkRXZl
bnRzRm9yRnJhbWUKIGZyYW1lICIzIiAtIGRpZEZpbmlzaExvYWRGb3JGcmFtZQotaHR0cDovLzEy
Ny4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtZm9ybS5odG1s
IC0gZGlkRmluaXNoTG9hZGluZwogZnJhbWUgIjMiIC0gZGlkU3RhcnRQcm92aXNpb25hbExvYWRG
b3JGcmFtZQogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0
LW1ldGhvZHMtcmVzdWx0LnBocCAtIHdpbGxTZW5kUmVxdWVzdCA8TlNVUkxSZXF1ZXN0IFVSTCBo
dHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1y
ZXN1bHQucGhwLCBtYWluIGRvY3VtZW50IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGlu
Zy9yZWRpcmVjdC1tZXRob2RzLmh0bWwsIGh0dHAgbWV0aG9kIFBPU1Q+IHJlZGlyZWN0UmVzcG9u
c2UgKG51bGwpCiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJl
Y3QtbWV0aG9kcy1yZXN1bHQucGhwIC0gd2lsbFNlbmRSZXF1ZXN0IDxOU1VSTFJlcXVlc3QgVVJM
IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2Rz
LXJlc3VsdC5waHA/cmVkaXJlY3RlZD10cnVlLCBtYWluIGRvY3VtZW50IFVSTCBodHRwOi8vMTI3
LjAuMC4xOjgwMDAvbG9hZGluZy9yZWRpcmVjdC1tZXRob2RzLmh0bWwsIGh0dHAgbWV0aG9kIFBP
U1Q+IHJlZGlyZWN0UmVzcG9uc2UgPE5TVVJMUmVzcG9uc2UgaHR0cDovLzEyNy4wLjAuMTo4MDAw
L2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtcmVzdWx0LnBocCwgaHR0cCBzdGF0
dXMgY29kZSAzMDc+Cg==
</data>
<flag name="commit-queue"
          id="199026"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181542</attachid>
            <date>2013-01-07 12:01:08 -0800</date>
            <delta_ts>2013-01-14 11:59:25 -0800</delta_ts>
            <desc>Address abarth&apos;s comments, fix mac crashes</desc>
            <filename>cmr2.txt</filename>
            <type>text/plain</type>
            <size>20967</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDEzODk2NykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDEzLTAxLTA0ICBOYXRlIENoYXBpbiAgPGph
cGhldEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgRW5hYmxlIHJldXNlIG9mIGNhY2hlZCBtYWlu
IHJlc291cmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTA1NjY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZS1oYXItcGFnZXMtZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIGh0dHAvdGVzdHMvbG9hZGluZy9yZWRpcmVjdC1tZXRob2RzLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL21pc2MvZmF2aWNvbi1sb2Fkcy13aXRoLWltYWdl
cy1kaXNhYmxlZC1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9taXNjL2xpbmst
cmVsLWljb24tYmVmb3JlbG9hZC1leHBlY3RlZC50eHQ6CisKIDIwMTMtMDEtMDcgIE9qYW4gVmFm
YWkgIDxvamFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZWJhc2VsaW5lcyBhZnRlciBodHRw
Oi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xMzg4MzguCkluZGV4OiBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZS1oYXItcGFnZXMtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlLWhhci1w
YWdlcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDEzODk2NykKKysrIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlLWhhci1wYWdlcy1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNiArMSw1IEBACiBUZXN0cyBjb252ZXJzaW9uIG9mIEluc3BlY3RvcidzIHJl
c291cmNlIHJlcHJlc2VudGF0aW9uIGludG8gSEFSIGZvcm1hdC4KIAotUGFnZSByZWxvYWRlZC4K
IHsKICAgICAwIDogewogICAgICAgICBpZCA6IDxzdHJpbmc+CkBAIC0yOCw0ICsyNyw1IEBACiBw
YWdlOiBwYWdlXzEgdXJsOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL3Jlc291cmNl
cy9oYXItcGFnZXMtbmF2aWdhdGlvbi10YXJnZXQuaHRtbAogcGFnZTogcGFnZV8xIHVybDogaHR0
cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9yZXNvdXJjZXMvc291cmNlMS5qcwogcGFnZTog
cGFnZV8xIHVybDogaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291cmNlcy9yZWRpcmVjdC5waHA/
dXJsPS9pbnNwZWN0b3IvcmVzb3VyY2VzL2hhci1wYWdlcy1uYXZpZ2F0aW9uLXRhcmdldC5odG1s
CitQYWdlIHJlbG9hZGVkLgogCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvbGlu
ay1yZWwtaWNvbi1iZWZvcmVsb2FkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL21pc2MvbGluay1yZWwtaWNvbi1iZWZvcmVsb2FkLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMTM4OTY3KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2xpbmst
cmVsLWljb24tYmVmb3JlbG9hZC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw2IEBACiA8dW5rbm93bj4gLSBkaWRGaW5pc2hMb2FkaW5nCiBodHRwOi8vMTI3LjAuMC4xOjgw
MDAvbWlzYy9saW5rLXJlbC1pY29uLWJlZm9yZWxvYWQuaHRtbCAtIHdpbGxTZW5kUmVxdWVzdCA8
TlNVUkxSZXF1ZXN0IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbWlzYy9saW5rLXJlbC1pY29u
LWJlZm9yZWxvYWQuaHRtbCwgbWFpbiBkb2N1bWVudCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAw
L21pc2MvbGluay1yZWwtaWNvbi1iZWZvcmVsb2FkLmh0bWwsIGh0dHAgbWV0aG9kIEdFVD4gcmVk
aXJlY3RSZXNwb25zZSAobnVsbCkKIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9taXNjL2xpbmstcmVs
LWljb24tYmVmb3JlbG9hZC5odG1sIC0gZGlkUmVjZWl2ZVJlc3BvbnNlIDxOU1VSTFJlc3BvbnNl
IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9taXNjL2xpbmstcmVsLWljb24tYmVmb3JlbG9hZC5odG1s
LCBodHRwIHN0YXR1cyBjb2RlIDIwMD4KK2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9taXNjL2xpbmst
cmVsLWljb24tYmVmb3JlbG9hZC5odG1sIC0gZGlkRmluaXNoTG9hZGluZwogaHR0cDovLzEyNy4w
LjAuMTo4MDAwL2Zhdmljb24uaWNvIC0gd2lsbFNlbmRSZXF1ZXN0IDxOU1VSTFJlcXVlc3QgVVJM
IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9mYXZpY29uLmljbywgbWFpbiBkb2N1bWVudCBVUkwgaHR0
cDovLzEyNy4wLjAuMTo4MDAwL21pc2MvbGluay1yZWwtaWNvbi1iZWZvcmVsb2FkLmh0bWwsIGh0
dHAgbWV0aG9kIEdFVD4gcmVkaXJlY3RSZXNwb25zZSAobnVsbCkKIFRoaXMgdGVzdCBzaG91bGQg
bm90IHNob3cgYSByZXF1ZXN0IGZvciB0aGUgZmF2aWNvbiBkb250LWxvYWQtdGhpcy5pY28sIHNp
bmNlIHRoZSBiZWZvcmVsb2FkIGhhbmRsZXIgb24gdGhlIGZhdmljb24gbGluayByZXR1cm5zIGZh
bHNlLiBUaGVyZWZvcmUsIGlmIHRoZSByZXNvdXJjZSByZXF1ZXN0IGxpc3QgYmVsb3cgc2hvd3Mg
YSByZXF1ZXN0IGZvciBkb250LWxvYWQtdGhpcy5pY28sIHRoZW4gdGhpcyB0ZXN0IGhhcyBmYWls
ZWQuCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvZmF2aWNvbi1sb2Fkcy13aXRo
LWltYWdlcy1kaXNhYmxlZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9taXNjL2Zhdmljb24tbG9hZHMtd2l0aC1pbWFnZXMtZGlzYWJsZWQtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAxMzg5NjcpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2Mv
ZmF2aWNvbi1sb2Fkcy13aXRoLWltYWdlcy1kaXNhYmxlZC1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNiArMSw3IEBACiA8dW5rbm93bj4gLSBkaWRGaW5pc2hMb2FkaW5nCiBodHRw
Oi8vMTI3LjAuMC4xOjgwMDAvbWlzYy9mYXZpY29uLWxvYWRzLXdpdGgtaW1hZ2VzLWRpc2FibGVk
Lmh0bWwgLSB3aWxsU2VuZFJlcXVlc3QgPE5TVVJMUmVxdWVzdCBVUkwgaHR0cDovLzEyNy4wLjAu
MTo4MDAwL21pc2MvZmF2aWNvbi1sb2Fkcy13aXRoLWltYWdlcy1kaXNhYmxlZC5odG1sLCBtYWlu
IGRvY3VtZW50IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbWlzYy9mYXZpY29uLWxvYWRzLXdp
dGgtaW1hZ2VzLWRpc2FibGVkLmh0bWwsIGh0dHAgbWV0aG9kIEdFVD4gcmVkaXJlY3RSZXNwb25z
ZSAobnVsbCkKIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9taXNjL2Zhdmljb24tbG9hZHMtd2l0aC1p
bWFnZXMtZGlzYWJsZWQuaHRtbCAtIGRpZFJlY2VpdmVSZXNwb25zZSA8TlNVUkxSZXNwb25zZSBo
dHRwOi8vMTI3LjAuMC4xOjgwMDAvbWlzYy9mYXZpY29uLWxvYWRzLXdpdGgtaW1hZ2VzLWRpc2Fi
bGVkLmh0bWwsIGh0dHAgc3RhdHVzIGNvZGUgMjAwPgoraHR0cDovLzEyNy4wLjAuMTo4MDAwL21p
c2MvZmF2aWNvbi1sb2Fkcy13aXRoLWltYWdlcy1kaXNhYmxlZC5odG1sIC0gZGlkRmluaXNoTG9h
ZGluZwogUmFkYXIgNjk3MzEwNiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTI3ODk2IC0gRmF2aWNvbnMgc3RpbGwgbG9hZCB3aGVuIGF1dG9tYXRpYyBpbWFnZSBs
b2FkaW5nIGlzIGRpc2FibGVkLgogVGhpcyB0ZXN0IHVzZXMgRFJUJ3MgcmVzb3VyY2UgbG9hZCBk
ZWxlZ2F0ZSBjYWxsYmFjayBtb2RlIHRvIHNlZSBpZiB0aGUgZmF2aWNvbiBpcyBsb2FkZWQgZXZl
biB3aGVuIGltYWdlIGxvYWRpbmcgaXMgb2ZmLgogCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2xvYWRpbmcvcmVkaXJlY3QtbWV0aG9kcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL3JlZGlyZWN0LW1ldGhvZHMtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAxMzg5NjcpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcv
cmVkaXJlY3QtbWV0aG9kcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQyLDExICs0
MiwxMSBAQAogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0
LW1ldGhvZHMtZm9ybS5odG1sIC0gZGlkUmVjZWl2ZVJlc3BvbnNlIDxOU1VSTFJlc3BvbnNlIGh0
dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLWZv
cm0uaHRtbCwgaHR0cCBzdGF0dXMgY29kZSAyMDA+CiBmcmFtZSAiMSIgLSBkaWRDYW5jZWxDbGll
bnRSZWRpcmVjdEZvckZyYW1lCiBmcmFtZSAiMSIgLSBkaWRDb21taXRMb2FkRm9yRnJhbWUKK2h0
dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLWZv
cm0uaHRtbCAtIGRpZEZpbmlzaExvYWRpbmcKIGZyYW1lICIxIiAtIGRpZEZpbmlzaERvY3VtZW50
TG9hZEZvckZyYW1lCiBmcmFtZSAiMSIgLSB3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0VG9VUkw6
IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2Rz
LXJlc3VsdC5waHAgCiBmcmFtZSAiMSIgLSBkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZQog
ZnJhbWUgIjEiIC0gZGlkRmluaXNoTG9hZEZvckZyYW1lCi1odHRwOi8vMTI3LjAuMC4xOjgwMDAv
bG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1mb3JtLmh0bWwgLSBkaWRGaW5pc2hM
b2FkaW5nCiBmcmFtZSAiMSIgLSBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lCiBodHRw
Oi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1yZXN1
bHQucGhwIC0gd2lsbFNlbmRSZXF1ZXN0IDxOU1VSTFJlcXVlc3QgVVJMIGh0dHA6Ly8xMjcuMC4w
LjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLXJlc3VsdC5waHAsIG1h
aW4gZG9jdW1lbnQgVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3JlZGlyZWN0LW1l
dGhvZHMuaHRtbCwgaHR0cCBtZXRob2QgUE9TVD4gcmVkaXJlY3RSZXNwb25zZSAobnVsbCkKIGh0
dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLXJl
c3VsdC5waHAgLSB3aWxsU2VuZFJlcXVlc3QgPE5TVVJMUmVxdWVzdCBVUkwgaHR0cDovLzEyNy4w
LjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtcmVzdWx0LnBocD9y
ZWRpcmVjdGVkPXRydWUsIG1haW4gZG9jdW1lbnQgVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9s
b2FkaW5nL3JlZGlyZWN0LW1ldGhvZHMuaHRtbCwgaHR0cCBtZXRob2QgR0VUPiByZWRpcmVjdFJl
c3BvbnNlIDxOU1VSTFJlc3BvbnNlIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291
cmNlcy9yZWRpcmVjdC1tZXRob2RzLXJlc3VsdC5waHAsIGh0dHAgc3RhdHVzIGNvZGUgMzAyPgpA
QCAtNjksMTEgKzY5LDExIEBACiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJj
ZXMvcmVkaXJlY3QtbWV0aG9kcy1mb3JtLmh0bWwgLSBkaWRSZWNlaXZlUmVzcG9uc2UgPE5TVVJM
UmVzcG9uc2UgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0
LW1ldGhvZHMtZm9ybS5odG1sLCBodHRwIHN0YXR1cyBjb2RlIDIwMD4KIGZyYW1lICIyIiAtIGRp
ZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWUKIGZyYW1lICIyIiAtIGRpZENvbW1pdExvYWRG
b3JGcmFtZQoraHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0
LW1ldGhvZHMtZm9ybS5odG1sIC0gZGlkRmluaXNoTG9hZGluZwogZnJhbWUgIjIiIC0gZGlkRmlu
aXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUKIGZyYW1lICIyIiAtIHdpbGxQZXJmb3JtQ2xpZW50UmVk
aXJlY3RUb1VSTDogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGly
ZWN0LW1ldGhvZHMtcmVzdWx0LnBocCAKIGZyYW1lICIyIiAtIGRpZEhhbmRsZU9ubG9hZEV2ZW50
c0ZvckZyYW1lCiBmcmFtZSAiMiIgLSBkaWRGaW5pc2hMb2FkRm9yRnJhbWUKLWh0dHA6Ly8xMjcu
MC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLWZvcm0uaHRtbCAt
IGRpZEZpbmlzaExvYWRpbmcKIGZyYW1lICIyIiAtIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9y
RnJhbWUKIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1t
ZXRob2RzLXJlc3VsdC5waHAgLSB3aWxsU2VuZFJlcXVlc3QgPE5TVVJMUmVxdWVzdCBVUkwgaHR0
cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtcmVz
dWx0LnBocCwgbWFpbiBkb2N1bWVudCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcv
cmVkaXJlY3QtbWV0aG9kcy5odG1sLCBodHRwIG1ldGhvZCBQT1NUPiByZWRpcmVjdFJlc3BvbnNl
IChudWxsKQogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0
LW1ldGhvZHMtcmVzdWx0LnBocCAtIHdpbGxTZW5kUmVxdWVzdCA8TlNVUkxSZXF1ZXN0IFVSTCBo
dHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1y
ZXN1bHQucGhwP3JlZGlyZWN0ZWQ9dHJ1ZSwgbWFpbiBkb2N1bWVudCBVUkwgaHR0cDovLzEyNy4w
LjAuMTo4MDAwL2xvYWRpbmcvcmVkaXJlY3QtbWV0aG9kcy5odG1sLCBodHRwIG1ldGhvZCBHRVQ+
IHJlZGlyZWN0UmVzcG9uc2UgPE5TVVJMUmVzcG9uc2UgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xv
YWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtcmVzdWx0LnBocCwgaHR0cCBzdGF0dXMg
Y29kZSAzMDM+CkBAIC05NiwxMSArOTYsMTEgQEAKIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2Fk
aW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLWZvcm0uaHRtbCAtIGRpZFJlY2VpdmVSZXNw
b25zZSA8TlNVUkxSZXNwb25zZSBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJj
ZXMvcmVkaXJlY3QtbWV0aG9kcy1mb3JtLmh0bWwsIGh0dHAgc3RhdHVzIGNvZGUgMjAwPgogZnJh
bWUgIjMiIC0gZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZQogZnJhbWUgIjMiIC0gZGlk
Q29tbWl0TG9hZEZvckZyYW1lCitodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJj
ZXMvcmVkaXJlY3QtbWV0aG9kcy1mb3JtLmh0bWwgLSBkaWRGaW5pc2hMb2FkaW5nCiBmcmFtZSAi
MyIgLSBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZQogZnJhbWUgIjMiIC0gd2lsbFBlcmZv
cm1DbGllbnRSZWRpcmVjdFRvVVJMOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNv
dXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1yZXN1bHQucGhwIAogZnJhbWUgIjMiIC0gZGlkSGFuZGxl
T25sb2FkRXZlbnRzRm9yRnJhbWUKIGZyYW1lICIzIiAtIGRpZEZpbmlzaExvYWRGb3JGcmFtZQot
aHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMt
Zm9ybS5odG1sIC0gZGlkRmluaXNoTG9hZGluZwogZnJhbWUgIjMiIC0gZGlkU3RhcnRQcm92aXNp
b25hbExvYWRGb3JGcmFtZQogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2Vz
L3JlZGlyZWN0LW1ldGhvZHMtcmVzdWx0LnBocCAtIHdpbGxTZW5kUmVxdWVzdCA8TlNVUkxSZXF1
ZXN0IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3Qt
bWV0aG9kcy1yZXN1bHQucGhwLCBtYWluIGRvY3VtZW50IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgw
MDAvbG9hZGluZy9yZWRpcmVjdC1tZXRob2RzLmh0bWwsIGh0dHAgbWV0aG9kIFBPU1Q+IHJlZGly
ZWN0UmVzcG9uc2UgKG51bGwpCiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJj
ZXMvcmVkaXJlY3QtbWV0aG9kcy1yZXN1bHQucGhwIC0gd2lsbFNlbmRSZXF1ZXN0IDxOU1VSTFJl
cXVlc3QgVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVj
dC1tZXRob2RzLXJlc3VsdC5waHA/cmVkaXJlY3RlZD10cnVlLCBtYWluIGRvY3VtZW50IFVSTCBo
dHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZWRpcmVjdC1tZXRob2RzLmh0bWwsIGh0dHAg
bWV0aG9kIFBPU1Q+IHJlZGlyZWN0UmVzcG9uc2UgPE5TVVJMUmVzcG9uc2UgaHR0cDovLzEyNy4w
LjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtcmVzdWx0LnBocCwg
aHR0cCBzdGF0dXMgY29kZSAzMDc+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNpb24g
MTM4OTY3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTM0MCw2ICszNDAsOCBAQAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fZG9jdW1lbnRFbGVt
ZW50LmdldCgpOwogICAgIH0KKworICAgIGJvb2wgaGFzTWFuaWZlc3QoKSBjb25zdDsKICAgICAK
ICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RWxlbWVudD4gY3JlYXRlRWxlbWVudChjb25zdCBBdG9t
aWNTdHJpbmcmIHRhZ05hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBQYXNzUmVmUHRyPERvY3Vt
ZW50RnJhZ21lbnQ+IGNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAkocmV2aXNpb24gMTM4OTY3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODM2LDYgKzgzNiwxMSBAQAogICAgIHJldHVybiBt
X2ltcGxlbWVudGF0aW9uLmdldCgpOwogfQogCitib29sIERvY3VtZW50OjpoYXNNYW5pZmVzdCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIGRvY3VtZW50RWxlbWVudCgpICYmIGRvY3VtZW50RWxlbWVu
dCgpLT5oYXNUYWdOYW1lKGh0bWxUYWcpICYmIGRvY3VtZW50RWxlbWVudCgpLT5oYXNBdHRyaWJ1
dGUobWFuaWZlc3RBdHRyKTsKK30KKwogdm9pZCBEb2N1bWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJv
b2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFmdGVyQ2hhbmdl
LCBpbnQgY2hpbGRDb3VudERlbHRhKQogewogICAgIENvbnRhaW5lck5vZGU6OmNoaWxkcmVuQ2hh
bmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291
bnREZWx0YSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzg5NjcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzNCBAQAorMjAxMy0wMS0w
NCAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEVuYWJsZSBy
ZXVzZSBvZiBjYWNoZWQgbWFpbiByZXNvdXJjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTY2NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgdGhvdWdoIHJlc291cmNlIGxvYWQg
Y2FsbGJhY2tzIGhhcHBlbiBpbiBhIHNsaWdodGx5IGRpZmZlcmVudCBvcmRlci4KKyAgICAgICAg
TmFtZWx5LCBkaWRGaW5pc2hMb2FkaW5nIGhhcHBlbnMgZWFybGllciBpbiB0aGUgY2FjaGUgb2Yg
YSBjYWNoZSBoaXQuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6Omhhc01hbmlmZXN0KTogUmV0dXJucyB0cnVlIGlmIHRoZSA8aHRtbD4g
ZWxlbWVudCBoYXMgYSBub24tZW1wdHkgbWFuaWZlc3QgYXR0cmlidXRlLgorICAgICAgICAqIGRv
bS9Eb2N1bWVudC5oOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZGVkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUpOiBE
b24ndCBzZW5kIGRlbGVnYXRlIGNhbGxiYWNrcyBmb3IgY2FjaGUgaGl0IGhlcmUsIHNpbmNlCisg
ICAgICAgICAgICBNYWluUmVzb3VyY2VMb2FkZXIgd2lsbCB0YWtlIGNhcmUgb2YgaXQuCisgICAg
ICAgICogbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
YWluUmVzb3VyY2VMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQpOiBEb24ndCB0cnkgdG8gY2FjaGUg
bG9hZHMgZnJvbSB0aGUgYXBwbGljYXRpb24gY2FjaGUuCisgICAgICAgIChXZWJDb3JlOjpNYWlu
UmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcpOiBEb24ndCB0cnkgdG8gY2FjaGUgbG9h
ZHMgZnJvbSB0aGUgYXBwbGljYXRpb24gY2FjaGUuCisgICAgICAgIChXZWJDb3JlOjpNYWluUmVz
b3VyY2VMb2FkZXI6OmxvYWQpOiBFbnN1cmUgd2UgY3JlYXRlIGEgcmVzb3VyY2UgbG9hZCBpZGVu
dGlmaWVyIGZvciBjYWNoZSBoaXRzLiBBbHNvLAorICAgICAgICAgICAgZW5zdXJlIHdlIGNvcnJl
Y3RseSBwb3B1YWxhdGUgZnJhZ21lbnQgaWRlbnRpZmllcnMgaW4gdGhlIFJlc291cmNlUmVxdWVz
dCByZXBvcnRlZCB0byBEb2N1bWVudExvYWRlci4KKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkUmF3UmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6
OmRpZEFkZENsaWVudCk6IFN5bnRoZXNpemUgcmVkaXJlY3Qgbm90aWZpY2F0aW9ucyBmb3IgY2Fj
aGUgaGl0cyBpZiBuZWNlc3NhcnkuCisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJj
ZTo6d2lsbFNlbmRSZXF1ZXN0KTogTm90ZSB0aGUgcmVkaXJlY3RzIHdlIHJlY2VpdmVkLgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmNhblJldXNlKTogRG9uJ3QgcmV1c2Ug
YSByZXNvdXJjZSBpZiB0aGUgcmVkaXJlY3QgY2hhaW4gaW5jbHVkZWQgYSAiQ2FjaGUtY29udHJv
bDogbm8tc3RvcmUiLgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5o
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6YWRkQ2xpZW50VG9TZXQpOiBEb24ndCByZXR1cm4gY2Fj
aGVkIGRhdGEgZm9yIGEgbWFpbiByZXNvdXJjZSBzeW5jaHJvbm91c2x5LgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRSZXNvdXJjZUxvYWRlcjo6ZGV0ZXJtaW5lUmV2YWxpZGF0aW9uUG9saWN5KTogUGVybWl0
IGNhY2hlIHJldXNlIGZvciBtYWluIHJlc291cmNlcy4KKwogMjAxMy0wMS0wNyAgVmljdG9yIENh
cmJ1bmUgIDx2aWN0b3JAcm9zZWR1Lm9yZz4KIAogICAgICAgICBbVHJhY2tdIFJlbmRlcmluZyBj
cmFzaApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiAx
Mzg5NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yODg3LDYgKzI4ODcsMTAgQEAKICAgICBpZiAoIXJlc291cmNlLT5zaG91bGRT
ZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCkgfHwgbV9kb2N1bWVudExvYWRlci0+aGF2ZVRvbGRD
bGllbnRBYm91dExvYWQocmVzb3VyY2UtPnVybCgpKSkKICAgICAgICAgcmV0dXJuOwogCisgICAg
Ly8gTWFpbiByZXNvdXJjZSBkZWxlZ2F0ZSBtZXNzYWdlcyBhcmUgc3ludGhlc2l6ZWQgaW4gdGhl
IHNhbWUgd2F5IGFzIG1haW4gcmVzb3VyY2UgU3Vic3RpdHV0ZURhdGEgbG9hZHMuCisgICAgaWYg
KHJlc291cmNlLT50eXBlKCkgPT0gQ2FjaGVkUmVzb3VyY2U6Ok1haW5SZXNvdXJjZSkKKyAgICAg
ICAgcmV0dXJuOworCiAgICAgaWYgKCFwYWdlLT5hcmVNZW1vcnlDYWNoZUNsaWVudENhbGxzRW5h
YmxlZCgpKSB7CiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTG9hZFJlc291
cmNlRnJvbU1lbW9yeUNhY2hlKHBhZ2UsIG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIHJlc291cmNl
KTsKICAgICAgICAgbV9kb2N1bWVudExvYWRlci0+cmVjb3JkTWVtb3J5Q2FjaGVMb2FkRm9yRnV0
dXJlQ2xpZW50Tm90aWZpY2F0aW9uKHJlc291cmNlLT51cmwoKSk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAJKHJl
dmlzaW9uIDEzODk2NykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0MCwxMiArNTQwLDkgQEAKICAgICAg
ICAgcmV0dXJuIFJlbG9hZDsKICAgICB9CiAKLSAgICBpZiAoZXhpc3RpbmdSZXNvdXJjZS0+dHlw
ZSgpID09IENhY2hlZFJlc291cmNlOjpNYWluUmVzb3VyY2UpCisgICAgaWYgKChleGlzdGluZ1Jl
c291cmNlLT50eXBlKCkgPT0gQ2FjaGVkUmVzb3VyY2U6Ok1haW5SZXNvdXJjZSB8fCBleGlzdGlu
Z1Jlc291cmNlLT50eXBlKCkgPT0gQ2FjaGVkUmVzb3VyY2U6OlJhd1Jlc291cmNlKSAmJiAhc3Rh
dGljX2Nhc3Q8Q2FjaGVkUmF3UmVzb3VyY2UqPihleGlzdGluZ1Jlc291cmNlKS0+Y2FuUmV1c2Uo
cmVxdWVzdCkpCiAgICAgICAgIHJldHVybiBSZWxvYWQ7CiAKLSAgICBpZiAoZXhpc3RpbmdSZXNv
dXJjZS0+dHlwZSgpID09IENhY2hlZFJlc291cmNlOjpSYXdSZXNvdXJjZSAmJiAhc3RhdGljX2Nh
c3Q8Q2FjaGVkUmF3UmVzb3VyY2UqPihleGlzdGluZ1Jlc291cmNlKS0+Y2FuUmV1c2UocmVxdWVz
dCkpCi0gICAgICAgIHJldHVybiBSZWxvYWQ7Ci0KICAgICAvLyBDZXJ0YWluIHJlcXVlc3RzIChl
LmcuLCBYSFJzKSBtaWdodCBoYXZlIG1hbnVhbGx5IHNldCBoZWFkZXJzIHRoYXQgcmVxdWlyZSBy
ZXZhbGlkYXRpb24uCiAgICAgLy8gRklYTUU6IEluIHRoZW9yeSwgdGhpcyBzaG91bGQgYmUgYSBS
ZXZhbGlkYXRlIGNhc2UuIEluIHByYWN0aWNlLCB0aGUgTWVtb3J5Q2FjaGUgcmV2YWxpZGF0aW9u
IHBhdGggYXNzdW1lcyBhIHdob2xlIGJ1bmNoCiAgICAgLy8gb2YgdGhpbmdzIGFib3V0IGhvdyBy
ZXZhbGlkYXRpb24gd29ya3MgdGhhdCBtYW51YWwgaGVhZGVycyB2aW9sYXRlLCBzbyBwdW50IHRv
IFJlbG9hZCBpbnN0ZWFkLgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJhd1Jlc291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJhd1Jlc291cmNlLmgJKHJldmlzaW9uIDEzODk2NykKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw2
ICs2Nyw5IEBACiAjZW5kaWYKIAogICAgIHVuc2lnbmVkIGxvbmcgbV9pZGVudGlmaWVyOworCisg
ICAgVmVjdG9yPFJlc291cmNlUmVxdWVzdD4gbV9yZWRpcmVjdENoYWluUmVxdWVzdHM7CisgICAg
VmVjdG9yPFJlc291cmNlUmVzcG9uc2U+IG1fcmVkaXJlY3RDaGFpblJlc3BvbnNlczsKIH07CiAK
IApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2Uu
Y3BwCShyZXZpc2lvbiAxMzg5NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OTcsOCArNDk3LDggQEAKICAgICBp
ZiAoIWhhc0NsaWVudHMoKSAmJiBpbkNhY2hlKCkpCiAgICAgICAgIG1lbW9yeUNhY2hlKCktPmFk
ZFRvTGl2ZVJlc291cmNlc1NpemUodGhpcyk7CiAKLSAgICBpZiAobV90eXBlID09IFJhd1Jlc291
cmNlICYmICFtX3Jlc3BvbnNlLmlzTnVsbCgpICYmICFtX3Byb3h5UmVzb3VyY2UpIHsKLSAgICAg
ICAgLy8gQ2VydGFpbiByZXNvdXJjZXMgKGVzcGVjaWFsbHkgWEhScykgZG8gY3JhenkgdGhpbmdz
IGlmIGFuIGFzeW5jaHJvbm91cyBsb2FkIHJldHVybnMKKyAgICBpZiAoKG1fdHlwZSA9PSBSYXdS
ZXNvdXJjZSB8fCBtX3R5cGUgPT0gTWFpblJlc291cmNlKSAmJiAhbV9yZXNwb25zZS5pc051bGwo
KSAmJiAhbV9wcm94eVJlc291cmNlKSB7CisgICAgICAgIC8vIENlcnRhaW4gcmVzb3VyY2VzIChl
c3BlY2lhbGx5IFhIUnMgYW5kIG1haW4gcmVzb3VyY2VzKSBkbyBjcmF6eSB0aGluZ3MgaWYgYW4g
YXN5bmNocm9ub3VzIGxvYWQgcmV0dXJucwogICAgICAgICAvLyBzeW5jaHJvbm91c2x5IChlLmcu
LCBzY3JpcHRzIG1heSBub3QgaGF2ZSBzZXQgYWxsIHRoZSBzdGF0ZSB0aGV5IG5lZWQgdG8gaGFu
ZGxlIHRoZSBsb2FkKS4KICAgICAgICAgLy8gVGhlcmVmb3JlLCByYXRoZXIgdGhhbiBpbW1lZGlh
dGVseSBzZW5kaW5nIGNhbGxiYWNrcyBvbiBhIGNhY2hlIGhpdCBsaWtlIG90aGVyIENhY2hlZFJl
c291cmNlcywKICAgICAgICAgLy8gd2Ugc2NoZWR1bGUgdGhlIGNhbGxiYWNrcyBhbmQgZW5zdXJl
IHdlIG5ldmVyIGZpbmlzaCBzeW5jaHJvbm91c2x5LgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCShyZXZpc2lvbiAxMzg5Njcp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC04MCwxNCArODAsMjUgQEAKIAogdm9pZCBDYWNoZWRSYXdSZXNvdXJj
ZTo6ZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50KiBjKQogewotICAgIGlmIChtX3Jl
c3BvbnNlLmlzTnVsbCgpIHx8ICFoYXNDbGllbnQoYykpCisgICAgaWYgKCFoYXNDbGllbnQoYykp
CiAgICAgICAgIHJldHVybjsKICAgICAvLyBUaGUgY2FsbHMgdG8gdGhlIGNsaWVudCBjYW4gcmVz
dWx0IGluIGV2ZW50cyBydW5uaW5nLCBwb3RlbnRpYWxseSBjYXVzaW5nCiAgICAgLy8gdGhpcyBy
ZXNvdXJjZSB0byBiZSBldmljdGVkIGZyb20gdGhlIGNhY2hlIGFuZCBhbGwgY2xpZW50cyB0byBi
ZSByZW1vdmVkLAogICAgIC8vIHNvIGEgcHJvdGVjdG9yIGlzIG5lY2Vzc2FyeS4KICAgICBDYWNo
ZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVjdCh0aGlzKTsKICAgICBD
YWNoZWRSYXdSZXNvdXJjZUNsaWVudCogY2xpZW50ID0gc3RhdGljX2Nhc3Q8Q2FjaGVkUmF3UmVz
b3VyY2VDbGllbnQqPihjKTsKLSAgICBjbGllbnQtPnJlc3BvbnNlUmVjZWl2ZWQodGhpcywgbV9y
ZXNwb25zZSk7CisgICAgQVNTRVJUKG1fcmVkaXJlY3RDaGFpblJlcXVlc3RzLnNpemUoKSA9PSBt
X3JlZGlyZWN0Q2hhaW5SZXNwb25zZXMuc2l6ZSgpKTsKKyAgICBzaXplX3QgcmVkaXJlY3RDb3Vu
dCA9IG1fcmVkaXJlY3RDaGFpblJlcXVlc3RzLnNpemUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHJlZGlyZWN0Q291bnQ7IGkrKykgeworICAgICAgICBSZXNvdXJjZVJlcXVlc3QgcmVx
dWVzdChtX3JlZGlyZWN0Q2hhaW5SZXF1ZXN0c1tpXSk7CisgICAgICAgIGNsaWVudC0+cmVkaXJl
Y3RSZWNlaXZlZCh0aGlzLCByZXF1ZXN0LCBtX3JlZGlyZWN0Q2hhaW5SZXNwb25zZXNbaV0pOwor
ICAgICAgICBpZiAoIWhhc0NsaWVudChjKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgQVNTRVJUKHJlZGlyZWN0Q291bnQgPT0gbV9yZWRpcmVjdENoYWluUmVxdWVzdHMuc2l6ZSgp
KTsKKworICAgIGlmICghbV9yZXNwb25zZS5pc051bGwoKSkKKyAgICAgICAgY2xpZW50LT5yZXNw
b25zZVJlY2VpdmVkKHRoaXMsIG1fcmVzcG9uc2UpOwogICAgIGlmICghaGFzQ2xpZW50KGMpKQog
ICAgICAgICByZXR1cm47CiAgICAgaWYgKG1fZGF0YSkKQEAgLTExMCw2ICsxMjEsOCBAQAogICAg
ICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNoZWRSYXdSZXNvdXJjZUNsaWVudD4g
dyhtX2NsaWVudHMpOwogICAgICAgICB3aGlsZSAoQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQqIGMg
PSB3Lm5leHQoKSkKICAgICAgICAgICAgIGMtPnJlZGlyZWN0UmVjZWl2ZWQodGhpcywgcmVxdWVz
dCwgcmVzcG9uc2UpOworICAgICAgICBtX3JlZGlyZWN0Q2hhaW5SZXF1ZXN0cy5hcHBlbmQocmVx
dWVzdCk7CisgICAgICAgIG1fcmVkaXJlY3RDaGFpblJlc3BvbnNlcy5hcHBlbmQocmVzcG9uc2Up
OwogICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6d2lsbFNlbmRSZXF1ZXN0KHJlcXVlc3QsIHJl
c3BvbnNlKTsKIH0KQEAgLTE5NCw2ICsyMDcsMTIgQEAKICAgICAgICAgaWYgKCFzaG91bGRJZ25v
cmVIZWFkZXJGb3JDYWNoZVJldXNlKGhlYWRlck5hbWUpICYmIGktPnZhbHVlICE9IG5ld0hlYWRl
cnMuZ2V0KGhlYWRlck5hbWUpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KKwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9yZWRpcmVjdENoYWluUmVzcG9uc2VzLnNpemUo
KTsgaSsrKSB7CisgICAgICAgIGlmIChtX3JlZGlyZWN0Q2hhaW5SZXNwb25zZXNbaV0uY2FjaGVD
b250cm9sQ29udGFpbnNOb1N0b3JlKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9N
YWluUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAxMzg5NjcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYs
NiArNDYsNyBAQAogI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgogI2luY2x1ZGUgIkhpc3Rv
cnlJdGVtLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCisjaW5jbHVk
ZSAiTWVtb3J5Q2FjaGUuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUHJvZ3Jlc3NU
cmFja2VyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VCdWZmZXIuaCIKQEAgLTM3Niw3ICszNzcsMTgg
QEAKIHZvaWQgTWFpblJlc291cmNlTG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291
cmNlKiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcikKIHsKICAgICBBU1NFUlRf
VU5VU0VEKHJlc291cmNlLCBtX3Jlc291cmNlID09IHJlc291cmNlKTsKLSAgICBpZiAoZG9jdW1l
bnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS0+bWF5YmVMb2FkRmFsbGJhY2tGb3JN
YWluUmVzcG9uc2UocmVxdWVzdCgpLCByKSkKKyAgICBib29sIGxvYWRGYWxsYmFjayA9IGRvY3Vt
ZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCktPm1heWJlTG9hZEZhbGxiYWNrRm9y
TWFpblJlc3BvbnNlKHJlcXVlc3QoKSwgcik7CisgICAgYm9vbCBzaG91bGRSZW1vdmVSZXNvdXJj
ZUZyb21DYWNoZSA9IGxvYWRGYWxsYmFjazsKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKKyAgICBp
ZiAoci5hcHBDYWNoZUlEKCkpCisgICAgICAgIHNob3VsZFJlbW92ZVJlc291cmNlRnJvbUNhY2hl
ID0gdHJ1ZTsKKyNlbmRpZgorCisgICAgLy8gVGhlIG1lbW9yeSBjYWNoZSBkb2Vzbid0IHVuZGVy
c3RhbmQgdGhlIGFwcGxpY2F0aW9uIGNhY2hlIG9yIGl0cyBjYWNoaW5nIHJ1bGVzLiBTbyBpZiBh
IG1haW4gcmVzb3VyY2UgaXMgc2VydmVkCisgICAgLy8gZnJvbSB0aGUgYXBwbGljYXRpb24gY2Fj
aGUsIGVuc3VyZSB3ZSBkb24ndCBzYXZlIHRoZSByZXN1bHQgZm9yIGZ1dHVyZSB1c2UuCisgICAg
aWYgKHNob3VsZFJlbW92ZVJlc291cmNlRnJvbUNhY2hlKQorICAgICAgICBtZW1vcnlDYWNoZSgp
LT5yZW1vdmUobV9yZXNvdXJjZS5nZXQoKSk7CisgICAgaWYgKGxvYWRGYWxsYmFjaykKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHhGcmFt
ZU9wdGlvbkhlYWRlciwgKCJ4LWZyYW1lLW9wdGlvbnMiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKSk7CkBAIC01NDQsNiArNTU2LDEzIEBACiAgICAgZG9jdW1lbnRMb2FkZXIo
KS0+dGltaW5nKCktPnNldFJlc3BvbnNlRW5kKGZpbmlzaFRpbWUgPyBmaW5pc2hUaW1lIDogKG1f
dGltZU9mTGFzdERhdGFSZWNlaXZlZCA/IG1fdGltZU9mTGFzdERhdGFSZWNlaXZlZCA6IG1vbm90
b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpKSk7CiAgICAgZG9jdW1lbnRMb2FkZXIoKS0+ZmluaXNo
ZWRMb2FkaW5nKCk7CiAKKyAgICAvLyBJZiB0aGUgZG9jdW1lbnQgc3BlY2lmaWVkIGFuIGFwcGxp
Y2F0aW9uIGNhY2hlIG1hbmlmZXN0LCBpdCdzIHJpc2t5IHRvIHN0b3JlIGluIHRoZSBtZW1vcnkg
Y2FjaGUKKyAgICAvLyBhbmQgZGVueSB0aGUgYXBwY2FjaGUgdGhlIGNoYW5jZSB0byBpbnRlcmNl
cHQgaXQgaW4gdGhlIGZ1dHVyZSwgc28gcmVtb3ZlIGZyb20gdGhlIG1lbW9yeSBjYWNoZS4KKyAg
ICBpZiAoRnJhbWUqIGZyYW1lID0gZG9jdW1lbnRMb2FkZXIoKS0+ZnJhbWUoKSkgeworICAgICAg
ICBpZiAobV9yZXNvdXJjZSAmJiBmcmFtZS0+ZG9jdW1lbnQoKS0+aGFzTWFuaWZlc3QoKSkKKyAg
ICAgICAgICAgIG1lbW9yeUNhY2hlKCktPnJlbW92ZShtX3Jlc291cmNlLmdldCgpKTsKKyAgICB9
CisKICAgICBkbC0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS0+ZmluaXNoZWRMb2FkaW5nTWFpblJl
c291cmNlKCk7CiB9CiAKQEAgLTY2Niw2ICs2ODUsMTEgQEAKICAgICAgICAgZG9jdW1lbnRMb2Fk
ZXIoKS0+c2V0UmVxdWVzdChSZXNvdXJjZVJlcXVlc3QoKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CisgICAgaWYgKCFsb2FkZXIoKSkgeworICAgICAgICBtX3N1YnN0aXR1dGVEYXRhTG9hZElk
ZW50aWZpZXIgPSBtX2RvY3VtZW50TG9hZGVyLT5mcmFtZSgpLT5wYWdlKCktPnByb2dyZXNzKCkt
PmNyZWF0ZVVuaXF1ZUlkZW50aWZpZXIoKTsKKyAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZp
ZXIoKS0+YXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3QobV9zdWJzdGl0dXRlRGF0YUxv
YWRJZGVudGlmaWVyLCBkb2N1bWVudExvYWRlcigpLCByZXF1ZXN0KTsKKyAgICAgICAgZnJhbWVM
b2FkZXIoKS0+bm90aWZpZXIoKS0+ZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3QoZG9jdW1lbnRMb2Fk
ZXIoKSwgbV9zdWJzdGl0dXRlRGF0YUxvYWRJZGVudGlmaWVyLCByZXF1ZXN0LCBSZXNvdXJjZVJl
c3BvbnNlKCkpOworICAgIH0KICAgICBtX3Jlc291cmNlLT5hZGRDbGllbnQodGhpcyk7CiAKICAg
ICAvLyBXZSBuZWVkIHRvIHdhaXQgdW50aWwgYWZ0ZXIgcmVxdWVzdE1haW5SZXNvdXJjZSgpIGlz
IGNhbGxlZCB0byBzZXRSZXF1ZXN0KCksIGJlY2F1c2UgdGhlcmUgYXJlIGEgYnVuY2ggb2YgaGVh
ZGVycyBzZXQgd2hlbgpAQCAtNjczLDYgKzY5Nyw4IEBACiAgICAgLy8gc3RyaXAgdGhlIGZyYWdt
ZW50IGlkZW50aWZpZXIgKHdoaWNoIERvY3VtZW50TG9hZGVyOjptX3JlcXVlc3Qgc2hvdWxkIGFs
c28gaW5jbHVkZSksIHNvIGFkZCB0aGF0IGJhY2sgaW4uCiAgICAgaWYgKGxvYWRlcigpKQogICAg
ICAgICByZXF1ZXN0ID0gbG9hZGVyKCktPm9yaWdpbmFsUmVxdWVzdCgpOworICAgIGlmIChlcXVh
bElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKGluaXRpYWxSZXF1ZXN0LnVybCgpLCByZXF1ZXN0
LnVybCgpKSkKKyAgICAgICAgcmVxdWVzdC5zZXRVUkwoaW5pdGlhbFJlcXVlc3QudXJsKCkpOwog
ICAgIGRvY3VtZW50TG9hZGVyKCktPnNldFJlcXVlc3QocmVxdWVzdCk7CiB9CiAK
</data>
<flag name="review"
          id="199204"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182218</attachid>
            <date>2013-01-10 15:29:16 -0800</date>
            <delta_ts>2013-01-14 11:59:25 -0800</delta_ts>
            <desc>+ test</desc>
            <filename>cmr3.txt</filename>
            <type>text/plain</type>
            <size>26024</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiAxMzkyNDkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzQwLDYgKzM0MCw4IEBACiAg
ICAgewogICAgICAgICByZXR1cm4gbV9kb2N1bWVudEVsZW1lbnQuZ2V0KCk7CiAgICAgfQorCisg
ICAgYm9vbCBoYXNNYW5pZmVzdCgpIGNvbnN0OwogICAgIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxFbGVtZW50PiBjcmVhdGVFbGVtZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdGFnTmFtZSwgRXhj
ZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRG9j
dW1lbnRGcmFnbWVudCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAx
MzkyNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC04NDUsNiArODQ1LDExIEBACiAgICAgcmV0dXJuIG1faW1wbGVtZW50YXRpb24uZ2V0KCk7
CiB9CiAKK2Jvb2wgRG9jdW1lbnQ6Omhhc01hbmlmZXN0KCkgY29uc3QKK3sKKyAgICByZXR1cm4g
ZG9jdW1lbnRFbGVtZW50KCkgJiYgZG9jdW1lbnRFbGVtZW50KCktPmhhc1RhZ05hbWUoaHRtbFRh
ZykgJiYgZG9jdW1lbnRFbGVtZW50KCktPmhhc0F0dHJpYnV0ZShtYW5pZmVzdEF0dHIpOworfQor
CiB2b2lkIERvY3VtZW50OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIsIE5v
ZGUqIGJlZm9yZUNoYW5nZSwgTm9kZSogYWZ0ZXJDaGFuZ2UsIGludCBjaGlsZENvdW50RGVsdGEp
CiB7CiAgICAgQ29udGFpbmVyTm9kZTo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZWRCeVBhcnNlciwg
YmVmb3JlQ2hhbmdlLCBhZnRlckNoYW5nZSwgY2hpbGRDb3VudERlbHRhKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZXhwLmluCShyZXZpc2lvbiAxMzkyNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMTQ1LDYgKzE0NSw3IEBACiBfX1pON1dlYkNvcmUx
MU1lbW9yeUNhY2hlMTNnZXRTdGF0aXN0aWNzRXYKIF9fWk43V2ViQ29yZTExTWVtb3J5Q2FjaGUx
M3NldENhcGFjaXRpZXNFampqCiBfX1pON1dlYkNvcmUxMU1lbW9yeUNhY2hlMTRldmljdFJlc291
cmNlc0V2CitfX1pON1dlYkNvcmUxMU1lbW9yeUNhY2hlMTRyZXNvdXJjZUZvclVSTEVSS05TXzRL
VVJMRQogX19aTjdXZWJDb3JlMTFNZW1vcnlDYWNoZTE5Z2V0T3JpZ2luc1dpdGhDYWNoZUVSTjNX
VEY3SGFzaFNldElOUzFfNlJlZlB0cklOU18xNFNlY3VyaXR5T3JpZ2luRUVFTlNfMThTZWN1cml0
eU9yaWdpbkhhc2hFTlMxXzEwSGFzaFRyYWl0c0lTNV9FRUVFCiBfX1pON1dlYkNvcmUxMU1lbW9y
eUNhY2hlMjVyZW1vdmVSZXNvdXJjZXNXaXRoT3JpZ2luRVBOU18xNFNlY3VyaXR5T3JpZ2luRQog
X19aTjdXZWJDb3JlMTFVUkxXaXRoRGF0YUVQNk5TRGF0YVA1TlNVUkwKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDEzOTM3OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDEzLTAxLTEwICBOYXRlIENoYXBpbiAgPGphcGhldEBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgRW5hYmxlIHJldXNlIG9mIGNhY2hlZCBtYWluIHJlc291
cmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1
NjY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVz
dDogaHR0cC90ZXN0cy9jYWNoZS9jYWNoZWQtbWFpbi1yZXNvdXJjZS5odG1sCisKKyAgICAgICAg
KiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6Omhhc01hbmlmZXN0KTogUmV0dXJucyB0cnVlIGlmIHRoZSA8aHRt
bD4gZWxlbWVudCBoYXMgYSBub24tZW1wdHkgbWFuaWZlc3QgYXR0cmlidXRlLgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChEb2N1bWVudCk6
CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyOjpsb2FkZWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZSk6IERvbid0IHNlbmQgZGVs
ZWdhdGUgY2FsbGJhY2tzIGZvciBjYWNoZSBoaXQgaGVyZSwgc2luY2UKKyAgICAgICAgICAgIE1h
aW5SZXNvdXJjZUxvYWRlciB3aWxsIHRha2UgY2FyZSBvZiBpdC4KKyAgICAgICAgKiBsb2FkZXIv
TWFpblJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5SZXNvdXJjZUxv
YWRlcjo6cmVzcG9uc2VSZWNlaXZlZCk6IERvbid0IHRyeSB0byBjYWNoZSBsb2FkcyBmcm9tIHRo
ZSBhcHBsaWNhdGlvbiBjYWNoZS4KKyAgICAgICAgKFdlYkNvcmU6Ok1haW5SZXNvdXJjZUxvYWRl
cjo6ZGlkRmluaXNoTG9hZGluZyk6IERvbid0IHRyeSB0byBjYWNoZSBsb2FkcyBmcm9tIHRoZSBh
cHBsaWNhdGlvbiBjYWNoZS4KKyAgICAgICAgKFdlYkNvcmU6Ok1haW5SZXNvdXJjZUxvYWRlcjo6
bG9hZCk6IEVuc3VyZSB3ZSBjcmVhdGUgYSByZXNvdXJjZSBsb2FkIGlkZW50aWZpZXIgZm9yIGNh
Y2hlIGhpdHMuIEFsc28sCisgICAgICAgICAgICBlbnN1cmUgd2UgY29ycmVjdGx5IHBvcHVhbGF0
ZSBmcmFnbWVudCBpZGVudGlmaWVycyBpbiB0aGUgUmVzb3VyY2VSZXF1ZXN0IHJlcG9ydGVkIHRv
IERvY3VtZW50TG9hZGVyLgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJj
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6ZGlkQWRkQ2xpZW50
KTogU3ludGhlc2l6ZSByZWRpcmVjdCBub3RpZmljYXRpb25zIGZvciBjYWNoZSBoaXRzIGlmIG5l
Y2Vzc2FyeS4KKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjp3aWxsU2VuZFJl
cXVlc3QpOiBOb3RlIHRoZSByZWRpcmVjdHMgd2UgcmVjZWl2ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRSYXdSZXNvdXJjZTo6Y2FuUmV1c2UpOiBEb24ndCByZXVzZSBhIHJlc291cmNlIGlm
IHRoZSByZWRpcmVjdCBjaGFpbiBpbmNsdWRlZCBhICJDYWNoZS1jb250cm9sOiBuby1zdG9yZSIu
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmg6CisgICAgICAgIChD
YWNoZWRSYXdSZXNvdXJjZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjphZGRDbGllbnRUb1NldCk6
IERvbid0IHJldHVybiBjYWNoZWQgZGF0YSBmb3IgYSBtYWluIHJlc291cmNlIHN5bmNocm9ub3Vz
bHkuCisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpkZXRlcm1pbmVSZXZhbGlkYXRp
b25Qb2xpY3kpOiBQZXJtaXQgY2FjaGUgcmV1c2UgZm9yIG1haW4gcmVzb3VyY2VzLgorICAgICAg
ICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6
aXNMb2FkaW5nRnJvbU1lbW9yeUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAq
IHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAgIChJbnRlcm5hbHMpOgorICAgICAgICAqIHRl
c3RpbmcvSW50ZXJuYWxzLmlkbDoKKwogMjAxMy0wMS0xMCAgRGFuIEJlYW0gIDxkYmVhbUBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgSW1wbGVtZW50IEF1dG9jb21wbGV0ZUVycm9yRXZlbnQjcmVh
c29uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDEz
OTI0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI4ODcsNiArMjg4NywxMCBAQAogICAgIGlmICghcmVzb3VyY2UtPnNob3VsZFNl
bmRSZXNvdXJjZUxvYWRDYWxsYmFja3MoKSB8fCBtX2RvY3VtZW50TG9hZGVyLT5oYXZlVG9sZENs
aWVudEFib3V0TG9hZChyZXNvdXJjZS0+dXJsKCkpKQogICAgICAgICByZXR1cm47CiAKKyAgICAv
LyBNYWluIHJlc291cmNlIGRlbGVnYXRlIG1lc3NhZ2VzIGFyZSBzeW50aGVzaXplZCBpbiB0aGUg
c2FtZSB3YXkgYXMgbWFpbiByZXNvdXJjZSBTdWJzdGl0dXRlRGF0YSBsb2Fkcy4KKyAgICBpZiAo
cmVzb3VyY2UtPnR5cGUoKSA9PSBDYWNoZWRSZXNvdXJjZTo6TWFpblJlc291cmNlKQorICAgICAg
ICByZXR1cm47CisKICAgICBpZiAoIXBhZ2UtPmFyZU1lbW9yeUNhY2hlQ2xpZW50Q2FsbHNFbmFi
bGVkKCkpIHsKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRMb2FkUmVzb3Vy
Y2VGcm9tTWVtb3J5Q2FjaGUocGFnZSwgbV9kb2N1bWVudExvYWRlci5nZXQoKSwgcmVzb3VyY2Up
OwogICAgICAgICBtX2RvY3VtZW50TG9hZGVyLT5yZWNvcmRNZW1vcnlDYWNoZUxvYWRGb3JGdXR1
cmVDbGllbnROb3RpZmljYXRpb24ocmVzb3VyY2UtPnVybCgpKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAxMzkyNDkpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkhpc3RvcnlJdGVtLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmgiCisjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVk
ZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VCdWZmZXIuaCIKQEAgLTM4
OSw3ICszOTAsMTggQEAKIHZvaWQgTWFpblJlc291cmNlTG9hZGVyOjpyZXNwb25zZVJlY2VpdmVk
KENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcikKIHsK
ICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCBtX3Jlc291cmNlID09IHJlc291cmNlKTsKLSAg
ICBpZiAoZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS0+bWF5YmVMb2Fk
RmFsbGJhY2tGb3JNYWluUmVzcG9uc2UocmVxdWVzdCgpLCByKSkKKyAgICBib29sIGxvYWRGYWxs
YmFjayA9IGRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCktPm1heWJlTG9h
ZEZhbGxiYWNrRm9yTWFpblJlc3BvbnNlKHJlcXVlc3QoKSwgcik7CisgICAgYm9vbCBzaG91bGRS
ZW1vdmVSZXNvdXJjZUZyb21DYWNoZSA9IGxvYWRGYWxsYmFjazsKKyNpZiBQTEFURk9STShDSFJP
TUlVTSkKKyAgICBpZiAoci5hcHBDYWNoZUlEKCkpCisgICAgICAgIHNob3VsZFJlbW92ZVJlc291
cmNlRnJvbUNhY2hlID0gdHJ1ZTsKKyNlbmRpZgorCisgICAgLy8gVGhlIG1lbW9yeSBjYWNoZSBk
b2Vzbid0IHVuZGVyc3RhbmQgdGhlIGFwcGxpY2F0aW9uIGNhY2hlIG9yIGl0cyBjYWNoaW5nIHJ1
bGVzLiBTbyBpZiBhIG1haW4gcmVzb3VyY2UgaXMgc2VydmVkCisgICAgLy8gZnJvbSB0aGUgYXBw
bGljYXRpb24gY2FjaGUsIGVuc3VyZSB3ZSBkb24ndCBzYXZlIHRoZSByZXN1bHQgZm9yIGZ1dHVy
ZSB1c2UuCisgICAgaWYgKHNob3VsZFJlbW92ZVJlc291cmNlRnJvbUNhY2hlKQorICAgICAgICBt
ZW1vcnlDYWNoZSgpLT5yZW1vdmUobV9yZXNvdXJjZS5nZXQoKSk7CisgICAgaWYgKGxvYWRGYWxs
YmFjaykKICAgICAgICAgcmV0dXJuOwogCiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNT
dHJpbmcsIHhGcmFtZU9wdGlvbkhlYWRlciwgKCJ4LWZyYW1lLW9wdGlvbnMiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CkBAIC01NTcsNiArNTY5LDEzIEBACiAgICAgZG9j
dW1lbnRMb2FkZXIoKS0+dGltaW5nKCktPnNldFJlc3BvbnNlRW5kKGZpbmlzaFRpbWUgPyBmaW5p
c2hUaW1lIDogKG1fdGltZU9mTGFzdERhdGFSZWNlaXZlZCA/IG1fdGltZU9mTGFzdERhdGFSZWNl
aXZlZCA6IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpKSk7CiAgICAgZG9jdW1lbnRMb2Fk
ZXIoKS0+ZmluaXNoZWRMb2FkaW5nKCk7CiAKKyAgICAvLyBJZiB0aGUgZG9jdW1lbnQgc3BlY2lm
aWVkIGFuIGFwcGxpY2F0aW9uIGNhY2hlIG1hbmlmZXN0LCBpdCdzIHJpc2t5IHRvIHN0b3JlIGlu
IHRoZSBtZW1vcnkgY2FjaGUKKyAgICAvLyBhbmQgZGVueSB0aGUgYXBwY2FjaGUgdGhlIGNoYW5j
ZSB0byBpbnRlcmNlcHQgaXQgaW4gdGhlIGZ1dHVyZSwgc28gcmVtb3ZlIGZyb20gdGhlIG1lbW9y
eSBjYWNoZS4KKyAgICBpZiAoRnJhbWUqIGZyYW1lID0gZG9jdW1lbnRMb2FkZXIoKS0+ZnJhbWUo
KSkgeworICAgICAgICBpZiAobV9yZXNvdXJjZSAmJiBmcmFtZS0+ZG9jdW1lbnQoKS0+aGFzTWFu
aWZlc3QoKSkKKyAgICAgICAgICAgIG1lbW9yeUNhY2hlKCktPnJlbW92ZShtX3Jlc291cmNlLmdl
dCgpKTsKKyAgICB9CisKICAgICBkbC0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS0+ZmluaXNoZWRM
b2FkaW5nTWFpblJlc291cmNlKCk7CiB9CiAKQEAgLTY3OSw2ICs2OTgsMTEgQEAKICAgICAgICAg
ZG9jdW1lbnRMb2FkZXIoKS0+c2V0UmVxdWVzdChSZXNvdXJjZVJlcXVlc3QoKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CisgICAgaWYgKCFsb2FkZXIoKSkgeworICAgICAgICBtX3N1YnN0aXR1
dGVEYXRhTG9hZElkZW50aWZpZXIgPSBtX2RvY3VtZW50TG9hZGVyLT5mcmFtZSgpLT5wYWdlKCkt
PnByb2dyZXNzKCktPmNyZWF0ZVVuaXF1ZUlkZW50aWZpZXIoKTsKKyAgICAgICAgZnJhbWVMb2Fk
ZXIoKS0+bm90aWZpZXIoKS0+YXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3QobV9zdWJz
dGl0dXRlRGF0YUxvYWRJZGVudGlmaWVyLCBkb2N1bWVudExvYWRlcigpLCByZXF1ZXN0KTsKKyAg
ICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS0+ZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3Qo
ZG9jdW1lbnRMb2FkZXIoKSwgbV9zdWJzdGl0dXRlRGF0YUxvYWRJZGVudGlmaWVyLCByZXF1ZXN0
LCBSZXNvdXJjZVJlc3BvbnNlKCkpOworICAgIH0KICAgICBtX3Jlc291cmNlLT5hZGRDbGllbnQo
dGhpcyk7CiAKICAgICAvLyBXZSBuZWVkIHRvIHdhaXQgdW50aWwgYWZ0ZXIgcmVxdWVzdE1haW5S
ZXNvdXJjZSgpIGlzIGNhbGxlZCB0byBzZXRSZXF1ZXN0KCksIGJlY2F1c2UgdGhlcmUgYXJlIGEg
YnVuY2ggb2YgaGVhZGVycyBzZXQgd2hlbgpAQCAtNjg2LDYgKzcxMCw4IEBACiAgICAgLy8gc3Ry
aXAgdGhlIGZyYWdtZW50IGlkZW50aWZpZXIgKHdoaWNoIERvY3VtZW50TG9hZGVyOjptX3JlcXVl
c3Qgc2hvdWxkIGFsc28gaW5jbHVkZSksIHNvIGFkZCB0aGF0IGJhY2sgaW4uCiAgICAgaWYgKGxv
YWRlcigpKQogICAgICAgICByZXF1ZXN0ID0gbG9hZGVyKCktPm9yaWdpbmFsUmVxdWVzdCgpOwor
ICAgIGlmIChlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKGluaXRpYWxSZXF1ZXN0LnVy
bCgpLCByZXF1ZXN0LnVybCgpKSkKKyAgICAgICAgcmVxdWVzdC5zZXRVUkwoaW5pdGlhbFJlcXVl
c3QudXJsKCkpOwogICAgIGRvY3VtZW50TG9hZGVyKCktPnNldFJlcXVlc3QocmVxdWVzdCk7CiB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmNwcAkocmV2aXNpb24gMTM5MjQ5KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDk3LDggKzQ5Nyw4IEBACiAgICAg
aWYgKCFoYXNDbGllbnRzKCkgJiYgaW5DYWNoZSgpKQogICAgICAgICBtZW1vcnlDYWNoZSgpLT5h
ZGRUb0xpdmVSZXNvdXJjZXNTaXplKHRoaXMpOwogCi0gICAgaWYgKG1fdHlwZSA9PSBSYXdSZXNv
dXJjZSAmJiAhbV9yZXNwb25zZS5pc051bGwoKSAmJiAhbV9wcm94eVJlc291cmNlKSB7Ci0gICAg
ICAgIC8vIENlcnRhaW4gcmVzb3VyY2VzIChlc3BlY2lhbGx5IFhIUnMpIGRvIGNyYXp5IHRoaW5n
cyBpZiBhbiBhc3luY2hyb25vdXMgbG9hZCByZXR1cm5zCisgICAgaWYgKChtX3R5cGUgPT0gUmF3
UmVzb3VyY2UgfHwgbV90eXBlID09IE1haW5SZXNvdXJjZSkgJiYgIW1fcmVzcG9uc2UuaXNOdWxs
KCkgJiYgIW1fcHJveHlSZXNvdXJjZSkgeworICAgICAgICAvLyBDZXJ0YWluIHJlc291cmNlcyAo
ZXNwZWNpYWxseSBYSFJzIGFuZCBtYWluIHJlc291cmNlcykgZG8gY3JhenkgdGhpbmdzIGlmIGFu
IGFzeW5jaHJvbm91cyBsb2FkIHJldHVybnMKICAgICAgICAgLy8gc3luY2hyb25vdXNseSAoZS5n
Liwgc2NyaXB0cyBtYXkgbm90IGhhdmUgc2V0IGFsbCB0aGUgc3RhdGUgdGhleSBuZWVkIHRvIGhh
bmRsZSB0aGUgbG9hZCkuCiAgICAgICAgIC8vIFRoZXJlZm9yZSwgcmF0aGVyIHRoYW4gaW1tZWRp
YXRlbHkgc2VuZGluZyBjYWxsYmFja3Mgb24gYSBjYWNoZSBoaXQgbGlrZSBvdGhlciBDYWNoZWRS
ZXNvdXJjZXMsCiAgICAgICAgIC8vIHdlIHNjaGVkdWxlIHRoZSBjYWxsYmFja3MgYW5kIGVuc3Vy
ZSB3ZSBuZXZlciBmaW5pc2ggc3luY2hyb25vdXNseS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCShyZXZpc2lvbiAxMzkyNDkpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNjcsNiArNjcsOSBAQAogI2VuZGlmCiAKICAgICB1bnNpZ25lZCBsb25nIG1f
aWRlbnRpZmllcjsKKworICAgIFZlY3RvcjxSZXNvdXJjZVJlcXVlc3Q+IG1fcmVkaXJlY3RDaGFp
blJlcXVlc3RzOworICAgIFZlY3RvcjxSZXNvdXJjZVJlc3BvbnNlPiBtX3JlZGlyZWN0Q2hhaW5S
ZXNwb25zZXM7CiB9OwogCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSYXdSZXNvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAkocmV2aXNpb24gMTM5MjQ5KQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODAsMTQgKzgwLDI1IEBACiAKIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmRpZEFkZENsaWVu
dChDYWNoZWRSZXNvdXJjZUNsaWVudCogYykKIHsKLSAgICBpZiAobV9yZXNwb25zZS5pc051bGwo
KSB8fCAhaGFzQ2xpZW50KGMpKQorICAgIGlmICghaGFzQ2xpZW50KGMpKQogICAgICAgICByZXR1
cm47CiAgICAgLy8gVGhlIGNhbGxzIHRvIHRoZSBjbGllbnQgY2FuIHJlc3VsdCBpbiBldmVudHMg
cnVubmluZywgcG90ZW50aWFsbHkgY2F1c2luZwogICAgIC8vIHRoaXMgcmVzb3VyY2UgdG8gYmUg
ZXZpY3RlZCBmcm9tIHRoZSBjYWNoZSBhbmQgYWxsIGNsaWVudHMgdG8gYmUgcmVtb3ZlZCwKICAg
ICAvLyBzbyBhIHByb3RlY3RvciBpcyBuZWNlc3NhcnkuCiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5k
bGU8Q2FjaGVkUmF3UmVzb3VyY2U+IHByb3RlY3QodGhpcyk7CiAgICAgQ2FjaGVkUmF3UmVzb3Vy
Y2VDbGllbnQqIGNsaWVudCA9IHN0YXRpY19jYXN0PENhY2hlZFJhd1Jlc291cmNlQ2xpZW50Kj4o
Yyk7Ci0gICAgY2xpZW50LT5yZXNwb25zZVJlY2VpdmVkKHRoaXMsIG1fcmVzcG9uc2UpOworICAg
IEFTU0VSVChtX3JlZGlyZWN0Q2hhaW5SZXF1ZXN0cy5zaXplKCkgPT0gbV9yZWRpcmVjdENoYWlu
UmVzcG9uc2VzLnNpemUoKSk7CisgICAgc2l6ZV90IHJlZGlyZWN0Q291bnQgPSBtX3JlZGlyZWN0
Q2hhaW5SZXF1ZXN0cy5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZWRpcmVj
dENvdW50OyBpKyspIHsKKyAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QobV9yZWRpcmVj
dENoYWluUmVxdWVzdHNbaV0pOworICAgICAgICBjbGllbnQtPnJlZGlyZWN0UmVjZWl2ZWQodGhp
cywgcmVxdWVzdCwgbV9yZWRpcmVjdENoYWluUmVzcG9uc2VzW2ldKTsKKyAgICAgICAgaWYgKCFo
YXNDbGllbnQoYykpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorICAgIEFTU0VSVChyZWRp
cmVjdENvdW50ID09IG1fcmVkaXJlY3RDaGFpblJlcXVlc3RzLnNpemUoKSk7CisKKyAgICBpZiAo
IW1fcmVzcG9uc2UuaXNOdWxsKCkpCisgICAgICAgIGNsaWVudC0+cmVzcG9uc2VSZWNlaXZlZCh0
aGlzLCBtX3Jlc3BvbnNlKTsKICAgICBpZiAoIWhhc0NsaWVudChjKSkKICAgICAgICAgcmV0dXJu
OwogICAgIGlmIChtX2RhdGEpCkBAIC0xMTAsNiArMTIxLDggQEAKICAgICAgICAgQ2FjaGVkUmVz
b3VyY2VDbGllbnRXYWxrZXI8Q2FjaGVkUmF3UmVzb3VyY2VDbGllbnQ+IHcobV9jbGllbnRzKTsK
ICAgICAgICAgd2hpbGUgKENhY2hlZFJhd1Jlc291cmNlQ2xpZW50KiBjID0gdy5uZXh0KCkpCiAg
ICAgICAgICAgICBjLT5yZWRpcmVjdFJlY2VpdmVkKHRoaXMsIHJlcXVlc3QsIHJlc3BvbnNlKTsK
KyAgICAgICAgbV9yZWRpcmVjdENoYWluUmVxdWVzdHMuYXBwZW5kKHJlcXVlc3QpOworICAgICAg
ICBtX3JlZGlyZWN0Q2hhaW5SZXNwb25zZXMuYXBwZW5kKHJlc3BvbnNlKTsKICAgICB9CiAgICAg
Q2FjaGVkUmVzb3VyY2U6OndpbGxTZW5kUmVxdWVzdChyZXF1ZXN0LCByZXNwb25zZSk7CiB9CkBA
IC0xOTQsNiArMjA3LDEyIEBACiAgICAgICAgIGlmICghc2hvdWxkSWdub3JlSGVhZGVyRm9yQ2Fj
aGVSZXVzZShoZWFkZXJOYW1lKSAmJiBpLT52YWx1ZSAhPSBuZXdIZWFkZXJzLmdldChoZWFkZXJO
YW1lKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CisKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1fcmVkaXJlY3RDaGFpblJlc3BvbnNlcy5zaXplKCk7IGkrKykgeworICAg
ICAgICBpZiAobV9yZWRpcmVjdENoYWluUmVzcG9uc2VzW2ldLmNhY2hlQ29udHJvbENvbnRhaW5z
Tm9TdG9yZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwogICAgIHJldHVy
biB0cnVlOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDEzOTI0OSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU0MCwxMiArNTQwLDkgQEAKICAgICAgICAgcmV0dXJuIFJlbG9hZDsKICAgICB9CiAK
LSAgICBpZiAoZXhpc3RpbmdSZXNvdXJjZS0+dHlwZSgpID09IENhY2hlZFJlc291cmNlOjpNYWlu
UmVzb3VyY2UpCisgICAgaWYgKChleGlzdGluZ1Jlc291cmNlLT50eXBlKCkgPT0gQ2FjaGVkUmVz
b3VyY2U6Ok1haW5SZXNvdXJjZSB8fCBleGlzdGluZ1Jlc291cmNlLT50eXBlKCkgPT0gQ2FjaGVk
UmVzb3VyY2U6OlJhd1Jlc291cmNlKSAmJiAhc3RhdGljX2Nhc3Q8Q2FjaGVkUmF3UmVzb3VyY2Uq
PihleGlzdGluZ1Jlc291cmNlKS0+Y2FuUmV1c2UocmVxdWVzdCkpCiAgICAgICAgIHJldHVybiBS
ZWxvYWQ7CiAKLSAgICBpZiAoZXhpc3RpbmdSZXNvdXJjZS0+dHlwZSgpID09IENhY2hlZFJlc291
cmNlOjpSYXdSZXNvdXJjZSAmJiAhc3RhdGljX2Nhc3Q8Q2FjaGVkUmF3UmVzb3VyY2UqPihleGlz
dGluZ1Jlc291cmNlKS0+Y2FuUmV1c2UocmVxdWVzdCkpCi0gICAgICAgIHJldHVybiBSZWxvYWQ7
Ci0KICAgICAvLyBDZXJ0YWluIHJlcXVlc3RzIChlLmcuLCBYSFJzKSBtaWdodCBoYXZlIG1hbnVh
bGx5IHNldCBoZWFkZXJzIHRoYXQgcmVxdWlyZSByZXZhbGlkYXRpb24uCiAgICAgLy8gRklYTUU6
IEluIHRoZW9yeSwgdGhpcyBzaG91bGQgYmUgYSBSZXZhbGlkYXRlIGNhc2UuIEluIHByYWN0aWNl
LCB0aGUgTWVtb3J5Q2FjaGUgcmV2YWxpZGF0aW9uIHBhdGggYXNzdW1lcyBhIHdob2xlIGJ1bmNo
CiAgICAgLy8gb2YgdGhpbmdzIGFib3V0IGhvdyByZXZhbGlkYXRpb24gd29ya3MgdGhhdCBtYW51
YWwgaGVhZGVycyB2aW9sYXRlLCBzbyBwdW50IHRvIFJlbG9hZCBpbnN0ZWFkLgpJbmRleDogU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkocmV2aXNpb24gMTM5MjQ5KQorKysgU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw2ICs2
NSw3IEBACiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkxhbmd1YWdlLmgiCiAjaW5j
bHVkZSAiTWFsbG9jU3RhdGlzdGljcy5oIgorI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCiAjaW5j
bHVkZSAiTW9ja1BhZ2VQb3B1cERyaXZlci5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJpbmdDb250
ZXh0LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtMjkzLDYgKzI5NCwxNCBAQAogICAgIHJldHVy
biBkb2N1bWVudC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+aXNQcmVsb2FkZWQodXJsKTsKIH0K
IAorYm9vbCBJbnRlcm5hbHM6OmlzTG9hZGluZ0Zyb21NZW1vcnlDYWNoZShjb25zdCBTdHJpbmcm
IHVybCkKK3sKKyAgICBpZiAoIWNvbnRleHREb2N1bWVudCgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlID0gbWVtb3J5Q2FjaGUoKS0+cmVzb3Vy
Y2VGb3JVUkwoY29udGV4dERvY3VtZW50KCktPmNvbXBsZXRlVVJMKHVybCkpOworICAgIHJldHVy
biByZXNvdXJjZSAmJiByZXNvdXJjZS0+c3RhdHVzKCkgPT0gQ2FjaGVkUmVzb3VyY2U6OkNhY2hl
ZDsKK30KKwogUGFzc1JlZlB0cjxFbGVtZW50PiBJbnRlcm5hbHM6OmNyZWF0ZUNvbnRlbnRFbGVt
ZW50KERvY3VtZW50KiBkb2N1bWVudCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFk
b2N1bWVudCkgewpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCShyZXZpc2lvbiAx
MzkyNDkpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCSh3b3JraW5nIGNv
cHkpCkBAIC03Miw2ICs3Miw3IEBACiAgICAgU3RyaW5nIGFkZHJlc3MoTm9kZSopOwogCiAgICAg
Ym9vbCBpc1ByZWxvYWRlZChEb2N1bWVudCosIGNvbnN0IFN0cmluZyYgdXJsKTsKKyAgICBib29s
IGlzTG9hZGluZ0Zyb21NZW1vcnlDYWNoZShjb25zdCBTdHJpbmcmIHVybCk7CiAKICAgICBzaXpl
X3QgbnVtYmVyT2ZTY29wZWRIVE1MU3R5bGVDaGlsZHJlbihjb25zdCBOb2RlKiwgRXhjZXB0aW9u
Q29kZSYpIGNvbnN0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCShy
ZXZpc2lvbiAxMzkyNDkpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKIAogICAgIERPTVN0cmluZyBlbGVtZW50
UmVuZGVyVHJlZUFzVGV4dChpbiBFbGVtZW50IGVsZW1lbnQpIHJhaXNlcyhET01FeGNlcHRpb24p
OwogICAgIGJvb2xlYW4gaXNQcmVsb2FkZWQoaW4gRG9jdW1lbnQgZG9jdW1lbnQsIGluIERPTVN0
cmluZyB1cmwpOworICAgIGJvb2xlYW4gaXNMb2FkaW5nRnJvbU1lbW9yeUNhY2hlKGluIERPTVN0
cmluZyB1cmwpOwogCiAgICAgdW5zaWduZWQgbG9uZyBudW1iZXJPZlNjb3BlZEhUTUxTdHlsZUNo
aWxkcmVuKGluIE5vZGUgc2NvcGUpIHJhaXNlcyhET01FeGNlcHRpb24pOwogCkluZGV4OiBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZS1oYXItcGFnZXMtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291
cmNlLWhhci1wYWdlcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDEzOTI0OSkKKysrIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlLWhhci1wYWdlcy1leHBlY3RlZC50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw1IEBACiBUZXN0cyBjb252ZXJzaW9uIG9mIEluc3Bl
Y3RvcidzIHJlc291cmNlIHJlcHJlc2VudGF0aW9uIGludG8gSEFSIGZvcm1hdC4KIAotUGFnZSBy
ZWxvYWRlZC4KIHsKICAgICAwIDogewogICAgICAgICBpZCA6IDxzdHJpbmc+CkBAIC0yOCw0ICsy
Nyw1IEBACiBwYWdlOiBwYWdlXzEgdXJsOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9y
L3Jlc291cmNlcy9oYXItcGFnZXMtbmF2aWdhdGlvbi10YXJnZXQuaHRtbAogcGFnZTogcGFnZV8x
IHVybDogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9yZXNvdXJjZXMvc291cmNlMS5q
cwogcGFnZTogcGFnZV8xIHVybDogaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291cmNlcy9yZWRp
cmVjdC5waHA/dXJsPS9pbnNwZWN0b3IvcmVzb3VyY2VzL2hhci1wYWdlcy1uYXZpZ2F0aW9uLXRh
cmdldC5odG1sCitQYWdlIHJlbG9hZGVkLgogCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2xvYWRpbmcvcmVkaXJlY3QtbWV0aG9kcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL3JlZGlyZWN0LW1ldGhvZHMtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAxMzkyNDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvcmVk
aXJlY3QtbWV0aG9kcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQyLDExICs0Miwx
MSBAQAogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1l
dGhvZHMtZm9ybS5odG1sIC0gZGlkUmVjZWl2ZVJlc3BvbnNlIDxOU1VSTFJlc3BvbnNlIGh0dHA6
Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLWZvcm0u
aHRtbCwgaHR0cCBzdGF0dXMgY29kZSAyMDA+CiBmcmFtZSAiMSIgLSBkaWRDYW5jZWxDbGllbnRS
ZWRpcmVjdEZvckZyYW1lCiBmcmFtZSAiMSIgLSBkaWRDb21taXRMb2FkRm9yRnJhbWUKK2h0dHA6
Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLWZvcm0u
aHRtbCAtIGRpZEZpbmlzaExvYWRpbmcKIGZyYW1lICIxIiAtIGRpZEZpbmlzaERvY3VtZW50TG9h
ZEZvckZyYW1lCiBmcmFtZSAiMSIgLSB3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0VG9VUkw6IGh0
dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLXJl
c3VsdC5waHAgCiBmcmFtZSAiMSIgLSBkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZQogZnJh
bWUgIjEiIC0gZGlkRmluaXNoTG9hZEZvckZyYW1lCi1odHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9h
ZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1mb3JtLmh0bWwgLSBkaWRGaW5pc2hMb2Fk
aW5nCiBmcmFtZSAiMSIgLSBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lCiBodHRwOi8v
MTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1yZXN1bHQu
cGhwIC0gd2lsbFNlbmRSZXF1ZXN0IDxOU1VSTFJlcXVlc3QgVVJMIGh0dHA6Ly8xMjcuMC4wLjE6
ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLXJlc3VsdC5waHAsIG1haW4g
ZG9jdW1lbnQgVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3JlZGlyZWN0LW1ldGhv
ZHMuaHRtbCwgaHR0cCBtZXRob2QgUE9TVD4gcmVkaXJlY3RSZXNwb25zZSAobnVsbCkKIGh0dHA6
Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLXJlc3Vs
dC5waHAgLSB3aWxsU2VuZFJlcXVlc3QgPE5TVVJMUmVxdWVzdCBVUkwgaHR0cDovLzEyNy4wLjAu
MTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtcmVzdWx0LnBocD9yZWRp
cmVjdGVkPXRydWUsIG1haW4gZG9jdW1lbnQgVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2Fk
aW5nL3JlZGlyZWN0LW1ldGhvZHMuaHRtbCwgaHR0cCBtZXRob2QgR0VUPiByZWRpcmVjdFJlc3Bv
bnNlIDxOU1VSTFJlc3BvbnNlIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNl
cy9yZWRpcmVjdC1tZXRob2RzLXJlc3VsdC5waHAsIGh0dHAgc3RhdHVzIGNvZGUgMzAyPgpAQCAt
NjksMTEgKzY5LDExIEBACiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMv
cmVkaXJlY3QtbWV0aG9kcy1mb3JtLmh0bWwgLSBkaWRSZWNlaXZlUmVzcG9uc2UgPE5TVVJMUmVz
cG9uc2UgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1l
dGhvZHMtZm9ybS5odG1sLCBodHRwIHN0YXR1cyBjb2RlIDIwMD4KIGZyYW1lICIyIiAtIGRpZENh
bmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWUKIGZyYW1lICIyIiAtIGRpZENvbW1pdExvYWRGb3JG
cmFtZQoraHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1l
dGhvZHMtZm9ybS5odG1sIC0gZGlkRmluaXNoTG9hZGluZwogZnJhbWUgIjIiIC0gZGlkRmluaXNo
RG9jdW1lbnRMb2FkRm9yRnJhbWUKIGZyYW1lICIyIiAtIHdpbGxQZXJmb3JtQ2xpZW50UmVkaXJl
Y3RUb1VSTDogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0
LW1ldGhvZHMtcmVzdWx0LnBocCAKIGZyYW1lICIyIiAtIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0Zv
ckZyYW1lCiBmcmFtZSAiMiIgLSBkaWRGaW5pc2hMb2FkRm9yRnJhbWUKLWh0dHA6Ly8xMjcuMC4w
LjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLWZvcm0uaHRtbCAtIGRp
ZEZpbmlzaExvYWRpbmcKIGZyYW1lICIyIiAtIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWUKIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRo
b2RzLXJlc3VsdC5waHAgLSB3aWxsU2VuZFJlcXVlc3QgPE5TVVJMUmVxdWVzdCBVUkwgaHR0cDov
LzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtcmVzdWx0
LnBocCwgbWFpbiBkb2N1bWVudCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVk
aXJlY3QtbWV0aG9kcy5odG1sLCBodHRwIG1ldGhvZCBQT1NUPiByZWRpcmVjdFJlc3BvbnNlIChu
dWxsKQogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1l
dGhvZHMtcmVzdWx0LnBocCAtIHdpbGxTZW5kUmVxdWVzdCA8TlNVUkxSZXF1ZXN0IFVSTCBodHRw
Oi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1yZXN1
bHQucGhwP3JlZGlyZWN0ZWQ9dHJ1ZSwgbWFpbiBkb2N1bWVudCBVUkwgaHR0cDovLzEyNy4wLjAu
MTo4MDAwL2xvYWRpbmcvcmVkaXJlY3QtbWV0aG9kcy5odG1sLCBodHRwIG1ldGhvZCBHRVQ+IHJl
ZGlyZWN0UmVzcG9uc2UgPE5TVVJMUmVzcG9uc2UgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRp
bmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtcmVzdWx0LnBocCwgaHR0cCBzdGF0dXMgY29k
ZSAzMDM+CkBAIC05NiwxMSArOTYsMTEgQEAKIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5n
L3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLWZvcm0uaHRtbCAtIGRpZFJlY2VpdmVSZXNwb25z
ZSA8TlNVUkxSZXNwb25zZSBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMv
cmVkaXJlY3QtbWV0aG9kcy1mb3JtLmh0bWwsIGh0dHAgc3RhdHVzIGNvZGUgMjAwPgogZnJhbWUg
IjMiIC0gZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZQogZnJhbWUgIjMiIC0gZGlkQ29t
bWl0TG9hZEZvckZyYW1lCitodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMv
cmVkaXJlY3QtbWV0aG9kcy1mb3JtLmh0bWwgLSBkaWRGaW5pc2hMb2FkaW5nCiBmcmFtZSAiMyIg
LSBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZQogZnJhbWUgIjMiIC0gd2lsbFBlcmZvcm1D
bGllbnRSZWRpcmVjdFRvVVJMOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJj
ZXMvcmVkaXJlY3QtbWV0aG9kcy1yZXN1bHQucGhwIAogZnJhbWUgIjMiIC0gZGlkSGFuZGxlT25s
b2FkRXZlbnRzRm9yRnJhbWUKIGZyYW1lICIzIiAtIGRpZEZpbmlzaExvYWRGb3JGcmFtZQotaHR0
cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtZm9y
bS5odG1sIC0gZGlkRmluaXNoTG9hZGluZwogZnJhbWUgIjMiIC0gZGlkU3RhcnRQcm92aXNpb25h
bExvYWRGb3JGcmFtZQogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3Jl
ZGlyZWN0LW1ldGhvZHMtcmVzdWx0LnBocCAtIHdpbGxTZW5kUmVxdWVzdCA8TlNVUkxSZXF1ZXN0
IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0
aG9kcy1yZXN1bHQucGhwLCBtYWluIGRvY3VtZW50IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAv
bG9hZGluZy9yZWRpcmVjdC1tZXRob2RzLmh0bWwsIGh0dHAgbWV0aG9kIFBPU1Q+IHJlZGlyZWN0
UmVzcG9uc2UgKG51bGwpCiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMv
cmVkaXJlY3QtbWV0aG9kcy1yZXN1bHQucGhwIC0gd2lsbFNlbmRSZXF1ZXN0IDxOU1VSTFJlcXVl
c3QgVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1t
ZXRob2RzLXJlc3VsdC5waHA/cmVkaXJlY3RlZD10cnVlLCBtYWluIGRvY3VtZW50IFVSTCBodHRw
Oi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZWRpcmVjdC1tZXRob2RzLmh0bWwsIGh0dHAgbWV0
aG9kIFBPU1Q+IHJlZGlyZWN0UmVzcG9uc2UgPE5TVVJMUmVzcG9uc2UgaHR0cDovLzEyNy4wLjAu
MTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtcmVzdWx0LnBocCwgaHR0
cCBzdGF0dXMgY29kZSAzMDc+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvZmF2
aWNvbi1sb2Fkcy13aXRoLWltYWdlcy1kaXNhYmxlZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2Zhdmljb24tbG9hZHMtd2l0aC1pbWFnZXMt
ZGlzYWJsZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxMzkyNDkpCisrKyBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL21pc2MvZmF2aWNvbi1sb2Fkcy13aXRoLWltYWdlcy1kaXNhYmxlZC1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw3IEBACiA8dW5rbm93bj4gLSBkaWRGaW5p
c2hMb2FkaW5nCiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbWlzYy9mYXZpY29uLWxvYWRzLXdpdGgt
aW1hZ2VzLWRpc2FibGVkLmh0bWwgLSB3aWxsU2VuZFJlcXVlc3QgPE5TVVJMUmVxdWVzdCBVUkwg
aHR0cDovLzEyNy4wLjAuMTo4MDAwL21pc2MvZmF2aWNvbi1sb2Fkcy13aXRoLWltYWdlcy1kaXNh
YmxlZC5odG1sLCBtYWluIGRvY3VtZW50IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbWlzYy9m
YXZpY29uLWxvYWRzLXdpdGgtaW1hZ2VzLWRpc2FibGVkLmh0bWwsIGh0dHAgbWV0aG9kIEdFVD4g
cmVkaXJlY3RSZXNwb25zZSAobnVsbCkKIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9taXNjL2Zhdmlj
b24tbG9hZHMtd2l0aC1pbWFnZXMtZGlzYWJsZWQuaHRtbCAtIGRpZFJlY2VpdmVSZXNwb25zZSA8
TlNVUkxSZXNwb25zZSBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbWlzYy9mYXZpY29uLWxvYWRzLXdp
dGgtaW1hZ2VzLWRpc2FibGVkLmh0bWwsIGh0dHAgc3RhdHVzIGNvZGUgMjAwPgoraHR0cDovLzEy
Ny4wLjAuMTo4MDAwL21pc2MvZmF2aWNvbi1sb2Fkcy13aXRoLWltYWdlcy1kaXNhYmxlZC5odG1s
IC0gZGlkRmluaXNoTG9hZGluZwogUmFkYXIgNjk3MzEwNiBhbmQgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTI3ODk2IC0gRmF2aWNvbnMgc3RpbGwgbG9hZCB3aGVuIGF1
dG9tYXRpYyBpbWFnZSBsb2FkaW5nIGlzIGRpc2FibGVkLgogVGhpcyB0ZXN0IHVzZXMgRFJUJ3Mg
cmVzb3VyY2UgbG9hZCBkZWxlZ2F0ZSBjYWxsYmFjayBtb2RlIHRvIHNlZSBpZiB0aGUgZmF2aWNv
biBpcyBsb2FkZWQgZXZlbiB3aGVuIGltYWdlIGxvYWRpbmcgaXMgb2ZmLgogCkluZGV4OiBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvbGluay1yZWwtaWNvbi1iZWZvcmVsb2FkLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvbGluay1yZWwt
aWNvbi1iZWZvcmVsb2FkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTM5MjQ5KQorKysgTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9taXNjL2xpbmstcmVsLWljb24tYmVmb3JlbG9hZC1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiA8dW5rbm93bj4gLSBkaWRGaW5pc2hM
b2FkaW5nCiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbWlzYy9saW5rLXJlbC1pY29uLWJlZm9yZWxv
YWQuaHRtbCAtIHdpbGxTZW5kUmVxdWVzdCA8TlNVUkxSZXF1ZXN0IFVSTCBodHRwOi8vMTI3LjAu
MC4xOjgwMDAvbWlzYy9saW5rLXJlbC1pY29uLWJlZm9yZWxvYWQuaHRtbCwgbWFpbiBkb2N1bWVu
dCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL21pc2MvbGluay1yZWwtaWNvbi1iZWZvcmVsb2Fk
Lmh0bWwsIGh0dHAgbWV0aG9kIEdFVD4gcmVkaXJlY3RSZXNwb25zZSAobnVsbCkKIGh0dHA6Ly8x
MjcuMC4wLjE6ODAwMC9taXNjL2xpbmstcmVsLWljb24tYmVmb3JlbG9hZC5odG1sIC0gZGlkUmVj
ZWl2ZVJlc3BvbnNlIDxOU1VSTFJlc3BvbnNlIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9taXNjL2xp
bmstcmVsLWljb24tYmVmb3JlbG9hZC5odG1sLCBodHRwIHN0YXR1cyBjb2RlIDIwMD4KK2h0dHA6
Ly8xMjcuMC4wLjE6ODAwMC9taXNjL2xpbmstcmVsLWljb24tYmVmb3JlbG9hZC5odG1sIC0gZGlk
RmluaXNoTG9hZGluZwogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2Zhdmljb24uaWNvIC0gd2lsbFNl
bmRSZXF1ZXN0IDxOU1VSTFJlcXVlc3QgVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9mYXZpY29u
LmljbywgbWFpbiBkb2N1bWVudCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL21pc2MvbGluay1y
ZWwtaWNvbi1iZWZvcmVsb2FkLmh0bWwsIGh0dHAgbWV0aG9kIEdFVD4gcmVkaXJlY3RSZXNwb25z
ZSAobnVsbCkKIFRoaXMgdGVzdCBzaG91bGQgbm90IHNob3cgYSByZXF1ZXN0IGZvciB0aGUgZmF2
aWNvbiBkb250LWxvYWQtdGhpcy5pY28sIHNpbmNlIHRoZSBiZWZvcmVsb2FkIGhhbmRsZXIgb24g
dGhlIGZhdmljb24gbGluayByZXR1cm5zIGZhbHNlLiBUaGVyZWZvcmUsIGlmIHRoZSByZXNvdXJj
ZSByZXF1ZXN0IGxpc3QgYmVsb3cgc2hvd3MgYSByZXF1ZXN0IGZvciBkb250LWxvYWQtdGhpcy5p
Y28sIHRoZW4gdGhpcyB0ZXN0IGhhcyBmYWlsZWQuCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2NhY2hlL2NhY2hlZC1tYWluLXJlc291cmNlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL2NhY2hlZC1tYWluLXJlc291cmNlLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvY2Fj
aGVkLW1haW4tcmVzb3VyY2UtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MiBAQAorUEFTUworIApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9jYWNoZWQt
bWFpbi1yZXNvdXJjZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
Y2FjaGUvY2FjaGVkLW1haW4tcmVzb3VyY2UuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvY2FjaGUvY2FjaGVkLW1haW4tcmVzb3VyY2UuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDI0IEBACis8aHRtbD4KKzxib2R5IG9ubG9hZD0ic2V0VGltZW91dChy
ZW1vdmVBbmRSZWxvYWQsIDApOyI+Cis8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2PgorPHNjcmlwdD4K
K2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwor
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworfQorCitmdW5jdGlvbiByZW1vdmVBbmRS
ZWxvYWQoKQoreworICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImlmcmFtZSIpKTsKKyAgICB2YXIgbmV3SWZyYW1lID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiaWZyYW1lIik7CisgICAgbmV3SWZyYW1lLnNyYyA9ICJyZXNvdXJjZXMvY2FjaGVh
YmxlLWlmcmFtZS5waHAiOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobmV3SWZyYW1l
KTsKKyAgICB2YXIgZnJvbUNhY2hlID0gaW50ZXJuYWxzLmlzTG9hZGluZ0Zyb21NZW1vcnlDYWNo
ZShuZXdJZnJhbWUuc3JjKTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0Iiku
YXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZnJvbUNhY2hlID8gIlBBU1MiIDog
IkZBSUwiKSk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKK30KKzwvc2NyaXB0PgorPGlmcmFtZSBpZD0iaWZyYW1lIiBzcmM9InJl
c291cmNlcy9jYWNoZWFibGUtaWZyYW1lLnBocCI+PC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+
CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3Jlc291cmNlcy9jYWNoZWFibGUt
aWZyYW1lLnBocAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3Jl
c291cmNlcy9jYWNoZWFibGUtaWZyYW1lLnBocAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvY2FjaGUvcmVzb3VyY2VzL2NhY2hlYWJsZS1pZnJhbWUucGhwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTEgQEAKKzw/cGhwCityZXF1aXJlX29uY2UgJy4uLy4uL3Jlc291
cmNlcy9wb3J0YWJpbGl0eUxheWVyLnBocCc7CisKKyRtYXhfYWdlID0gMTIgKiAzMSAqIDI0ICog
NjAgKiA2MDsgLy9vbmUgeWVhcgorJGV4cGlyZXMgPSBnbWRhdGUoREFURV9SRkMxMTIzLCB0aW1l
KCkgKyAkbWF4X2FnZSk7CisKK2hlYWRlcignQ2FjaGUtQ29udHJvbDogcHVibGljLCBtYXgtYWdl
PScgLiAkbWF4X2FnZSk7CitoZWFkZXIoJ0V4cGlyZXM6ICcgLiAkZXhwaXJlcyk7CitoZWFkZXIo
J0NvbnRlbnQtVHlwZTogdGV4dC9odG1sJyk7CitleGl0KCk7Cis/PgpJbmRleDogTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNp
b24gMTM5Mzc4KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTggQEAKKzIwMTMtMDEtMTAgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVtLm9y
Zz4KKworICAgICAgICBFbmFibGUgcmV1c2Ugb2YgY2FjaGVkIG1haW4gcmVzb3VyY2VzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDU2NjcuCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3Rz
L2NhY2hlL2NhY2hlZC1tYWluLXJlc291cmNlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogaHR0cC90ZXN0cy9jYWNoZS9jYWNoZWQtbWFpbi1yZXNvdXJjZS5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL2NhY2hlL3Jlc291cmNlcy9jYWNoZWFibGUtaWZyYW1lLnBocDog
QWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2UtaGFyLXBhZ2Vz
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2xvYWRpbmcvcmVkaXJlY3QtbWV0
aG9kcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9taXNjL2Zhdmljb24tbG9h
ZHMtd2l0aC1pbWFnZXMtZGlzYWJsZWQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVz
dHMvbWlzYy9saW5rLXJlbC1pY29uLWJlZm9yZWxvYWQtZXhwZWN0ZWQudHh0OgorCiAyMDEzLTAx
LTEwICBEaW1pdHJpIEdsYXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
W0Nocm9taXVtXSBMYXlvdXQgVGVzdCBhbmltYXRpb25zL2ZpbGwtbW9kZS1pdGVyYXRpb24tY291
bnQtbm9uLWludGVnZXIuaHRtbCBpcyBmYWlsaW5nLgo=
</data>
<flag name="review"
          id="200142"
          type_id="1"
          status="-"
          setter="darin"
    />
    <flag name="commit-queue"
          id="200143"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182606</attachid>
            <date>2013-01-14 11:59:25 -0800</date>
            <delta_ts>2013-01-14 13:40:36 -0800</delta_ts>
            <desc>Address darin&apos;s comments</desc>
            <filename>cmr_0114.txt</filename>
            <type>text/plain</type>
            <size>36268</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgkocmV2aXNpb24gMTM5NjIyKQorKysgU291cmNl
L2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgkod29ya2luZyBjb3B5KQpAQCAtNTQsNiArNTQsNyBA
QAogX1pON1dlYkNvcmUxMUV2ZW50VGFyZ2V0OHRvU3RyZWFtRXY7CiBfWk43V2ViQ29yZTExSGlz
dG9yeUl0ZW0xNnNldERvY3VtZW50U3RhdGVFUktOM1dURjZWZWN0b3JJTlMxXzZTdHJpbmdFTGow
RUVFOwogX1pON1dlYkNvcmUxMUhpc3RvcnlJdGVtMTZzZXREb2N1bWVudFN0YXRlRVJLTjNXVEY2
VmVjdG9ySU5TMV82U3RyaW5nRUxtMEVFRTsKK19aTjdXZWJDb3JlMTFNZW1vcnlDYWNoZTE0cmVz
b3VyY2VGb3JVUkxFUktOU180S1VSTEUKIF9aTjdXZWJDb3JlMTJUZXh0SXRlcmF0b3IyNnJhbmdl
RnJvbUxvY2F0aW9uQW5kTGVuZ3RoRVBOU18xM0NvbnRhaW5lck5vZGVFaWliOwogX1pON1dlYkNv
cmUxMlRleHRJdGVyYXRvcjI5Z2V0TG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2VFUE5TXzdFbGVt
ZW50RVBLTlNfNVJhbmdlRVJqUzZfOwogX1pON1dlYkNvcmUxMlRleHRJdGVyYXRvcjI5Z2V0TG9j
YXRpb25BbmRMZW5ndGhGcm9tUmFuZ2VFUE5TXzdFbGVtZW50RVBLTlNfNVJhbmdlRVJtUzZfOwpJ
bmRleDogU291cmNlL1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXRFeHBvcnRzLmRlZi5p
bgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdEV4
cG9ydHMuZGVmLmluCShyZXZpc2lvbiAxMzk2MjIpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJL
aXQudmNwcm9qL1dlYktpdEV4cG9ydHMuZGVmLmluCSh3b3JraW5nIGNvcHkpCkBAIC01NjAsNiAr
NTYwLDcgQEAKICAgICAgICAgP2FkZFNsb3dDYXNlQEF0b21pY1N0cmluZ0BXVEZAQENBP0FWPyRQ
YXNzUmVmUHRyQFZTdHJpbmdJbXBsQFdURkBAQDJAUEFWU3RyaW5nSW1wbEAyQEBaCiAgICAgICAg
ID9jYWNoZURPTVN0cnVjdHVyZUBXZWJDb3JlQEBZQVBBVlN0cnVjdHVyZUBKU0NAQFBBVkpTRE9N
R2xvYmFsT2JqZWN0QDFAUEFWMjNAUEJVQ2xhc3NJbmZvQDNAQFoKICAgICAgICAgP2NoaWxkSXRl
bVdpdGhUYXJnZXRASGlzdG9yeUl0ZW1AV2ViQ29yZUBAUUJFUEFWMTJAQUJWU3RyaW5nQFdURkBA
QFoKKyAgICAgICAgP2NvbXBsZXRlVVJMQERvY3VtZW50QFdlYkNvcmVAQFFCRT9BVktVUkxAMkBB
QlZTdHJpbmdAV1RGQEBAWgogICAgICAgICA/Y3JlYXRlQFJhbmdlQFdlYkNvcmVAQFNBP0FWPyRQ
YXNzUmVmUHRyQFZSYW5nZUBXZWJDb3JlQEBAV1RGQEBWPyRQYXNzUmVmUHRyQFZEb2N1bWVudEBX
ZWJDb3JlQEBANEBWPyRQYXNzUmVmUHRyQFZOb2RlQFdlYkNvcmVAQEA0QEgxSEBaCiAgICAgICAg
ID9jcmVhdGVAU2VyaWFsaXplZFNjcmlwdFZhbHVlQFdlYkNvcmVAQFNBP0FWPyRQYXNzUmVmUHRy
QFZTZXJpYWxpemVkU2NyaXB0VmFsdWVAV2ViQ29yZUBAQFdURkBAQUJWU3RyaW5nQDRAQFoKICAg
ICAgICAgP2NyZWF0ZUBTZXJpYWxpemVkU2NyaXB0VmFsdWVAV2ViQ29yZUBAU0E/QVY/JFBhc3NS
ZWZQdHJAVlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUBXZWJDb3JlQEBAV1RGQEBQQVZFeGVjU3RhdGVA
SlNDQEBWSlNWYWx1ZUA2QFBBVj8kVmVjdG9yQFY/JFJlZlB0ckBWTWVzc2FnZVBvcnRAV2ViQ29y
ZUBAQFdURkBAJDAwQDRAUEFWPyRWZWN0b3JAVj8kUmVmUHRyQFZBcnJheUJ1ZmZlckBXVEZAQEBX
VEZAQCQwMEA0QFc0U2VyaWFsaXphdGlvbkVycm9yTW9kZUAyQEBaCkBAIC0xMzkwLDYgKzEzOTEs
NyBAQAogICAgICAgICA/bGFzdENoYW5nZVdhc1VzZXJFZGl0QEhUTUxUZXh0Rm9ybUNvbnRyb2xF
bGVtZW50QFdlYkNvcmVAQFFCRV9OWFoKICAgICAgICAgP21haW5UaHJlYWRTY3JvbGxpbmdSZWFz
b25zQXNUZXh0QFBhZ2VAV2ViQ29yZUBAUUFFP0FWU3RyaW5nQFdURkBAWFoKICAgICAgICAgP21h
cmtlcnNGb3JARG9jdW1lbnRNYXJrZXJDb250cm9sbGVyQFdlYkNvcmVAQFFBRT9BVj8kVmVjdG9y
QFBBVkRvY3VtZW50TWFya2VyQFdlYkNvcmVAQCQwQUBAV1RGQEBQQVZOb2RlQDJAVk1hcmtlclR5
cGVzQERvY3VtZW50TWFya2VyQDJAQFoKKyAgICAgICAgP21lbW9yeUNhY2hlQFdlYkNvcmVAQFlB
UEFWTWVtb3J5Q2FjaGVAMUBYWgogICAgICAgICA/bmV4dFNpYmxpbmdAQ29tcG9zZWRTaGFkb3dU
cmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/Zmlyc3RDaGlsZEBDb21wb3NlZFNo
YWRvd1RyZWVXYWxrZXJAV2ViQ29yZUBAUUFFWFhaCiAgICAgICAgID9sYXN0Q2hpbGRAQ29tcG9z
ZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhYWgpAQCAtMTQwOSw2ICsxNDExLDcgQEAK
ICAgICAgICAgP3JhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoQFRleHRJdGVyYXRvckBXZWJDb3Jl
QEBTQT9BVj8kUGFzc1JlZlB0ckBWUmFuZ2VAV2ViQ29yZUBAQFdURkBAUEFWQ29udGFpbmVyTm9k
ZUAyQEhIX05AWgogICAgICAgICA/cmVtb3ZlQFN0cmluZ0BXVEZAQFFBRVhJSEBaCiAgICAgICAg
ID9yZW1vdmVkTGFzdFJlZkBOb2RlQFdlYkNvcmVAQEFBRVhYWgorICAgICAgICA/cmVzb3VyY2VG
b3JVUkxATWVtb3J5Q2FjaGVAV2ViQ29yZUBAUUFFUEFWQ2FjaGVkUmVzb3VyY2VAMkBBQlZLVVJM
QDJAQFoKICAgICAgICAgP3JldmVyc2VGaW5kQFN0cmluZ0ltcGxAV1RGQEBRQUVJX1dJQFoKICAg
ICAgICAgP3NhdmVEb2N1bWVudEFuZFNjcm9sbFN0YXRlQEhpc3RvcnlDb250cm9sbGVyQFdlYkNv
cmVAQFFBRVhYWgogICAgICAgICA/c2NyaXB0RXhlY3V0aW9uQ29udGV4dEBKU0RPTUdsb2JhbE9i
amVjdEBXZWJDb3JlQEBRQkVQQVZTY3JpcHRFeGVjdXRpb25Db250ZXh0QDJAWFoKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dp
bi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzOTYzMykKKysrIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDEzLTAxLTE0ICBOYXRlIENo
YXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgRW5hYmxlIHJldXNlIG9mIGNh
Y2hlZCBtYWluIHJlc291cmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTA1NjY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBXZWJLaXQudmNwcm9qL1dlYktpdEV4cG9ydHMuZGVmLmluOiBFeHBvc2Ug
c29tZSBNZW1vcnlDYWNoZSBzeW1ib2xzIGZvciB1c2UgaW4gSW50ZXJuYWxzLgorCiAyMDEzLTAx
LTA5ICBIYWppbWUgTW9ycml0YSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KIAogICAgICAgICBbU2hh
ZG93IERPTV0gRGlzdHJpYnV0aW9uIHJlbGF0ZWQgY29kZSBvbiBFbGVtZW50U2hhZG93IHNob3Vs
ZCBiZSBtaW5pbWl6ZWQuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDEz
OTYyMikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTg0NSw2ICs4NDUsMTEgQEAKICAgICByZXR1cm4gbV9pbXBsZW1lbnRhdGlvbi5nZXQoKTsK
IH0KIAorYm9vbCBEb2N1bWVudDo6aGFzTWFuaWZlc3QoKSBjb25zdAoreworICAgIHJldHVybiBk
b2N1bWVudEVsZW1lbnQoKSAmJiBkb2N1bWVudEVsZW1lbnQoKS0+aGFzVGFnTmFtZShodG1sVGFn
KSAmJiBkb2N1bWVudEVsZW1lbnQoKS0+aGFzQXR0cmlidXRlKG1hbmlmZXN0QXR0cik7Cit9CisK
IHZvaWQgRG9jdW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciwgTm9k
ZSogYmVmb3JlQ2hhbmdlLCBOb2RlKiBhZnRlckNoYW5nZSwgaW50IGNoaWxkQ291bnREZWx0YSkK
IHsKICAgICBDb250YWluZXJOb2RlOjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlZEJ5UGFyc2VyLCBi
ZWZvcmVDaGFuZ2UsIGFmdGVyQ2hhbmdlLCBjaGlsZENvdW50RGVsdGEpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgJKHJldmlzaW9uIDEzOTYyMikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNDAsNiArMzQwLDggQEAKICAgICB7CiAgICAgICAg
IHJldHVybiBtX2RvY3VtZW50RWxlbWVudC5nZXQoKTsKICAgICB9CisKKyAgICBib29sIGhhc01h
bmlmZXN0KCkgY29uc3Q7CiAgICAgCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEVsZW1lbnQ+IGNy
ZWF0ZUVsZW1lbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0YWdOYW1lLCBFeGNlcHRpb25Db2RlJik7
CiAgICAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVEb2N1bWVudEZyYWdtZW50
KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gMTM5NjIyKQorKysgU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTE0NSw2ICsxNDUsNyBA
QAogX19aTjdXZWJDb3JlMTFNZW1vcnlDYWNoZTEzZ2V0U3RhdGlzdGljc0V2CiBfX1pON1dlYkNv
cmUxMU1lbW9yeUNhY2hlMTNzZXRDYXBhY2l0aWVzRWpqagogX19aTjdXZWJDb3JlMTFNZW1vcnlD
YWNoZTE0ZXZpY3RSZXNvdXJjZXNFdgorX19aTjdXZWJDb3JlMTFNZW1vcnlDYWNoZTE0cmVzb3Vy
Y2VGb3JVUkxFUktOU180S1VSTEUKIF9fWk43V2ViQ29yZTExTWVtb3J5Q2FjaGUxOWdldE9yaWdp
bnNXaXRoQ2FjaGVFUk4zV1RGN0hhc2hTZXRJTlMxXzZSZWZQdHJJTlNfMTRTZWN1cml0eU9yaWdp
bkVFRU5TXzE4U2VjdXJpdHlPcmlnaW5IYXNoRU5TMV8xMEhhc2hUcmFpdHNJUzVfRUVFRQogX19a
TjdXZWJDb3JlMTFNZW1vcnlDYWNoZTI1cmVtb3ZlUmVzb3VyY2VzV2l0aE9yaWdpbkVQTlNfMTRT
ZWN1cml0eU9yaWdpbkUKIF9fWk43V2ViQ29yZTExVVJMV2l0aERhdGFFUDZOU0RhdGFQNU5TVVJM
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzk2MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1MyBAQAorMjAxMy0wMS0xNCAgTmF0ZSBD
aGFwaW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEVuYWJsZSByZXVzZSBvZiBj
YWNoZWQgbWFpbiByZXNvdXJjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwNTY2NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvY2FjaGUvY2FjaGVkLW1haW4tcmVzb3VyY2Uu
aHRtbAorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogZG9tL0RvY3VtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpoYXNNYW5pZmVzdCk6IFJldHVybnMg
dHJ1ZSBpZiB0aGUgPGh0bWw+IGVsZW1lbnQgaGFzIGEgbm9uLWVtcHR5IG1hbmlmZXN0IGF0dHJp
YnV0ZS4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKERvY3VtZW50KToKKyAg
ICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXI6OmxvYWRlZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKTogRG9uJ3Qgc2VuZCBkZWxlZ2F0
ZSBjYWxsYmFja3MgZm9yIGNhY2hlIGhpdCBoZXJlLCBzaW5jZQorICAgICAgICAgICAgTWFpblJl
c291cmNlTG9hZGVyIHdpbGwgdGFrZSBjYXJlIG9mIGl0LgorICAgICAgICAqIGxvYWRlci9NYWlu
UmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWFpblJlc291cmNlTG9hZGVy
OjpNYWluUmVzb3VyY2VMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWFpblJlc291cmNlTG9h
ZGVyOjpyZWNlaXZlZEVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5SZXNvdXJjZUxvYWRl
cjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5SZXNvdXJjZUxvYWRl
cjo6cmVzcG9uc2VSZWNlaXZlZCk6IERvbid0IHRyeSB0byBjYWNoZSBsb2FkcyBmcm9tIHRoZSBh
cHBsaWNhdGlvbiBjYWNoZS4KKyAgICAgICAgKFdlYkNvcmU6Ok1haW5SZXNvdXJjZUxvYWRlcjo6
ZGlkRmluaXNoTG9hZGluZyk6IERvbid0IHRyeSB0byBjYWNoZSBsb2FkcyBmcm9tIHRoZSBhcHBs
aWNhdGlvbiBjYWNoZS4KKyAgICAgICAgKFdlYkNvcmU6Ok1haW5SZXNvdXJjZUxvYWRlcjo6bG9h
ZCk6IEVuc3VyZSB3ZSBjcmVhdGUgYSByZXNvdXJjZSBsb2FkIGlkZW50aWZpZXIgZm9yIGNhY2hl
IGhpdHMuIEFsc28sCisgICAgICAgICAgICBlbnN1cmUgd2UgY29ycmVjdGx5IHBvcHVhbGF0ZSBm
cmFnbWVudCBpZGVudGlmaWVycyBpbiB0aGUgUmVzb3VyY2VSZXF1ZXN0IHJlcG9ydGVkIHRvIERv
Y3VtZW50TG9hZGVyLgorICAgICAgICAoV2ViQ29yZTo6TWFpblJlc291cmNlTG9hZGVyOjppZGVu
dGlmaWVyKToKKyAgICAgICAgKiBsb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmg6IFJlbmFtZSBt
X3N1YnN0aXR1dGVEYXRhTG9hZElkZW50aWZpZXIgdG8gbV9pZGVudGlmaWVyRm9yTG9hZFdpdGhv
dXRSZXNvdXJjZUxvYWRlcgorICAgICAgICAgICAgdG8gYmV0dGVyIGRlc2NyaWJlIHdoZW4gaXQg
aXMgdXNlZC4KKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmRpZEFkZENsaWVudCk6IFN5bnRo
ZXNpemUgcmVkaXJlY3Qgbm90aWZpY2F0aW9ucyBmb3IgY2FjaGUgaGl0cyBpZiBuZWNlc3Nhcnku
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6d2lsbFNlbmRSZXF1ZXN0KTog
Tm90ZSB0aGUgcmVkaXJlY3RzIHdlIHJlY2VpdmVkLgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
UmF3UmVzb3VyY2U6OmNhblJldXNlKTogRG9uJ3QgcmV1c2UgYSByZXNvdXJjZSBpZiB0aGUgcmVk
aXJlY3QgY2hhaW4gaW5jbHVkZWQgYSAiQ2FjaGUtY29udHJvbDogbm8tc3RvcmUiLgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oOgorICAgICAgICAoQ2FjaGVkUmF3
UmVzb3VyY2UpOgorICAgICAgICAoUmVkaXJlY3RQYWlyKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZFJhd1Jlc291cmNlOjpSZWRpcmVjdFBhaXI6OlJlZGlyZWN0UGFpcik6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFJlc291cmNlOjphZGRDbGllbnRUb1NldCk6OiBEb24ndCByZXR1cm4gY2FjaGVkIGRhdGEgZm9y
IGEgbWFpbiByZXNvdXJjZSBzeW5jaHJvbm91c2x5CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6Y2FuUmV1
c2UpOgorICAgICAgICAoQ2FjaGVkUmVzb3VyY2UpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6ZGV0ZXJtaW5lUmV2YWxpZGF0aW9uUG9saWN5KTogUGVybWl0IGNhY2hlIHJldXNl
IGZvciBtYWluIHJlc291cmNlcy4KKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmlzTG9hZGluZ0Zyb21NZW1vcnlDYWNoZSk6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAg
ICAoSW50ZXJuYWxzKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisKIDIwMTMt
MDEtMTQgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtW
OF0gTWFrZSBhbiBJc29sYXRlIHBhcmFtZXRlciBtYW5kYXRvcnkgaW4gYXNzb2NpYXRlT2JqZWN0
V2l0aFdyYXBwZXIoKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJjZUxv
YWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VM
b2FkZXIuaAkocmV2aXNpb24gMTM5NjIyKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL01haW5S
ZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsNyArMTI4LDcgQEAKICAgICBi
b29sIG1fbG9hZGluZ011bHRpcGFydENvbnRlbnQ7CiAgICAgYm9vbCBtX3dhaXRpbmdGb3JDb250
ZW50UG9saWN5OwogICAgIGRvdWJsZSBtX3RpbWVPZkxhc3REYXRhUmVjZWl2ZWQ7Ci0gICAgdW5z
aWduZWQgbG9uZyBtX3N1YnN0aXR1dGVEYXRhTG9hZElkZW50aWZpZXI7CisgICAgdW5zaWduZWQg
bG9uZyBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyOwogCiAjaWYgUExB
VEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oSU9TKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwODAKICAgICBXZWJGaWx0ZXJFdmFsdWF0b3IgKm1fZmlsdGVyOwpJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiAxMzk2MjIpCisrKyBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
ODg3LDYgKzI4ODcsMTAgQEAKICAgICBpZiAoIXJlc291cmNlLT5zaG91bGRTZW5kUmVzb3VyY2VM
b2FkQ2FsbGJhY2tzKCkgfHwgbV9kb2N1bWVudExvYWRlci0+aGF2ZVRvbGRDbGllbnRBYm91dExv
YWQocmVzb3VyY2UtPnVybCgpKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgLy8gTWFpbiByZXNv
dXJjZSBkZWxlZ2F0ZSBtZXNzYWdlcyBhcmUgc3ludGhlc2l6ZWQgaW4gTWFpblJlc291cmNlTG9h
ZGVyLCBzbyB3ZSBtdXN0IG5vdCBzZW5kIHRoZW0gaGVyZS4KKyAgICBpZiAocmVzb3VyY2UtPnR5
cGUoKSA9PSBDYWNoZWRSZXNvdXJjZTo6TWFpblJlc291cmNlKQorICAgICAgICByZXR1cm47CisK
ICAgICBpZiAoIXBhZ2UtPmFyZU1lbW9yeUNhY2hlQ2xpZW50Q2FsbHNFbmFibGVkKCkpIHsKICAg
ICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5
Q2FjaGUocGFnZSwgbV9kb2N1bWVudExvYWRlci5nZXQoKSwgcmVzb3VyY2UpOwogICAgICAgICBt
X2RvY3VtZW50TG9hZGVyLT5yZWNvcmRNZW1vcnlDYWNoZUxvYWRGb3JGdXR1cmVDbGllbnROb3Rp
ZmljYXRpb24ocmVzb3VyY2UtPnVybCgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMTM5NjIy
KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTQwLDEyICs1NDAsOSBAQAogICAgICAgICByZXR1cm4gUmVs
b2FkOwogICAgIH0KIAotICAgIGlmIChleGlzdGluZ1Jlc291cmNlLT50eXBlKCkgPT0gQ2FjaGVk
UmVzb3VyY2U6Ok1haW5SZXNvdXJjZSkKKyAgICBpZiAoIWV4aXN0aW5nUmVzb3VyY2UtPmNhblJl
dXNlKHJlcXVlc3QpKQogICAgICAgICByZXR1cm4gUmVsb2FkOwogCi0gICAgaWYgKGV4aXN0aW5n
UmVzb3VyY2UtPnR5cGUoKSA9PSBDYWNoZWRSZXNvdXJjZTo6UmF3UmVzb3VyY2UgJiYgIXN0YXRp
Y19jYXN0PENhY2hlZFJhd1Jlc291cmNlKj4oZXhpc3RpbmdSZXNvdXJjZSktPmNhblJldXNlKHJl
cXVlc3QpKQotICAgICAgICByZXR1cm4gUmVsb2FkOwotCiAgICAgLy8gQ2VydGFpbiByZXF1ZXN0
cyAoZS5nLiwgWEhScykgbWlnaHQgaGF2ZSBtYW51YWxseSBzZXQgaGVhZGVycyB0aGF0IHJlcXVp
cmUgcmV2YWxpZGF0aW9uLgogICAgIC8vIEZJWE1FOiBJbiB0aGVvcnksIHRoaXMgc2hvdWxkIGJl
IGEgUmV2YWxpZGF0ZSBjYXNlLiBJbiBwcmFjdGljZSwgdGhlIE1lbW9yeUNhY2hlIHJldmFsaWRh
dGlvbiBwYXRoIGFzc3VtZXMgYSB3aG9sZSBidW5jaAogICAgIC8vIG9mIHRoaW5ncyBhYm91dCBo
b3cgcmV2YWxpZGF0aW9uIHdvcmtzIHRoYXQgbWFudWFsIGhlYWRlcnMgdmlvbGF0ZSwgc28gcHVu
dCB0byBSZWxvYWQgaW5zdGVhZC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5oCShyZXZpc2lvbiAxMzk2MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjU4LDYgKzI1
OCw4IEBACiAKICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0
SW5mbyopIGNvbnN0OwogCisgICAgdmlydHVhbCBib29sIGNhblJldXNlKGNvbnN0IFJlc291cmNl
UmVxdWVzdCYpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKwogcHJvdGVjdGVkOgogICAgIHZpcnR1
YWwgdm9pZCBjaGVja05vdGlmeSgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmF3UmVzb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaAkocmV2aXNpb24gMTM5NjIyKQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ4LDcgKzQ4LDcgQEAKICAgICBTdWJyZXNvdXJjZUxvYWRlciogbG9hZGVyKCkgY29uc3Q7
CiAgICAgdm9pZCBjbGVhcigpOwogCi0gICAgYm9vbCBjYW5SZXVzZShjb25zdCBSZXNvdXJjZVJl
cXVlc3QmKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgY2FuUmV1c2UoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JikgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVt
b3J5T2JqZWN0SW5mbyopIGNvbnN0IE9WRVJSSURFOwogCkBAIC02Nyw2ICs2NywyMCBAQAogI2Vu
ZGlmCiAKICAgICB1bnNpZ25lZCBsb25nIG1faWRlbnRpZmllcjsKKworICAgIHN0cnVjdCBSZWRp
cmVjdFBhaXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgZXhwbGljaXQgUmVkaXJlY3RQYWlyKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVk
aXJlY3RSZXNwb25zZSkKKyAgICAgICAgICAgIDogbV9yZXF1ZXN0KHJlcXVlc3QpCisgICAgICAg
ICAgICAsIG1fcmVkaXJlY3RSZXNwb25zZShyZWRpcmVjdFJlc3BvbnNlKQorICAgICAgICB7Cisg
ICAgICAgIH0KKworICAgICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QgbV9yZXF1ZXN0OworICAg
ICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlIG1fcmVkaXJlY3RSZXNwb25zZTsKKyAgICB9Owor
CisgICAgVmVjdG9yPFJlZGlyZWN0UGFpcj4gbV9yZWRpcmVjdENoYWluOwogfTsKIAogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAJKHJl
dmlzaW9uIDEzOTYyMikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5Nyw4ICs0OTcsOCBAQAogICAgIGlmICghaGFz
Q2xpZW50cygpICYmIGluQ2FjaGUoKSkKICAgICAgICAgbWVtb3J5Q2FjaGUoKS0+YWRkVG9MaXZl
UmVzb3VyY2VzU2l6ZSh0aGlzKTsKIAotICAgIGlmIChtX3R5cGUgPT0gUmF3UmVzb3VyY2UgJiYg
IW1fcmVzcG9uc2UuaXNOdWxsKCkgJiYgIW1fcHJveHlSZXNvdXJjZSkgewotICAgICAgICAvLyBD
ZXJ0YWluIHJlc291cmNlcyAoZXNwZWNpYWxseSBYSFJzKSBkbyBjcmF6eSB0aGluZ3MgaWYgYW4g
YXN5bmNocm9ub3VzIGxvYWQgcmV0dXJucworICAgIGlmICgobV90eXBlID09IFJhd1Jlc291cmNl
IHx8IG1fdHlwZSA9PSBNYWluUmVzb3VyY2UpICYmICFtX3Jlc3BvbnNlLmlzTnVsbCgpICYmICFt
X3Byb3h5UmVzb3VyY2UpIHsKKyAgICAgICAgLy8gQ2VydGFpbiByZXNvdXJjZXMgKGVzcGVjaWFs
bHkgWEhScyBhbmQgbWFpbiByZXNvdXJjZXMpIGRvIGNyYXp5IHRoaW5ncyBpZiBhbiBhc3luY2hy
b25vdXMgbG9hZCByZXR1cm5zCiAgICAgICAgIC8vIHN5bmNocm9ub3VzbHkgKGUuZy4sIHNjcmlw
dHMgbWF5IG5vdCBoYXZlIHNldCBhbGwgdGhlIHN0YXRlIHRoZXkgbmVlZCB0byBoYW5kbGUgdGhl
IGxvYWQpLgogICAgICAgICAvLyBUaGVyZWZvcmUsIHJhdGhlciB0aGFuIGltbWVkaWF0ZWx5IHNl
bmRpbmcgY2FsbGJhY2tzIG9uIGEgY2FjaGUgaGl0IGxpa2Ugb3RoZXIgQ2FjaGVkUmVzb3VyY2Vz
LAogICAgICAgICAvLyB3ZSBzY2hlZHVsZSB0aGUgY2FsbGJhY2tzIGFuZCBlbnN1cmUgd2UgbmV2
ZXIgZmluaXNoIHN5bmNocm9ub3VzbHkuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAJKHJldmlzaW9uIDEzOTYyMikKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTgwLDE0ICs4MCwyNSBAQAogCiB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpkaWRB
ZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqIGMpCiB7Ci0gICAgaWYgKG1fcmVzcG9uc2Uu
aXNOdWxsKCkgfHwgIWhhc0NsaWVudChjKSkKKyAgICBpZiAoIWhhc0NsaWVudChjKSkKICAgICAg
ICAgcmV0dXJuOwogICAgIC8vIFRoZSBjYWxscyB0byB0aGUgY2xpZW50IGNhbiByZXN1bHQgaW4g
ZXZlbnRzIHJ1bm5pbmcsIHBvdGVudGlhbGx5IGNhdXNpbmcKICAgICAvLyB0aGlzIHJlc291cmNl
IHRvIGJlIGV2aWN0ZWQgZnJvbSB0aGUgY2FjaGUgYW5kIGFsbCBjbGllbnRzIHRvIGJlIHJlbW92
ZWQsCiAgICAgLy8gc28gYSBwcm90ZWN0b3IgaXMgbmVjZXNzYXJ5LgogICAgIENhY2hlZFJlc291
cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBwcm90ZWN0KHRoaXMpOwogICAgIENhY2hlZFJh
d1Jlc291cmNlQ2xpZW50KiBjbGllbnQgPSBzdGF0aWNfY2FzdDxDYWNoZWRSYXdSZXNvdXJjZUNs
aWVudCo+KGMpOwotICAgIGNsaWVudC0+cmVzcG9uc2VSZWNlaXZlZCh0aGlzLCBtX3Jlc3BvbnNl
KTsKKyAgICBzaXplX3QgcmVkaXJlY3RDb3VudCA9IG1fcmVkaXJlY3RDaGFpbi5zaXplKCk7Cisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZWRpcmVjdENvdW50OyBpKyspIHsKKyAgICAgICAg
UmVkaXJlY3RQYWlyIHJlZGlyZWN0ID0gbV9yZWRpcmVjdENoYWluW2ldOworICAgICAgICBSZXNv
dXJjZVJlcXVlc3QgcmVxdWVzdChyZWRpcmVjdC5tX3JlcXVlc3QpOworICAgICAgICBjbGllbnQt
PnJlZGlyZWN0UmVjZWl2ZWQodGhpcywgcmVxdWVzdCwgcmVkaXJlY3QubV9yZWRpcmVjdFJlc3Bv
bnNlKTsKKyAgICAgICAgaWYgKCFoYXNDbGllbnQoYykpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIEFTU0VSVChyZWRpcmVjdENvdW50ID09IG1fcmVkaXJlY3RDaGFpbi5zaXplKCkp
OworCisgICAgaWYgKCFtX3Jlc3BvbnNlLmlzTnVsbCgpKQorICAgICAgICBjbGllbnQtPnJlc3Bv
bnNlUmVjZWl2ZWQodGhpcywgbV9yZXNwb25zZSk7CiAgICAgaWYgKCFoYXNDbGllbnQoYykpCiAg
ICAgICAgIHJldHVybjsKICAgICBpZiAobV9kYXRhKQpAQCAtMTEwLDYgKzEyMSw3IEBACiAgICAg
ICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZFJhd1Jlc291cmNlQ2xpZW50PiB3
KG1fY2xpZW50cyk7CiAgICAgICAgIHdoaWxlIChDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCogYyA9
IHcubmV4dCgpKQogICAgICAgICAgICAgYy0+cmVkaXJlY3RSZWNlaXZlZCh0aGlzLCByZXF1ZXN0
LCByZXNwb25zZSk7CisgICAgICAgIG1fcmVkaXJlY3RDaGFpbi5hcHBlbmQoUmVkaXJlY3RQYWly
KHJlcXVlc3QsIHJlc3BvbnNlKSk7CiAgICAgfQogICAgIENhY2hlZFJlc291cmNlOjp3aWxsU2Vu
ZFJlcXVlc3QocmVxdWVzdCwgcmVzcG9uc2UpOwogfQpAQCAtMTk0LDYgKzIwNiwxMiBAQAogICAg
ICAgICBpZiAoIXNob3VsZElnbm9yZUhlYWRlckZvckNhY2hlUmV1c2UoaGVhZGVyTmFtZSkgJiYg
aS0+dmFsdWUgIT0gbmV3SGVhZGVycy5nZXQoaGVhZGVyTmFtZSkpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQorCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3JlZGlyZWN0
Q2hhaW4uc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgaWYgKG1fcmVkaXJlY3RDaGFpbltpXS5tX3Jl
ZGlyZWN0UmVzcG9uc2UuY2FjaGVDb250cm9sQ29udGFpbnNOb1N0b3JlKCkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAx
Mzk2MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVu
dC5oIgogI2luY2x1ZGUgIkhpc3RvcnlJdGVtLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmgiCisjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKICNpbmNsdWRlICJQYWdlLmgi
CiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VCdWZmZXIu
aCIKQEAgLTczLDcgKzc0LDcgQEAKICAgICAsIG1fbG9hZGluZ011bHRpcGFydENvbnRlbnQoZmFs
c2UpCiAgICAgLCBtX3dhaXRpbmdGb3JDb250ZW50UG9saWN5KGZhbHNlKQogICAgICwgbV90aW1l
T2ZMYXN0RGF0YVJlY2VpdmVkKDAuMCkKLSAgICAsIG1fc3Vic3RpdHV0ZURhdGFMb2FkSWRlbnRp
ZmllcigwKQorICAgICwgbV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlcigw
KQogI2lmIFBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKElPUykgJiYgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMDgwCiAgICAgLCBtX2ZpbHRlcigwKQogI2VuZGlmCkBAIC05
OSw5ICsxMDAsOSBAQAogICAgIFJlZlB0cjxNYWluUmVzb3VyY2VMb2FkZXI+IHByb3RlY3QodGhp
cyk7CiAgICAgUmVmUHRyPEZyYW1lPiBwcm90ZWN0RnJhbWUobV9kb2N1bWVudExvYWRlci0+ZnJh
bWUoKSk7CiAKLSAgICBpZiAobV9zdWJzdGl0dXRlRGF0YUxvYWRJZGVudGlmaWVyKSB7CisgICAg
aWYgKG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIpIHsKICAgICAgICAg
QVNTRVJUKCFsb2FkZXIoKSk7Ci0gICAgICAgIGZyYW1lTG9hZGVyKCktPmNsaWVudCgpLT5kaXNw
YXRjaERpZEZhaWxMb2FkaW5nKGRvY3VtZW50TG9hZGVyKCksIG1fc3Vic3RpdHV0ZURhdGFMb2Fk
SWRlbnRpZmllciwgZXJyb3IpOworICAgICAgICBmcmFtZUxvYWRlcigpLT5jbGllbnQoKS0+ZGlz
cGF0Y2hEaWRGYWlsTG9hZGluZyhkb2N1bWVudExvYWRlcigpLCBtX2lkZW50aWZpZXJGb3JMb2Fk
V2l0aG91dFJlc291cmNlTG9hZGVyLCBlcnJvcik7CiAgICAgfQogCiAgICAgLy8gSXQgaXMgaW1w
b3J0YW50IHRoYXQgd2UgY2FsbCBEb2N1bWVudExvYWRlcjo6bWFpblJlY2VpdmVkRXJyb3IgYmVm
b3JlIGNhbGxpbmcgCkBAIC0yODYsNyArMjg3LDcgQEAKICAgICAgICAgQVNTRVJUKCFtX3N1YnN0
aXR1dGVEYXRhLmlzVmFsaWQoKSk7CiAgICAgICAgIGRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0
aW9uQ2FjaGVIb3N0KCktPm1heWJlTG9hZE1haW5SZXNvdXJjZUZvclJlZGlyZWN0KG5ld1JlcXVl
c3QsIG1fc3Vic3RpdHV0ZURhdGEpOwogICAgICAgICBpZiAobV9zdWJzdGl0dXRlRGF0YS5pc1Zh
bGlkKCkpCi0gICAgICAgICAgICBtX3N1YnN0aXR1dGVEYXRhTG9hZElkZW50aWZpZXIgPSBpZGVu
dGlmaWVyKCk7CisgICAgICAgICAgICBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNl
TG9hZGVyID0gaWRlbnRpZmllcigpOwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBJZGVhbGx5IHdl
J2Qgc3RvcCB0aGUgSS9PIHVudGlsIHdlIGhlYXIgYmFjayBmcm9tIHRoZSBuYXZpZ2F0aW9uIHBv
bGljeSBkZWxlZ2F0ZQpAQCAtMzkyLDcgKzM5MywyMSBAQAogdm9pZCBNYWluUmVzb3VyY2VMb2Fk
ZXI6OnJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByKQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsIG1fcmVzb3Vy
Y2UgPT0gcmVzb3VyY2UpOwotICAgIGlmIChkb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNh
Y2hlSG9zdCgpLT5tYXliZUxvYWRGYWxsYmFja0Zvck1haW5SZXNwb25zZShyZXF1ZXN0KCksIHIp
KQorICAgIGJvb2wgd2lsbExvYWRGYWxsYmFjayA9IGRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0
aW9uQ2FjaGVIb3N0KCktPm1heWJlTG9hZEZhbGxiYWNrRm9yTWFpblJlc3BvbnNlKHJlcXVlc3Qo
KSwgcik7CisKKyAgICAvLyBUaGUgbWVtb3J5IGNhY2hlIGRvZXNuJ3QgdW5kZXJzdGFuZCB0aGUg
YXBwbGljYXRpb24gY2FjaGUgb3IgaXRzIGNhY2hpbmcgcnVsZXMuIFNvIGlmIGEgbWFpbiByZXNv
dXJjZSBpcyBzZXJ2ZWQKKyAgICAvLyBmcm9tIHRoZSBhcHBsaWNhdGlvbiBjYWNoZSwgZW5zdXJl
IHdlIGRvbid0IHNhdmUgdGhlIHJlc3VsdCBmb3IgZnV0dXJlIHVzZS4KKyAgICBib29sIHNob3Vs
ZFJlbW92ZVJlc291cmNlRnJvbUNhY2hlID0gd2lsbExvYWRGYWxsYmFjazsKKyNpZiBQTEFURk9S
TShDSFJPTUlVTSkKKyAgICAvLyBjaHJvbWl1bSdzIEFwcGxpY2F0aW9uQ2FjaGVIb3N0IGltcGxl
bWVudGF0aW9uIGFsd2F5cyByZXR1cm5zIHRydWUgZm9yIG1heWJlTG9hZEZhbGxiYWNrRm9yTWFp
blJlc3BvbnNlKCkuIEhvd2V2ZXIsIGFsbCByZXNwb25zZXMgbG9hZGVkCisgICAgLy8gZnJvbSBh
cHBjYWNoZSB3aWxsIGhhdmUgYSBub24temVybyBhcHBDYWNoZUlEKCkuCisgICAgaWYgKHIuYXBw
Q2FjaGVJRCgpKQorICAgICAgICBzaG91bGRSZW1vdmVSZXNvdXJjZUZyb21DYWNoZSA9IHRydWU7
CisjZW5kaWYKKyAgICBpZiAoc2hvdWxkUmVtb3ZlUmVzb3VyY2VGcm9tQ2FjaGUpCisgICAgICAg
IG1lbW9yeUNhY2hlKCktPnJlbW92ZShtX3Jlc291cmNlLmdldCgpKTsKKworICAgIGlmICh3aWxs
TG9hZEZhbGxiYWNrKQogICAgICAgICByZXR1cm47CiAKICAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KEF0b21pY1N0cmluZywgeEZyYW1lT3B0aW9uSGVhZGVyLCAoIngtZnJhbWUtb3B0aW9ucyIsIEF0
b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKQEAgLTU0MCw3ICs1NTUsNyBAQAog
CiAgICAgaWYgKCFsb2FkZXIoKSkgewogICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigp
LT5kaXNwYXRjaERpZEZpbmlzaExvYWRpbmcoZG9jdW1lbnRMb2FkZXIoKSwgaWRlbnRpZmllcigp
LCBmaW5pc2hUaW1lKTsKLSAgICAgICAgbV9zdWJzdGl0dXRlRGF0YUxvYWRJZGVudGlmaWVyID0g
MDsKKyAgICAgICAgbV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlciA9IDA7
CiAgICAgfQogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oSU9TKSAmJiBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwODAKQEAgLTU2Miw2ICs1NzcsMTMgQEAKICAg
ICBkb2N1bWVudExvYWRlcigpLT50aW1pbmcoKS0+c2V0UmVzcG9uc2VFbmQoZmluaXNoVGltZSA/
IGZpbmlzaFRpbWUgOiAobV90aW1lT2ZMYXN0RGF0YVJlY2VpdmVkID8gbV90aW1lT2ZMYXN0RGF0
YVJlY2VpdmVkIDogbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkpKTsKICAgICBkb2N1bWVu
dExvYWRlcigpLT5maW5pc2hlZExvYWRpbmcoKTsKIAorICAgIC8vIElmIHRoZSBkb2N1bWVudCBz
cGVjaWZpZWQgYW4gYXBwbGljYXRpb24gY2FjaGUgbWFuaWZlc3QsIGl0IHZpb2xhdGVzIHRoZSBh
dXRob3IncyBpbnRlbnQgaWYgd2Ugc3RvcmUgaXQgaW4gdGhlIG1lbW9yeSBjYWNoZQorICAgIC8v
IGFuZCBkZW55IHRoZSBhcHBjYWNoZSB0aGUgY2hhbmNlIHRvIGludGVyY2VwdCBpdCBpbiB0aGUg
ZnV0dXJlLCBzbyByZW1vdmUgZnJvbSB0aGUgbWVtb3J5IGNhY2hlLgorICAgIGlmIChGcmFtZSog
ZnJhbWUgPSBkb2N1bWVudExvYWRlcigpLT5mcmFtZSgpKSB7CisgICAgICAgIGlmIChtX3Jlc291
cmNlICYmIGZyYW1lLT5kb2N1bWVudCgpLT5oYXNNYW5pZmVzdCgpKQorICAgICAgICAgICAgbWVt
b3J5Q2FjaGUoKS0+cmVtb3ZlKG1fcmVzb3VyY2UuZ2V0KCkpOworICAgIH0KKwogICAgIGRsLT5h
cHBsaWNhdGlvbkNhY2hlSG9zdCgpLT5maW5pc2hlZExvYWRpbmdNYWluUmVzb3VyY2UoKTsKIH0K
IApAQCAtNjcxLDkgKzY5Myw5IEBACiAgICAgZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25D
YWNoZUhvc3QoKS0+bWF5YmVMb2FkTWFpblJlc291cmNlKHJlcXVlc3QsIG1fc3Vic3RpdHV0ZURh
dGEpOwogCiAgICAgaWYgKG1fc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKSB7Ci0gICAgICAgIG1f
c3Vic3RpdHV0ZURhdGFMb2FkSWRlbnRpZmllciA9IG1fZG9jdW1lbnRMb2FkZXItPmZyYW1lKCkt
PnBhZ2UoKS0+cHJvZ3Jlc3MoKS0+Y3JlYXRlVW5pcXVlSWRlbnRpZmllcigpOwotICAgICAgICBm
cmFtZUxvYWRlcigpLT5ub3RpZmllcigpLT5hc3NpZ25JZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVz
dChtX3N1YnN0aXR1dGVEYXRhTG9hZElkZW50aWZpZXIsIGRvY3VtZW50TG9hZGVyKCksIHJlcXVl
c3QpOwotICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLT5kaXNwYXRjaFdpbGxTZW5k
UmVxdWVzdChkb2N1bWVudExvYWRlcigpLCBtX3N1YnN0aXR1dGVEYXRhTG9hZElkZW50aWZpZXIs
IHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UoKSk7CisgICAgICAgIG1faWRlbnRpZmllckZvckxv
YWRXaXRob3V0UmVzb3VyY2VMb2FkZXIgPSBtX2RvY3VtZW50TG9hZGVyLT5mcmFtZSgpLT5wYWdl
KCktPnByb2dyZXNzKCktPmNyZWF0ZVVuaXF1ZUlkZW50aWZpZXIoKTsKKyAgICAgICAgZnJhbWVM
b2FkZXIoKS0+bm90aWZpZXIoKS0+YXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3QobV9p
ZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlciwgZG9jdW1lbnRMb2FkZXIoKSwg
cmVxdWVzdCk7CisgICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCktPmRpc3BhdGNoV2ls
bFNlbmRSZXF1ZXN0KGRvY3VtZW50TG9hZGVyKCksIG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0
UmVzb3VyY2VMb2FkZXIsIHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UoKSk7CiAgICAgICAgIGhh
bmRsZVN1YnN0aXR1dGVEYXRhTG9hZFNvb24ocmVxdWVzdCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CkBAIC02ODYsMTMgKzcwOCwyMCBAQAogICAgICAgICBkb2N1bWVudExvYWRlcigpLT5zZXRS
ZXF1ZXN0KFJlc291cmNlUmVxdWVzdCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBp
ZiAoIWxvYWRlcigpKSB7CisgICAgICAgIG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3Vy
Y2VMb2FkZXIgPSBtX2RvY3VtZW50TG9hZGVyLT5mcmFtZSgpLT5wYWdlKCktPnByb2dyZXNzKCkt
PmNyZWF0ZVVuaXF1ZUlkZW50aWZpZXIoKTsKKyAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZp
ZXIoKS0+YXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3QobV9pZGVudGlmaWVyRm9yTG9h
ZFdpdGhvdXRSZXNvdXJjZUxvYWRlciwgZG9jdW1lbnRMb2FkZXIoKSwgcmVxdWVzdCk7CisgICAg
ICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCktPmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KGRv
Y3VtZW50TG9hZGVyKCksIG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIs
IHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UoKSk7CisgICAgfQogICAgIG1fcmVzb3VyY2UtPmFk
ZENsaWVudCh0aGlzKTsKIAotICAgIC8vIFdlIG5lZWQgdG8gd2FpdCB1bnRpbCBhZnRlciByZXF1
ZXN0TWFpblJlc291cmNlKCkgaXMgY2FsbGVkIHRvIHNldFJlcXVlc3QoKSwgYmVjYXVzZSB0aGVy
ZSBhcmUgYSBidW5jaCBvZiBoZWFkZXJzIHNldCB3aGVuCi0gICAgLy8gdGhlIHVuZGVybHlpbmcg
UmVzb3VyY2VMb2FkZXIgaXMgY3JlYXRlZCwgYW5kIERvY3VtZW50TG9hZGVyOjptX3JlcXVlc3Qg
bmVlZHMgdG8gaW5jbHVkZSB0aG9zZS4gSG93ZXZlciwgdGhlIGNhY2hlIHdpbGwKLSAgICAvLyBz
dHJpcCB0aGUgZnJhZ21lbnQgaWRlbnRpZmllciAod2hpY2ggRG9jdW1lbnRMb2FkZXI6Om1fcmVx
dWVzdCBzaG91bGQgYWxzbyBpbmNsdWRlKSwgc28gYWRkIHRoYXQgYmFjayBpbi4KKyAgICAvLyBB
IGJ1bmNoIG9mIGhlYWRlcnMgYXJlIHNldCB3aGVuIHRoZSB1bmRlcmx5aW5nIFJlc291cmNlTG9h
ZGVyIGlzIGNyZWF0ZWQsIGFuZCBEb2N1bWVudExvYWRlcjo6bV9yZXF1ZXN0IG5lZWRzIHRvIGlu
Y2x1ZGUgdGhvc2UuCiAgICAgaWYgKGxvYWRlcigpKQogICAgICAgICByZXF1ZXN0ID0gbG9hZGVy
KCktPm9yaWdpbmFsUmVxdWVzdCgpOworICAgIC8vIElmIHRoZXJlIHdhcyBhIGZyYWdtZW50IGlk
ZW50aWZpZXIgb24gaW5pdGlhbFJlcXVlc3QsIHRoZSBjYWNoZSB3aWxsIGhhdmUgc3RyaXBwZWQg
aXQuIERvY3VtZW50TG9hZGVyOjptX3JlcXVlc3Qgc2hvdWxkIGluY2x1ZGUKKyAgICAvLyB0aGUg
ZnJhZ21lbnQgaWRlbnRpZmllciwgc28gYWRkIHRoYXQgYmFjayBpbi4KKyAgICBpZiAoZXF1YWxJ
Z25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihpbml0aWFsUmVxdWVzdC51cmwoKSwgcmVxdWVzdC51
cmwoKSkpCisgICAgICAgIHJlcXVlc3Quc2V0VVJMKGluaXRpYWxSZXF1ZXN0LnVybCgpKTsKICAg
ICBkb2N1bWVudExvYWRlcigpLT5zZXRSZXF1ZXN0KHJlcXVlc3QpOwogfQogCkBAIC03MjAsOSAr
NzQ5LDkgQEAKIAogdW5zaWduZWQgbG9uZyBNYWluUmVzb3VyY2VMb2FkZXI6OmlkZW50aWZpZXIo
KSBjb25zdAogewotICAgIEFTU0VSVCghbV9zdWJzdGl0dXRlRGF0YUxvYWRJZGVudGlmaWVyIHx8
ICFsb2FkZXIoKSB8fCAhbG9hZGVyKCktPmlkZW50aWZpZXIoKSk7Ci0gICAgaWYgKG1fc3Vic3Rp
dHV0ZURhdGFMb2FkSWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuIG1fc3Vic3RpdHV0ZURhdGFM
b2FkSWRlbnRpZmllcjsKKyAgICBBU1NFUlQoIW1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVz
b3VyY2VMb2FkZXIgfHwgIWxvYWRlcigpIHx8ICFsb2FkZXIoKS0+aWRlbnRpZmllcigpKTsKKyAg
ICBpZiAobV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlcikKKyAgICAgICAg
cmV0dXJuIG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXI7CiAgICAgaWYg
KFJlc291cmNlTG9hZGVyKiByZXNvdXJjZUxvYWRlciA9IGxvYWRlcigpKQogICAgICAgICByZXR1
cm4gcmVzb3VyY2VMb2FkZXItPmlkZW50aWZpZXIoKTsKICAgICByZXR1cm4gMDsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJKHJldmlzaW9uIDEzOTYyMikKKysrIFNvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNiAr
NjUsNyBAQAogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJMYW5ndWFnZS5oIgogI2lu
Y2x1ZGUgIk1hbGxvY1N0YXRpc3RpY3MuaCIKKyNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgogI2lu
Y2x1ZGUgIk1vY2tQYWdlUG9wdXBEcml2ZXIuaCIKICNpbmNsdWRlICJOb2RlUmVuZGVyaW5nQ29u
dGV4dC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTI5Myw2ICsyOTQsMTQgQEAKICAgICByZXR1
cm4gZG9jdW1lbnQtPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPmlzUHJlbG9hZGVkKHVybCk7CiB9
CiAKK2Jvb2wgSW50ZXJuYWxzOjppc0xvYWRpbmdGcm9tTWVtb3J5Q2FjaGUoY29uc3QgU3RyaW5n
JiB1cmwpCit7CisgICAgaWYgKCFjb250ZXh0RG9jdW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIENhY2hlZFJlc291cmNlKiByZXNvdXJjZSA9IG1lbW9yeUNhY2hlKCktPnJlc291
cmNlRm9yVVJMKGNvbnRleHREb2N1bWVudCgpLT5jb21wbGV0ZVVSTCh1cmwpKTsKKyAgICByZXR1
cm4gcmVzb3VyY2UgJiYgcmVzb3VyY2UtPnN0YXR1cygpID09IENhY2hlZFJlc291cmNlOjpDYWNo
ZWQ7Cit9CisKIFBhc3NSZWZQdHI8RWxlbWVudD4gSW50ZXJuYWxzOjpjcmVhdGVDb250ZW50RWxl
bWVudChEb2N1bWVudCogZG9jdW1lbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmICgh
ZG9jdW1lbnQpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAkocmV2aXNpb24g
MTM5NjIyKQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAkod29ya2luZyBj
b3B5KQpAQCAtNzIsNiArNzIsNyBAQAogICAgIFN0cmluZyBhZGRyZXNzKE5vZGUqKTsKIAogICAg
IGJvb2wgaXNQcmVsb2FkZWQoRG9jdW1lbnQqLCBjb25zdCBTdHJpbmcmIHVybCk7CisgICAgYm9v
bCBpc0xvYWRpbmdGcm9tTWVtb3J5Q2FjaGUoY29uc3QgU3RyaW5nJiB1cmwpOwogCiAgICAgc2l6
ZV90IG51bWJlck9mU2NvcGVkSFRNTFN0eWxlQ2hpbGRyZW4oY29uc3QgTm9kZSosIEV4Y2VwdGlv
bkNvZGUmKSBjb25zdDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAko
cmV2aXNpb24gMTM5NjIyKQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAKICAgICBET01TdHJpbmcgZWxlbWVu
dFJlbmRlclRyZWVBc1RleHQoaW4gRWxlbWVudCBlbGVtZW50KSByYWlzZXMoRE9NRXhjZXB0aW9u
KTsKICAgICBib29sZWFuIGlzUHJlbG9hZGVkKGluIERvY3VtZW50IGRvY3VtZW50LCBpbiBET01T
dHJpbmcgdXJsKTsKKyAgICBib29sZWFuIGlzTG9hZGluZ0Zyb21NZW1vcnlDYWNoZShpbiBET01T
dHJpbmcgdXJsKTsKIAogICAgIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZTY29wZWRIVE1MU3R5bGVD
aGlsZHJlbihpbiBOb2RlIHNjb3BlKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIApJbmRleDogQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIENoYW5nZUxvZwkocmV2aXNpb24gMTM5NjMzKQorKysgQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMDEtMTQgIE5hdGUg
Q2hhcGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBFbmFibGUgcmV1c2Ugb2Yg
Y2FjaGVkIG1haW4gcmVzb3VyY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDU2NjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFNvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXI6IEV4cG9zZSBN
ZW1vcnlDYWNoZTo6cmVzb3VyY2VGb3JVUkwoKS4KKwogMjAxMy0wMS0xMSAgQ2FybG9zIEdhcmNp
YSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gVXBk
YXRlIE5FV1MgYW5kIGNvbmZpZ3VyZS5hYyBmb3IgMS4xMS40IHJlbGVhc2UKSW5kZXg6IExheW91
dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDEzOTYzMykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE4IEBACisyMDEzLTAxLTE0ICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgRW5hYmxlIHJldXNlIG9mIGNhY2hlZCBtYWluIHJlc291cmNlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1NjY3Lgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHR0cC90
ZXN0cy9jYWNoZS9jYWNoZWQtbWFpbi1yZXNvdXJjZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGh0dHAvdGVzdHMvY2FjaGUvY2FjaGVkLW1haW4tcmVzb3VyY2UuaHRtbDogQWRkZWQu
CisgICAgICAgICogaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvY2FjaGVhYmxlLWlmcmFtZS5w
aHA6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlLWhhci1w
YWdlcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9sb2FkaW5nL3JlZGlyZWN0
LW1ldGhvZHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvbWlzYy9mYXZpY29u
LWxvYWRzLXdpdGgtaW1hZ2VzLWRpc2FibGVkLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRw
L3Rlc3RzL21pc2MvbGluay1yZWwtaWNvbi1iZWZvcmVsb2FkLWV4cGVjdGVkLnR4dDoKKwogMjAx
My0wMS0xNCAgTGV2aSBXZWludHJhdWIgIDxsZXZpd0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
VW5yZXZpZXdlZCBnYXJkZW5pbmcuIE1hcmtpbmcgZmFzdC9kb20vSFRNTFRlbXBsYXRlRWxlbWVu
dC9pbmVydENvbnRlbnRzLmh0bWwKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9m
YXZpY29uLWxvYWRzLXdpdGgtaW1hZ2VzLWRpc2FibGVkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvZmF2aWNvbi1sb2Fkcy13aXRoLWltYWdl
cy1kaXNhYmxlZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDEzOTYyMikKKysrIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvbWlzYy9mYXZpY29uLWxvYWRzLXdpdGgtaW1hZ2VzLWRpc2FibGVkLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDcgQEAKIDx1bmtub3duPiAtIGRpZEZp
bmlzaExvYWRpbmcKIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9taXNjL2Zhdmljb24tbG9hZHMtd2l0
aC1pbWFnZXMtZGlzYWJsZWQuaHRtbCAtIHdpbGxTZW5kUmVxdWVzdCA8TlNVUkxSZXF1ZXN0IFVS
TCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbWlzYy9mYXZpY29uLWxvYWRzLXdpdGgtaW1hZ2VzLWRp
c2FibGVkLmh0bWwsIG1haW4gZG9jdW1lbnQgVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9taXNj
L2Zhdmljb24tbG9hZHMtd2l0aC1pbWFnZXMtZGlzYWJsZWQuaHRtbCwgaHR0cCBtZXRob2QgR0VU
PiByZWRpcmVjdFJlc3BvbnNlIChudWxsKQogaHR0cDovLzEyNy4wLjAuMTo4MDAwL21pc2MvZmF2
aWNvbi1sb2Fkcy13aXRoLWltYWdlcy1kaXNhYmxlZC5odG1sIC0gZGlkUmVjZWl2ZVJlc3BvbnNl
IDxOU1VSTFJlc3BvbnNlIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9taXNjL2Zhdmljb24tbG9hZHMt
d2l0aC1pbWFnZXMtZGlzYWJsZWQuaHRtbCwgaHR0cCBzdGF0dXMgY29kZSAyMDA+CitodHRwOi8v
MTI3LjAuMC4xOjgwMDAvbWlzYy9mYXZpY29uLWxvYWRzLXdpdGgtaW1hZ2VzLWRpc2FibGVkLmh0
bWwgLSBkaWRGaW5pc2hMb2FkaW5nCiBSYWRhciA2OTczMTA2IGFuZCBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc4OTYgLSBGYXZpY29ucyBzdGlsbCBsb2FkIHdoZW4g
YXV0b21hdGljIGltYWdlIGxvYWRpbmcgaXMgZGlzYWJsZWQuCiBUaGlzIHRlc3QgdXNlcyBEUlQn
cyByZXNvdXJjZSBsb2FkIGRlbGVnYXRlIGNhbGxiYWNrIG1vZGUgdG8gc2VlIGlmIHRoZSBmYXZp
Y29uIGlzIGxvYWRlZCBldmVuIHdoZW4gaW1hZ2UgbG9hZGluZyBpcyBvZmYuCiAKSW5kZXg6IExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9saW5rLXJlbC1pY29uLWJlZm9yZWxvYWQtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9saW5rLXJl
bC1pY29uLWJlZm9yZWxvYWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxMzk2MjIpCisrKyBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvbGluay1yZWwtaWNvbi1iZWZvcmVsb2FkLWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIDx1bmtub3duPiAtIGRpZEZpbmlz
aExvYWRpbmcKIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9taXNjL2xpbmstcmVsLWljb24tYmVmb3Jl
bG9hZC5odG1sIC0gd2lsbFNlbmRSZXF1ZXN0IDxOU1VSTFJlcXVlc3QgVVJMIGh0dHA6Ly8xMjcu
MC4wLjE6ODAwMC9taXNjL2xpbmstcmVsLWljb24tYmVmb3JlbG9hZC5odG1sLCBtYWluIGRvY3Vt
ZW50IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbWlzYy9saW5rLXJlbC1pY29uLWJlZm9yZWxv
YWQuaHRtbCwgaHR0cCBtZXRob2QgR0VUPiByZWRpcmVjdFJlc3BvbnNlIChudWxsKQogaHR0cDov
LzEyNy4wLjAuMTo4MDAwL21pc2MvbGluay1yZWwtaWNvbi1iZWZvcmVsb2FkLmh0bWwgLSBkaWRS
ZWNlaXZlUmVzcG9uc2UgPE5TVVJMUmVzcG9uc2UgaHR0cDovLzEyNy4wLjAuMTo4MDAwL21pc2Mv
bGluay1yZWwtaWNvbi1iZWZvcmVsb2FkLmh0bWwsIGh0dHAgc3RhdHVzIGNvZGUgMjAwPgoraHR0
cDovLzEyNy4wLjAuMTo4MDAwL21pc2MvbGluay1yZWwtaWNvbi1iZWZvcmVsb2FkLmh0bWwgLSBk
aWRGaW5pc2hMb2FkaW5nCiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvZmF2aWNvbi5pY28gLSB3aWxs
U2VuZFJlcXVlc3QgPE5TVVJMUmVxdWVzdCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2Zhdmlj
b24uaWNvLCBtYWluIGRvY3VtZW50IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbWlzYy9saW5r
LXJlbC1pY29uLWJlZm9yZWxvYWQuaHRtbCwgaHR0cCBtZXRob2QgR0VUPiByZWRpcmVjdFJlc3Bv
bnNlIChudWxsKQogVGhpcyB0ZXN0IHNob3VsZCBub3Qgc2hvdyBhIHJlcXVlc3QgZm9yIHRoZSBm
YXZpY29uIGRvbnQtbG9hZC10aGlzLmljbywgc2luY2UgdGhlIGJlZm9yZWxvYWQgaGFuZGxlciBv
biB0aGUgZmF2aWNvbiBsaW5rIHJldHVybnMgZmFsc2UuIFRoZXJlZm9yZSwgaWYgdGhlIHJlc291
cmNlIHJlcXVlc3QgbGlzdCBiZWxvdyBzaG93cyBhIHJlcXVlc3QgZm9yIGRvbnQtbG9hZC10aGlz
LmljbywgdGhlbiB0aGlzIHRlc3QgaGFzIGZhaWxlZC4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAv
dGVzdHMvbG9hZGluZy9yZWRpcmVjdC1tZXRob2RzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvcmVkaXJlY3QtbWV0aG9kcy1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDEzOTYyMikKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGlu
Zy9yZWRpcmVjdC1tZXRob2RzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNDIsMTEg
KzQyLDExIEBACiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJl
Y3QtbWV0aG9kcy1mb3JtLmh0bWwgLSBkaWRSZWNlaXZlUmVzcG9uc2UgPE5TVVJMUmVzcG9uc2Ug
aHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMt
Zm9ybS5odG1sLCBodHRwIHN0YXR1cyBjb2RlIDIwMD4KIGZyYW1lICIxIiAtIGRpZENhbmNlbENs
aWVudFJlZGlyZWN0Rm9yRnJhbWUKIGZyYW1lICIxIiAtIGRpZENvbW1pdExvYWRGb3JGcmFtZQor
aHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMt
Zm9ybS5odG1sIC0gZGlkRmluaXNoTG9hZGluZwogZnJhbWUgIjEiIC0gZGlkRmluaXNoRG9jdW1l
bnRMb2FkRm9yRnJhbWUKIGZyYW1lICIxIiAtIHdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RUb1VS
TDogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhv
ZHMtcmVzdWx0LnBocCAKIGZyYW1lICIxIiAtIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1l
CiBmcmFtZSAiMSIgLSBkaWRGaW5pc2hMb2FkRm9yRnJhbWUKLWh0dHA6Ly8xMjcuMC4wLjE6ODAw
MC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLWZvcm0uaHRtbCAtIGRpZEZpbmlz
aExvYWRpbmcKIGZyYW1lICIxIiAtIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUKIGh0
dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLXJl
c3VsdC5waHAgLSB3aWxsU2VuZFJlcXVlc3QgPE5TVVJMUmVxdWVzdCBVUkwgaHR0cDovLzEyNy4w
LjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtcmVzdWx0LnBocCwg
bWFpbiBkb2N1bWVudCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVkaXJlY3Qt
bWV0aG9kcy5odG1sLCBodHRwIG1ldGhvZCBQT1NUPiByZWRpcmVjdFJlc3BvbnNlIChudWxsKQog
aHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMt
cmVzdWx0LnBocCAtIHdpbGxTZW5kUmVxdWVzdCA8TlNVUkxSZXF1ZXN0IFVSTCBodHRwOi8vMTI3
LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1yZXN1bHQucGhw
P3JlZGlyZWN0ZWQ9dHJ1ZSwgbWFpbiBkb2N1bWVudCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAw
L2xvYWRpbmcvcmVkaXJlY3QtbWV0aG9kcy5odG1sLCBodHRwIG1ldGhvZCBHRVQ+IHJlZGlyZWN0
UmVzcG9uc2UgPE5TVVJMUmVzcG9uc2UgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVz
b3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtcmVzdWx0LnBocCwgaHR0cCBzdGF0dXMgY29kZSAzMDI+
CkBAIC02OSwxMSArNjksMTEgQEAKIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291
cmNlcy9yZWRpcmVjdC1tZXRob2RzLWZvcm0uaHRtbCAtIGRpZFJlY2VpdmVSZXNwb25zZSA8TlNV
UkxSZXNwb25zZSBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJl
Y3QtbWV0aG9kcy1mb3JtLmh0bWwsIGh0dHAgc3RhdHVzIGNvZGUgMjAwPgogZnJhbWUgIjIiIC0g
ZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZQogZnJhbWUgIjIiIC0gZGlkQ29tbWl0TG9h
ZEZvckZyYW1lCitodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJl
Y3QtbWV0aG9kcy1mb3JtLmh0bWwgLSBkaWRGaW5pc2hMb2FkaW5nCiBmcmFtZSAiMiIgLSBkaWRG
aW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZQogZnJhbWUgIjIiIC0gd2lsbFBlcmZvcm1DbGllbnRS
ZWRpcmVjdFRvVVJMOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVk
aXJlY3QtbWV0aG9kcy1yZXN1bHQucGhwIAogZnJhbWUgIjIiIC0gZGlkSGFuZGxlT25sb2FkRXZl
bnRzRm9yRnJhbWUKIGZyYW1lICIyIiAtIGRpZEZpbmlzaExvYWRGb3JGcmFtZQotaHR0cDovLzEy
Ny4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtZm9ybS5odG1s
IC0gZGlkRmluaXNoTG9hZGluZwogZnJhbWUgIjIiIC0gZGlkU3RhcnRQcm92aXNpb25hbExvYWRG
b3JGcmFtZQogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0
LW1ldGhvZHMtcmVzdWx0LnBocCAtIHdpbGxTZW5kUmVxdWVzdCA8TlNVUkxSZXF1ZXN0IFVSTCBo
dHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1y
ZXN1bHQucGhwLCBtYWluIGRvY3VtZW50IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGlu
Zy9yZWRpcmVjdC1tZXRob2RzLmh0bWwsIGh0dHAgbWV0aG9kIFBPU1Q+IHJlZGlyZWN0UmVzcG9u
c2UgKG51bGwpCiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJl
Y3QtbWV0aG9kcy1yZXN1bHQucGhwIC0gd2lsbFNlbmRSZXF1ZXN0IDxOU1VSTFJlcXVlc3QgVVJM
IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2Rz
LXJlc3VsdC5waHA/cmVkaXJlY3RlZD10cnVlLCBtYWluIGRvY3VtZW50IFVSTCBodHRwOi8vMTI3
LjAuMC4xOjgwMDAvbG9hZGluZy9yZWRpcmVjdC1tZXRob2RzLmh0bWwsIGh0dHAgbWV0aG9kIEdF
VD4gcmVkaXJlY3RSZXNwb25zZSA8TlNVUkxSZXNwb25zZSBodHRwOi8vMTI3LjAuMC4xOjgwMDAv
bG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1yZXN1bHQucGhwLCBodHRwIHN0YXR1
cyBjb2RlIDMwMz4KQEAgLTk2LDExICs5NiwxMSBAQAogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xv
YWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtZm9ybS5odG1sIC0gZGlkUmVjZWl2ZVJl
c3BvbnNlIDxOU1VSTFJlc3BvbnNlIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291
cmNlcy9yZWRpcmVjdC1tZXRob2RzLWZvcm0uaHRtbCwgaHR0cCBzdGF0dXMgY29kZSAyMDA+CiBm
cmFtZSAiMyIgLSBkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lCiBmcmFtZSAiMyIgLSBk
aWRDb21taXRMb2FkRm9yRnJhbWUKK2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291
cmNlcy9yZWRpcmVjdC1tZXRob2RzLWZvcm0uaHRtbCAtIGRpZEZpbmlzaExvYWRpbmcKIGZyYW1l
ICIzIiAtIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lCiBmcmFtZSAiMyIgLSB3aWxsUGVy
Zm9ybUNsaWVudFJlZGlyZWN0VG9VUkw6IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jl
c291cmNlcy9yZWRpcmVjdC1tZXRob2RzLXJlc3VsdC5waHAgCiBmcmFtZSAiMyIgLSBkaWRIYW5k
bGVPbmxvYWRFdmVudHNGb3JGcmFtZQogZnJhbWUgIjMiIC0gZGlkRmluaXNoTG9hZEZvckZyYW1l
Ci1odHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9k
cy1mb3JtLmh0bWwgLSBkaWRGaW5pc2hMb2FkaW5nCiBmcmFtZSAiMyIgLSBkaWRTdGFydFByb3Zp
c2lvbmFsTG9hZEZvckZyYW1lCiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJj
ZXMvcmVkaXJlY3QtbWV0aG9kcy1yZXN1bHQucGhwIC0gd2lsbFNlbmRSZXF1ZXN0IDxOU1VSTFJl
cXVlc3QgVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVj
dC1tZXRob2RzLXJlc3VsdC5waHAsIG1haW4gZG9jdW1lbnQgVVJMIGh0dHA6Ly8xMjcuMC4wLjE6
ODAwMC9sb2FkaW5nL3JlZGlyZWN0LW1ldGhvZHMuaHRtbCwgaHR0cCBtZXRob2QgUE9TVD4gcmVk
aXJlY3RSZXNwb25zZSAobnVsbCkKIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291
cmNlcy9yZWRpcmVjdC1tZXRob2RzLXJlc3VsdC5waHAgLSB3aWxsU2VuZFJlcXVlc3QgPE5TVVJM
UmVxdWVzdCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGly
ZWN0LW1ldGhvZHMtcmVzdWx0LnBocD9yZWRpcmVjdGVkPXRydWUsIG1haW4gZG9jdW1lbnQgVVJM
IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3JlZGlyZWN0LW1ldGhvZHMuaHRtbCwgaHR0
cCBtZXRob2QgUE9TVD4gcmVkaXJlY3RSZXNwb25zZSA8TlNVUkxSZXNwb25zZSBodHRwOi8vMTI3
LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1yZXN1bHQucGhw
LCBodHRwIHN0YXR1cyBjb2RlIDMwNz4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL3Jlc291cmNlLWhhci1wYWdlcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2UtaGFyLXBhZ2VzLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMTM5NjIyKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvcmVzb3VyY2UtaGFyLXBhZ2VzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw2
ICsxLDUgQEAKIFRlc3RzIGNvbnZlcnNpb24gb2YgSW5zcGVjdG9yJ3MgcmVzb3VyY2UgcmVwcmVz
ZW50YXRpb24gaW50byBIQVIgZm9ybWF0LgogCi1QYWdlIHJlbG9hZGVkLgogewogICAgIDAgOiB7
CiAgICAgICAgIGlkIDogPHN0cmluZz4KQEAgLTI4LDQgKzI3LDUgQEAKIHBhZ2U6IHBhZ2VfMSB1
cmw6IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvcmVzb3VyY2VzL2hhci1wYWdlcy1u
YXZpZ2F0aW9uLXRhcmdldC5odG1sCiBwYWdlOiBwYWdlXzEgdXJsOiBodHRwOi8vMTI3LjAuMC4x
OjgwMDAvaW5zcGVjdG9yL3Jlc291cmNlcy9zb3VyY2UxLmpzCiBwYWdlOiBwYWdlXzEgdXJsOiBo
dHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3VyY2VzL3JlZGlyZWN0LnBocD91cmw9L2luc3BlY3Rv
ci9yZXNvdXJjZXMvaGFyLXBhZ2VzLW5hdmlnYXRpb24tdGFyZ2V0Lmh0bWwKK1BhZ2UgcmVsb2Fk
ZWQuCiAKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvY2FjaGVkLW1haW4tcmVz
b3VyY2UtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
Y2FjaGUvY2FjaGVkLW1haW4tcmVzb3VyY2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9jYWNoZWQtbWFpbi1yZXNvdXJjZS1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyIEBACitQQVNTCisgCkluZGV4OiBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL2NhY2hlZC1tYWluLXJlc291cmNlLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9jYWNoZWQtbWFpbi1yZXNvdXJj
ZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9jYWNo
ZWQtbWFpbi1yZXNvdXJjZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjQgQEAKKzxo
dG1sPgorPGJvZHkgb25sb2FkPSJzZXRUaW1lb3V0KHJlbW92ZUFuZFJlbG9hZCwgMCk7Ij4KKzxk
aXYgaWQ9InJlc3VsdCI+PC9kaXY+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7
CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxE
b25lKCk7Cit9CisKK2Z1bmN0aW9uIHJlbW92ZUFuZFJlbG9hZCgpCit7CisgICAgZG9jdW1lbnQu
Ym9keS5yZW1vdmVDaGlsZChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaWZyYW1lIikpOworICAg
IHZhciBuZXdJZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsKKyAgICBu
ZXdJZnJhbWUuc3JjID0gInJlc291cmNlcy9jYWNoZWFibGUtaWZyYW1lLnBocCI7CisgICAgZG9j
dW1lbnQuYm9keS5hcHBlbmRDaGlsZChuZXdJZnJhbWUpOworICAgIHZhciBmcm9tQ2FjaGUgPSBp
bnRlcm5hbHMuaXNMb2FkaW5nRnJvbU1lbW9yeUNhY2hlKG5ld0lmcmFtZS5zcmMpOworICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh
dGVUZXh0Tm9kZShmcm9tQ2FjaGUgPyAiUEFTUyIgOiAiRkFJTCIpKTsKKyAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQorPC9zY3Jp
cHQ+Cis8aWZyYW1lIGlkPSJpZnJhbWUiIHNyYz0icmVzb3VyY2VzL2NhY2hlYWJsZS1pZnJhbWUu
cGhwIj48L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAv
dGVzdHMvY2FjaGUvcmVzb3VyY2VzL2NhY2hlYWJsZS1pZnJhbWUucGhwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvcmVzb3VyY2VzL2NhY2hlYWJsZS1pZnJhbWUu
cGhwCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJj
ZXMvY2FjaGVhYmxlLWlmcmFtZS5waHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMSBAQAor
PD9waHAKK3JlcXVpcmVfb25jZSAnLi4vLi4vcmVzb3VyY2VzL3BvcnRhYmlsaXR5TGF5ZXIucGhw
JzsKKworJG1heF9hZ2UgPSAxMiAqIDMxICogMjQgKiA2MCAqIDYwOyAvL29uZSB5ZWFyCiskZXhw
aXJlcyA9IGdtZGF0ZShEQVRFX1JGQzExMjMsIHRpbWUoKSArICRtYXhfYWdlKTsKKworaGVhZGVy
KCdDYWNoZS1Db250cm9sOiBwdWJsaWMsIG1heC1hZ2U9JyAuICRtYXhfYWdlKTsKK2hlYWRlcign
RXhwaXJlczogJyAuICRleHBpcmVzKTsKK2hlYWRlcignQ29udGVudC1UeXBlOiB0ZXh0L2h0bWwn
KTsKK2V4aXQoKTsKKz8+Cg==
</data>
<flag name="commit-queue"
          id="200673"
          type_id="3"
          status="-"
          setter="gtk-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182621</attachid>
            <date>2013-01-14 13:40:36 -0800</date>
            <delta_ts>2013-01-14 14:03:55 -0800</delta_ts>
            <desc>Fix symbols.filter</desc>
            <filename>cmr_0114.txt</filename>
            <type>text/plain</type>
            <size>36269</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDEzOTYz
MykKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDEzLTAx
LTE0ICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgRW5hYmxl
IHJldXNlIG9mIGNhY2hlZCBtYWluIHJlc291cmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1NjY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVy
OiBFeHBvc2UgTWVtb3J5Q2FjaGU6OnJlc291cmNlRm9yVVJMKCkuCisKIDIwMTMtMDEtMTEgIENh
cmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQuIFVwZGF0ZSBORVdTIGFuZCBjb25maWd1cmUuYWMgZm9yIDEuMTEuNCByZWxlYXNlCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzk2MzMpCisrKyBTb3VyY2UvV2ViS2l0L3dp
bi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMiBAQAorMjAxMy0wMS0xNCAg
TmF0ZSBDaGFwaW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEVuYWJsZSByZXVz
ZSBvZiBjYWNoZWQgbWFpbiByZXNvdXJjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwNTY2NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViS2l0LnZjcHJvai9XZWJLaXRFeHBvcnRzLmRlZi5pbjog
RXhwb3NlIHNvbWUgTWVtb3J5Q2FjaGUgc3ltYm9scyBmb3IgdXNlIGluIEludGVybmFscy4KKwog
MjAxMy0wMS0wOSAgSGFqaW1lIE1vcnJpdGEgIDxtb3JyaXRhQGdvb2dsZS5jb20+CiAKICAgICAg
ICAgW1NoYWRvdyBET01dIERpc3RyaWJ1dGlvbiByZWxhdGVkIGNvZGUgb24gRWxlbWVudFNoYWRv
dyBzaG91bGQgYmUgbWluaW1pemVkLgpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViS2l0LnZj
cHJvai9XZWJLaXRFeHBvcnRzLmRlZi5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dp
bi9XZWJLaXQudmNwcm9qL1dlYktpdEV4cG9ydHMuZGVmLmluCShyZXZpc2lvbiAxMzk2MjIpCisr
KyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdEV4cG9ydHMuZGVmLmluCSh3
b3JraW5nIGNvcHkpCkBAIC01NjAsNiArNTYwLDcgQEAKICAgICAgICAgP2FkZFNsb3dDYXNlQEF0
b21pY1N0cmluZ0BXVEZAQENBP0FWPyRQYXNzUmVmUHRyQFZTdHJpbmdJbXBsQFdURkBAQDJAUEFW
U3RyaW5nSW1wbEAyQEBaCiAgICAgICAgID9jYWNoZURPTVN0cnVjdHVyZUBXZWJDb3JlQEBZQVBB
VlN0cnVjdHVyZUBKU0NAQFBBVkpTRE9NR2xvYmFsT2JqZWN0QDFAUEFWMjNAUEJVQ2xhc3NJbmZv
QDNAQFoKICAgICAgICAgP2NoaWxkSXRlbVdpdGhUYXJnZXRASGlzdG9yeUl0ZW1AV2ViQ29yZUBA
UUJFUEFWMTJAQUJWU3RyaW5nQFdURkBAQFoKKyAgICAgICAgP2NvbXBsZXRlVVJMQERvY3VtZW50
QFdlYkNvcmVAQFFCRT9BVktVUkxAMkBBQlZTdHJpbmdAV1RGQEBAWgogICAgICAgICA/Y3JlYXRl
QFJhbmdlQFdlYkNvcmVAQFNBP0FWPyRQYXNzUmVmUHRyQFZSYW5nZUBXZWJDb3JlQEBAV1RGQEBW
PyRQYXNzUmVmUHRyQFZEb2N1bWVudEBXZWJDb3JlQEBANEBWPyRQYXNzUmVmUHRyQFZOb2RlQFdl
YkNvcmVAQEA0QEgxSEBaCiAgICAgICAgID9jcmVhdGVAU2VyaWFsaXplZFNjcmlwdFZhbHVlQFdl
YkNvcmVAQFNBP0FWPyRQYXNzUmVmUHRyQFZTZXJpYWxpemVkU2NyaXB0VmFsdWVAV2ViQ29yZUBA
QFdURkBAQUJWU3RyaW5nQDRAQFoKICAgICAgICAgP2NyZWF0ZUBTZXJpYWxpemVkU2NyaXB0VmFs
dWVAV2ViQ29yZUBAU0E/QVY/JFBhc3NSZWZQdHJAVlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUBXZWJD
b3JlQEBAV1RGQEBQQVZFeGVjU3RhdGVASlNDQEBWSlNWYWx1ZUA2QFBBVj8kVmVjdG9yQFY/JFJl
ZlB0ckBWTWVzc2FnZVBvcnRAV2ViQ29yZUBAQFdURkBAJDAwQDRAUEFWPyRWZWN0b3JAVj8kUmVm
UHRyQFZBcnJheUJ1ZmZlckBXVEZAQEBXVEZAQCQwMEA0QFc0U2VyaWFsaXphdGlvbkVycm9yTW9k
ZUAyQEBaCkBAIC0xMzkwLDYgKzEzOTEsNyBAQAogICAgICAgICA/bGFzdENoYW5nZVdhc1VzZXJF
ZGl0QEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50QFdlYkNvcmVAQFFCRV9OWFoKICAgICAgICAg
P21haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0QFBhZ2VAV2ViQ29yZUBAUUFFP0FWU3Ry
aW5nQFdURkBAWFoKICAgICAgICAgP21hcmtlcnNGb3JARG9jdW1lbnRNYXJrZXJDb250cm9sbGVy
QFdlYkNvcmVAQFFBRT9BVj8kVmVjdG9yQFBBVkRvY3VtZW50TWFya2VyQFdlYkNvcmVAQCQwQUBA
V1RGQEBQQVZOb2RlQDJAVk1hcmtlclR5cGVzQERvY3VtZW50TWFya2VyQDJAQFoKKyAgICAgICAg
P21lbW9yeUNhY2hlQFdlYkNvcmVAQFlBUEFWTWVtb3J5Q2FjaGVAMUBYWgogICAgICAgICA/bmV4
dFNpYmxpbmdAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhYWgogICAgICAg
ICA/Zmlyc3RDaGlsZEBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXJAV2ViQ29yZUBAUUFFWFhaCiAg
ICAgICAgID9sYXN0Q2hpbGRAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhY
WgpAQCAtMTQwOSw2ICsxNDExLDcgQEAKICAgICAgICAgP3JhbmdlRnJvbUxvY2F0aW9uQW5kTGVu
Z3RoQFRleHRJdGVyYXRvckBXZWJDb3JlQEBTQT9BVj8kUGFzc1JlZlB0ckBWUmFuZ2VAV2ViQ29y
ZUBAQFdURkBAUEFWQ29udGFpbmVyTm9kZUAyQEhIX05AWgogICAgICAgICA/cmVtb3ZlQFN0cmlu
Z0BXVEZAQFFBRVhJSEBaCiAgICAgICAgID9yZW1vdmVkTGFzdFJlZkBOb2RlQFdlYkNvcmVAQEFB
RVhYWgorICAgICAgICA/cmVzb3VyY2VGb3JVUkxATWVtb3J5Q2FjaGVAV2ViQ29yZUBAUUFFUEFW
Q2FjaGVkUmVzb3VyY2VAMkBBQlZLVVJMQDJAQFoKICAgICAgICAgP3JldmVyc2VGaW5kQFN0cmlu
Z0ltcGxAV1RGQEBRQUVJX1dJQFoKICAgICAgICAgP3NhdmVEb2N1bWVudEFuZFNjcm9sbFN0YXRl
QEhpc3RvcnlDb250cm9sbGVyQFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/c2NyaXB0RXhlY3V0
aW9uQ29udGV4dEBKU0RPTUdsb2JhbE9iamVjdEBXZWJDb3JlQEBRQkVQQVZTY3JpcHRFeGVjdXRp
b25Db250ZXh0QDJAWFoKSW5kZXg6IFNvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgkocmV2aXNpb24gMTM5
NjIyKQorKysgU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgkod29ya2luZyBjb3B5KQpA
QCAtNTQsNiArNTQsNyBAQAogX1pON1dlYkNvcmUxMUV2ZW50VGFyZ2V0OHRvU3RyZWFtRXY7CiBf
Wk43V2ViQ29yZTExSGlzdG9yeUl0ZW0xNnNldERvY3VtZW50U3RhdGVFUktOM1dURjZWZWN0b3JJ
TlMxXzZTdHJpbmdFTGowRUVFOwogX1pON1dlYkNvcmUxMUhpc3RvcnlJdGVtMTZzZXREb2N1bWVu
dFN0YXRlRVJLTjNXVEY2VmVjdG9ySU5TMV82U3RyaW5nRUxtMEVFRTsKK19aTjdXZWJDb3JlMTFN
ZW1vcnlDYWNoZTE0cmVzb3VyY2VGb3JVUkxFUktOU180S1VSTEU7CiBfWk43V2ViQ29yZTEyVGV4
dEl0ZXJhdG9yMjZyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aEVQTlNfMTNDb250YWluZXJOb2Rl
RWlpYjsKIF9aTjdXZWJDb3JlMTJUZXh0SXRlcmF0b3IyOWdldExvY2F0aW9uQW5kTGVuZ3RoRnJv
bVJhbmdlRVBOU183RWxlbWVudEVQS05TXzVSYW5nZUVSalM2XzsKIF9aTjdXZWJDb3JlMTJUZXh0
SXRlcmF0b3IyOWdldExvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlRVBOU183RWxlbWVudEVQS05T
XzVSYW5nZUVSbVM2XzsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzOTYzMykKKysrIFNvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUzIEBACisyMDEz
LTAxLTE0ICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgRW5h
YmxlIHJldXNlIG9mIGNhY2hlZCBtYWluIHJlc291cmNlcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1NjY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy9jYWNoZS9jYWNoZWQt
bWFpbi1yZXNvdXJjZS5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAg
KiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Omhhc01hbmlm
ZXN0KTogUmV0dXJucyB0cnVlIGlmIHRoZSA8aHRtbD4gZWxlbWVudCBoYXMgYSBub24tZW1wdHkg
bWFuaWZlc3QgYXR0cmlidXRlLgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAo
RG9jdW1lbnQpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZGVkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUpOiBEb24n
dCBzZW5kIGRlbGVnYXRlIGNhbGxiYWNrcyBmb3IgY2FjaGUgaGl0IGhlcmUsIHNpbmNlCisgICAg
ICAgICAgICBNYWluUmVzb3VyY2VMb2FkZXIgd2lsbCB0YWtlIGNhcmUgb2YgaXQuCisgICAgICAg
ICogbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYWlu
UmVzb3VyY2VMb2FkZXI6Ok1haW5SZXNvdXJjZUxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpN
YWluUmVzb3VyY2VMb2FkZXI6OnJlY2VpdmVkRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6TWFp
blJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWFp
blJlc291cmNlTG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKTogRG9uJ3QgdHJ5IHRvIGNhY2hlIGxv
YWRzIGZyb20gdGhlIGFwcGxpY2F0aW9uIGNhY2hlLgorICAgICAgICAoV2ViQ29yZTo6TWFpblJl
c291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKTogRG9uJ3QgdHJ5IHRvIGNhY2hlIGxvYWRz
IGZyb20gdGhlIGFwcGxpY2F0aW9uIGNhY2hlLgorICAgICAgICAoV2ViQ29yZTo6TWFpblJlc291
cmNlTG9hZGVyOjpsb2FkKTogRW5zdXJlIHdlIGNyZWF0ZSBhIHJlc291cmNlIGxvYWQgaWRlbnRp
ZmllciBmb3IgY2FjaGUgaGl0cy4gQWxzbywKKyAgICAgICAgICAgIGVuc3VyZSB3ZSBjb3JyZWN0
bHkgcG9wdWFsYXRlIGZyYWdtZW50IGlkZW50aWZpZXJzIGluIHRoZSBSZXNvdXJjZVJlcXVlc3Qg
cmVwb3J0ZWQgdG8gRG9jdW1lbnRMb2FkZXIuCisgICAgICAgIChXZWJDb3JlOjpNYWluUmVzb3Vy
Y2VMb2FkZXI6OmlkZW50aWZpZXIpOgorICAgICAgICAqIGxvYWRlci9NYWluUmVzb3VyY2VMb2Fk
ZXIuaDogUmVuYW1lIG1fc3Vic3RpdHV0ZURhdGFMb2FkSWRlbnRpZmllciB0byBtX2lkZW50aWZp
ZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyCisgICAgICAgICAgICB0byBiZXR0ZXIgZGVz
Y3JpYmUgd2hlbiBpdCBpcyB1c2VkLgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdS
ZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6ZGlkQWRk
Q2xpZW50KTogU3ludGhlc2l6ZSByZWRpcmVjdCBub3RpZmljYXRpb25zIGZvciBjYWNoZSBoaXRz
IGlmIG5lY2Vzc2FyeS4KKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjp3aWxs
U2VuZFJlcXVlc3QpOiBOb3RlIHRoZSByZWRpcmVjdHMgd2UgcmVjZWl2ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6Y2FuUmV1c2UpOiBEb24ndCByZXVzZSBhIHJlc291
cmNlIGlmIHRoZSByZWRpcmVjdCBjaGFpbiBpbmNsdWRlZCBhICJDYWNoZS1jb250cm9sOiBuby1z
dG9yZSIuCisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmg6CisgICAg
ICAgIChDYWNoZWRSYXdSZXNvdXJjZSk6CisgICAgICAgIChSZWRpcmVjdFBhaXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OlJlZGlyZWN0UGFpcjo6UmVkaXJlY3RQYWly
KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmFkZENsaWVudFRvU2V0KTo6IERvbid0IHJldHVybiBj
YWNoZWQgZGF0YSBmb3IgYSBtYWluIHJlc291cmNlIHN5bmNocm9ub3VzbHkKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJl
c291cmNlOjpjYW5SZXVzZSk6CisgICAgICAgIChDYWNoZWRSZXNvdXJjZSk6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZFJlc291cmNlTG9hZGVyOjpkZXRlcm1pbmVSZXZhbGlkYXRpb25Qb2xpY3kpOiBQZXJt
aXQgY2FjaGUgcmV1c2UgZm9yIG1haW4gcmVzb3VyY2VzLgorICAgICAgICAqIHRlc3RpbmcvSW50
ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6aXNMb2FkaW5nRnJvbU1l
bW9yeUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJu
YWxzLmg6CisgICAgICAgIChJbnRlcm5hbHMpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxz
LmlkbDoKKwogMjAxMy0wMS0xNCAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgW1Y4XSBNYWtlIGFuIElzb2xhdGUgcGFyYW1ldGVyIG1hbmRhdG9yeSBpbiBh
c3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcigpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaAkocmV2aXNpb24gMTM5NjIyKQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ4LDcgKzQ4LDcgQEAKICAgICBTdWJyZXNvdXJjZUxvYWRlciogbG9hZGVyKCkgY29u
c3Q7CiAgICAgdm9pZCBjbGVhcigpOwogCi0gICAgYm9vbCBjYW5SZXVzZShjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgY2FuUmV1c2UoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JikgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2Uo
TWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0IE9WRVJSSURFOwogCkBAIC02Nyw2ICs2NywyMCBAQAog
I2VuZGlmCiAKICAgICB1bnNpZ25lZCBsb25nIG1faWRlbnRpZmllcjsKKworICAgIHN0cnVjdCBS
ZWRpcmVjdFBhaXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgZXhwbGljaXQgUmVkaXJlY3RQYWly
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVkaXJlY3RSZXNwb25zZSkKKyAgICAgICAgICAgIDogbV9yZXF1ZXN0KHJlcXVlc3QpCisgICAg
ICAgICAgICAsIG1fcmVkaXJlY3RSZXNwb25zZShyZWRpcmVjdFJlc3BvbnNlKQorICAgICAgICB7
CisgICAgICAgIH0KKworICAgICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QgbV9yZXF1ZXN0Owor
ICAgICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlIG1fcmVkaXJlY3RSZXNwb25zZTsKKyAgICB9
OworCisgICAgVmVjdG9yPFJlZGlyZWN0UGFpcj4gbV9yZWRpcmVjdENoYWluOwogfTsKIAogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAJ
KHJldmlzaW9uIDEzOTYyMikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5Nyw4ICs0OTcsOCBAQAogICAgIGlmICgh
aGFzQ2xpZW50cygpICYmIGluQ2FjaGUoKSkKICAgICAgICAgbWVtb3J5Q2FjaGUoKS0+YWRkVG9M
aXZlUmVzb3VyY2VzU2l6ZSh0aGlzKTsKIAotICAgIGlmIChtX3R5cGUgPT0gUmF3UmVzb3VyY2Ug
JiYgIW1fcmVzcG9uc2UuaXNOdWxsKCkgJiYgIW1fcHJveHlSZXNvdXJjZSkgewotICAgICAgICAv
LyBDZXJ0YWluIHJlc291cmNlcyAoZXNwZWNpYWxseSBYSFJzKSBkbyBjcmF6eSB0aGluZ3MgaWYg
YW4gYXN5bmNocm9ub3VzIGxvYWQgcmV0dXJucworICAgIGlmICgobV90eXBlID09IFJhd1Jlc291
cmNlIHx8IG1fdHlwZSA9PSBNYWluUmVzb3VyY2UpICYmICFtX3Jlc3BvbnNlLmlzTnVsbCgpICYm
ICFtX3Byb3h5UmVzb3VyY2UpIHsKKyAgICAgICAgLy8gQ2VydGFpbiByZXNvdXJjZXMgKGVzcGVj
aWFsbHkgWEhScyBhbmQgbWFpbiByZXNvdXJjZXMpIGRvIGNyYXp5IHRoaW5ncyBpZiBhbiBhc3lu
Y2hyb25vdXMgbG9hZCByZXR1cm5zCiAgICAgICAgIC8vIHN5bmNocm9ub3VzbHkgKGUuZy4sIHNj
cmlwdHMgbWF5IG5vdCBoYXZlIHNldCBhbGwgdGhlIHN0YXRlIHRoZXkgbmVlZCB0byBoYW5kbGUg
dGhlIGxvYWQpLgogICAgICAgICAvLyBUaGVyZWZvcmUsIHJhdGhlciB0aGFuIGltbWVkaWF0ZWx5
IHNlbmRpbmcgY2FsbGJhY2tzIG9uIGEgY2FjaGUgaGl0IGxpa2Ugb3RoZXIgQ2FjaGVkUmVzb3Vy
Y2VzLAogICAgICAgICAvLyB3ZSBzY2hlZHVsZSB0aGUgY2FsbGJhY2tzIGFuZCBlbnN1cmUgd2Ug
bmV2ZXIgZmluaXNoIHN5bmNocm9ub3VzbHkuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDEzOTYy
MikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU0MCwxMiArNTQwLDkgQEAKICAgICAgICAgcmV0dXJuIFJl
bG9hZDsKICAgICB9CiAKLSAgICBpZiAoZXhpc3RpbmdSZXNvdXJjZS0+dHlwZSgpID09IENhY2hl
ZFJlc291cmNlOjpNYWluUmVzb3VyY2UpCisgICAgaWYgKCFleGlzdGluZ1Jlc291cmNlLT5jYW5S
ZXVzZShyZXF1ZXN0KSkKICAgICAgICAgcmV0dXJuIFJlbG9hZDsKIAotICAgIGlmIChleGlzdGlu
Z1Jlc291cmNlLT50eXBlKCkgPT0gQ2FjaGVkUmVzb3VyY2U6OlJhd1Jlc291cmNlICYmICFzdGF0
aWNfY2FzdDxDYWNoZWRSYXdSZXNvdXJjZSo+KGV4aXN0aW5nUmVzb3VyY2UpLT5jYW5SZXVzZShy
ZXF1ZXN0KSkKLSAgICAgICAgcmV0dXJuIFJlbG9hZDsKLQogICAgIC8vIENlcnRhaW4gcmVxdWVz
dHMgKGUuZy4sIFhIUnMpIG1pZ2h0IGhhdmUgbWFudWFsbHkgc2V0IGhlYWRlcnMgdGhhdCByZXF1
aXJlIHJldmFsaWRhdGlvbi4KICAgICAvLyBGSVhNRTogSW4gdGhlb3J5LCB0aGlzIHNob3VsZCBi
ZSBhIFJldmFsaWRhdGUgY2FzZS4gSW4gcHJhY3RpY2UsIHRoZSBNZW1vcnlDYWNoZSByZXZhbGlk
YXRpb24gcGF0aCBhc3N1bWVzIGEgd2hvbGUgYnVuY2gKICAgICAvLyBvZiB0aGluZ3MgYWJvdXQg
aG93IHJldmFsaWRhdGlvbiB3b3JrcyB0aGF0IG1hbnVhbCBoZWFkZXJzIHZpb2xhdGUsIHNvIHB1
bnQgdG8gUmVsb2FkIGluc3RlYWQuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2UuaAkocmV2aXNpb24gMTM5NjIyKQorKysgU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1OCw2ICsy
NTgsOCBAQAogCiAgICAgdmlydHVhbCB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVj
dEluZm8qKSBjb25zdDsKIAorICAgIHZpcnR1YWwgYm9vbCBjYW5SZXVzZShjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisKIHByb3RlY3RlZDoKICAgICB2aXJ0
dWFsIHZvaWQgY2hlY2tOb3RpZnkoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCShyZXZpc2lvbiAxMzk2MjIpCisrKyBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC04MCwxNCArODAsMjUgQEAKIAogdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZGlk
QWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50KiBjKQogewotICAgIGlmIChtX3Jlc3BvbnNl
LmlzTnVsbCgpIHx8ICFoYXNDbGllbnQoYykpCisgICAgaWYgKCFoYXNDbGllbnQoYykpCiAgICAg
ICAgIHJldHVybjsKICAgICAvLyBUaGUgY2FsbHMgdG8gdGhlIGNsaWVudCBjYW4gcmVzdWx0IGlu
IGV2ZW50cyBydW5uaW5nLCBwb3RlbnRpYWxseSBjYXVzaW5nCiAgICAgLy8gdGhpcyByZXNvdXJj
ZSB0byBiZSBldmljdGVkIGZyb20gdGhlIGNhY2hlIGFuZCBhbGwgY2xpZW50cyB0byBiZSByZW1v
dmVkLAogICAgIC8vIHNvIGEgcHJvdGVjdG9yIGlzIG5lY2Vzc2FyeS4KICAgICBDYWNoZWRSZXNv
dXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVjdCh0aGlzKTsKICAgICBDYWNoZWRS
YXdSZXNvdXJjZUNsaWVudCogY2xpZW50ID0gc3RhdGljX2Nhc3Q8Q2FjaGVkUmF3UmVzb3VyY2VD
bGllbnQqPihjKTsKLSAgICBjbGllbnQtPnJlc3BvbnNlUmVjZWl2ZWQodGhpcywgbV9yZXNwb25z
ZSk7CisgICAgc2l6ZV90IHJlZGlyZWN0Q291bnQgPSBtX3JlZGlyZWN0Q2hhaW4uc2l6ZSgpOwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVkaXJlY3RDb3VudDsgaSsrKSB7CisgICAgICAg
IFJlZGlyZWN0UGFpciByZWRpcmVjdCA9IG1fcmVkaXJlY3RDaGFpbltpXTsKKyAgICAgICAgUmVz
b3VyY2VSZXF1ZXN0IHJlcXVlc3QocmVkaXJlY3QubV9yZXF1ZXN0KTsKKyAgICAgICAgY2xpZW50
LT5yZWRpcmVjdFJlY2VpdmVkKHRoaXMsIHJlcXVlc3QsIHJlZGlyZWN0Lm1fcmVkaXJlY3RSZXNw
b25zZSk7CisgICAgICAgIGlmICghaGFzQ2xpZW50KGMpKQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICBBU1NFUlQocmVkaXJlY3RDb3VudCA9PSBtX3JlZGlyZWN0Q2hhaW4uc2l6ZSgp
KTsKKworICAgIGlmICghbV9yZXNwb25zZS5pc051bGwoKSkKKyAgICAgICAgY2xpZW50LT5yZXNw
b25zZVJlY2VpdmVkKHRoaXMsIG1fcmVzcG9uc2UpOwogICAgIGlmICghaGFzQ2xpZW50KGMpKQog
ICAgICAgICByZXR1cm47CiAgICAgaWYgKG1fZGF0YSkKQEAgLTExMCw2ICsxMjEsNyBAQAogICAg
ICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNoZWRSYXdSZXNvdXJjZUNsaWVudD4g
dyhtX2NsaWVudHMpOwogICAgICAgICB3aGlsZSAoQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQqIGMg
PSB3Lm5leHQoKSkKICAgICAgICAgICAgIGMtPnJlZGlyZWN0UmVjZWl2ZWQodGhpcywgcmVxdWVz
dCwgcmVzcG9uc2UpOworICAgICAgICBtX3JlZGlyZWN0Q2hhaW4uYXBwZW5kKFJlZGlyZWN0UGFp
cihyZXF1ZXN0LCByZXNwb25zZSkpOwogICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6d2lsbFNl
bmRSZXF1ZXN0KHJlcXVlc3QsIHJlc3BvbnNlKTsKIH0KQEAgLTE5NCw2ICsyMDYsMTIgQEAKICAg
ICAgICAgaWYgKCFzaG91bGRJZ25vcmVIZWFkZXJGb3JDYWNoZVJldXNlKGhlYWRlck5hbWUpICYm
IGktPnZhbHVlICE9IG5ld0hlYWRlcnMuZ2V0KGhlYWRlck5hbWUpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9yZWRpcmVj
dENoYWluLnNpemUoKTsgaSsrKSB7CisgICAgICAgIGlmIChtX3JlZGlyZWN0Q2hhaW5baV0ubV9y
ZWRpcmVjdFJlc3BvbnNlLmNhY2hlQ29udHJvbENvbnRhaW5zTm9TdG9yZSgpKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwogICAgIHJldHVybiB0cnVlOwogfQogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24g
MTM5NjIyKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJIVE1MRm9ybUVsZW1l
bnQuaCIKICNpbmNsdWRlICJIaXN0b3J5SXRlbS5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5oIgorI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCiAjaW5jbHVkZSAiUGFnZS5o
IgogI2luY2x1ZGUgIlByb2dyZXNzVHJhY2tlci5oIgogI2luY2x1ZGUgIlJlc291cmNlQnVmZmVy
LmgiCkBAIC03Myw3ICs3NCw3IEBACiAgICAgLCBtX2xvYWRpbmdNdWx0aXBhcnRDb250ZW50KGZh
bHNlKQogICAgICwgbV93YWl0aW5nRm9yQ29udGVudFBvbGljeShmYWxzZSkKICAgICAsIG1fdGlt
ZU9mTGFzdERhdGFSZWNlaXZlZCgwLjApCi0gICAgLCBtX3N1YnN0aXR1dGVEYXRhTG9hZElkZW50
aWZpZXIoMCkKKyAgICAsIG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIo
MCkKICNpZiBQTEFURk9STShNQUMpICYmICFQTEFURk9STShJT1MpICYmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA4MAogICAgICwgbV9maWx0ZXIoMCkKICNlbmRpZgpAQCAt
OTksOSArMTAwLDkgQEAKICAgICBSZWZQdHI8TWFpblJlc291cmNlTG9hZGVyPiBwcm90ZWN0KHRo
aXMpOwogICAgIFJlZlB0cjxGcmFtZT4gcHJvdGVjdEZyYW1lKG1fZG9jdW1lbnRMb2FkZXItPmZy
YW1lKCkpOwogCi0gICAgaWYgKG1fc3Vic3RpdHV0ZURhdGFMb2FkSWRlbnRpZmllcikgeworICAg
IGlmIChtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyKSB7CiAgICAgICAg
IEFTU0VSVCghbG9hZGVyKCkpOwotICAgICAgICBmcmFtZUxvYWRlcigpLT5jbGllbnQoKS0+ZGlz
cGF0Y2hEaWRGYWlsTG9hZGluZyhkb2N1bWVudExvYWRlcigpLCBtX3N1YnN0aXR1dGVEYXRhTG9h
ZElkZW50aWZpZXIsIGVycm9yKTsKKyAgICAgICAgZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCktPmRp
c3BhdGNoRGlkRmFpbExvYWRpbmcoZG9jdW1lbnRMb2FkZXIoKSwgbV9pZGVudGlmaWVyRm9yTG9h
ZFdpdGhvdXRSZXNvdXJjZUxvYWRlciwgZXJyb3IpOwogICAgIH0KIAogICAgIC8vIEl0IGlzIGlt
cG9ydGFudCB0aGF0IHdlIGNhbGwgRG9jdW1lbnRMb2FkZXI6Om1haW5SZWNlaXZlZEVycm9yIGJl
Zm9yZSBjYWxsaW5nIApAQCAtMjg2LDcgKzI4Nyw3IEBACiAgICAgICAgIEFTU0VSVCghbV9zdWJz
dGl0dXRlRGF0YS5pc1ZhbGlkKCkpOwogICAgICAgICBkb2N1bWVudExvYWRlcigpLT5hcHBsaWNh
dGlvbkNhY2hlSG9zdCgpLT5tYXliZUxvYWRNYWluUmVzb3VyY2VGb3JSZWRpcmVjdChuZXdSZXF1
ZXN0LCBtX3N1YnN0aXR1dGVEYXRhKTsKICAgICAgICAgaWYgKG1fc3Vic3RpdHV0ZURhdGEuaXNW
YWxpZCgpKQotICAgICAgICAgICAgbV9zdWJzdGl0dXRlRGF0YUxvYWRJZGVudGlmaWVyID0gaWRl
bnRpZmllcigpOworICAgICAgICAgICAgbV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJj
ZUxvYWRlciA9IGlkZW50aWZpZXIoKTsKICAgICB9CiAKICAgICAvLyBGSVhNRTogSWRlYWxseSB3
ZSdkIHN0b3AgdGhlIEkvTyB1bnRpbCB3ZSBoZWFyIGJhY2sgZnJvbSB0aGUgbmF2aWdhdGlvbiBw
b2xpY3kgZGVsZWdhdGUKQEAgLTM5Miw3ICszOTMsMjEgQEAKIHZvaWQgTWFpblJlc291cmNlTG9h
ZGVyOjpyZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcikKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCBtX3Jlc291
cmNlID09IHJlc291cmNlKTsKLSAgICBpZiAoZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25D
YWNoZUhvc3QoKS0+bWF5YmVMb2FkRmFsbGJhY2tGb3JNYWluUmVzcG9uc2UocmVxdWVzdCgpLCBy
KSkKKyAgICBib29sIHdpbGxMb2FkRmFsbGJhY2sgPSBkb2N1bWVudExvYWRlcigpLT5hcHBsaWNh
dGlvbkNhY2hlSG9zdCgpLT5tYXliZUxvYWRGYWxsYmFja0Zvck1haW5SZXNwb25zZShyZXF1ZXN0
KCksIHIpOworCisgICAgLy8gVGhlIG1lbW9yeSBjYWNoZSBkb2Vzbid0IHVuZGVyc3RhbmQgdGhl
IGFwcGxpY2F0aW9uIGNhY2hlIG9yIGl0cyBjYWNoaW5nIHJ1bGVzLiBTbyBpZiBhIG1haW4gcmVz
b3VyY2UgaXMgc2VydmVkCisgICAgLy8gZnJvbSB0aGUgYXBwbGljYXRpb24gY2FjaGUsIGVuc3Vy
ZSB3ZSBkb24ndCBzYXZlIHRoZSByZXN1bHQgZm9yIGZ1dHVyZSB1c2UuCisgICAgYm9vbCBzaG91
bGRSZW1vdmVSZXNvdXJjZUZyb21DYWNoZSA9IHdpbGxMb2FkRmFsbGJhY2s7CisjaWYgUExBVEZP
Uk0oQ0hST01JVU0pCisgICAgLy8gY2hyb21pdW0ncyBBcHBsaWNhdGlvbkNhY2hlSG9zdCBpbXBs
ZW1lbnRhdGlvbiBhbHdheXMgcmV0dXJucyB0cnVlIGZvciBtYXliZUxvYWRGYWxsYmFja0Zvck1h
aW5SZXNwb25zZSgpLiBIb3dldmVyLCBhbGwgcmVzcG9uc2VzIGxvYWRlZAorICAgIC8vIGZyb20g
YXBwY2FjaGUgd2lsbCBoYXZlIGEgbm9uLXplcm8gYXBwQ2FjaGVJRCgpLgorICAgIGlmIChyLmFw
cENhY2hlSUQoKSkKKyAgICAgICAgc2hvdWxkUmVtb3ZlUmVzb3VyY2VGcm9tQ2FjaGUgPSB0cnVl
OworI2VuZGlmCisgICAgaWYgKHNob3VsZFJlbW92ZVJlc291cmNlRnJvbUNhY2hlKQorICAgICAg
ICBtZW1vcnlDYWNoZSgpLT5yZW1vdmUobV9yZXNvdXJjZS5nZXQoKSk7CisKKyAgICBpZiAod2ls
bExvYWRGYWxsYmFjaykKICAgICAgICAgcmV0dXJuOwogCiAgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChBdG9taWNTdHJpbmcsIHhGcmFtZU9wdGlvbkhlYWRlciwgKCJ4LWZyYW1lLW9wdGlvbnMiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CkBAIC01NDAsNyArNTU1LDcgQEAK
IAogICAgIGlmICghbG9hZGVyKCkpIHsKICAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIo
KS0+ZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nKGRvY3VtZW50TG9hZGVyKCksIGlkZW50aWZpZXIo
KSwgZmluaXNoVGltZSk7Ci0gICAgICAgIG1fc3Vic3RpdHV0ZURhdGFMb2FkSWRlbnRpZmllciA9
IDA7CisgICAgICAgIG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIgPSAw
OwogICAgIH0KIAogI2lmIFBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKElPUykgJiYgX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDgwCkBAIC01NjIsNiArNTc3LDEzIEBACiAg
ICAgZG9jdW1lbnRMb2FkZXIoKS0+dGltaW5nKCktPnNldFJlc3BvbnNlRW5kKGZpbmlzaFRpbWUg
PyBmaW5pc2hUaW1lIDogKG1fdGltZU9mTGFzdERhdGFSZWNlaXZlZCA/IG1fdGltZU9mTGFzdERh
dGFSZWNlaXZlZCA6IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpKSk7CiAgICAgZG9jdW1l
bnRMb2FkZXIoKS0+ZmluaXNoZWRMb2FkaW5nKCk7CiAKKyAgICAvLyBJZiB0aGUgZG9jdW1lbnQg
c3BlY2lmaWVkIGFuIGFwcGxpY2F0aW9uIGNhY2hlIG1hbmlmZXN0LCBpdCB2aW9sYXRlcyB0aGUg
YXV0aG9yJ3MgaW50ZW50IGlmIHdlIHN0b3JlIGl0IGluIHRoZSBtZW1vcnkgY2FjaGUKKyAgICAv
LyBhbmQgZGVueSB0aGUgYXBwY2FjaGUgdGhlIGNoYW5jZSB0byBpbnRlcmNlcHQgaXQgaW4gdGhl
IGZ1dHVyZSwgc28gcmVtb3ZlIGZyb20gdGhlIG1lbW9yeSBjYWNoZS4KKyAgICBpZiAoRnJhbWUq
IGZyYW1lID0gZG9jdW1lbnRMb2FkZXIoKS0+ZnJhbWUoKSkgeworICAgICAgICBpZiAobV9yZXNv
dXJjZSAmJiBmcmFtZS0+ZG9jdW1lbnQoKS0+aGFzTWFuaWZlc3QoKSkKKyAgICAgICAgICAgIG1l
bW9yeUNhY2hlKCktPnJlbW92ZShtX3Jlc291cmNlLmdldCgpKTsKKyAgICB9CisKICAgICBkbC0+
YXBwbGljYXRpb25DYWNoZUhvc3QoKS0+ZmluaXNoZWRMb2FkaW5nTWFpblJlc291cmNlKCk7CiB9
CiAKQEAgLTY3MSw5ICs2OTMsOSBAQAogICAgIGRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9u
Q2FjaGVIb3N0KCktPm1heWJlTG9hZE1haW5SZXNvdXJjZShyZXF1ZXN0LCBtX3N1YnN0aXR1dGVE
YXRhKTsKIAogICAgIGlmIChtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSkgewotICAgICAgICBt
X3N1YnN0aXR1dGVEYXRhTG9hZElkZW50aWZpZXIgPSBtX2RvY3VtZW50TG9hZGVyLT5mcmFtZSgp
LT5wYWdlKCktPnByb2dyZXNzKCktPmNyZWF0ZVVuaXF1ZUlkZW50aWZpZXIoKTsKLSAgICAgICAg
ZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS0+YXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJlcXVl
c3QobV9zdWJzdGl0dXRlRGF0YUxvYWRJZGVudGlmaWVyLCBkb2N1bWVudExvYWRlcigpLCByZXF1
ZXN0KTsKLSAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS0+ZGlzcGF0Y2hXaWxsU2Vu
ZFJlcXVlc3QoZG9jdW1lbnRMb2FkZXIoKSwgbV9zdWJzdGl0dXRlRGF0YUxvYWRJZGVudGlmaWVy
LCByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlKCkpOworICAgICAgICBtX2lkZW50aWZpZXJGb3JM
b2FkV2l0aG91dFJlc291cmNlTG9hZGVyID0gbV9kb2N1bWVudExvYWRlci0+ZnJhbWUoKS0+cGFn
ZSgpLT5wcm9ncmVzcygpLT5jcmVhdGVVbmlxdWVJZGVudGlmaWVyKCk7CisgICAgICAgIGZyYW1l
TG9hZGVyKCktPm5vdGlmaWVyKCktPmFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KG1f
aWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIsIGRvY3VtZW50TG9hZGVyKCks
IHJlcXVlc3QpOworICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLT5kaXNwYXRjaFdp
bGxTZW5kUmVxdWVzdChkb2N1bWVudExvYWRlcigpLCBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91
dFJlc291cmNlTG9hZGVyLCByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlKCkpOwogICAgICAgICBo
YW5kbGVTdWJzdGl0dXRlRGF0YUxvYWRTb29uKHJlcXVlc3QpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQpAQCAtNjg2LDEzICs3MDgsMjAgQEAKICAgICAgICAgZG9jdW1lbnRMb2FkZXIoKS0+c2V0
UmVxdWVzdChSZXNvdXJjZVJlcXVlc3QoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAg
aWYgKCFsb2FkZXIoKSkgeworICAgICAgICBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291
cmNlTG9hZGVyID0gbV9kb2N1bWVudExvYWRlci0+ZnJhbWUoKS0+cGFnZSgpLT5wcm9ncmVzcygp
LT5jcmVhdGVVbmlxdWVJZGVudGlmaWVyKCk7CisgICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlm
aWVyKCktPmFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KG1faWRlbnRpZmllckZvckxv
YWRXaXRob3V0UmVzb3VyY2VMb2FkZXIsIGRvY3VtZW50TG9hZGVyKCksIHJlcXVlc3QpOworICAg
ICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLT5kaXNwYXRjaFdpbGxTZW5kUmVxdWVzdChk
b2N1bWVudExvYWRlcigpLCBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVy
LCByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlKCkpOworICAgIH0KICAgICBtX3Jlc291cmNlLT5h
ZGRDbGllbnQodGhpcyk7CiAKLSAgICAvLyBXZSBuZWVkIHRvIHdhaXQgdW50aWwgYWZ0ZXIgcmVx
dWVzdE1haW5SZXNvdXJjZSgpIGlzIGNhbGxlZCB0byBzZXRSZXF1ZXN0KCksIGJlY2F1c2UgdGhl
cmUgYXJlIGEgYnVuY2ggb2YgaGVhZGVycyBzZXQgd2hlbgotICAgIC8vIHRoZSB1bmRlcmx5aW5n
IFJlc291cmNlTG9hZGVyIGlzIGNyZWF0ZWQsIGFuZCBEb2N1bWVudExvYWRlcjo6bV9yZXF1ZXN0
IG5lZWRzIHRvIGluY2x1ZGUgdGhvc2UuIEhvd2V2ZXIsIHRoZSBjYWNoZSB3aWxsCi0gICAgLy8g
c3RyaXAgdGhlIGZyYWdtZW50IGlkZW50aWZpZXIgKHdoaWNoIERvY3VtZW50TG9hZGVyOjptX3Jl
cXVlc3Qgc2hvdWxkIGFsc28gaW5jbHVkZSksIHNvIGFkZCB0aGF0IGJhY2sgaW4uCisgICAgLy8g
QSBidW5jaCBvZiBoZWFkZXJzIGFyZSBzZXQgd2hlbiB0aGUgdW5kZXJseWluZyBSZXNvdXJjZUxv
YWRlciBpcyBjcmVhdGVkLCBhbmQgRG9jdW1lbnRMb2FkZXI6Om1fcmVxdWVzdCBuZWVkcyB0byBp
bmNsdWRlIHRob3NlLgogICAgIGlmIChsb2FkZXIoKSkKICAgICAgICAgcmVxdWVzdCA9IGxvYWRl
cigpLT5vcmlnaW5hbFJlcXVlc3QoKTsKKyAgICAvLyBJZiB0aGVyZSB3YXMgYSBmcmFnbWVudCBp
ZGVudGlmaWVyIG9uIGluaXRpYWxSZXF1ZXN0LCB0aGUgY2FjaGUgd2lsbCBoYXZlIHN0cmlwcGVk
IGl0LiBEb2N1bWVudExvYWRlcjo6bV9yZXF1ZXN0IHNob3VsZCBpbmNsdWRlCisgICAgLy8gdGhl
IGZyYWdtZW50IGlkZW50aWZpZXIsIHNvIGFkZCB0aGF0IGJhY2sgaW4uCisgICAgaWYgKGVxdWFs
SWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIoaW5pdGlhbFJlcXVlc3QudXJsKCksIHJlcXVlc3Qu
dXJsKCkpKQorICAgICAgICByZXF1ZXN0LnNldFVSTChpbml0aWFsUmVxdWVzdC51cmwoKSk7CiAg
ICAgZG9jdW1lbnRMb2FkZXIoKS0+c2V0UmVxdWVzdChyZXF1ZXN0KTsKIH0KIApAQCAtNzIwLDkg
Kzc0OSw5IEBACiAKIHVuc2lnbmVkIGxvbmcgTWFpblJlc291cmNlTG9hZGVyOjppZGVudGlmaWVy
KCkgY29uc3QKIHsKLSAgICBBU1NFUlQoIW1fc3Vic3RpdHV0ZURhdGFMb2FkSWRlbnRpZmllciB8
fCAhbG9hZGVyKCkgfHwgIWxvYWRlcigpLT5pZGVudGlmaWVyKCkpOwotICAgIGlmIChtX3N1YnN0
aXR1dGVEYXRhTG9hZElkZW50aWZpZXIpCi0gICAgICAgIHJldHVybiBtX3N1YnN0aXR1dGVEYXRh
TG9hZElkZW50aWZpZXI7CisgICAgQVNTRVJUKCFtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJl
c291cmNlTG9hZGVyIHx8ICFsb2FkZXIoKSB8fCAhbG9hZGVyKCktPmlkZW50aWZpZXIoKSk7Cisg
ICAgaWYgKG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIpCisgICAgICAg
IHJldHVybiBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyOwogICAgIGlm
IChSZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2FkZXIgPSBsb2FkZXIoKSkKICAgICAgICAgcmV0
dXJuIHJlc291cmNlTG9hZGVyLT5pZGVudGlmaWVyKCk7CiAgICAgcmV0dXJuIDA7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAxMzk2
MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEyOCw3ICsxMjgsNyBAQAogICAgIGJvb2wgbV9sb2FkaW5nTXVsdGlwYXJ0
Q29udGVudDsKICAgICBib29sIG1fd2FpdGluZ0ZvckNvbnRlbnRQb2xpY3k7CiAgICAgZG91Ymxl
IG1fdGltZU9mTGFzdERhdGFSZWNlaXZlZDsKLSAgICB1bnNpZ25lZCBsb25nIG1fc3Vic3RpdHV0
ZURhdGFMb2FkSWRlbnRpZmllcjsKKyAgICB1bnNpZ25lZCBsb25nIG1faWRlbnRpZmllckZvckxv
YWRXaXRob3V0UmVzb3VyY2VMb2FkZXI7CiAKICNpZiBQTEFURk9STShNQUMpICYmICFQTEFURk9S
TShJT1MpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA4MAogICAgIFdl
YkZpbHRlckV2YWx1YXRvciAqbV9maWx0ZXI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAJKHJldmlzaW9uIDEzOTYyMikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4ODcsNiArMjg4NywxMCBAQAogICAg
IGlmICghcmVzb3VyY2UtPnNob3VsZFNlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3MoKSB8fCBtX2Rv
Y3VtZW50TG9hZGVyLT5oYXZlVG9sZENsaWVudEFib3V0TG9hZChyZXNvdXJjZS0+dXJsKCkpKQog
ICAgICAgICByZXR1cm47CiAKKyAgICAvLyBNYWluIHJlc291cmNlIGRlbGVnYXRlIG1lc3NhZ2Vz
IGFyZSBzeW50aGVzaXplZCBpbiBNYWluUmVzb3VyY2VMb2FkZXIsIHNvIHdlIG11c3Qgbm90IHNl
bmQgdGhlbSBoZXJlLgorICAgIGlmIChyZXNvdXJjZS0+dHlwZSgpID09IENhY2hlZFJlc291cmNl
OjpNYWluUmVzb3VyY2UpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmICghcGFnZS0+YXJlTWVt
b3J5Q2FjaGVDbGllbnRDYWxsc0VuYWJsZWQoKSkgewogICAgICAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShwYWdlLCBtX2RvY3VtZW50
TG9hZGVyLmdldCgpLCByZXNvdXJjZSk7CiAgICAgICAgIG1fZG9jdW1lbnRMb2FkZXItPnJlY29y
ZE1lbW9yeUNhY2hlTG9hZEZvckZ1dHVyZUNsaWVudE5vdGlmaWNhdGlvbihyZXNvdXJjZS0+dXJs
KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAkocmV2aXNpb24gMTM5
NjIyKQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC0zMCw2ICszMCw3IEBACiAKICAgICBET01TdHJpbmcgZWxlbWVudFJlbmRlclRyZWVB
c1RleHQoaW4gRWxlbWVudCBlbGVtZW50KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICBib29s
ZWFuIGlzUHJlbG9hZGVkKGluIERvY3VtZW50IGRvY3VtZW50LCBpbiBET01TdHJpbmcgdXJsKTsK
KyAgICBib29sZWFuIGlzTG9hZGluZ0Zyb21NZW1vcnlDYWNoZShpbiBET01TdHJpbmcgdXJsKTsK
IAogICAgIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZTY29wZWRIVE1MU3R5bGVDaGlsZHJlbihpbiBO
b2RlIHNjb3BlKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcAkocmV2aXNpb24gMTM5NjIyKQorKysgU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw2ICs2NSw3IEBACiAjaW5j
bHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkxhbmd1YWdlLmgiCiAjaW5jbHVkZSAiTWFsbG9j
U3RhdGlzdGljcy5oIgorI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCiAjaW5jbHVkZSAiTW9ja1Bh
Z2VQb3B1cERyaXZlci5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5j
bHVkZSAiUGFnZS5oIgpAQCAtMjkzLDYgKzI5NCwxNCBAQAogICAgIHJldHVybiBkb2N1bWVudC0+
Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+aXNQcmVsb2FkZWQodXJsKTsKIH0KIAorYm9vbCBJbnRl
cm5hbHM6OmlzTG9hZGluZ0Zyb21NZW1vcnlDYWNoZShjb25zdCBTdHJpbmcmIHVybCkKK3sKKyAg
ICBpZiAoIWNvbnRleHREb2N1bWVudCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgQ2Fj
aGVkUmVzb3VyY2UqIHJlc291cmNlID0gbWVtb3J5Q2FjaGUoKS0+cmVzb3VyY2VGb3JVUkwoY29u
dGV4dERvY3VtZW50KCktPmNvbXBsZXRlVVJMKHVybCkpOworICAgIHJldHVybiByZXNvdXJjZSAm
JiByZXNvdXJjZS0+c3RhdHVzKCkgPT0gQ2FjaGVkUmVzb3VyY2U6OkNhY2hlZDsKK30KKwogUGFz
c1JlZlB0cjxFbGVtZW50PiBJbnRlcm5hbHM6OmNyZWF0ZUNvbnRlbnRFbGVtZW50KERvY3VtZW50
KiBkb2N1bWVudCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFkb2N1bWVudCkgewpJ
bmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCShyZXZpc2lvbiAxMzk2MjIpCisrKyBT
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCSh3b3JraW5nIGNvcHkpCkBAIC03Miw2
ICs3Miw3IEBACiAgICAgU3RyaW5nIGFkZHJlc3MoTm9kZSopOwogCiAgICAgYm9vbCBpc1ByZWxv
YWRlZChEb2N1bWVudCosIGNvbnN0IFN0cmluZyYgdXJsKTsKKyAgICBib29sIGlzTG9hZGluZ0Zy
b21NZW1vcnlDYWNoZShjb25zdCBTdHJpbmcmIHVybCk7CiAKICAgICBzaXplX3QgbnVtYmVyT2ZT
Y29wZWRIVE1MU3R5bGVDaGlsZHJlbihjb25zdCBOb2RlKiwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDEzOTYyMikKKysrIFNv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg0NSw2ICs4
NDUsMTEgQEAKICAgICByZXR1cm4gbV9pbXBsZW1lbnRhdGlvbi5nZXQoKTsKIH0KIAorYm9vbCBE
b2N1bWVudDo6aGFzTWFuaWZlc3QoKSBjb25zdAoreworICAgIHJldHVybiBkb2N1bWVudEVsZW1l
bnQoKSAmJiBkb2N1bWVudEVsZW1lbnQoKS0+aGFzVGFnTmFtZShodG1sVGFnKSAmJiBkb2N1bWVu
dEVsZW1lbnQoKS0+aGFzQXR0cmlidXRlKG1hbmlmZXN0QXR0cik7Cit9CisKIHZvaWQgRG9jdW1l
bnQ6OmNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciwgTm9kZSogYmVmb3JlQ2hh
bmdlLCBOb2RlKiBhZnRlckNoYW5nZSwgaW50IGNoaWxkQ291bnREZWx0YSkKIHsKICAgICBDb250
YWluZXJOb2RlOjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlZEJ5UGFyc2VyLCBiZWZvcmVDaGFuZ2Us
IGFmdGVyQ2hhbmdlLCBjaGlsZENvdW50RGVsdGEpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJ
KHJldmlzaW9uIDEzOTYyMikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNDAsNiArMzQwLDggQEAKICAgICB7CiAgICAgICAgIHJldHVybiBtX2Rv
Y3VtZW50RWxlbWVudC5nZXQoKTsKICAgICB9CisKKyAgICBib29sIGhhc01hbmlmZXN0KCkgY29u
c3Q7CiAgICAgCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnQo
Y29uc3QgQXRvbWljU3RyaW5nJiB0YWdOYW1lLCBFeGNlcHRpb25Db2RlJik7CiAgICAgUGFzc1Jl
ZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gMTM5NjIyKQorKysgU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTE0NSw2ICsxNDUsNyBAQAogX19aTjdXZWJD
b3JlMTFNZW1vcnlDYWNoZTEzZ2V0U3RhdGlzdGljc0V2CiBfX1pON1dlYkNvcmUxMU1lbW9yeUNh
Y2hlMTNzZXRDYXBhY2l0aWVzRWpqagogX19aTjdXZWJDb3JlMTFNZW1vcnlDYWNoZTE0ZXZpY3RS
ZXNvdXJjZXNFdgorX19aTjdXZWJDb3JlMTFNZW1vcnlDYWNoZTE0cmVzb3VyY2VGb3JVUkxFUktO
U180S1VSTEUKIF9fWk43V2ViQ29yZTExTWVtb3J5Q2FjaGUxOWdldE9yaWdpbnNXaXRoQ2FjaGVF
Uk4zV1RGN0hhc2hTZXRJTlMxXzZSZWZQdHJJTlNfMTRTZWN1cml0eU9yaWdpbkVFRU5TXzE4U2Vj
dXJpdHlPcmlnaW5IYXNoRU5TMV8xMEhhc2hUcmFpdHNJUzVfRUVFRQogX19aTjdXZWJDb3JlMTFN
ZW1vcnlDYWNoZTI1cmVtb3ZlUmVzb3VyY2VzV2l0aE9yaWdpbkVQTlNfMTRTZWN1cml0eU9yaWdp
bkUKIF9fWk43V2ViQ29yZTExVVJMV2l0aERhdGFFUDZOU0RhdGFQNU5TVVJMCkluZGV4OiBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAxMzk2MzMpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxOCBAQAorMjAxMy0wMS0xNCAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIEVuYWJsZSByZXVzZSBvZiBjYWNoZWQgbWFpbiByZXNvdXJjZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTY2Ny4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAv
dGVzdHMvY2FjaGUvY2FjaGVkLW1haW4tcmVzb3VyY2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL2NhY2hlL2NhY2hlZC1tYWluLXJlc291cmNlLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvY2FjaGUvcmVzb3VyY2VzL2NhY2hlYWJsZS1pZnJhbWUu
cGhwOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZS1oYXIt
cGFnZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvbG9hZGluZy9yZWRpcmVj
dC1tZXRob2RzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL21pc2MvZmF2aWNv
bi1sb2Fkcy13aXRoLWltYWdlcy1kaXNhYmxlZC1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0
cC90ZXN0cy9taXNjL2xpbmstcmVsLWljb24tYmVmb3JlbG9hZC1leHBlY3RlZC50eHQ6CisKIDIw
MTMtMDEtMTQgIExldmkgV2VpbnRyYXViICA8bGV2aXdAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFVucmV2aWV3ZWQgZ2FyZGVuaW5nLiBNYXJraW5nIGZhc3QvZG9tL0hUTUxUZW1wbGF0ZUVsZW1l
bnQvaW5lcnRDb250ZW50cy5odG1sCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9yZXNvdXJjZS1oYXItcGFnZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlLWhhci1wYWdlcy1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDEzOTYyMikKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L3Jlc291cmNlLWhhci1wYWdlcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNiAr
MSw1IEBACiBUZXN0cyBjb252ZXJzaW9uIG9mIEluc3BlY3RvcidzIHJlc291cmNlIHJlcHJlc2Vu
dGF0aW9uIGludG8gSEFSIGZvcm1hdC4KIAotUGFnZSByZWxvYWRlZC4KIHsKICAgICAwIDogewog
ICAgICAgICBpZCA6IDxzdHJpbmc+CkBAIC0yOCw0ICsyNyw1IEBACiBwYWdlOiBwYWdlXzEgdXJs
OiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL3Jlc291cmNlcy9oYXItcGFnZXMtbmF2
aWdhdGlvbi10YXJnZXQuaHRtbAogcGFnZTogcGFnZV8xIHVybDogaHR0cDovLzEyNy4wLjAuMTo4
MDAwL2luc3BlY3Rvci9yZXNvdXJjZXMvc291cmNlMS5qcwogcGFnZTogcGFnZV8xIHVybDogaHR0
cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291cmNlcy9yZWRpcmVjdC5waHA/dXJsPS9pbnNwZWN0b3Iv
cmVzb3VyY2VzL2hhci1wYWdlcy1uYXZpZ2F0aW9uLXRhcmdldC5odG1sCitQYWdlIHJlbG9hZGVk
LgogCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvZmF2aWNvbi1sb2Fkcy13aXRo
LWltYWdlcy1kaXNhYmxlZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9taXNjL2Zhdmljb24tbG9hZHMtd2l0aC1pbWFnZXMtZGlzYWJsZWQtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAxMzk2MjIpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2Mv
ZmF2aWNvbi1sb2Fkcy13aXRoLWltYWdlcy1kaXNhYmxlZC1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNiArMSw3IEBACiA8dW5rbm93bj4gLSBkaWRGaW5pc2hMb2FkaW5nCiBodHRw
Oi8vMTI3LjAuMC4xOjgwMDAvbWlzYy9mYXZpY29uLWxvYWRzLXdpdGgtaW1hZ2VzLWRpc2FibGVk
Lmh0bWwgLSB3aWxsU2VuZFJlcXVlc3QgPE5TVVJMUmVxdWVzdCBVUkwgaHR0cDovLzEyNy4wLjAu
MTo4MDAwL21pc2MvZmF2aWNvbi1sb2Fkcy13aXRoLWltYWdlcy1kaXNhYmxlZC5odG1sLCBtYWlu
IGRvY3VtZW50IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbWlzYy9mYXZpY29uLWxvYWRzLXdp
dGgtaW1hZ2VzLWRpc2FibGVkLmh0bWwsIGh0dHAgbWV0aG9kIEdFVD4gcmVkaXJlY3RSZXNwb25z
ZSAobnVsbCkKIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9taXNjL2Zhdmljb24tbG9hZHMtd2l0aC1p
bWFnZXMtZGlzYWJsZWQuaHRtbCAtIGRpZFJlY2VpdmVSZXNwb25zZSA8TlNVUkxSZXNwb25zZSBo
dHRwOi8vMTI3LjAuMC4xOjgwMDAvbWlzYy9mYXZpY29uLWxvYWRzLXdpdGgtaW1hZ2VzLWRpc2Fi
bGVkLmh0bWwsIGh0dHAgc3RhdHVzIGNvZGUgMjAwPgoraHR0cDovLzEyNy4wLjAuMTo4MDAwL21p
c2MvZmF2aWNvbi1sb2Fkcy13aXRoLWltYWdlcy1kaXNhYmxlZC5odG1sIC0gZGlkRmluaXNoTG9h
ZGluZwogUmFkYXIgNjk3MzEwNiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTI3ODk2IC0gRmF2aWNvbnMgc3RpbGwgbG9hZCB3aGVuIGF1dG9tYXRpYyBpbWFnZSBs
b2FkaW5nIGlzIGRpc2FibGVkLgogVGhpcyB0ZXN0IHVzZXMgRFJUJ3MgcmVzb3VyY2UgbG9hZCBk
ZWxlZ2F0ZSBjYWxsYmFjayBtb2RlIHRvIHNlZSBpZiB0aGUgZmF2aWNvbiBpcyBsb2FkZWQgZXZl
biB3aGVuIGltYWdlIGxvYWRpbmcgaXMgb2ZmLgogCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL21pc2MvbGluay1yZWwtaWNvbi1iZWZvcmVsb2FkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvbGluay1yZWwtaWNvbi1iZWZvcmVsb2Fk
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTM5NjIyKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9taXNjL2xpbmstcmVsLWljb24tYmVmb3JlbG9hZC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw2IEBACiA8dW5rbm93bj4gLSBkaWRGaW5pc2hMb2FkaW5nCiBodHRwOi8v
MTI3LjAuMC4xOjgwMDAvbWlzYy9saW5rLXJlbC1pY29uLWJlZm9yZWxvYWQuaHRtbCAtIHdpbGxT
ZW5kUmVxdWVzdCA8TlNVUkxSZXF1ZXN0IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbWlzYy9s
aW5rLXJlbC1pY29uLWJlZm9yZWxvYWQuaHRtbCwgbWFpbiBkb2N1bWVudCBVUkwgaHR0cDovLzEy
Ny4wLjAuMTo4MDAwL21pc2MvbGluay1yZWwtaWNvbi1iZWZvcmVsb2FkLmh0bWwsIGh0dHAgbWV0
aG9kIEdFVD4gcmVkaXJlY3RSZXNwb25zZSAobnVsbCkKIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9t
aXNjL2xpbmstcmVsLWljb24tYmVmb3JlbG9hZC5odG1sIC0gZGlkUmVjZWl2ZVJlc3BvbnNlIDxO
U1VSTFJlc3BvbnNlIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9taXNjL2xpbmstcmVsLWljb24tYmVm
b3JlbG9hZC5odG1sLCBodHRwIHN0YXR1cyBjb2RlIDIwMD4KK2h0dHA6Ly8xMjcuMC4wLjE6ODAw
MC9taXNjL2xpbmstcmVsLWljb24tYmVmb3JlbG9hZC5odG1sIC0gZGlkRmluaXNoTG9hZGluZwog
aHR0cDovLzEyNy4wLjAuMTo4MDAwL2Zhdmljb24uaWNvIC0gd2lsbFNlbmRSZXF1ZXN0IDxOU1VS
TFJlcXVlc3QgVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9mYXZpY29uLmljbywgbWFpbiBkb2N1
bWVudCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL21pc2MvbGluay1yZWwtaWNvbi1iZWZvcmVs
b2FkLmh0bWwsIGh0dHAgbWV0aG9kIEdFVD4gcmVkaXJlY3RSZXNwb25zZSAobnVsbCkKIFRoaXMg
dGVzdCBzaG91bGQgbm90IHNob3cgYSByZXF1ZXN0IGZvciB0aGUgZmF2aWNvbiBkb250LWxvYWQt
dGhpcy5pY28sIHNpbmNlIHRoZSBiZWZvcmVsb2FkIGhhbmRsZXIgb24gdGhlIGZhdmljb24gbGlu
ayByZXR1cm5zIGZhbHNlLiBUaGVyZWZvcmUsIGlmIHRoZSByZXNvdXJjZSByZXF1ZXN0IGxpc3Qg
YmVsb3cgc2hvd3MgYSByZXF1ZXN0IGZvciBkb250LWxvYWQtdGhpcy5pY28sIHRoZW4gdGhpcyB0
ZXN0IGhhcyBmYWlsZWQuCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL2NhY2hl
ZC1tYWluLXJlc291cmNlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2NhY2hlL2NhY2hlZC1tYWluLXJlc291cmNlLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvY2FjaGVkLW1haW4tcmVzb3Vy
Y2UtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMiBAQAorUEFTUworIApJ
bmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9jYWNoZWQtbWFpbi1yZXNvdXJjZS5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvY2FjaGVkLW1h
aW4tcmVzb3VyY2UuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
Y2FjaGUvY2FjaGVkLW1haW4tcmVzb3VyY2UuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDI0IEBACis8aHRtbD4KKzxib2R5IG9ubG9hZD0ic2V0VGltZW91dChyZW1vdmVBbmRSZWxvYWQs
IDApOyI+Cis8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2PgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVz
dFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIu
d2FpdFVudGlsRG9uZSgpOworfQorCitmdW5jdGlvbiByZW1vdmVBbmRSZWxvYWQoKQoreworICAg
IGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlmcmFt
ZSIpKTsKKyAgICB2YXIgbmV3SWZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1l
Iik7CisgICAgbmV3SWZyYW1lLnNyYyA9ICJyZXNvdXJjZXMvY2FjaGVhYmxlLWlmcmFtZS5waHAi
OworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobmV3SWZyYW1lKTsKKyAgICB2YXIgZnJv
bUNhY2hlID0gaW50ZXJuYWxzLmlzTG9hZGluZ0Zyb21NZW1vcnlDYWNoZShuZXdJZnJhbWUuc3Jj
KTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlVGV4dE5vZGUoZnJvbUNhY2hlID8gIlBBU1MiIDogIkZBSUwiKSk7CisgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
K30KKzwvc2NyaXB0PgorPGlmcmFtZSBpZD0iaWZyYW1lIiBzcmM9InJlc291cmNlcy9jYWNoZWFi
bGUtaWZyYW1lLnBocCI+PC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3Jlc291cmNlcy9jYWNoZWFibGUtaWZyYW1lLnBocAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3Jlc291cmNlcy9jYWNoZWFi
bGUtaWZyYW1lLnBocAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvY2Fj
aGUvcmVzb3VyY2VzL2NhY2hlYWJsZS1pZnJhbWUucGhwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTEgQEAKKzw/cGhwCityZXF1aXJlX29uY2UgJy4uLy4uL3Jlc291cmNlcy9wb3J0YWJpbGl0
eUxheWVyLnBocCc7CisKKyRtYXhfYWdlID0gMTIgKiAzMSAqIDI0ICogNjAgKiA2MDsgLy9vbmUg
eWVhcgorJGV4cGlyZXMgPSBnbWRhdGUoREFURV9SRkMxMTIzLCB0aW1lKCkgKyAkbWF4X2FnZSk7
CisKK2hlYWRlcignQ2FjaGUtQ29udHJvbDogcHVibGljLCBtYXgtYWdlPScgLiAkbWF4X2FnZSk7
CitoZWFkZXIoJ0V4cGlyZXM6ICcgLiAkZXhwaXJlcyk7CitoZWFkZXIoJ0NvbnRlbnQtVHlwZTog
dGV4dC9odG1sJyk7CitleGl0KCk7Cis/PgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9s
b2FkaW5nL3JlZGlyZWN0LW1ldGhvZHMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9yZWRpcmVjdC1tZXRob2RzLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMTM5NjIyKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL3JlZGly
ZWN0LW1ldGhvZHMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00MiwxMSArNDIsMTEg
QEAKIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRo
b2RzLWZvcm0uaHRtbCAtIGRpZFJlY2VpdmVSZXNwb25zZSA8TlNVUkxSZXNwb25zZSBodHRwOi8v
MTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1mb3JtLmh0
bWwsIGh0dHAgc3RhdHVzIGNvZGUgMjAwPgogZnJhbWUgIjEiIC0gZGlkQ2FuY2VsQ2xpZW50UmVk
aXJlY3RGb3JGcmFtZQogZnJhbWUgIjEiIC0gZGlkQ29tbWl0TG9hZEZvckZyYW1lCitodHRwOi8v
MTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1mb3JtLmh0
bWwgLSBkaWRGaW5pc2hMb2FkaW5nCiBmcmFtZSAiMSIgLSBkaWRGaW5pc2hEb2N1bWVudExvYWRG
b3JGcmFtZQogZnJhbWUgIjEiIC0gd2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdFRvVVJMOiBodHRw
Oi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1yZXN1
bHQucGhwIAogZnJhbWUgIjEiIC0gZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUKIGZyYW1l
ICIxIiAtIGRpZEZpbmlzaExvYWRGb3JGcmFtZQotaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRp
bmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtZm9ybS5odG1sIC0gZGlkRmluaXNoTG9hZGlu
ZwogZnJhbWUgIjEiIC0gZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZQogaHR0cDovLzEy
Ny4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtcmVzdWx0LnBo
cCAtIHdpbGxTZW5kUmVxdWVzdCA8TlNVUkxSZXF1ZXN0IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgw
MDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1yZXN1bHQucGhwLCBtYWluIGRv
Y3VtZW50IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZWRpcmVjdC1tZXRob2Rz
Lmh0bWwsIGh0dHAgbWV0aG9kIFBPU1Q+IHJlZGlyZWN0UmVzcG9uc2UgKG51bGwpCiBodHRwOi8v
MTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1yZXN1bHQu
cGhwIC0gd2lsbFNlbmRSZXF1ZXN0IDxOU1VSTFJlcXVlc3QgVVJMIGh0dHA6Ly8xMjcuMC4wLjE6
ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLXJlc3VsdC5waHA/cmVkaXJl
Y3RlZD10cnVlLCBtYWluIGRvY3VtZW50IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGlu
Zy9yZWRpcmVjdC1tZXRob2RzLmh0bWwsIGh0dHAgbWV0aG9kIEdFVD4gcmVkaXJlY3RSZXNwb25z
ZSA8TlNVUkxSZXNwb25zZSBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMv
cmVkaXJlY3QtbWV0aG9kcy1yZXN1bHQucGhwLCBodHRwIHN0YXR1cyBjb2RlIDMwMj4KQEAgLTY5
LDExICs2OSwxMSBAQAogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3Jl
ZGlyZWN0LW1ldGhvZHMtZm9ybS5odG1sIC0gZGlkUmVjZWl2ZVJlc3BvbnNlIDxOU1VSTFJlc3Bv
bnNlIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRo
b2RzLWZvcm0uaHRtbCwgaHR0cCBzdGF0dXMgY29kZSAyMDA+CiBmcmFtZSAiMiIgLSBkaWRDYW5j
ZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lCiBmcmFtZSAiMiIgLSBkaWRDb21taXRMb2FkRm9yRnJh
bWUKK2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRo
b2RzLWZvcm0uaHRtbCAtIGRpZEZpbmlzaExvYWRpbmcKIGZyYW1lICIyIiAtIGRpZEZpbmlzaERv
Y3VtZW50TG9hZEZvckZyYW1lCiBmcmFtZSAiMiIgLSB3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0
VG9VUkw6IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1t
ZXRob2RzLXJlc3VsdC5waHAgCiBmcmFtZSAiMiIgLSBkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JG
cmFtZQogZnJhbWUgIjIiIC0gZGlkRmluaXNoTG9hZEZvckZyYW1lCi1odHRwOi8vMTI3LjAuMC4x
OjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1mb3JtLmh0bWwgLSBkaWRG
aW5pc2hMb2FkaW5nCiBmcmFtZSAiMiIgLSBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1l
CiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9k
cy1yZXN1bHQucGhwIC0gd2lsbFNlbmRSZXF1ZXN0IDxOU1VSTFJlcXVlc3QgVVJMIGh0dHA6Ly8x
MjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLXJlc3VsdC5w
aHAsIG1haW4gZG9jdW1lbnQgVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3JlZGly
ZWN0LW1ldGhvZHMuaHRtbCwgaHR0cCBtZXRob2QgUE9TVD4gcmVkaXJlY3RSZXNwb25zZSAobnVs
bCkKIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRo
b2RzLXJlc3VsdC5waHAgLSB3aWxsU2VuZFJlcXVlc3QgPE5TVVJMUmVxdWVzdCBVUkwgaHR0cDov
LzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtcmVzdWx0
LnBocD9yZWRpcmVjdGVkPXRydWUsIG1haW4gZG9jdW1lbnQgVVJMIGh0dHA6Ly8xMjcuMC4wLjE6
ODAwMC9sb2FkaW5nL3JlZGlyZWN0LW1ldGhvZHMuaHRtbCwgaHR0cCBtZXRob2QgR0VUPiByZWRp
cmVjdFJlc3BvbnNlIDxOU1VSTFJlc3BvbnNlIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5n
L3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLXJlc3VsdC5waHAsIGh0dHAgc3RhdHVzIGNvZGUg
MzAzPgpAQCAtOTYsMTEgKzk2LDExIEBACiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9y
ZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1mb3JtLmh0bWwgLSBkaWRSZWNlaXZlUmVzcG9uc2Ug
PE5TVVJMUmVzcG9uc2UgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3Jl
ZGlyZWN0LW1ldGhvZHMtZm9ybS5odG1sLCBodHRwIHN0YXR1cyBjb2RlIDIwMD4KIGZyYW1lICIz
IiAtIGRpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWUKIGZyYW1lICIzIiAtIGRpZENvbW1p
dExvYWRGb3JGcmFtZQoraHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3Jl
ZGlyZWN0LW1ldGhvZHMtZm9ybS5odG1sIC0gZGlkRmluaXNoTG9hZGluZwogZnJhbWUgIjMiIC0g
ZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUKIGZyYW1lICIzIiAtIHdpbGxQZXJmb3JtQ2xp
ZW50UmVkaXJlY3RUb1VSTDogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2Vz
L3JlZGlyZWN0LW1ldGhvZHMtcmVzdWx0LnBocCAKIGZyYW1lICIzIiAtIGRpZEhhbmRsZU9ubG9h
ZEV2ZW50c0ZvckZyYW1lCiBmcmFtZSAiMyIgLSBkaWRGaW5pc2hMb2FkRm9yRnJhbWUKLWh0dHA6
Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLWZvcm0u
aHRtbCAtIGRpZEZpbmlzaExvYWRpbmcKIGZyYW1lICIzIiAtIGRpZFN0YXJ0UHJvdmlzaW9uYWxM
b2FkRm9yRnJhbWUKIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRp
cmVjdC1tZXRob2RzLXJlc3VsdC5waHAgLSB3aWxsU2VuZFJlcXVlc3QgPE5TVVJMUmVxdWVzdCBV
UkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhv
ZHMtcmVzdWx0LnBocCwgbWFpbiBkb2N1bWVudCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xv
YWRpbmcvcmVkaXJlY3QtbWV0aG9kcy5odG1sLCBodHRwIG1ldGhvZCBQT1NUPiByZWRpcmVjdFJl
c3BvbnNlIChudWxsKQogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3Jl
ZGlyZWN0LW1ldGhvZHMtcmVzdWx0LnBocCAtIHdpbGxTZW5kUmVxdWVzdCA8TlNVUkxSZXF1ZXN0
IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0
aG9kcy1yZXN1bHQucGhwP3JlZGlyZWN0ZWQ9dHJ1ZSwgbWFpbiBkb2N1bWVudCBVUkwgaHR0cDov
LzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVkaXJlY3QtbWV0aG9kcy5odG1sLCBodHRwIG1ldGhv
ZCBQT1NUPiByZWRpcmVjdFJlc3BvbnNlIDxOU1VSTFJlc3BvbnNlIGh0dHA6Ly8xMjcuMC4wLjE6
ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLXJlc3VsdC5waHAsIGh0dHAg
c3RhdHVzIGNvZGUgMzA3Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182625</attachid>
            <date>2013-01-14 14:03:55 -0800</date>
            <delta_ts>2013-01-25 11:33:59 -0800</delta_ts>
            <desc>Fix symbols.filter again</desc>
            <filename>cmr_0114.txt</filename>
            <type>text/plain</type>
            <size>36789</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDEzOTYz
MykKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDEzLTAx
LTE0ICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgRW5hYmxl
IHJldXNlIG9mIGNhY2hlZCBtYWluIHJlc291cmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1NjY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVy
OiBFeHBvc2UgTWVtb3J5Q2FjaGU6OnJlc291cmNlRm9yVVJMKCkuCisKIDIwMTMtMDEtMTEgIENh
cmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQuIFVwZGF0ZSBORVdTIGFuZCBjb25maWd1cmUuYWMgZm9yIDEuMTEuNCByZWxlYXNlCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzk2MzMpCisrKyBTb3VyY2UvV2ViS2l0L3dp
bi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMiBAQAorMjAxMy0wMS0xNCAg
TmF0ZSBDaGFwaW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEVuYWJsZSByZXVz
ZSBvZiBjYWNoZWQgbWFpbiByZXNvdXJjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwNTY2NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViS2l0LnZjcHJvai9XZWJLaXRFeHBvcnRzLmRlZi5pbjog
RXhwb3NlIHNvbWUgTWVtb3J5Q2FjaGUgc3ltYm9scyBmb3IgdXNlIGluIEludGVybmFscy4KKwog
MjAxMy0wMS0wOSAgSGFqaW1lIE1vcnJpdGEgIDxtb3JyaXRhQGdvb2dsZS5jb20+CiAKICAgICAg
ICAgW1NoYWRvdyBET01dIERpc3RyaWJ1dGlvbiByZWxhdGVkIGNvZGUgb24gRWxlbWVudFNoYWRv
dyBzaG91bGQgYmUgbWluaW1pemVkLgpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViS2l0LnZj
cHJvai9XZWJLaXRFeHBvcnRzLmRlZi5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dp
bi9XZWJLaXQudmNwcm9qL1dlYktpdEV4cG9ydHMuZGVmLmluCShyZXZpc2lvbiAxMzk2MjIpCisr
KyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdEV4cG9ydHMuZGVmLmluCSh3
b3JraW5nIGNvcHkpCkBAIC01NjAsNiArNTYwLDcgQEAKICAgICAgICAgP2FkZFNsb3dDYXNlQEF0
b21pY1N0cmluZ0BXVEZAQENBP0FWPyRQYXNzUmVmUHRyQFZTdHJpbmdJbXBsQFdURkBAQDJAUEFW
U3RyaW5nSW1wbEAyQEBaCiAgICAgICAgID9jYWNoZURPTVN0cnVjdHVyZUBXZWJDb3JlQEBZQVBB
VlN0cnVjdHVyZUBKU0NAQFBBVkpTRE9NR2xvYmFsT2JqZWN0QDFAUEFWMjNAUEJVQ2xhc3NJbmZv
QDNAQFoKICAgICAgICAgP2NoaWxkSXRlbVdpdGhUYXJnZXRASGlzdG9yeUl0ZW1AV2ViQ29yZUBA
UUJFUEFWMTJAQUJWU3RyaW5nQFdURkBAQFoKKyAgICAgICAgP2NvbXBsZXRlVVJMQERvY3VtZW50
QFdlYkNvcmVAQFFCRT9BVktVUkxAMkBBQlZTdHJpbmdAV1RGQEBAWgogICAgICAgICA/Y3JlYXRl
QFJhbmdlQFdlYkNvcmVAQFNBP0FWPyRQYXNzUmVmUHRyQFZSYW5nZUBXZWJDb3JlQEBAV1RGQEBW
PyRQYXNzUmVmUHRyQFZEb2N1bWVudEBXZWJDb3JlQEBANEBWPyRQYXNzUmVmUHRyQFZOb2RlQFdl
YkNvcmVAQEA0QEgxSEBaCiAgICAgICAgID9jcmVhdGVAU2VyaWFsaXplZFNjcmlwdFZhbHVlQFdl
YkNvcmVAQFNBP0FWPyRQYXNzUmVmUHRyQFZTZXJpYWxpemVkU2NyaXB0VmFsdWVAV2ViQ29yZUBA
QFdURkBAQUJWU3RyaW5nQDRAQFoKICAgICAgICAgP2NyZWF0ZUBTZXJpYWxpemVkU2NyaXB0VmFs
dWVAV2ViQ29yZUBAU0E/QVY/JFBhc3NSZWZQdHJAVlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUBXZWJD
b3JlQEBAV1RGQEBQQVZFeGVjU3RhdGVASlNDQEBWSlNWYWx1ZUA2QFBBVj8kVmVjdG9yQFY/JFJl
ZlB0ckBWTWVzc2FnZVBvcnRAV2ViQ29yZUBAQFdURkBAJDAwQDRAUEFWPyRWZWN0b3JAVj8kUmVm
UHRyQFZBcnJheUJ1ZmZlckBXVEZAQEBXVEZAQCQwMEA0QFc0U2VyaWFsaXphdGlvbkVycm9yTW9k
ZUAyQEBaCkBAIC0xMzkwLDYgKzEzOTEsNyBAQAogICAgICAgICA/bGFzdENoYW5nZVdhc1VzZXJF
ZGl0QEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50QFdlYkNvcmVAQFFCRV9OWFoKICAgICAgICAg
P21haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0QFBhZ2VAV2ViQ29yZUBAUUFFP0FWU3Ry
aW5nQFdURkBAWFoKICAgICAgICAgP21hcmtlcnNGb3JARG9jdW1lbnRNYXJrZXJDb250cm9sbGVy
QFdlYkNvcmVAQFFBRT9BVj8kVmVjdG9yQFBBVkRvY3VtZW50TWFya2VyQFdlYkNvcmVAQCQwQUBA
V1RGQEBQQVZOb2RlQDJAVk1hcmtlclR5cGVzQERvY3VtZW50TWFya2VyQDJAQFoKKyAgICAgICAg
P21lbW9yeUNhY2hlQFdlYkNvcmVAQFlBUEFWTWVtb3J5Q2FjaGVAMUBYWgogICAgICAgICA/bmV4
dFNpYmxpbmdAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhYWgogICAgICAg
ICA/Zmlyc3RDaGlsZEBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXJAV2ViQ29yZUBAUUFFWFhaCiAg
ICAgICAgID9sYXN0Q2hpbGRAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhY
WgpAQCAtMTQwOSw2ICsxNDExLDcgQEAKICAgICAgICAgP3JhbmdlRnJvbUxvY2F0aW9uQW5kTGVu
Z3RoQFRleHRJdGVyYXRvckBXZWJDb3JlQEBTQT9BVj8kUGFzc1JlZlB0ckBWUmFuZ2VAV2ViQ29y
ZUBAQFdURkBAUEFWQ29udGFpbmVyTm9kZUAyQEhIX05AWgogICAgICAgICA/cmVtb3ZlQFN0cmlu
Z0BXVEZAQFFBRVhJSEBaCiAgICAgICAgID9yZW1vdmVkTGFzdFJlZkBOb2RlQFdlYkNvcmVAQEFB
RVhYWgorICAgICAgICA/cmVzb3VyY2VGb3JVUkxATWVtb3J5Q2FjaGVAV2ViQ29yZUBAUUFFUEFW
Q2FjaGVkUmVzb3VyY2VAMkBBQlZLVVJMQDJAQFoKICAgICAgICAgP3JldmVyc2VGaW5kQFN0cmlu
Z0ltcGxAV1RGQEBRQUVJX1dJQFoKICAgICAgICAgP3NhdmVEb2N1bWVudEFuZFNjcm9sbFN0YXRl
QEhpc3RvcnlDb250cm9sbGVyQFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/c2NyaXB0RXhlY3V0
aW9uQ29udGV4dEBKU0RPTUdsb2JhbE9iamVjdEBXZWJDb3JlQEBRQkVQQVZTY3JpcHRFeGVjdXRp
b25Db250ZXh0QDJAWFoKSW5kZXg6IFNvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgkocmV2aXNpb24gMTM5
NjIyKQorKysgU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgkod29ya2luZyBjb3B5KQpA
QCAtNTAsMTAgKzUwLDEyIEBACiBfWk43V2ViQ29yZTEwQ2xpZW50UmVjdEMxRXY7CiBfWk43V2Vi
Q29yZTEwQ2xpZW50UmVjdEMxRVJLTlNfN0ludFJlY3RFOwogX1pON1dlYkNvcmUxMFNoYWRvd1Jv
b3Q2Y3JlYXRlRVBOU183RWxlbWVudEVSaTsKK19aTjdXZWJDb3JlMTFtZW1vcnlDYWNoZUV2Owog
X1pON1dlYkNvcmUxMUV2ZW50VGFyZ2V0MTd0b0dlbmVyYXRlZFN0cmVhbUV2OwogX1pON1dlYkNv
cmUxMUV2ZW50VGFyZ2V0OHRvU3RyZWFtRXY7CiBfWk43V2ViQ29yZTExSGlzdG9yeUl0ZW0xNnNl
dERvY3VtZW50U3RhdGVFUktOM1dURjZWZWN0b3JJTlMxXzZTdHJpbmdFTGowRUVFOwogX1pON1dl
YkNvcmUxMUhpc3RvcnlJdGVtMTZzZXREb2N1bWVudFN0YXRlRVJLTjNXVEY2VmVjdG9ySU5TMV82
U3RyaW5nRUxtMEVFRTsKK19aTjdXZWJDb3JlMTFNZW1vcnlDYWNoZTE0cmVzb3VyY2VGb3JVUkxF
UktOU180S1VSTEU7CiBfWk43V2ViQ29yZTEyVGV4dEl0ZXJhdG9yMjZyYW5nZUZyb21Mb2NhdGlv
bkFuZExlbmd0aEVQTlNfMTNDb250YWluZXJOb2RlRWlpYjsKIF9aTjdXZWJDb3JlMTJUZXh0SXRl
cmF0b3IyOWdldExvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlRVBOU183RWxlbWVudEVQS05TXzVS
YW5nZUVSalM2XzsKIF9aTjdXZWJDb3JlMTJUZXh0SXRlcmF0b3IyOWdldExvY2F0aW9uQW5kTGVu
Z3RoRnJvbVJhbmdlRVBOU183RWxlbWVudEVQS05TXzVSYW5nZUVSbVM2XzsKQEAgLTE0Niw2ICsx
NDgsNyBAQAogX1pOSzdXZWJDb3JlNUZyYW1lOHNldHRpbmdzRXY7CiBfWk5LN1dlYkNvcmU2SlNO
b2RlMjFwdXNoRXZlbnRIYW5kbGVyU2NvcGVFUE4zSlNDOUV4ZWNTdGF0ZUVQTlMxXzE0U2NvcGVD
aGFpbk5vZGVFOwogX1pOSzdXZWJDb3JlN0VsZW1lbnQ2c2hhZG93RXY7CitfWk5LN1dlYkNvcmU4
RG9jdW1lbnQxMWNvbXBsZXRlVVJMRVJLTjNXVEY2U3RyaW5nRTsKIF9aTks3V2ViQ29yZThEb2N1
bWVudDRwYWdlRXY7CiBfWk5LN1dlYkNvcmU4RG9jdW1lbnQ4c2V0dGluZ3NFdjsKIF9aTks3V2Vi
Q29yZThEb2N1bWVudDR2aWV3RXY7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNpb24g
MTM5NjIyKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTM0MCw2ICszNDAsOCBAQAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fZG9jdW1lbnRFbGVt
ZW50LmdldCgpOwogICAgIH0KKworICAgIGJvb2wgaGFzTWFuaWZlc3QoKSBjb25zdDsKICAgICAK
ICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RWxlbWVudD4gY3JlYXRlRWxlbWVudChjb25zdCBBdG9t
aWNTdHJpbmcmIHRhZ05hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBQYXNzUmVmUHRyPERvY3Vt
ZW50RnJhZ21lbnQ+IGNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAkocmV2aXNpb24gMTM5NjIyKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODQ1LDYgKzg0NSwxMSBAQAogICAgIHJldHVybiBt
X2ltcGxlbWVudGF0aW9uLmdldCgpOwogfQogCitib29sIERvY3VtZW50OjpoYXNNYW5pZmVzdCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIGRvY3VtZW50RWxlbWVudCgpICYmIGRvY3VtZW50RWxlbWVu
dCgpLT5oYXNUYWdOYW1lKGh0bWxUYWcpICYmIGRvY3VtZW50RWxlbWVudCgpLT5oYXNBdHRyaWJ1
dGUobWFuaWZlc3RBdHRyKTsKK30KKwogdm9pZCBEb2N1bWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJv
b2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFmdGVyQ2hhbmdl
LCBpbnQgY2hpbGRDb3VudERlbHRhKQogewogICAgIENvbnRhaW5lck5vZGU6OmNoaWxkcmVuQ2hh
bmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291
bnREZWx0YSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gMTM5NjIyKQorKysg
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTE0NSw2ICsx
NDUsNyBAQAogX19aTjdXZWJDb3JlMTFNZW1vcnlDYWNoZTEzZ2V0U3RhdGlzdGljc0V2CiBfX1pO
N1dlYkNvcmUxMU1lbW9yeUNhY2hlMTNzZXRDYXBhY2l0aWVzRWpqagogX19aTjdXZWJDb3JlMTFN
ZW1vcnlDYWNoZTE0ZXZpY3RSZXNvdXJjZXNFdgorX19aTjdXZWJDb3JlMTFNZW1vcnlDYWNoZTE0
cmVzb3VyY2VGb3JVUkxFUktOU180S1VSTEUKIF9fWk43V2ViQ29yZTExTWVtb3J5Q2FjaGUxOWdl
dE9yaWdpbnNXaXRoQ2FjaGVFUk4zV1RGN0hhc2hTZXRJTlMxXzZSZWZQdHJJTlNfMTRTZWN1cml0
eU9yaWdpbkVFRU5TXzE4U2VjdXJpdHlPcmlnaW5IYXNoRU5TMV8xMEhhc2hUcmFpdHNJUzVfRUVF
RQogX19aTjdXZWJDb3JlMTFNZW1vcnlDYWNoZTI1cmVtb3ZlUmVzb3VyY2VzV2l0aE9yaWdpbkVQ
TlNfMTRTZWN1cml0eU9yaWdpbkUKIF9fWk43V2ViQ29yZTExVVJMV2l0aERhdGFFUDZOU0RhdGFQ
NU5TVVJMCkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCShyZXZpc2lvbiAx
Mzk2MjIpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDYgKzMwLDcgQEAKIAogICAgIERPTVN0cmluZyBlbGVtZW50UmVuZGVyVHJl
ZUFzVGV4dChpbiBFbGVtZW50IGVsZW1lbnQpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgIGJv
b2xlYW4gaXNQcmVsb2FkZWQoaW4gRG9jdW1lbnQgZG9jdW1lbnQsIGluIERPTVN0cmluZyB1cmwp
OworICAgIGJvb2xlYW4gaXNMb2FkaW5nRnJvbU1lbW9yeUNhY2hlKGluIERPTVN0cmluZyB1cmwp
OwogCiAgICAgdW5zaWduZWQgbG9uZyBudW1iZXJPZlNjb3BlZEhUTUxTdHlsZUNoaWxkcmVuKGlu
IE5vZGUgc2NvcGUpIHJhaXNlcyhET01FeGNlcHRpb24pOwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwCShyZXZpc2lvbiAxMzk2MjIpCisrKyBTb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDYgKzY1LDcgQEAKICNp
bmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiTGFuZ3VhZ2UuaCIKICNpbmNsdWRlICJNYWxs
b2NTdGF0aXN0aWNzLmgiCisjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKICNpbmNsdWRlICJNb2Nr
UGFnZVBvcHVwRHJpdmVyLmgiCiAjaW5jbHVkZSAiTm9kZVJlbmRlcmluZ0NvbnRleHQuaCIKICNp
bmNsdWRlICJQYWdlLmgiCkBAIC0yOTMsNiArMjk0LDE0IEBACiAgICAgcmV0dXJuIGRvY3VtZW50
LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5pc1ByZWxvYWRlZCh1cmwpOwogfQogCitib29sIElu
dGVybmFsczo6aXNMb2FkaW5nRnJvbU1lbW9yeUNhY2hlKGNvbnN0IFN0cmluZyYgdXJsKQorewor
ICAgIGlmICghY29udGV4dERvY3VtZW50KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBD
YWNoZWRSZXNvdXJjZSogcmVzb3VyY2UgPSBtZW1vcnlDYWNoZSgpLT5yZXNvdXJjZUZvclVSTChj
b250ZXh0RG9jdW1lbnQoKS0+Y29tcGxldGVVUkwodXJsKSk7CisgICAgcmV0dXJuIHJlc291cmNl
ICYmIHJlc291cmNlLT5zdGF0dXMoKSA9PSBDYWNoZWRSZXNvdXJjZTo6Q2FjaGVkOworfQorCiBQ
YXNzUmVmUHRyPEVsZW1lbnQ+IEludGVybmFsczo6Y3JlYXRlQ29udGVudEVsZW1lbnQoRG9jdW1l
bnQqIGRvY3VtZW50LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAoIWRvY3VtZW50KSB7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgJKHJldmlzaW9uIDEzOTYyMikKKysr
IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgJKHdvcmtpbmcgY29weSkKQEAgLTcy
LDYgKzcyLDcgQEAKICAgICBTdHJpbmcgYWRkcmVzcyhOb2RlKik7CiAKICAgICBib29sIGlzUHJl
bG9hZGVkKERvY3VtZW50KiwgY29uc3QgU3RyaW5nJiB1cmwpOworICAgIGJvb2wgaXNMb2FkaW5n
RnJvbU1lbW9yeUNhY2hlKGNvbnN0IFN0cmluZyYgdXJsKTsKIAogICAgIHNpemVfdCBudW1iZXJP
ZlNjb3BlZEhUTUxTdHlsZUNoaWxkcmVuKGNvbnN0IE5vZGUqLCBFeGNlcHRpb25Db2RlJikgY29u
c3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24g
MTM5NjIyKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjg4Nyw2ICsyODg3LDEwIEBACiAgICAgaWYgKCFyZXNvdXJjZS0+c2hvdWxk
U2VuZFJlc291cmNlTG9hZENhbGxiYWNrcygpIHx8IG1fZG9jdW1lbnRMb2FkZXItPmhhdmVUb2xk
Q2xpZW50QWJvdXRMb2FkKHJlc291cmNlLT51cmwoKSkpCiAgICAgICAgIHJldHVybjsKIAorICAg
IC8vIE1haW4gcmVzb3VyY2UgZGVsZWdhdGUgbWVzc2FnZXMgYXJlIHN5bnRoZXNpemVkIGluIE1h
aW5SZXNvdXJjZUxvYWRlciwgc28gd2UgbXVzdCBub3Qgc2VuZCB0aGVtIGhlcmUuCisgICAgaWYg
KHJlc291cmNlLT50eXBlKCkgPT0gQ2FjaGVkUmVzb3VyY2U6Ok1haW5SZXNvdXJjZSkKKyAgICAg
ICAgcmV0dXJuOworCiAgICAgaWYgKCFwYWdlLT5hcmVNZW1vcnlDYWNoZUNsaWVudENhbGxzRW5h
YmxlZCgpKSB7CiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTG9hZFJlc291
cmNlRnJvbU1lbW9yeUNhY2hlKHBhZ2UsIG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIHJlc291cmNl
KTsKICAgICAgICAgbV9kb2N1bWVudExvYWRlci0+cmVjb3JkTWVtb3J5Q2FjaGVMb2FkRm9yRnV0
dXJlQ2xpZW50Tm90aWZpY2F0aW9uKHJlc291cmNlLT51cmwoKSk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMTM5NjIyKQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJIVE1MRm9ybUVsZW1lbnQuaCIKICNp
bmNsdWRlICJIaXN0b3J5SXRlbS5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5oIgorI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1
ZGUgIlByb2dyZXNzVHJhY2tlci5oIgogI2luY2x1ZGUgIlJlc291cmNlQnVmZmVyLmgiCkBAIC03
Myw3ICs3NCw3IEBACiAgICAgLCBtX2xvYWRpbmdNdWx0aXBhcnRDb250ZW50KGZhbHNlKQogICAg
ICwgbV93YWl0aW5nRm9yQ29udGVudFBvbGljeShmYWxzZSkKICAgICAsIG1fdGltZU9mTGFzdERh
dGFSZWNlaXZlZCgwLjApCi0gICAgLCBtX3N1YnN0aXR1dGVEYXRhTG9hZElkZW50aWZpZXIoMCkK
KyAgICAsIG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIoMCkKICNpZiBQ
TEFURk9STShNQUMpICYmICFQTEFURk9STShJT1MpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTA4MAogICAgICwgbV9maWx0ZXIoMCkKICNlbmRpZgpAQCAtOTksOSArMTAw
LDkgQEAKICAgICBSZWZQdHI8TWFpblJlc291cmNlTG9hZGVyPiBwcm90ZWN0KHRoaXMpOwogICAg
IFJlZlB0cjxGcmFtZT4gcHJvdGVjdEZyYW1lKG1fZG9jdW1lbnRMb2FkZXItPmZyYW1lKCkpOwog
Ci0gICAgaWYgKG1fc3Vic3RpdHV0ZURhdGFMb2FkSWRlbnRpZmllcikgeworICAgIGlmIChtX2lk
ZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyKSB7CiAgICAgICAgIEFTU0VSVCgh
bG9hZGVyKCkpOwotICAgICAgICBmcmFtZUxvYWRlcigpLT5jbGllbnQoKS0+ZGlzcGF0Y2hEaWRG
YWlsTG9hZGluZyhkb2N1bWVudExvYWRlcigpLCBtX3N1YnN0aXR1dGVEYXRhTG9hZElkZW50aWZp
ZXIsIGVycm9yKTsKKyAgICAgICAgZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCktPmRpc3BhdGNoRGlk
RmFpbExvYWRpbmcoZG9jdW1lbnRMb2FkZXIoKSwgbV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRS
ZXNvdXJjZUxvYWRlciwgZXJyb3IpOwogICAgIH0KIAogICAgIC8vIEl0IGlzIGltcG9ydGFudCB0
aGF0IHdlIGNhbGwgRG9jdW1lbnRMb2FkZXI6Om1haW5SZWNlaXZlZEVycm9yIGJlZm9yZSBjYWxs
aW5nIApAQCAtMjg2LDcgKzI4Nyw3IEBACiAgICAgICAgIEFTU0VSVCghbV9zdWJzdGl0dXRlRGF0
YS5pc1ZhbGlkKCkpOwogICAgICAgICBkb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hl
SG9zdCgpLT5tYXliZUxvYWRNYWluUmVzb3VyY2VGb3JSZWRpcmVjdChuZXdSZXF1ZXN0LCBtX3N1
YnN0aXR1dGVEYXRhKTsKICAgICAgICAgaWYgKG1fc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKQot
ICAgICAgICAgICAgbV9zdWJzdGl0dXRlRGF0YUxvYWRJZGVudGlmaWVyID0gaWRlbnRpZmllcigp
OworICAgICAgICAgICAgbV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlciA9
IGlkZW50aWZpZXIoKTsKICAgICB9CiAKICAgICAvLyBGSVhNRTogSWRlYWxseSB3ZSdkIHN0b3Ag
dGhlIEkvTyB1bnRpbCB3ZSBoZWFyIGJhY2sgZnJvbSB0aGUgbmF2aWdhdGlvbiBwb2xpY3kgZGVs
ZWdhdGUKQEAgLTM5Miw3ICszOTMsMjEgQEAKIHZvaWQgTWFpblJlc291cmNlTG9hZGVyOjpyZXNw
b25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcikKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCBtX3Jlc291cmNlID09IHJl
c291cmNlKTsKLSAgICBpZiAoZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3Qo
KS0+bWF5YmVMb2FkRmFsbGJhY2tGb3JNYWluUmVzcG9uc2UocmVxdWVzdCgpLCByKSkKKyAgICBi
b29sIHdpbGxMb2FkRmFsbGJhY2sgPSBkb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hl
SG9zdCgpLT5tYXliZUxvYWRGYWxsYmFja0Zvck1haW5SZXNwb25zZShyZXF1ZXN0KCksIHIpOwor
CisgICAgLy8gVGhlIG1lbW9yeSBjYWNoZSBkb2Vzbid0IHVuZGVyc3RhbmQgdGhlIGFwcGxpY2F0
aW9uIGNhY2hlIG9yIGl0cyBjYWNoaW5nIHJ1bGVzLiBTbyBpZiBhIG1haW4gcmVzb3VyY2UgaXMg
c2VydmVkCisgICAgLy8gZnJvbSB0aGUgYXBwbGljYXRpb24gY2FjaGUsIGVuc3VyZSB3ZSBkb24n
dCBzYXZlIHRoZSByZXN1bHQgZm9yIGZ1dHVyZSB1c2UuCisgICAgYm9vbCBzaG91bGRSZW1vdmVS
ZXNvdXJjZUZyb21DYWNoZSA9IHdpbGxMb2FkRmFsbGJhY2s7CisjaWYgUExBVEZPUk0oQ0hST01J
VU0pCisgICAgLy8gY2hyb21pdW0ncyBBcHBsaWNhdGlvbkNhY2hlSG9zdCBpbXBsZW1lbnRhdGlv
biBhbHdheXMgcmV0dXJucyB0cnVlIGZvciBtYXliZUxvYWRGYWxsYmFja0Zvck1haW5SZXNwb25z
ZSgpLiBIb3dldmVyLCBhbGwgcmVzcG9uc2VzIGxvYWRlZAorICAgIC8vIGZyb20gYXBwY2FjaGUg
d2lsbCBoYXZlIGEgbm9uLXplcm8gYXBwQ2FjaGVJRCgpLgorICAgIGlmIChyLmFwcENhY2hlSUQo
KSkKKyAgICAgICAgc2hvdWxkUmVtb3ZlUmVzb3VyY2VGcm9tQ2FjaGUgPSB0cnVlOworI2VuZGlm
CisgICAgaWYgKHNob3VsZFJlbW92ZVJlc291cmNlRnJvbUNhY2hlKQorICAgICAgICBtZW1vcnlD
YWNoZSgpLT5yZW1vdmUobV9yZXNvdXJjZS5nZXQoKSk7CisKKyAgICBpZiAod2lsbExvYWRGYWxs
YmFjaykKICAgICAgICAgcmV0dXJuOwogCiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNT
dHJpbmcsIHhGcmFtZU9wdGlvbkhlYWRlciwgKCJ4LWZyYW1lLW9wdGlvbnMiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CkBAIC01NDAsNyArNTU1LDcgQEAKIAogICAgIGlm
ICghbG9hZGVyKCkpIHsKICAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS0+ZGlzcGF0
Y2hEaWRGaW5pc2hMb2FkaW5nKGRvY3VtZW50TG9hZGVyKCksIGlkZW50aWZpZXIoKSwgZmluaXNo
VGltZSk7Ci0gICAgICAgIG1fc3Vic3RpdHV0ZURhdGFMb2FkSWRlbnRpZmllciA9IDA7CisgICAg
ICAgIG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIgPSAwOwogICAgIH0K
IAogI2lmIFBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKElPUykgJiYgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMDgwCkBAIC01NjIsNiArNTc3LDEzIEBACiAgICAgZG9jdW1l
bnRMb2FkZXIoKS0+dGltaW5nKCktPnNldFJlc3BvbnNlRW5kKGZpbmlzaFRpbWUgPyBmaW5pc2hU
aW1lIDogKG1fdGltZU9mTGFzdERhdGFSZWNlaXZlZCA/IG1fdGltZU9mTGFzdERhdGFSZWNlaXZl
ZCA6IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpKSk7CiAgICAgZG9jdW1lbnRMb2FkZXIo
KS0+ZmluaXNoZWRMb2FkaW5nKCk7CiAKKyAgICAvLyBJZiB0aGUgZG9jdW1lbnQgc3BlY2lmaWVk
IGFuIGFwcGxpY2F0aW9uIGNhY2hlIG1hbmlmZXN0LCBpdCB2aW9sYXRlcyB0aGUgYXV0aG9yJ3Mg
aW50ZW50IGlmIHdlIHN0b3JlIGl0IGluIHRoZSBtZW1vcnkgY2FjaGUKKyAgICAvLyBhbmQgZGVu
eSB0aGUgYXBwY2FjaGUgdGhlIGNoYW5jZSB0byBpbnRlcmNlcHQgaXQgaW4gdGhlIGZ1dHVyZSwg
c28gcmVtb3ZlIGZyb20gdGhlIG1lbW9yeSBjYWNoZS4KKyAgICBpZiAoRnJhbWUqIGZyYW1lID0g
ZG9jdW1lbnRMb2FkZXIoKS0+ZnJhbWUoKSkgeworICAgICAgICBpZiAobV9yZXNvdXJjZSAmJiBm
cmFtZS0+ZG9jdW1lbnQoKS0+aGFzTWFuaWZlc3QoKSkKKyAgICAgICAgICAgIG1lbW9yeUNhY2hl
KCktPnJlbW92ZShtX3Jlc291cmNlLmdldCgpKTsKKyAgICB9CisKICAgICBkbC0+YXBwbGljYXRp
b25DYWNoZUhvc3QoKS0+ZmluaXNoZWRMb2FkaW5nTWFpblJlc291cmNlKCk7CiB9CiAKQEAgLTY3
MSw5ICs2OTMsOSBAQAogICAgIGRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0
KCktPm1heWJlTG9hZE1haW5SZXNvdXJjZShyZXF1ZXN0LCBtX3N1YnN0aXR1dGVEYXRhKTsKIAog
ICAgIGlmIChtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSkgewotICAgICAgICBtX3N1YnN0aXR1
dGVEYXRhTG9hZElkZW50aWZpZXIgPSBtX2RvY3VtZW50TG9hZGVyLT5mcmFtZSgpLT5wYWdlKCkt
PnByb2dyZXNzKCktPmNyZWF0ZVVuaXF1ZUlkZW50aWZpZXIoKTsKLSAgICAgICAgZnJhbWVMb2Fk
ZXIoKS0+bm90aWZpZXIoKS0+YXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3QobV9zdWJz
dGl0dXRlRGF0YUxvYWRJZGVudGlmaWVyLCBkb2N1bWVudExvYWRlcigpLCByZXF1ZXN0KTsKLSAg
ICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS0+ZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3Qo
ZG9jdW1lbnRMb2FkZXIoKSwgbV9zdWJzdGl0dXRlRGF0YUxvYWRJZGVudGlmaWVyLCByZXF1ZXN0
LCBSZXNvdXJjZVJlc3BvbnNlKCkpOworICAgICAgICBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91
dFJlc291cmNlTG9hZGVyID0gbV9kb2N1bWVudExvYWRlci0+ZnJhbWUoKS0+cGFnZSgpLT5wcm9n
cmVzcygpLT5jcmVhdGVVbmlxdWVJZGVudGlmaWVyKCk7CisgICAgICAgIGZyYW1lTG9hZGVyKCkt
Pm5vdGlmaWVyKCktPmFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KG1faWRlbnRpZmll
ckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIsIGRvY3VtZW50TG9hZGVyKCksIHJlcXVlc3Qp
OworICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLT5kaXNwYXRjaFdpbGxTZW5kUmVx
dWVzdChkb2N1bWVudExvYWRlcigpLCBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNl
TG9hZGVyLCByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlKCkpOwogICAgICAgICBoYW5kbGVTdWJz
dGl0dXRlRGF0YUxvYWRTb29uKHJlcXVlc3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAt
Njg2LDEzICs3MDgsMjAgQEAKICAgICAgICAgZG9jdW1lbnRMb2FkZXIoKS0+c2V0UmVxdWVzdChS
ZXNvdXJjZVJlcXVlc3QoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgaWYgKCFsb2Fk
ZXIoKSkgeworICAgICAgICBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVy
ID0gbV9kb2N1bWVudExvYWRlci0+ZnJhbWUoKS0+cGFnZSgpLT5wcm9ncmVzcygpLT5jcmVhdGVV
bmlxdWVJZGVudGlmaWVyKCk7CisgICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCktPmFz
c2lnbklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0
UmVzb3VyY2VMb2FkZXIsIGRvY3VtZW50TG9hZGVyKCksIHJlcXVlc3QpOworICAgICAgICBmcmFt
ZUxvYWRlcigpLT5ub3RpZmllcigpLT5kaXNwYXRjaFdpbGxTZW5kUmVxdWVzdChkb2N1bWVudExv
YWRlcigpLCBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyLCByZXF1ZXN0
LCBSZXNvdXJjZVJlc3BvbnNlKCkpOworICAgIH0KICAgICBtX3Jlc291cmNlLT5hZGRDbGllbnQo
dGhpcyk7CiAKLSAgICAvLyBXZSBuZWVkIHRvIHdhaXQgdW50aWwgYWZ0ZXIgcmVxdWVzdE1haW5S
ZXNvdXJjZSgpIGlzIGNhbGxlZCB0byBzZXRSZXF1ZXN0KCksIGJlY2F1c2UgdGhlcmUgYXJlIGEg
YnVuY2ggb2YgaGVhZGVycyBzZXQgd2hlbgotICAgIC8vIHRoZSB1bmRlcmx5aW5nIFJlc291cmNl
TG9hZGVyIGlzIGNyZWF0ZWQsIGFuZCBEb2N1bWVudExvYWRlcjo6bV9yZXF1ZXN0IG5lZWRzIHRv
IGluY2x1ZGUgdGhvc2UuIEhvd2V2ZXIsIHRoZSBjYWNoZSB3aWxsCi0gICAgLy8gc3RyaXAgdGhl
IGZyYWdtZW50IGlkZW50aWZpZXIgKHdoaWNoIERvY3VtZW50TG9hZGVyOjptX3JlcXVlc3Qgc2hv
dWxkIGFsc28gaW5jbHVkZSksIHNvIGFkZCB0aGF0IGJhY2sgaW4uCisgICAgLy8gQSBidW5jaCBv
ZiBoZWFkZXJzIGFyZSBzZXQgd2hlbiB0aGUgdW5kZXJseWluZyBSZXNvdXJjZUxvYWRlciBpcyBj
cmVhdGVkLCBhbmQgRG9jdW1lbnRMb2FkZXI6Om1fcmVxdWVzdCBuZWVkcyB0byBpbmNsdWRlIHRo
b3NlLgogICAgIGlmIChsb2FkZXIoKSkKICAgICAgICAgcmVxdWVzdCA9IGxvYWRlcigpLT5vcmln
aW5hbFJlcXVlc3QoKTsKKyAgICAvLyBJZiB0aGVyZSB3YXMgYSBmcmFnbWVudCBpZGVudGlmaWVy
IG9uIGluaXRpYWxSZXF1ZXN0LCB0aGUgY2FjaGUgd2lsbCBoYXZlIHN0cmlwcGVkIGl0LiBEb2N1
bWVudExvYWRlcjo6bV9yZXF1ZXN0IHNob3VsZCBpbmNsdWRlCisgICAgLy8gdGhlIGZyYWdtZW50
IGlkZW50aWZpZXIsIHNvIGFkZCB0aGF0IGJhY2sgaW4uCisgICAgaWYgKGVxdWFsSWdub3JpbmdG
cmFnbWVudElkZW50aWZpZXIoaW5pdGlhbFJlcXVlc3QudXJsKCksIHJlcXVlc3QudXJsKCkpKQor
ICAgICAgICByZXF1ZXN0LnNldFVSTChpbml0aWFsUmVxdWVzdC51cmwoKSk7CiAgICAgZG9jdW1l
bnRMb2FkZXIoKS0+c2V0UmVxdWVzdChyZXF1ZXN0KTsKIH0KIApAQCAtNzIwLDkgKzc0OSw5IEBA
CiAKIHVuc2lnbmVkIGxvbmcgTWFpblJlc291cmNlTG9hZGVyOjppZGVudGlmaWVyKCkgY29uc3QK
IHsKLSAgICBBU1NFUlQoIW1fc3Vic3RpdHV0ZURhdGFMb2FkSWRlbnRpZmllciB8fCAhbG9hZGVy
KCkgfHwgIWxvYWRlcigpLT5pZGVudGlmaWVyKCkpOwotICAgIGlmIChtX3N1YnN0aXR1dGVEYXRh
TG9hZElkZW50aWZpZXIpCi0gICAgICAgIHJldHVybiBtX3N1YnN0aXR1dGVEYXRhTG9hZElkZW50
aWZpZXI7CisgICAgQVNTRVJUKCFtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9h
ZGVyIHx8ICFsb2FkZXIoKSB8fCAhbG9hZGVyKCktPmlkZW50aWZpZXIoKSk7CisgICAgaWYgKG1f
aWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIpCisgICAgICAgIHJldHVybiBt
X2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyOwogICAgIGlmIChSZXNvdXJj
ZUxvYWRlciogcmVzb3VyY2VMb2FkZXIgPSBsb2FkZXIoKSkKICAgICAgICAgcmV0dXJuIHJlc291
cmNlTG9hZGVyLT5pZGVudGlmaWVyKCk7CiAgICAgcmV0dXJuIDA7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAxMzk2MjIpCisrKyBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEyOCw3ICsxMjgsNyBAQAogICAgIGJvb2wgbV9sb2FkaW5nTXVsdGlwYXJ0Q29udGVudDsK
ICAgICBib29sIG1fd2FpdGluZ0ZvckNvbnRlbnRQb2xpY3k7CiAgICAgZG91YmxlIG1fdGltZU9m
TGFzdERhdGFSZWNlaXZlZDsKLSAgICB1bnNpZ25lZCBsb25nIG1fc3Vic3RpdHV0ZURhdGFMb2Fk
SWRlbnRpZmllcjsKKyAgICB1bnNpZ25lZCBsb25nIG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0
UmVzb3VyY2VMb2FkZXI7CiAKICNpZiBQTEFURk9STShNQUMpICYmICFQTEFURk9STShJT1MpICYm
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA4MAogICAgIFdlYkZpbHRlckV2
YWx1YXRvciAqbV9maWx0ZXI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmF3UmVzb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmF3UmVzb3VyY2UuaAkocmV2aXNpb24gMTM5NjIyKQorKysgU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4
LDcgKzQ4LDcgQEAKICAgICBTdWJyZXNvdXJjZUxvYWRlciogbG9hZGVyKCkgY29uc3Q7CiAgICAg
dm9pZCBjbGVhcigpOwogCi0gICAgYm9vbCBjYW5SZXVzZShjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
KSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgY2FuUmV1c2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JikgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2Jq
ZWN0SW5mbyopIGNvbnN0IE9WRVJSSURFOwogCkBAIC02Nyw2ICs2NywyMCBAQAogI2VuZGlmCiAK
ICAgICB1bnNpZ25lZCBsb25nIG1faWRlbnRpZmllcjsKKworICAgIHN0cnVjdCBSZWRpcmVjdFBh
aXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgZXhwbGljaXQgUmVkaXJlY3RQYWlyKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RS
ZXNwb25zZSkKKyAgICAgICAgICAgIDogbV9yZXF1ZXN0KHJlcXVlc3QpCisgICAgICAgICAgICAs
IG1fcmVkaXJlY3RSZXNwb25zZShyZWRpcmVjdFJlc3BvbnNlKQorICAgICAgICB7CisgICAgICAg
IH0KKworICAgICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QgbV9yZXF1ZXN0OworICAgICAgICBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlIG1fcmVkaXJlY3RSZXNwb25zZTsKKyAgICB9OworCisgICAg
VmVjdG9yPFJlZGlyZWN0UGFpcj4gbV9yZWRpcmVjdENoYWluOwogfTsKIAogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAJKHJldmlzaW9u
IDEzOTYyMikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5Nyw4ICs0OTcsOCBAQAogICAgIGlmICghaGFzQ2xpZW50
cygpICYmIGluQ2FjaGUoKSkKICAgICAgICAgbWVtb3J5Q2FjaGUoKS0+YWRkVG9MaXZlUmVzb3Vy
Y2VzU2l6ZSh0aGlzKTsKIAotICAgIGlmIChtX3R5cGUgPT0gUmF3UmVzb3VyY2UgJiYgIW1fcmVz
cG9uc2UuaXNOdWxsKCkgJiYgIW1fcHJveHlSZXNvdXJjZSkgewotICAgICAgICAvLyBDZXJ0YWlu
IHJlc291cmNlcyAoZXNwZWNpYWxseSBYSFJzKSBkbyBjcmF6eSB0aGluZ3MgaWYgYW4gYXN5bmNo
cm9ub3VzIGxvYWQgcmV0dXJucworICAgIGlmICgobV90eXBlID09IFJhd1Jlc291cmNlIHx8IG1f
dHlwZSA9PSBNYWluUmVzb3VyY2UpICYmICFtX3Jlc3BvbnNlLmlzTnVsbCgpICYmICFtX3Byb3h5
UmVzb3VyY2UpIHsKKyAgICAgICAgLy8gQ2VydGFpbiByZXNvdXJjZXMgKGVzcGVjaWFsbHkgWEhS
cyBhbmQgbWFpbiByZXNvdXJjZXMpIGRvIGNyYXp5IHRoaW5ncyBpZiBhbiBhc3luY2hyb25vdXMg
bG9hZCByZXR1cm5zCiAgICAgICAgIC8vIHN5bmNocm9ub3VzbHkgKGUuZy4sIHNjcmlwdHMgbWF5
IG5vdCBoYXZlIHNldCBhbGwgdGhlIHN0YXRlIHRoZXkgbmVlZCB0byBoYW5kbGUgdGhlIGxvYWQp
LgogICAgICAgICAvLyBUaGVyZWZvcmUsIHJhdGhlciB0aGFuIGltbWVkaWF0ZWx5IHNlbmRpbmcg
Y2FsbGJhY2tzIG9uIGEgY2FjaGUgaGl0IGxpa2Ugb3RoZXIgQ2FjaGVkUmVzb3VyY2VzLAogICAg
ICAgICAvLyB3ZSBzY2hlZHVsZSB0aGUgY2FsbGJhY2tzIGFuZCBlbnN1cmUgd2UgbmV2ZXIgZmlu
aXNoIHN5bmNocm9ub3VzbHkuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDEzOTYyMikKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU0MCwxMiArNTQwLDkgQEAKICAgICAgICAgcmV0dXJuIFJlbG9hZDsKICAg
ICB9CiAKLSAgICBpZiAoZXhpc3RpbmdSZXNvdXJjZS0+dHlwZSgpID09IENhY2hlZFJlc291cmNl
OjpNYWluUmVzb3VyY2UpCisgICAgaWYgKCFleGlzdGluZ1Jlc291cmNlLT5jYW5SZXVzZShyZXF1
ZXN0KSkKICAgICAgICAgcmV0dXJuIFJlbG9hZDsKIAotICAgIGlmIChleGlzdGluZ1Jlc291cmNl
LT50eXBlKCkgPT0gQ2FjaGVkUmVzb3VyY2U6OlJhd1Jlc291cmNlICYmICFzdGF0aWNfY2FzdDxD
YWNoZWRSYXdSZXNvdXJjZSo+KGV4aXN0aW5nUmVzb3VyY2UpLT5jYW5SZXVzZShyZXF1ZXN0KSkK
LSAgICAgICAgcmV0dXJuIFJlbG9hZDsKLQogICAgIC8vIENlcnRhaW4gcmVxdWVzdHMgKGUuZy4s
IFhIUnMpIG1pZ2h0IGhhdmUgbWFudWFsbHkgc2V0IGhlYWRlcnMgdGhhdCByZXF1aXJlIHJldmFs
aWRhdGlvbi4KICAgICAvLyBGSVhNRTogSW4gdGhlb3J5LCB0aGlzIHNob3VsZCBiZSBhIFJldmFs
aWRhdGUgY2FzZS4gSW4gcHJhY3RpY2UsIHRoZSBNZW1vcnlDYWNoZSByZXZhbGlkYXRpb24gcGF0
aCBhc3N1bWVzIGEgd2hvbGUgYnVuY2gKICAgICAvLyBvZiB0aGluZ3MgYWJvdXQgaG93IHJldmFs
aWRhdGlvbiB3b3JrcyB0aGF0IG1hbnVhbCBoZWFkZXJzIHZpb2xhdGUsIHNvIHB1bnQgdG8gUmVs
b2FkIGluc3RlYWQuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2UuaAkocmV2aXNpb24gMTM5NjIyKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1OCw2ICsyNTgsOCBAQAog
CiAgICAgdmlydHVhbCB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBj
b25zdDsKIAorICAgIHZpcnR1YWwgYm9vbCBjYW5SZXVzZShjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
KSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQg
Y2hlY2tOb3RpZnkoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJhd1Jlc291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCShyZXZpc2lvbiAxMzk2MjIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04MCwxNCArODAsMjUgQEAKIAogdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZGlkQWRkQ2xpZW50
KENhY2hlZFJlc291cmNlQ2xpZW50KiBjKQogewotICAgIGlmIChtX3Jlc3BvbnNlLmlzTnVsbCgp
IHx8ICFoYXNDbGllbnQoYykpCisgICAgaWYgKCFoYXNDbGllbnQoYykpCiAgICAgICAgIHJldHVy
bjsKICAgICAvLyBUaGUgY2FsbHMgdG8gdGhlIGNsaWVudCBjYW4gcmVzdWx0IGluIGV2ZW50cyBy
dW5uaW5nLCBwb3RlbnRpYWxseSBjYXVzaW5nCiAgICAgLy8gdGhpcyByZXNvdXJjZSB0byBiZSBl
dmljdGVkIGZyb20gdGhlIGNhY2hlIGFuZCBhbGwgY2xpZW50cyB0byBiZSByZW1vdmVkLAogICAg
IC8vIHNvIGEgcHJvdGVjdG9yIGlzIG5lY2Vzc2FyeS4KICAgICBDYWNoZWRSZXNvdXJjZUhhbmRs
ZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVjdCh0aGlzKTsKICAgICBDYWNoZWRSYXdSZXNvdXJj
ZUNsaWVudCogY2xpZW50ID0gc3RhdGljX2Nhc3Q8Q2FjaGVkUmF3UmVzb3VyY2VDbGllbnQqPihj
KTsKLSAgICBjbGllbnQtPnJlc3BvbnNlUmVjZWl2ZWQodGhpcywgbV9yZXNwb25zZSk7CisgICAg
c2l6ZV90IHJlZGlyZWN0Q291bnQgPSBtX3JlZGlyZWN0Q2hhaW4uc2l6ZSgpOworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgcmVkaXJlY3RDb3VudDsgaSsrKSB7CisgICAgICAgIFJlZGlyZWN0
UGFpciByZWRpcmVjdCA9IG1fcmVkaXJlY3RDaGFpbltpXTsKKyAgICAgICAgUmVzb3VyY2VSZXF1
ZXN0IHJlcXVlc3QocmVkaXJlY3QubV9yZXF1ZXN0KTsKKyAgICAgICAgY2xpZW50LT5yZWRpcmVj
dFJlY2VpdmVkKHRoaXMsIHJlcXVlc3QsIHJlZGlyZWN0Lm1fcmVkaXJlY3RSZXNwb25zZSk7Cisg
ICAgICAgIGlmICghaGFzQ2xpZW50KGMpKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICBBU1NFUlQocmVkaXJlY3RDb3VudCA9PSBtX3JlZGlyZWN0Q2hhaW4uc2l6ZSgpKTsKKworICAg
IGlmICghbV9yZXNwb25zZS5pc051bGwoKSkKKyAgICAgICAgY2xpZW50LT5yZXNwb25zZVJlY2Vp
dmVkKHRoaXMsIG1fcmVzcG9uc2UpOwogICAgIGlmICghaGFzQ2xpZW50KGMpKQogICAgICAgICBy
ZXR1cm47CiAgICAgaWYgKG1fZGF0YSkKQEAgLTExMCw2ICsxMjEsNyBAQAogICAgICAgICBDYWNo
ZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNoZWRSYXdSZXNvdXJjZUNsaWVudD4gdyhtX2NsaWVu
dHMpOwogICAgICAgICB3aGlsZSAoQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQqIGMgPSB3Lm5leHQo
KSkKICAgICAgICAgICAgIGMtPnJlZGlyZWN0UmVjZWl2ZWQodGhpcywgcmVxdWVzdCwgcmVzcG9u
c2UpOworICAgICAgICBtX3JlZGlyZWN0Q2hhaW4uYXBwZW5kKFJlZGlyZWN0UGFpcihyZXF1ZXN0
LCByZXNwb25zZSkpOwogICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6d2lsbFNlbmRSZXF1ZXN0
KHJlcXVlc3QsIHJlc3BvbnNlKTsKIH0KQEAgLTE5NCw2ICsyMDYsMTIgQEAKICAgICAgICAgaWYg
KCFzaG91bGRJZ25vcmVIZWFkZXJGb3JDYWNoZVJldXNlKGhlYWRlck5hbWUpICYmIGktPnZhbHVl
ICE9IG5ld0hlYWRlcnMuZ2V0KGhlYWRlck5hbWUpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9yZWRpcmVjdENoYWluLnNp
emUoKTsgaSsrKSB7CisgICAgICAgIGlmIChtX3JlZGlyZWN0Q2hhaW5baV0ubV9yZWRpcmVjdFJl
c3BvbnNlLmNhY2hlQ29udHJvbENvbnRhaW5zTm9TdG9yZSgpKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKwogICAgIHJldHVybiB0cnVlOwogfQogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAxMzk2MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSw1MyBAQAorMjAxMy0wMS0xNCAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIEVuYWJsZSByZXVzZSBvZiBjYWNoZWQgbWFpbiByZXNvdXJj
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTY2
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6
IGh0dHAvdGVzdHMvY2FjaGUvY2FjaGVkLW1haW4tcmVzb3VyY2UuaHRtbAorCisgICAgICAgICog
V2ViQ29yZS5leHAuaW46CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50OjpoYXNNYW5pZmVzdCk6IFJldHVybnMgdHJ1ZSBpZiB0aGUgPGh0bWw+
IGVsZW1lbnQgaGFzIGEgbm9uLWVtcHR5IG1hbmlmZXN0IGF0dHJpYnV0ZS4KKyAgICAgICAgKiBk
b20vRG9jdW1lbnQuaDoKKyAgICAgICAgKERvY3VtZW50KToKKyAgICAgICAgKiBsb2FkZXIvRnJh
bWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRlZFJlc291
cmNlRnJvbU1lbW9yeUNhY2hlKTogRG9uJ3Qgc2VuZCBkZWxlZ2F0ZSBjYWxsYmFja3MgZm9yIGNh
Y2hlIGhpdCBoZXJlLCBzaW5jZQorICAgICAgICAgICAgTWFpblJlc291cmNlTG9hZGVyIHdpbGwg
dGFrZSBjYXJlIG9mIGl0LgorICAgICAgICAqIGxvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TWFpblJlc291cmNlTG9hZGVyOjpNYWluUmVzb3VyY2VMb2Fk
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWFpblJlc291cmNlTG9hZGVyOjpyZWNlaXZlZEVycm9y
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5SZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5SZXNvdXJjZUxvYWRlcjo6cmVzcG9uc2VSZWNlaXZl
ZCk6IERvbid0IHRyeSB0byBjYWNoZSBsb2FkcyBmcm9tIHRoZSBhcHBsaWNhdGlvbiBjYWNoZS4K
KyAgICAgICAgKFdlYkNvcmU6Ok1haW5SZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6
IERvbid0IHRyeSB0byBjYWNoZSBsb2FkcyBmcm9tIHRoZSBhcHBsaWNhdGlvbiBjYWNoZS4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1haW5SZXNvdXJjZUxvYWRlcjo6bG9hZCk6IEVuc3VyZSB3ZSBjcmVh
dGUgYSByZXNvdXJjZSBsb2FkIGlkZW50aWZpZXIgZm9yIGNhY2hlIGhpdHMuIEFsc28sCisgICAg
ICAgICAgICBlbnN1cmUgd2UgY29ycmVjdGx5IHBvcHVhbGF0ZSBmcmFnbWVudCBpZGVudGlmaWVy
cyBpbiB0aGUgUmVzb3VyY2VSZXF1ZXN0IHJlcG9ydGVkIHRvIERvY3VtZW50TG9hZGVyLgorICAg
ICAgICAoV2ViQ29yZTo6TWFpblJlc291cmNlTG9hZGVyOjppZGVudGlmaWVyKToKKyAgICAgICAg
KiBsb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmg6IFJlbmFtZSBtX3N1YnN0aXR1dGVEYXRhTG9h
ZElkZW50aWZpZXIgdG8gbV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlcgor
ICAgICAgICAgICAgdG8gYmV0dGVyIGRlc2NyaWJlIHdoZW4gaXQgaXMgdXNlZC4KKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkUmF3UmVzb3VyY2U6OmRpZEFkZENsaWVudCk6IFN5bnRoZXNpemUgcmVkaXJlY3Qgbm90
aWZpY2F0aW9ucyBmb3IgY2FjaGUgaGl0cyBpZiBuZWNlc3NhcnkuCisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRSYXdSZXNvdXJjZTo6d2lsbFNlbmRSZXF1ZXN0KTogTm90ZSB0aGUgcmVkaXJlY3Rz
IHdlIHJlY2VpdmVkLgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmNhblJl
dXNlKTogRG9uJ3QgcmV1c2UgYSByZXNvdXJjZSBpZiB0aGUgcmVkaXJlY3QgY2hhaW4gaW5jbHVk
ZWQgYSAiQ2FjaGUtY29udHJvbDogbm8tc3RvcmUiLgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRSYXdSZXNvdXJjZS5oOgorICAgICAgICAoQ2FjaGVkUmF3UmVzb3VyY2UpOgorICAgICAg
ICAoUmVkaXJlY3RQYWlyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjpS
ZWRpcmVjdFBhaXI6OlJlZGlyZWN0UGFpcik6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjphZGRDbGll
bnRUb1NldCk6OiBEb24ndCByZXR1cm4gY2FjaGVkIGRhdGEgZm9yIGEgbWFpbiByZXNvdXJjZSBz
eW5jaHJvbm91c2x5CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6Y2FuUmV1c2UpOgorICAgICAgICAoQ2Fj
aGVkUmVzb3VyY2UpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6ZGV0ZXJtaW5l
UmV2YWxpZGF0aW9uUG9saWN5KTogUGVybWl0IGNhY2hlIHJldXNlIGZvciBtYWluIHJlc291cmNl
cy4KKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnRlcm5hbHM6OmlzTG9hZGluZ0Zyb21NZW1vcnlDYWNoZSk6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAoSW50ZXJuYWxzKToKKyAg
ICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisKIDIwMTMtMDEtMTQgIEtlbnRhcm8gSGFy
YSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtWOF0gTWFrZSBhbiBJc29sYXRl
IHBhcmFtZXRlciBtYW5kYXRvcnkgaW4gYXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoKQpJbmRl
eDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2xpbmstcmVsLWljb24tYmVmb3JlbG9hZC1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2xp
bmstcmVsLWljb24tYmVmb3JlbG9hZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDEzOTYyMikKKysr
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9saW5rLXJlbC1pY29uLWJlZm9yZWxvYWQtZXhw
ZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogPHVua25vd24+IC0gZGlk
RmluaXNoTG9hZGluZwogaHR0cDovLzEyNy4wLjAuMTo4MDAwL21pc2MvbGluay1yZWwtaWNvbi1i
ZWZvcmVsb2FkLmh0bWwgLSB3aWxsU2VuZFJlcXVlc3QgPE5TVVJMUmVxdWVzdCBVUkwgaHR0cDov
LzEyNy4wLjAuMTo4MDAwL21pc2MvbGluay1yZWwtaWNvbi1iZWZvcmVsb2FkLmh0bWwsIG1haW4g
ZG9jdW1lbnQgVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9taXNjL2xpbmstcmVsLWljb24tYmVm
b3JlbG9hZC5odG1sLCBodHRwIG1ldGhvZCBHRVQ+IHJlZGlyZWN0UmVzcG9uc2UgKG51bGwpCiBo
dHRwOi8vMTI3LjAuMC4xOjgwMDAvbWlzYy9saW5rLXJlbC1pY29uLWJlZm9yZWxvYWQuaHRtbCAt
IGRpZFJlY2VpdmVSZXNwb25zZSA8TlNVUkxSZXNwb25zZSBodHRwOi8vMTI3LjAuMC4xOjgwMDAv
bWlzYy9saW5rLXJlbC1pY29uLWJlZm9yZWxvYWQuaHRtbCwgaHR0cCBzdGF0dXMgY29kZSAyMDA+
CitodHRwOi8vMTI3LjAuMC4xOjgwMDAvbWlzYy9saW5rLXJlbC1pY29uLWJlZm9yZWxvYWQuaHRt
bCAtIGRpZEZpbmlzaExvYWRpbmcKIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9mYXZpY29uLmljbyAt
IHdpbGxTZW5kUmVxdWVzdCA8TlNVUkxSZXF1ZXN0IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAv
ZmF2aWNvbi5pY28sIG1haW4gZG9jdW1lbnQgVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9taXNj
L2xpbmstcmVsLWljb24tYmVmb3JlbG9hZC5odG1sLCBodHRwIG1ldGhvZCBHRVQ+IHJlZGlyZWN0
UmVzcG9uc2UgKG51bGwpCiBUaGlzIHRlc3Qgc2hvdWxkIG5vdCBzaG93IGEgcmVxdWVzdCBmb3Ig
dGhlIGZhdmljb24gZG9udC1sb2FkLXRoaXMuaWNvLCBzaW5jZSB0aGUgYmVmb3JlbG9hZCBoYW5k
bGVyIG9uIHRoZSBmYXZpY29uIGxpbmsgcmV0dXJucyBmYWxzZS4gVGhlcmVmb3JlLCBpZiB0aGUg
cmVzb3VyY2UgcmVxdWVzdCBsaXN0IGJlbG93IHNob3dzIGEgcmVxdWVzdCBmb3IgZG9udC1sb2Fk
LXRoaXMuaWNvLCB0aGVuIHRoaXMgdGVzdCBoYXMgZmFpbGVkLgpJbmRleDogTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9taXNjL2Zhdmljb24tbG9hZHMtd2l0aC1pbWFnZXMtZGlzYWJsZWQtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9mYXZpY29u
LWxvYWRzLXdpdGgtaW1hZ2VzLWRpc2FibGVkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTM5NjIy
KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2Zhdmljb24tbG9hZHMtd2l0aC1pbWFn
ZXMtZGlzYWJsZWQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNyBAQAog
PHVua25vd24+IC0gZGlkRmluaXNoTG9hZGluZwogaHR0cDovLzEyNy4wLjAuMTo4MDAwL21pc2Mv
ZmF2aWNvbi1sb2Fkcy13aXRoLWltYWdlcy1kaXNhYmxlZC5odG1sIC0gd2lsbFNlbmRSZXF1ZXN0
IDxOU1VSTFJlcXVlc3QgVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9taXNjL2Zhdmljb24tbG9h
ZHMtd2l0aC1pbWFnZXMtZGlzYWJsZWQuaHRtbCwgbWFpbiBkb2N1bWVudCBVUkwgaHR0cDovLzEy
Ny4wLjAuMTo4MDAwL21pc2MvZmF2aWNvbi1sb2Fkcy13aXRoLWltYWdlcy1kaXNhYmxlZC5odG1s
LCBodHRwIG1ldGhvZCBHRVQ+IHJlZGlyZWN0UmVzcG9uc2UgKG51bGwpCiBodHRwOi8vMTI3LjAu
MC4xOjgwMDAvbWlzYy9mYXZpY29uLWxvYWRzLXdpdGgtaW1hZ2VzLWRpc2FibGVkLmh0bWwgLSBk
aWRSZWNlaXZlUmVzcG9uc2UgPE5TVVJMUmVzcG9uc2UgaHR0cDovLzEyNy4wLjAuMTo4MDAwL21p
c2MvZmF2aWNvbi1sb2Fkcy13aXRoLWltYWdlcy1kaXNhYmxlZC5odG1sLCBodHRwIHN0YXR1cyBj
b2RlIDIwMD4KK2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9taXNjL2Zhdmljb24tbG9hZHMtd2l0aC1p
bWFnZXMtZGlzYWJsZWQuaHRtbCAtIGRpZEZpbmlzaExvYWRpbmcKIFJhZGFyIDY5NzMxMDYgYW5k
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzg5NiAtIEZhdmljb25z
IHN0aWxsIGxvYWQgd2hlbiBhdXRvbWF0aWMgaW1hZ2UgbG9hZGluZyBpcyBkaXNhYmxlZC4KIFRo
aXMgdGVzdCB1c2VzIERSVCdzIHJlc291cmNlIGxvYWQgZGVsZWdhdGUgY2FsbGJhY2sgbW9kZSB0
byBzZWUgaWYgdGhlIGZhdmljb24gaXMgbG9hZGVkIGV2ZW4gd2hlbiBpbWFnZSBsb2FkaW5nIGlz
IG9mZi4KIApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9jYWNoZWQtbWFpbi1y
ZXNvdXJjZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9jYWNoZS9jYWNoZWQtbWFpbi1yZXNvdXJjZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL2NhY2hlZC1tYWluLXJlc291cmNlLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIgQEAKK1BBU1MKKyAKSW5kZXg6IExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvY2FjaGVkLW1haW4tcmVzb3VyY2UuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL2NhY2hlZC1tYWluLXJlc291
cmNlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL2Nh
Y2hlZC1tYWluLXJlc291cmNlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNCBAQAor
PGh0bWw+Cis8Ym9keSBvbmxvYWQ9InNldFRpbWVvdXQocmVtb3ZlQW5kUmVsb2FkLCAwKTsiPgor
PGRpdiBpZD0icmVzdWx0Ij48L2Rpdj4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRp
bERvbmUoKTsKK30KKworZnVuY3Rpb24gcmVtb3ZlQW5kUmVsb2FkKCkKK3sKKyAgICBkb2N1bWVu
dC5ib2R5LnJlbW92ZUNoaWxkKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpZnJhbWUiKSk7Cisg
ICAgdmFyIG5ld0lmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOworICAg
IG5ld0lmcmFtZS5zcmMgPSAicmVzb3VyY2VzL2NhY2hlYWJsZS1pZnJhbWUucGhwIjsKKyAgICBk
b2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG5ld0lmcmFtZSk7CisgICAgdmFyIGZyb21DYWNoZSA9
IGludGVybmFscy5pc0xvYWRpbmdGcm9tTWVtb3J5Q2FjaGUobmV3SWZyYW1lLnNyYyk7CisgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNy
ZWF0ZVRleHROb2RlKGZyb21DYWNoZSA/ICJQQVNTIiA6ICJGQUlMIikpOworICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9Cis8L3Nj
cmlwdD4KKzxpZnJhbWUgaWQ9ImlmcmFtZSIgc3JjPSJyZXNvdXJjZXMvY2FjaGVhYmxlLWlmcmFt
ZS5waHAiPjwvaWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvY2FjaGVhYmxlLWlmcmFtZS5waHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvY2FjaGVhYmxlLWlmcmFt
ZS5waHAJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3Jlc291
cmNlcy9jYWNoZWFibGUtaWZyYW1lLnBocAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExIEBA
Cis8P3BocAorcmVxdWlyZV9vbmNlICcuLi8uLi9yZXNvdXJjZXMvcG9ydGFiaWxpdHlMYXllci5w
aHAnOworCiskbWF4X2FnZSA9IDEyICogMzEgKiAyNCAqIDYwICogNjA7IC8vb25lIHllYXIKKyRl
eHBpcmVzID0gZ21kYXRlKERBVEVfUkZDMTEyMywgdGltZSgpICsgJG1heF9hZ2UpOworCitoZWFk
ZXIoJ0NhY2hlLUNvbnRyb2w6IHB1YmxpYywgbWF4LWFnZT0nIC4gJG1heF9hZ2UpOworaGVhZGVy
KCdFeHBpcmVzOiAnIC4gJGV4cGlyZXMpOworaGVhZGVyKCdDb250ZW50LVR5cGU6IHRleHQvaHRt
bCcpOworZXhpdCgpOworPz4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L3Jlc291cmNlLWhhci1wYWdlcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2UtaGFyLXBhZ2VzLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMTM5NjIyKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVz
b3VyY2UtaGFyLXBhZ2VzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDUg
QEAKIFRlc3RzIGNvbnZlcnNpb24gb2YgSW5zcGVjdG9yJ3MgcmVzb3VyY2UgcmVwcmVzZW50YXRp
b24gaW50byBIQVIgZm9ybWF0LgogCi1QYWdlIHJlbG9hZGVkLgogewogICAgIDAgOiB7CiAgICAg
ICAgIGlkIDogPHN0cmluZz4KQEAgLTI4LDQgKzI3LDUgQEAKIHBhZ2U6IHBhZ2VfMSB1cmw6IGh0
dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvcmVzb3VyY2VzL2hhci1wYWdlcy1uYXZpZ2F0
aW9uLXRhcmdldC5odG1sCiBwYWdlOiBwYWdlXzEgdXJsOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAv
aW5zcGVjdG9yL3Jlc291cmNlcy9zb3VyY2UxLmpzCiBwYWdlOiBwYWdlXzEgdXJsOiBodHRwOi8v
MTI3LjAuMC4xOjgwMDAvcmVzb3VyY2VzL3JlZGlyZWN0LnBocD91cmw9L2luc3BlY3Rvci9yZXNv
dXJjZXMvaGFyLXBhZ2VzLW5hdmlnYXRpb24tdGFyZ2V0Lmh0bWwKK1BhZ2UgcmVsb2FkZWQuCiAK
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9yZWRpcmVjdC1tZXRob2RzLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcv
cmVkaXJlY3QtbWV0aG9kcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDEzOTYyMikKKysrIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9yZWRpcmVjdC1tZXRob2RzLWV4cGVjdGVkLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtNDIsMTEgKzQyLDExIEBACiBodHRwOi8vMTI3LjAuMC4xOjgwMDAv
bG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1mb3JtLmh0bWwgLSBkaWRSZWNlaXZl
UmVzcG9uc2UgPE5TVVJMUmVzcG9uc2UgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVz
b3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtZm9ybS5odG1sLCBodHRwIHN0YXR1cyBjb2RlIDIwMD4K
IGZyYW1lICIxIiAtIGRpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWUKIGZyYW1lICIxIiAt
IGRpZENvbW1pdExvYWRGb3JGcmFtZQoraHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVz
b3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtZm9ybS5odG1sIC0gZGlkRmluaXNoTG9hZGluZwogZnJh
bWUgIjEiIC0gZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUKIGZyYW1lICIxIiAtIHdpbGxQ
ZXJmb3JtQ2xpZW50UmVkaXJlY3RUb1VSTDogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcv
cmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtcmVzdWx0LnBocCAKIGZyYW1lICIxIiAtIGRpZEhh
bmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lCiBmcmFtZSAiMSIgLSBkaWRGaW5pc2hMb2FkRm9yRnJh
bWUKLWh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRo
b2RzLWZvcm0uaHRtbCAtIGRpZEZpbmlzaExvYWRpbmcKIGZyYW1lICIxIiAtIGRpZFN0YXJ0UHJv
dmlzaW9uYWxMb2FkRm9yRnJhbWUKIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291
cmNlcy9yZWRpcmVjdC1tZXRob2RzLXJlc3VsdC5waHAgLSB3aWxsU2VuZFJlcXVlc3QgPE5TVVJM
UmVxdWVzdCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGly
ZWN0LW1ldGhvZHMtcmVzdWx0LnBocCwgbWFpbiBkb2N1bWVudCBVUkwgaHR0cDovLzEyNy4wLjAu
MTo4MDAwL2xvYWRpbmcvcmVkaXJlY3QtbWV0aG9kcy5odG1sLCBodHRwIG1ldGhvZCBQT1NUPiBy
ZWRpcmVjdFJlc3BvbnNlIChudWxsKQogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVz
b3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtcmVzdWx0LnBocCAtIHdpbGxTZW5kUmVxdWVzdCA8TlNV
UkxSZXF1ZXN0IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVk
aXJlY3QtbWV0aG9kcy1yZXN1bHQucGhwP3JlZGlyZWN0ZWQ9dHJ1ZSwgbWFpbiBkb2N1bWVudCBV
UkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVkaXJlY3QtbWV0aG9kcy5odG1sLCBo
dHRwIG1ldGhvZCBHRVQ+IHJlZGlyZWN0UmVzcG9uc2UgPE5TVVJMUmVzcG9uc2UgaHR0cDovLzEy
Ny4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtcmVzdWx0LnBo
cCwgaHR0cCBzdGF0dXMgY29kZSAzMDI+CkBAIC02OSwxMSArNjksMTEgQEAKIGh0dHA6Ly8xMjcu
MC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLWZvcm0uaHRtbCAt
IGRpZFJlY2VpdmVSZXNwb25zZSA8TlNVUkxSZXNwb25zZSBodHRwOi8vMTI3LjAuMC4xOjgwMDAv
bG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1mb3JtLmh0bWwsIGh0dHAgc3RhdHVz
IGNvZGUgMjAwPgogZnJhbWUgIjIiIC0gZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZQog
ZnJhbWUgIjIiIC0gZGlkQ29tbWl0TG9hZEZvckZyYW1lCitodHRwOi8vMTI3LjAuMC4xOjgwMDAv
bG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1mb3JtLmh0bWwgLSBkaWRGaW5pc2hM
b2FkaW5nCiBmcmFtZSAiMiIgLSBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZQogZnJhbWUg
IjIiIC0gd2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdFRvVVJMOiBodHRwOi8vMTI3LjAuMC4xOjgw
MDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1yZXN1bHQucGhwIAogZnJhbWUg
IjIiIC0gZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUKIGZyYW1lICIyIiAtIGRpZEZpbmlz
aExvYWRGb3JGcmFtZQotaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3Jl
ZGlyZWN0LW1ldGhvZHMtZm9ybS5odG1sIC0gZGlkRmluaXNoTG9hZGluZwogZnJhbWUgIjIiIC0g
ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZQogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xv
YWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtcmVzdWx0LnBocCAtIHdpbGxTZW5kUmVx
dWVzdCA8TlNVUkxSZXF1ZXN0IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNv
dXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1yZXN1bHQucGhwLCBtYWluIGRvY3VtZW50IFVSTCBodHRw
Oi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZWRpcmVjdC1tZXRob2RzLmh0bWwsIGh0dHAgbWV0
aG9kIFBPU1Q+IHJlZGlyZWN0UmVzcG9uc2UgKG51bGwpCiBodHRwOi8vMTI3LjAuMC4xOjgwMDAv
bG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1yZXN1bHQucGhwIC0gd2lsbFNlbmRS
ZXF1ZXN0IDxOU1VSTFJlcXVlc3QgVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jl
c291cmNlcy9yZWRpcmVjdC1tZXRob2RzLXJlc3VsdC5waHA/cmVkaXJlY3RlZD10cnVlLCBtYWlu
IGRvY3VtZW50IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZWRpcmVjdC1tZXRo
b2RzLmh0bWwsIGh0dHAgbWV0aG9kIEdFVD4gcmVkaXJlY3RSZXNwb25zZSA8TlNVUkxSZXNwb25z
ZSBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9k
cy1yZXN1bHQucGhwLCBodHRwIHN0YXR1cyBjb2RlIDMwMz4KQEAgLTk2LDExICs5NiwxMSBAQAog
aHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMt
Zm9ybS5odG1sIC0gZGlkUmVjZWl2ZVJlc3BvbnNlIDxOU1VSTFJlc3BvbnNlIGh0dHA6Ly8xMjcu
MC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLWZvcm0uaHRtbCwg
aHR0cCBzdGF0dXMgY29kZSAyMDA+CiBmcmFtZSAiMyIgLSBkaWRDYW5jZWxDbGllbnRSZWRpcmVj
dEZvckZyYW1lCiBmcmFtZSAiMyIgLSBkaWRDb21taXRMb2FkRm9yRnJhbWUKK2h0dHA6Ly8xMjcu
MC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLWZvcm0uaHRtbCAt
IGRpZEZpbmlzaExvYWRpbmcKIGZyYW1lICIzIiAtIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZy
YW1lCiBmcmFtZSAiMyIgLSB3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0VG9VUkw6IGh0dHA6Ly8x
MjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLXJlc3VsdC5w
aHAgCiBmcmFtZSAiMyIgLSBkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZQogZnJhbWUgIjMi
IC0gZGlkRmluaXNoTG9hZEZvckZyYW1lCi1odHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9y
ZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1mb3JtLmh0bWwgLSBkaWRGaW5pc2hMb2FkaW5nCiBm
cmFtZSAiMyIgLSBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lCiBodHRwOi8vMTI3LjAu
MC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1yZXN1bHQucGhwIC0g
d2lsbFNlbmRSZXF1ZXN0IDxOU1VSTFJlcXVlc3QgVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9s
b2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLXJlc3VsdC5waHAsIG1haW4gZG9jdW1l
bnQgVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3JlZGlyZWN0LW1ldGhvZHMuaHRt
bCwgaHR0cCBtZXRob2QgUE9TVD4gcmVkaXJlY3RSZXNwb25zZSAobnVsbCkKIGh0dHA6Ly8xMjcu
MC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLXJlc3VsdC5waHAg
LSB3aWxsU2VuZFJlcXVlc3QgPE5TVVJMUmVxdWVzdCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAw
L2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtcmVzdWx0LnBocD9yZWRpcmVjdGVk
PXRydWUsIG1haW4gZG9jdW1lbnQgVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jl
ZGlyZWN0LW1ldGhvZHMuaHRtbCwgaHR0cCBtZXRob2QgUE9TVD4gcmVkaXJlY3RSZXNwb25zZSA8
TlNVUkxSZXNwb25zZSBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVk
aXJlY3QtbWV0aG9kcy1yZXN1bHQucGhwLCBodHRwIHN0YXR1cyBjb2RlIDMwNz4KSW5kZXg6IExh
eW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDEzOTYzMykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE4IEBACisyMDEzLTAxLTE0ICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgRW5hYmxlIHJldXNlIG9mIGNhY2hlZCBtYWluIHJlc291cmNl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1NjY3
LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHR0
cC90ZXN0cy9jYWNoZS9jYWNoZWQtbWFpbi1yZXNvdXJjZS1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvY2FjaGUvY2FjaGVkLW1haW4tcmVzb3VyY2UuaHRtbDogQWRk
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvY2FjaGVhYmxlLWlmcmFt
ZS5waHA6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlLWhh
ci1wYWdlcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9sb2FkaW5nL3JlZGly
ZWN0LW1ldGhvZHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvbWlzYy9mYXZp
Y29uLWxvYWRzLXdpdGgtaW1hZ2VzLWRpc2FibGVkLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBo
dHRwL3Rlc3RzL21pc2MvbGluay1yZWwtaWNvbi1iZWZvcmVsb2FkLWV4cGVjdGVkLnR4dDoKKwog
MjAxMy0wMS0xNCAgTGV2aSBXZWludHJhdWIgIDxsZXZpd0BjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCBnYXJkZW5pbmcuIE1hcmtpbmcgZmFzdC9kb20vSFRNTFRlbXBsYXRlRWxl
bWVudC9pbmVydENvbnRlbnRzLmh0bWwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184782</attachid>
            <date>2013-01-25 11:33:59 -0800</date>
            <delta_ts>2013-01-28 10:40:54 -0800</delta_ts>
            <desc>Without caching on chromium</desc>
            <filename>cmr_0125.txt</filename>
            <type>text/plain</type>
            <size>38277</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDE0MDg1
MCkKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDEzLTAx
LTI1ICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgRW5hYmxl
IHJldXNlIG9mIGNhY2hlZCBtYWluIHJlc291cmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1NjY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVy
OiBFeHBvc2UgTWVtb3J5Q2FjaGU6OnJlc291cmNlRm9yVVJMKCkuCisKIDIwMTMtMDEtMjUgIEp1
c3NpIEt1a2tvbmVuICA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgogCiAgICAgICAgIFtDTWFr
ZV1bRUZMXSBCdWlsZCBUaGlyZFBhcnR5L2xldmVsZGIgd2hlbiBJbmRleGVkREIgaXMgZW5hYmxl
ZApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkocmV2aXNpb24gMTQwODUwKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTMtMDEtMjUgIE5hdGUgQ2hhcGluICA8
amFwaGV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBFbmFibGUgcmV1c2Ugb2YgY2FjaGVkIG1h
aW4gcmVzb3VyY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDU2NjcuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBodHRwL3Rlc3RzL2NhY2hlL2NhY2hlZC1tYWluLXJlc291cmNlLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9jYWNoZS9jYWNoZWQtbWFpbi1yZXNvdXJj
ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2NhY2hlL3Jlc291cmNlcy9jYWNo
ZWFibGUtaWZyYW1lLnBocDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
cmVzb3VyY2UtaGFyLXBhZ2VzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2xv
YWRpbmcvcmVkaXJlY3QtbWV0aG9kcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0
cy9taXNjL2Zhdmljb24tbG9hZHMtd2l0aC1pbWFnZXMtZGlzYWJsZWQtZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIGh0dHAvdGVzdHMvbWlzYy9saW5rLXJlbC1pY29uLWJlZm9yZWxvYWQtZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnM6CisK
IDIwMTMtMDEtMjUgIEFiaGlzaGVrIEFyeWEgIDxpbmZlcm5vQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBSZWdyZXNzaW9uKHIxMzk4MzYpOiBDcmFzaCBpbiBXVEY6OmVxdWFsSWdub3JpbmdDYXNl
CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvbGluay1yZWwtaWNvbi1iZWZvcmVs
b2FkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21p
c2MvbGluay1yZWwtaWNvbi1iZWZvcmVsb2FkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTQwNzQz
KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2xpbmstcmVsLWljb24tYmVmb3JlbG9h
ZC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiA8dW5rbm93bj4g
LSBkaWRGaW5pc2hMb2FkaW5nCiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbWlzYy9saW5rLXJlbC1p
Y29uLWJlZm9yZWxvYWQuaHRtbCAtIHdpbGxTZW5kUmVxdWVzdCA8TlNVUkxSZXF1ZXN0IFVSTCBo
dHRwOi8vMTI3LjAuMC4xOjgwMDAvbWlzYy9saW5rLXJlbC1pY29uLWJlZm9yZWxvYWQuaHRtbCwg
bWFpbiBkb2N1bWVudCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL21pc2MvbGluay1yZWwtaWNv
bi1iZWZvcmVsb2FkLmh0bWwsIGh0dHAgbWV0aG9kIEdFVD4gcmVkaXJlY3RSZXNwb25zZSAobnVs
bCkKIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9taXNjL2xpbmstcmVsLWljb24tYmVmb3JlbG9hZC5o
dG1sIC0gZGlkUmVjZWl2ZVJlc3BvbnNlIDxOU1VSTFJlc3BvbnNlIGh0dHA6Ly8xMjcuMC4wLjE6
ODAwMC9taXNjL2xpbmstcmVsLWljb24tYmVmb3JlbG9hZC5odG1sLCBodHRwIHN0YXR1cyBjb2Rl
IDIwMD4KK2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9taXNjL2xpbmstcmVsLWljb24tYmVmb3JlbG9h
ZC5odG1sIC0gZGlkRmluaXNoTG9hZGluZwogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2Zhdmljb24u
aWNvIC0gd2lsbFNlbmRSZXF1ZXN0IDxOU1VSTFJlcXVlc3QgVVJMIGh0dHA6Ly8xMjcuMC4wLjE6
ODAwMC9mYXZpY29uLmljbywgbWFpbiBkb2N1bWVudCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAw
L21pc2MvbGluay1yZWwtaWNvbi1iZWZvcmVsb2FkLmh0bWwsIGh0dHAgbWV0aG9kIEdFVD4gcmVk
aXJlY3RSZXNwb25zZSAobnVsbCkKIFRoaXMgdGVzdCBzaG91bGQgbm90IHNob3cgYSByZXF1ZXN0
IGZvciB0aGUgZmF2aWNvbiBkb250LWxvYWQtdGhpcy5pY28sIHNpbmNlIHRoZSBiZWZvcmVsb2Fk
IGhhbmRsZXIgb24gdGhlIGZhdmljb24gbGluayByZXR1cm5zIGZhbHNlLiBUaGVyZWZvcmUsIGlm
IHRoZSByZXNvdXJjZSByZXF1ZXN0IGxpc3QgYmVsb3cgc2hvd3MgYSByZXF1ZXN0IGZvciBkb250
LWxvYWQtdGhpcy5pY28sIHRoZW4gdGhpcyB0ZXN0IGhhcyBmYWlsZWQuCkluZGV4OiBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL21pc2MvZmF2aWNvbi1sb2Fkcy13aXRoLWltYWdlcy1kaXNhYmxlZC1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2Zh
dmljb24tbG9hZHMtd2l0aC1pbWFnZXMtZGlzYWJsZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAx
NDA3NDMpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvZmF2aWNvbi1sb2Fkcy13aXRo
LWltYWdlcy1kaXNhYmxlZC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw3
IEBACiA8dW5rbm93bj4gLSBkaWRGaW5pc2hMb2FkaW5nCiBodHRwOi8vMTI3LjAuMC4xOjgwMDAv
bWlzYy9mYXZpY29uLWxvYWRzLXdpdGgtaW1hZ2VzLWRpc2FibGVkLmh0bWwgLSB3aWxsU2VuZFJl
cXVlc3QgPE5TVVJMUmVxdWVzdCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL21pc2MvZmF2aWNv
bi1sb2Fkcy13aXRoLWltYWdlcy1kaXNhYmxlZC5odG1sLCBtYWluIGRvY3VtZW50IFVSTCBodHRw
Oi8vMTI3LjAuMC4xOjgwMDAvbWlzYy9mYXZpY29uLWxvYWRzLXdpdGgtaW1hZ2VzLWRpc2FibGVk
Lmh0bWwsIGh0dHAgbWV0aG9kIEdFVD4gcmVkaXJlY3RSZXNwb25zZSAobnVsbCkKIGh0dHA6Ly8x
MjcuMC4wLjE6ODAwMC9taXNjL2Zhdmljb24tbG9hZHMtd2l0aC1pbWFnZXMtZGlzYWJsZWQuaHRt
bCAtIGRpZFJlY2VpdmVSZXNwb25zZSA8TlNVUkxSZXNwb25zZSBodHRwOi8vMTI3LjAuMC4xOjgw
MDAvbWlzYy9mYXZpY29uLWxvYWRzLXdpdGgtaW1hZ2VzLWRpc2FibGVkLmh0bWwsIGh0dHAgc3Rh
dHVzIGNvZGUgMjAwPgoraHR0cDovLzEyNy4wLjAuMTo4MDAwL21pc2MvZmF2aWNvbi1sb2Fkcy13
aXRoLWltYWdlcy1kaXNhYmxlZC5odG1sIC0gZGlkRmluaXNoTG9hZGluZwogUmFkYXIgNjk3MzEw
NiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3ODk2IC0gRmF2
aWNvbnMgc3RpbGwgbG9hZCB3aGVuIGF1dG9tYXRpYyBpbWFnZSBsb2FkaW5nIGlzIGRpc2FibGVk
LgogVGhpcyB0ZXN0IHVzZXMgRFJUJ3MgcmVzb3VyY2UgbG9hZCBkZWxlZ2F0ZSBjYWxsYmFjayBt
b2RlIHRvIHNlZSBpZiB0aGUgZmF2aWNvbiBpcyBsb2FkZWQgZXZlbiB3aGVuIGltYWdlIGxvYWRp
bmcgaXMgb2ZmLgogCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvcmVkaXJl
Y3QtbWV0aG9kcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9sb2FkaW5nL3JlZGlyZWN0LW1ldGhvZHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNDA3
NDMpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvcmVkaXJlY3QtbWV0aG9kcy1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQyLDExICs0MiwxMSBAQAogaHR0cDovLzEy
Ny4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtZm9ybS5odG1s
IC0gZGlkUmVjZWl2ZVJlc3BvbnNlIDxOU1VSTFJlc3BvbnNlIGh0dHA6Ly8xMjcuMC4wLjE6ODAw
MC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLWZvcm0uaHRtbCwgaHR0cCBzdGF0
dXMgY29kZSAyMDA+CiBmcmFtZSAiMSIgLSBkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1l
CiBmcmFtZSAiMSIgLSBkaWRDb21taXRMb2FkRm9yRnJhbWUKK2h0dHA6Ly8xMjcuMC4wLjE6ODAw
MC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLWZvcm0uaHRtbCAtIGRpZEZpbmlz
aExvYWRpbmcKIGZyYW1lICIxIiAtIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lCiBmcmFt
ZSAiMSIgLSB3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0VG9VUkw6IGh0dHA6Ly8xMjcuMC4wLjE6
ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLXJlc3VsdC5waHAgCiBmcmFt
ZSAiMSIgLSBkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZQogZnJhbWUgIjEiIC0gZGlkRmlu
aXNoTG9hZEZvckZyYW1lCi1odHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMv
cmVkaXJlY3QtbWV0aG9kcy1mb3JtLmh0bWwgLSBkaWRGaW5pc2hMb2FkaW5nCiBmcmFtZSAiMSIg
LSBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lCiBodHRwOi8vMTI3LjAuMC4xOjgwMDAv
bG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1yZXN1bHQucGhwIC0gd2lsbFNlbmRS
ZXF1ZXN0IDxOU1VSTFJlcXVlc3QgVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jl
c291cmNlcy9yZWRpcmVjdC1tZXRob2RzLXJlc3VsdC5waHAsIG1haW4gZG9jdW1lbnQgVVJMIGh0
dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3JlZGlyZWN0LW1ldGhvZHMuaHRtbCwgaHR0cCBt
ZXRob2QgUE9TVD4gcmVkaXJlY3RSZXNwb25zZSAobnVsbCkKIGh0dHA6Ly8xMjcuMC4wLjE6ODAw
MC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLXJlc3VsdC5waHAgLSB3aWxsU2Vu
ZFJlcXVlc3QgPE5TVVJMUmVxdWVzdCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcv
cmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtcmVzdWx0LnBocD9yZWRpcmVjdGVkPXRydWUsIG1h
aW4gZG9jdW1lbnQgVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3JlZGlyZWN0LW1l
dGhvZHMuaHRtbCwgaHR0cCBtZXRob2QgR0VUPiByZWRpcmVjdFJlc3BvbnNlIDxOU1VSTFJlc3Bv
bnNlIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRo
b2RzLXJlc3VsdC5waHAsIGh0dHAgc3RhdHVzIGNvZGUgMzAyPgpAQCAtNjksMTEgKzY5LDExIEBA
CiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9k
cy1mb3JtLmh0bWwgLSBkaWRSZWNlaXZlUmVzcG9uc2UgPE5TVVJMUmVzcG9uc2UgaHR0cDovLzEy
Ny4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtZm9ybS5odG1s
LCBodHRwIHN0YXR1cyBjb2RlIDIwMD4KIGZyYW1lICIyIiAtIGRpZENhbmNlbENsaWVudFJlZGly
ZWN0Rm9yRnJhbWUKIGZyYW1lICIyIiAtIGRpZENvbW1pdExvYWRGb3JGcmFtZQoraHR0cDovLzEy
Ny4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtZm9ybS5odG1s
IC0gZGlkRmluaXNoTG9hZGluZwogZnJhbWUgIjIiIC0gZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9y
RnJhbWUKIGZyYW1lICIyIiAtIHdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RUb1VSTDogaHR0cDov
LzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtcmVzdWx0
LnBocCAKIGZyYW1lICIyIiAtIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lCiBmcmFtZSAi
MiIgLSBkaWRGaW5pc2hMb2FkRm9yRnJhbWUKLWh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5n
L3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLWZvcm0uaHRtbCAtIGRpZEZpbmlzaExvYWRpbmcK
IGZyYW1lICIyIiAtIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUKIGh0dHA6Ly8xMjcu
MC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLXJlc3VsdC5waHAg
LSB3aWxsU2VuZFJlcXVlc3QgPE5TVVJMUmVxdWVzdCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAw
L2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtcmVzdWx0LnBocCwgbWFpbiBkb2N1
bWVudCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVkaXJlY3QtbWV0aG9kcy5o
dG1sLCBodHRwIG1ldGhvZCBQT1NUPiByZWRpcmVjdFJlc3BvbnNlIChudWxsKQogaHR0cDovLzEy
Ny4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtcmVzdWx0LnBo
cCAtIHdpbGxTZW5kUmVxdWVzdCA8TlNVUkxSZXF1ZXN0IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgw
MDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1yZXN1bHQucGhwP3JlZGlyZWN0
ZWQ9dHJ1ZSwgbWFpbiBkb2N1bWVudCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcv
cmVkaXJlY3QtbWV0aG9kcy5odG1sLCBodHRwIG1ldGhvZCBHRVQ+IHJlZGlyZWN0UmVzcG9uc2Ug
PE5TVVJMUmVzcG9uc2UgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3Jl
ZGlyZWN0LW1ldGhvZHMtcmVzdWx0LnBocCwgaHR0cCBzdGF0dXMgY29kZSAzMDM+CkBAIC05Niwx
MSArOTYsMTEgQEAKIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRp
cmVjdC1tZXRob2RzLWZvcm0uaHRtbCAtIGRpZFJlY2VpdmVSZXNwb25zZSA8TlNVUkxSZXNwb25z
ZSBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9k
cy1mb3JtLmh0bWwsIGh0dHAgc3RhdHVzIGNvZGUgMjAwPgogZnJhbWUgIjMiIC0gZGlkQ2FuY2Vs
Q2xpZW50UmVkaXJlY3RGb3JGcmFtZQogZnJhbWUgIjMiIC0gZGlkQ29tbWl0TG9hZEZvckZyYW1l
CitodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9k
cy1mb3JtLmh0bWwgLSBkaWRGaW5pc2hMb2FkaW5nCiBmcmFtZSAiMyIgLSBkaWRGaW5pc2hEb2N1
bWVudExvYWRGb3JGcmFtZQogZnJhbWUgIjMiIC0gd2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdFRv
VVJMOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0
aG9kcy1yZXN1bHQucGhwIAogZnJhbWUgIjMiIC0gZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJh
bWUKIGZyYW1lICIzIiAtIGRpZEZpbmlzaExvYWRGb3JGcmFtZQotaHR0cDovLzEyNy4wLjAuMTo4
MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtZm9ybS5odG1sIC0gZGlkRmlu
aXNoTG9hZGluZwogZnJhbWUgIjMiIC0gZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZQog
aHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMt
cmVzdWx0LnBocCAtIHdpbGxTZW5kUmVxdWVzdCA8TlNVUkxSZXF1ZXN0IFVSTCBodHRwOi8vMTI3
LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1yZXN1bHQucGhw
LCBtYWluIGRvY3VtZW50IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZWRpcmVj
dC1tZXRob2RzLmh0bWwsIGh0dHAgbWV0aG9kIFBPU1Q+IHJlZGlyZWN0UmVzcG9uc2UgKG51bGwp
CiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9k
cy1yZXN1bHQucGhwIC0gd2lsbFNlbmRSZXF1ZXN0IDxOU1VSTFJlcXVlc3QgVVJMIGh0dHA6Ly8x
MjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLXJlc3VsdC5w
aHA/cmVkaXJlY3RlZD10cnVlLCBtYWluIGRvY3VtZW50IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgw
MDAvbG9hZGluZy9yZWRpcmVjdC1tZXRob2RzLmh0bWwsIGh0dHAgbWV0aG9kIFBPU1Q+IHJlZGly
ZWN0UmVzcG9uc2UgPE5TVVJMUmVzcG9uc2UgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcv
cmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtcmVzdWx0LnBocCwgaHR0cCBzdGF0dXMgY29kZSAz
MDc+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL2NhY2hlZC1tYWluLXJlc291
cmNlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9jYWNo
ZWQtbWFpbi1yZXNvdXJjZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9jYWNoZS9jYWNoZWQtbWFpbi1yZXNvdXJjZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDI0IEBACis8aHRtbD4KKzxib2R5IG9ubG9hZD0ic2V0VGltZW91dChyZW1vdmVBbmRSZWxv
YWQsIDApOyI+Cis8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2PgorPHNjcmlwdD4KK2lmICh3aW5kb3cu
dGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5u
ZXIud2FpdFVudGlsRG9uZSgpOworfQorCitmdW5jdGlvbiByZW1vdmVBbmRSZWxvYWQoKQorewor
ICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlm
cmFtZSIpKTsKKyAgICB2YXIgbmV3SWZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZy
YW1lIik7CisgICAgbmV3SWZyYW1lLnNyYyA9ICJyZXNvdXJjZXMvY2FjaGVhYmxlLWlmcmFtZS5w
aHAiOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobmV3SWZyYW1lKTsKKyAgICB2YXIg
ZnJvbUNhY2hlID0gaW50ZXJuYWxzLmlzTG9hZGluZ0Zyb21NZW1vcnlDYWNoZShuZXdJZnJhbWUu
c3JjKTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuYXBwZW5kQ2hpbGQo
ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZnJvbUNhY2hlID8gIlBBU1MiIDogIkZBSUwiKSk7Cisg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKK30KKzwvc2NyaXB0PgorPGlmcmFtZSBpZD0iaWZyYW1lIiBzcmM9InJlc291cmNlcy9jYWNo
ZWFibGUtaWZyYW1lLnBocCI+PC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3Jlc291cmNlcy9jYWNoZWFibGUtaWZyYW1lLnBocAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3Jlc291cmNlcy9jYWNo
ZWFibGUtaWZyYW1lLnBocAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
Y2FjaGUvcmVzb3VyY2VzL2NhY2hlYWJsZS1pZnJhbWUucGhwCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDExIEBACis8P3BocAorcmVxdWlyZV9vbmNlICcuLi8uLi9yZXNvdXJjZXMvcG9ydGFiaWxp
dHlMYXllci5waHAnOworCiskbWF4X2FnZSA9IDEyICogMzEgKiAyNCAqIDYwICogNjA7IC8vb25l
IHllYXIKKyRleHBpcmVzID0gZ21kYXRlKERBVEVfUkZDMTEyMywgdGltZSgpICsgJG1heF9hZ2Up
OworCitoZWFkZXIoJ0NhY2hlLUNvbnRyb2w6IHB1YmxpYywgbWF4LWFnZT0nIC4gJG1heF9hZ2Up
OworaGVhZGVyKCdFeHBpcmVzOiAnIC4gJGV4cGlyZXMpOworaGVhZGVyKCdDb250ZW50LVR5cGU6
IHRleHQvaHRtbCcpOworZXhpdCgpOworPz4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
Y2FjaGUvY2FjaGVkLW1haW4tcmVzb3VyY2UtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvY2FjaGVkLW1haW4tcmVzb3VyY2UtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9jYWNoZWQt
bWFpbi1yZXNvdXJjZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMiBAQAor
UEFTUworIApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2Ut
aGFyLXBhZ2VzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9yZXNvdXJjZS1oYXItcGFnZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAx
NDA3NDMpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZS1oYXIt
cGFnZXMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNSBAQAogVGVzdHMg
Y29udmVyc2lvbiBvZiBJbnNwZWN0b3IncyByZXNvdXJjZSByZXByZXNlbnRhdGlvbiBpbnRvIEhB
UiBmb3JtYXQuCiAKLVBhZ2UgcmVsb2FkZWQuCiB7CiAgICAgMCA6IHsKICAgICAgICAgaWQgOiA8
c3RyaW5nPgpAQCAtMjgsNCArMjcsNSBAQAogcGFnZTogcGFnZV8xIHVybDogaHR0cDovLzEyNy4w
LjAuMTo4MDAwL2luc3BlY3Rvci9yZXNvdXJjZXMvaGFyLXBhZ2VzLW5hdmlnYXRpb24tdGFyZ2V0
Lmh0bWwKIHBhZ2U6IHBhZ2VfMSB1cmw6IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3Iv
cmVzb3VyY2VzL3NvdXJjZTEuanMKIHBhZ2U6IHBhZ2VfMSB1cmw6IGh0dHA6Ly8xMjcuMC4wLjE6
ODAwMC9yZXNvdXJjZXMvcmVkaXJlY3QucGhwP3VybD0vaW5zcGVjdG9yL3Jlc291cmNlcy9oYXIt
cGFnZXMtbmF2aWdhdGlvbi10YXJnZXQuaHRtbAorUGFnZSByZWxvYWRlZC4KIApJbmRleDogTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCShyZXZpc2lv
biAxNDA3NDMpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRp
b25zCSh3b3JraW5nIGNvcHkpCkBAIC00MzA0LDYgKzQzMDQsOSBAQAogd2Via2l0Lm9yZy9iLzEw
NzU3OSBbIERlYnVnIF0gbWVkaWEvdHJhY2svdHJhY2stY3NzLW1hdGNoaW5nLmh0bWwgWyBDcmFz
aCBdCiB3ZWJraXQub3JnL2IvMTA3NTc5IFsgRGVidWcgXSBtZWRpYS90cmFjay90cmFjay1jc3Mt
cHJvcGVydHktd2hpdGVsaXN0Lmh0bWwgWyBDcmFzaCBdCiAKK3dlYmtpdC5vcmcvYi8xMDc5NjIg
aHR0cC90ZXN0cy9taXNjL2Zhdmljb24tbG9hZHMtd2l0aC1pbWFnZXMtZGlzYWJsZWQuaHRtbCBb
IEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzEwNzk2MiBodHRwL3Rlc3RzL2xvYWRpbmcvcmVkaXJl
Y3QtbWV0aG9kcy5odG1sIFsgRmFpbHVyZSBdCisKICMgTmVlZHMgcmViYXNlbGluZXMgYWZ5ZXIg
MTA3NzcxCiB3ZWJraXQub3JnL2IvMTA3NzcxIGNzczMvem9vbS1jb29yZHMueGh0bWwgWyBGYWls
dXJlIF0KIHdlYmtpdC5vcmcvYi8xMDc3NzEgcGxhdGZvcm0vY2hyb21pdW0tbGludXgvc3ZnL3Rl
eHQvdGV4dC13aXRoLWdlb21ldHJpYy1wcmVjaXNpb24uc3ZnIFsgRmFpbHVyZSBdCkluZGV4OiBT
b3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93
aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiAxNDA4NTApCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMiBAQAorMjAxMy0wMS0yNSAgTmF0ZSBD
aGFwaW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEVuYWJsZSByZXVzZSBvZiBj
YWNoZWQgbWFpbiByZXNvdXJjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwNTY2NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogV2ViS2l0LnZjcHJvai9XZWJLaXRFeHBvcnRzLmRlZi5pbjogRXhwb3Nl
IHNvbWUgTWVtb3J5Q2FjaGUgc3ltYm9scyBmb3IgdXNlIGluIEludGVybmFscy4KKwogMjAxMy0w
MS0yNCAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgogCiAgICAgICAg
IE9iamVjdGl2ZS1DIEFQSTogUmVuYW1lIEpTVmFsdWUuaC9BUElKU1ZhbHVlLmggdG8gSlNDSlNW
YWx1ZS5oL0pTVmFsdWUuaApJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9X
ZWJLaXRFeHBvcnRzLmRlZi5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJL
aXQudmNwcm9qL1dlYktpdEV4cG9ydHMuZGVmLmluCShyZXZpc2lvbiAxNDA3NDMpCisrKyBTb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdEV4cG9ydHMuZGVmLmluCSh3b3JraW5n
IGNvcHkpCkBAIC01NjAsNiArNTYwLDcgQEAKICAgICAgICAgP2FkZFNsb3dDYXNlQEF0b21pY1N0
cmluZ0BXVEZAQENBP0FWPyRQYXNzUmVmUHRyQFZTdHJpbmdJbXBsQFdURkBAQDJAUEFWU3RyaW5n
SW1wbEAyQEBaCiAgICAgICAgID9jYWNoZURPTVN0cnVjdHVyZUBXZWJDb3JlQEBZQVBBVlN0cnVj
dHVyZUBKU0NAQFBBVkpTRE9NR2xvYmFsT2JqZWN0QDFAUEFWMjNAUEJVQ2xhc3NJbmZvQDNAQFoK
ICAgICAgICAgP2NoaWxkSXRlbVdpdGhUYXJnZXRASGlzdG9yeUl0ZW1AV2ViQ29yZUBAUUJFUEFW
MTJAQUJWU3RyaW5nQFdURkBAQFoKKyAgICAgICAgP2NvbXBsZXRlVVJMQERvY3VtZW50QFdlYkNv
cmVAQFFCRT9BVktVUkxAMkBBQlZTdHJpbmdAV1RGQEBAWgogICAgICAgICA/Y3JlYXRlQFJhbmdl
QFdlYkNvcmVAQFNBP0FWPyRQYXNzUmVmUHRyQFZSYW5nZUBXZWJDb3JlQEBAV1RGQEBWPyRQYXNz
UmVmUHRyQFZEb2N1bWVudEBXZWJDb3JlQEBANEBWPyRQYXNzUmVmUHRyQFZOb2RlQFdlYkNvcmVA
QEA0QEgxSEBaCiAgICAgICAgID9jcmVhdGVAU2VyaWFsaXplZFNjcmlwdFZhbHVlQFdlYkNvcmVA
QFNBP0FWPyRQYXNzUmVmUHRyQFZTZXJpYWxpemVkU2NyaXB0VmFsdWVAV2ViQ29yZUBAQFdURkBA
QUJWU3RyaW5nQDRAQFoKICAgICAgICAgP2NyZWF0ZUBTZXJpYWxpemVkU2NyaXB0VmFsdWVAV2Vi
Q29yZUBAU0E/QVY/JFBhc3NSZWZQdHJAVlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUBXZWJDb3JlQEBA
V1RGQEBQQVZFeGVjU3RhdGVASlNDQEBWSlNWYWx1ZUA2QFBBVj8kVmVjdG9yQFY/JFJlZlB0ckBW
TWVzc2FnZVBvcnRAV2ViQ29yZUBAQFdURkBAJDAwQDRAUEFWPyRWZWN0b3JAVj8kUmVmUHRyQFZB
cnJheUJ1ZmZlckBXVEZAQEBXVEZAQCQwMEA0QFc0U2VyaWFsaXphdGlvbkVycm9yTW9kZUAyQEBa
CkBAIC0xMzg4LDYgKzEzODksNyBAQAogICAgICAgICA/bGFzdENoYW5nZVdhc1VzZXJFZGl0QEhU
TUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50QFdlYkNvcmVAQFFCRV9OWFoKICAgICAgICAgP21haW5U
aHJlYWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0QFBhZ2VAV2ViQ29yZUBAUUFFP0FWU3RyaW5nQFdU
RkBAWFoKICAgICAgICAgP21hcmtlcnNGb3JARG9jdW1lbnRNYXJrZXJDb250cm9sbGVyQFdlYkNv
cmVAQFFBRT9BVj8kVmVjdG9yQFBBVkRvY3VtZW50TWFya2VyQFdlYkNvcmVAQCQwQUBAV1RGQEBQ
QVZOb2RlQDJAVk1hcmtlclR5cGVzQERvY3VtZW50TWFya2VyQDJAQFoKKyAgICAgICAgP21lbW9y
eUNhY2hlQFdlYkNvcmVAQFlBUEFWTWVtb3J5Q2FjaGVAMUBYWgogICAgICAgICA/bmV4dFNpYmxp
bmdAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/Zmly
c3RDaGlsZEBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXJAV2ViQ29yZUBAUUFFWFhaCiAgICAgICAg
ID9sYXN0Q2hpbGRAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhYWgpAQCAt
MTQwNyw2ICsxNDA5LDcgQEAKICAgICAgICAgP3JhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoQFRl
eHRJdGVyYXRvckBXZWJDb3JlQEBTQT9BVj8kUGFzc1JlZlB0ckBWUmFuZ2VAV2ViQ29yZUBAQFdU
RkBAUEFWQ29udGFpbmVyTm9kZUAyQEhIX05AWgogICAgICAgICA/cmVtb3ZlQFN0cmluZ0BXVEZA
QFFBRVhJSEBaCiAgICAgICAgID9yZW1vdmVkTGFzdFJlZkBOb2RlQFdlYkNvcmVAQEFBRVhYWgor
ICAgICAgICA/cmVzb3VyY2VGb3JVUkxATWVtb3J5Q2FjaGVAV2ViQ29yZUBAUUFFUEFWQ2FjaGVk
UmVzb3VyY2VAMkBBQlZLVVJMQDJAQFoKICAgICAgICAgP3JldmVyc2VGaW5kQFN0cmluZ0ltcGxA
V1RGQEBRQUVJX1dJQFoKICAgICAgICAgP3NhdmVEb2N1bWVudEFuZFNjcm9sbFN0YXRlQEhpc3Rv
cnlDb250cm9sbGVyQFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEBKU0RPTUdsb2JhbE9iamVjdEBXZWJDb3JlQEBRQkVQQVZTY3JpcHRFeGVjdXRpb25Db250
ZXh0QDJAWFoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNp
b24gMTQwNzQzKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjg5Niw2ICsyODk2LDEwIEBACiAgICAgaWYgKCFyZXNvdXJjZS0+c2hv
dWxkU2VuZFJlc291cmNlTG9hZENhbGxiYWNrcygpIHx8IG1fZG9jdW1lbnRMb2FkZXItPmhhdmVU
b2xkQ2xpZW50QWJvdXRMb2FkKHJlc291cmNlLT51cmwoKSkpCiAgICAgICAgIHJldHVybjsKIAor
ICAgIC8vIE1haW4gcmVzb3VyY2UgZGVsZWdhdGUgbWVzc2FnZXMgYXJlIHN5bnRoZXNpemVkIGlu
IE1haW5SZXNvdXJjZUxvYWRlciwgc28gd2UgbXVzdCBub3Qgc2VuZCB0aGVtIGhlcmUuCisgICAg
aWYgKHJlc291cmNlLT50eXBlKCkgPT0gQ2FjaGVkUmVzb3VyY2U6Ok1haW5SZXNvdXJjZSkKKyAg
ICAgICAgcmV0dXJuOworCiAgICAgaWYgKCFwYWdlLT5hcmVNZW1vcnlDYWNoZUNsaWVudENhbGxz
RW5hYmxlZCgpKSB7CiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTG9hZFJl
c291cmNlRnJvbU1lbW9yeUNhY2hlKHBhZ2UsIG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIHJlc291
cmNlKTsKICAgICAgICAgbV9kb2N1bWVudExvYWRlci0+cmVjb3JkTWVtb3J5Q2FjaGVMb2FkRm9y
RnV0dXJlQ2xpZW50Tm90aWZpY2F0aW9uKHJlc291cmNlLT51cmwoKSk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAJKHJldmlzaW9uIDE0
MDc0MykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ5Nyw4ICs0OTcsOCBAQAogICAgIGlmICghaGFzQ2xpZW50cygp
ICYmIGluQ2FjaGUoKSkKICAgICAgICAgbWVtb3J5Q2FjaGUoKS0+YWRkVG9MaXZlUmVzb3VyY2Vz
U2l6ZSh0aGlzKTsKIAotICAgIGlmIChtX3R5cGUgPT0gUmF3UmVzb3VyY2UgJiYgIW1fcmVzcG9u
c2UuaXNOdWxsKCkgJiYgIW1fcHJveHlSZXNvdXJjZSkgewotICAgICAgICAvLyBDZXJ0YWluIHJl
c291cmNlcyAoZXNwZWNpYWxseSBYSFJzKSBkbyBjcmF6eSB0aGluZ3MgaWYgYW4gYXN5bmNocm9u
b3VzIGxvYWQgcmV0dXJucworICAgIGlmICgobV90eXBlID09IFJhd1Jlc291cmNlIHx8IG1fdHlw
ZSA9PSBNYWluUmVzb3VyY2UpICYmICFtX3Jlc3BvbnNlLmlzTnVsbCgpICYmICFtX3Byb3h5UmVz
b3VyY2UpIHsKKyAgICAgICAgLy8gQ2VydGFpbiByZXNvdXJjZXMgKGVzcGVjaWFsbHkgWEhScyBh
bmQgbWFpbiByZXNvdXJjZXMpIGRvIGNyYXp5IHRoaW5ncyBpZiBhbiBhc3luY2hyb25vdXMgbG9h
ZCByZXR1cm5zCiAgICAgICAgIC8vIHN5bmNocm9ub3VzbHkgKGUuZy4sIHNjcmlwdHMgbWF5IG5v
dCBoYXZlIHNldCBhbGwgdGhlIHN0YXRlIHRoZXkgbmVlZCB0byBoYW5kbGUgdGhlIGxvYWQpLgog
ICAgICAgICAvLyBUaGVyZWZvcmUsIHJhdGhlciB0aGFuIGltbWVkaWF0ZWx5IHNlbmRpbmcgY2Fs
bGJhY2tzIG9uIGEgY2FjaGUgaGl0IGxpa2Ugb3RoZXIgQ2FjaGVkUmVzb3VyY2VzLAogICAgICAg
ICAvLyB3ZSBzY2hlZHVsZSB0aGUgY2FsbGJhY2tzIGFuZCBlbnN1cmUgd2UgbmV2ZXIgZmluaXNo
IHN5bmNocm9ub3VzbHkuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmF3UmVzb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAJKHJldmlzaW9uIDE0MDc0MykKKysrIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTgwLDE0ICs4MCwyNSBAQAogCiB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpkaWRBZGRDbGllbnQo
Q2FjaGVkUmVzb3VyY2VDbGllbnQqIGMpCiB7Ci0gICAgaWYgKG1fcmVzcG9uc2UuaXNOdWxsKCkg
fHwgIWhhc0NsaWVudChjKSkKKyAgICBpZiAoIWhhc0NsaWVudChjKSkKICAgICAgICAgcmV0dXJu
OwogICAgIC8vIFRoZSBjYWxscyB0byB0aGUgY2xpZW50IGNhbiByZXN1bHQgaW4gZXZlbnRzIHJ1
bm5pbmcsIHBvdGVudGlhbGx5IGNhdXNpbmcKICAgICAvLyB0aGlzIHJlc291cmNlIHRvIGJlIGV2
aWN0ZWQgZnJvbSB0aGUgY2FjaGUgYW5kIGFsbCBjbGllbnRzIHRvIGJlIHJlbW92ZWQsCiAgICAg
Ly8gc28gYSBwcm90ZWN0b3IgaXMgbmVjZXNzYXJ5LgogICAgIENhY2hlZFJlc291cmNlSGFuZGxl
PENhY2hlZFJhd1Jlc291cmNlPiBwcm90ZWN0KHRoaXMpOwogICAgIENhY2hlZFJhd1Jlc291cmNl
Q2xpZW50KiBjbGllbnQgPSBzdGF0aWNfY2FzdDxDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCo+KGMp
OwotICAgIGNsaWVudC0+cmVzcG9uc2VSZWNlaXZlZCh0aGlzLCBtX3Jlc3BvbnNlKTsKKyAgICBz
aXplX3QgcmVkaXJlY3RDb3VudCA9IG1fcmVkaXJlY3RDaGFpbi5zaXplKCk7CisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCByZWRpcmVjdENvdW50OyBpKyspIHsKKyAgICAgICAgUmVkaXJlY3RQ
YWlyIHJlZGlyZWN0ID0gbV9yZWRpcmVjdENoYWluW2ldOworICAgICAgICBSZXNvdXJjZVJlcXVl
c3QgcmVxdWVzdChyZWRpcmVjdC5tX3JlcXVlc3QpOworICAgICAgICBjbGllbnQtPnJlZGlyZWN0
UmVjZWl2ZWQodGhpcywgcmVxdWVzdCwgcmVkaXJlY3QubV9yZWRpcmVjdFJlc3BvbnNlKTsKKyAg
ICAgICAgaWYgKCFoYXNDbGllbnQoYykpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorICAg
IEFTU0VSVChyZWRpcmVjdENvdW50ID09IG1fcmVkaXJlY3RDaGFpbi5zaXplKCkpOworCisgICAg
aWYgKCFtX3Jlc3BvbnNlLmlzTnVsbCgpKQorICAgICAgICBjbGllbnQtPnJlc3BvbnNlUmVjZWl2
ZWQodGhpcywgbV9yZXNwb25zZSk7CiAgICAgaWYgKCFoYXNDbGllbnQoYykpCiAgICAgICAgIHJl
dHVybjsKICAgICBpZiAobV9kYXRhKQpAQCAtMTEwLDYgKzEyMSw3IEBACiAgICAgICAgIENhY2hl
ZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZFJhd1Jlc291cmNlQ2xpZW50PiB3KG1fY2xpZW50
cyk7CiAgICAgICAgIHdoaWxlIChDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCogYyA9IHcubmV4dCgp
KQogICAgICAgICAgICAgYy0+cmVkaXJlY3RSZWNlaXZlZCh0aGlzLCByZXF1ZXN0LCByZXNwb25z
ZSk7CisgICAgICAgIG1fcmVkaXJlY3RDaGFpbi5hcHBlbmQoUmVkaXJlY3RQYWlyKHJlcXVlc3Qs
IHJlc3BvbnNlKSk7CiAgICAgfQogICAgIENhY2hlZFJlc291cmNlOjp3aWxsU2VuZFJlcXVlc3Qo
cmVxdWVzdCwgcmVzcG9uc2UpOwogfQpAQCAtMTk0LDYgKzIwNiwxMiBAQAogICAgICAgICBpZiAo
IXNob3VsZElnbm9yZUhlYWRlckZvckNhY2hlUmV1c2UoaGVhZGVyTmFtZSkgJiYgaS0+dmFsdWUg
IT0gbmV3SGVhZGVycy5nZXQoaGVhZGVyTmFtZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQorCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3JlZGlyZWN0Q2hhaW4uc2l6
ZSgpOyBpKyspIHsKKyAgICAgICAgaWYgKG1fcmVkaXJlY3RDaGFpbltpXS5tX3JlZGlyZWN0UmVz
cG9uc2UuY2FjaGVDb250cm9sQ29udGFpbnNOb1N0b3JlKCkpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAkocmV2
aXNpb24gMTQwNzQzKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDc3LDYgKzQ3NywxOCBAQAogICAgICAg
ICB9CiAgICAgfQogCisjaWYgUExBVEZPUk0oQ0hST01JVU0pCisgICAgLy8gRklYTUU6IFRlbXBv
cmFyaWx5IGxlYXZlIG1haW4gcmVzb3VyY2UgY2FjaGluZyBkaXNhYmxlZCBmb3IgY2hyb21pdW0s
IHNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3OTYyCisgICAg
Ly8gRW5zdXJlIG1haW4gcmVzb3VyY2VzIGFyZW4ndCBwcmVsb2FkZWQsIGFuZCBvdGhlciBtYWlu
IHJlc291cmNlIGxvYWRzIGFyZSByZW1vdmVkIGZyb20gY2FjaGUgdG8gcHJldmVudCByZXVzZS4K
KyAgICBpZiAodHlwZSA9PSBDYWNoZWRSZXNvdXJjZTo6TWFpblJlc291cmNlKSB7CisgICAgICAg
IEFTU0VSVChwb2xpY3kgIT0gVXNlKTsKKyAgICAgICAgQVNTRVJUKHBvbGljeSAhPSBSZXZhbGlk
YXRlKTsKKyAgICAgICAgbWVtb3J5Q2FjaGUoKS0+cmVtb3ZlKHJlc291cmNlLmdldCgpKTsKKyAg
ICAgICAgaWYgKHJlcXVlc3QuZm9yUHJlbG9hZCgpKQorICAgICAgICAgICAgcmV0dXJuIDA7Cisg
ICAgfQorI2VuZGlmCisKICAgICBpZiAoIXJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCku
cHJvdG9jb2xJc0RhdGEoKSkKICAgICAgICAgbV92YWxpZGF0ZWRVUkxzLmFkZChyZXF1ZXN0LnJl
c291cmNlUmVxdWVzdCgpLnVybCgpKTsKIApAQCAtNTQzLDEyICs1NTUsOSBAQAogICAgICAgICBy
ZXR1cm4gUmVsb2FkOwogICAgIH0KIAotICAgIGlmIChleGlzdGluZ1Jlc291cmNlLT50eXBlKCkg
PT0gQ2FjaGVkUmVzb3VyY2U6Ok1haW5SZXNvdXJjZSkKKyAgICBpZiAoIWV4aXN0aW5nUmVzb3Vy
Y2UtPmNhblJldXNlKHJlcXVlc3QpKQogICAgICAgICByZXR1cm4gUmVsb2FkOwogCi0gICAgaWYg
KGV4aXN0aW5nUmVzb3VyY2UtPnR5cGUoKSA9PSBDYWNoZWRSZXNvdXJjZTo6UmF3UmVzb3VyY2Ug
JiYgIXN0YXRpY19jYXN0PENhY2hlZFJhd1Jlc291cmNlKj4oZXhpc3RpbmdSZXNvdXJjZSktPmNh
blJldXNlKHJlcXVlc3QpKQotICAgICAgICByZXR1cm4gUmVsb2FkOwotCiAgICAgLy8gQ2VydGFp
biByZXF1ZXN0cyAoZS5nLiwgWEhScykgbWlnaHQgaGF2ZSBtYW51YWxseSBzZXQgaGVhZGVycyB0
aGF0IHJlcXVpcmUgcmV2YWxpZGF0aW9uLgogICAgIC8vIEZJWE1FOiBJbiB0aGVvcnksIHRoaXMg
c2hvdWxkIGJlIGEgUmV2YWxpZGF0ZSBjYXNlLiBJbiBwcmFjdGljZSwgdGhlIE1lbW9yeUNhY2hl
IHJldmFsaWRhdGlvbiBwYXRoIGFzc3VtZXMgYSB3aG9sZSBidW5jaAogICAgIC8vIG9mIHRoaW5n
cyBhYm91dCBob3cgcmV2YWxpZGF0aW9uIHdvcmtzIHRoYXQgbWFudWFsIGhlYWRlcnMgdmlvbGF0
ZSwgc28gcHVudCB0byBSZWxvYWQgaW5zdGVhZC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCShyZXZpc2lvbiAxNDA3NDMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAt
MjU4LDYgKzI1OCw4IEBACiAKICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVt
b3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCisgICAgdmlydHVhbCBib29sIGNhblJldXNlKGNvbnN0
IFJlc291cmNlUmVxdWVzdCYpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKwogcHJvdGVjdGVkOgog
ICAgIHZpcnR1YWwgdm9pZCBjaGVja05vdGlmeSgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaAkocmV2aXNpb24gMTQwNzQzKQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAKICAgICBTdWJyZXNvdXJjZUxvYWRlciogbG9hZGVy
KCkgY29uc3Q7CiAgICAgdm9pZCBjbGVhcigpOwogCi0gICAgYm9vbCBjYW5SZXVzZShjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgY2FuUmV1c2UoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JikgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVtb3J5
VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0IE9WRVJSSURFOwogCkBAIC02Nyw2ICs2Nywy
MCBAQAogI2VuZGlmCiAKICAgICB1bnNpZ25lZCBsb25nIG1faWRlbnRpZmllcjsKKworICAgIHN0
cnVjdCBSZWRpcmVjdFBhaXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgZXhwbGljaXQgUmVkaXJl
Y3RQYWlyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVkaXJlY3RSZXNwb25zZSkKKyAgICAgICAgICAgIDogbV9yZXF1ZXN0KHJlcXVlc3Qp
CisgICAgICAgICAgICAsIG1fcmVkaXJlY3RSZXNwb25zZShyZWRpcmVjdFJlc3BvbnNlKQorICAg
ICAgICB7CisgICAgICAgIH0KKworICAgICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QgbV9yZXF1
ZXN0OworICAgICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlIG1fcmVkaXJlY3RSZXNwb25zZTsK
KyAgICB9OworCisgICAgVmVjdG9yPFJlZGlyZWN0UGFpcj4gbV9yZWRpcmVjdENoYWluOwogfTsK
IAogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5oCShy
ZXZpc2lvbiAxNDA3NDMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWFpblJlc291cmNlTG9h
ZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyOCw3ICsxMjgsNyBAQAogICAgIGJvb2wgbV9sb2Fk
aW5nTXVsdGlwYXJ0Q29udGVudDsKICAgICBib29sIG1fd2FpdGluZ0ZvckNvbnRlbnRQb2xpY3k7
CiAgICAgZG91YmxlIG1fdGltZU9mTGFzdERhdGFSZWNlaXZlZDsKLSAgICB1bnNpZ25lZCBsb25n
IG1fc3Vic3RpdHV0ZURhdGFMb2FkSWRlbnRpZmllcjsKKyAgICB1bnNpZ25lZCBsb25nIG1faWRl
bnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXI7CiAKICNpZiBVU0UoQ09OVEVOVF9G
SUxURVJJTkcpCiAgICAgV2ViRmlsdGVyRXZhbHVhdG9yICptX2ZpbHRlcjsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAxNDA3
NDMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5o
IgogI2luY2x1ZGUgIkhpc3RvcnlJdGVtLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmgiCisjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAj
aW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VCdWZmZXIuaCIK
QEAgLTczLDcgKzc0LDcgQEAKICAgICAsIG1fbG9hZGluZ011bHRpcGFydENvbnRlbnQoZmFsc2Up
CiAgICAgLCBtX3dhaXRpbmdGb3JDb250ZW50UG9saWN5KGZhbHNlKQogICAgICwgbV90aW1lT2ZM
YXN0RGF0YVJlY2VpdmVkKDAuMCkKLSAgICAsIG1fc3Vic3RpdHV0ZURhdGFMb2FkSWRlbnRpZmll
cigwKQorICAgICwgbV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlcigwKQog
I2lmIFVTRShDT05URU5UX0ZJTFRFUklORykKICAgICAsIG1fZmlsdGVyKDApCiAjZW5kaWYKQEAg
LTk5LDkgKzEwMCw5IEBACiAgICAgUmVmUHRyPE1haW5SZXNvdXJjZUxvYWRlcj4gcHJvdGVjdCh0
aGlzKTsKICAgICBSZWZQdHI8RnJhbWU+IHByb3RlY3RGcmFtZShtX2RvY3VtZW50TG9hZGVyLT5m
cmFtZSgpKTsKIAotICAgIGlmIChtX3N1YnN0aXR1dGVEYXRhTG9hZElkZW50aWZpZXIpIHsKKyAg
ICBpZiAobV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlcikgewogICAgICAg
ICBBU1NFUlQoIWxvYWRlcigpKTsKLSAgICAgICAgZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCktPmRp
c3BhdGNoRGlkRmFpbExvYWRpbmcoZG9jdW1lbnRMb2FkZXIoKSwgbV9zdWJzdGl0dXRlRGF0YUxv
YWRJZGVudGlmaWVyLCBlcnJvcik7CisgICAgICAgIGZyYW1lTG9hZGVyKCktPmNsaWVudCgpLT5k
aXNwYXRjaERpZEZhaWxMb2FkaW5nKGRvY3VtZW50TG9hZGVyKCksIG1faWRlbnRpZmllckZvckxv
YWRXaXRob3V0UmVzb3VyY2VMb2FkZXIsIGVycm9yKTsKICAgICB9CiAKICAgICAvLyBJdCBpcyBp
bXBvcnRhbnQgdGhhdCB3ZSBjYWxsIERvY3VtZW50TG9hZGVyOjptYWluUmVjZWl2ZWRFcnJvciBi
ZWZvcmUgY2FsbGluZyAKQEAgLTI4Niw3ICsyODcsNyBAQAogICAgICAgICBBU1NFUlQoIW1fc3Vi
c3RpdHV0ZURhdGEuaXNWYWxpZCgpKTsKICAgICAgICAgZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGlj
YXRpb25DYWNoZUhvc3QoKS0+bWF5YmVMb2FkTWFpblJlc291cmNlRm9yUmVkaXJlY3QobmV3UmVx
dWVzdCwgbV9zdWJzdGl0dXRlRGF0YSk7CiAgICAgICAgIGlmIChtX3N1YnN0aXR1dGVEYXRhLmlz
VmFsaWQoKSkKLSAgICAgICAgICAgIG1fc3Vic3RpdHV0ZURhdGFMb2FkSWRlbnRpZmllciA9IGlk
ZW50aWZpZXIoKTsKKyAgICAgICAgICAgIG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3Vy
Y2VMb2FkZXIgPSBpZGVudGlmaWVyKCk7CiAgICAgfQogCiAgICAgLy8gRklYTUU6IElkZWFsbHkg
d2UnZCBzdG9wIHRoZSBJL08gdW50aWwgd2UgaGVhciBiYWNrIGZyb20gdGhlIG5hdmlnYXRpb24g
cG9saWN5IGRlbGVnYXRlCkBAIC0zOTIsNyArMzkzLDIxIEBACiB2b2lkIE1haW5SZXNvdXJjZUxv
YWRlcjo6cmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHIpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgbV9yZXNv
dXJjZSA9PSByZXNvdXJjZSk7Ci0gICAgaWYgKGRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9u
Q2FjaGVIb3N0KCktPm1heWJlTG9hZEZhbGxiYWNrRm9yTWFpblJlc3BvbnNlKHJlcXVlc3QoKSwg
cikpCisgICAgYm9vbCB3aWxsTG9hZEZhbGxiYWNrID0gZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGlj
YXRpb25DYWNoZUhvc3QoKS0+bWF5YmVMb2FkRmFsbGJhY2tGb3JNYWluUmVzcG9uc2UocmVxdWVz
dCgpLCByKTsKKworICAgIC8vIFRoZSBtZW1vcnkgY2FjaGUgZG9lc24ndCB1bmRlcnN0YW5kIHRo
ZSBhcHBsaWNhdGlvbiBjYWNoZSBvciBpdHMgY2FjaGluZyBydWxlcy4gU28gaWYgYSBtYWluIHJl
c291cmNlIGlzIHNlcnZlZAorICAgIC8vIGZyb20gdGhlIGFwcGxpY2F0aW9uIGNhY2hlLCBlbnN1
cmUgd2UgZG9uJ3Qgc2F2ZSB0aGUgcmVzdWx0IGZvciBmdXR1cmUgdXNlLgorICAgIGJvb2wgc2hv
dWxkUmVtb3ZlUmVzb3VyY2VGcm9tQ2FjaGUgPSB3aWxsTG9hZEZhbGxiYWNrOworI2lmIFBMQVRG
T1JNKENIUk9NSVVNKQorICAgIC8vIGNocm9taXVtJ3MgQXBwbGljYXRpb25DYWNoZUhvc3QgaW1w
bGVtZW50YXRpb24gYWx3YXlzIHJldHVybnMgdHJ1ZSBmb3IgbWF5YmVMb2FkRmFsbGJhY2tGb3JN
YWluUmVzcG9uc2UoKS4gSG93ZXZlciwgYWxsIHJlc3BvbnNlcyBsb2FkZWQKKyAgICAvLyBmcm9t
IGFwcGNhY2hlIHdpbGwgaGF2ZSBhIG5vbi16ZXJvIGFwcENhY2hlSUQoKS4KKyAgICBpZiAoci5h
cHBDYWNoZUlEKCkpCisgICAgICAgIHNob3VsZFJlbW92ZVJlc291cmNlRnJvbUNhY2hlID0gdHJ1
ZTsKKyNlbmRpZgorICAgIGlmIChzaG91bGRSZW1vdmVSZXNvdXJjZUZyb21DYWNoZSkKKyAgICAg
ICAgbWVtb3J5Q2FjaGUoKS0+cmVtb3ZlKG1fcmVzb3VyY2UuZ2V0KCkpOworCisgICAgaWYgKHdp
bGxMb2FkRmFsbGJhY2spCiAgICAgICAgIHJldHVybjsKIAogICAgIERFRklORV9TVEFUSUNfTE9D
QUwoQXRvbWljU3RyaW5nLCB4RnJhbWVPcHRpb25IZWFkZXIsICgieC1mcmFtZS1vcHRpb25zIiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwpAQCAtNTQwLDcgKzU1NSw3IEBA
CiAKICAgICBpZiAoIWxvYWRlcigpKSB7CiAgICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVy
KCktPmRpc3BhdGNoRGlkRmluaXNoTG9hZGluZyhkb2N1bWVudExvYWRlcigpLCBpZGVudGlmaWVy
KCksIGZpbmlzaFRpbWUpOwotICAgICAgICBtX3N1YnN0aXR1dGVEYXRhTG9hZElkZW50aWZpZXIg
PSAwOworICAgICAgICBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyID0g
MDsKICAgICB9CiAKICNpZiBVU0UoQ09OVEVOVF9GSUxURVJJTkcpCkBAIC01NjIsNiArNTc3LDEz
IEBACiAgICAgZG9jdW1lbnRMb2FkZXIoKS0+dGltaW5nKCktPnNldFJlc3BvbnNlRW5kKGZpbmlz
aFRpbWUgPyBmaW5pc2hUaW1lIDogKG1fdGltZU9mTGFzdERhdGFSZWNlaXZlZCA/IG1fdGltZU9m
TGFzdERhdGFSZWNlaXZlZCA6IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpKSk7CiAgICAg
ZG9jdW1lbnRMb2FkZXIoKS0+ZmluaXNoZWRMb2FkaW5nKCk7CiAKKyAgICAvLyBJZiB0aGUgZG9j
dW1lbnQgc3BlY2lmaWVkIGFuIGFwcGxpY2F0aW9uIGNhY2hlIG1hbmlmZXN0LCBpdCB2aW9sYXRl
cyB0aGUgYXV0aG9yJ3MgaW50ZW50IGlmIHdlIHN0b3JlIGl0IGluIHRoZSBtZW1vcnkgY2FjaGUK
KyAgICAvLyBhbmQgZGVueSB0aGUgYXBwY2FjaGUgdGhlIGNoYW5jZSB0byBpbnRlcmNlcHQgaXQg
aW4gdGhlIGZ1dHVyZSwgc28gcmVtb3ZlIGZyb20gdGhlIG1lbW9yeSBjYWNoZS4KKyAgICBpZiAo
RnJhbWUqIGZyYW1lID0gZG9jdW1lbnRMb2FkZXIoKS0+ZnJhbWUoKSkgeworICAgICAgICBpZiAo
bV9yZXNvdXJjZSAmJiBmcmFtZS0+ZG9jdW1lbnQoKS0+aGFzTWFuaWZlc3QoKSkKKyAgICAgICAg
ICAgIG1lbW9yeUNhY2hlKCktPnJlbW92ZShtX3Jlc291cmNlLmdldCgpKTsKKyAgICB9CisKICAg
ICBkbC0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS0+ZmluaXNoZWRMb2FkaW5nTWFpblJlc291cmNl
KCk7CiB9CiAKQEAgLTY3MSw5ICs2OTMsOSBAQAogICAgIGRvY3VtZW50TG9hZGVyKCktPmFwcGxp
Y2F0aW9uQ2FjaGVIb3N0KCktPm1heWJlTG9hZE1haW5SZXNvdXJjZShyZXF1ZXN0LCBtX3N1YnN0
aXR1dGVEYXRhKTsKIAogICAgIGlmIChtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSkgewotICAg
ICAgICBtX3N1YnN0aXR1dGVEYXRhTG9hZElkZW50aWZpZXIgPSBtX2RvY3VtZW50TG9hZGVyLT5m
cmFtZSgpLT5wYWdlKCktPnByb2dyZXNzKCktPmNyZWF0ZVVuaXF1ZUlkZW50aWZpZXIoKTsKLSAg
ICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS0+YXNzaWduSWRlbnRpZmllclRvSW5pdGlh
bFJlcXVlc3QobV9zdWJzdGl0dXRlRGF0YUxvYWRJZGVudGlmaWVyLCBkb2N1bWVudExvYWRlcigp
LCByZXF1ZXN0KTsKLSAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS0+ZGlzcGF0Y2hX
aWxsU2VuZFJlcXVlc3QoZG9jdW1lbnRMb2FkZXIoKSwgbV9zdWJzdGl0dXRlRGF0YUxvYWRJZGVu
dGlmaWVyLCByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlKCkpOworICAgICAgICBtX2lkZW50aWZp
ZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyID0gbV9kb2N1bWVudExvYWRlci0+ZnJhbWUo
KS0+cGFnZSgpLT5wcm9ncmVzcygpLT5jcmVhdGVVbmlxdWVJZGVudGlmaWVyKCk7CisgICAgICAg
IGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCktPmFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxSZXF1
ZXN0KG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIsIGRvY3VtZW50TG9h
ZGVyKCksIHJlcXVlc3QpOworICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLT5kaXNw
YXRjaFdpbGxTZW5kUmVxdWVzdChkb2N1bWVudExvYWRlcigpLCBtX2lkZW50aWZpZXJGb3JMb2Fk
V2l0aG91dFJlc291cmNlTG9hZGVyLCByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlKCkpOwogICAg
ICAgICBoYW5kbGVTdWJzdGl0dXRlRGF0YUxvYWRTb29uKHJlcXVlc3QpOwogICAgICAgICByZXR1
cm47CiAgICAgfQpAQCAtNjg2LDEzICs3MDgsMjAgQEAKICAgICAgICAgZG9jdW1lbnRMb2FkZXIo
KS0+c2V0UmVxdWVzdChSZXNvdXJjZVJlcXVlc3QoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CisgICAgaWYgKCFsb2FkZXIoKSkgeworICAgICAgICBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91
dFJlc291cmNlTG9hZGVyID0gbV9kb2N1bWVudExvYWRlci0+ZnJhbWUoKS0+cGFnZSgpLT5wcm9n
cmVzcygpLT5jcmVhdGVVbmlxdWVJZGVudGlmaWVyKCk7CisgICAgICAgIGZyYW1lTG9hZGVyKCkt
Pm5vdGlmaWVyKCktPmFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KG1faWRlbnRpZmll
ckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIsIGRvY3VtZW50TG9hZGVyKCksIHJlcXVlc3Qp
OworICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLT5kaXNwYXRjaFdpbGxTZW5kUmVx
dWVzdChkb2N1bWVudExvYWRlcigpLCBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNl
TG9hZGVyLCByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlKCkpOworICAgIH0KICAgICBtX3Jlc291
cmNlLT5hZGRDbGllbnQodGhpcyk7CiAKLSAgICAvLyBXZSBuZWVkIHRvIHdhaXQgdW50aWwgYWZ0
ZXIgcmVxdWVzdE1haW5SZXNvdXJjZSgpIGlzIGNhbGxlZCB0byBzZXRSZXF1ZXN0KCksIGJlY2F1
c2UgdGhlcmUgYXJlIGEgYnVuY2ggb2YgaGVhZGVycyBzZXQgd2hlbgotICAgIC8vIHRoZSB1bmRl
cmx5aW5nIFJlc291cmNlTG9hZGVyIGlzIGNyZWF0ZWQsIGFuZCBEb2N1bWVudExvYWRlcjo6bV9y
ZXF1ZXN0IG5lZWRzIHRvIGluY2x1ZGUgdGhvc2UuIEhvd2V2ZXIsIHRoZSBjYWNoZSB3aWxsCi0g
ICAgLy8gc3RyaXAgdGhlIGZyYWdtZW50IGlkZW50aWZpZXIgKHdoaWNoIERvY3VtZW50TG9hZGVy
OjptX3JlcXVlc3Qgc2hvdWxkIGFsc28gaW5jbHVkZSksIHNvIGFkZCB0aGF0IGJhY2sgaW4uCisg
ICAgLy8gQSBidW5jaCBvZiBoZWFkZXJzIGFyZSBzZXQgd2hlbiB0aGUgdW5kZXJseWluZyBSZXNv
dXJjZUxvYWRlciBpcyBjcmVhdGVkLCBhbmQgRG9jdW1lbnRMb2FkZXI6Om1fcmVxdWVzdCBuZWVk
cyB0byBpbmNsdWRlIHRob3NlLgogICAgIGlmIChsb2FkZXIoKSkKICAgICAgICAgcmVxdWVzdCA9
IGxvYWRlcigpLT5vcmlnaW5hbFJlcXVlc3QoKTsKKyAgICAvLyBJZiB0aGVyZSB3YXMgYSBmcmFn
bWVudCBpZGVudGlmaWVyIG9uIGluaXRpYWxSZXF1ZXN0LCB0aGUgY2FjaGUgd2lsbCBoYXZlIHN0
cmlwcGVkIGl0LiBEb2N1bWVudExvYWRlcjo6bV9yZXF1ZXN0IHNob3VsZCBpbmNsdWRlCisgICAg
Ly8gdGhlIGZyYWdtZW50IGlkZW50aWZpZXIsIHNvIGFkZCB0aGF0IGJhY2sgaW4uCisgICAgaWYg
KGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIoaW5pdGlhbFJlcXVlc3QudXJsKCksIHJl
cXVlc3QudXJsKCkpKQorICAgICAgICByZXF1ZXN0LnNldFVSTChpbml0aWFsUmVxdWVzdC51cmwo
KSk7CiAgICAgZG9jdW1lbnRMb2FkZXIoKS0+c2V0UmVxdWVzdChyZXF1ZXN0KTsKIH0KIApAQCAt
NzIwLDkgKzc0OSw5IEBACiAKIHVuc2lnbmVkIGxvbmcgTWFpblJlc291cmNlTG9hZGVyOjppZGVu
dGlmaWVyKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoIW1fc3Vic3RpdHV0ZURhdGFMb2FkSWRlbnRp
ZmllciB8fCAhbG9hZGVyKCkgfHwgIWxvYWRlcigpLT5pZGVudGlmaWVyKCkpOwotICAgIGlmICht
X3N1YnN0aXR1dGVEYXRhTG9hZElkZW50aWZpZXIpCi0gICAgICAgIHJldHVybiBtX3N1YnN0aXR1
dGVEYXRhTG9hZElkZW50aWZpZXI7CisgICAgQVNTRVJUKCFtX2lkZW50aWZpZXJGb3JMb2FkV2l0
aG91dFJlc291cmNlTG9hZGVyIHx8ICFsb2FkZXIoKSB8fCAhbG9hZGVyKCktPmlkZW50aWZpZXIo
KSk7CisgICAgaWYgKG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIpCisg
ICAgICAgIHJldHVybiBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyOwog
ICAgIGlmIChSZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2FkZXIgPSBsb2FkZXIoKSkKICAgICAg
ICAgcmV0dXJuIHJlc291cmNlTG9hZGVyLT5pZGVudGlmaWVyKCk7CiAgICAgcmV0dXJuIDA7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gMTQwNzQzKQorKysgU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTE0NSw2ICsxNDUsNyBAQAogX19a
TjdXZWJDb3JlMTFNZW1vcnlDYWNoZTEzZ2V0U3RhdGlzdGljc0V2CiBfX1pON1dlYkNvcmUxMU1l
bW9yeUNhY2hlMTNzZXRDYXBhY2l0aWVzRWpqagogX19aTjdXZWJDb3JlMTFNZW1vcnlDYWNoZTE0
ZXZpY3RSZXNvdXJjZXNFdgorX19aTjdXZWJDb3JlMTFNZW1vcnlDYWNoZTE0cmVzb3VyY2VGb3JV
UkxFUktOU180S1VSTEUKIF9fWk43V2ViQ29yZTExTWVtb3J5Q2FjaGUxOWdldE9yaWdpbnNXaXRo
Q2FjaGVFUk4zV1RGN0hhc2hTZXRJTlMxXzZSZWZQdHJJTlNfMTRTZWN1cml0eU9yaWdpbkVFRU5T
XzE4U2VjdXJpdHlPcmlnaW5IYXNoRU5TMV8xMEhhc2hUcmFpdHNJUzVfRUVFRQogX19aTjdXZWJD
b3JlMTFNZW1vcnlDYWNoZTI1cmVtb3ZlUmVzb3VyY2VzV2l0aE9yaWdpbkVQTlNfMTRTZWN1cml0
eU9yaWdpbkUKIF9fWk43V2ViQ29yZTExVVJMV2l0aERhdGFFUDZOU0RhdGFQNU5TVVJMCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgJKHJldmlzaW9uIDE0MDc0MykKKysrIFNvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgJKHdvcmtpbmcgY29weSkKQEAgLTcyLDYgKzcy
LDcgQEAKICAgICBTdHJpbmcgYWRkcmVzcyhOb2RlKik7CiAKICAgICBib29sIGlzUHJlbG9hZGVk
KGNvbnN0IFN0cmluZyYgdXJsKTsKKyAgICBib29sIGlzTG9hZGluZ0Zyb21NZW1vcnlDYWNoZShj
b25zdCBTdHJpbmcmIHVybCk7CiAKICAgICBzaXplX3QgbnVtYmVyT2ZTY29wZWRIVE1MU3R5bGVD
aGlsZHJlbihjb25zdCBOb2RlKiwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCShyZXZpc2lvbiAxNDA3NDMpCisrKyBTb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMw
LDcgQEAKIAogICAgIERPTVN0cmluZyBlbGVtZW50UmVuZGVyVHJlZUFzVGV4dChpbiBFbGVtZW50
IGVsZW1lbnQpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgIGJvb2xlYW4gaXNQcmVsb2FkZWQo
aW4gRE9NU3RyaW5nIHVybCk7CisgICAgYm9vbGVhbiBpc0xvYWRpbmdGcm9tTWVtb3J5Q2FjaGUo
aW4gRE9NU3RyaW5nIHVybCk7CiAKICAgICB1bnNpZ25lZCBsb25nIG51bWJlck9mU2NvcGVkSFRN
TFN0eWxlQ2hpbGRyZW4oaW4gTm9kZSBzY29wZSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJKHJldmlzaW9uIDE0MDc0MykKKysr
IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjUsNiArNjUsNyBAQAogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJMYW5ndWFnZS5o
IgogI2luY2x1ZGUgIk1hbGxvY1N0YXRpc3RpY3MuaCIKKyNpbmNsdWRlICJNZW1vcnlDYWNoZS5o
IgogI2luY2x1ZGUgIk1vY2tQYWdlUG9wdXBEcml2ZXIuaCIKICNpbmNsdWRlICJOb2RlUmVuZGVy
aW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTI5MSw2ICsyOTIsMTQgQEAKICAg
ICByZXR1cm4gZG9jdW1lbnQtPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPmlzUHJlbG9hZGVkKHVy
bCk7CiB9CiAKK2Jvb2wgSW50ZXJuYWxzOjppc0xvYWRpbmdGcm9tTWVtb3J5Q2FjaGUoY29uc3Qg
U3RyaW5nJiB1cmwpCit7CisgICAgaWYgKCFjb250ZXh0RG9jdW1lbnQoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIENhY2hlZFJlc291cmNlKiByZXNvdXJjZSA9IG1lbW9yeUNhY2hlKCkt
PnJlc291cmNlRm9yVVJMKGNvbnRleHREb2N1bWVudCgpLT5jb21wbGV0ZVVSTCh1cmwpKTsKKyAg
ICByZXR1cm4gcmVzb3VyY2UgJiYgcmVzb3VyY2UtPnN0YXR1cygpID09IENhY2hlZFJlc291cmNl
OjpDYWNoZWQ7Cit9CisKIFBhc3NSZWZQdHI8RWxlbWVudD4gSW50ZXJuYWxzOjpjcmVhdGVDb250
ZW50RWxlbWVudChFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBEb2N1bWVudCogZG9jdW1lbnQg
PSBjb250ZXh0RG9jdW1lbnQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiAx
NDA3NDMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMzQwLDYgKzM0MCw4IEBACiAgICAgewogICAgICAgICByZXR1cm4gbV9kb2N1bWVudEVsZW1l
bnQuZ2V0KCk7CiAgICAgfQorCisgICAgYm9vbCBoYXNNYW5pZmVzdCgpIGNvbnN0OwogICAgIAog
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxFbGVtZW50PiBjcmVhdGVFbGVtZW50KGNvbnN0IEF0b21p
Y1N0cmluZyYgdGFnTmFtZSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8RG9jdW1l
bnRGcmFnbWVudD4gY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCShyZXZpc2lvbiAxNDA3NDMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MTMsNiArODEzLDExIEBACiAgICAgcmV0dXJuIG1f
aW1wbGVtZW50YXRpb24uZ2V0KCk7CiB9CiAKK2Jvb2wgRG9jdW1lbnQ6Omhhc01hbmlmZXN0KCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gZG9jdW1lbnRFbGVtZW50KCkgJiYgZG9jdW1lbnRFbGVtZW50
KCktPmhhc1RhZ05hbWUoaHRtbFRhZykgJiYgZG9jdW1lbnRFbGVtZW50KCktPmhhc0F0dHJpYnV0
ZShtYW5pZmVzdEF0dHIpOworfQorCiB2b2lkIERvY3VtZW50OjpjaGlsZHJlbkNoYW5nZWQoYm9v
bCBjaGFuZ2VkQnlQYXJzZXIsIE5vZGUqIGJlZm9yZUNoYW5nZSwgTm9kZSogYWZ0ZXJDaGFuZ2Us
IGludCBjaGlsZENvdW50RGVsdGEpCiB7CiAgICAgQ29udGFpbmVyTm9kZTo6Y2hpbGRyZW5DaGFu
Z2VkKGNoYW5nZWRCeVBhcnNlciwgYmVmb3JlQ2hhbmdlLCBhZnRlckNoYW5nZSwgY2hpbGRDb3Vu
dERlbHRhKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MDg1MCkKKysrIFNvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU2IEBACisyMDEzLTAxLTI1
ICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgRW5hYmxlIHJl
dXNlIG9mIGNhY2hlZCBtYWluIHJlc291cmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1NjY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy9jYWNoZS9jYWNoZWQtbWFpbi1y
ZXNvdXJjZS5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBkb20v
RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Omhhc01hbmlmZXN0KTog
UmV0dXJucyB0cnVlIGlmIHRoZSA8aHRtbD4gZWxlbWVudCBoYXMgYSBub24tZW1wdHkgbWFuaWZl
c3QgYXR0cmlidXRlLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50
Lmg6CisgICAgICAgIChEb2N1bWVudCk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkZWRSZXNvdXJjZUZyb21NZW1v
cnlDYWNoZSk6IERvbid0IHNlbmQgZGVsZWdhdGUgY2FsbGJhY2tzIGZvciBjYWNoZSBoaXQgaGVy
ZSwgc2luY2UKKyAgICAgICAgICAgIE1haW5SZXNvdXJjZUxvYWRlciB3aWxsIHRha2UgY2FyZSBv
ZiBpdC4KKyAgICAgICAgKiBsb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1haW5SZXNvdXJjZUxvYWRlcjo6TWFpblJlc291cmNlTG9hZGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1haW5SZXNvdXJjZUxvYWRlcjo6cmVjZWl2ZWRFcnJvcik6CisgICAgICAg
IChXZWJDb3JlOjpNYWluUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAg
IChXZWJDb3JlOjpNYWluUmVzb3VyY2VMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQpOiBEb24ndCB0
cnkgdG8gY2FjaGUgbG9hZHMgZnJvbSB0aGUgYXBwbGljYXRpb24gY2FjaGUuCisgICAgICAgIChX
ZWJDb3JlOjpNYWluUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcpOiBEb24ndCB0cnkg
dG8gY2FjaGUgbG9hZHMgZnJvbSB0aGUgYXBwbGljYXRpb24gY2FjaGUuCisgICAgICAgIChXZWJD
b3JlOjpNYWluUmVzb3VyY2VMb2FkZXI6OmxvYWQpOiBFbnN1cmUgd2UgY3JlYXRlIGEgcmVzb3Vy
Y2UgbG9hZCBpZGVudGlmaWVyIGZvciBjYWNoZSBoaXRzLiBBbHNvLAorICAgICAgICAgICAgZW5z
dXJlIHdlIGNvcnJlY3RseSBwb3B1YWxhdGUgZnJhZ21lbnQgaWRlbnRpZmllcnMgaW4gdGhlIFJl
c291cmNlUmVxdWVzdCByZXBvcnRlZCB0byBEb2N1bWVudExvYWRlci4KKyAgICAgICAgKFdlYkNv
cmU6Ok1haW5SZXNvdXJjZUxvYWRlcjo6aWRlbnRpZmllcik6CisgICAgICAgICogbG9hZGVyL01h
aW5SZXNvdXJjZUxvYWRlci5oOiBSZW5hbWUgbV9zdWJzdGl0dXRlRGF0YUxvYWRJZGVudGlmaWVy
IHRvIG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIKKyAgICAgICAgICAg
IHRvIGJldHRlciBkZXNjcmliZSB3aGVuIGl0IGlzIHVzZWQuCisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jl
c291cmNlOjpkaWRBZGRDbGllbnQpOiBTeW50aGVzaXplIHJlZGlyZWN0IG5vdGlmaWNhdGlvbnMg
Zm9yIGNhY2hlIGhpdHMgaWYgbmVjZXNzYXJ5LgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3
UmVzb3VyY2U6OndpbGxTZW5kUmVxdWVzdCk6IE5vdGUgdGhlIHJlZGlyZWN0cyB3ZSByZWNlaXZl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjpjYW5SZXVzZSk6IERvbid0
IHJldXNlIGEgcmVzb3VyY2UgaWYgdGhlIHJlZGlyZWN0IGNoYWluIGluY2x1ZGVkIGEgIkNhY2hl
LWNvbnRyb2w6IG5vLXN0b3JlIi4KKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVz
b3VyY2UuaDoKKyAgICAgICAgKENhY2hlZFJhd1Jlc291cmNlKToKKyAgICAgICAgKFJlZGlyZWN0
UGFpcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6UmVkaXJlY3RQYWly
OjpSZWRpcmVjdFBhaXIpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6YWRkQ2xpZW50VG9TZXQpOiBE
b24ndCByZXR1cm4gY2FjaGVkIGRhdGEgZm9yIGEgbWFpbiByZXNvdXJjZSBzeW5jaHJvbm91c2x5
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRSZXNvdXJjZTo6Y2FuUmV1c2UpOgorICAgICAgICAoQ2FjaGVkUmVzb3VyY2Up
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKTogTGVh
dmUgY2FoY2UgcmV1c2Ugb2YgbWFpbiByZXNvdXJjZXMgb2ZmIGZvciBjaHJvbWl1bSBmb3Igbm93
LgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRldGVybWluZVJldmFs
aWRhdGlvblBvbGljeSk6IFBlcm1pdCBjYWNoZSByZXVzZSBmb3IgbWFpbiByZXNvdXJjZXMuCisg
ICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJu
YWxzOjppc1ByZWxvYWRlZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OkludGVybmFsczo6aXNMb2FkaW5nRnJvbU1lbW9yeUNhY2hlKToKKyAgICAgICAgKiB0ZXN0aW5n
L0ludGVybmFscy5oOgorICAgICAgICAoSW50ZXJuYWxzKToKKyAgICAgICAgKiB0ZXN0aW5nL0lu
dGVybmFscy5pZGw6CisKIDIwMTMtMDEtMjUgIEFsZWMgRmxldHQgIDxhbGVjZmxldHRAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIEluZGV4ZWREQjogTW92ZSBUYXNrVHlwZSBlbnVtIHRvIElEQkRh
dGFiYXNlQmFja2VuZEludGVyZmFjZQpJbmRleDogU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZp
bHRlcgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCShyZXZp
c2lvbiAxNDA3NDMpCisrKyBTb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCSh3b3JraW5n
IGNvcHkpCkBAIC01MCwxMCArNTAsMTIgQEAKIF9aTjdXZWJDb3JlMTBDbGllbnRSZWN0QzFFdjsK
IF9aTjdXZWJDb3JlMTBDbGllbnRSZWN0QzFFUktOU183SW50UmVjdEU7CiBfWk43V2ViQ29yZTEw
U2hhZG93Um9vdDZjcmVhdGVFUE5TXzdFbGVtZW50RVJpOworX1pON1dlYkNvcmUxMW1lbW9yeUNh
Y2hlRXY7CiBfWk43V2ViQ29yZTExRXZlbnRUYXJnZXQxN3RvR2VuZXJhdGVkU3RyZWFtRXY7CiBf
Wk43V2ViQ29yZTExRXZlbnRUYXJnZXQ4dG9TdHJlYW1FdjsKIF9aTjdXZWJDb3JlMTFIaXN0b3J5
SXRlbTE2c2V0RG9jdW1lbnRTdGF0ZUVSS04zV1RGNlZlY3RvcklOUzFfNlN0cmluZ0VMajBFRUU7
CiBfWk43V2ViQ29yZTExSGlzdG9yeUl0ZW0xNnNldERvY3VtZW50U3RhdGVFUktOM1dURjZWZWN0
b3JJTlMxXzZTdHJpbmdFTG0wRUVFOworX1pON1dlYkNvcmUxMU1lbW9yeUNhY2hlMTRyZXNvdXJj
ZUZvclVSTEVSS05TXzRLVVJMRTsKIF9aTjdXZWJDb3JlMTJUZXh0SXRlcmF0b3IyNnJhbmdlRnJv
bUxvY2F0aW9uQW5kTGVuZ3RoRVBOU18xM0NvbnRhaW5lck5vZGVFaWliOwogX1pON1dlYkNvcmUx
MlRleHRJdGVyYXRvcjI5Z2V0TG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2VFUE5TXzdFbGVtZW50
RVBLTlNfNVJhbmdlRVJqUzZfOwogX1pON1dlYkNvcmUxMlRleHRJdGVyYXRvcjI5Z2V0TG9jYXRp
b25BbmRMZW5ndGhGcm9tUmFuZ2VFUE5TXzdFbGVtZW50RVBLTlNfNVJhbmdlRVJtUzZfOwpAQCAt
MTQ2LDYgKzE0OCw3IEBACiBfWk5LN1dlYkNvcmU1RnJhbWU4c2V0dGluZ3NFdjsKIF9aTks3V2Vi
Q29yZTZKU05vZGUyMXB1c2hFdmVudEhhbmRsZXJTY29wZUVQTjNKU0M5RXhlY1N0YXRlRVBOUzFf
MTRTY29wZUNoYWluTm9kZUU7CiBfWk5LN1dlYkNvcmU3RWxlbWVudDZzaGFkb3dFdjsKK19aTks3
V2ViQ29yZThEb2N1bWVudDExY29tcGxldGVVUkxFUktOM1dURjZTdHJpbmdFOwogX1pOSzdXZWJD
b3JlOERvY3VtZW50NHBhZ2VFdjsKIF9aTks3V2ViQ29yZThEb2N1bWVudDhzZXR0aW5nc0V2Owog
X1pOSzdXZWJDb3JlOERvY3VtZW50NHZpZXdFdjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185004</attachid>
            <date>2013-01-28 10:40:54 -0800</date>
            <delta_ts>2013-01-29 10:31:17 -0800</delta_ts>
            <desc>Merged to trunk</desc>
            <filename>cmr_1028.txt</filename>
            <type>text/plain</type>
            <size>38161</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDE0MDk3
NikKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDEzLTAx
LTI1ICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgRW5hYmxl
IHJldXNlIG9mIGNhY2hlZCBtYWluIHJlc291cmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1NjY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVy
OiBFeHBvc2UgTWVtb3J5Q2FjaGU6OnJlc291cmNlRm9yVVJMKCkuCisKIDIwMTMtMDEtMjggIFJl
bmF0YSBIb2RvdmFuICA8cmVuaUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtXSzJdIFB1dHRpbmcg
UXRXZWJQcm9jZXNzIGludG8gYSBjaHJvb3RlZCBzYW5kYm94CkluZGV4OiBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAx
NDA5NzYpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxOSBAQAorMjAxMy0wMS0yNSAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIEVuYWJsZSByZXVzZSBvZiBjYWNoZWQgbWFpbiByZXNvdXJjZXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTY2Ny4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvY2Fj
aGUvY2FjaGVkLW1haW4tcmVzb3VyY2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBo
dHRwL3Rlc3RzL2NhY2hlL2NhY2hlZC1tYWluLXJlc291cmNlLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvY2FjaGUvcmVzb3VyY2VzL2NhY2hlYWJsZS1pZnJhbWUucGhwOiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZS1oYXItcGFnZXMtZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvbG9hZGluZy9yZWRpcmVjdC1tZXRob2Rz
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL21pc2MvZmF2aWNvbi1sb2Fkcy13
aXRoLWltYWdlcy1kaXNhYmxlZC1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9t
aXNjL2xpbmstcmVsLWljb24tYmVmb3JlbG9hZC1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxh
dGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9uczoKKwogMjAxMy0wMS0yOCAgU3RlcGhlbiBD
aGVubmV5ICA8c2NoZW5uZXlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFNWR1ZpZXdTcGVjIGZh
aWxzIHdoZW4gY29ycmVzcG9uZGluZyBlbGVtZW50IGhhcyBiZWVuIHJlbW92ZWQKSW5kZXg6IExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9saW5rLXJlbC1pY29uLWJlZm9yZWxvYWQtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9saW5rLXJl
bC1pY29uLWJlZm9yZWxvYWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNDA5NzYpCisrKyBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvbGluay1yZWwtaWNvbi1iZWZvcmVsb2FkLWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIDx1bmtub3duPiAtIGRpZEZpbmlz
aExvYWRpbmcKIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9taXNjL2xpbmstcmVsLWljb24tYmVmb3Jl
bG9hZC5odG1sIC0gd2lsbFNlbmRSZXF1ZXN0IDxOU1VSTFJlcXVlc3QgVVJMIGh0dHA6Ly8xMjcu
MC4wLjE6ODAwMC9taXNjL2xpbmstcmVsLWljb24tYmVmb3JlbG9hZC5odG1sLCBtYWluIGRvY3Vt
ZW50IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbWlzYy9saW5rLXJlbC1pY29uLWJlZm9yZWxv
YWQuaHRtbCwgaHR0cCBtZXRob2QgR0VUPiByZWRpcmVjdFJlc3BvbnNlIChudWxsKQogaHR0cDov
LzEyNy4wLjAuMTo4MDAwL21pc2MvbGluay1yZWwtaWNvbi1iZWZvcmVsb2FkLmh0bWwgLSBkaWRS
ZWNlaXZlUmVzcG9uc2UgPE5TVVJMUmVzcG9uc2UgaHR0cDovLzEyNy4wLjAuMTo4MDAwL21pc2Mv
bGluay1yZWwtaWNvbi1iZWZvcmVsb2FkLmh0bWwsIGh0dHAgc3RhdHVzIGNvZGUgMjAwPgoraHR0
cDovLzEyNy4wLjAuMTo4MDAwL21pc2MvbGluay1yZWwtaWNvbi1iZWZvcmVsb2FkLmh0bWwgLSBk
aWRGaW5pc2hMb2FkaW5nCiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvZmF2aWNvbi5pY28gLSB3aWxs
U2VuZFJlcXVlc3QgPE5TVVJMUmVxdWVzdCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2Zhdmlj
b24uaWNvLCBtYWluIGRvY3VtZW50IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbWlzYy9saW5r
LXJlbC1pY29uLWJlZm9yZWxvYWQuaHRtbCwgaHR0cCBtZXRob2QgR0VUPiByZWRpcmVjdFJlc3Bv
bnNlIChudWxsKQogVGhpcyB0ZXN0IHNob3VsZCBub3Qgc2hvdyBhIHJlcXVlc3QgZm9yIHRoZSBm
YXZpY29uIGRvbnQtbG9hZC10aGlzLmljbywgc2luY2UgdGhlIGJlZm9yZWxvYWQgaGFuZGxlciBv
biB0aGUgZmF2aWNvbiBsaW5rIHJldHVybnMgZmFsc2UuIFRoZXJlZm9yZSwgaWYgdGhlIHJlc291
cmNlIHJlcXVlc3QgbGlzdCBiZWxvdyBzaG93cyBhIHJlcXVlc3QgZm9yIGRvbnQtbG9hZC10aGlz
LmljbywgdGhlbiB0aGlzIHRlc3QgaGFzIGZhaWxlZC4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAv
dGVzdHMvbWlzYy9mYXZpY29uLWxvYWRzLXdpdGgtaW1hZ2VzLWRpc2FibGVkLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvZmF2aWNvbi1sb2Fk
cy13aXRoLWltYWdlcy1kaXNhYmxlZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE0MDk3NikKKysr
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9mYXZpY29uLWxvYWRzLXdpdGgtaW1hZ2VzLWRp
c2FibGVkLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDcgQEAKIDx1bmtu
b3duPiAtIGRpZEZpbmlzaExvYWRpbmcKIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9taXNjL2Zhdmlj
b24tbG9hZHMtd2l0aC1pbWFnZXMtZGlzYWJsZWQuaHRtbCAtIHdpbGxTZW5kUmVxdWVzdCA8TlNV
UkxSZXF1ZXN0IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbWlzYy9mYXZpY29uLWxvYWRzLXdp
dGgtaW1hZ2VzLWRpc2FibGVkLmh0bWwsIG1haW4gZG9jdW1lbnQgVVJMIGh0dHA6Ly8xMjcuMC4w
LjE6ODAwMC9taXNjL2Zhdmljb24tbG9hZHMtd2l0aC1pbWFnZXMtZGlzYWJsZWQuaHRtbCwgaHR0
cCBtZXRob2QgR0VUPiByZWRpcmVjdFJlc3BvbnNlIChudWxsKQogaHR0cDovLzEyNy4wLjAuMTo4
MDAwL21pc2MvZmF2aWNvbi1sb2Fkcy13aXRoLWltYWdlcy1kaXNhYmxlZC5odG1sIC0gZGlkUmVj
ZWl2ZVJlc3BvbnNlIDxOU1VSTFJlc3BvbnNlIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9taXNjL2Zh
dmljb24tbG9hZHMtd2l0aC1pbWFnZXMtZGlzYWJsZWQuaHRtbCwgaHR0cCBzdGF0dXMgY29kZSAy
MDA+CitodHRwOi8vMTI3LjAuMC4xOjgwMDAvbWlzYy9mYXZpY29uLWxvYWRzLXdpdGgtaW1hZ2Vz
LWRpc2FibGVkLmh0bWwgLSBkaWRGaW5pc2hMb2FkaW5nCiBSYWRhciA2OTczMTA2IGFuZCBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc4OTYgLSBGYXZpY29ucyBzdGls
bCBsb2FkIHdoZW4gYXV0b21hdGljIGltYWdlIGxvYWRpbmcgaXMgZGlzYWJsZWQuCiBUaGlzIHRl
c3QgdXNlcyBEUlQncyByZXNvdXJjZSBsb2FkIGRlbGVnYXRlIGNhbGxiYWNrIG1vZGUgdG8gc2Vl
IGlmIHRoZSBmYXZpY29uIGlzIGxvYWRlZCBldmVuIHdoZW4gaW1hZ2UgbG9hZGluZyBpcyBvZmYu
CiAKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9yZWRpcmVjdC1tZXRob2Rz
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRp
bmcvcmVkaXJlY3QtbWV0aG9kcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE0MDk3NikKKysrIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9yZWRpcmVjdC1tZXRob2RzLWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtNDIsMTEgKzQyLDExIEBACiBodHRwOi8vMTI3LjAuMC4xOjgw
MDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1mb3JtLmh0bWwgLSBkaWRSZWNl
aXZlUmVzcG9uc2UgPE5TVVJMUmVzcG9uc2UgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcv
cmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtZm9ybS5odG1sLCBodHRwIHN0YXR1cyBjb2RlIDIw
MD4KIGZyYW1lICIxIiAtIGRpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWUKIGZyYW1lICIx
IiAtIGRpZENvbW1pdExvYWRGb3JGcmFtZQoraHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcv
cmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtZm9ybS5odG1sIC0gZGlkRmluaXNoTG9hZGluZwog
ZnJhbWUgIjEiIC0gZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUKIGZyYW1lICIxIiAtIHdp
bGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RUb1VSTDogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRp
bmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtcmVzdWx0LnBocCAKIGZyYW1lICIxIiAtIGRp
ZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lCiBmcmFtZSAiMSIgLSBkaWRGaW5pc2hMb2FkRm9y
RnJhbWUKLWh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1t
ZXRob2RzLWZvcm0uaHRtbCAtIGRpZEZpbmlzaExvYWRpbmcKIGZyYW1lICIxIiAtIGRpZFN0YXJ0
UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUKIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jl
c291cmNlcy9yZWRpcmVjdC1tZXRob2RzLXJlc3VsdC5waHAgLSB3aWxsU2VuZFJlcXVlc3QgPE5T
VVJMUmVxdWVzdCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3Jl
ZGlyZWN0LW1ldGhvZHMtcmVzdWx0LnBocCwgbWFpbiBkb2N1bWVudCBVUkwgaHR0cDovLzEyNy4w
LjAuMTo4MDAwL2xvYWRpbmcvcmVkaXJlY3QtbWV0aG9kcy5odG1sLCBodHRwIG1ldGhvZCBQT1NU
PiByZWRpcmVjdFJlc3BvbnNlIChudWxsKQogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcv
cmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtcmVzdWx0LnBocCAtIHdpbGxTZW5kUmVxdWVzdCA8
TlNVUkxSZXF1ZXN0IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMv
cmVkaXJlY3QtbWV0aG9kcy1yZXN1bHQucGhwP3JlZGlyZWN0ZWQ9dHJ1ZSwgbWFpbiBkb2N1bWVu
dCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVkaXJlY3QtbWV0aG9kcy5odG1s
LCBodHRwIG1ldGhvZCBHRVQ+IHJlZGlyZWN0UmVzcG9uc2UgPE5TVVJMUmVzcG9uc2UgaHR0cDov
LzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtcmVzdWx0
LnBocCwgaHR0cCBzdGF0dXMgY29kZSAzMDI+CkBAIC02OSwxMSArNjksMTEgQEAKIGh0dHA6Ly8x
MjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLWZvcm0uaHRt
bCAtIGRpZFJlY2VpdmVSZXNwb25zZSA8TlNVUkxSZXNwb25zZSBodHRwOi8vMTI3LjAuMC4xOjgw
MDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1mb3JtLmh0bWwsIGh0dHAgc3Rh
dHVzIGNvZGUgMjAwPgogZnJhbWUgIjIiIC0gZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFt
ZQogZnJhbWUgIjIiIC0gZGlkQ29tbWl0TG9hZEZvckZyYW1lCitodHRwOi8vMTI3LjAuMC4xOjgw
MDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1mb3JtLmh0bWwgLSBkaWRGaW5p
c2hMb2FkaW5nCiBmcmFtZSAiMiIgLSBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZQogZnJh
bWUgIjIiIC0gd2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdFRvVVJMOiBodHRwOi8vMTI3LjAuMC4x
OjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1yZXN1bHQucGhwIAogZnJh
bWUgIjIiIC0gZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUKIGZyYW1lICIyIiAtIGRpZEZp
bmlzaExvYWRGb3JGcmFtZQotaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2Vz
L3JlZGlyZWN0LW1ldGhvZHMtZm9ybS5odG1sIC0gZGlkRmluaXNoTG9hZGluZwogZnJhbWUgIjIi
IC0gZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZQogaHR0cDovLzEyNy4wLjAuMTo4MDAw
L2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtcmVzdWx0LnBocCAtIHdpbGxTZW5k
UmVxdWVzdCA8TlNVUkxSZXF1ZXN0IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9y
ZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1yZXN1bHQucGhwLCBtYWluIGRvY3VtZW50IFVSTCBo
dHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZWRpcmVjdC1tZXRob2RzLmh0bWwsIGh0dHAg
bWV0aG9kIFBPU1Q+IHJlZGlyZWN0UmVzcG9uc2UgKG51bGwpCiBodHRwOi8vMTI3LjAuMC4xOjgw
MDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1yZXN1bHQucGhwIC0gd2lsbFNl
bmRSZXF1ZXN0IDxOU1VSTFJlcXVlc3QgVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5n
L3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLXJlc3VsdC5waHA/cmVkaXJlY3RlZD10cnVlLCBt
YWluIGRvY3VtZW50IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZWRpcmVjdC1t
ZXRob2RzLmh0bWwsIGh0dHAgbWV0aG9kIEdFVD4gcmVkaXJlY3RSZXNwb25zZSA8TlNVUkxSZXNw
b25zZSBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0
aG9kcy1yZXN1bHQucGhwLCBodHRwIHN0YXR1cyBjb2RlIDMwMz4KQEAgLTk2LDExICs5NiwxMSBA
QAogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhv
ZHMtZm9ybS5odG1sIC0gZGlkUmVjZWl2ZVJlc3BvbnNlIDxOU1VSTFJlc3BvbnNlIGh0dHA6Ly8x
MjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLWZvcm0uaHRt
bCwgaHR0cCBzdGF0dXMgY29kZSAyMDA+CiBmcmFtZSAiMyIgLSBkaWRDYW5jZWxDbGllbnRSZWRp
cmVjdEZvckZyYW1lCiBmcmFtZSAiMyIgLSBkaWRDb21taXRMb2FkRm9yRnJhbWUKK2h0dHA6Ly8x
MjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLWZvcm0uaHRt
bCAtIGRpZEZpbmlzaExvYWRpbmcKIGZyYW1lICIzIiAtIGRpZEZpbmlzaERvY3VtZW50TG9hZEZv
ckZyYW1lCiBmcmFtZSAiMyIgLSB3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0VG9VUkw6IGh0dHA6
Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLXJlc3Vs
dC5waHAgCiBmcmFtZSAiMyIgLSBkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZQogZnJhbWUg
IjMiIC0gZGlkRmluaXNoTG9hZEZvckZyYW1lCi1odHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGlu
Zy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1mb3JtLmh0bWwgLSBkaWRGaW5pc2hMb2FkaW5n
CiBmcmFtZSAiMyIgLSBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lCiBodHRwOi8vMTI3
LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1yZXN1bHQucGhw
IC0gd2lsbFNlbmRSZXF1ZXN0IDxOU1VSTFJlcXVlc3QgVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAw
MC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLXJlc3VsdC5waHAsIG1haW4gZG9j
dW1lbnQgVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3JlZGlyZWN0LW1ldGhvZHMu
aHRtbCwgaHR0cCBtZXRob2QgUE9TVD4gcmVkaXJlY3RSZXNwb25zZSAobnVsbCkKIGh0dHA6Ly8x
MjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLXJlc3VsdC5w
aHAgLSB3aWxsU2VuZFJlcXVlc3QgPE5TVVJMUmVxdWVzdCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4
MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtcmVzdWx0LnBocD9yZWRpcmVj
dGVkPXRydWUsIG1haW4gZG9jdW1lbnQgVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5n
L3JlZGlyZWN0LW1ldGhvZHMuaHRtbCwgaHR0cCBtZXRob2QgUE9TVD4gcmVkaXJlY3RSZXNwb25z
ZSA8TlNVUkxSZXNwb25zZSBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMv
cmVkaXJlY3QtbWV0aG9kcy1yZXN1bHQucGhwLCBodHRwIHN0YXR1cyBjb2RlIDMwNz4KSW5kZXg6
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvcmVzb3VyY2VzL2NhY2hlYWJsZS1pZnJhbWUu
cGhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvcmVzb3VyY2Vz
L2NhY2hlYWJsZS1pZnJhbWUucGhwCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9jYWNoZS9yZXNvdXJjZXMvY2FjaGVhYmxlLWlmcmFtZS5waHAJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMTEgQEAKKzw/cGhwCityZXF1aXJlX29uY2UgJy4uLy4uL3Jlc291cmNlcy9wb3J0
YWJpbGl0eUxheWVyLnBocCc7CisKKyRtYXhfYWdlID0gMTIgKiAzMSAqIDI0ICogNjAgKiA2MDsg
Ly9vbmUgeWVhcgorJGV4cGlyZXMgPSBnbWRhdGUoREFURV9SRkMxMTIzLCB0aW1lKCkgKyAkbWF4
X2FnZSk7CisKK2hlYWRlcignQ2FjaGUtQ29udHJvbDogcHVibGljLCBtYXgtYWdlPScgLiAkbWF4
X2FnZSk7CitoZWFkZXIoJ0V4cGlyZXM6ICcgLiAkZXhwaXJlcyk7CitoZWFkZXIoJ0NvbnRlbnQt
VHlwZTogdGV4dC9odG1sJyk7CitleGl0KCk7Cis/PgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9jYWNoZS9jYWNoZWQtbWFpbi1yZXNvdXJjZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9jYWNoZWQtbWFpbi1yZXNvdXJjZS1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL2Nh
Y2hlZC1tYWluLXJlc291cmNlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwy
IEBACitQQVNTCisgCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL2NhY2hlZC1t
YWluLXJlc291cmNlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9j
YWNoZS9jYWNoZWQtbWFpbi1yZXNvdXJjZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9jYWNoZS9jYWNoZWQtbWFpbi1yZXNvdXJjZS5odG1sCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDI0IEBACis8aHRtbD4KKzxib2R5IG9ubG9hZD0ic2V0VGltZW91dChyZW1v
dmVBbmRSZWxvYWQsIDApOyI+Cis8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2PgorPHNjcmlwdD4KK2lm
ICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAg
IHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworfQorCitmdW5jdGlvbiByZW1vdmVBbmRSZWxv
YWQoKQoreworICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImlmcmFtZSIpKTsKKyAgICB2YXIgbmV3SWZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiaWZyYW1lIik7CisgICAgbmV3SWZyYW1lLnNyYyA9ICJyZXNvdXJjZXMvY2FjaGVhYmxl
LWlmcmFtZS5waHAiOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobmV3SWZyYW1lKTsK
KyAgICB2YXIgZnJvbUNhY2hlID0gaW50ZXJuYWxzLmlzTG9hZGluZ0Zyb21NZW1vcnlDYWNoZShu
ZXdJZnJhbWUuc3JjKTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuYXBw
ZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZnJvbUNhY2hlID8gIlBBU1MiIDogIkZB
SUwiKSk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKK30KKzwvc2NyaXB0PgorPGlmcmFtZSBpZD0iaWZyYW1lIiBzcmM9InJlc291
cmNlcy9jYWNoZWFibGUtaWZyYW1lLnBocCI+PC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZS1oYXItcGFnZXMt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL3Jlc291cmNlLWhhci1wYWdlcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE0MDk3NikKKysr
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlLWhhci1wYWdlcy1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw1IEBACiBUZXN0cyBjb252ZXJzaW9u
IG9mIEluc3BlY3RvcidzIHJlc291cmNlIHJlcHJlc2VudGF0aW9uIGludG8gSEFSIGZvcm1hdC4K
IAotUGFnZSByZWxvYWRlZC4KIHsKICAgICAwIDogewogICAgICAgICBpZCA6IDxzdHJpbmc+CkBA
IC0yOCw0ICsyNyw1IEBACiBwYWdlOiBwYWdlXzEgdXJsOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAv
aW5zcGVjdG9yL3Jlc291cmNlcy9oYXItcGFnZXMtbmF2aWdhdGlvbi10YXJnZXQuaHRtbAogcGFn
ZTogcGFnZV8xIHVybDogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9yZXNvdXJjZXMv
c291cmNlMS5qcwogcGFnZTogcGFnZV8xIHVybDogaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291
cmNlcy9yZWRpcmVjdC5waHA/dXJsPS9pbnNwZWN0b3IvcmVzb3VyY2VzL2hhci1wYWdlcy1uYXZp
Z2F0aW9uLXRhcmdldC5odG1sCitQYWdlIHJlbG9hZGVkLgogCkluZGV4OiBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMJKHJldmlzaW9uIDE0MDk3NikK
KysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMJKHdvcmtp
bmcgY29weSkKQEAgLTQzMzYsNiArNDMzNiw5IEBACiAKIHdlYmtpdC5vcmcvYi8xMDc4OTkgZmFz
dC9yZXBhaW50L3NlbGVjdGlvbi1jbGVhci5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKK3dl
YmtpdC5vcmcvYi8xMDc5NjIgaHR0cC90ZXN0cy9taXNjL2Zhdmljb24tbG9hZHMtd2l0aC1pbWFn
ZXMtZGlzYWJsZWQuaHRtbCBbIEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzEwNzk2MiBodHRwL3Rl
c3RzL2xvYWRpbmcvcmVkaXJlY3QtbWV0aG9kcy5odG1sIFsgRmFpbHVyZSBdCisKIHdlYmtpdC5v
cmcvYi8xMDc4OTMgWyBNb3VudGFpbkxpb24gXSBmYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRl
L3NoYXBlLWluc2lkZS1maXJzdC1maXQtMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0gCiAK
ICMgTmVlZHMgcmViYXNlbGluZSBhZnRlciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTIyMQpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJL
aXRFeHBvcnRzLmRlZi5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXQu
dmNwcm9qL1dlYktpdEV4cG9ydHMuZGVmLmluCShyZXZpc2lvbiAxNDA5NzYpCisrKyBTb3VyY2Uv
V2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdEV4cG9ydHMuZGVmLmluCSh3b3JraW5nIGNv
cHkpCkBAIC01NjAsNiArNTYwLDcgQEAKICAgICAgICAgP2FkZFNsb3dDYXNlQEF0b21pY1N0cmlu
Z0BXVEZAQENBP0FWPyRQYXNzUmVmUHRyQFZTdHJpbmdJbXBsQFdURkBAQDJAUEFWU3RyaW5nSW1w
bEAyQEBaCiAgICAgICAgID9jYWNoZURPTVN0cnVjdHVyZUBXZWJDb3JlQEBZQVBBVlN0cnVjdHVy
ZUBKU0NAQFBBVkpTRE9NR2xvYmFsT2JqZWN0QDFAUEFWMjNAUEJVQ2xhc3NJbmZvQDNAQFoKICAg
ICAgICAgP2NoaWxkSXRlbVdpdGhUYXJnZXRASGlzdG9yeUl0ZW1AV2ViQ29yZUBAUUJFUEFWMTJA
QUJWU3RyaW5nQFdURkBAQFoKKyAgICAgICAgP2NvbXBsZXRlVVJMQERvY3VtZW50QFdlYkNvcmVA
QFFCRT9BVktVUkxAMkBBQlZTdHJpbmdAV1RGQEBAWgogICAgICAgICA/Y3JlYXRlQFJhbmdlQFdl
YkNvcmVAQFNBP0FWPyRQYXNzUmVmUHRyQFZSYW5nZUBXZWJDb3JlQEBAV1RGQEBWPyRQYXNzUmVm
UHRyQFZEb2N1bWVudEBXZWJDb3JlQEBANEBWPyRQYXNzUmVmUHRyQFZOb2RlQFdlYkNvcmVAQEA0
QEgxSEBaCiAgICAgICAgID9jcmVhdGVAU2VyaWFsaXplZFNjcmlwdFZhbHVlQFdlYkNvcmVAQFNB
P0FWPyRQYXNzUmVmUHRyQFZTZXJpYWxpemVkU2NyaXB0VmFsdWVAV2ViQ29yZUBAQFdURkBAQUJW
U3RyaW5nQDRAQFoKICAgICAgICAgP2NyZWF0ZUBTZXJpYWxpemVkU2NyaXB0VmFsdWVAV2ViQ29y
ZUBAU0E/QVY/JFBhc3NSZWZQdHJAVlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUBXZWJDb3JlQEBAV1RG
QEBQQVZFeGVjU3RhdGVASlNDQEBWSlNWYWx1ZUA2QFBBVj8kVmVjdG9yQFY/JFJlZlB0ckBWTWVz
c2FnZVBvcnRAV2ViQ29yZUBAQFdURkBAJDAwQDRAUEFWPyRWZWN0b3JAVj8kUmVmUHRyQFZBcnJh
eUJ1ZmZlckBXVEZAQEBXVEZAQCQwMEA0QFc0U2VyaWFsaXphdGlvbkVycm9yTW9kZUAyQEBaCkBA
IC0xMzg4LDYgKzEzODksNyBAQAogICAgICAgICA/bGFzdENoYW5nZVdhc1VzZXJFZGl0QEhUTUxU
ZXh0Rm9ybUNvbnRyb2xFbGVtZW50QFdlYkNvcmVAQFFCRV9OWFoKICAgICAgICAgP21haW5UaHJl
YWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0QFBhZ2VAV2ViQ29yZUBAUUFFP0FWU3RyaW5nQFdURkBA
WFoKICAgICAgICAgP21hcmtlcnNGb3JARG9jdW1lbnRNYXJrZXJDb250cm9sbGVyQFdlYkNvcmVA
QFFBRT9BVj8kVmVjdG9yQFBBVkRvY3VtZW50TWFya2VyQFdlYkNvcmVAQCQwQUBAV1RGQEBQQVZO
b2RlQDJAVk1hcmtlclR5cGVzQERvY3VtZW50TWFya2VyQDJAQFoKKyAgICAgICAgP21lbW9yeUNh
Y2hlQFdlYkNvcmVAQFlBUEFWTWVtb3J5Q2FjaGVAMUBYWgogICAgICAgICA/bmV4dFNpYmxpbmdA
Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/Zmlyc3RD
aGlsZEBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXJAV2ViQ29yZUBAUUFFWFhaCiAgICAgICAgID9s
YXN0Q2hpbGRAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhYWgpAQCAtMTQw
Nyw2ICsxNDA5LDcgQEAKICAgICAgICAgP3JhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoQFRleHRJ
dGVyYXRvckBXZWJDb3JlQEBTQT9BVj8kUGFzc1JlZlB0ckBWUmFuZ2VAV2ViQ29yZUBAQFdURkBA
UEFWQ29udGFpbmVyTm9kZUAyQEhIX05AWgogICAgICAgICA/cmVtb3ZlQFN0cmluZ0BXVEZAQFFB
RVhJSEBaCiAgICAgICAgID9yZW1vdmVkTGFzdFJlZkBOb2RlQFdlYkNvcmVAQEFBRVhYWgorICAg
ICAgICA/cmVzb3VyY2VGb3JVUkxATWVtb3J5Q2FjaGVAV2ViQ29yZUBAUUFFUEFWQ2FjaGVkUmVz
b3VyY2VAMkBBQlZLVVJMQDJAQFoKICAgICAgICAgP3JldmVyc2VGaW5kQFN0cmluZ0ltcGxAV1RG
QEBRQUVJX1dJQFoKICAgICAgICAgP3NhdmVEb2N1bWVudEFuZFNjcm9sbFN0YXRlQEhpc3RvcnlD
b250cm9sbGVyQFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/c2NyaXB0RXhlY3V0aW9uQ29udGV4
dEBKU0RPTUdsb2JhbE9iamVjdEBXZWJDb3JlQEBRQkVQQVZTY3JpcHRFeGVjdXRpb25Db250ZXh0
QDJAWFoKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MDk3NikKKysrIFNvdXJjZS9X
ZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDEz
LTAxLTI1ICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgRW5h
YmxlIHJldXNlIG9mIGNhY2hlZCBtYWluIHJlc291cmNlcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1NjY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQudmNwcm9qL1dlYktpdEV4cG9ydHMu
ZGVmLmluOiBFeHBvc2Ugc29tZSBNZW1vcnlDYWNoZSBzeW1ib2xzIGZvciB1c2UgaW4gSW50ZXJu
YWxzLgorCiAyMDEzLTAxLTI3ICBab2x0YW4gQXJ2YWkgIDx6YXJ2YWlAaW5mLnUtc3plZ2VkLmh1
PgogCiAgICAgICAgIEZpeGluZyBhdG9taWNJbmNyZW1lbnQgaW1wbGVtZW50YXRpb24gZm9yIFdp
bmRvd3MgYnkgZHJvcHBpbmcgc3VwcG9ydCBiZWZvcmUgWFAgU1AyLgpJbmRleDogU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4JKHJldmlzaW9uIDE0MDk3NikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCSh3b3JraW5nIGNvcHkpCkBAIC0xNDUsNiArMTQ1LDcgQEAKIF9fWk43V2ViQ29yZTExTWVt
b3J5Q2FjaGUxM2dldFN0YXRpc3RpY3NFdgogX19aTjdXZWJDb3JlMTFNZW1vcnlDYWNoZTEzc2V0
Q2FwYWNpdGllc0VqamoKIF9fWk43V2ViQ29yZTExTWVtb3J5Q2FjaGUxNGV2aWN0UmVzb3VyY2Vz
RXYKK19fWk43V2ViQ29yZTExTWVtb3J5Q2FjaGUxNHJlc291cmNlRm9yVVJMRVJLTlNfNEtVUkxF
CiBfX1pON1dlYkNvcmUxMU1lbW9yeUNhY2hlMTlnZXRPcmlnaW5zV2l0aENhY2hlRVJOM1dURjdI
YXNoU2V0SU5TMV82UmVmUHRySU5TXzE0U2VjdXJpdHlPcmlnaW5FRUVOU18xOFNlY3VyaXR5T3Jp
Z2luSGFzaEVOUzFfMTBIYXNoVHJhaXRzSVM1X0VFRUUKIF9fWk43V2ViQ29yZTExTWVtb3J5Q2Fj
aGUyNXJlbW92ZVJlc291cmNlc1dpdGhPcmlnaW5FUE5TXzE0U2VjdXJpdHlPcmlnaW5FCiBfX1pO
N1dlYkNvcmUxMVVSTFdpdGhEYXRhRVA2TlNEYXRhUDVOU1VSTApJbmRleDogU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2
aXNpb24gMTQwOTc2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsNTYgQEAKKzIwMTMtMDEtMjUgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9t
aXVtLm9yZz4KKworICAgICAgICBFbmFibGUgcmV1c2Ugb2YgY2FjaGVkIG1haW4gcmVzb3VyY2Vz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDU2NjcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBo
dHRwL3Rlc3RzL2NhY2hlL2NhY2hlZC1tYWluLXJlc291cmNlLmh0bWwKKworICAgICAgICAqIFdl
YkNvcmUuZXhwLmluOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6aGFzTWFuaWZlc3QpOiBSZXR1cm5zIHRydWUgaWYgdGhlIDxodG1sPiBl
bGVtZW50IGhhcyBhIG5vbi1lbXB0eSBtYW5pZmVzdCBhdHRyaWJ1dGUuCisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKERvY3VtZW50KToKKyAg
ICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXI6OmxvYWRlZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKTogRG9uJ3Qgc2VuZCBkZWxlZ2F0
ZSBjYWxsYmFja3MgZm9yIGNhY2hlIGhpdCBoZXJlLCBzaW5jZQorICAgICAgICAgICAgTWFpblJl
c291cmNlTG9hZGVyIHdpbGwgdGFrZSBjYXJlIG9mIGl0LgorICAgICAgICAqIGxvYWRlci9NYWlu
UmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWFpblJlc291cmNlTG9hZGVy
OjpNYWluUmVzb3VyY2VMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWFpblJlc291cmNlTG9h
ZGVyOjpyZWNlaXZlZEVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5SZXNvdXJjZUxvYWRl
cjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5SZXNvdXJjZUxvYWRl
cjo6cmVzcG9uc2VSZWNlaXZlZCk6IERvbid0IHRyeSB0byBjYWNoZSBsb2FkcyBmcm9tIHRoZSBh
cHBsaWNhdGlvbiBjYWNoZS4KKyAgICAgICAgKFdlYkNvcmU6Ok1haW5SZXNvdXJjZUxvYWRlcjo6
ZGlkRmluaXNoTG9hZGluZyk6IERvbid0IHRyeSB0byBjYWNoZSBsb2FkcyBmcm9tIHRoZSBhcHBs
aWNhdGlvbiBjYWNoZS4KKyAgICAgICAgKFdlYkNvcmU6Ok1haW5SZXNvdXJjZUxvYWRlcjo6bG9h
ZCk6IEVuc3VyZSB3ZSBjcmVhdGUgYSByZXNvdXJjZSBsb2FkIGlkZW50aWZpZXIgZm9yIGNhY2hl
IGhpdHMuIEFsc28sCisgICAgICAgICAgICBlbnN1cmUgd2UgY29ycmVjdGx5IHBvcHVhbGF0ZSBm
cmFnbWVudCBpZGVudGlmaWVycyBpbiB0aGUgUmVzb3VyY2VSZXF1ZXN0IHJlcG9ydGVkIHRvIERv
Y3VtZW50TG9hZGVyLgorICAgICAgICAoV2ViQ29yZTo6TWFpblJlc291cmNlTG9hZGVyOjppZGVu
dGlmaWVyKToKKyAgICAgICAgKiBsb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmg6IFJlbmFtZSBt
X3N1YnN0aXR1dGVEYXRhTG9hZElkZW50aWZpZXIgdG8gbV9pZGVudGlmaWVyRm9yTG9hZFdpdGhv
dXRSZXNvdXJjZUxvYWRlcgorICAgICAgICAgICAgdG8gYmV0dGVyIGRlc2NyaWJlIHdoZW4gaXQg
aXMgdXNlZC4KKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmRpZEFkZENsaWVudCk6IFN5bnRo
ZXNpemUgcmVkaXJlY3Qgbm90aWZpY2F0aW9ucyBmb3IgY2FjaGUgaGl0cyBpZiBuZWNlc3Nhcnku
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6d2lsbFNlbmRSZXF1ZXN0KTog
Tm90ZSB0aGUgcmVkaXJlY3RzIHdlIHJlY2VpdmVkLgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
UmF3UmVzb3VyY2U6OmNhblJldXNlKTogRG9uJ3QgcmV1c2UgYSByZXNvdXJjZSBpZiB0aGUgcmVk
aXJlY3QgY2hhaW4gaW5jbHVkZWQgYSAiQ2FjaGUtY29udHJvbDogbm8tc3RvcmUiLgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oOgorICAgICAgICAoQ2FjaGVkUmF3
UmVzb3VyY2UpOgorICAgICAgICAoUmVkaXJlY3RQYWlyKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZFJhd1Jlc291cmNlOjpSZWRpcmVjdFBhaXI6OlJlZGlyZWN0UGFpcik6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFJlc291cmNlOjphZGRDbGllbnRUb1NldCk6IERvbid0IHJldHVybiBjYWNoZWQgZGF0YSBmb3Ig
YSBtYWluIHJlc291cmNlIHN5bmNocm9ub3VzbHkKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpjYW5SZXVz
ZSk6CisgICAgICAgIChDYWNoZWRSZXNvdXJjZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNl
TG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UpOiBMZWF2ZSBjYWhjZSByZXVzZSBvZiBtYWluIHJlc291
cmNlcyBvZmYgZm9yIGNocm9taXVtIGZvciBub3cuCisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRS
ZXNvdXJjZUxvYWRlcjo6ZGV0ZXJtaW5lUmV2YWxpZGF0aW9uUG9saWN5KTogUGVybWl0IGNhY2hl
IHJldXNlIGZvciBtYWluIHJlc291cmNlcy4KKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmlzUHJlbG9hZGVkKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjppc0xvYWRpbmdGcm9tTWVt
b3J5Q2FjaGUpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAgIChJbnRl
cm5hbHMpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwogMjAxMy0wMS0yOCAg
U3RlcGhlbiBDaGVubmV5ICA8c2NoZW5uZXlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFNWR1Zp
ZXdTcGVjIGZhaWxzIHdoZW4gY29ycmVzcG9uZGluZyBlbGVtZW50IGhhcyBiZWVuIHJlbW92ZWQK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291
cmNlLmNwcAkocmV2aXNpb24gMTQwOTc2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJhd1Jlc291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAsMTQgKzgwLDI1IEBA
CiAKIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNs
aWVudCogYykKIHsKLSAgICBpZiAobV9yZXNwb25zZS5pc051bGwoKSB8fCAhaGFzQ2xpZW50KGMp
KQorICAgIGlmICghaGFzQ2xpZW50KGMpKQogICAgICAgICByZXR1cm47CiAgICAgLy8gVGhlIGNh
bGxzIHRvIHRoZSBjbGllbnQgY2FuIHJlc3VsdCBpbiBldmVudHMgcnVubmluZywgcG90ZW50aWFs
bHkgY2F1c2luZwogICAgIC8vIHRoaXMgcmVzb3VyY2UgdG8gYmUgZXZpY3RlZCBmcm9tIHRoZSBj
YWNoZSBhbmQgYWxsIGNsaWVudHMgdG8gYmUgcmVtb3ZlZCwKICAgICAvLyBzbyBhIHByb3RlY3Rv
ciBpcyBuZWNlc3NhcnkuCiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3Vy
Y2U+IHByb3RlY3QodGhpcyk7CiAgICAgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQqIGNsaWVudCA9
IHN0YXRpY19jYXN0PENhY2hlZFJhd1Jlc291cmNlQ2xpZW50Kj4oYyk7Ci0gICAgY2xpZW50LT5y
ZXNwb25zZVJlY2VpdmVkKHRoaXMsIG1fcmVzcG9uc2UpOworICAgIHNpemVfdCByZWRpcmVjdENv
dW50ID0gbV9yZWRpcmVjdENoYWluLnNpemUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHJlZGlyZWN0Q291bnQ7IGkrKykgeworICAgICAgICBSZWRpcmVjdFBhaXIgcmVkaXJlY3QgPSBt
X3JlZGlyZWN0Q2hhaW5baV07CisgICAgICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KHJlZGly
ZWN0Lm1fcmVxdWVzdCk7CisgICAgICAgIGNsaWVudC0+cmVkaXJlY3RSZWNlaXZlZCh0aGlzLCBy
ZXF1ZXN0LCByZWRpcmVjdC5tX3JlZGlyZWN0UmVzcG9uc2UpOworICAgICAgICBpZiAoIWhhc0Ns
aWVudChjKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgQVNTRVJUKHJlZGlyZWN0
Q291bnQgPT0gbV9yZWRpcmVjdENoYWluLnNpemUoKSk7CisKKyAgICBpZiAoIW1fcmVzcG9uc2Uu
aXNOdWxsKCkpCisgICAgICAgIGNsaWVudC0+cmVzcG9uc2VSZWNlaXZlZCh0aGlzLCBtX3Jlc3Bv
bnNlKTsKICAgICBpZiAoIWhhc0NsaWVudChjKSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmICht
X2RhdGEpCkBAIC0xMTAsNiArMTIxLDcgQEAKICAgICAgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRX
YWxrZXI8Q2FjaGVkUmF3UmVzb3VyY2VDbGllbnQ+IHcobV9jbGllbnRzKTsKICAgICAgICAgd2hp
bGUgKENhY2hlZFJhd1Jlc291cmNlQ2xpZW50KiBjID0gdy5uZXh0KCkpCiAgICAgICAgICAgICBj
LT5yZWRpcmVjdFJlY2VpdmVkKHRoaXMsIHJlcXVlc3QsIHJlc3BvbnNlKTsKKyAgICAgICAgbV9y
ZWRpcmVjdENoYWluLmFwcGVuZChSZWRpcmVjdFBhaXIocmVxdWVzdCwgcmVzcG9uc2UpKTsKICAg
ICB9CiAgICAgQ2FjaGVkUmVzb3VyY2U6OndpbGxTZW5kUmVxdWVzdChyZXF1ZXN0LCByZXNwb25z
ZSk7CiB9CkBAIC0xOTQsNiArMjA2LDEyIEBACiAgICAgICAgIGlmICghc2hvdWxkSWdub3JlSGVh
ZGVyRm9yQ2FjaGVSZXVzZShoZWFkZXJOYW1lKSAmJiBpLT52YWx1ZSAhPSBuZXdIZWFkZXJzLmdl
dChoZWFkZXJOYW1lKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CisKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1fcmVkaXJlY3RDaGFpbi5zaXplKCk7IGkrKykgeworICAg
ICAgICBpZiAobV9yZWRpcmVjdENoYWluW2ldLm1fcmVkaXJlY3RSZXNwb25zZS5jYWNoZUNvbnRy
b2xDb250YWluc05vU3RvcmUoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCShyZXZpc2lvbiAxNDA5NzYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
OTcsOCArNDk3LDggQEAKICAgICBpZiAoIWhhc0NsaWVudHMoKSAmJiBpbkNhY2hlKCkpCiAgICAg
ICAgIG1lbW9yeUNhY2hlKCktPmFkZFRvTGl2ZVJlc291cmNlc1NpemUodGhpcyk7CiAKLSAgICBp
ZiAobV90eXBlID09IFJhd1Jlc291cmNlICYmICFtX3Jlc3BvbnNlLmlzTnVsbCgpICYmICFtX3By
b3h5UmVzb3VyY2UpIHsKLSAgICAgICAgLy8gQ2VydGFpbiByZXNvdXJjZXMgKGVzcGVjaWFsbHkg
WEhScykgZG8gY3JhenkgdGhpbmdzIGlmIGFuIGFzeW5jaHJvbm91cyBsb2FkIHJldHVybnMKKyAg
ICBpZiAoKG1fdHlwZSA9PSBSYXdSZXNvdXJjZSB8fCBtX3R5cGUgPT0gTWFpblJlc291cmNlKSAm
JiAhbV9yZXNwb25zZS5pc051bGwoKSAmJiAhbV9wcm94eVJlc291cmNlKSB7CisgICAgICAgIC8v
IENlcnRhaW4gcmVzb3VyY2VzIChlc3BlY2lhbGx5IFhIUnMgYW5kIG1haW4gcmVzb3VyY2VzKSBk
byBjcmF6eSB0aGluZ3MgaWYgYW4gYXN5bmNocm9ub3VzIGxvYWQgcmV0dXJucwogICAgICAgICAv
LyBzeW5jaHJvbm91c2x5IChlLmcuLCBzY3JpcHRzIG1heSBub3QgaGF2ZSBzZXQgYWxsIHRoZSBz
dGF0ZSB0aGV5IG5lZWQgdG8gaGFuZGxlIHRoZSBsb2FkKS4KICAgICAgICAgLy8gVGhlcmVmb3Jl
LCByYXRoZXIgdGhhbiBpbW1lZGlhdGVseSBzZW5kaW5nIGNhbGxiYWNrcyBvbiBhIGNhY2hlIGhp
dCBsaWtlIG90aGVyIENhY2hlZFJlc291cmNlcywKICAgICAgICAgLy8gd2Ugc2NoZWR1bGUgdGhl
IGNhbGxiYWNrcyBhbmQgZW5zdXJlIHdlIG5ldmVyIGZpbmlzaCBzeW5jaHJvbm91c2x5LgpJbmRl
eDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgJ
KHJldmlzaW9uIDE0MDk3NikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
YXdSZXNvdXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBACiAgICAgU3VicmVz
b3VyY2VMb2FkZXIqIGxvYWRlcigpIGNvbnN0OwogICAgIHZvaWQgY2xlYXIoKTsKIAotICAgIGJv
b2wgY2FuUmV1c2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgY29uc3Q7CisgICAgdmlydHVhbCBi
b29sIGNhblJldXNlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIGNvbnN0OwogCiAgICAgdmlydHVh
bCB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdCBPVkVSUklE
RTsKIApAQCAtNjcsNiArNjcsMjAgQEAKICNlbmRpZgogCiAgICAgdW5zaWduZWQgbG9uZyBtX2lk
ZW50aWZpZXI7CisKKyAgICBzdHJ1Y3QgUmVkaXJlY3RQYWlyIHsKKyAgICBwdWJsaWM6CisgICAg
ICAgIGV4cGxpY2l0IFJlZGlyZWN0UGFpcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCisgICAgICAgICAgICA6
IG1fcmVxdWVzdChyZXF1ZXN0KQorICAgICAgICAgICAgLCBtX3JlZGlyZWN0UmVzcG9uc2UocmVk
aXJlY3RSZXNwb25zZSkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0IG1fcmVxdWVzdDsKKyAgICAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSBt
X3JlZGlyZWN0UmVzcG9uc2U7CisgICAgfTsKKworICAgIFZlY3RvcjxSZWRpcmVjdFBhaXI+IG1f
cmVkaXJlY3RDaGFpbjsKIH07CiAKIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAxNDA5NzYpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00NzcsNiArNDc3LDE4IEBACiAgICAgICAgIH0KICAgICB9CiAKKyNp
ZiBQTEFURk9STShDSFJPTUlVTSkKKyAgICAvLyBGSVhNRTogVGVtcG9yYXJpbHkgbGVhdmUgbWFp
biByZXNvdXJjZSBjYWNoaW5nIGRpc2FibGVkIGZvciBjaHJvbWl1bSwgc2VlIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDc5NjIKKyAgICAvLyBFbnN1cmUgbWFpbiBy
ZXNvdXJjZXMgYXJlbid0IHByZWxvYWRlZCwgYW5kIG90aGVyIG1haW4gcmVzb3VyY2UgbG9hZHMg
YXJlIHJlbW92ZWQgZnJvbSBjYWNoZSB0byBwcmV2ZW50IHJldXNlLgorICAgIGlmICh0eXBlID09
IENhY2hlZFJlc291cmNlOjpNYWluUmVzb3VyY2UpIHsKKyAgICAgICAgQVNTRVJUKHBvbGljeSAh
PSBVc2UpOworICAgICAgICBBU1NFUlQocG9saWN5ICE9IFJldmFsaWRhdGUpOworICAgICAgICBt
ZW1vcnlDYWNoZSgpLT5yZW1vdmUocmVzb3VyY2UuZ2V0KCkpOworICAgICAgICBpZiAocmVxdWVz
dC5mb3JQcmVsb2FkKCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9CisjZW5kaWYKKwog
ICAgIGlmICghcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKS5wcm90b2NvbElzRGF0YSgp
KQogICAgICAgICBtX3ZhbGlkYXRlZFVSTHMuYWRkKHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCku
dXJsKCkpOwogCkBAIC01NDMsMTIgKzU1NSw5IEBACiAgICAgICAgIHJldHVybiBSZWxvYWQ7CiAg
ICAgfQogCi0gICAgaWYgKGV4aXN0aW5nUmVzb3VyY2UtPnR5cGUoKSA9PSBDYWNoZWRSZXNvdXJj
ZTo6TWFpblJlc291cmNlKQorICAgIGlmICghZXhpc3RpbmdSZXNvdXJjZS0+Y2FuUmV1c2UocmVx
dWVzdCkpCiAgICAgICAgIHJldHVybiBSZWxvYWQ7CiAKLSAgICBpZiAoZXhpc3RpbmdSZXNvdXJj
ZS0+dHlwZSgpID09IENhY2hlZFJlc291cmNlOjpSYXdSZXNvdXJjZSAmJiAhc3RhdGljX2Nhc3Q8
Q2FjaGVkUmF3UmVzb3VyY2UqPihleGlzdGluZ1Jlc291cmNlKS0+Y2FuUmV1c2UocmVxdWVzdCkp
Ci0gICAgICAgIHJldHVybiBSZWxvYWQ7Ci0KICAgICAvLyBDZXJ0YWluIHJlcXVlc3RzIChlLmcu
LCBYSFJzKSBtaWdodCBoYXZlIG1hbnVhbGx5IHNldCBoZWFkZXJzIHRoYXQgcmVxdWlyZSByZXZh
bGlkYXRpb24uCiAgICAgLy8gRklYTUU6IEluIHRoZW9yeSwgdGhpcyBzaG91bGQgYmUgYSBSZXZh
bGlkYXRlIGNhc2UuIEluIHByYWN0aWNlLCB0aGUgTWVtb3J5Q2FjaGUgcmV2YWxpZGF0aW9uIHBh
dGggYXNzdW1lcyBhIHdob2xlIGJ1bmNoCiAgICAgLy8gb2YgdGhpbmdzIGFib3V0IGhvdyByZXZh
bGlkYXRpb24gd29ya3MgdGhhdCBtYW51YWwgaGVhZGVycyB2aW9sYXRlLCBzbyBwdW50IHRvIFJl
bG9hZCBpbnN0ZWFkLgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlLmgJKHJldmlzaW9uIDE0MDk3NikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNTgsNiArMjU4LDggQEAK
IAogICAgIHZpcnR1YWwgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikg
Y29uc3Q7CiAKKyAgICB2aXJ0dWFsIGJvb2wgY2FuUmV1c2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JikgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lk
IGNoZWNrTm90aWZ5KCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NYWluUmVzb3Vy
Y2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NYWluUmVz
b3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAxNDA5NzYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvTWFpblJlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsNyBA
QAogI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgogI2luY2x1ZGUgIkhpc3RvcnlJdGVtLmgi
CiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCisjaW5jbHVkZSAiTWVtb3J5
Q2FjaGUuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgi
CiAjaW5jbHVkZSAiUmVzb3VyY2VCdWZmZXIuaCIKQEAgLTczLDcgKzc0LDcgQEAKICAgICAsIG1f
bG9hZGluZ011bHRpcGFydENvbnRlbnQoZmFsc2UpCiAgICAgLCBtX3dhaXRpbmdGb3JDb250ZW50
UG9saWN5KGZhbHNlKQogICAgICwgbV90aW1lT2ZMYXN0RGF0YVJlY2VpdmVkKDAuMCkKLSAgICAs
IG1fc3Vic3RpdHV0ZURhdGFMb2FkSWRlbnRpZmllcigwKQorICAgICwgbV9pZGVudGlmaWVyRm9y
TG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlcigwKQogewogfQogCkBAIC05Myw5ICs5NCw5IEBACiAg
ICAgUmVmUHRyPE1haW5SZXNvdXJjZUxvYWRlcj4gcHJvdGVjdCh0aGlzKTsKICAgICBSZWZQdHI8
RnJhbWU+IHByb3RlY3RGcmFtZShtX2RvY3VtZW50TG9hZGVyLT5mcmFtZSgpKTsKIAotICAgIGlm
IChtX3N1YnN0aXR1dGVEYXRhTG9hZElkZW50aWZpZXIpIHsKKyAgICBpZiAobV9pZGVudGlmaWVy
Rm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlcikgewogICAgICAgICBBU1NFUlQoIWxvYWRlcigp
KTsKLSAgICAgICAgZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCktPmRpc3BhdGNoRGlkRmFpbExvYWRp
bmcoZG9jdW1lbnRMb2FkZXIoKSwgbV9zdWJzdGl0dXRlRGF0YUxvYWRJZGVudGlmaWVyLCBlcnJv
cik7CisgICAgICAgIGZyYW1lTG9hZGVyKCktPmNsaWVudCgpLT5kaXNwYXRjaERpZEZhaWxMb2Fk
aW5nKGRvY3VtZW50TG9hZGVyKCksIG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VM
b2FkZXIsIGVycm9yKTsKICAgICB9CiAKICAgICAvLyBJdCBpcyBpbXBvcnRhbnQgdGhhdCB3ZSBj
YWxsIERvY3VtZW50TG9hZGVyOjptYWluUmVjZWl2ZWRFcnJvciBiZWZvcmUgY2FsbGluZyAKQEAg
LTI3Myw3ICsyNzQsNyBAQAogICAgICAgICBBU1NFUlQoIW1fc3Vic3RpdHV0ZURhdGEuaXNWYWxp
ZCgpKTsKICAgICAgICAgZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS0+
bWF5YmVMb2FkTWFpblJlc291cmNlRm9yUmVkaXJlY3QobmV3UmVxdWVzdCwgbV9zdWJzdGl0dXRl
RGF0YSk7CiAgICAgICAgIGlmIChtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSkKLSAgICAgICAg
ICAgIG1fc3Vic3RpdHV0ZURhdGFMb2FkSWRlbnRpZmllciA9IGlkZW50aWZpZXIoKTsKKyAgICAg
ICAgICAgIG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIgPSBpZGVudGlm
aWVyKCk7CiAgICAgfQogCiAgICAgLy8gRklYTUU6IElkZWFsbHkgd2UnZCBzdG9wIHRoZSBJL08g
dW50aWwgd2UgaGVhciBiYWNrIGZyb20gdGhlIG5hdmlnYXRpb24gcG9saWN5IGRlbGVnYXRlCkBA
IC0zNzksNyArMzgwLDIxIEBACiB2b2lkIE1haW5SZXNvdXJjZUxvYWRlcjo6cmVzcG9uc2VSZWNl
aXZlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHIp
CiB7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgbV9yZXNvdXJjZSA9PSByZXNvdXJjZSk7
Ci0gICAgaWYgKGRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCktPm1heWJl
TG9hZEZhbGxiYWNrRm9yTWFpblJlc3BvbnNlKHJlcXVlc3QoKSwgcikpCisgICAgYm9vbCB3aWxs
TG9hZEZhbGxiYWNrID0gZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS0+
bWF5YmVMb2FkRmFsbGJhY2tGb3JNYWluUmVzcG9uc2UocmVxdWVzdCgpLCByKTsKKworICAgIC8v
IFRoZSBtZW1vcnkgY2FjaGUgZG9lc24ndCB1bmRlcnN0YW5kIHRoZSBhcHBsaWNhdGlvbiBjYWNo
ZSBvciBpdHMgY2FjaGluZyBydWxlcy4gU28gaWYgYSBtYWluIHJlc291cmNlIGlzIHNlcnZlZAor
ICAgIC8vIGZyb20gdGhlIGFwcGxpY2F0aW9uIGNhY2hlLCBlbnN1cmUgd2UgZG9uJ3Qgc2F2ZSB0
aGUgcmVzdWx0IGZvciBmdXR1cmUgdXNlLgorICAgIGJvb2wgc2hvdWxkUmVtb3ZlUmVzb3VyY2VG
cm9tQ2FjaGUgPSB3aWxsTG9hZEZhbGxiYWNrOworI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorICAg
IC8vIGNocm9taXVtJ3MgQXBwbGljYXRpb25DYWNoZUhvc3QgaW1wbGVtZW50YXRpb24gYWx3YXlz
IHJldHVybnMgdHJ1ZSBmb3IgbWF5YmVMb2FkRmFsbGJhY2tGb3JNYWluUmVzcG9uc2UoKS4gSG93
ZXZlciwgYWxsIHJlc3BvbnNlcyBsb2FkZWQKKyAgICAvLyBmcm9tIGFwcGNhY2hlIHdpbGwgaGF2
ZSBhIG5vbi16ZXJvIGFwcENhY2hlSUQoKS4KKyAgICBpZiAoci5hcHBDYWNoZUlEKCkpCisgICAg
ICAgIHNob3VsZFJlbW92ZVJlc291cmNlRnJvbUNhY2hlID0gdHJ1ZTsKKyNlbmRpZgorICAgIGlm
IChzaG91bGRSZW1vdmVSZXNvdXJjZUZyb21DYWNoZSkKKyAgICAgICAgbWVtb3J5Q2FjaGUoKS0+
cmVtb3ZlKG1fcmVzb3VyY2UuZ2V0KCkpOworCisgICAgaWYgKHdpbGxMb2FkRmFsbGJhY2spCiAg
ICAgICAgIHJldHVybjsKIAogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCB4
RnJhbWVPcHRpb25IZWFkZXIsICgieC1mcmFtZS1vcHRpb25zIiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCkpOwpAQCAtNTIyLDcgKzUzNyw3IEBACiAKICAgICBpZiAoIWxvYWRl
cigpKSB7CiAgICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCktPmRpc3BhdGNoRGlkRmlu
aXNoTG9hZGluZyhkb2N1bWVudExvYWRlcigpLCBpZGVudGlmaWVyKCksIGZpbmlzaFRpbWUpOwot
ICAgICAgICBtX3N1YnN0aXR1dGVEYXRhTG9hZElkZW50aWZpZXIgPSAwOworICAgICAgICBtX2lk
ZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyID0gMDsKICAgICB9CiAKICNpZiBV
U0UoQ09OVEVOVF9GSUxURVJJTkcpCkBAIC01NDIsNiArNTU3LDEzIEBACiAgICAgZG9jdW1lbnRM
b2FkZXIoKS0+dGltaW5nKCktPnNldFJlc3BvbnNlRW5kKGZpbmlzaFRpbWUgPyBmaW5pc2hUaW1l
IDogKG1fdGltZU9mTGFzdERhdGFSZWNlaXZlZCA/IG1fdGltZU9mTGFzdERhdGFSZWNlaXZlZCA6
IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpKSk7CiAgICAgZG9jdW1lbnRMb2FkZXIoKS0+
ZmluaXNoZWRMb2FkaW5nKCk7CiAKKyAgICAvLyBJZiB0aGUgZG9jdW1lbnQgc3BlY2lmaWVkIGFu
IGFwcGxpY2F0aW9uIGNhY2hlIG1hbmlmZXN0LCBpdCB2aW9sYXRlcyB0aGUgYXV0aG9yJ3MgaW50
ZW50IGlmIHdlIHN0b3JlIGl0IGluIHRoZSBtZW1vcnkgY2FjaGUKKyAgICAvLyBhbmQgZGVueSB0
aGUgYXBwY2FjaGUgdGhlIGNoYW5jZSB0byBpbnRlcmNlcHQgaXQgaW4gdGhlIGZ1dHVyZSwgc28g
cmVtb3ZlIGZyb20gdGhlIG1lbW9yeSBjYWNoZS4KKyAgICBpZiAoRnJhbWUqIGZyYW1lID0gZG9j
dW1lbnRMb2FkZXIoKS0+ZnJhbWUoKSkgeworICAgICAgICBpZiAobV9yZXNvdXJjZSAmJiBmcmFt
ZS0+ZG9jdW1lbnQoKS0+aGFzTWFuaWZlc3QoKSkKKyAgICAgICAgICAgIG1lbW9yeUNhY2hlKCkt
PnJlbW92ZShtX3Jlc291cmNlLmdldCgpKTsKKyAgICB9CisKICAgICBkbC0+YXBwbGljYXRpb25D
YWNoZUhvc3QoKS0+ZmluaXNoZWRMb2FkaW5nTWFpblJlc291cmNlKCk7CiB9CiAKQEAgLTY0NCw5
ICs2NjYsOSBAQAogICAgIGRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkt
Pm1heWJlTG9hZE1haW5SZXNvdXJjZShyZXF1ZXN0LCBtX3N1YnN0aXR1dGVEYXRhKTsKIAogICAg
IGlmIChtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSkgewotICAgICAgICBtX3N1YnN0aXR1dGVE
YXRhTG9hZElkZW50aWZpZXIgPSBtX2RvY3VtZW50TG9hZGVyLT5mcmFtZSgpLT5wYWdlKCktPnBy
b2dyZXNzKCktPmNyZWF0ZVVuaXF1ZUlkZW50aWZpZXIoKTsKLSAgICAgICAgZnJhbWVMb2FkZXIo
KS0+bm90aWZpZXIoKS0+YXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3QobV9zdWJzdGl0
dXRlRGF0YUxvYWRJZGVudGlmaWVyLCBkb2N1bWVudExvYWRlcigpLCByZXF1ZXN0KTsKLSAgICAg
ICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS0+ZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3QoZG9j
dW1lbnRMb2FkZXIoKSwgbV9zdWJzdGl0dXRlRGF0YUxvYWRJZGVudGlmaWVyLCByZXF1ZXN0LCBS
ZXNvdXJjZVJlc3BvbnNlKCkpOworICAgICAgICBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJl
c291cmNlTG9hZGVyID0gbV9kb2N1bWVudExvYWRlci0+ZnJhbWUoKS0+cGFnZSgpLT5wcm9ncmVz
cygpLT5jcmVhdGVVbmlxdWVJZGVudGlmaWVyKCk7CisgICAgICAgIGZyYW1lTG9hZGVyKCktPm5v
dGlmaWVyKCktPmFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KG1faWRlbnRpZmllckZv
ckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIsIGRvY3VtZW50TG9hZGVyKCksIHJlcXVlc3QpOwor
ICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLT5kaXNwYXRjaFdpbGxTZW5kUmVxdWVz
dChkb2N1bWVudExvYWRlcigpLCBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9h
ZGVyLCByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlKCkpOwogICAgICAgICBoYW5kbGVTdWJzdGl0
dXRlRGF0YUxvYWRTb29uKHJlcXVlc3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNjU5
LDEzICs2ODEsMjAgQEAKICAgICAgICAgZG9jdW1lbnRMb2FkZXIoKS0+c2V0UmVxdWVzdChSZXNv
dXJjZVJlcXVlc3QoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgaWYgKCFsb2FkZXIo
KSkgeworICAgICAgICBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyID0g
bV9kb2N1bWVudExvYWRlci0+ZnJhbWUoKS0+cGFnZSgpLT5wcm9ncmVzcygpLT5jcmVhdGVVbmlx
dWVJZGVudGlmaWVyKCk7CisgICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCktPmFzc2ln
bklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVz
b3VyY2VMb2FkZXIsIGRvY3VtZW50TG9hZGVyKCksIHJlcXVlc3QpOworICAgICAgICBmcmFtZUxv
YWRlcigpLT5ub3RpZmllcigpLT5kaXNwYXRjaFdpbGxTZW5kUmVxdWVzdChkb2N1bWVudExvYWRl
cigpLCBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyLCByZXF1ZXN0LCBS
ZXNvdXJjZVJlc3BvbnNlKCkpOworICAgIH0KICAgICBtX3Jlc291cmNlLT5hZGRDbGllbnQodGhp
cyk7CiAKLSAgICAvLyBXZSBuZWVkIHRvIHdhaXQgdW50aWwgYWZ0ZXIgcmVxdWVzdE1haW5SZXNv
dXJjZSgpIGlzIGNhbGxlZCB0byBzZXRSZXF1ZXN0KCksIGJlY2F1c2UgdGhlcmUgYXJlIGEgYnVu
Y2ggb2YgaGVhZGVycyBzZXQgd2hlbgotICAgIC8vIHRoZSB1bmRlcmx5aW5nIFJlc291cmNlTG9h
ZGVyIGlzIGNyZWF0ZWQsIGFuZCBEb2N1bWVudExvYWRlcjo6bV9yZXF1ZXN0IG5lZWRzIHRvIGlu
Y2x1ZGUgdGhvc2UuIEhvd2V2ZXIsIHRoZSBjYWNoZSB3aWxsCi0gICAgLy8gc3RyaXAgdGhlIGZy
YWdtZW50IGlkZW50aWZpZXIgKHdoaWNoIERvY3VtZW50TG9hZGVyOjptX3JlcXVlc3Qgc2hvdWxk
IGFsc28gaW5jbHVkZSksIHNvIGFkZCB0aGF0IGJhY2sgaW4uCisgICAgLy8gQSBidW5jaCBvZiBo
ZWFkZXJzIGFyZSBzZXQgd2hlbiB0aGUgdW5kZXJseWluZyBSZXNvdXJjZUxvYWRlciBpcyBjcmVh
dGVkLCBhbmQgRG9jdW1lbnRMb2FkZXI6Om1fcmVxdWVzdCBuZWVkcyB0byBpbmNsdWRlIHRob3Nl
LgogICAgIGlmIChsb2FkZXIoKSkKICAgICAgICAgcmVxdWVzdCA9IGxvYWRlcigpLT5vcmlnaW5h
bFJlcXVlc3QoKTsKKyAgICAvLyBJZiB0aGVyZSB3YXMgYSBmcmFnbWVudCBpZGVudGlmaWVyIG9u
IGluaXRpYWxSZXF1ZXN0LCB0aGUgY2FjaGUgd2lsbCBoYXZlIHN0cmlwcGVkIGl0LiBEb2N1bWVu
dExvYWRlcjo6bV9yZXF1ZXN0IHNob3VsZCBpbmNsdWRlCisgICAgLy8gdGhlIGZyYWdtZW50IGlk
ZW50aWZpZXIsIHNvIGFkZCB0aGF0IGJhY2sgaW4uCisgICAgaWYgKGVxdWFsSWdub3JpbmdGcmFn
bWVudElkZW50aWZpZXIoaW5pdGlhbFJlcXVlc3QudXJsKCksIHJlcXVlc3QudXJsKCkpKQorICAg
ICAgICByZXF1ZXN0LnNldFVSTChpbml0aWFsUmVxdWVzdC51cmwoKSk7CiAgICAgZG9jdW1lbnRM
b2FkZXIoKS0+c2V0UmVxdWVzdChyZXF1ZXN0KTsKIH0KIApAQCAtNjkzLDkgKzcyMiw5IEBACiAK
IHVuc2lnbmVkIGxvbmcgTWFpblJlc291cmNlTG9hZGVyOjppZGVudGlmaWVyKCkgY29uc3QKIHsK
LSAgICBBU1NFUlQoIW1fc3Vic3RpdHV0ZURhdGFMb2FkSWRlbnRpZmllciB8fCAhbG9hZGVyKCkg
fHwgIWxvYWRlcigpLT5pZGVudGlmaWVyKCkpOwotICAgIGlmIChtX3N1YnN0aXR1dGVEYXRhTG9h
ZElkZW50aWZpZXIpCi0gICAgICAgIHJldHVybiBtX3N1YnN0aXR1dGVEYXRhTG9hZElkZW50aWZp
ZXI7CisgICAgQVNTRVJUKCFtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVy
IHx8ICFsb2FkZXIoKSB8fCAhbG9hZGVyKCktPmlkZW50aWZpZXIoKSk7CisgICAgaWYgKG1faWRl
bnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIpCisgICAgICAgIHJldHVybiBtX2lk
ZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyOwogICAgIGlmIChSZXNvdXJjZUxv
YWRlciogcmVzb3VyY2VMb2FkZXIgPSBsb2FkZXIoKSkKICAgICAgICAgcmV0dXJuIHJlc291cmNl
TG9hZGVyLT5pZGVudGlmaWVyKCk7CiAgICAgcmV0dXJuIDA7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAxNDA5NzYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEyOCw3ICsxMjgsNyBAQAogICAgIGJvb2wgbV9sb2FkaW5nTXVsdGlwYXJ0Q29udGVudDsKICAg
ICBib29sIG1fd2FpdGluZ0ZvckNvbnRlbnRQb2xpY3k7CiAgICAgZG91YmxlIG1fdGltZU9mTGFz
dERhdGFSZWNlaXZlZDsKLSAgICB1bnNpZ25lZCBsb25nIG1fc3Vic3RpdHV0ZURhdGFMb2FkSWRl
bnRpZmllcjsKKyAgICB1bnNpZ25lZCBsb25nIG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVz
b3VyY2VMb2FkZXI7CiAKICNpZiBVU0UoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAgT3duUHRyPENv
bnRlbnRGaWx0ZXI+IG1fY29udGVudEZpbHRlcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcAkocmV2aXNpb24gMTQwOTc2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg5Niw2ICsyODk2LDEwIEBACiAg
ICAgaWYgKCFyZXNvdXJjZS0+c2hvdWxkU2VuZFJlc291cmNlTG9hZENhbGxiYWNrcygpIHx8IG1f
ZG9jdW1lbnRMb2FkZXItPmhhdmVUb2xkQ2xpZW50QWJvdXRMb2FkKHJlc291cmNlLT51cmwoKSkp
CiAgICAgICAgIHJldHVybjsKIAorICAgIC8vIE1haW4gcmVzb3VyY2UgZGVsZWdhdGUgbWVzc2Fn
ZXMgYXJlIHN5bnRoZXNpemVkIGluIE1haW5SZXNvdXJjZUxvYWRlciwgc28gd2UgbXVzdCBub3Qg
c2VuZCB0aGVtIGhlcmUuCisgICAgaWYgKHJlc291cmNlLT50eXBlKCkgPT0gQ2FjaGVkUmVzb3Vy
Y2U6Ok1haW5SZXNvdXJjZSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKCFwYWdlLT5hcmVN
ZW1vcnlDYWNoZUNsaWVudENhbGxzRW5hYmxlZCgpKSB7CiAgICAgICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKHBhZ2UsIG1fZG9jdW1l
bnRMb2FkZXIuZ2V0KCksIHJlc291cmNlKTsKICAgICAgICAgbV9kb2N1bWVudExvYWRlci0+cmVj
b3JkTWVtb3J5Q2FjaGVMb2FkRm9yRnV0dXJlQ2xpZW50Tm90aWZpY2F0aW9uKHJlc291cmNlLT51
cmwoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCShyZXZpc2lvbiAx
NDA5NzYpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTY1LDYgKzY1LDcgQEAKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAi
TGFuZ3VhZ2UuaCIKICNpbmNsdWRlICJNYWxsb2NTdGF0aXN0aWNzLmgiCisjaW5jbHVkZSAiTWVt
b3J5Q2FjaGUuaCIKICNpbmNsdWRlICJNb2NrUGFnZVBvcHVwRHJpdmVyLmgiCiAjaW5jbHVkZSAi
Tm9kZVJlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC0yOTEsNiArMjky
LDE0IEBACiAgICAgcmV0dXJuIGRvY3VtZW50LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5pc1By
ZWxvYWRlZCh1cmwpOwogfQogCitib29sIEludGVybmFsczo6aXNMb2FkaW5nRnJvbU1lbW9yeUNh
Y2hlKGNvbnN0IFN0cmluZyYgdXJsKQoreworICAgIGlmICghY29udGV4dERvY3VtZW50KCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UgPSBtZW1v
cnlDYWNoZSgpLT5yZXNvdXJjZUZvclVSTChjb250ZXh0RG9jdW1lbnQoKS0+Y29tcGxldGVVUkwo
dXJsKSk7CisgICAgcmV0dXJuIHJlc291cmNlICYmIHJlc291cmNlLT5zdGF0dXMoKSA9PSBDYWNo
ZWRSZXNvdXJjZTo6Q2FjaGVkOworfQorCiBQYXNzUmVmUHRyPEVsZW1lbnQ+IEludGVybmFsczo6
Y3JlYXRlQ29udGVudEVsZW1lbnQoRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgRG9jdW1lbnQq
IGRvY3VtZW50ID0gY29udGV4dERvY3VtZW50KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmgJKHJldmlzaW9uIDE0MDk3NikKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmgJKHdvcmtpbmcgY29weSkKQEAgLTcyLDYgKzcyLDcgQEAKICAgICBTdHJpbmcgYWRk
cmVzcyhOb2RlKik7CiAKICAgICBib29sIGlzUHJlbG9hZGVkKGNvbnN0IFN0cmluZyYgdXJsKTsK
KyAgICBib29sIGlzTG9hZGluZ0Zyb21NZW1vcnlDYWNoZShjb25zdCBTdHJpbmcmIHVybCk7CiAK
ICAgICBzaXplX3QgbnVtYmVyT2ZTY29wZWRIVE1MU3R5bGVDaGlsZHJlbihjb25zdCBOb2RlKiwg
RXhjZXB0aW9uQ29kZSYpIGNvbnN0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuaWRsCShyZXZpc2lvbiAxNDA5NzYpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKIAogICAgIERPTVN0cmlu
ZyBlbGVtZW50UmVuZGVyVHJlZUFzVGV4dChpbiBFbGVtZW50IGVsZW1lbnQpIHJhaXNlcyhET01F
eGNlcHRpb24pOwogICAgIGJvb2xlYW4gaXNQcmVsb2FkZWQoaW4gRE9NU3RyaW5nIHVybCk7Cisg
ICAgYm9vbGVhbiBpc0xvYWRpbmdGcm9tTWVtb3J5Q2FjaGUoaW4gRE9NU3RyaW5nIHVybCk7CiAK
ICAgICB1bnNpZ25lZCBsb25nIG51bWJlck9mU2NvcGVkSFRNTFN0eWxlQ2hpbGRyZW4oaW4gTm9k
ZSBzY29wZSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAkocmV2aXNpb24gMTQwOTc2KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODEzLDYgKzgxMywxMSBAQAogICAgIHJldHVybiBtX2ltcGxl
bWVudGF0aW9uLmdldCgpOwogfQogCitib29sIERvY3VtZW50OjpoYXNNYW5pZmVzdCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIGRvY3VtZW50RWxlbWVudCgpICYmIGRvY3VtZW50RWxlbWVudCgpLT5o
YXNUYWdOYW1lKGh0bWxUYWcpICYmIGRvY3VtZW50RWxlbWVudCgpLT5oYXNBdHRyaWJ1dGUobWFu
aWZlc3RBdHRyKTsKK30KKwogdm9pZCBEb2N1bWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hh
bmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFmdGVyQ2hhbmdlLCBpbnQg
Y2hpbGRDb3VudERlbHRhKQogewogICAgIENvbnRhaW5lck5vZGU6OmNoaWxkcmVuQ2hhbmdlZChj
aGFuZ2VkQnlQYXJzZXIsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0
YSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNpb24gMTQwOTc2KQorKysgU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0MCw2ICszNDAsOCBA
QAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fZG9jdW1lbnRFbGVtZW50LmdldCgpOwogICAgIH0K
KworICAgIGJvb2wgaGFzTWFuaWZlc3QoKSBjb25zdDsKICAgICAKICAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8RWxlbWVudD4gY3JlYXRlRWxlbWVudChjb25zdCBBdG9taWNTdHJpbmcmIHRhZ05hbWUs
IEV4Y2VwdGlvbkNvZGUmKTsKICAgICBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0
ZURvY3VtZW50RnJhZ21lbnQoKTsKSW5kZXg6IFNvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0
ZXIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgkocmV2aXNp
b24gMTQwOTc2KQorKysgU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgkod29ya2luZyBj
b3B5KQpAQCAtNTAsMTAgKzUwLDEyIEBACiBfWk43V2ViQ29yZTEwQ2xpZW50UmVjdEMxRXY7CiBf
Wk43V2ViQ29yZTEwQ2xpZW50UmVjdEMxRVJLTlNfN0ludFJlY3RFOwogX1pON1dlYkNvcmUxMFNo
YWRvd1Jvb3Q2Y3JlYXRlRVBOU183RWxlbWVudEVSaTsKK19aTjdXZWJDb3JlMTFtZW1vcnlDYWNo
ZUV2OwogX1pON1dlYkNvcmUxMUV2ZW50VGFyZ2V0MTd0b0dlbmVyYXRlZFN0cmVhbUV2OwogX1pO
N1dlYkNvcmUxMUV2ZW50VGFyZ2V0OHRvU3RyZWFtRXY7CiBfWk43V2ViQ29yZTExSGlzdG9yeUl0
ZW0xNnNldERvY3VtZW50U3RhdGVFUktOM1dURjZWZWN0b3JJTlMxXzZTdHJpbmdFTGowRUVFOwog
X1pON1dlYkNvcmUxMUhpc3RvcnlJdGVtMTZzZXREb2N1bWVudFN0YXRlRVJLTjNXVEY2VmVjdG9y
SU5TMV82U3RyaW5nRUxtMEVFRTsKK19aTjdXZWJDb3JlMTFNZW1vcnlDYWNoZTE0cmVzb3VyY2VG
b3JVUkxFUktOU180S1VSTEU7CiBfWk43V2ViQ29yZTEyVGV4dEl0ZXJhdG9yMjZyYW5nZUZyb21M
b2NhdGlvbkFuZExlbmd0aEVQTlNfMTNDb250YWluZXJOb2RlRWlpYjsKIF9aTjdXZWJDb3JlMTJU
ZXh0SXRlcmF0b3IyOWdldExvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlRVBOU183RWxlbWVudEVQ
S05TXzVSYW5nZUVSalM2XzsKIF9aTjdXZWJDb3JlMTJUZXh0SXRlcmF0b3IyOWdldExvY2F0aW9u
QW5kTGVuZ3RoRnJvbVJhbmdlRVBOU183RWxlbWVudEVQS05TXzVSYW5nZUVSbVM2XzsKQEAgLTE0
Niw2ICsxNDgsNyBAQAogX1pOSzdXZWJDb3JlNUZyYW1lOHNldHRpbmdzRXY7CiBfWk5LN1dlYkNv
cmU2SlNOb2RlMjFwdXNoRXZlbnRIYW5kbGVyU2NvcGVFUE4zSlNDOUV4ZWNTdGF0ZUVQTlMxXzE0
U2NvcGVDaGFpbk5vZGVFOwogX1pOSzdXZWJDb3JlN0VsZW1lbnQ2c2hhZG93RXY7CitfWk5LN1dl
YkNvcmU4RG9jdW1lbnQxMWNvbXBsZXRlVVJMRVJLTjNXVEY2U3RyaW5nRTsKIF9aTks3V2ViQ29y
ZThEb2N1bWVudDRwYWdlRXY7CiBfWk5LN1dlYkNvcmU4RG9jdW1lbnQ4c2V0dGluZ3NFdjsKIF9a
Tks3V2ViQ29yZThEb2N1bWVudDR2aWV3RXY7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185260</attachid>
            <date>2013-01-29 10:31:23 -0800</date>
            <delta_ts>2013-01-29 12:07:51 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-105667-20130129102809.patch</filename>
            <type>text/plain</type>
            <size>40208</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDE0MTEz
MykKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDEzLTAx
LTI1ICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgRW5hYmxl
IHJldXNlIG9mIGNhY2hlZCBtYWluIHJlc291cmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1NjY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRh
bSBCYXJ0aC4KKworICAgICAgICAqIFNvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXI6IEV4
cG9zZSBNZW1vcnlDYWNoZTo6cmVzb3VyY2VGb3JVUkwoKS4KKwogMjAxMy0wMS0yOSAgTGFzemxv
IEdvbWJvcyAgPGwuZ29tYm9zQHNhbXN1bmcuY29tPgogCiAgICAgICAgIEVuYWJsZSBXb3JrZXJz
IGZvciBXaW5DRQpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQxMTMzKQorKysgU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTYgQEAKKzIwMTMtMDEt
MjUgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBFbmFibGUg
cmV1c2Ugb2YgY2FjaGVkIG1haW4gcmVzb3VyY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDU2NjcKKworICAgICAgICBSZXZpZXdlZCBieSBBZGFt
IEJhcnRoLgorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvY2FjaGUvY2FjaGVkLW1haW4tcmVz
b3VyY2UuaHRtbAorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogZG9tL0Rv
Y3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpoYXNNYW5pZmVzdCk6IFJl
dHVybnMgdHJ1ZSBpZiB0aGUgPGh0bWw+IGVsZW1lbnQgaGFzIGEgbm9uLWVtcHR5IG1hbmlmZXN0
IGF0dHJpYnV0ZS4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5o
OgorICAgICAgICAoRG9jdW1lbnQpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZGVkUmVzb3VyY2VGcm9tTWVtb3J5
Q2FjaGUpOiBEb24ndCBzZW5kIGRlbGVnYXRlIGNhbGxiYWNrcyBmb3IgY2FjaGUgaGl0IGhlcmUs
IHNpbmNlCisgICAgICAgICAgICBNYWluUmVzb3VyY2VMb2FkZXIgd2lsbCB0YWtlIGNhcmUgb2Yg
aXQuCisgICAgICAgICogbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNYWluUmVzb3VyY2VMb2FkZXI6Ok1haW5SZXNvdXJjZUxvYWRlcik6CisgICAgICAg
IChXZWJDb3JlOjpNYWluUmVzb3VyY2VMb2FkZXI6OnJlY2VpdmVkRXJyb3IpOgorICAgICAgICAo
V2ViQ29yZTo6TWFpblJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TWFpblJlc291cmNlTG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKTogRG9uJ3QgdHJ5
IHRvIGNhY2hlIGxvYWRzIGZyb20gdGhlIGFwcGxpY2F0aW9uIGNhY2hlLgorICAgICAgICAoV2Vi
Q29yZTo6TWFpblJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKTogRG9uJ3QgdHJ5IHRv
IGNhY2hlIGxvYWRzIGZyb20gdGhlIGFwcGxpY2F0aW9uIGNhY2hlLgorICAgICAgICAoV2ViQ29y
ZTo6TWFpblJlc291cmNlTG9hZGVyOjpsb2FkKTogRW5zdXJlIHdlIGNyZWF0ZSBhIHJlc291cmNl
IGxvYWQgaWRlbnRpZmllciBmb3IgY2FjaGUgaGl0cy4gQWxzbywKKyAgICAgICAgICAgIGVuc3Vy
ZSB3ZSBjb3JyZWN0bHkgcG9wdWFsYXRlIGZyYWdtZW50IGlkZW50aWZpZXJzIGluIHRoZSBSZXNv
dXJjZVJlcXVlc3QgcmVwb3J0ZWQgdG8gRG9jdW1lbnRMb2FkZXIuCisgICAgICAgIChXZWJDb3Jl
OjpNYWluUmVzb3VyY2VMb2FkZXI6OmlkZW50aWZpZXIpOgorICAgICAgICAqIGxvYWRlci9NYWlu
UmVzb3VyY2VMb2FkZXIuaDogUmVuYW1lIG1fc3Vic3RpdHV0ZURhdGFMb2FkSWRlbnRpZmllciB0
byBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyCisgICAgICAgICAgICB0
byBiZXR0ZXIgZGVzY3JpYmUgd2hlbiBpdCBpcyB1c2VkLgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNv
dXJjZTo6ZGlkQWRkQ2xpZW50KTogU3ludGhlc2l6ZSByZWRpcmVjdCBub3RpZmljYXRpb25zIGZv
ciBjYWNoZSBoaXRzIGlmIG5lY2Vzc2FyeS4KKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jl
c291cmNlOjp3aWxsU2VuZFJlcXVlc3QpOiBOb3RlIHRoZSByZWRpcmVjdHMgd2UgcmVjZWl2ZWQu
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6Y2FuUmV1c2UpOiBEb24ndCBy
ZXVzZSBhIHJlc291cmNlIGlmIHRoZSByZWRpcmVjdCBjaGFpbiBpbmNsdWRlZCBhICJDYWNoZS1j
b250cm9sOiBuby1zdG9yZSIuCisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291
cmNlLmg6CisgICAgICAgIChDYWNoZWRSYXdSZXNvdXJjZSk6CisgICAgICAgIChSZWRpcmVjdFBh
aXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OlJlZGlyZWN0UGFpcjo6
UmVkaXJlY3RQYWlyKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmFkZENsaWVudFRvU2V0KTogRG9u
J3QgcmV0dXJuIGNhY2hlZCBkYXRhIGZvciBhIG1haW4gcmVzb3VyY2Ugc3luY2hyb25vdXNseQor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkUmVzb3VyY2U6OmNhblJldXNlKToKKyAgICAgICAgKENhY2hlZFJlc291cmNlKToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZSk6IExlYXZl
IGNhaGNlIHJldXNlIG9mIG1haW4gcmVzb3VyY2VzIG9mZiBmb3IgY2hyb21pdW0gZm9yIG5vdy4K
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpkZXRlcm1pbmVSZXZhbGlk
YXRpb25Qb2xpY3kpOiBQZXJtaXQgY2FjaGUgcmV1c2UgZm9yIG1haW4gcmVzb3VyY2VzLgorICAg
ICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFs
czo6aXNQcmVsb2FkZWQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnRlcm5hbHM6OmlzTG9hZGluZ0Zyb21NZW1vcnlDYWNoZSk6CisgICAgICAgICogdGVzdGluZy9J
bnRlcm5hbHMuaDoKKyAgICAgICAgKEludGVybmFscyk6CisgICAgICAgICogdGVzdGluZy9JbnRl
cm5hbHMuaWRsOgorCiAyMDEzLTAxLTI5ICBFbGxpb3R0IFNwcmVobiAgPGVzcHJlaG5AY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIE1vdmUgRWxlbWVudFNoYWRvdyBjcmVhdGlvbiB0byBFbGVtZW50
UmFyZURhdGEKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxNDExMzMpCisrKyBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMTQ1LDYgKzE0
NSw3IEBAIF9fWk43V2ViQ29yZTExTWVtb3J5Q2FjaGUxMXNldERpc2FibGVkRWIKIF9fWk43V2Vi
Q29yZTExTWVtb3J5Q2FjaGUxM2dldFN0YXRpc3RpY3NFdgogX19aTjdXZWJDb3JlMTFNZW1vcnlD
YWNoZTEzc2V0Q2FwYWNpdGllc0VqamoKIF9fWk43V2ViQ29yZTExTWVtb3J5Q2FjaGUxNGV2aWN0
UmVzb3VyY2VzRXYKK19fWk43V2ViQ29yZTExTWVtb3J5Q2FjaGUxNHJlc291cmNlRm9yVVJMRVJL
TlNfNEtVUkxFCiBfX1pON1dlYkNvcmUxMU1lbW9yeUNhY2hlMTlnZXRPcmlnaW5zV2l0aENhY2hl
RVJOM1dURjdIYXNoU2V0SU5TMV82UmVmUHRySU5TXzE0U2VjdXJpdHlPcmlnaW5FRUVOU18xOFNl
Y3VyaXR5T3JpZ2luSGFzaEVOUzFfMTBIYXNoVHJhaXRzSVM1X0VFRUUKIF9fWk43V2ViQ29yZTEx
TWVtb3J5Q2FjaGUyNXJlbW92ZVJlc291cmNlc1dpdGhPcmlnaW5FUE5TXzE0U2VjdXJpdHlPcmln
aW5FCiBfX1pON1dlYkNvcmUxMVVSTFdpdGhEYXRhRVA2TlNEYXRhUDVOU1VSTApJbmRleDogU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAxNDExMzMpCisrKyBTb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MTMsNiArODEzLDExIEBAIERPTUlt
cGxlbWVudGF0aW9uKiBEb2N1bWVudDo6aW1wbGVtZW50YXQKICAgICByZXR1cm4gbV9pbXBsZW1l
bnRhdGlvbi5nZXQoKTsKIH0KIAorYm9vbCBEb2N1bWVudDo6aGFzTWFuaWZlc3QoKSBjb25zdAor
eworICAgIHJldHVybiBkb2N1bWVudEVsZW1lbnQoKSAmJiBkb2N1bWVudEVsZW1lbnQoKS0+aGFz
VGFnTmFtZShodG1sVGFnKSAmJiBkb2N1bWVudEVsZW1lbnQoKS0+aGFzQXR0cmlidXRlKG1hbmlm
ZXN0QXR0cik7Cit9CisKIHZvaWQgRG9jdW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5n
ZWRCeVBhcnNlciwgTm9kZSogYmVmb3JlQ2hhbmdlLCBOb2RlKiBhZnRlckNoYW5nZSwgaW50IGNo
aWxkQ291bnREZWx0YSkKIHsKICAgICBDb250YWluZXJOb2RlOjpjaGlsZHJlbkNoYW5nZWQoY2hh
bmdlZEJ5UGFyc2VyLCBiZWZvcmVDaGFuZ2UsIGFmdGVyQ2hhbmdlLCBjaGlsZENvdW50RGVsdGEp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDE0MTEzMykKKysrIFNvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNDAsNiArMzQwLDggQEAg
cHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIG1fZG9jdW1lbnRFbGVtZW50LmdldCgpOwog
ICAgIH0KKworICAgIGJvb2wgaGFzTWFuaWZlc3QoKSBjb25zdDsKICAgICAKICAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8RWxlbWVudD4gY3JlYXRlRWxlbWVudChjb25zdCBBdG9taWNTdHJpbmcmIHRh
Z05hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+
IGNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcAkocmV2aXNpb24gMTQxMTMzKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg5Niw2ICsyODk2LDEwIEBAIHZvaWQg
RnJhbWVMb2FkZXI6OmxvYWRlZFJlc291cmNlRnJvbU1lbW8KICAgICBpZiAoIXJlc291cmNlLT5z
aG91bGRTZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCkgfHwgbV9kb2N1bWVudExvYWRlci0+aGF2
ZVRvbGRDbGllbnRBYm91dExvYWQocmVzb3VyY2UtPnVybCgpKSkKICAgICAgICAgcmV0dXJuOwog
CisgICAgLy8gTWFpbiByZXNvdXJjZSBkZWxlZ2F0ZSBtZXNzYWdlcyBhcmUgc3ludGhlc2l6ZWQg
aW4gTWFpblJlc291cmNlTG9hZGVyLCBzbyB3ZSBtdXN0IG5vdCBzZW5kIHRoZW0gaGVyZS4KKyAg
ICBpZiAocmVzb3VyY2UtPnR5cGUoKSA9PSBDYWNoZWRSZXNvdXJjZTo6TWFpblJlc291cmNlKQor
ICAgICAgICByZXR1cm47CisKICAgICBpZiAoIXBhZ2UtPmFyZU1lbW9yeUNhY2hlQ2xpZW50Q2Fs
bHNFbmFibGVkKCkpIHsKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRMb2Fk
UmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUocGFnZSwgbV9kb2N1bWVudExvYWRlci5nZXQoKSwgcmVz
b3VyY2UpOwogICAgICAgICBtX2RvY3VtZW50TG9hZGVyLT5yZWNvcmRNZW1vcnlDYWNoZUxvYWRG
b3JGdXR1cmVDbGllbnROb3RpZmljYXRpb24ocmVzb3VyY2UtPnVybCgpKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAxNDEx
MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5o
IgogI2luY2x1ZGUgIkhpc3RvcnlJdGVtLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmgiCisjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAj
aW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VCdWZmZXIuaCIK
QEAgLTczLDcgKzc0LDcgQEAgTWFpblJlc291cmNlTG9hZGVyOjpNYWluUmVzb3VyY2VMb2FkZXIo
RAogICAgICwgbV9sb2FkaW5nTXVsdGlwYXJ0Q29udGVudChmYWxzZSkKICAgICAsIG1fd2FpdGlu
Z0ZvckNvbnRlbnRQb2xpY3koZmFsc2UpCiAgICAgLCBtX3RpbWVPZkxhc3REYXRhUmVjZWl2ZWQo
MC4wKQotICAgICwgbV9zdWJzdGl0dXRlRGF0YUxvYWRJZGVudGlmaWVyKDApCisgICAgLCBtX2lk
ZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyKDApCiB7CiB9CiAKQEAgLTkzLDkg
Kzk0LDkgQEAgdm9pZCBNYWluUmVzb3VyY2VMb2FkZXI6OnJlY2VpdmVkRXJyb3IoYwogICAgIFJl
ZlB0cjxNYWluUmVzb3VyY2VMb2FkZXI+IHByb3RlY3QodGhpcyk7CiAgICAgUmVmUHRyPEZyYW1l
PiBwcm90ZWN0RnJhbWUobV9kb2N1bWVudExvYWRlci0+ZnJhbWUoKSk7CiAKLSAgICBpZiAobV9z
dWJzdGl0dXRlRGF0YUxvYWRJZGVudGlmaWVyKSB7CisgICAgaWYgKG1faWRlbnRpZmllckZvckxv
YWRXaXRob3V0UmVzb3VyY2VMb2FkZXIpIHsKICAgICAgICAgQVNTRVJUKCFsb2FkZXIoKSk7Ci0g
ICAgICAgIGZyYW1lTG9hZGVyKCktPmNsaWVudCgpLT5kaXNwYXRjaERpZEZhaWxMb2FkaW5nKGRv
Y3VtZW50TG9hZGVyKCksIG1fc3Vic3RpdHV0ZURhdGFMb2FkSWRlbnRpZmllciwgZXJyb3IpOwor
ICAgICAgICBmcmFtZUxvYWRlcigpLT5jbGllbnQoKS0+ZGlzcGF0Y2hEaWRGYWlsTG9hZGluZyhk
b2N1bWVudExvYWRlcigpLCBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVy
LCBlcnJvcik7CiAgICAgfQogCiAgICAgLy8gSXQgaXMgaW1wb3J0YW50IHRoYXQgd2UgY2FsbCBE
b2N1bWVudExvYWRlcjo6bWFpblJlY2VpdmVkRXJyb3IgYmVmb3JlIGNhbGxpbmcgCkBAIC0yNzMs
NyArMjc0LDcgQEAgdm9pZCBNYWluUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdAogICAg
ICAgICBBU1NFUlQoIW1fc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKTsKICAgICAgICAgZG9jdW1l
bnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS0+bWF5YmVMb2FkTWFpblJlc291cmNl
Rm9yUmVkaXJlY3QobmV3UmVxdWVzdCwgbV9zdWJzdGl0dXRlRGF0YSk7CiAgICAgICAgIGlmICht
X3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSkKLSAgICAgICAgICAgIG1fc3Vic3RpdHV0ZURhdGFM
b2FkSWRlbnRpZmllciA9IGlkZW50aWZpZXIoKTsKKyAgICAgICAgICAgIG1faWRlbnRpZmllckZv
ckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIgPSBpZGVudGlmaWVyKCk7CiAgICAgfQogCiAgICAg
Ly8gRklYTUU6IElkZWFsbHkgd2UnZCBzdG9wIHRoZSBJL08gdW50aWwgd2UgaGVhciBiYWNrIGZy
b20gdGhlIG5hdmlnYXRpb24gcG9saWN5IGRlbGVnYXRlCkBAIC0zNzksNyArMzgwLDIxIEBAIHZv
aWQgTWFpblJlc291cmNlTG9hZGVyOjpjb250aW51ZUFmdGVyQ28KIHZvaWQgTWFpblJlc291cmNl
TG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcikKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCBtX3Jl
c291cmNlID09IHJlc291cmNlKTsKLSAgICBpZiAoZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRp
b25DYWNoZUhvc3QoKS0+bWF5YmVMb2FkRmFsbGJhY2tGb3JNYWluUmVzcG9uc2UocmVxdWVzdCgp
LCByKSkKKyAgICBib29sIHdpbGxMb2FkRmFsbGJhY2sgPSBkb2N1bWVudExvYWRlcigpLT5hcHBs
aWNhdGlvbkNhY2hlSG9zdCgpLT5tYXliZUxvYWRGYWxsYmFja0Zvck1haW5SZXNwb25zZShyZXF1
ZXN0KCksIHIpOworCisgICAgLy8gVGhlIG1lbW9yeSBjYWNoZSBkb2Vzbid0IHVuZGVyc3RhbmQg
dGhlIGFwcGxpY2F0aW9uIGNhY2hlIG9yIGl0cyBjYWNoaW5nIHJ1bGVzLiBTbyBpZiBhIG1haW4g
cmVzb3VyY2UgaXMgc2VydmVkCisgICAgLy8gZnJvbSB0aGUgYXBwbGljYXRpb24gY2FjaGUsIGVu
c3VyZSB3ZSBkb24ndCBzYXZlIHRoZSByZXN1bHQgZm9yIGZ1dHVyZSB1c2UuCisgICAgYm9vbCBz
aG91bGRSZW1vdmVSZXNvdXJjZUZyb21DYWNoZSA9IHdpbGxMb2FkRmFsbGJhY2s7CisjaWYgUExB
VEZPUk0oQ0hST01JVU0pCisgICAgLy8gY2hyb21pdW0ncyBBcHBsaWNhdGlvbkNhY2hlSG9zdCBp
bXBsZW1lbnRhdGlvbiBhbHdheXMgcmV0dXJucyB0cnVlIGZvciBtYXliZUxvYWRGYWxsYmFja0Zv
ck1haW5SZXNwb25zZSgpLiBIb3dldmVyLCBhbGwgcmVzcG9uc2VzIGxvYWRlZAorICAgIC8vIGZy
b20gYXBwY2FjaGUgd2lsbCBoYXZlIGEgbm9uLXplcm8gYXBwQ2FjaGVJRCgpLgorICAgIGlmIChy
LmFwcENhY2hlSUQoKSkKKyAgICAgICAgc2hvdWxkUmVtb3ZlUmVzb3VyY2VGcm9tQ2FjaGUgPSB0
cnVlOworI2VuZGlmCisgICAgaWYgKHNob3VsZFJlbW92ZVJlc291cmNlRnJvbUNhY2hlKQorICAg
ICAgICBtZW1vcnlDYWNoZSgpLT5yZW1vdmUobV9yZXNvdXJjZS5nZXQoKSk7CisKKyAgICBpZiAo
d2lsbExvYWRGYWxsYmFjaykKICAgICAgICAgcmV0dXJuOwogCiAgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChBdG9taWNTdHJpbmcsIHhGcmFtZU9wdGlvbkhlYWRlciwgKCJ4LWZyYW1lLW9wdGlvbnMi
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CkBAIC01MjIsNyArNTM3LDcg
QEAgdm9pZCBNYWluUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbgogCiAgICAgaWYgKCFs
b2FkZXIoKSkgewogICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLT5kaXNwYXRjaERp
ZEZpbmlzaExvYWRpbmcoZG9jdW1lbnRMb2FkZXIoKSwgaWRlbnRpZmllcigpLCBmaW5pc2hUaW1l
KTsKLSAgICAgICAgbV9zdWJzdGl0dXRlRGF0YUxvYWRJZGVudGlmaWVyID0gMDsKKyAgICAgICAg
bV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlciA9IDA7CiAgICAgfQogCiAj
aWYgVVNFKENPTlRFTlRfRklMVEVSSU5HKQpAQCAtNTQyLDYgKzU1NywxMyBAQCB2b2lkIE1haW5S
ZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluCiAgICAgZG9jdW1lbnRMb2FkZXIoKS0+dGlt
aW5nKCktPnNldFJlc3BvbnNlRW5kKGZpbmlzaFRpbWUgPyBmaW5pc2hUaW1lIDogKG1fdGltZU9m
TGFzdERhdGFSZWNlaXZlZCA/IG1fdGltZU9mTGFzdERhdGFSZWNlaXZlZCA6IG1vbm90b25pY2Fs
bHlJbmNyZWFzaW5nVGltZSgpKSk7CiAgICAgZG9jdW1lbnRMb2FkZXIoKS0+ZmluaXNoZWRMb2Fk
aW5nKCk7CiAKKyAgICAvLyBJZiB0aGUgZG9jdW1lbnQgc3BlY2lmaWVkIGFuIGFwcGxpY2F0aW9u
IGNhY2hlIG1hbmlmZXN0LCBpdCB2aW9sYXRlcyB0aGUgYXV0aG9yJ3MgaW50ZW50IGlmIHdlIHN0
b3JlIGl0IGluIHRoZSBtZW1vcnkgY2FjaGUKKyAgICAvLyBhbmQgZGVueSB0aGUgYXBwY2FjaGUg
dGhlIGNoYW5jZSB0byBpbnRlcmNlcHQgaXQgaW4gdGhlIGZ1dHVyZSwgc28gcmVtb3ZlIGZyb20g
dGhlIG1lbW9yeSBjYWNoZS4KKyAgICBpZiAoRnJhbWUqIGZyYW1lID0gZG9jdW1lbnRMb2FkZXIo
KS0+ZnJhbWUoKSkgeworICAgICAgICBpZiAobV9yZXNvdXJjZSAmJiBmcmFtZS0+ZG9jdW1lbnQo
KS0+aGFzTWFuaWZlc3QoKSkKKyAgICAgICAgICAgIG1lbW9yeUNhY2hlKCktPnJlbW92ZShtX3Jl
c291cmNlLmdldCgpKTsKKyAgICB9CisKICAgICBkbC0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS0+
ZmluaXNoZWRMb2FkaW5nTWFpblJlc291cmNlKCk7CiB9CiAKQEAgLTY0NCw5ICs2NjYsOSBAQCB2
b2lkIE1haW5SZXNvdXJjZUxvYWRlcjo6bG9hZChjb25zdCBSZXNvCiAgICAgZG9jdW1lbnRMb2Fk
ZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS0+bWF5YmVMb2FkTWFpblJlc291cmNlKHJlcXVl
c3QsIG1fc3Vic3RpdHV0ZURhdGEpOwogCiAgICAgaWYgKG1fc3Vic3RpdHV0ZURhdGEuaXNWYWxp
ZCgpKSB7Ci0gICAgICAgIG1fc3Vic3RpdHV0ZURhdGFMb2FkSWRlbnRpZmllciA9IG1fZG9jdW1l
bnRMb2FkZXItPmZyYW1lKCktPnBhZ2UoKS0+cHJvZ3Jlc3MoKS0+Y3JlYXRlVW5pcXVlSWRlbnRp
ZmllcigpOwotICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLT5hc3NpZ25JZGVudGlm
aWVyVG9Jbml0aWFsUmVxdWVzdChtX3N1YnN0aXR1dGVEYXRhTG9hZElkZW50aWZpZXIsIGRvY3Vt
ZW50TG9hZGVyKCksIHJlcXVlc3QpOwotICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigp
LT5kaXNwYXRjaFdpbGxTZW5kUmVxdWVzdChkb2N1bWVudExvYWRlcigpLCBtX3N1YnN0aXR1dGVE
YXRhTG9hZElkZW50aWZpZXIsIHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UoKSk7CisgICAgICAg
IG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIgPSBtX2RvY3VtZW50TG9h
ZGVyLT5mcmFtZSgpLT5wYWdlKCktPnByb2dyZXNzKCktPmNyZWF0ZVVuaXF1ZUlkZW50aWZpZXIo
KTsKKyAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS0+YXNzaWduSWRlbnRpZmllclRv
SW5pdGlhbFJlcXVlc3QobV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlciwg
ZG9jdW1lbnRMb2FkZXIoKSwgcmVxdWVzdCk7CisgICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlm
aWVyKCktPmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KGRvY3VtZW50TG9hZGVyKCksIG1faWRlbnRp
ZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIsIHJlcXVlc3QsIFJlc291cmNlUmVzcG9u
c2UoKSk7CiAgICAgICAgIGhhbmRsZVN1YnN0aXR1dGVEYXRhTG9hZFNvb24ocmVxdWVzdCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CkBAIC02NTksMTMgKzY4MSwyMCBAQCB2b2lkIE1haW5SZXNv
dXJjZUxvYWRlcjo6bG9hZChjb25zdCBSZXNvCiAgICAgICAgIGRvY3VtZW50TG9hZGVyKCktPnNl
dFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAg
IGlmICghbG9hZGVyKCkpIHsKKyAgICAgICAgbV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNv
dXJjZUxvYWRlciA9IG1fZG9jdW1lbnRMb2FkZXItPmZyYW1lKCktPnBhZ2UoKS0+cHJvZ3Jlc3Mo
KS0+Y3JlYXRlVW5pcXVlSWRlbnRpZmllcigpOworICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3Rp
ZmllcigpLT5hc3NpZ25JZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVzdChtX2lkZW50aWZpZXJGb3JM
b2FkV2l0aG91dFJlc291cmNlTG9hZGVyLCBkb2N1bWVudExvYWRlcigpLCByZXF1ZXN0KTsKKyAg
ICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS0+ZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3Qo
ZG9jdW1lbnRMb2FkZXIoKSwgbV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRl
ciwgcmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSgpKTsKKyAgICB9CiAgICAgbV9yZXNvdXJjZS0+
YWRkQ2xpZW50KHRoaXMpOwogCi0gICAgLy8gV2UgbmVlZCB0byB3YWl0IHVudGlsIGFmdGVyIHJl
cXVlc3RNYWluUmVzb3VyY2UoKSBpcyBjYWxsZWQgdG8gc2V0UmVxdWVzdCgpLCBiZWNhdXNlIHRo
ZXJlIGFyZSBhIGJ1bmNoIG9mIGhlYWRlcnMgc2V0IHdoZW4KLSAgICAvLyB0aGUgdW5kZXJseWlu
ZyBSZXNvdXJjZUxvYWRlciBpcyBjcmVhdGVkLCBhbmQgRG9jdW1lbnRMb2FkZXI6Om1fcmVxdWVz
dCBuZWVkcyB0byBpbmNsdWRlIHRob3NlLiBIb3dldmVyLCB0aGUgY2FjaGUgd2lsbAotICAgIC8v
IHN0cmlwIHRoZSBmcmFnbWVudCBpZGVudGlmaWVyICh3aGljaCBEb2N1bWVudExvYWRlcjo6bV9y
ZXF1ZXN0IHNob3VsZCBhbHNvIGluY2x1ZGUpLCBzbyBhZGQgdGhhdCBiYWNrIGluLgorICAgIC8v
IEEgYnVuY2ggb2YgaGVhZGVycyBhcmUgc2V0IHdoZW4gdGhlIHVuZGVybHlpbmcgUmVzb3VyY2VM
b2FkZXIgaXMgY3JlYXRlZCwgYW5kIERvY3VtZW50TG9hZGVyOjptX3JlcXVlc3QgbmVlZHMgdG8g
aW5jbHVkZSB0aG9zZS4KICAgICBpZiAobG9hZGVyKCkpCiAgICAgICAgIHJlcXVlc3QgPSBsb2Fk
ZXIoKS0+b3JpZ2luYWxSZXF1ZXN0KCk7CisgICAgLy8gSWYgdGhlcmUgd2FzIGEgZnJhZ21lbnQg
aWRlbnRpZmllciBvbiBpbml0aWFsUmVxdWVzdCwgdGhlIGNhY2hlIHdpbGwgaGF2ZSBzdHJpcHBl
ZCBpdC4gRG9jdW1lbnRMb2FkZXI6Om1fcmVxdWVzdCBzaG91bGQgaW5jbHVkZQorICAgIC8vIHRo
ZSBmcmFnbWVudCBpZGVudGlmaWVyLCBzbyBhZGQgdGhhdCBiYWNrIGluLgorICAgIGlmIChlcXVh
bElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKGluaXRpYWxSZXF1ZXN0LnVybCgpLCByZXF1ZXN0
LnVybCgpKSkKKyAgICAgICAgcmVxdWVzdC5zZXRVUkwoaW5pdGlhbFJlcXVlc3QudXJsKCkpOwog
ICAgIGRvY3VtZW50TG9hZGVyKCktPnNldFJlcXVlc3QocmVxdWVzdCk7CiB9CiAKQEAgLTY5Myw5
ICs3MjIsOSBAQCBSZXNvdXJjZUxvYWRlciogTWFpblJlc291cmNlTG9hZGVyOjpsb2FkCiAKIHVu
c2lnbmVkIGxvbmcgTWFpblJlc291cmNlTG9hZGVyOjppZGVudGlmaWVyKCkgY29uc3QKIHsKLSAg
ICBBU1NFUlQoIW1fc3Vic3RpdHV0ZURhdGFMb2FkSWRlbnRpZmllciB8fCAhbG9hZGVyKCkgfHwg
IWxvYWRlcigpLT5pZGVudGlmaWVyKCkpOwotICAgIGlmIChtX3N1YnN0aXR1dGVEYXRhTG9hZElk
ZW50aWZpZXIpCi0gICAgICAgIHJldHVybiBtX3N1YnN0aXR1dGVEYXRhTG9hZElkZW50aWZpZXI7
CisgICAgQVNTRVJUKCFtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyIHx8
ICFsb2FkZXIoKSB8fCAhbG9hZGVyKCktPmlkZW50aWZpZXIoKSk7CisgICAgaWYgKG1faWRlbnRp
ZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIpCisgICAgICAgIHJldHVybiBtX2lkZW50
aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyOwogICAgIGlmIChSZXNvdXJjZUxvYWRl
ciogcmVzb3VyY2VMb2FkZXIgPSBsb2FkZXIoKSkKICAgICAgICAgcmV0dXJuIHJlc291cmNlTG9h
ZGVyLT5pZGVudGlmaWVyKCk7CiAgICAgcmV0dXJuIDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAxNDExMzMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEy
OCw3ICsxMjgsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9sb2FkaW5nTXVsdGlwYXJ0Q29udGVu
dDsKICAgICBib29sIG1fd2FpdGluZ0ZvckNvbnRlbnRQb2xpY3k7CiAgICAgZG91YmxlIG1fdGlt
ZU9mTGFzdERhdGFSZWNlaXZlZDsKLSAgICB1bnNpZ25lZCBsb25nIG1fc3Vic3RpdHV0ZURhdGFM
b2FkSWRlbnRpZmllcjsKKyAgICB1bnNpZ25lZCBsb25nIG1faWRlbnRpZmllckZvckxvYWRXaXRo
b3V0UmVzb3VyY2VMb2FkZXI7CiAKICNpZiBVU0UoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAgT3du
UHRyPENvbnRlbnRGaWx0ZXI+IG1fY29udGVudEZpbHRlcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAkocmV2aXNpb24gMTQx
MTMzKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODAsMTQgKzgwLDI1IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3Vy
Y2U6OmRhdGEoUGFzc1JlZlB0cjwKIAogdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZGlkQWRkQ2xp
ZW50KENhY2hlZFJlc291cmNlQ2xpZW50KiBjKQogewotICAgIGlmIChtX3Jlc3BvbnNlLmlzTnVs
bCgpIHx8ICFoYXNDbGllbnQoYykpCisgICAgaWYgKCFoYXNDbGllbnQoYykpCiAgICAgICAgIHJl
dHVybjsKICAgICAvLyBUaGUgY2FsbHMgdG8gdGhlIGNsaWVudCBjYW4gcmVzdWx0IGluIGV2ZW50
cyBydW5uaW5nLCBwb3RlbnRpYWxseSBjYXVzaW5nCiAgICAgLy8gdGhpcyByZXNvdXJjZSB0byBi
ZSBldmljdGVkIGZyb20gdGhlIGNhY2hlIGFuZCBhbGwgY2xpZW50cyB0byBiZSByZW1vdmVkLAog
ICAgIC8vIHNvIGEgcHJvdGVjdG9yIGlzIG5lY2Vzc2FyeS4KICAgICBDYWNoZWRSZXNvdXJjZUhh
bmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVjdCh0aGlzKTsKICAgICBDYWNoZWRSYXdSZXNv
dXJjZUNsaWVudCogY2xpZW50ID0gc3RhdGljX2Nhc3Q8Q2FjaGVkUmF3UmVzb3VyY2VDbGllbnQq
PihjKTsKLSAgICBjbGllbnQtPnJlc3BvbnNlUmVjZWl2ZWQodGhpcywgbV9yZXNwb25zZSk7Cisg
ICAgc2l6ZV90IHJlZGlyZWN0Q291bnQgPSBtX3JlZGlyZWN0Q2hhaW4uc2l6ZSgpOworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVkaXJlY3RDb3VudDsgaSsrKSB7CisgICAgICAgIFJlZGly
ZWN0UGFpciByZWRpcmVjdCA9IG1fcmVkaXJlY3RDaGFpbltpXTsKKyAgICAgICAgUmVzb3VyY2VS
ZXF1ZXN0IHJlcXVlc3QocmVkaXJlY3QubV9yZXF1ZXN0KTsKKyAgICAgICAgY2xpZW50LT5yZWRp
cmVjdFJlY2VpdmVkKHRoaXMsIHJlcXVlc3QsIHJlZGlyZWN0Lm1fcmVkaXJlY3RSZXNwb25zZSk7
CisgICAgICAgIGlmICghaGFzQ2xpZW50KGMpKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICBBU1NFUlQocmVkaXJlY3RDb3VudCA9PSBtX3JlZGlyZWN0Q2hhaW4uc2l6ZSgpKTsKKwor
ICAgIGlmICghbV9yZXNwb25zZS5pc051bGwoKSkKKyAgICAgICAgY2xpZW50LT5yZXNwb25zZVJl
Y2VpdmVkKHRoaXMsIG1fcmVzcG9uc2UpOwogICAgIGlmICghaGFzQ2xpZW50KGMpKQogICAgICAg
ICByZXR1cm47CiAgICAgaWYgKG1fZGF0YSkKQEAgLTExMCw2ICsxMjEsNyBAQCB2b2lkIENhY2hl
ZFJhd1Jlc291cmNlOjp3aWxsU2VuZFJlcXVlc3QoCiAgICAgICAgIENhY2hlZFJlc291cmNlQ2xp
ZW50V2Fsa2VyPENhY2hlZFJhd1Jlc291cmNlQ2xpZW50PiB3KG1fY2xpZW50cyk7CiAgICAgICAg
IHdoaWxlIChDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCogYyA9IHcubmV4dCgpKQogICAgICAgICAg
ICAgYy0+cmVkaXJlY3RSZWNlaXZlZCh0aGlzLCByZXF1ZXN0LCByZXNwb25zZSk7CisgICAgICAg
IG1fcmVkaXJlY3RDaGFpbi5hcHBlbmQoUmVkaXJlY3RQYWlyKHJlcXVlc3QsIHJlc3BvbnNlKSk7
CiAgICAgfQogICAgIENhY2hlZFJlc291cmNlOjp3aWxsU2VuZFJlcXVlc3QocmVxdWVzdCwgcmVz
cG9uc2UpOwogfQpAQCAtMTk0LDYgKzIwNiwxMiBAQCBib29sIENhY2hlZFJhd1Jlc291cmNlOjpj
YW5SZXVzZShjb25zdCBSCiAgICAgICAgIGlmICghc2hvdWxkSWdub3JlSGVhZGVyRm9yQ2FjaGVS
ZXVzZShoZWFkZXJOYW1lKSAmJiBpLT52YWx1ZSAhPSBuZXdIZWFkZXJzLmdldChoZWFkZXJOYW1l
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CisKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG1fcmVkaXJlY3RDaGFpbi5zaXplKCk7IGkrKykgeworICAgICAgICBpZiAobV9y
ZWRpcmVjdENoYWluW2ldLm1fcmVkaXJlY3RSZXNwb25zZS5jYWNoZUNvbnRyb2xDb250YWluc05v
U3RvcmUoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jl
c291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJhd1Jlc291cmNlLmgJKHJldmlzaW9uIDE0MTEzMykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3
IEBAIHB1YmxpYzoKICAgICBTdWJyZXNvdXJjZUxvYWRlciogbG9hZGVyKCkgY29uc3Q7CiAgICAg
dm9pZCBjbGVhcigpOwogCi0gICAgYm9vbCBjYW5SZXVzZShjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
KSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgY2FuUmV1c2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JikgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2Jq
ZWN0SW5mbyopIGNvbnN0IE9WRVJSSURFOwogCkBAIC02Nyw2ICs2NywyMCBAQCBwcml2YXRlOgog
I2VuZGlmCiAKICAgICB1bnNpZ25lZCBsb25nIG1faWRlbnRpZmllcjsKKworICAgIHN0cnVjdCBS
ZWRpcmVjdFBhaXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgZXhwbGljaXQgUmVkaXJlY3RQYWly
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVkaXJlY3RSZXNwb25zZSkKKyAgICAgICAgICAgIDogbV9yZXF1ZXN0KHJlcXVlc3QpCisgICAg
ICAgICAgICAsIG1fcmVkaXJlY3RSZXNwb25zZShyZWRpcmVjdFJlc3BvbnNlKQorICAgICAgICB7
CisgICAgICAgIH0KKworICAgICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QgbV9yZXF1ZXN0Owor
ICAgICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlIG1fcmVkaXJlY3RSZXNwb25zZTsKKyAgICB9
OworCisgICAgVmVjdG9yPFJlZGlyZWN0UGFpcj4gbV9yZWRpcmVjdENoYWluOwogfTsKIAogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAJ
KHJldmlzaW9uIDE0MTEzMykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5Nyw4ICs0OTcsOCBAQCBib29sIENhY2hl
ZFJlc291cmNlOjphZGRDbGllbnRUb1NldChDYWNoCiAgICAgaWYgKCFoYXNDbGllbnRzKCkgJiYg
aW5DYWNoZSgpKQogICAgICAgICBtZW1vcnlDYWNoZSgpLT5hZGRUb0xpdmVSZXNvdXJjZXNTaXpl
KHRoaXMpOwogCi0gICAgaWYgKG1fdHlwZSA9PSBSYXdSZXNvdXJjZSAmJiAhbV9yZXNwb25zZS5p
c051bGwoKSAmJiAhbV9wcm94eVJlc291cmNlKSB7Ci0gICAgICAgIC8vIENlcnRhaW4gcmVzb3Vy
Y2VzIChlc3BlY2lhbGx5IFhIUnMpIGRvIGNyYXp5IHRoaW5ncyBpZiBhbiBhc3luY2hyb25vdXMg
bG9hZCByZXR1cm5zCisgICAgaWYgKChtX3R5cGUgPT0gUmF3UmVzb3VyY2UgfHwgbV90eXBlID09
IE1haW5SZXNvdXJjZSkgJiYgIW1fcmVzcG9uc2UuaXNOdWxsKCkgJiYgIW1fcHJveHlSZXNvdXJj
ZSkgeworICAgICAgICAvLyBDZXJ0YWluIHJlc291cmNlcyAoZXNwZWNpYWxseSBYSFJzIGFuZCBt
YWluIHJlc291cmNlcykgZG8gY3JhenkgdGhpbmdzIGlmIGFuIGFzeW5jaHJvbm91cyBsb2FkIHJl
dHVybnMKICAgICAgICAgLy8gc3luY2hyb25vdXNseSAoZS5nLiwgc2NyaXB0cyBtYXkgbm90IGhh
dmUgc2V0IGFsbCB0aGUgc3RhdGUgdGhleSBuZWVkIHRvIGhhbmRsZSB0aGUgbG9hZCkuCiAgICAg
ICAgIC8vIFRoZXJlZm9yZSwgcmF0aGVyIHRoYW4gaW1tZWRpYXRlbHkgc2VuZGluZyBjYWxsYmFj
a3Mgb24gYSBjYWNoZSBoaXQgbGlrZSBvdGhlciBDYWNoZWRSZXNvdXJjZXMsCiAgICAgICAgIC8v
IHdlIHNjaGVkdWxlIHRoZSBjYWxsYmFja3MgYW5kIGVuc3VyZSB3ZSBuZXZlciBmaW5pc2ggc3lu
Y2hyb25vdXNseS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZS5oCShyZXZpc2lvbiAxNDExMzMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjU4LDYgKzI1OCw4IEBAIHB1
YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJ
bmZvKikgY29uc3Q7CiAKKyAgICB2aXJ0dWFsIGJvb2wgY2FuUmV1c2UoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JikgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVh
bCB2b2lkIGNoZWNrTm90aWZ5KCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMTQxMTMzKQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDc3LDYgKzQ3NywxOCBAQCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxD
YWNoZWRSZXNvdXJjZT4gQ2FjCiAgICAgICAgIH0KICAgICB9CiAKKyNpZiBQTEFURk9STShDSFJP
TUlVTSkKKyAgICAvLyBGSVhNRTogVGVtcG9yYXJpbHkgbGVhdmUgbWFpbiByZXNvdXJjZSBjYWNo
aW5nIGRpc2FibGVkIGZvciBjaHJvbWl1bSwgc2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDc5NjIKKyAgICAvLyBFbnN1cmUgbWFpbiByZXNvdXJjZXMgYXJlbid0
IHByZWxvYWRlZCwgYW5kIG90aGVyIG1haW4gcmVzb3VyY2UgbG9hZHMgYXJlIHJlbW92ZWQgZnJv
bSBjYWNoZSB0byBwcmV2ZW50IHJldXNlLgorICAgIGlmICh0eXBlID09IENhY2hlZFJlc291cmNl
OjpNYWluUmVzb3VyY2UpIHsKKyAgICAgICAgQVNTRVJUKHBvbGljeSAhPSBVc2UpOworICAgICAg
ICBBU1NFUlQocG9saWN5ICE9IFJldmFsaWRhdGUpOworICAgICAgICBtZW1vcnlDYWNoZSgpLT5y
ZW1vdmUocmVzb3VyY2UuZ2V0KCkpOworICAgICAgICBpZiAocmVxdWVzdC5mb3JQcmVsb2FkKCkp
CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9CisjZW5kaWYKKwogICAgIGlmICghcmVxdWVz
dC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKS5wcm90b2NvbElzRGF0YSgpKQogICAgICAgICBtX3Zh
bGlkYXRlZFVSTHMuYWRkKHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCkpOwogCkBAIC01
MDMsOCArNTE1LDEwIEBAIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBDYWMK
ICAgICBtZW1vcnlDYWNoZSgpLT5yZW1vdmUocmVzb3VyY2UpOwogICAgIG1lbW9yeUNhY2hlKCkt
PmFkZChuZXdSZXNvdXJjZS5nZXQoKSk7CiAjaWYgRU5BQkxFKFJFU09VUkNFX1RJTUlORykKLSAg
ICBJbml0aWF0b3JJbmZvIGluZm8gPSB7IHJlcXVlc3QuaW5pdGlhdG9yTmFtZSgpLCBtb25vdG9u
aWNhbGx5SW5jcmVhc2luZ1RpbWUoKSB9OwotICAgIG1faW5pdGlhdG9yTWFwLmFkZChuZXdSZXNv
dXJjZS5nZXQoKSwgaW5mbyk7CisgICAgaWYgKHJlc291cmNlLT50eXBlKCkgIT0gQ2FjaGVkUmVz
b3VyY2U6Ok1haW5SZXNvdXJjZSkgeworICAgICAgICBJbml0aWF0b3JJbmZvIGluZm8gPSB7IHJl
cXVlc3QuaW5pdGlhdG9yTmFtZSgpLCBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSB9Owor
ICAgICAgICBtX2luaXRpYXRvck1hcC5hZGQobmV3UmVzb3VyY2UuZ2V0KCksIGluZm8pOworICAg
IH0KICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHJlcXVlc3QpOwogI2VuZGlmCkBAIC01MjIsOCAr
NTM2LDEwIEBAIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBDYWMKICAgICBp
ZiAoIW1lbW9yeUNhY2hlKCktPmFkZChyZXNvdXJjZS5nZXQoKSkpCiAgICAgICAgIHJlc291cmNl
LT5zZXRPd25pbmdDYWNoZWRSZXNvdXJjZUxvYWRlcih0aGlzKTsKICNpZiBFTkFCTEUoUkVTT1VS
Q0VfVElNSU5HKQotICAgIEluaXRpYXRvckluZm8gaW5mbyA9IHsgcmVxdWVzdC5pbml0aWF0b3JO
YW1lKCksIG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpIH07Ci0gICAgbV9pbml0aWF0b3JN
YXAuYWRkKHJlc291cmNlLmdldCgpLCBpbmZvKTsKKyAgICBpZiAodHlwZSAhPSBDYWNoZWRSZXNv
dXJjZTo6TWFpblJlc291cmNlKSB7CisgICAgICAgIEluaXRpYXRvckluZm8gaW5mbyA9IHsgcmVx
dWVzdC5pbml0aWF0b3JOYW1lKCksIG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpIH07Cisg
ICAgICAgIG1faW5pdGlhdG9yTWFwLmFkZChyZXNvdXJjZS5nZXQoKSwgaW5mbyk7CisgICAgfQog
I2VuZGlmCiAgICAgcmV0dXJuIHJlc291cmNlOwogfQpAQCAtNTQzLDEwICs1NTksNyBAQCBDYWNo
ZWRSZXNvdXJjZUxvYWRlcjo6UmV2YWxpZGF0aW9uUG9saWN5CiAgICAgICAgIHJldHVybiBSZWxv
YWQ7CiAgICAgfQogCi0gICAgaWYgKGV4aXN0aW5nUmVzb3VyY2UtPnR5cGUoKSA9PSBDYWNoZWRS
ZXNvdXJjZTo6TWFpblJlc291cmNlKQotICAgICAgICByZXR1cm4gUmVsb2FkOwotCi0gICAgaWYg
KGV4aXN0aW5nUmVzb3VyY2UtPnR5cGUoKSA9PSBDYWNoZWRSZXNvdXJjZTo6UmF3UmVzb3VyY2Ug
JiYgIXN0YXRpY19jYXN0PENhY2hlZFJhd1Jlc291cmNlKj4oZXhpc3RpbmdSZXNvdXJjZSktPmNh
blJldXNlKHJlcXVlc3QpKQorICAgIGlmICghZXhpc3RpbmdSZXNvdXJjZS0+Y2FuUmV1c2UocmVx
dWVzdCkpCiAgICAgICAgIHJldHVybiBSZWxvYWQ7CiAKICAgICAvLyBDZXJ0YWluIHJlcXVlc3Rz
IChlLmcuLCBYSFJzKSBtaWdodCBoYXZlIG1hbnVhbGx5IHNldCBoZWFkZXJzIHRoYXQgcmVxdWly
ZSByZXZhbGlkYXRpb24uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCShy
ZXZpc2lvbiAxNDExMzMpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTY1LDYgKzY1LDcgQEAKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAj
aW5jbHVkZSAiTGFuZ3VhZ2UuaCIKICNpbmNsdWRlICJNYWxsb2NTdGF0aXN0aWNzLmgiCisjaW5j
bHVkZSAiTWVtb3J5Q2FjaGUuaCIKICNpbmNsdWRlICJNb2NrUGFnZVBvcHVwRHJpdmVyLmgiCiAj
aW5jbHVkZSAiTm9kZVJlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC0y
OTEsNiArMjkyLDE0IEBAIGJvb2wgSW50ZXJuYWxzOjppc1ByZWxvYWRlZChjb25zdCBTdHJpbmcK
ICAgICByZXR1cm4gZG9jdW1lbnQtPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPmlzUHJlbG9hZGVk
KHVybCk7CiB9CiAKK2Jvb2wgSW50ZXJuYWxzOjppc0xvYWRpbmdGcm9tTWVtb3J5Q2FjaGUoY29u
c3QgU3RyaW5nJiB1cmwpCit7CisgICAgaWYgKCFjb250ZXh0RG9jdW1lbnQoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIENhY2hlZFJlc291cmNlKiByZXNvdXJjZSA9IG1lbW9yeUNhY2hl
KCktPnJlc291cmNlRm9yVVJMKGNvbnRleHREb2N1bWVudCgpLT5jb21wbGV0ZVVSTCh1cmwpKTsK
KyAgICByZXR1cm4gcmVzb3VyY2UgJiYgcmVzb3VyY2UtPnN0YXR1cygpID09IENhY2hlZFJlc291
cmNlOjpDYWNoZWQ7Cit9CisKIFBhc3NSZWZQdHI8RWxlbWVudD4gSW50ZXJuYWxzOjpjcmVhdGVD
b250ZW50RWxlbWVudChFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBEb2N1bWVudCogZG9jdW1l
bnQgPSBjb250ZXh0RG9jdW1lbnQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aAkocmV2aXNpb24gMTQxMTMzKQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aAkod29ya2luZyBjb3B5KQpAQCAtNzIsNiArNzIsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGFk
ZHJlc3MoTm9kZSopOwogCiAgICAgYm9vbCBpc1ByZWxvYWRlZChjb25zdCBTdHJpbmcmIHVybCk7
CisgICAgYm9vbCBpc0xvYWRpbmdGcm9tTWVtb3J5Q2FjaGUoY29uc3QgU3RyaW5nJiB1cmwpOwog
CiAgICAgc2l6ZV90IG51bWJlck9mU2NvcGVkSFRNTFN0eWxlQ2hpbGRyZW4oY29uc3QgTm9kZSos
IEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmlkbAkocmV2aXNpb24gMTQxMTMzKQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAKICAgICBET01TdHJp
bmcgZWxlbWVudFJlbmRlclRyZWVBc1RleHQoaW4gRWxlbWVudCBlbGVtZW50KSByYWlzZXMoRE9N
RXhjZXB0aW9uKTsKICAgICBib29sZWFuIGlzUHJlbG9hZGVkKGluIERPTVN0cmluZyB1cmwpOwor
ICAgIGJvb2xlYW4gaXNMb2FkaW5nRnJvbU1lbW9yeUNhY2hlKGluIERPTVN0cmluZyB1cmwpOwog
CiAgICAgdW5zaWduZWQgbG9uZyBudW1iZXJPZlNjb3BlZEhUTUxTdHlsZUNoaWxkcmVuKGluIE5v
ZGUgc2NvcGUpIHJhaXNlcyhET01FeGNlcHRpb24pOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dp
bi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCShy
ZXZpc2lvbiAxNDExMzMpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxMiBAQAorMjAxMy0wMS0yNSAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIEVuYWJsZSByZXVzZSBvZiBjYWNoZWQgbWFpbiByZXNv
dXJjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEw
NTY2NworCisgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCisKKyAgICAgICAgKiBXZWJL
aXQudmNwcm9qL1dlYktpdEV4cG9ydHMuZGVmLmluOiBFeHBvc2Ugc29tZSBNZW1vcnlDYWNoZSBz
eW1ib2xzIGZvciB1c2UgaW4gSW50ZXJuYWxzLgorCiAyMDEzLTAxLTI3ICBab2x0YW4gQXJ2YWkg
IDx6YXJ2YWlAaW5mLnUtc3plZ2VkLmh1PgogCiAgICAgICAgIEZpeGluZyBhdG9taWNJbmNyZW1l
bnQgaW1wbGVtZW50YXRpb24gZm9yIFdpbmRvd3MgYnkgZHJvcHBpbmcgc3VwcG9ydCBiZWZvcmUg
WFAgU1AyLgpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXRFeHBv
cnRzLmRlZi5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9q
L1dlYktpdEV4cG9ydHMuZGVmLmluCShyZXZpc2lvbiAxNDExMzMpCisrKyBTb3VyY2UvV2ViS2l0
L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdEV4cG9ydHMuZGVmLmluCSh3b3JraW5nIGNvcHkpCkBA
IC01NjAsNiArNTYwLDcgQEAgRVhQT1JUUwogICAgICAgICA/YWRkU2xvd0Nhc2VAQXRvbWljU3Ry
aW5nQFdURkBAQ0E/QVY/JFBhc3NSZWZQdHJAVlN0cmluZ0ltcGxAV1RGQEBAMkBQQVZTdHJpbmdJ
bXBsQDJAQFoKICAgICAgICAgP2NhY2hlRE9NU3RydWN0dXJlQFdlYkNvcmVAQFlBUEFWU3RydWN0
dXJlQEpTQ0BAUEFWSlNET01HbG9iYWxPYmplY3RAMUBQQVYyM0BQQlVDbGFzc0luZm9AM0BAWgog
ICAgICAgICA/Y2hpbGRJdGVtV2l0aFRhcmdldEBIaXN0b3J5SXRlbUBXZWJDb3JlQEBRQkVQQVYx
MkBBQlZTdHJpbmdAV1RGQEBAWgorICAgICAgICA/Y29tcGxldGVVUkxARG9jdW1lbnRAV2ViQ29y
ZUBAUUJFP0FWS1VSTEAyQEFCVlN0cmluZ0BXVEZAQEBaCiAgICAgICAgID9jcmVhdGVAUmFuZ2VA
V2ViQ29yZUBAU0E/QVY/JFBhc3NSZWZQdHJAVlJhbmdlQFdlYkNvcmVAQEBXVEZAQFY/JFBhc3NS
ZWZQdHJAVkRvY3VtZW50QFdlYkNvcmVAQEA0QFY/JFBhc3NSZWZQdHJAVk5vZGVAV2ViQ29yZUBA
QDRASDFIQFoKICAgICAgICAgP2NyZWF0ZUBTZXJpYWxpemVkU2NyaXB0VmFsdWVAV2ViQ29yZUBA
U0E/QVY/JFBhc3NSZWZQdHJAVlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUBXZWJDb3JlQEBAV1RGQEBB
QlZTdHJpbmdANEBAWgogICAgICAgICA/Y3JlYXRlQFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUBXZWJD
b3JlQEBTQT9BVj8kUGFzc1JlZlB0ckBWU2VyaWFsaXplZFNjcmlwdFZhbHVlQFdlYkNvcmVAQEBX
VEZAQFBBVkV4ZWNTdGF0ZUBKU0NAQFZKU1ZhbHVlQDZAUEFWPyRWZWN0b3JAVj8kUmVmUHRyQFZN
ZXNzYWdlUG9ydEBXZWJDb3JlQEBAV1RGQEAkMDBANEBQQVY/JFZlY3RvckBWPyRSZWZQdHJAVkFy
cmF5QnVmZmVyQFdURkBAQFdURkBAJDAwQDRAVzRTZXJpYWxpemF0aW9uRXJyb3JNb2RlQDJAQFoK
QEAgLTEzODgsNiArMTM4OSw3IEBAIEVYUE9SVFMKICAgICAgICAgP2xhc3RDaGFuZ2VXYXNVc2Vy
RWRpdEBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudEBXZWJDb3JlQEBRQkVfTlhaCiAgICAgICAg
ID9tYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dEBQYWdlQFdlYkNvcmVAQFFBRT9BVlN0
cmluZ0BXVEZAQFhaCiAgICAgICAgID9tYXJrZXJzRm9yQERvY3VtZW50TWFya2VyQ29udHJvbGxl
ckBXZWJDb3JlQEBRQUU/QVY/JFZlY3RvckBQQVZEb2N1bWVudE1hcmtlckBXZWJDb3JlQEAkMEFA
QFdURkBAUEFWTm9kZUAyQFZNYXJrZXJUeXBlc0BEb2N1bWVudE1hcmtlckAyQEBaCisgICAgICAg
ID9tZW1vcnlDYWNoZUBXZWJDb3JlQEBZQVBBVk1lbW9yeUNhY2hlQDFAWFoKICAgICAgICAgP25l
eHRTaWJsaW5nQENvbXBvc2VkU2hhZG93VHJlZVdhbGtlckBXZWJDb3JlQEBRQUVYWFoKICAgICAg
ICAgP2ZpcnN0Q2hpbGRAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhYWgog
ICAgICAgICA/bGFzdENoaWxkQENvbXBvc2VkU2hhZG93VHJlZVdhbGtlckBXZWJDb3JlQEBRQUVY
WFoKQEAgLTE0MDcsNiArMTQwOSw3IEBAIEVYUE9SVFMKICAgICAgICAgP3JhbmdlRnJvbUxvY2F0
aW9uQW5kTGVuZ3RoQFRleHRJdGVyYXRvckBXZWJDb3JlQEBTQT9BVj8kUGFzc1JlZlB0ckBWUmFu
Z2VAV2ViQ29yZUBAQFdURkBAUEFWQ29udGFpbmVyTm9kZUAyQEhIX05AWgogICAgICAgICA/cmVt
b3ZlQFN0cmluZ0BXVEZAQFFBRVhJSEBaCiAgICAgICAgID9yZW1vdmVkTGFzdFJlZkBOb2RlQFdl
YkNvcmVAQEFBRVhYWgorICAgICAgICA/cmVzb3VyY2VGb3JVUkxATWVtb3J5Q2FjaGVAV2ViQ29y
ZUBAUUFFUEFWQ2FjaGVkUmVzb3VyY2VAMkBBQlZLVVJMQDJAQFoKICAgICAgICAgP3JldmVyc2VG
aW5kQFN0cmluZ0ltcGxAV1RGQEBRQUVJX1dJQFoKICAgICAgICAgP3NhdmVEb2N1bWVudEFuZFNj
cm9sbFN0YXRlQEhpc3RvcnlDb250cm9sbGVyQFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEBKU0RPTUdsb2JhbE9iamVjdEBXZWJDb3JlQEBRQkVQQVZTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QDJAWFoKSW5kZXg6IFNvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5m
aWx0ZXIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgkocmV2
aXNpb24gMTQxMTMzKQorKysgU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgkod29ya2lu
ZyBjb3B5KQpAQCAtNTAsMTAgKzUwLDEyIEBAIF9aTjdXZWJDb3JlMTB0b0RvY3VtZW50RU4zSlND
N0pTVmFsdWVFOwogX1pON1dlYkNvcmUxMENsaWVudFJlY3RDMUV2OwogX1pON1dlYkNvcmUxMENs
aWVudFJlY3RDMUVSS05TXzdJbnRSZWN0RTsKIF9aTjdXZWJDb3JlMTBTaGFkb3dSb290NmNyZWF0
ZUVQTlNfN0VsZW1lbnRFUmk7CitfWk43V2ViQ29yZTExbWVtb3J5Q2FjaGVFdjsKIF9aTjdXZWJD
b3JlMTFFdmVudFRhcmdldDE3dG9HZW5lcmF0ZWRTdHJlYW1FdjsKIF9aTjdXZWJDb3JlMTFFdmVu
dFRhcmdldDh0b1N0cmVhbUV2OwogX1pON1dlYkNvcmUxMUhpc3RvcnlJdGVtMTZzZXREb2N1bWVu
dFN0YXRlRVJLTjNXVEY2VmVjdG9ySU5TMV82U3RyaW5nRUxqMEVFRTsKIF9aTjdXZWJDb3JlMTFI
aXN0b3J5SXRlbTE2c2V0RG9jdW1lbnRTdGF0ZUVSS04zV1RGNlZlY3RvcklOUzFfNlN0cmluZ0VM
bTBFRUU7CitfWk43V2ViQ29yZTExTWVtb3J5Q2FjaGUxNHJlc291cmNlRm9yVVJMRVJLTlNfNEtV
UkxFOwogX1pON1dlYkNvcmUxMlRleHRJdGVyYXRvcjI2cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5n
dGhFUE5TXzEzQ29udGFpbmVyTm9kZUVpaWI7CiBfWk43V2ViQ29yZTEyVGV4dEl0ZXJhdG9yMjln
ZXRMb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZUVQTlNfN0VsZW1lbnRFUEtOU181UmFuZ2VFUmpT
Nl87CiBfWk43V2ViQ29yZTEyVGV4dEl0ZXJhdG9yMjlnZXRMb2NhdGlvbkFuZExlbmd0aEZyb21S
YW5nZUVQTlNfN0VsZW1lbnRFUEtOU181UmFuZ2VFUm1TNl87CkBAIC0xNDYsNiArMTQ4LDcgQEAg
X1pOSzdXZWJDb3JlMjZIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudAogX1pOSzdXZWJDb3JlNUZy
YW1lOHNldHRpbmdzRXY7CiBfWk5LN1dlYkNvcmU2SlNOb2RlMjFwdXNoRXZlbnRIYW5kbGVyU2Nv
cGVFUE4zSlNDOUV4ZWNTdGF0ZUVQTlMxXzE0U2NvcGVDaGFpbk5vZGVFOwogX1pOSzdXZWJDb3Jl
N0VsZW1lbnQ2c2hhZG93RXY7CitfWk5LN1dlYkNvcmU4RG9jdW1lbnQxMWNvbXBsZXRlVVJMRVJL
TjNXVEY2U3RyaW5nRTsKIF9aTks3V2ViQ29yZThEb2N1bWVudDRwYWdlRXY7CiBfWk5LN1dlYkNv
cmU4RG9jdW1lbnQ4c2V0dGluZ3NFdjsKIF9aTks3V2ViQ29yZThEb2N1bWVudDR2aWV3RXY7Cklu
ZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxNDExMzMpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAxMy0wMS0yNSAgTmF0ZSBDaGFwaW4gIDxqYXBo
ZXRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEVuYWJsZSByZXVzZSBvZiBjYWNoZWQgbWFpbiBy
ZXNvdXJjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEwNTY2Ny4KKworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgICog
aHR0cC90ZXN0cy9jYWNoZS9jYWNoZWQtbWFpbi1yZXNvdXJjZS1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvY2FjaGUvY2FjaGVkLW1haW4tcmVzb3VyY2UuaHRtbDog
QWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvY2FjaGVhYmxlLWlm
cmFtZS5waHA6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNl
LWhhci1wYWdlcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9sb2FkaW5nL3Jl
ZGlyZWN0LW1ldGhvZHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvbWlzYy9m
YXZpY29uLWxvYWRzLXdpdGgtaW1hZ2VzLWRpc2FibGVkLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBodHRwL3Rlc3RzL21pc2MvbGluay1yZWwtaWNvbi1iZWZvcmVsb2FkLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDEzLTAx
LTI5ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBiYWNr
IHRlc3QgZXhwZWN0YXRpb25zIHRoYXQgZ290IGVycm9uZW91c2x5IHJlbW92ZWQgaW4gcjE0MDk4
MS4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvY2FjaGVkLW1haW4tcmVzb3Vy
Y2UtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvY2Fj
aGUvY2FjaGVkLW1haW4tcmVzb3VyY2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9jYWNoZWQtbWFpbi1yZXNvdXJjZS1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMiBAQAorUEFTUworIApJbmRleDogTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9jYWNoZS9jYWNoZWQtbWFpbi1yZXNvdXJjZS5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvY2FjaGVkLW1haW4tcmVzb3VyY2UuaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvY2FjaGVkLW1h
aW4tcmVzb3VyY2UuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNCBAQAorPGh0bWw+Cis8
Ym9keSBvbmxvYWQ9InNldFRpbWVvdXQocmVtb3ZlQW5kUmVsb2FkLCAwKTsiPgorPGRpdiBpZD0i
cmVzdWx0Ij48L2Rpdj4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
K30KKworZnVuY3Rpb24gcmVtb3ZlQW5kUmVsb2FkKCkKK3sKKyAgICBkb2N1bWVudC5ib2R5LnJl
bW92ZUNoaWxkKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpZnJhbWUiKSk7CisgICAgdmFyIG5l
d0lmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOworICAgIG5ld0lmcmFt
ZS5zcmMgPSAicmVzb3VyY2VzL2NhY2hlYWJsZS1pZnJhbWUucGhwIjsKKyAgICBkb2N1bWVudC5i
b2R5LmFwcGVuZENoaWxkKG5ld0lmcmFtZSk7CisgICAgdmFyIGZyb21DYWNoZSA9IGludGVybmFs
cy5pc0xvYWRpbmdGcm9tTWVtb3J5Q2FjaGUobmV3SWZyYW1lLnNyYyk7CisgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHRO
b2RlKGZyb21DYWNoZSA/ICJQQVNTIiA6ICJGQUlMIikpOworICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9Cis8L3NjcmlwdD4KKzxp
ZnJhbWUgaWQ9ImlmcmFtZSIgc3JjPSJyZXNvdXJjZXMvY2FjaGVhYmxlLWlmcmFtZS5waHAiPjwv
aWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9j
YWNoZS9yZXNvdXJjZXMvY2FjaGVhYmxlLWlmcmFtZS5waHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvY2FjaGVhYmxlLWlmcmFtZS5waHAJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3Jlc291cmNlcy9jYWNo
ZWFibGUtaWZyYW1lLnBocAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMSBAQAorPD9waHAKK3Jl
cXVpcmVfb25jZSAnLi4vLi4vcmVzb3VyY2VzL3BvcnRhYmlsaXR5TGF5ZXIucGhwJzsKKworJG1h
eF9hZ2UgPSAxMiAqIDMxICogMjQgKiA2MCAqIDYwOyAvL29uZSB5ZWFyCiskZXhwaXJlcyA9IGdt
ZGF0ZShEQVRFX1JGQzExMjMsIHRpbWUoKSArICRtYXhfYWdlKTsKKworaGVhZGVyKCdDYWNoZS1D
b250cm9sOiBwdWJsaWMsIG1heC1hZ2U9JyAuICRtYXhfYWdlKTsKK2hlYWRlcignRXhwaXJlczog
JyAuICRleHBpcmVzKTsKK2hlYWRlcignQ29udGVudC1UeXBlOiB0ZXh0L2h0bWwnKTsKK2V4aXQo
KTsKKz8+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZS1o
YXItcGFnZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL3Jlc291cmNlLWhhci1wYWdlcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE0
MTEzMykKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlLWhhci1w
YWdlcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw1IEBACiBUZXN0cyBj
b252ZXJzaW9uIG9mIEluc3BlY3RvcidzIHJlc291cmNlIHJlcHJlc2VudGF0aW9uIGludG8gSEFS
IGZvcm1hdC4KIAotUGFnZSByZWxvYWRlZC4KIHsKICAgICAwIDogewogICAgICAgICBpZCA6IDxz
dHJpbmc+CkBAIC0yOCw0ICsyNyw1IEBAIHBhZ2U6IHBhZ2VfMSB1cmw6IGh0dHA6Ly8xMjcuMC4w
LjE6ODAwMC8KIHBhZ2U6IHBhZ2VfMSB1cmw6IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0
b3IvcmVzb3VyY2VzL2hhci1wYWdlcy1uYXZpZ2F0aW9uLXRhcmdldC5odG1sCiBwYWdlOiBwYWdl
XzEgdXJsOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL3Jlc291cmNlcy9zb3VyY2Ux
LmpzCiBwYWdlOiBwYWdlXzEgdXJsOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3VyY2VzL3Jl
ZGlyZWN0LnBocD91cmw9L2luc3BlY3Rvci9yZXNvdXJjZXMvaGFyLXBhZ2VzLW5hdmlnYXRpb24t
dGFyZ2V0Lmh0bWwKK1BhZ2UgcmVsb2FkZWQuCiAKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVz
dHMvbG9hZGluZy9yZWRpcmVjdC1tZXRob2RzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvcmVkaXJlY3QtbWV0aG9kcy1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDE0MTEzMykKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9y
ZWRpcmVjdC1tZXRob2RzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNDIsMTEgKzQy
LDExIEBAIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy8KIGh0dHA6Ly8x
MjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLWZvcm0uaHRt
bCAtIGRpZFJlY2VpdmVSZXNwb25zZSA8TlNVUkxSZXNwb25zZSBodHRwOi8vMTI3LjAuMC4xOjgw
MDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1mb3JtLmh0bWwsIGh0dHAgc3Rh
dHVzIGNvZGUgMjAwPgogZnJhbWUgIjEiIC0gZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFt
ZQogZnJhbWUgIjEiIC0gZGlkQ29tbWl0TG9hZEZvckZyYW1lCitodHRwOi8vMTI3LjAuMC4xOjgw
MDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1mb3JtLmh0bWwgLSBkaWRGaW5p
c2hMb2FkaW5nCiBmcmFtZSAiMSIgLSBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZQogZnJh
bWUgIjEiIC0gd2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdFRvVVJMOiBodHRwOi8vMTI3LjAuMC4x
OjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1yZXN1bHQucGhwIAogZnJh
bWUgIjEiIC0gZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUKIGZyYW1lICIxIiAtIGRpZEZp
bmlzaExvYWRGb3JGcmFtZQotaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2Vz
L3JlZGlyZWN0LW1ldGhvZHMtZm9ybS5odG1sIC0gZGlkRmluaXNoTG9hZGluZwogZnJhbWUgIjEi
IC0gZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZQogaHR0cDovLzEyNy4wLjAuMTo4MDAw
L2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtcmVzdWx0LnBocCAtIHdpbGxTZW5k
UmVxdWVzdCA8TlNVUkxSZXF1ZXN0IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9y
ZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1yZXN1bHQucGhwLCBtYWluIGRvY3VtZW50IFVSTCBo
dHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZWRpcmVjdC1tZXRob2RzLmh0bWwsIGh0dHAg
bWV0aG9kIFBPU1Q+IHJlZGlyZWN0UmVzcG9uc2UgKG51bGwpCiBodHRwOi8vMTI3LjAuMC4xOjgw
MDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1yZXN1bHQucGhwIC0gd2lsbFNl
bmRSZXF1ZXN0IDxOU1VSTFJlcXVlc3QgVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5n
L3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLXJlc3VsdC5waHA/cmVkaXJlY3RlZD10cnVlLCBt
YWluIGRvY3VtZW50IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZWRpcmVjdC1t
ZXRob2RzLmh0bWwsIGh0dHAgbWV0aG9kIEdFVD4gcmVkaXJlY3RSZXNwb25zZSA8TlNVUkxSZXNw
b25zZSBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0
aG9kcy1yZXN1bHQucGhwLCBodHRwIHN0YXR1cyBjb2RlIDMwMj4KQEAgLTY5LDExICs2OSwxMSBA
QCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvCiBodHRwOi8vMTI3LjAu
MC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1mb3JtLmh0bWwgLSBk
aWRSZWNlaXZlUmVzcG9uc2UgPE5TVVJMUmVzcG9uc2UgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xv
YWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtZm9ybS5odG1sLCBodHRwIHN0YXR1cyBj
b2RlIDIwMD4KIGZyYW1lICIyIiAtIGRpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWUKIGZy
YW1lICIyIiAtIGRpZENvbW1pdExvYWRGb3JGcmFtZQoraHR0cDovLzEyNy4wLjAuMTo4MDAwL2xv
YWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtZm9ybS5odG1sIC0gZGlkRmluaXNoTG9h
ZGluZwogZnJhbWUgIjIiIC0gZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUKIGZyYW1lICIy
IiAtIHdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RUb1VSTDogaHR0cDovLzEyNy4wLjAuMTo4MDAw
L2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtcmVzdWx0LnBocCAKIGZyYW1lICIy
IiAtIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lCiBmcmFtZSAiMiIgLSBkaWRGaW5pc2hM
b2FkRm9yRnJhbWUKLWh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRp
cmVjdC1tZXRob2RzLWZvcm0uaHRtbCAtIGRpZEZpbmlzaExvYWRpbmcKIGZyYW1lICIyIiAtIGRp
ZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUKIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2Fk
aW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLXJlc3VsdC5waHAgLSB3aWxsU2VuZFJlcXVl
c3QgPE5TVVJMUmVxdWVzdCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3Vy
Y2VzL3JlZGlyZWN0LW1ldGhvZHMtcmVzdWx0LnBocCwgbWFpbiBkb2N1bWVudCBVUkwgaHR0cDov
LzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVkaXJlY3QtbWV0aG9kcy5odG1sLCBodHRwIG1ldGhv
ZCBQT1NUPiByZWRpcmVjdFJlc3BvbnNlIChudWxsKQogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xv
YWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtcmVzdWx0LnBocCAtIHdpbGxTZW5kUmVx
dWVzdCA8TlNVUkxSZXF1ZXN0IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNv
dXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1yZXN1bHQucGhwP3JlZGlyZWN0ZWQ9dHJ1ZSwgbWFpbiBk
b2N1bWVudCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVkaXJlY3QtbWV0aG9k
cy5odG1sLCBodHRwIG1ldGhvZCBHRVQ+IHJlZGlyZWN0UmVzcG9uc2UgPE5TVVJMUmVzcG9uc2Ug
aHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMt
cmVzdWx0LnBocCwgaHR0cCBzdGF0dXMgY29kZSAzMDM+CkBAIC05NiwxMSArOTYsMTEgQEAgaHR0
cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzLwogaHR0cDovLzEyNy4wLjAuMTo4
MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtZm9ybS5odG1sIC0gZGlkUmVj
ZWl2ZVJlc3BvbnNlIDxOU1VSTFJlc3BvbnNlIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5n
L3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLWZvcm0uaHRtbCwgaHR0cCBzdGF0dXMgY29kZSAy
MDA+CiBmcmFtZSAiMyIgLSBkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lCiBmcmFtZSAi
MyIgLSBkaWRDb21taXRMb2FkRm9yRnJhbWUKK2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5n
L3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLWZvcm0uaHRtbCAtIGRpZEZpbmlzaExvYWRpbmcK
IGZyYW1lICIzIiAtIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lCiBmcmFtZSAiMyIgLSB3
aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0VG9VUkw6IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2Fk
aW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLXJlc3VsdC5waHAgCiBmcmFtZSAiMyIgLSBk
aWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZQogZnJhbWUgIjMiIC0gZGlkRmluaXNoTG9hZEZv
ckZyYW1lCi1odHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3Qt
bWV0aG9kcy1mb3JtLmh0bWwgLSBkaWRGaW5pc2hMb2FkaW5nCiBmcmFtZSAiMyIgLSBkaWRTdGFy
dFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lCiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9y
ZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1yZXN1bHQucGhwIC0gd2lsbFNlbmRSZXF1ZXN0IDxO
U1VSTFJlcXVlc3QgVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9y
ZWRpcmVjdC1tZXRob2RzLXJlc3VsdC5waHAsIG1haW4gZG9jdW1lbnQgVVJMIGh0dHA6Ly8xMjcu
MC4wLjE6ODAwMC9sb2FkaW5nL3JlZGlyZWN0LW1ldGhvZHMuaHRtbCwgaHR0cCBtZXRob2QgUE9T
VD4gcmVkaXJlY3RSZXNwb25zZSAobnVsbCkKIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5n
L3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLXJlc3VsdC5waHAgLSB3aWxsU2VuZFJlcXVlc3Qg
PE5TVVJMUmVxdWVzdCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2Vz
L3JlZGlyZWN0LW1ldGhvZHMtcmVzdWx0LnBocD9yZWRpcmVjdGVkPXRydWUsIG1haW4gZG9jdW1l
bnQgVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3JlZGlyZWN0LW1ldGhvZHMuaHRt
bCwgaHR0cCBtZXRob2QgUE9TVD4gcmVkaXJlY3RSZXNwb25zZSA8TlNVUkxSZXNwb25zZSBodHRw
Oi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1yZXN1
bHQucGhwLCBodHRwIHN0YXR1cyBjb2RlIDMwNz4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVz
dHMvbWlzYy9mYXZpY29uLWxvYWRzLXdpdGgtaW1hZ2VzLWRpc2FibGVkLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvZmF2aWNvbi1sb2Fkcy13
aXRoLWltYWdlcy1kaXNhYmxlZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE0MTEzMykKKysrIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9mYXZpY29uLWxvYWRzLXdpdGgtaW1hZ2VzLWRpc2Fi
bGVkLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDcgQEAKIDx1bmtub3du
PiAtIGRpZEZpbmlzaExvYWRpbmcKIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9taXNjL2Zhdmljb24t
bG9hZHMtd2l0aC1pbWFnZXMtZGlzYWJsZWQuaHRtbCAtIHdpbGxTZW5kUmVxdWVzdCA8TlNVUkxS
ZXF1ZXN0IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbWlzYy9mYXZpY29uLWxvYWRzLXdpdGgt
aW1hZ2VzLWRpc2FibGVkLmh0bWwsIG1haW4gZG9jdW1lbnQgVVJMIGh0dHA6Ly8xMjcuMC4wLjE6
ODAwMC9taXNjL2Zhdmljb24tbG9hZHMtd2l0aC1pbWFnZXMtZGlzYWJsZWQuaHRtbCwgaHR0cCBt
ZXRob2QgR0VUPiByZWRpcmVjdFJlc3BvbnNlIChudWxsKQogaHR0cDovLzEyNy4wLjAuMTo4MDAw
L21pc2MvZmF2aWNvbi1sb2Fkcy13aXRoLWltYWdlcy1kaXNhYmxlZC5odG1sIC0gZGlkUmVjZWl2
ZVJlc3BvbnNlIDxOU1VSTFJlc3BvbnNlIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9taXNjL2Zhdmlj
b24tbG9hZHMtd2l0aC1pbWFnZXMtZGlzYWJsZWQuaHRtbCwgaHR0cCBzdGF0dXMgY29kZSAyMDA+
CitodHRwOi8vMTI3LjAuMC4xOjgwMDAvbWlzYy9mYXZpY29uLWxvYWRzLXdpdGgtaW1hZ2VzLWRp
c2FibGVkLmh0bWwgLSBkaWRGaW5pc2hMb2FkaW5nCiBSYWRhciA2OTczMTA2IGFuZCBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc4OTYgLSBGYXZpY29ucyBzdGlsbCBs
b2FkIHdoZW4gYXV0b21hdGljIGltYWdlIGxvYWRpbmcgaXMgZGlzYWJsZWQuCiBUaGlzIHRlc3Qg
dXNlcyBEUlQncyByZXNvdXJjZSBsb2FkIGRlbGVnYXRlIGNhbGxiYWNrIG1vZGUgdG8gc2VlIGlm
IHRoZSBmYXZpY29uIGlzIGxvYWRlZCBldmVuIHdoZW4gaW1hZ2UgbG9hZGluZyBpcyBvZmYuCiAK
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9saW5rLXJlbC1pY29uLWJlZm9yZWxv
YWQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlz
Yy9saW5rLXJlbC1pY29uLWJlZm9yZWxvYWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNDExMzMp
CisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvbGluay1yZWwtaWNvbi1iZWZvcmVsb2Fk
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIDx1bmtub3duPiAt
IGRpZEZpbmlzaExvYWRpbmcKIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9taXNjL2xpbmstcmVsLWlj
b24tYmVmb3JlbG9hZC5odG1sIC0gd2lsbFNlbmRSZXF1ZXN0IDxOU1VSTFJlcXVlc3QgVVJMIGh0
dHA6Ly8xMjcuMC4wLjE6ODAwMC9taXNjL2xpbmstcmVsLWljb24tYmVmb3JlbG9hZC5odG1sLCBt
YWluIGRvY3VtZW50IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbWlzYy9saW5rLXJlbC1pY29u
LWJlZm9yZWxvYWQuaHRtbCwgaHR0cCBtZXRob2QgR0VUPiByZWRpcmVjdFJlc3BvbnNlIChudWxs
KQogaHR0cDovLzEyNy4wLjAuMTo4MDAwL21pc2MvbGluay1yZWwtaWNvbi1iZWZvcmVsb2FkLmh0
bWwgLSBkaWRSZWNlaXZlUmVzcG9uc2UgPE5TVVJMUmVzcG9uc2UgaHR0cDovLzEyNy4wLjAuMTo4
MDAwL21pc2MvbGluay1yZWwtaWNvbi1iZWZvcmVsb2FkLmh0bWwsIGh0dHAgc3RhdHVzIGNvZGUg
MjAwPgoraHR0cDovLzEyNy4wLjAuMTo4MDAwL21pc2MvbGluay1yZWwtaWNvbi1iZWZvcmVsb2Fk
Lmh0bWwgLSBkaWRGaW5pc2hMb2FkaW5nCiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvZmF2aWNvbi5p
Y28gLSB3aWxsU2VuZFJlcXVlc3QgPE5TVVJMUmVxdWVzdCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4
MDAwL2Zhdmljb24uaWNvLCBtYWluIGRvY3VtZW50IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAv
bWlzYy9saW5rLXJlbC1pY29uLWJlZm9yZWxvYWQuaHRtbCwgaHR0cCBtZXRob2QgR0VUPiByZWRp
cmVjdFJlc3BvbnNlIChudWxsKQogVGhpcyB0ZXN0IHNob3VsZCBub3Qgc2hvdyBhIHJlcXVlc3Qg
Zm9yIHRoZSBmYXZpY29uIGRvbnQtbG9hZC10aGlzLmljbywgc2luY2UgdGhlIGJlZm9yZWxvYWQg
aGFuZGxlciBvbiB0aGUgZmF2aWNvbiBsaW5rIHJldHVybnMgZmFsc2UuIFRoZXJlZm9yZSwgaWYg
dGhlIHJlc291cmNlIHJlcXVlc3QgbGlzdCBiZWxvdyBzaG93cyBhIHJlcXVlc3QgZm9yIGRvbnQt
bG9hZC10aGlzLmljbywgdGhlbiB0aGlzIHRlc3QgaGFzIGZhaWxlZC4KSW5kZXg6IExheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwkocmV2aXNpb24gMTQx
MTMzKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwko
d29ya2luZyBjb3B5KQpAQCAtNDMzMyw2ICs0MzMzLDEwIEBAIHdlYmtpdC5vcmcvYi8xMDc1Njcg
c3ZnL2NhcnRvLm5ldC9jb21ib2IKIAogd2Via2l0Lm9yZy9iLzEwNzg5OSBmYXN0L3JlcGFpbnQv
c2VsZWN0aW9uLWNsZWFyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAord2Via2l0Lm9yZy9i
LzEwNzk2MiBodHRwL3Rlc3RzL21pc2MvZmF2aWNvbi1sb2Fkcy13aXRoLWltYWdlcy1kaXNhYmxl
ZC5odG1sIFsgRmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMTA3OTYyIGh0dHAvdGVzdHMvbG9hZGlu
Zy9yZWRpcmVjdC1tZXRob2RzLmh0bWwgWyBGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8xMDc5NjIg
aHR0cC90ZXN0cy9jYWNoZS9jYWNoZWQtbWFpbi1yZXNvdXJjZS5odG1sIFsgRmFpbHVyZSBdCisK
IHdlYmtpdC5vcmcvYi8xMDc4OTMgWyBNb3VudGFpbkxpb24gXSBmYXN0L2V4Y2x1c2lvbnMvc2hh
cGUtaW5zaWRlL3NoYXBlLWluc2lkZS1maXJzdC1maXQtMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWls
dXJlIF0gCiAKICMgTmVlZHMgcmViYXNlbGluZSBhZnRlciBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTIyMQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>