<?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>97055</bug_id>
          
          <creation_ts>2012-09-18 18:11:38 -0700</creation_ts>
          <short_desc>Reland &quot;Add in-place reload behavior to ImagesEnabled setting&quot; with optimizations</short_desc>
          <delta_ts>2012-09-25 07:05:15 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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>97477</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Bo Liu">boliu</reporter>
          <assigned_to name="Bo Liu">boliu</assigned_to>
          <cc>abarth</cc>
    
    <cc>aroben</cc>
    
    <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>japhet</cc>
    
    <cc>jberlin</cc>
    
    <cc>lforschler</cc>
    
    <cc>rakuco</cc>
    
    <cc>sfalken</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>723162</commentid>
    <comment_count>0</comment_count>
    <who name="Bo Liu">boliu</who>
    <bug_when>2012-09-18 18:11:38 -0700</bug_when>
    <thetext>Reland &quot;Add in-place reload behavior to ImagesEnabled setting&quot; with optimizations</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723167</commentid>
    <comment_count>1</comment_count>
      <attachid>164642</attachid>
    <who name="Bo Liu">boliu</who>
    <bug_when>2012-09-18 18:20:12 -0700</bug_when>
    <thetext>Created attachment 164642
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723168</commentid>
    <comment_count>2</comment_count>
      <attachid>164642</attachid>
    <who name="Bo Liu">boliu</who>
    <bug_when>2012-09-18 18:20:56 -0700</bug_when>
    <thetext>Comment on attachment 164642
Patch

Waiting for chromium m23 branch before landing with cq.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723683</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-19 11:27:21 -0700</bug_when>
    <thetext>You wrote in the Chromium bug tracker that there&apos;s still a 1.3% regression on bloat-http.  Can we implement this feature without introducing a regression?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723684</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-19 11:27:46 -0700</bug_when>
    <thetext>http://code.google.com/p/chromium/issues/detail?id=150021</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723706</commentid>
    <comment_count>5</comment_count>
    <who name="Bo Liu">boliu</who>
    <bug_when>2012-09-19 12:04:06 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; You wrote in the Chromium bug tracker that there&apos;s still a 1.3% regression on bloat-http.  Can we implement this feature without introducing a regression?

Unfortunately, my naive answer is probably not.

I said in the crbug that most of the regression came from additional calls to WebPermissionClient::allowImage in default image load path. This new patch gets rid of the unnecessary duplicated calls, ie clear winners. The only remaining calls are in CachedResourceLoader::determineRevalidationPolicy and CachedImage::load.

I tried getting rid of the second call by caching the result of allowImage in CachedImage. This hack involved adding two bools (without :1) to CachedImage and did get rid of the second call without breaking any layout tests, but it performs worse in bloat-http (4% vs no patch).

At that point I stopped and figured the regression is probably caused by the overall logic change introduced in this patch.

Writing this comment made me thought of two more things to try but I&apos;m not hopeful:
Retry the hack above with bool:1
Getting rid of the instance variables in CachedResourceLoader and read from Settings directly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723737</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-19 13:01:24 -0700</bug_when>
    <thetext>Sorry for not understanding fully.  Is the regression in memory usage or in load time?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723739</commentid>
    <comment_count>7</comment_count>
      <attachid>164642</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-19 13:04:39 -0700</bug_when>
    <thetext>Comment on attachment 164642
Patch

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

&gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:536
&gt; +    // Do not load from cache if images are not enabled. The load for this image will be blocked
&gt; +    // in CachedImage::load.
&gt; +    if (existingResource-&gt;type() == CachedResource::ImageResource &amp;&amp; !clientAllowsImage(existingResource-&gt;url()))
&gt; +        return Reload;

This check doesn&apos;t seem right.  Why do we need to call clientAllowsImage again here?  It seems like it should be a property of the image whether its load is being deferred.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723743</commentid>
    <comment_count>8</comment_count>
      <attachid>164642</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-19 13:05:34 -0700</bug_when>
    <thetext>Comment on attachment 164642
Patch

I don&apos;t think we want to slow down page load time by 1.3% to support this marginal feature.  We should be able to come up with a design that doesn&apos;t have any measurable performance penalty.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723761</commentid>
    <comment_count>9</comment_count>
    <who name="Bo Liu">boliu</who>
    <bug_when>2012-09-19 13:26:18 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Sorry for not understanding fully.  Is the regression in memory usage or in load time?

The regression is in load time. Memory usage should not be affected by this patch in the normal load path.

(In reply to comment #7)
&gt; (From update of attachment 164642 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=164642&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:536
&gt; &gt; +    // Do not load from cache if images are not enabled. The load for this image will be blocked
&gt; &gt; +    // in CachedImage::load.
&gt; &gt; +    if (existingResource-&gt;type() == CachedResource::ImageResource &amp;&amp; !clientAllowsImage(existingResource-&gt;url()))
&gt; &gt; +        return Reload;
&gt; 
&gt; This check doesn&apos;t seem right.  Why do we need to call clientAllowsImage again here?  It seems like it should be a property of the image whether its load is being deferred.

Need a check here so that we will also block image load from cache. I haven&apos;t verified this but I think an image from cache will have stillNeedsLoad false load is not called. This is how loadImagesAutomatically allows loading images from memory cache.

(In reply to comment #8)
&gt; (From update of attachment 164642 [details])
&gt; I don&apos;t think we want to slow down page load time by 1.3% to support this marginal feature.  We should be able to come up with a design that doesn&apos;t have any measurable performance penalty.

I&apos;ll try the two changes I mentioned first and get back to you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723770</commentid>
    <comment_count>10</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-19 13:34:10 -0700</bug_when>
    <thetext>&gt; &gt; (From update of attachment 164642 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=164642&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:536
&gt; &gt; &gt; +    // Do not load from cache if images are not enabled. The load for this image will be blocked
&gt; &gt; &gt; +    // in CachedImage::load.
&gt; &gt; &gt; +    if (existingResource-&gt;type() == CachedResource::ImageResource &amp;&amp; !clientAllowsImage(existingResource-&gt;url()))
&gt; &gt; &gt; +        return Reload;
&gt; &gt; 
&gt; &gt; This check doesn&apos;t seem right.  Why do we need to call clientAllowsImage again here?  It seems like it should be a property of the image whether its load is being deferred.
&gt; 
&gt; Need a check here so that we will also block image load from cache. I haven&apos;t verified this but I think an image from cache will have stillNeedsLoad false load is not called. This is how loadImagesAutomatically allows loading images from memory cache.

Do we actually need to block images loaded from the MemoryCache?  Presumably flipping this setting isn&apos;t going to effect &lt;img&gt; element that are already present in a document.

I wonder if any clients of this setting really depend on blocking images that are already in the MemoryCache...  If the do, perhaps we should just flush the memory cache when this setting changes value.

If I had to guess, I&apos;d guess that this is the line of code that&apos;s causing the performance problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723794</commentid>
    <comment_count>11</comment_count>
    <who name="Bo Liu">boliu</who>
    <bug_when>2012-09-19 13:47:10 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Do we actually need to block images loaded from the MemoryCache?  Presumably flipping this setting isn&apos;t going to effect &lt;img&gt; element that are already present in a document.
There was the comment in Settings.h explicitly stating that it should block cache loads as well. I guess for chromium, this is to prevent the situation that siteA and siteB load the same image but images from only one of the domain is blocked; if they somehow end up in the same webkit instance, then it could appear as image blocking is broken.

&gt; I wonder if any clients of this setting really depend on blocking images that are already in the MemoryCache...  If the do, perhaps we should just flush the memory cache when this setting changes value.

I&apos;ll try this as well and see what happens.
&gt; 
&gt; If I had to guess, I&apos;d guess that this is the line of code that&apos;s causing the performance problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723873</commentid>
    <comment_count>12</comment_count>
    <who name="Bo Liu">boliu</who>
    <bug_when>2012-09-19 15:18:30 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; I wonder if any clients of this setting really depend on blocking images that are already in the MemoryCache...  If the do, perhaps we should just flush the memory cache when this setting changes value.

Quick update: I tried to implement this first but could not get the test below to pass. The reason is the test never flips the ImagesEnabled setting, instead only sets the client to ignore the setting and start returning false from allowImage call.

LayoutTests/platform/chromium/permissionclient/image-permissions.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723909</commentid>
    <comment_count>13</comment_count>
      <attachid>164794</attachid>
    <who name="Bo Liu">boliu</who>
    <bug_when>2012-09-19 16:06:28 -0700</bug_when>
    <thetext>Created attachment 164794
shouldDeferImageLoad check hack. Not for commit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723910</commentid>
    <comment_count>14</comment_count>
      <attachid>164794</attachid>
    <who name="Bo Liu">boliu</who>
    <bug_when>2012-09-19 16:07:04 -0700</bug_when>
    <thetext>Comment on attachment 164794
shouldDeferImageLoad check hack. Not for commit

Not for commit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723921</commentid>
    <comment_count>15</comment_count>
    <who name="Bo Liu">boliu</who>
    <bug_when>2012-09-19 16:14:20 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; Created an attachment (id=164794) [details]
&gt; shouldDeferImageLoad check hack. Not for commit

This was a bit surprising result so uploading.

With this patch, the bloat-http test runs 0.4% faster. I thought this was a fluke so I closed most programs on my desktop and reran the tests, 3 times (ie 30 iterations) each. Also for reference, without the bool:1 in CachedImage, the patch is 1.1% slower.

The hack is adding 2 bools into CachedImage. They are set in CachedResourceLoader::determineRevalidationPolicy and used in CachedImage::load to avoid a single call to allowImage. The complete logic of CachedResourceLoader::shouldDeferImageLoad is duplciated in CachedResourceLoader::determineRevalidationPolicy though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723931</commentid>
    <comment_count>16</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-19 16:20:43 -0700</bug_when>
    <thetext>+eric, who might be interested in how sensitive this benchmark is to CacheImage performance.  Independent of this work, there might be opportunities for performance improvements here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723952</commentid>
    <comment_count>17</comment_count>
    <who name="Bo Liu">boliu</who>
    <bug_when>2012-09-19 16:34:29 -0700</bug_when>
    <thetext>I&apos;m really baffled at how bool :1 works. I just tried master (without this patch), and add :1 to the only bool in CachedImage and the benchmark runs 1.6% slower.

Now getting back to patch improvements that can possibly be committed...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723994</commentid>
    <comment_count>18</comment_count>
      <attachid>164794</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-09-19 17:34:57 -0700</bug_when>
    <thetext>Comment on attachment 164794
shouldDeferImageLoad check hack. Not for commit

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

&gt; Source/WebCore/loader/cache/CachedImage.h:118
&gt; +    bool m_shouldPaintBrokenImage : 1;
&gt; +    bool m_skipNextShouldDeferImageCheck : 1;
&gt; +    bool m_shouldDeferImageResult : 1;

These are unsafe!  MSVC uses a signed bool and will do the wrong thing here!  These need to be unsigned or you&apos;ll have strange bugs on Windows.  We *really* need to add this to the style-checker pronto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723995</commentid>
    <comment_count>19</comment_count>
      <attachid>164794</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-09-19 17:35:49 -0700</bug_when>
    <thetext>Comment on attachment 164794
shouldDeferImageLoad check hack. Not for commit

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

&gt; Source/WebCore/loader/cache/CachedResourceLoader.h:165
&gt;      bool m_autoLoadImages : 1;
&gt; +    bool m_imagesEnabled : 1;
&gt;      bool m_allowStaleResources : 1;

Maybe things have changed... but back when we first brought the Apple Win port up, bool : 1 didn&apos;t work right on MSVC.  Last I knew that hadn&apos;t changed.  I&apos;ll CC some Windows folsk to confirm.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723996</commentid>
    <comment_count>20</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-09-19 17:36:55 -0700</bug_when>
    <thetext>are &quot;bool&quot; bitfields OK in modern MSVC?  I thought they still did the wrong thing?  (caused msvc to only store the sign and not the actual value.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723998</commentid>
    <comment_count>21</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-09-19 17:38:13 -0700</bug_when>
    <thetext>I&apos;m interested in playing with this bloat-http test when I&apos;m back from vacation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724002</commentid>
    <comment_count>22</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-19 17:42:22 -0700</bug_when>
    <thetext>We use bool : 1 a lot in Settings.  I hope it works...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724021</commentid>
    <comment_count>23</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-09-19 18:02:07 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; We use bool : 1 a lot in Settings.  I hope it works...

Sorry.  I&apos;m remembering incorrectly.  It&apos;s &quot;enum&quot; which MSVC treats as signed and gets wrong.

bool should be fine!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724022</commentid>
    <comment_count>24</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-09-19 18:03:29 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/74937 is the kind of bug I was remembering.  Probably not the exact example (since it doesn&apos;t have much explanation), but you can see the general idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724786</commentid>
    <comment_count>25</comment_count>
    <who name="Bo Liu">boliu</who>
    <bug_when>2012-09-20 13:17:53 -0700</bug_when>
    <thetext>Adam:

I found that CachedImage::load is called twice for each CachedResourceLoader::requestImage call that is not loaded from cache, once in loadResource/revalidateResource once in requestImage.

If I remove the load call in loadResource/revalidateResource, then it brings the patch performance up to before the patch: 0.2% regression which could just be variation in the benchmark. But this is a case of finding existing bad code to improve performance then regressing again in the patch.

I also noticed CachedResourceLoader::requestUserCSSStyleSheet does not call requestResource, but has its own code to handle caching and such. Do you think it&apos;s worthwhile to try something like that for requestImage to get rid of the duplicated allowImage call? I think if we do this refactor, then CachedImage should no longer need to override the load method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724801</commentid>
    <comment_count>26</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-20 13:26:40 -0700</bug_when>
    <thetext>&gt; If I remove the load call in loadResource/revalidateResource, then it brings the patch performance up to before the patch: 0.2% regression which could just be variation in the benchmark. But this is a case of finding existing bad code to improve performance then regressing again in the patch.

That&apos;s ok with me.  We can work to further optimize the performance in a later patch.

&gt; I also noticed CachedResourceLoader::requestUserCSSStyleSheet does not call requestResource, but has its own code to handle caching and such. Do you think it&apos;s worthwhile to try something like that for requestImage to get rid of the duplicated allowImage call? I think if we do this refactor, then CachedImage should no longer need to override the load method.

Sure, we can try that.  Another option is to land the version of the patch without the (observable) regression and then look at that optimization in a subsequent patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724887</commentid>
    <comment_count>27</comment_count>
      <attachid>164988</attachid>
    <who name="Bo Liu">boliu</who>
    <bug_when>2012-09-20 14:46:57 -0700</bug_when>
    <thetext>Created attachment 164988
Do not call load for image in loadResource/revalidateResource</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724890</commentid>
    <comment_count>28</comment_count>
    <who name="Bo Liu">boliu</who>
    <bug_when>2012-09-20 14:50:54 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; Created an attachment (id=164988) [details]
&gt; Do not call load for image in loadResource/revalidateResource

I thought this would be good enough to land, but I synced webkit/chromium tree and ran bloat-http again and it showed 1.7% regression again. More confusingly, Patch 1 on the new tip of tree has only 0.1% regression. So removing the load call actually hurt performance, possibly due to the condition check?

Should I attempt the refactor?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724907</commentid>
    <comment_count>29</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-20 15:21:25 -0700</bug_when>
    <thetext>&gt; Should I attempt the refactor?

Sure...  Maybe there&apos;s enough noise in this benchmark that it&apos;s hard to measure what&apos;s going on?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724912</commentid>
    <comment_count>30</comment_count>
      <attachid>164988</attachid>
    <who name="Bo Liu">boliu</who>
    <bug_when>2012-09-20 15:25:13 -0700</bug_when>
    <thetext>Comment on attachment 164988
Do not call load for image in loadResource/revalidateResource

Have something in the works that is definitely less hacky and *should* perform the same as this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724989</commentid>
    <comment_count>31</comment_count>
      <attachid>165015</attachid>
    <who name="Bo Liu">boliu</who>
    <bug_when>2012-09-20 17:02:37 -0700</bug_when>
    <thetext>Created attachment 165015
Move check logic into CachedImage::load and remove load call at end of requestImage</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724994</commentid>
    <comment_count>32</comment_count>
    <who name="Bo Liu">boliu</who>
    <bug_when>2012-09-20 17:10:28 -0700</bug_when>
    <thetext>(In reply to comment #31)
&gt; Created an attachment (id=165015) [details]
&gt; Move check logic into CachedImage::load and remove load call at end of requestImage

This is similar to last one except instead of removing load call in requestResource/revalidateResource, the load in requestImage is removed. This brings requestImage closer to other request* methods.

Performance-wise, regression is under 1%. I think this is the version that should be landed.

In terms of getting rid of the duplicated allowImage call, I tried adding a bool to ResourceLoaderOptions, but the regression caused by initializing this extra bool everywhere else outweighs getting rid of one allowImage call.

I tried the refactor I mentioned, but stopped half way, because even if no code is duplicated, it would make the load call path way more complicated, and that alone would probably offset getting rid of that allowImage call.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725068</commentid>
    <comment_count>33</comment_count>
      <attachid>165015</attachid>
    <who name="Bo Liu">boliu</who>
    <bug_when>2012-09-20 18:47:55 -0700</bug_when>
    <thetext>Comment on attachment 165015
Move check logic into CachedImage::load and remove load call at end of requestImage

Seem to have broken an android test downstream. Will investigate a bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725171</commentid>
    <comment_count>34</comment_count>
      <attachid>165015</attachid>
    <who name="Bo Liu">boliu</who>
    <bug_when>2012-09-20 22:55:46 -0700</bug_when>
    <thetext>Comment on attachment 165015
Move check logic into CachedImage::load and remove load call at end of requestImage

Breaks image loading from cache. Apparently images are special that load needs to be called even when loading directly from cache.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725685</commentid>
    <comment_count>35</comment_count>
      <attachid>165168</attachid>
    <who name="Bo Liu">boliu</who>
    <bug_when>2012-09-21 12:04:34 -0700</bug_when>
    <thetext>Created attachment 165168
Add bool parameter to requestResource to avoid duplicated allowImage calls. Refactored CachedResource::load call out of loadResource/revalidateResource to end of requestResource.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725687</commentid>
    <comment_count>36</comment_count>
    <who name="Bo Liu">boliu</who>
    <bug_when>2012-09-21 12:05:46 -0700</bug_when>
    <thetext>(In reply to comment #35)
&gt; Created an attachment (id=165168) [details]
&gt; Add bool parameter to requestResource to avoid duplicated allowImage calls. Refactored CachedResource::load call out of loadResource/revalidateResource to end of requestResource.

Performance on bloat-http should be on par or better than before patch based on my local testing. The refactored logic is not 100% identical to before in moving the load call from loadResource/revalidateResource to end of requestResource, but they seem to be ok by running through some loader layout tests, but please double check.

Style-wise, the autoLoadImages check is in CachedImage::load, but clientDefersImage check is in CachedResourceLoader. This is for performance reasons only. The fall through in the switch statement in requestResource is for performance too.

Please review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725699</commentid>
    <comment_count>37</comment_count>
      <attachid>165168</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-09-21 12:22:01 -0700</bug_when>
    <thetext>Comment on attachment 165168
Add bool parameter to requestResource to avoid duplicated allowImage calls. Refactored CachedResource::load call out of loadResource/revalidateResource to end of requestResource.

Attachment 165168 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13953718</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725713</commentid>
    <comment_count>38</comment_count>
      <attachid>165173</attachid>
    <who name="Bo Liu">boliu</who>
    <bug_when>2012-09-21 12:39:53 -0700</bug_when>
    <thetext>Created attachment 165173
Move check logic into CachedImage::load and remove load call at end of requestImage</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725718</commentid>
    <comment_count>39</comment_count>
    <who name="Bo Liu">boliu</who>
    <bug_when>2012-09-21 12:41:42 -0700</bug_when>
    <thetext>(In reply to comment #38)
&gt; Created an attachment (id=165173) [details]
&gt; Move check logic into CachedImage::load and remove load call at end of requestImage

Damn it! webkit-patch on tot seem to have problems.

Description should be: Remove unused parameters in loadResource/revalidateResource (Thank you clang!)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725790</commentid>
    <comment_count>40</comment_count>
      <attachid>165173</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-21 13:57:23 -0700</bug_when>
    <thetext>Comment on attachment 165173
Move check logic into CachedImage::load and remove load call at end of requestImage

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

New failing tests:
WebFilterOperationsTest.saveAndRestore
fast/html/object-image-nested-fallback.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725824</commentid>
    <comment_count>41</comment_count>
      <attachid>165173</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-09-21 14:29:23 -0700</bug_when>
    <thetext>Comment on attachment 165173
Move check logic into CachedImage::load and remove load call at end of requestImage

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

New failing tests:
fast/html/object-image-nested-fallback.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726011</commentid>
    <comment_count>42</comment_count>
      <attachid>165236</attachid>
    <who name="Bo Liu">boliu</who>
    <bug_when>2012-09-21 17:50:54 -0700</bug_when>
    <thetext>Created attachment 165236
Fix condition for whether to call load</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726802</commentid>
    <comment_count>43</comment_count>
      <attachid>165236</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-24 10:10:42 -0700</bug_when>
    <thetext>Comment on attachment 165236
Fix condition for whether to call load

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

This looks great.  Only one nit-picky comment below.

&gt; Source/WebCore/loader/cache/CachedResourceLoader.h:129
&gt; +    CachedResourceHandle&lt;CachedResource&gt; requestResource(CachedResource::Type, ResourceRequest&amp;, const String&amp; charset, const ResourceLoaderOptions&amp;, ResourceLoadPriority = ResourceLoadPriorityUnresolved, bool isPreload = false, bool imageDeferredByClient = false);

Rather than add Boolean parameter, we prefer to add enum parameters, like ResourceLoadPriority.  That makes things much easier to read at the call site.  I realize that isPreload is already using a Boolean, but we might want to convert that to a two-value enum in a followup patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726822</commentid>
    <comment_count>44</comment_count>
      <attachid>165407</attachid>
    <who name="Bo Liu">boliu</who>
    <bug_when>2012-09-24 10:38:38 -0700</bug_when>
    <thetext>Created attachment 165407
Use enum instead of bool.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726823</commentid>
    <comment_count>45</comment_count>
      <attachid>165407</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-24 10:41:55 -0700</bug_when>
    <thetext>Comment on attachment 165407
Use enum instead of bool.

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726856</commentid>
    <comment_count>46</comment_count>
      <attachid>165407</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-24 11:13:16 -0700</bug_when>
    <thetext>Comment on attachment 165407
Use enum instead of bool.

Clearing flags on attachment: 165407

Committed r129388: &lt;http://trac.webkit.org/changeset/129388&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726857</commentid>
    <comment_count>47</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-24 11:13:21 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726923</commentid>
    <comment_count>48</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-09-24 12:33:11 -0700</bug_when>
    <thetext>This appears to have broken the FrameMIMETypePNG WK2 API test at least on the EFL port: &lt;http://build.webkit.org/builders/EFL%20Linux%2064-bit%20Debug/builds/6302/steps/API%20tests/logs/stdio&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726927</commentid>
    <comment_count>49</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-09-24 12:43:54 -0700</bug_when>
    <thetext>This seems to be causing a new assertion when running fast/tokenizer/image-empty-crash.html

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x00000000bbadbeef

VM Regions Near 0xbbadbeef:
--&gt; 
    __TEXT                 0000000101b3c000-0000000101b3d000 [    4K] r-x/rwx SM=COW  /Volumes/VOLUME/*/WebKit2.framework/WebProcess.app/Contents/MacOS/WebProcess

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   com.apple.WebCore             	0x000000010509f263 WebCore::SubresourceLoader::didFinishLoading(double) + 307 (SubresourceLoader.cpp:293)
1   com.apple.WebCore             	0x0000000104e7f4b5 WebCore::ResourceLoader::didFinishLoading(WebCore::ResourceHandle*, double) + 53 (ResourceLoader.cpp:442)
2   com.apple.WebCore             	0x0000000104e7c0ca -[WebCoreResourceHandleAsDelegate connectionDidFinishLoading:] + 186 (ResourceHandleMac.mm:861)
3   com.apple.Foundation          	0x00007fff96686f58 __65-[NSURLConnectionInternal _withConnectionAndDelegate:onlyActive:]_block_invoke_0 + 28
4   com.apple.Foundation          	0x00007fff96686e9c -[NSURLConnectionInternal _withConnectionAndDelegate:onlyActive:] + 227
5   com.apple.Foundation          	0x00007fff96686d98 -[NSURLConnectionInternal _withActiveConnectionAndDelegate:] + 63

http://build.webkit.org/results/Apple%20MountainLion%20Debug%20WK2%20(Tests)/r129389%20(1400)/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726930</commentid>
    <comment_count>50</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-24 12:53:09 -0700</bug_when>
    <thetext>Bo, how to you feel about rolling out this patch?  We&apos;d prefer not to cause failures on the bot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726936</commentid>
    <comment_count>51</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-09-24 12:55:27 -0700</bug_when>
    <thetext>Seems to cause assertions on EFL build bots:
crash log for DumpRenderTree (pid 11106):
STDOUT: &lt;empty&gt;
STDERR: ASSERTION FAILED: size == 0 || size &gt;= m_encodedSize
STDERR: /home/buildslave-1/webkit-buildslave/efl-linux-64-debug/build/Source/WebCore/loader/cache/CachedResource.cpp(523) : void WebCore::CachedResource::setEncodedSize(unsigned int)
STDERR: 1   0x7fe263acdc04 WebCore::CachedResource::setEncodedSize(unsigned int)
STDERR: 2   0x7fe263ac8f4f WebCore::CachedImage::data(WTF::PassRefPtr&lt;WebCore::SharedBuffer&gt;, bool)
STDERR: 3   0x7fe263a8f6ef WebCore::SubresourceLoader::sendDataToResource(char const*, int)
STDERR: 4   0x7fe263a8f4b0 WebCore::SubresourceLoader::didReceiveData(char const*, int, long long, bool)
STDERR: 5   0x7fe263a8aa66 WebCore::ResourceLoader::didReceiveData(WebCore::ResourceHandle*, char const*, int, int)
STDERR: 6   0x7fe264581ee2
STDERR: 7   0x7fe25c333765
STDERR: 8   0x7fe25c3488cd g_simple_async_result_complete
STDERR: 9   0x7fe25c348968
STDERR: 10  0x7fe25c67ae53 g_main_context_dispatch
STDERR: 11  0x7fe260afd23e
STDERR: 12  0x7fe260af77b1
STDERR: 13  0x7fe260af8245
STDERR: 14  0x7fe260af8547 ecore_main_loop_begin
STDERR: 15  0x479cc1
STDERR: 16  0x479e9f
STDERR: 17  0x47a4f8 main
STDERR: 18  0x7fe25f1a776d __libc_start_main
STDERR: 19  0x467999</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726937</commentid>
    <comment_count>52</comment_count>
    <who name="Bo Liu">boliu</who>
    <bug_when>2012-09-24 12:57:14 -0700</bug_when>
    <thetext>(In reply to comment #50)
&gt; Bo, how to you feel about rolling out this patch?  We&apos;d prefer not to cause failures on the bot.

Reproduced image-empty-crash.html in chromium and can&apos;t see an obvious quick fix. And the other error reports are rolling in...

I guess should revert for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726940</commentid>
    <comment_count>53</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-24 12:59:11 -0700</bug_when>
    <thetext>Re-opened since this is blocked by 97477</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727107</commentid>
    <comment_count>54</comment_count>
      <attachid>165472</attachid>
    <who name="Bo Liu">boliu</who>
    <bug_when>2012-09-24 17:17:29 -0700</bug_when>
    <thetext>Created attachment 165472
Fix crash in image-empty-crash.html: was missing stillNeedsLoad check in reloadImagesIfNotDeferred. Other crashes are probably due to same mistake, but haven&apos;t checked</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727151</commentid>
    <comment_count>55</comment_count>
    <who name="Bo Liu">boliu</who>
    <bug_when>2012-09-24 18:21:34 -0700</bug_when>
    <thetext>(In reply to comment #48)
&gt; This appears to have broken the FrameMIMETypePNG WK2 API test at least on the EFL port: &lt;http://build.webkit.org/builders/EFL%20Linux%2064-bit%20Debug/builds/6302/steps/API%20tests/logs/stdio&gt;

This is fixed in Patch in attachment 165472</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727164</commentid>
    <comment_count>56</comment_count>
    <who name="Bo Liu">boliu</who>
    <bug_when>2012-09-24 18:36:18 -0700</bug_when>
    <thetext>(In reply to comment #51)
&gt; Seems to cause assertions on EFL build bots:
&gt; crash log for DumpRenderTree (pid 11106):
&gt; STDOUT: &lt;empty&gt;
&gt; STDERR: ASSERTION FAILED: size == 0 || size &gt;= m_encodedSize
&gt; STDERR: /home/buildslave-1/webkit-buildslave/efl-linux-64-debug/build/Source/WebCore/loader/cache/CachedResource.cpp(523) : void WebCore::CachedResource::setEncodedSize(unsigned int)
&gt; STDERR: 1   0x7fe263acdc04 WebCore::CachedResource::setEncodedSize(unsigned int)
&gt; STDERR: 2   0x7fe263ac8f4f WebCore::CachedImage::data(WTF::PassRefPtr&lt;WebCore::SharedBuffer&gt;, bool)
&gt; STDERR: 3   0x7fe263a8f6ef WebCore::SubresourceLoader::sendDataToResource(char const*, int)
&gt; STDERR: 4   0x7fe263a8f4b0 WebCore::SubresourceLoader::didReceiveData(char const*, int, long long, bool)
&gt; STDERR: 5   0x7fe263a8aa66 WebCore::ResourceLoader::didReceiveData(WebCore::ResourceHandle*, char const*, int, int)
&gt; STDERR: 6   0x7fe264581ee2
&gt; STDERR: 7   0x7fe25c333765
&gt; STDERR: 8   0x7fe25c3488cd g_simple_async_result_complete
&gt; STDERR: 9   0x7fe25c348968
&gt; STDERR: 10  0x7fe25c67ae53 g_main_context_dispatch
&gt; STDERR: 11  0x7fe260afd23e
&gt; STDERR: 12  0x7fe260af77b1
&gt; STDERR: 13  0x7fe260af8245
&gt; STDERR: 14  0x7fe260af8547 ecore_main_loop_begin
&gt; STDERR: 15  0x479cc1
&gt; STDERR: 16  0x479e9f
&gt; STDERR: 17  0x47a4f8 main
&gt; STDERR: 18  0x7fe25f1a776d __libc_start_main
&gt; STDERR: 19  0x467999

EFL layout tests are failing locally for me with the error below so I can&apos;t verify if this is fixed. But I think the error above was caused by the same mistake that is fixed in attachment 165472.

crash log for DumpRenderTree (pid 12978):
STDOUT: &lt;empty&gt;
STDERR: ASSERTION FAILED: from.isCell() &amp;&amp; from.asCell()-&gt;JSCell::inherits(&amp;WTF::RemovePointer&lt;To&gt;::Type::s_info)
STDERR: /ssd_code/chromium/src/third_party/WebKit/Source/JavaScriptCore/runtime/JSCell.h(369) : To JSC::jsCast(JSC::JSValue) [with To = JSC::JSScope*]
STDERR: 1   0x4b2255
STDERR: 2   0x4b1396
STDERR: 3   0x4b02a4
STDERR: 4   0x4b13b0
STDERR: 5   0x4b1b2c
STDERR: 6   0x4b3d47 JSObjectMake
STDERR: 7   0x489b2d TestRunner::makeWindowObject(OpaqueJSContext const*, OpaqueJSValue*, OpaqueJSValue const**)
STDERR: 8   0x496a22 DumpRenderTreeChrome::onWindowObjectCleared(void*, _Evas_Object*, void*)
STDERR: 9   0x7fdc2886c483 evas_object_smart_callback_call
STDERR: 10  0x7fdc28ed2b72
STDERR: 11  0x7fdc293029e5
STDERR: 12  0x7fdc2986514e
STDERR: 13  0x7fdc28ec80cf</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727294</commentid>
    <comment_count>57</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-09-24 22:39:35 -0700</bug_when>
    <thetext>(In reply to comment #56)
&gt; (In reply to comment #51)
&gt; &gt; Seems to cause assertions on EFL build bots:
&gt; &gt; crash log for DumpRenderTree (pid 11106):
&gt; &gt; STDOUT: &lt;empty&gt;
&gt; &gt; STDERR: ASSERTION FAILED: size == 0 || size &gt;= m_encodedSize
&gt; &gt; STDERR: /home/buildslave-1/webkit-buildslave/efl-linux-64-debug/build/Source/WebCore/loader/cache/CachedResource.cpp(523) : void WebCore::CachedResource::setEncodedSize(unsigned int)
&gt; &gt; STDERR: 1   0x7fe263acdc04 WebCore::CachedResource::setEncodedSize(unsigned int)
&gt; &gt; STDERR: 2   0x7fe263ac8f4f WebCore::CachedImage::data(WTF::PassRefPtr&lt;WebCore::SharedBuffer&gt;, bool)
&gt; &gt; STDERR: 3   0x7fe263a8f6ef WebCore::SubresourceLoader::sendDataToResource(char const*, int)
&gt; &gt; STDERR: 4   0x7fe263a8f4b0 WebCore::SubresourceLoader::didReceiveData(char const*, int, long long, bool)
&gt; &gt; STDERR: 5   0x7fe263a8aa66 WebCore::ResourceLoader::didReceiveData(WebCore::ResourceHandle*, char const*, int, int)
&gt; &gt; STDERR: 6   0x7fe264581ee2
&gt; &gt; STDERR: 7   0x7fe25c333765
&gt; &gt; STDERR: 8   0x7fe25c3488cd g_simple_async_result_complete
&gt; &gt; STDERR: 9   0x7fe25c348968
&gt; &gt; STDERR: 10  0x7fe25c67ae53 g_main_context_dispatch
&gt; &gt; STDERR: 11  0x7fe260afd23e
&gt; &gt; STDERR: 12  0x7fe260af77b1
&gt; &gt; STDERR: 13  0x7fe260af8245
&gt; &gt; STDERR: 14  0x7fe260af8547 ecore_main_loop_begin
&gt; &gt; STDERR: 15  0x479cc1
&gt; &gt; STDERR: 16  0x479e9f
&gt; &gt; STDERR: 17  0x47a4f8 main
&gt; &gt; STDERR: 18  0x7fe25f1a776d __libc_start_main
&gt; &gt; STDERR: 19  0x467999
&gt; 
&gt; EFL layout tests are failing locally for me with the error below so I can&apos;t verify if this is fixed. But I think the error above was caused by the same mistake that is fixed in attachment 165472 [details].
&gt; 
&gt; crash log for DumpRenderTree (pid 12978):
&gt; STDOUT: &lt;empty&gt;
&gt; STDERR: ASSERTION FAILED: from.isCell() &amp;&amp; from.asCell()-&gt;JSCell::inherits(&amp;WTF::RemovePointer&lt;To&gt;::Type::s_info)
&gt; STDERR: /ssd_code/chromium/src/third_party/WebKit/Source/JavaScriptCore/runtime/JSCell.h(369) : To JSC::jsCast(JSC::JSValue) [with To = JSC::JSScope*]
&gt; STDERR: 1   0x4b2255
&gt; STDERR: 2   0x4b1396
&gt; STDERR: 3   0x4b02a4
&gt; STDERR: 4   0x4b13b0
&gt; STDERR: 5   0x4b1b2c
&gt; STDERR: 6   0x4b3d47 JSObjectMake
&gt; STDERR: 7   0x489b2d TestRunner::makeWindowObject(OpaqueJSContext const*, OpaqueJSValue*, OpaqueJSValue const**)
&gt; STDERR: 8   0x496a22 DumpRenderTreeChrome::onWindowObjectCleared(void*, _Evas_Object*, void*)
&gt; STDERR: 9   0x7fdc2886c483 evas_object_smart_callback_call
&gt; STDERR: 10  0x7fdc28ed2b72
&gt; STDERR: 11  0x7fdc293029e5
&gt; STDERR: 12  0x7fdc2986514e
&gt; STDERR: 13  0x7fdc28ec80cf

I will test the patch on EFL port now and report back.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727316</commentid>
    <comment_count>58</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-09-24 23:17:51 -0700</bug_when>
    <thetext>(In reply to comment #57)
&gt; (In reply to comment #56)
&gt; &gt; (In reply to comment #51)
&gt; &gt; &gt; Seems to cause assertions on EFL build bots:
&gt; &gt; &gt; crash log for DumpRenderTree (pid 11106):
&gt; &gt; &gt; STDOUT: &lt;empty&gt;
&gt; &gt; &gt; STDERR: ASSERTION FAILED: size == 0 || size &gt;= m_encodedSize
&gt; &gt; &gt; STDERR: /home/buildslave-1/webkit-buildslave/efl-linux-64-debug/build/Source/WebCore/loader/cache/CachedResource.cpp(523) : void WebCore::CachedResource::setEncodedSize(unsigned int)
&gt; &gt; &gt; STDERR: 1   0x7fe263acdc04 WebCore::CachedResource::setEncodedSize(unsigned int)
&gt; &gt; &gt; STDERR: 2   0x7fe263ac8f4f WebCore::CachedImage::data(WTF::PassRefPtr&lt;WebCore::SharedBuffer&gt;, bool)
&gt; &gt; &gt; STDERR: 3   0x7fe263a8f6ef WebCore::SubresourceLoader::sendDataToResource(char const*, int)
&gt; &gt; &gt; STDERR: 4   0x7fe263a8f4b0 WebCore::SubresourceLoader::didReceiveData(char const*, int, long long, bool)
&gt; &gt; &gt; STDERR: 5   0x7fe263a8aa66 WebCore::ResourceLoader::didReceiveData(WebCore::ResourceHandle*, char const*, int, int)
&gt; &gt; &gt; STDERR: 6   0x7fe264581ee2
&gt; &gt; &gt; STDERR: 7   0x7fe25c333765
&gt; &gt; &gt; STDERR: 8   0x7fe25c3488cd g_simple_async_result_complete
&gt; &gt; &gt; STDERR: 9   0x7fe25c348968
&gt; &gt; &gt; STDERR: 10  0x7fe25c67ae53 g_main_context_dispatch
&gt; &gt; &gt; STDERR: 11  0x7fe260afd23e
&gt; &gt; &gt; STDERR: 12  0x7fe260af77b1
&gt; &gt; &gt; STDERR: 13  0x7fe260af8245
&gt; &gt; &gt; STDERR: 14  0x7fe260af8547 ecore_main_loop_begin
&gt; &gt; &gt; STDERR: 15  0x479cc1
&gt; &gt; &gt; STDERR: 16  0x479e9f
&gt; &gt; &gt; STDERR: 17  0x47a4f8 main
&gt; &gt; &gt; STDERR: 18  0x7fe25f1a776d __libc_start_main
&gt; &gt; &gt; STDERR: 19  0x467999
&gt; &gt; 
&gt; &gt; EFL layout tests are failing locally for me with the error below so I can&apos;t verify if this is fixed. But I think the error above was caused by the same mistake that is fixed in attachment 165472 [details] [details].
&gt; &gt; 
&gt; &gt; crash log for DumpRenderTree (pid 12978):
&gt; &gt; STDOUT: &lt;empty&gt;
&gt; &gt; STDERR: ASSERTION FAILED: from.isCell() &amp;&amp; from.asCell()-&gt;JSCell::inherits(&amp;WTF::RemovePointer&lt;To&gt;::Type::s_info)
&gt; &gt; STDERR: /ssd_code/chromium/src/third_party/WebKit/Source/JavaScriptCore/runtime/JSCell.h(369) : To JSC::jsCast(JSC::JSValue) [with To = JSC::JSScope*]
&gt; &gt; STDERR: 1   0x4b2255
&gt; &gt; STDERR: 2   0x4b1396
&gt; &gt; STDERR: 3   0x4b02a4
&gt; &gt; STDERR: 4   0x4b13b0
&gt; &gt; STDERR: 5   0x4b1b2c
&gt; &gt; STDERR: 6   0x4b3d47 JSObjectMake
&gt; &gt; STDERR: 7   0x489b2d TestRunner::makeWindowObject(OpaqueJSContext const*, OpaqueJSValue*, OpaqueJSValue const**)
&gt; &gt; STDERR: 8   0x496a22 DumpRenderTreeChrome::onWindowObjectCleared(void*, _Evas_Object*, void*)
&gt; &gt; STDERR: 9   0x7fdc2886c483 evas_object_smart_callback_call
&gt; &gt; STDERR: 10  0x7fdc28ed2b72
&gt; &gt; STDERR: 11  0x7fdc293029e5
&gt; &gt; STDERR: 12  0x7fdc2986514e
&gt; &gt; STDERR: 13  0x7fdc28ec80cf
&gt; 
&gt; I will test the patch on EFL port now and report back.

The latest patch does not seem to cause any crashes on EFL port. Thanks for fixing it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727318</commentid>
    <comment_count>59</comment_count>
      <attachid>165472</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-24 23:20:24 -0700</bug_when>
    <thetext>Comment on attachment 165472
Fix crash in image-empty-crash.html: was missing stillNeedsLoad check in reloadImagesIfNotDeferred. Other crashes are probably due to same mistake, but haven&apos;t checked

Ok.  Sounds like we should try landing it again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727338</commentid>
    <comment_count>60</comment_count>
      <attachid>165472</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-24 23:51:23 -0700</bug_when>
    <thetext>Comment on attachment 165472
Fix crash in image-empty-crash.html: was missing stillNeedsLoad check in reloadImagesIfNotDeferred. Other crashes are probably due to same mistake, but haven&apos;t checked

Clearing flags on attachment: 165472

Committed r129462: &lt;http://trac.webkit.org/changeset/129462&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727339</commentid>
    <comment_count>61</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-24 23:51:30 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727449</commentid>
    <comment_count>62</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-09-25 02:56:17 -0700</bug_when>
    <thetext>Hi again,

fast/loader/display-image-unset-can-block-image-and-can-reload-in-place.html seems to be failing on the EFL WK1 bot: &lt;http://build.webkit.org/builders/EFL%20Linux%2064-bit%20Debug/builds/6332/steps/layout-test/logs/stdio&gt;

--- /home/rakuco/dev/WebKit/WebKitBuild/Debug/layout-test-results/fast/loader/display-image-unset-can-block-image-and-can-reload-in-place-expected.txt
+++ /home/rakuco/dev/WebKit/WebKitBuild/Debug/layout-test-results/fast/loader/display-image-unset-can-block-image-and-can-reload-in-place-actual.txt
@@ -1,3 +1,3 @@
 Test that DisplayImages disabled can block http image and can be reloaded in-place when toggled.
-SUCCESS
+FAILURE: Image should not be loaded when DisplayImage is unset</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727468</commentid>
    <comment_count>63</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-09-25 03:29:10 -0700</bug_when>
    <thetext>(In reply to comment #62)
&gt; Hi again,
&gt; 
&gt; fast/loader/display-image-unset-can-block-image-and-can-reload-in-place.html seems to be failing on the EFL WK1 bot: &lt;http://build.webkit.org/builders/EFL%20Linux%2064-bit%20Debug/builds/6332/steps/layout-test/logs/stdio&gt;
&gt; 
&gt; --- /home/rakuco/dev/WebKit/WebKitBuild/Debug/layout-test-results/fast/loader/display-image-unset-can-block-image-and-can-reload-in-place-expected.txt
&gt; +++ /home/rakuco/dev/WebKit/WebKitBuild/Debug/layout-test-results/fast/loader/display-image-unset-can-block-image-and-can-reload-in-place-actual.txt
&gt; @@ -1,3 +1,3 @@
&gt;  Test that DisplayImages disabled can block http image and can be reloaded in-place when toggled.
&gt; -SUCCESS
&gt; +FAILURE: Image should not be loaded when DisplayImage is unset

Rakuco, this is likely because the EFL port does not support overriding the &quot;WebKitDisplayImagesKey&quot; preference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727598</commentid>
    <comment_count>64</comment_count>
    <who name="Bo Liu">boliu</who>
    <bug_when>2012-09-25 07:02:29 -0700</bug_when>
    <thetext>(In reply to comment #63)
&gt; (In reply to comment #62)
&gt; &gt; Hi again,
&gt; &gt; 
&gt; &gt; fast/loader/display-image-unset-can-block-image-and-can-reload-in-place.html seems to be failing on the EFL WK1 bot: &lt;http://build.webkit.org/builders/EFL%20Linux%2064-bit%20Debug/builds/6332/steps/layout-test/logs/stdio&gt;
&gt; &gt; 
&gt; &gt; --- /home/rakuco/dev/WebKit/WebKitBuild/Debug/layout-test-results/fast/loader/display-image-unset-can-block-image-and-can-reload-in-place-expected.txt
&gt; &gt; +++ /home/rakuco/dev/WebKit/WebKitBuild/Debug/layout-test-results/fast/loader/display-image-unset-can-block-image-and-can-reload-in-place-actual.txt
&gt; &gt; @@ -1,3 +1,3 @@
&gt; &gt;  Test that DisplayImages disabled can block http image and can be reloaded in-place when toggled.
&gt; &gt; -SUCCESS
&gt; &gt; +FAILURE: Image should not be loaded when DisplayImage is unset
&gt; 
&gt; Rakuco, this is likely because the EFL port does not support overriding the &quot;WebKitDisplayImagesKey&quot; preference.

Sorry...just woke up. It looks like the bot is no longer failing due to this test. Was it added to a do-not-run or expect-fail list? Do I still have to worry about this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727601</commentid>
    <comment_count>65</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-09-25 07:05:15 -0700</bug_when>
    <thetext>(In reply to comment #64)
&gt; (In reply to comment #63)
&gt; &gt; (In reply to comment #62)
&gt; &gt; &gt; Hi again,
&gt; &gt; &gt; 
&gt; &gt; &gt; fast/loader/display-image-unset-can-block-image-and-can-reload-in-place.html seems to be failing on the EFL WK1 bot: &lt;http://build.webkit.org/builders/EFL%20Linux%2064-bit%20Debug/builds/6332/steps/layout-test/logs/stdio&gt;
&gt; &gt; &gt; 
&gt; &gt; &gt; --- /home/rakuco/dev/WebKit/WebKitBuild/Debug/layout-test-results/fast/loader/display-image-unset-can-block-image-and-can-reload-in-place-expected.txt
&gt; &gt; &gt; +++ /home/rakuco/dev/WebKit/WebKitBuild/Debug/layout-test-results/fast/loader/display-image-unset-can-block-image-and-can-reload-in-place-actual.txt
&gt; &gt; &gt; @@ -1,3 +1,3 @@
&gt; &gt; &gt;  Test that DisplayImages disabled can block http image and can be reloaded in-place when toggled.
&gt; &gt; &gt; -SUCCESS
&gt; &gt; &gt; +FAILURE: Image should not be loaded when DisplayImage is unset
&gt; &gt; 
&gt; &gt; Rakuco, this is likely because the EFL port does not support overriding the &quot;WebKitDisplayImagesKey&quot; preference.
&gt; 
&gt; Sorry...just woke up. It looks like the bot is no longer failing due to this test. Was it added to a do-not-run or expect-fail list? Do I still have to worry about this?

As I said, we don&apos;t support overriding &quot;WebKitDisplayImagesKey&quot; preference and the test requires it so it is not suprising if the test fails for us. We added the test to TestExpectations until we add support for this.

No need for you to worry about this :)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164642</attachid>
            <date>2012-09-18 18:20:12 -0700</date>
            <delta_ts>2012-09-19 16:06:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97055-20120918181939.patch</filename>
            <type>text/plain</type>
            <size>40879</size>
            <attacher name="Bo Liu">boliu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4OTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTMwZWEwOTI2MjUzYTdj
NjQ3NjhmNzZmY2VkYzE0ODk1YjlmNzgzNC4uYWQ5MjlkM2IyZmFhNDExMTkzZTc5ZjQ2OWRlYzk5
NmE0MGIzMWJmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDEyLTA5LTE4ICBCbyBM
aXUgIDxib2xpdUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVsYW5kICJBZGQgaW4tcGxhY2Ug
cmVsb2FkIGJlaGF2aW9yIHRvIEltYWdlc0VuYWJsZWQgc2V0dGluZyIgd2l0aCBvcHRpbWl6YXRp
b25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzA1
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbGFu
ZGluZyAxMjg3ODAsIDEyODY3NiwgMTI4NjQ1LiBXYXMgcmV2ZXJ0ZWQgaW4gMTI4OTE0IGR1ZSB0
bworICAgICAgICBwZXJmb3JtYW5jZSByZWdyZXNzaW9uIGluIENocm9taXVtLgorCisgICAgICAg
IE5ldyBjaGFuZ2VzIGluIGFkZGl0aW9uIHRvIHByZXZpb3VzbHkgcmV2ZXJ0ZWQgcGF0Y2hlczoK
KworICAgICAgICBSZW1vdmUgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnNob3VsZERlZmVySW1hZ2VM
b2FkIGNhbGxzIGluCisgICAgICAgIENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0SW1hZ2Ug
YW5kCisgICAgICAgIENhY2hlZFJlc291cmNlTG9hZGVyOjpyZWxvYWRJbWFnZXNJZk5vdERlZmVy
cmVkLiBUaGUgc2FtZSBjYWxsIGlzIG1hZGUKKyAgICAgICAgaW1tZWRpYXRlbHkgYWZ0ZXIgaW4g
Q2FjaGVkSW1hZ2U6OmxvYWQsIHNvIHRoZXkgYXJlIG5vdCBuZWNlc3NhcnkuCisKKyAgICAgICAg
UmVtb3ZlZCB1bm5lY2Vzc2FyeSBGcmFtZS5oIGluY2x1ZGVzIGluIENhY2hlZFJlc291cmNlIGFu
ZAorICAgICAgICBDYWNoZWRJbWFnZS4KKworICAgICAgICBSZW1vdmVkIGRlYWQgbG9hZCgpIG1l
dGhvZCBkZWNsYXJhdGlvbiBpbiBDYWNoZWRJbWFnZS4KKworICAgICAgICBVcGRhdGVkIHRleHQg
ZXhwZWN0YXRpb24gZm9yIHR3byBpbWFnZS1wZXJtaXNzaW9ucyB0ZXN0cyB0byByZWZsZWN0Cisg
ICAgICAgIHRoZSByZW1vdmVkIGNhbGxzIHRvIGFsbG93SW1hZ2UuCisKKyAgICAgICAgVGVzdHM6
IGZhc3QvbG9hZGVyL2Rpc3BsYXktaW1hZ2UtdW5zZXQtYWxsb3dzLWNhY2hlZC1pbWFnZS1sb2Fk
Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvbG9hZGVyL2Rpc3BsYXktaW1hZ2UtdW5zZXQtY2Fu
LWJsb2NrLWltYWdlLWFuZC1jYW4tcmVsb2FkLWluLXBsYWNlLmh0bWwKKyAgICAgICAgICAgICAg
IGZhc3QvbG9hZGVyL2ltYWdlcy1lbmFibGVkLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2Fu
LXJlbG9hZC1pbi1wbGFjZS5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAg
ICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXI6OmRpZEJlZ2luRG9jdW1lbnQpOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1
ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmxvYWQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6ZGlkQWRkQ2xpZW50KToKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnN0aWxsTmVlZHNMb2FkKToKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OkNhY2hlZFJlc291cmNlTG9hZGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0SW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNhblJlcXVlc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRldGVybWluZVJldmFsaWRhdGlvblBvbGljeSk6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6c2V0QXV0b0xvYWRJbWFn
ZXMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6c2V0SW1hZ2VzRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNv
dXJjZUxvYWRlcjo6Y2xpZW50QWxsb3dzSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
UmVzb3VyY2VMb2FkZXI6OnNob3VsZERlZmVySW1hZ2VMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZWxvYWRJbWFnZXNJZk5vdERlZmVycmVkKToKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKENhY2hl
ZFJlc291cmNlTG9hZGVyKToKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnNldEltYWdlTG9hZGluZ1NldHRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6OlNl
dHRpbmdzOjpTZXR0aW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6c2V0TG9hZHNJ
bWFnZXNBdXRvbWF0aWNhbGx5KToKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjppbWFnZUxv
YWRpbmdTZXR0aW5nc1RpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OnNl
dEltYWdlc0VuYWJsZWQpOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuaDoKKyAgICAgICAgKFNl
dHRpbmdzKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW50ZXJuYWxTZXR0aW5nczo6QmFja3VwOjpCYWNrdXApOgorICAgICAgICAo
V2ViQ29yZTo6SW50ZXJuYWxTZXR0aW5nczo6QmFja3VwOjpyZXN0b3JlVG8pOgorICAgICAgICAo
V2ViQ29yZTo6SW50ZXJuYWxTZXR0aW5nczo6c2V0SW1hZ2VzRW5hYmxlZCk6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaDoKKyAgICAgICAg
KEJhY2t1cCk6CisgICAgICAgIChJbnRlcm5hbFNldHRpbmdzKToKKyAgICAgICAgKiB0ZXN0aW5n
L0ludGVybmFsU2V0dGluZ3MuaWRsOgorCiAyMDEyLTA5LTE4ICBTaGlueWEgS2F3YW5ha2EgIDxz
aGlueWFrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbUmVmYWN0b3JpbmddIENvbnRlbnREaXN0
cmlidXRvcjo6ZGlzdHJpYnV0ZVNlbGVjdGlvbnNUbyBzaG91bGQgbm90IGNoYW5nZSBDb250ZW50
RGlzdHJpYnV0aW9uIHBvb2wuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYTY1NDljNzUyMTU0ZmE0OWY2MzYzOWUz
ZWMwMGI3MWMyZjRhNjliZS4uZjgwYzA2YWNjNWM1OWVhNDNkOWFlZmY0Mzk2YTI4YTVlN2VlOTM4
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTA5LTE4ICBCbyBMaXUgIDxib2xp
dUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVsYW5kICJBZGQgaW4tcGxhY2UgcmVsb2FkIGJl
aGF2aW9yIHRvIEltYWdlc0VuYWJsZWQgc2V0dGluZyIgd2l0aCBvcHRpbWl6YXRpb25zCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzA1NQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbGFuZGluZyAxMjg3
ODAsIDEyODY3NiwgMTI4NjQ1LiBXYXMgcmV2ZXJ0ZWQgaW4gMTI4OTE0IGR1ZSB0bworICAgICAg
ICBwZXJmb3JtYW5jZSByZWdyZXNzaW9uIGluIENocm9taXVtLgorCisgICAgICAgIE5ldyBjaGFu
Z2VzIGluIGFkZGl0aW9uIHRvIHByZXZpb3VzbHkgcmV2ZXJ0ZWQgcGF0Y2hlczoKKworICAgICAg
ICBSZW1vdmUgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnNob3VsZERlZmVySW1hZ2VMb2FkIGNhbGxz
IGluCisgICAgICAgIENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0SW1hZ2UgYW5kCisgICAg
ICAgIENhY2hlZFJlc291cmNlTG9hZGVyOjpyZWxvYWRJbWFnZXNJZk5vdERlZmVycmVkLiBUaGUg
c2FtZSBjYWxsIGlzIG1hZGUKKyAgICAgICAgaW1tZWRpYXRlbHkgYWZ0ZXIgaW4gQ2FjaGVkSW1h
Z2U6OmxvYWQsIHNvIHRoZXkgYXJlIG5vdCBuZWNlc3NhcnkuCisKKyAgICAgICAgUmVtb3ZlZCB1
bm5lY2Vzc2FyeSBGcmFtZS5oIGluY2x1ZGVzIGluIENhY2hlZFJlc291cmNlIGFuZAorICAgICAg
ICBDYWNoZWRJbWFnZS4KKworICAgICAgICBSZW1vdmVkIGRlYWQgbG9hZCgpIG1ldGhvZCBkZWNs
YXJhdGlvbiBpbiBDYWNoZWRJbWFnZS4KKworICAgICAgICBVcGRhdGVkIHRleHQgZXhwZWN0YXRp
b24gZm9yIHR3byBpbWFnZS1wZXJtaXNzaW9ucyB0ZXN0cyB0byByZWZsZWN0CisgICAgICAgIHRo
ZSByZW1vdmVkIGNhbGxzIHRvIGFsbG93SW1hZ2UuCisKKyAgICAgICAgKiB3aW4vV2ViS2l0Mi5k
ZWY6CisKIDIwMTItMDktMTggIEJ5dW5nd29vIExlZSAgPGJ3ODAubGVlQHNhbXN1bmcuY29tPgog
CiAgICAgICAgIFRpdGxlIHN0cmluZyBzaG91bGQgYmUgY2hhbmdlZCB3aGVuIGRvY3VtZW50LnRp
dGxlIGlzIHNldCB0byAnJy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggN2JhOTk5ZTVkZDM3NGE1
MjYyN2U5NzJhZTk1N2E4ZWRkZjU3YmFjNi4uZTc4NDExODMxYTNhY2FmNmZjOTBkNjExYzNlMzdl
OTM2YzFkMzQ3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTg0OSw2ICs4NDksNyBAQCBfX1pO
N1dlYkNvcmU4R3JhZGllbnRDMUVSS05TXzEwRmxvYXRQb2ludEVTM18KIF9fWk43V2ViQ29yZThQ
b3NpdGlvbkMxRU4zV1RGMTBQYXNzUmVmUHRySU5TXzROb2RlRUVFaU5TMF8xMEFuY2hvclR5cGVF
CiBfX1pON1dlYkNvcmU4U2V0dGluZ3MxNHNldEphdmFFbmFibGVkRWIKIF9fWk43V2ViQ29yZThT
ZXR0aW5nczE1c2V0V2ViR0xFbmFibGVkRWIKK19fWk43V2ViQ29yZThTZXR0aW5nczE2c2V0SW1h
Z2VzRW5hYmxlZEViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MxNnNldFNjcmlwdEVuYWJsZWRFYgog
X19aTjdXZWJDb3JlOFNldHRpbmdzMTZzZXRVc2VzUGFnZUNhY2hlRWIKIF9fWk43V2ViQ29yZThT
ZXR0aW5nczE3c2V0UGx1Z2luc0VuYWJsZWRFYgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAKaW5kZXggYjI2YjZkNGNjMjJmYWU3NTc4ZDA0NGY2MTA1MTYxOTI0YjA2ZmM1Zi4uNDE3
NzJjYWVlOGQyZDkzMmRkM2Y2YmVjMmE4YmJhZmMwZGNlNWYxYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC02NDcsNiArNjQ3LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6
ZGlkQmVnaW5Eb2N1bWVudChib29sIGRpc3BhdGNoKQogICAgIG1fZnJhbWUtPmRvY3VtZW50KCkt
PmluaXRDb250ZW50U2VjdXJpdHlQb2xpY3koKTsKIAogICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9
IG1fZnJhbWUtPmRvY3VtZW50KCktPnNldHRpbmdzKCk7CisgICAgbV9mcmFtZS0+ZG9jdW1lbnQo
KS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+c2V0SW1hZ2VzRW5hYmxlZCghc2V0dGluZ3MgfHwg
c2V0dGluZ3MtPmFyZUltYWdlc0VuYWJsZWQoKSk7CiAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+
Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+c2V0QXV0b0xvYWRJbWFnZXMoc2V0dGluZ3MgJiYgc2V0
dGluZ3MtPmxvYWRzSW1hZ2VzQXV0b21hdGljYWxseSgpKTsKIAogICAgIGlmIChtX2RvY3VtZW50
TG9hZGVyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VM
b2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApp
bmRleCBmZjNiZTZlZGZmOGI5N2ZjNTVhMDg0OGI0YzFhZjAyZjA4MWI0NjE2Li41NmRlMGQzNDEz
M2MzZjVhNDcyYmZjMmJjNmY0ZTVjZGYzODMwM2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKQEAgLTE2NywxMSArMTY3LDEzIEBAIHZvaWQgU3VicmVz
b3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3Qs
IGNvbnN0IFJlc291CiAgICAgCiAgICAgUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdChu
ZXdSZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKICAgICBpZiAoIXByZXZpb3VzVVJMLmlzTnVs
bCgpICYmICFuZXdSZXF1ZXN0LmlzTnVsbCgpICYmIHByZXZpb3VzVVJMICE9IG5ld1JlcXVlc3Qu
dXJsKCkpIHsKLSAgICAgICAgaWYgKCFtX2RvY3VtZW50LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigp
LT5jYW5SZXF1ZXN0KG1fcmVzb3VyY2UtPnR5cGUoKSwgbmV3UmVxdWVzdC51cmwoKSkpIHsKLSAg
ICAgICAgICAgIGNhbmNlbCgpOwotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAobV9k
b2N1bWVudC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+Y2FuUmVxdWVzdChtX3Jlc291cmNlLT50
eXBlKCksIG5ld1JlcXVlc3QudXJsKCkpKSB7CisgICAgICAgICAgICBpZiAobV9yZXNvdXJjZS0+
dHlwZSgpICE9IENhY2hlZFJlc291cmNlOjpJbWFnZVJlc291cmNlIHx8ICFtX2RvY3VtZW50LT5j
YWNoZWRSZXNvdXJjZUxvYWRlcigpLT5zaG91bGREZWZlckltYWdlTG9hZChuZXdSZXF1ZXN0LnVy
bCgpKSkgeworICAgICAgICAgICAgICAgIG1fcmVzb3VyY2UtPndpbGxTZW5kUmVxdWVzdChuZXdS
ZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgbV9yZXNvdXJjZS0+d2lsbFNlbmRSZXF1ZXN0
KG5ld1JlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOworICAgICAgICBjYW5jZWwoKTsKICAgICB9
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCmluZGV4
IDQzMTY2MTZiMzY0NTNhMjA4NjVlNGQyZDZlMDI4OTMwYWYxNmI5ZDMuLmIwYTdhMDMzYmE0ZWM4
NzZjMWYxNzY5MzgyY2JiMjg5NjlhNzk1YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEltYWdlLmNwcApAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgIkNhY2hlZFJl
c291cmNlQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXIuaCIK
ICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgotI2luY2x1ZGUgIkZyYW1lLmgiCiAj
aW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVz
LmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCkBAIC03OSw3ICs3OCw3IEBAIENhY2hlZEltYWdl
Ojp+Q2FjaGVkSW1hZ2UoKQogCiB2b2lkIENhY2hlZEltYWdlOjpsb2FkKENhY2hlZFJlc291cmNl
TG9hZGVyKiBjYWNoZWRSZXNvdXJjZUxvYWRlciwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25z
JiBvcHRpb25zKQogewotICAgIGlmICghY2FjaGVkUmVzb3VyY2VMb2FkZXIgfHwgY2FjaGVkUmVz
b3VyY2VMb2FkZXItPmF1dG9Mb2FkSW1hZ2VzKCkpCisgICAgaWYgKCFjYWNoZWRSZXNvdXJjZUxv
YWRlciB8fCAhY2FjaGVkUmVzb3VyY2VMb2FkZXItPnNob3VsZERlZmVySW1hZ2VMb2FkKG1fcmVz
b3VyY2VSZXF1ZXN0LnVybCgpKSkKICAgICAgICAgQ2FjaGVkUmVzb3VyY2U6OmxvYWQoY2FjaGVk
UmVzb3VyY2VMb2FkZXIsIG9wdGlvbnMpOwogICAgIGVsc2UKICAgICAgICAgc2V0TG9hZGluZyhm
YWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCmluZGV4IDQ4
NjVjN2UyNDY2NWJhNjM5YjBlMWE5NmJjNjI1MjYwZDczYWQwMWIuLjA3OGY3YWIxYzYyZmY4NmI4
MTViOWYwNjU0NjMwZDM2MDE5MjkzY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRJbWFnZS5oCkBAIC04Miw4ICs4Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkSWdub3JlSFRUUFN0YXR1c0NvZGVFcnJvcnMoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9
CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAg
ICBib29sIHN0aWxsTmVlZHNMb2FkKCkgY29uc3QgeyByZXR1cm4gIWVycm9yT2NjdXJyZWQoKSAm
JiBzdGF0dXMoKSA9PSBVbmtub3duICYmICFpc0xvYWRpbmcoKTsgfQotICAgIHZvaWQgbG9hZCgp
OworICAgIHZpcnR1YWwgYm9vbCBzdGlsbE5lZWRzTG9hZCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0
dXJuICFlcnJvck9jY3VycmVkKCkgJiYgc3RhdHVzKCkgPT0gVW5rbm93biAmJiAhaXNMb2FkaW5n
KCk7IH0KIAogICAgIC8vIEltYWdlT2JzZXJ2ZXIKICAgICB2aXJ0dWFsIHZvaWQgZGVjb2RlZFNp
emVDaGFuZ2VkKGNvbnN0IEltYWdlKiBpbWFnZSwgaW50IGRlbHRhKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IDQzYzNkMTQ0ZjgyZjE1
Njg4Y2Y2NmMwNTRhMDRkYTk2MDE5YjlkMTEuLjMzZDFiYTgyM2JjNmZkODY1NzJlNmE5NDYxYWM1
YmQ3NTYzYTA2YmIgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlLmNwcApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9h
ZGVyLmgiCiAjaW5jbHVkZSAiQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmgiCiAjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKLSNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xp
ZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAi
S1VSTC5oIgpAQCAtMzkwLDcgKzM4OSw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OmRpZEFkZENs
aWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCogYykKICAgICAgICAgbV9jbGllbnRzLmFkZChjKTsK
ICAgICAgICAgbV9jbGllbnRzQXdhaXRpbmdDYWxsYmFjay5yZW1vdmUoYyk7CiAgICAgfQotICAg
IGlmICghaXNMb2FkaW5nKCkpCisgICAgaWYgKCFpc0xvYWRpbmcoKSAmJiAhc3RpbGxOZWVkc0xv
YWQoKSkKICAgICAgICAgYy0+bm90aWZ5RmluaXNoZWQodGhpcyk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKaW5kZXggMGNhZDNlZTdjYTQyODEy
ZWFhM2VmZTYwMDMxMTY0NDlmN2E2OTZhMS4uYjczOWQ2OGFmODFmMmRiN2I0ODYyZGYxNTlhYWNm
MTU4ZTBiNTczMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlLmgKQEAgLTQ1LDcgKzQ1LDYgQEAgY2xhc3MgQ2FjaGVkTWV0YWRhdGE7CiBjbGFzcyBDYWNo
ZWRSZXNvdXJjZUNsaWVudDsKIGNsYXNzIENhY2hlZFJlc291cmNlSGFuZGxlQmFzZTsKIGNsYXNz
IENhY2hlZFJlc291cmNlTG9hZGVyOwotY2xhc3MgRnJhbWU7CiBjbGFzcyBJbnNwZWN0b3JSZXNv
dXJjZTsKIGNsYXNzIFB1cmdlYWJsZUJ1ZmZlcjsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwpAQCAt
MTQ0LDYgKzE0Myw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNMb2FkaW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV9sb2FkaW5nOyB9CiAgICAgdm9pZCBzZXRMb2FkaW5nKGJvb2wgYikgeyBtX2xvYWRp
bmcgPSBiOyB9CisgICAgdmlydHVhbCBib29sIHN0aWxsTmVlZHNMb2FkKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KIAogICAgIFN1YnJlc291cmNlTG9hZGVyKiBsb2FkZXIoKSB7IHJldHVybiBt
X2xvYWRlci5nZXQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAppbmRleCBmMmNhYTNkNTc2NjE4OGE1NjA0YmU0YjY0
ZjY3NDE5YzM2ZDAyYWM2Li43OGFjM2I5NWUyYjJkY2U4OGZhNjczNmE5ZTQzMTkzNjY1MzA1MTE3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZUxvYWRlci5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgog
I2luY2x1ZGUgIlBpbmdMb2FkZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRTY2hlZHVsZXIu
aCIKKyNpbmNsdWRlICJTY2hlbWVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2lu
LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4K
QEAgLTExNSw2ICsxMTYsNyBAQCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Q2FjaGVkUmVzb3VyY2VM
b2FkZXIoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgICwgbV9yZXF1ZXN0Q291bnQoMCkKICAgICAs
IG1fZ2FyYmFnZUNvbGxlY3REb2N1bWVudFJlc291cmNlc1RpbWVyKHRoaXMsICZDYWNoZWRSZXNv
dXJjZUxvYWRlcjo6Z2FyYmFnZUNvbGxlY3REb2N1bWVudFJlc291cmNlc1RpbWVyRmlyZWQpCiAg
ICAgLCBtX2F1dG9Mb2FkSW1hZ2VzKHRydWUpCisgICAgLCBtX2ltYWdlc0VuYWJsZWQodHJ1ZSkK
ICAgICAsIG1fYWxsb3dTdGFsZVJlc291cmNlcyhmYWxzZSkKIHsKIH0KQEAgLTE2MCw3ICsxNjIs
NyBAQCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRJbWFnZT4gQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI6OnJlcXVlc3RJbWFnZShSZXNvdXJjZVJlcQogICAgICAgICB9CiAgICAgfQogICAgIENhY2hl
ZFJlc291cmNlSGFuZGxlPENhY2hlZEltYWdlPiByZXNvdXJjZShzdGF0aWNfY2FzdDxDYWNoZWRJ
bWFnZSo+KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6SW1hZ2VSZXNvdXJjZSwgcmVx
dWVzdCwgU3RyaW5nKCksIGRlZmF1bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKSkuZ2V0KCkpKTsK
LSAgICBpZiAoYXV0b0xvYWRJbWFnZXMoKSAmJiByZXNvdXJjZSAmJiByZXNvdXJjZS0+c3RpbGxO
ZWVkc0xvYWQoKSkKKyAgICBpZiAocmVzb3VyY2UgJiYgcmVzb3VyY2UtPnN0aWxsTmVlZHNMb2Fk
KCkpCiAgICAgICAgIHJlc291cmNlLT5sb2FkKHRoaXMsIGRlZmF1bHRDYWNoZWRSZXNvdXJjZU9w
dGlvbnMoKSk7CiAgICAgcmV0dXJuIHJlc291cmNlOwogfQpAQCAtMzYyLDEyICszNjQsNiBAQCBi
b29sIENhY2hlZFJlc291cmNlTG9hZGVyOjpjYW5SZXF1ZXN0KENhY2hlZFJlc291cmNlOjpUeXBl
IHR5cGUsIGNvbnN0IEtVUkwmIHVybAogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkltYWdlUmVz
b3VyY2U6CiAgICAgICAgIGlmICghbV9kb2N1bWVudC0+Y29udGVudFNlY3VyaXR5UG9saWN5KCkt
PmFsbG93SW1hZ2VGcm9tU291cmNlKHVybCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICAgICAgaWYgKGZyYW1lKCkpIHsKLSAgICAgICAgICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9
IGZyYW1lKCktPnNldHRpbmdzKCk7Ci0gICAgICAgICAgICBpZiAoIWZyYW1lKCktPmxvYWRlcigp
LT5jbGllbnQoKS0+YWxsb3dJbWFnZSghc2V0dGluZ3MgfHwgc2V0dGluZ3MtPmFyZUltYWdlc0Vu
YWJsZWQoKSwgdXJsKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0K
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6Rm9udFJlc291cmNlOiB7
CiAgICAgICAgIGlmICghbV9kb2N1bWVudC0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmFsbG93
Rm9udEZyb21Tb3VyY2UodXJsKSkKQEAgLTUxNCwxMSArNTEwLDExIEBAIENhY2hlZFJlc291cmNl
TG9hZGVyOjpSZXZhbGlkYXRpb25Qb2xpY3kgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRldGVybWlu
ZVJldmFsaWRhCiB7CiAgICAgaWYgKCFleGlzdGluZ1Jlc291cmNlKQogICAgICAgICByZXR1cm4g
TG9hZDsKLSAgICAKKwogICAgIC8vIFdlIGFscmVhZHkgaGF2ZSBhIHByZWxvYWQgZ29pbmcgZm9y
IHRoaXMgVVJMLgogICAgIGlmIChmb3JQcmVsb2FkICYmIGV4aXN0aW5nUmVzb3VyY2UtPmlzUHJl
bG9hZGVkKCkpCiAgICAgICAgIHJldHVybiBVc2U7Ci0gICAgCisKICAgICAvLyBJZiB0aGUgc2Ft
ZSBVUkwgaGFzIGJlZW4gbG9hZGVkIGFzIGEgZGlmZmVyZW50IHR5cGUsIHdlIG5lZWQgdG8gcmVs
b2FkLgogICAgIGlmIChleGlzdGluZ1Jlc291cmNlLT50eXBlKCkgIT0gdHlwZSkgewogICAgICAg
ICBMT0coUmVzb3VyY2VMb2FkaW5nLCAiQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRldGVybWluZVJl
dmFsaWRhdGlvblBvbGljeSByZWxvYWRpbmcgZHVlIHRvIHR5cGUgbWlzbWF0Y2guIik7CkBAIC01
MzMsNiArNTI5LDExIEBAIENhY2hlZFJlc291cmNlTG9hZGVyOjpSZXZhbGlkYXRpb25Qb2xpY3kg
Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRldGVybWluZVJldmFsaWRhCiAgICAgLy8gb2YgdGhpbmdz
IGFib3V0IGhvdyByZXZhbGlkYXRpb24gd29ya3MgdGhhdCBtYW51YWwgaGVhZGVycyB2aW9sYXRl
LCBzbyBwdW50IHRvIFJlbG9hZCBpbnN0ZWFkLgogICAgIGlmIChyZXF1ZXN0LmlzQ29uZGl0aW9u
YWwoKSkKICAgICAgICAgcmV0dXJuIFJlbG9hZDsKKworICAgIC8vIERvIG5vdCBsb2FkIGZyb20g
Y2FjaGUgaWYgaW1hZ2VzIGFyZSBub3QgZW5hYmxlZC4gVGhlIGxvYWQgZm9yIHRoaXMgaW1hZ2Ug
d2lsbCBiZSBibG9ja2VkCisgICAgLy8gaW4gQ2FjaGVkSW1hZ2U6OmxvYWQuCisgICAgaWYgKGV4
aXN0aW5nUmVzb3VyY2UtPnR5cGUoKSA9PSBDYWNoZWRSZXNvdXJjZTo6SW1hZ2VSZXNvdXJjZSAm
JiAhY2xpZW50QWxsb3dzSW1hZ2UoZXhpc3RpbmdSZXNvdXJjZS0+dXJsKCkpKQorICAgICAgICBy
ZXR1cm4gUmVsb2FkOwogICAgIAogICAgIC8vIERvbid0IHJlbG9hZCByZXNvdXJjZXMgd2hpbGUg
cGFzdGluZy4KICAgICBpZiAobV9hbGxvd1N0YWxlUmVzb3VyY2VzKQpAQCAtNjI5LDYgKzYzMCwz
NCBAQCB2b2lkIENhY2hlZFJlc291cmNlTG9hZGVyOjpzZXRBdXRvTG9hZEltYWdlcyhib29sIGVu
YWJsZSkKICAgICBpZiAoIW1fYXV0b0xvYWRJbWFnZXMpCiAgICAgICAgIHJldHVybjsKIAorICAg
IHJlbG9hZEltYWdlc0lmTm90RGVmZXJyZWQoKTsKK30KKwordm9pZCBDYWNoZWRSZXNvdXJjZUxv
YWRlcjo6c2V0SW1hZ2VzRW5hYmxlZChib29sIGVuYWJsZSkKK3sKKyAgICBpZiAoZW5hYmxlID09
IG1faW1hZ2VzRW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9pbWFnZXNFbmFibGVk
ID0gZW5hYmxlOworCisgICAgaWYgKCFtX2ltYWdlc0VuYWJsZWQpCisgICAgICAgIHJldHVybjsK
KworICAgIHJlbG9hZEltYWdlc0lmTm90RGVmZXJyZWQoKTsKK30KKworYm9vbCBDYWNoZWRSZXNv
dXJjZUxvYWRlcjo6Y2xpZW50QWxsb3dzSW1hZ2UoY29uc3QgS1VSTCYgdXJsKSBjb25zdAorewor
ICAgIHJldHVybiAhZnJhbWUoKSB8fCBmcmFtZSgpLT5sb2FkZXIoKS0+Y2xpZW50KCktPmFsbG93
SW1hZ2UobV9pbWFnZXNFbmFibGVkLCB1cmwpOworfQorCitib29sIENhY2hlZFJlc291cmNlTG9h
ZGVyOjpzaG91bGREZWZlckltYWdlTG9hZChjb25zdCBLVVJMJiB1cmwpIGNvbnN0Cit7CisgICAg
cmV0dXJuICFjbGllbnRBbGxvd3NJbWFnZSh1cmwpIHx8ICFtX2F1dG9Mb2FkSW1hZ2VzOworfQor
Cit2b2lkIENhY2hlZFJlc291cmNlTG9hZGVyOjpyZWxvYWRJbWFnZXNJZk5vdERlZmVycmVkKCkK
K3sKICAgICBEb2N1bWVudFJlc291cmNlTWFwOjppdGVyYXRvciBlbmQgPSBtX2RvY3VtZW50UmVz
b3VyY2VzLmVuZCgpOwogICAgIGZvciAoRG9jdW1lbnRSZXNvdXJjZU1hcDo6aXRlcmF0b3IgaXQg
PSBtX2RvY3VtZW50UmVzb3VyY2VzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAg
ICBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UgPSBpdC0+c2Vjb25kLmdldCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaAppbmRleCBm
NDc1NWMyMmZkOGQyZjFjMmEwZThlNmRhODJlN2Y5YjUyM2ExOWZiLi4yMWU0ZjM5MWRiYjQ4MjE2
YzQ2NTQzNzg5NjNmOTFhNzQwNWE3MjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaApAQCAtOTcsNiArOTcsMTAgQEAgcHVibGlj
OgogCiAgICAgYm9vbCBhdXRvTG9hZEltYWdlcygpIGNvbnN0IHsgcmV0dXJuIG1fYXV0b0xvYWRJ
bWFnZXM7IH0KICAgICB2b2lkIHNldEF1dG9Mb2FkSW1hZ2VzKGJvb2wpOworCisgICAgdm9pZCBz
ZXRJbWFnZXNFbmFibGVkKGJvb2wpOworCisgICAgYm9vbCBzaG91bGREZWZlckltYWdlTG9hZChj
b25zdCBLVVJMJikgY29uc3Q7CiAgICAgCiAgICAgQ2FjaGVQb2xpY3kgY2FjaGVQb2xpY3koKSBj
b25zdDsKICAgICAKQEAgLTEzNSw2ICsxMzksOSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBnYXJi
YWdlQ29sbGVjdERvY3VtZW50UmVzb3VyY2VzVGltZXJGaXJlZChUaW1lcjxDYWNoZWRSZXNvdXJj
ZUxvYWRlcj4qKTsKICAgICB2b2lkIHBlcmZvcm1Qb3N0TG9hZEFjdGlvbnMoKTsKKworICAgIGJv
b2wgY2xpZW50QWxsb3dzSW1hZ2UoY29uc3QgS1VSTCYpIGNvbnN0OworICAgIHZvaWQgcmVsb2Fk
SW1hZ2VzSWZOb3REZWZlcnJlZCgpOwogICAgIAogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3ZhbGlk
YXRlZFVSTHM7CiAgICAgbXV0YWJsZSBEb2N1bWVudFJlc291cmNlTWFwIG1fZG9jdW1lbnRSZXNv
dXJjZXM7CkBAIC0xNTIsOCArMTU5LDkgQEAgcHJpdmF0ZToKIAogICAgIFRpbWVyPENhY2hlZFJl
c291cmNlTG9hZGVyPiBtX2dhcmJhZ2VDb2xsZWN0RG9jdW1lbnRSZXNvdXJjZXNUaW1lcjsKIAot
ICAgIC8vIDMwIGJpdHMgbGVmdAorICAgIC8vIDI5IGJpdHMgbGVmdAogICAgIGJvb2wgbV9hdXRv
TG9hZEltYWdlcyA6IDE7CisgICAgYm9vbCBtX2ltYWdlc0VuYWJsZWQgOiAxOwogICAgIGJvb2wg
bV9hbGxvd1N0YWxlUmVzb3VyY2VzIDogMTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAK
aW5kZXggN2Y4NjBlNzk0MWNlNzRhMTBjMThjOGNmMTY4N2QyZDUzMDQ4NDE3ZC4uMmE0YzdiNGYw
NWEwNmE3Y2FjMGEyZjUxYjAzYTdhMDY5ZTA4YzIwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9TZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5j
cHAKQEAgLTQ2LDEwICs0NiwxMiBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLXN0YXRpYyB2b2lkIHNldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseUluQWxs
RnJhbWVzKFBhZ2UqIHBhZ2UpCitzdGF0aWMgdm9pZCBzZXRJbWFnZUxvYWRpbmdTZXR0aW5ncyhQ
YWdlKiBwYWdlKQogewotICAgIGZvciAoRnJhbWUqIGZyYW1lID0gcGFnZS0+bWFpbkZyYW1lKCk7
IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKQorICAgIGZvciAo
RnJhbWUqIGZyYW1lID0gcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50
cmVlKCktPnRyYXZlcnNlTmV4dCgpKSB7CisgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT5jYWNo
ZWRSZXNvdXJjZUxvYWRlcigpLT5zZXRJbWFnZXNFbmFibGVkKHBhZ2UtPnNldHRpbmdzKCktPmFy
ZUltYWdlc0VuYWJsZWQoKSk7CiAgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT5jYWNoZWRSZXNv
dXJjZUxvYWRlcigpLT5zZXRBdXRvTG9hZEltYWdlcyhwYWdlLT5zZXR0aW5ncygpLT5sb2Fkc0lt
YWdlc0F1dG9tYXRpY2FsbHkoKSk7CisgICAgfQogfQogCiAvLyBTZXRzIHRoZSBlbnRyeSBpbiB0
aGUgZm9udCBtYXAgZm9yIHRoZSBnaXZlbiBzY3JpcHQuIElmIGZhbWlseSBpcyB0aGUgZW1wdHkg
c3RyaW5nLCByZW1vdmVzIHRoZSBlbnRyeSBpbnN0ZWFkLgpAQCAtMjg5LDcgKzI5MSw3IEBAIFNl
dHRpbmdzOjpTZXR0aW5ncyhQYWdlKiBwYWdlKQogICAgICwgbV93aW5kb3dGb2N1c1Jlc3RyaWN0
ZWQodHJ1ZSkKICAgICAsIG1fZGlhZ25vc3RpY0xvZ2dpbmdFbmFibGVkKGZhbHNlKQogICAgICwg
bV9zY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKGZhbHNlKQotICAgICwgbV9sb2Fk
c0ltYWdlc0F1dG9tYXRpY2FsbHlUaW1lcih0aGlzLCAmU2V0dGluZ3M6OmxvYWRzSW1hZ2VzQXV0
b21hdGljYWxseVRpbWVyRmlyZWQpCisgICAgLCBtX3NldEltYWdlTG9hZGluZ1NldHRpbmdzVGlt
ZXIodGhpcywgJlNldHRpbmdzOjppbWFnZUxvYWRpbmdTZXR0aW5nc1RpbWVyRmlyZWQpCiAgICAg
LCBtX2luY3JlbWVudGFsUmVuZGVyaW5nU3VwcHJlc3Npb25UaW1lb3V0SW5TZWNvbmRzKGRlZmF1
bHRJbmNyZW1lbnRhbFJlbmRlcmluZ1N1cHByZXNzaW9uVGltZW91dEluU2Vjb25kcykKIHsKICAg
ICAvLyBBIEZyYW1lIG1heSBub3QgaGF2ZSBiZWVuIGNyZWF0ZWQgeWV0LCBzbyB3ZSBpbml0aWFs
aXplIHRoZSBBdG9taWNTdHJpbmcKQEAgLTQ1NSwxMiArNDU3LDEyIEBAIHZvaWQgU2V0dGluZ3M6
OnNldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseShib29sIGxvYWRzSW1hZ2VzQXV0b21hdGljYWxs
eSkKICAgICAvLyBTdGFydGluZyB0aGVzZSBsb2FkcyBzeW5jaHJvbm91c2x5IGlzIG5vdCBpbXBv
cnRhbnQuICBCeSBwdXR0aW5nIGl0IG9uIGEgMC1kZWxheSwgcHJvcGVybHkgY2xvc2luZyB0aGUg
UGFnZSBjYW5jZWxzIHRoZW0KICAgICAvLyBiZWZvcmUgdGhleSBoYXZlIGEgY2hhbmNlIHRvIHJl
YWxseSBzdGFydC4KICAgICAvLyBTZWUgaHR0cDovL3dlYmtpdC5vcmcvYi82MDU3MiBmb3IgbW9y
ZSBkaXNjdXNzaW9uLgotICAgIG1fbG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5VGltZXIuc3RhcnRP
bmVTaG90KDApOworICAgIG1fc2V0SW1hZ2VMb2FkaW5nU2V0dGluZ3NUaW1lci5zdGFydE9uZVNo
b3QoMCk7CiB9CiAKLXZvaWQgU2V0dGluZ3M6OmxvYWRzSW1hZ2VzQXV0b21hdGljYWxseVRpbWVy
RmlyZWQoVGltZXI8U2V0dGluZ3M+KikKK3ZvaWQgU2V0dGluZ3M6OmltYWdlTG9hZGluZ1NldHRp
bmdzVGltZXJGaXJlZChUaW1lcjxTZXR0aW5ncz4qKQogewotICAgIHNldExvYWRzSW1hZ2VzQXV0
b21hdGljYWxseUluQWxsRnJhbWVzKG1fcGFnZSk7CisgICAgc2V0SW1hZ2VMb2FkaW5nU2V0dGlu
Z3MobV9wYWdlKTsKIH0KIAogdm9pZCBTZXR0aW5nczo6c2V0TG9hZHNTaXRlSWNvbnNJZ25vcmlu
Z0ltYWdlTG9hZGluZ1NldHRpbmcoYm9vbCBsb2Fkc1NpdGVJY29ucykKQEAgLTUwNiw2ICs1MDgs
OSBAQCB2b2lkIFNldHRpbmdzOjpzZXRKYXZhRW5hYmxlZEZvckxvY2FsRmlsZXMoYm9vbCBpc0ph
dmFFbmFibGVkRm9yTG9jYWxGaWxlcykKIHZvaWQgU2V0dGluZ3M6OnNldEltYWdlc0VuYWJsZWQo
Ym9vbCBhcmVJbWFnZXNFbmFibGVkKQogewogICAgIG1fYXJlSW1hZ2VzRW5hYmxlZCA9IGFyZUlt
YWdlc0VuYWJsZWQ7CisKKyAgICAvLyBTZWUgY29tbWVudCBpbiBzZXRMb2Fkc0ltYWdlc0F1dG9t
YXRpY2FsbHkuCisgICAgbV9zZXRJbWFnZUxvYWRpbmdTZXR0aW5nc1RpbWVyLnN0YXJ0T25lU2hv
dCgwKTsKIH0KIAogdm9pZCBTZXR0aW5nczo6c2V0TWVkaWFFbmFibGVkKGJvb2wgaXNNZWRpYUVu
YWJsZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKaW5kZXggNTVmMmY3NDk4ZTg3MTcyNmY5MTViNWU4
ZGY5ODY5OWI3MTUwYmI2OS4uNjI0N2Y4NTY0Y2QzNWRmYTc4NDczZmNlOWFjMjc0NjczZWRhNGFh
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaApAQCAtODExLDggKzgxMSw4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogICAgICAgICBib29sIG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5h
YmxlZCA6IDE7CiAKLSAgICAgICAgVGltZXI8U2V0dGluZ3M+IG1fbG9hZHNJbWFnZXNBdXRvbWF0
aWNhbGx5VGltZXI7Ci0gICAgICAgIHZvaWQgbG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5VGltZXJG
aXJlZChUaW1lcjxTZXR0aW5ncz4qKTsKKyAgICAgICAgVGltZXI8U2V0dGluZ3M+IG1fc2V0SW1h
Z2VMb2FkaW5nU2V0dGluZ3NUaW1lcjsKKyAgICAgICAgdm9pZCBpbWFnZUxvYWRpbmdTZXR0aW5n
c1RpbWVyRmlyZWQoVGltZXI8U2V0dGluZ3M+Kik7CiAgICAgICAgIAogICAgICAgICBkb3VibGUg
bV9pbmNyZW1lbnRhbFJlbmRlcmluZ1N1cHByZXNzaW9uVGltZW91dEluU2Vjb25kczsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAKaW5kZXggMWE0YzE1YTc1
Zjc4ZGU2ZjU3ZmFmYmFjZDlkNjI4MDFmNDIxZDdlOS4uMTZlY2U0OTA5MGFkYzA4Yzk2NjVjMGQ2
OTZkYmUyMWViMzgzNjk3OSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbFNldHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0
dGluZ3MuY3BwCkBAIC0xMDAsNiArMTAwLDcgQEAgSW50ZXJuYWxTZXR0aW5nczo6QmFja3VwOjpC
YWNrdXAoUGFnZSogcGFnZSwgU2V0dGluZ3MqIHNldHRpbmdzKQogICAgICwgbV9jYW5TdGFydE1l
ZGlhKHBhZ2UtPmNhblN0YXJ0TWVkaWEoKSkKICAgICAsIG1fb3JpZ2luYWxNb2NrU2Nyb2xsYmFy
c0VuYWJsZWQoc2V0dGluZ3MtPm1vY2tTY3JvbGxiYXJzRW5hYmxlZCgpKQogICAgICwgbV9sYW5n
QXR0cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJRW5hYmxlZChSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjpsYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJRW5hYmxlZCgpKQorICAgICwgbV9pbWFn
ZXNFbmFibGVkKHNldHRpbmdzLT5hcmVJbWFnZXNFbmFibGVkKCkpCiB7CiB9CiAKQEAgLTEzNSw2
ICsxMzYsNyBAQCB2b2lkIEludGVybmFsU2V0dGluZ3M6OkJhY2t1cDo6cmVzdG9yZVRvKFBhZ2Uq
IHBhZ2UsIFNldHRpbmdzKiBzZXR0aW5ncykKICAgICBwYWdlLT5zZXRDYW5TdGFydE1lZGlhKG1f
Y2FuU3RhcnRNZWRpYSk7CiAgICAgc2V0dGluZ3MtPnNldE1vY2tTY3JvbGxiYXJzRW5hYmxlZCht
X29yaWdpbmFsTW9ja1Njcm9sbGJhcnNFbmFibGVkKTsKICAgICBSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpzZXRMYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJRW5hYmxlZChtX2xhbmdBdHRy
aWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVkKTsKKyAgICBzZXR0aW5ncy0+c2V0SW1hZ2Vz
RW5hYmxlZChtX2ltYWdlc0VuYWJsZWQpOwogfQogCiBJbnRlcm5hbFNldHRpbmdzKiBJbnRlcm5h
bFNldHRpbmdzOjpmcm9tKFBhZ2UqIHBhZ2UpCkBAIC02NTMsNCArNjU1LDEwIEBAIHZvaWQgSW50
ZXJuYWxTZXR0aW5nczo6c2V0TGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQo
Ym9vbCBlbmFibGVkKQogICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldExhbmdBdHRyaWJ1
dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVkKGVuYWJsZWQpOwogfQogCit2b2lkIEludGVybmFs
U2V0dGluZ3M6OnNldEltYWdlc0VuYWJsZWQoYm9vbCBlbmFibGVkLCBFeGNlcHRpb25Db2RlJiBl
YykKK3sKKyAgICBJbnRlcm5hbFNldHRpbmdzR3VhcmRGb3JTZXR0aW5ncygpOworICAgIHNldHRp
bmdzKCktPnNldEltYWdlc0VuYWJsZWQoZW5hYmxlZCk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5oIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmgKaW5kZXggNzQ0ZTVhYjcyNzM3OGUzYjViZmM4YjA4
ZjgzZjgzOTJiMGIwYjFlOS4uMzIwMWUyMzliOWY1Y2QxMGMzZTBmNmQzOTQzYjViMWUwNDdkN2Q1
ZiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmgKQEAgLTgyLDYg
KzgyLDcgQEAgcHVibGljOgogICAgICAgICBib29sIG1fY2FuU3RhcnRNZWRpYTsKICAgICAgICAg
Ym9vbCBtX29yaWdpbmFsTW9ja1Njcm9sbGJhcnNFbmFibGVkOwogICAgICAgICBib29sIG1fbGFu
Z0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQ7CisgICAgICAgIGJvb2wgbV9pbWFn
ZXNFbmFibGVkOwogICAgIH07CiAKICAgICB0eXBlZGVmIFJlZkNvdW50ZWRTdXBwbGVtZW50PFBh
Z2UsIEludGVybmFsU2V0dGluZ3M+IFN1cGVyVHlwZTsKQEAgLTE0Niw2ICsxNDcsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRNZW1vcnlJbmZvRW5hYmxlZChib29sLCBFeGNlcHRpb25Db2RlJik7
CiAgICAgdm9pZCBzZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koY29uc3QgU3RyaW5nJiwgRXhjZXB0
aW9uQ29kZSYpOwogICAgIHZvaWQgc2V0TGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVu
YWJsZWQoYm9vbCk7CisgICAgdm9pZCBzZXRJbWFnZXNFbmFibGVkKGJvb2wgZW5hYmxlZCwgRXhj
ZXB0aW9uQ29kZSYpOworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEludGVybmFsU2V0dGluZ3Mo
UGFnZSopOwogICAgIHZpcnR1YWwgdm9pZCBob3N0RGVzdHJveWVkKCkgT1ZFUlJJREUgeyBtX3Bh
Z2UgPSAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0
dGluZ3MuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbApp
bmRleCA4Zjk3Zjg5ZmZkZjdkNTFlMDdiNTY4MDk1YmRiZTQ5OTQwMzA3NTI0Li5jNzQ1NWZlMTY0
MTQwZTQ4NDY0NzE2OGNkMGE0N2I4ODAxYmIzZWFhIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxTZXR0aW5ncy5pZGwKQEAgLTgxLDYgKzgxLDcgQEAgbW9kdWxlIHdpbmRvdyB7
CiAjZW5kaWYKICAgICAgICAgdm9pZCBzZXRNZW1vcnlJbmZvRW5hYmxlZChpbiBib29sZWFuIGVu
YWJsZWQpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgICAgICB2b2lkIHNldFN0b3JhZ2VCbG9j
a2luZ1BvbGljeShpbiBET01TdHJpbmcgcG9saWN5KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAg
ICAgICAgdm9pZCBzZXRJbWFnZXNFbmFibGVkKGluIGJvb2xlYW4gZW5hYmxlZCkgcmFpc2VzKERP
TUV4Y2VwdGlvbik7CiAgICAgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvd2lu
L1dlYktpdDIuZGVmIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCmluZGV4IDI3M2Fm
YjU2Mzk4YTJiNDRiNjMxMTUyNTc0OWFjMDg3YTg5ZjU0MTMuLjhhYTQwMzcxZmFhZTcwYmMyZjUx
OWExZDQzM2QzOTU1MWFmOWFkNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJL
aXQyLmRlZgorKysgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKQEAgLTIyMiw2ICsy
MjIsNyBAQCBFWFBPUlRTCiAgICAgICAgID9zZXRET01FeGNlcHRpb25AV2ViQ29yZUBAWUFYUEFW
RXhlY1N0YXRlQEpTQ0BASEBaCiAgICAgICAgID9zZXRGYW50YXN5Rm9udEZhbWlseUBTZXR0aW5n
c0BXZWJDb3JlQEBRQUVYQUJWQXRvbWljU3RyaW5nQFdURkBAVzRVU2NyaXB0Q29kZUBAQFoKICAg
ICAgICAgP3NldEZpeGVkRm9udEZhbWlseUBTZXR0aW5nc0BXZWJDb3JlQEBRQUVYQUJWQXRvbWlj
U3RyaW5nQFdURkBAVzRVU2NyaXB0Q29kZUBAQFoKKyAgICAgICAgP3NldEltYWdlc0VuYWJsZWRA
U2V0dGluZ3NAV2ViQ29yZUBAUUFFWF9OQFoKICAgICAgICAgP3NldE1vY2tTY3JvbGxiYXJzRW5h
YmxlZEBTZXR0aW5nc0BXZWJDb3JlQEBTQVhfTkBaCiAgICAgICAgID9tb2NrU2Nyb2xsYmFyc0Vu
YWJsZWRAU2V0dGluZ3NAV2ViQ29yZUBAU0FfTlhaCiAgICAgICAgID9zZXRQYWdlU2NhbGVGYWN0
b3JAUGFnZUBXZWJDb3JlQEBRQUVYTUFCVkludFBvaW50QDJAQFoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmls
dGVyCmluZGV4IGI5ODE0N2M4ZWM4MjcwOWU3N2FmM2RmYjc4MzVhMDIyZWFkMzJmOTYuLjJhZjdl
NzYwN2ZkZjQ4MGIzNzMxM2MzZTJlNDhkMTNlZTUzYTE1ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9h
dXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKKysrIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZp
bHRlcgpAQCAtMTQ1LDYgKzE0NSw3IEBAIF9aTjdXZWJDb3JlMTRTY3JvbGxhYmxlQXJlYTI4c2V0
U2Nyb2xsT2Zmc2V0RnJvbUludGVybmFsc0VSS05TXzhJbnRQb2ludEU7CiBfWk43V2ViQ29yZTEw
U2Nyb2xsVmlldzIzc2V0U2Nyb2xsYmFyc1N1cHByZXNzZWRFYmI7CiBfWk43V2ViQ29yZTEwU2Ny
b2xsVmlldzIxc2V0RGVsZWdhdGVzU2Nyb2xsaW5nRWI7CiBfWk43V2ViQ29yZTROb2RlMTRyZW1v
dmVkTGFzdFJlZkV2OworX1pON1dlYkNvcmU4U2V0dGluZ3MxNnNldEltYWdlc0VuYWJsZWRFYjsK
IF9aTjdXZWJDb3JlOFNldHRpbmdzMThzZXRGaXhlZEZvbnRGYW1pbHlFUktOM1dURjEyQXRvbWlj
U3RyaW5nRTExVVNjcmlwdENvZGU7CiBfWk43V2ViQ29yZThTZXR0aW5nczE4c2V0U2VyaWZGb250
RmFtaWx5RVJLTjNXVEYxMkF0b21pY1N0cmluZ0UxMVVTY3JpcHRDb2RlOwogX1pON1dlYkNvcmU4
U2V0dGluZ3MyMHNldEN1cnNpdmVGb250RmFtaWx5RVJLTjNXVEYxMkF0b21pY1N0cmluZ0UxMVVT
Y3JpcHRDb2RlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDYzZWIyZmU1NWRlMTMyYTMzYjRkYTQ3MjhmZmU2OTM4ZTUyYmYy
YjMuLjNlZWQ0MTFlNGE0OTc5NjU1ZjAwNTI5YTNmM2JhODFlZmJlY2NkMmEgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MSBAQAorMjAxMi0wOS0xOCAgQm8gTGl1ICA8Ym9saXVAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFJlbGFuZCAiQWRkIGluLXBsYWNlIHJlbG9hZCBiZWhhdmlvciB0byBJbWFnZXNFbmFi
bGVkIHNldHRpbmciIHdpdGggb3B0aW1pemF0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTcwNTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBSZWxhbmRpbmcgMTI4NzgwLCAxMjg2NzYsIDEyODY0NS4g
V2FzIHJldmVydGVkIGluIDEyODkxNCBkdWUgdG8KKyAgICAgICAgcGVyZm9ybWFuY2UgcmVncmVz
c2lvbiBpbiBDaHJvbWl1bS4KKworICAgICAgICBOZXcgY2hhbmdlcyBpbiBhZGRpdGlvbiB0byBw
cmV2aW91c2x5IHJldmVydGVkIHBhdGNoZXM6CisKKyAgICAgICAgUmVtb3ZlIENhY2hlZFJlc291
cmNlTG9hZGVyOjpzaG91bGREZWZlckltYWdlTG9hZCBjYWxscyBpbgorICAgICAgICBDYWNoZWRS
ZXNvdXJjZUxvYWRlcjo6cmVxdWVzdEltYWdlIGFuZAorICAgICAgICBDYWNoZWRSZXNvdXJjZUxv
YWRlcjo6cmVsb2FkSW1hZ2VzSWZOb3REZWZlcnJlZC4gVGhlIHNhbWUgY2FsbCBpcyBtYWRlCisg
ICAgICAgIGltbWVkaWF0ZWx5IGFmdGVyIGluIENhY2hlZEltYWdlOjpsb2FkLCBzbyB0aGV5IGFy
ZSBub3QgbmVjZXNzYXJ5LgorCisgICAgICAgIFJlbW92ZWQgdW5uZWNlc3NhcnkgRnJhbWUuaCBp
bmNsdWRlcyBpbiBDYWNoZWRSZXNvdXJjZSBhbmQKKyAgICAgICAgQ2FjaGVkSW1hZ2UuCisKKyAg
ICAgICAgUmVtb3ZlZCBkZWFkIGxvYWQoKSBtZXRob2QgZGVjbGFyYXRpb24gaW4gQ2FjaGVkSW1h
Z2UuCisKKyAgICAgICAgVXBkYXRlZCB0ZXh0IGV4cGVjdGF0aW9uIGZvciB0d28gaW1hZ2UtcGVy
bWlzc2lvbnMgdGVzdHMgdG8gcmVmbGVjdAorICAgICAgICB0aGUgcmVtb3ZlZCBjYWxscyB0byBh
bGxvd0ltYWdlLgorCisgICAgICAgICogZmFzdC9sb2FkZXIvZGlzcGxheS1pbWFnZS11bnNldC1h
bGxvd3MtY2FjaGVkLWltYWdlLWxvYWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0LWFsbG93cy1jYWNoZWQtaW1hZ2UtbG9hZC5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0LWNh
bi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvbG9hZGVyL2Rpc3BsYXktaW1hZ2UtdW5zZXQtY2FuLWJsb2NrLWlt
YWdlLWFuZC1jYW4tcmVsb2FkLWluLXBsYWNlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
bG9hZGVyL2ltYWdlcy1lbmFibGVkLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9h
ZC1pbi1wbGFjZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbG9hZGVyL2lt
YWdlcy1lbmFibGVkLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFj
ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2xvYWRlci9yZXNvdXJjZXMvaW1hZ2UxLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbG9hZGVyL3Jlc291cmNlcy9pbWFnZTIuaHRtbDog
QWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vcGVybWlzc2lvbmNsaWVudC9pbWFn
ZS1wZXJtaXNzaW9ucy1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0v
cGVybWlzc2lvbmNsaWVudC9pbWFnZS1wZXJtaXNzaW9ucy5odG1sOgorICAgICAgICAqIHBsYXRm
b3JtL2Nocm9taXVtL3Blcm1pc3Npb25jbGllbnQvcmVzb3VyY2VzL2ltYWdlLmh0bWw6CisgICAg
ICAgICogcGxhdGZvcm0vd2syL1NraXBwZWQ6CisKIDIwMTItMDktMTggIERpcmsgUHJhbmtlICA8
ZHByYW5rZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWRqdXN0IGV4cGVjdGF0aW9uIGZvciBm
YXN0L3dvcmtlcnMvc3RvcmFnZS9pbnRlcnJ1cHQtZGF0YWJhc2UuaHRtbApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZGlzcGxheS1pbWFnZS11bnNldC1hbGxvd3MtY2FjaGVk
LWltYWdlLWxvYWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZGlzcGxh
eS1pbWFnZS11bnNldC1hbGxvd3MtY2FjaGVkLWltYWdlLWxvYWQtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlMTVhYWMwYzUxNWU4MDU2YWIzY2NjOTUxOTAzNzMzMjhmODM3ZjgKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0LWFs
bG93cy1jYWNoZWQtaW1hZ2UtbG9hZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyIEBACitUZXN0
IHRoYXQgV2ViS2l0RGlzcGxheUltYWdlc0tleSB1bnNldCBkb2VzIG5vdCBibG9jayBpbWFnZSBp
biBjYWNoZS4KK1BBU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2Rpc3Bs
YXktaW1hZ2UtdW5zZXQtYWxsb3dzLWNhY2hlZC1pbWFnZS1sb2FkLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0LWFsbG93cy1jYWNoZWQtaW1hZ2UtbG9h
ZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjA4ZDcwM2Q1MDRlYWE0NWIzZjRlZmZlZDBiNDdiNDc3ZTQ4MThm
ZDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9kaXNwbGF5LWlt
YWdlLXVuc2V0LWFsbG93cy1jYWNoZWQtaW1hZ2UtbG9hZC5odG1sCkBAIC0wLDAgKzEsMzkgQEAK
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorLy8gT3BlbnMgdHdvIHdpbmRvd3MgY29udGFpbmlu
ZyB0aGUgc2FtZSBpbWFnZS4gRmlyc3Qgd2luZG93IHdpbGwgcG9wdWxhdGUgdGhlIGNhY2hlIHdp
dGgKKy8vIGltYWdlLiBUaGUgc2Vjb25kIHdpbmRvdyBpcyBvcGVuZWQgd2l0aCBXZWJLaXREaXNw
bGF5SW1hZ2VzS2V5IHVuc2V0LCBidXQgaW1hZ2Ugc2hvdWxkCisvLyBzdGlsbCBsb2FkIHNpbmNl
IGl0IGlzIGluIGNhY2hlLgorZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICB0
ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRDYW5PcGVu
V2luZG93cygpOworICAgICAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0
VXNlc1BhZ2VDYWNoZVByZWZlcmVuY2VLZXkiLCAxKTsKKworICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1MID0gJ0ZBSUxVUkU6IGltYWdlMS5odG1sIG5v
dCBsb2FkZWQnOworICAgICAgICB3aW5kb3cub3BlbigicmVzb3VyY2VzL2ltYWdlMS5odG1sIiwg
Il9ibGFuayIpOworICAgIH0KK30KKworZnVuY3Rpb24gaW1hZ2UxTG9hZGVkKCkKK3sKKyAgICB0
ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgnV2ViS2l0RGlzcGxheUltYWdlc0tleScsIDAp
OworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSAnRkFJ
TFVSRTogaW1hZ2UyLmh0bWwgbm90IGxvYWRlZCc7CisgICAgd2luZG93LnNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7d2luZG93Lm9wZW4oInJlc291cmNlcy9pbWFnZTIuaHRtbCIsICJfYmxhbmsiKTt9
LCAwKTsKK30KKworZnVuY3Rpb24gaW1hZ2UyTG9hZGVkKCkKK3sKKyAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1MID0gJ1BBU1MnOworCQl0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0
KCkiPgorVGVzdCB0aGF0IFdlYktpdERpc3BsYXlJbWFnZXNLZXkgdW5zZXQgZG9lcyBub3QgYmxv
Y2sgaW1hZ2UgaW4gY2FjaGUuCis8ZGl2IGlkPSJyZXN1bHQiPkZBSUxVUkU6IFRlc3Qgc2NyaXB0
IGRpZG4ndCBydW4uPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvbG9hZGVyL2Rpc3BsYXktaW1hZ2UtdW5zZXQtY2FuLWJsb2NrLWltYWdlLWFu
ZC1jYW4tcmVsb2FkLWluLXBsYWNlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbG9h
ZGVyL2Rpc3BsYXktaW1hZ2UtdW5zZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1jYW4tcmVsb2FkLWlu
LXBsYWNlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YTllZjUzNDc5YjhiNWFhNGI0NjRmNjU3
ZjJhY2Y3ZTViYjQ0N2QyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2Fk
ZXIvZGlzcGxheS1pbWFnZS11bnNldC1jYW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4t
cGxhY2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorVGVzdCB0aGF0IERpc3BsYXlJbWFn
ZXMgZGlzYWJsZWQgY2FuIGJsb2NrIGh0dHAgaW1hZ2UgYW5kIGNhbiBiZSByZWxvYWRlZCBpbi1w
bGFjZSB3aGVuIHRvZ2dsZWQuCitTVUNDRVNTCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvbG9hZGVyL2Rpc3BsYXktaW1hZ2UtdW5zZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1jYW4tcmVs
b2FkLWluLXBsYWNlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9kaXNwbGF5LWltYWdl
LXVuc2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjMxMmY1MDlkNTQzYjdhNWE3ZDQ3ZDE5MWI3ODg2NjNlNmQyNjE5NzcKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0LWNh
bi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS5odG1sCkBAIC0wLDAgKzEsNDcg
QEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorLy8gU2V0dGluZyBXZWJLaXREaXNwbGF5SW1h
Z2VzS2V5IGlzIGFzeW5jaHJvbm91cywgc28gdXNpbmcgcXVldWVSZWxvYWQgYW5kIHNldEludGVy
dmFsIHRvIGNoZWNrIHdoZW4gdGhlIHNldHRpbmcgYWN0dWFsbHkgdGFrZSBlZmZlY3QuCisKK3Zh
ciBpbnRlcnZhbElkOwordmFyIGltYWdlT25sb2FkRmlyZWQgPSAwOworCitpZiAod2luZG93LnRl
c3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB3aW5kb3cuaW50
ZXJuYWxzLnNldHRpbmdzLnNldEltYWdlc0VuYWJsZWQodHJ1ZSk7CisgICAgdGVzdFJ1bm5lci5v
dmVycmlkZVByZWZlcmVuY2UoJ1dlYktpdERpc3BsYXlJbWFnZXNLZXknLCAwKTsKKyAgICB0ZXN0
UnVubmVyLnF1ZXVlUmVsb2FkKCk7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIHZh
ciBpbWFnZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbWFnZScpOworICAgIGlmIChpbWFn
ZS5uYXR1cmFsSGVpZ2h0ICE9IDAgfHwgaW1hZ2UubmF0dXJhbFdpZHRoICE9IDAgfHwgaW1hZ2VP
bmxvYWRGaXJlZCAhPSAwKSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1
bHQnKS5pbm5lckhUTUwgPSAnRkFJTFVSRTogSW1hZ2Ugc2hvdWxkIG5vdCBiZSBsb2FkZWQgd2hl
biBEaXNwbGF5SW1hZ2UgaXMgdW5zZXQnOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
dGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoJ1dlYktpdERpc3BsYXlJbWFnZXNLZXknLCAx
KTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1MID0gJ0ZB
SUxVUkU6IEltYWdlIHNob3VsZCByZWxvYWQgaW4tcGxhY2Ugd2hlbiBEaXNwYWx5SW1hZ2UgaXMg
Y2hhbmdlcyBmcm9tIHVuc2V0IHRvIHNldCc7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25l
KCk7CisgICAgaW50ZXJ2YWxJZCA9IHdpbmRvdy5zZXRJbnRlcnZhbChydW5UZXN0UmVzdCwgMTAp
OworfQorCitmdW5jdGlvbiBydW5UZXN0UmVzdCgpCit7CisgICAgdmFyIGltYWdlID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2ltYWdlJyk7CisgICAgaWYgKGltYWdlLm5hdHVyYWxIZWlnaHQg
PT0gMzMgJiYgaW1hZ2UubmF0dXJhbFdpZHRoID09IDM3ICYmIGltYWdlT25sb2FkRmlyZWQgPT0g
MSkgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1M
ID0gJ1NVQ0NFU1MnOworICAgICAgICB3aW5kb3cuY2xlYXJJbnRlcnZhbChpbnRlcnZhbElkKTsK
KyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgfQorfQorPC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CisgIFRlc3QgdGhhdCBEaXNwbGF5SW1h
Z2VzIGRpc2FibGVkIGNhbiBibG9jayBodHRwIGltYWdlIGFuZCBjYW4gYmUgcmVsb2FkZWQgaW4t
cGxhY2Ugd2hlbiB0b2dnbGVkLgorICA8ZGl2IGlkPSJyZXN1bHQiPkZBSUxVUkU6IFRlc3Qgc2Ny
aXB0IGRpZG4ndCBydW4uPC9kaXY+CisgIDxpbWcgaWQ9ImltYWdlIiBzcmM9Ii4uL2ltYWdlcy9y
ZXNvdXJjZXMvb3ZhbC5wbmciIG9ubG9hZD0iaW1hZ2VPbmxvYWRGaXJlZD0xOyI+Cis8L2JvZHk+
Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2ltYWdlcy1l
bmFibGVkLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9pbWFnZXMtZW5hYmxlZC11bnNldC1j
YW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjk1MWQ0NjAxY2NjM2NhMThkOGNmZDVhOTY5NzgxMTFmZmIwYzYwMjAKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9pbWFnZXMtZW5hYmxlZC11bnNldC1j
YW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMyBAQAorVGVzdCB0aGF0IEVuYWJsZUltYWdlcyB1bnNldCBjYW4gYmxvY2sgaW1hZ2Ug
YW5kIGNhbiBiZSByZWxvYWRlZCBpbi1wbGFjZSB3aGVuIHRvZ2dsZWQuCitTVUNDRVNTCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2ltYWdlcy1lbmFibGVkLXVuc2V0LWNh
bi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9sb2FkZXIvaW1hZ2VzLWVuYWJsZWQtdW5zZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1jYW4t
cmVsb2FkLWluLXBsYWNlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2Y0OGU2MjhkZGQ2MGQ1YmFmYTJiMTRm
MDgzNjBiNGI2ZTZhNjYzYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbG9h
ZGVyL2ltYWdlcy1lbmFibGVkLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1p
bi1wbGFjZS5odG1sCkBAIC0wLDAgKzEsNDcgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0Pgor
Ly8gU2V0dGluZyBJbWFnZXNFbmFibGVkIGlzIGFzeW5jaHJvbm91cywgc28gdXNpbmcgcXVldWVS
ZWxvYWQgYW5kIHNldEludGVydmFsIHRvIGNoZWNrIHdoZW4gdGhlIHNldHRpbmcgYWN0dWFsbHkg
dGFrZSBlZmZlY3QuCisKK3ZhciBpbnRlcnZhbElkOwordmFyIGltYWdlT25sb2FkRmlyZWQgPSAw
OworCitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKKyAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgnV2ViS2l0RGlzcGxheUltYWdl
c0tleScsIDEpOworICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0SW1hZ2VzRW5hYmxl
ZChmYWxzZSk7CisgICAgdGVzdFJ1bm5lci5xdWV1ZVJlbG9hZCgpOworfQorCitmdW5jdGlvbiBy
dW5UZXN0KCkKK3sKKyAgICB2YXIgaW1hZ2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW1h
Z2UnKTsKKyAgICBpZiAoaW1hZ2UubmF0dXJhbEhlaWdodCAhPSAwIHx8IGltYWdlLm5hdHVyYWxX
aWR0aCAhPSAwIHx8IGltYWdlT25sb2FkRmlyZWQgIT0gMCkgeworICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1MID0gJ0ZBSUxVUkU6IEltYWdlIHNob3Vs
ZCBub3QgYmUgbG9hZGVkIHdoZW4gSW1hZ2VzRW5hYmxlZCBpcyB1bnNldCc7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldEltYWdlc0Vu
YWJsZWQodHJ1ZSk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVy
SFRNTCA9ICdGQUlMVVJFOiBJbWFnZSBzaG91bGQgcmVsb2FkIGluLXBsYWNlIHdoZW4gSW1hZ2Vz
RW5hYmxlZCBpcyBjaGFuZ2VzIGZyb20gdW5zZXQgdG8gc2V0JzsKKyAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKKyAgICBpbnRlcnZhbElkID0gd2luZG93LnNldEludGVydmFsKHJ1blRl
c3RSZXN0LCAxMCk7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3RSZXN0KCkKK3sKKyAgICB2YXIgaW1h
Z2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW1hZ2UnKTsKKyAgICBpZiAoaW1hZ2UubmF0
dXJhbEhlaWdodCA9PSAzMyAmJiBpbWFnZS5uYXR1cmFsV2lkdGggPT0gMzcgfHwgaW1hZ2VPbmxv
YWRGaXJlZCA9PSAxKSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQn
KS5pbm5lckhUTUwgPSAnU1VDQ0VTUyc7CisgICAgICAgIHdpbmRvdy5jbGVhckludGVydmFsKGlu
dGVydmFsSWQpOworICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICB9Cit9Cis8
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKyAgVGVzdCB0aGF0
IEVuYWJsZUltYWdlcyB1bnNldCBjYW4gYmxvY2sgaW1hZ2UgYW5kIGNhbiBiZSByZWxvYWRlZCBp
bi1wbGFjZSB3aGVuIHRvZ2dsZWQuCisgIDxkaXYgaWQ9InJlc3VsdCI+RkFJTFVSRTogVGVzdCBz
Y3JpcHQgZGlkbid0IHJ1bi48L2Rpdj4KKyAgPGltZyBpZD0iaW1hZ2UiIHNyYz0iLi4vaW1hZ2Vz
L3Jlc291cmNlcy9vdmFsLnBuZyIgb25sb2FkPSJpbWFnZU9ubG9hZEZpcmVkPTE7Ij4KKzwvYm9k
eT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvcmVzb3Vy
Y2VzL2ltYWdlMS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvcmVzb3VyY2VzL2ltYWdl
MS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmNkNjlkYzNjMmEwZDZhMTVlMDg5NjM3OTEwMzI1NGY1ZWFhMzRk
YzEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9yZXNvdXJjZXMv
aW1hZ2UxLmh0bWwKQEAgLTAsMCArMSw1IEBACis8aHRtbD4KKzxib2R5PgorICA8aW1nIHNyYz0i
Li4vLi4vaW1hZ2VzL3Jlc291cmNlcy9vdmFsLnBuZyIgb25sb2FkPSJ3aW5kb3cub3BlbmVyLmlt
YWdlMUxvYWRlZCgpOyI+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2xvYWRlci9yZXNvdXJjZXMvaW1hZ2UyLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2xv
YWRlci9yZXNvdXJjZXMvaW1hZ2UyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzAzN2ZmZjBjZTY1Njc3N2Nj
MDJlOGFlNmNjODFjZjZlYTQ0MmFhYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvbG9hZGVyL3Jlc291cmNlcy9pbWFnZTIuaHRtbApAQCAtMCwwICsxLDUgQEAKKzxodG1sPgor
PGJvZHk+CisgIDxpbWcgc3JjPSIuLi8uLi9pbWFnZXMvcmVzb3VyY2VzL292YWwucG5nIiBvbmxv
YWQ9IndpbmRvdy5vcGVuZXIuaW1hZ2UyTG9hZGVkKCk7Ij4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Blcm1pc3Npb25jbGllbnQv
aW1hZ2UtcGVybWlzc2lvbnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vcGVybWlzc2lvbmNsaWVudC9pbWFnZS1wZXJtaXNzaW9ucy1leHBlY3RlZC50eHQKaW5k
ZXggNjBlNzZhNTIzYWRmMjY0NDY1MzM1ODI5NmY3Y2I5ZWI0MzhkM2Y5Zi4uNjdhMWU1MTFiNzU2
ZTNiNGUwNWU0Y2I5N2Y5MmE1NWJhNDAwZTdlNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vcGVybWlzc2lvbmNsaWVudC9pbWFnZS1wZXJtaXNzaW9ucy1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vcGVybWlzc2lvbmNsaWVu
dC9pbWFnZS1wZXJtaXNzaW9ucy1leHBlY3RlZC50eHQKQEAgLTEsMTAgKzEsMTMgQEAKIFBFUk1J
U1NJT04gQ0xJRU5UOiBhbGxvd0ltYWdlKChmaWxlIHRlc3QpOnBsYXRmb3JtL2Nocm9taXVtL3Bl
cm1pc3Npb25jbGllbnQvcmVzb3VyY2VzL2Jvc3Rvbi5naWYpOiB0cnVlCiBQRVJNSVNTSU9OIENM
SUVOVDogYWxsb3dJbWFnZSgoZmlsZSB0ZXN0KTpwbGF0Zm9ybS9jaHJvbWl1bS9wZXJtaXNzaW9u
Y2xpZW50L3Jlc291cmNlcy9ib3N0b24uZ2lmP25vY2FjaGUpOiBmYWxzZQorUEVSTUlTU0lPTiBD
TElFTlQ6IGFsbG93SW1hZ2UoKGZpbGUgdGVzdCk6cGxhdGZvcm0vY2hyb21pdW0vcGVybWlzc2lv
bmNsaWVudC9yZXNvdXJjZXMvYm9zdG9uLmdpZj9ub2NhY2hlKTogZmFsc2UKK1BFUk1JU1NJT04g
Q0xJRU5UOiBhbGxvd0ltYWdlKChmaWxlIHRlc3QpOnBsYXRmb3JtL2Nocm9taXVtL3Blcm1pc3Np
b25jbGllbnQvcmVzb3VyY2VzL2Jvc3Rvbi5naWYpOiBmYWxzZQorUEVSTUlTU0lPTiBDTElFTlQ6
IGFsbG93SW1hZ2UoKGZpbGUgdGVzdCk6cGxhdGZvcm0vY2hyb21pdW0vcGVybWlzc2lvbmNsaWVu
dC9yZXNvdXJjZXMvYm9zdG9uLmdpZik6IGZhbHNlCitQRVJNSVNTSU9OIENMSUVOVDogYWxsb3dJ
bWFnZSgoZmlsZSB0ZXN0KTpwbGF0Zm9ybS9jaHJvbWl1bS9wZXJtaXNzaW9uY2xpZW50L3Jlc291
cmNlcy9ib3N0b24uZ2lmKTogZmFsc2UKK1BFUk1JU1NJT04gQ0xJRU5UOiBhbGxvd0ltYWdlKChm
aWxlIHRlc3QpOnBsYXRmb3JtL2Nocm9taXVtL3Blcm1pc3Npb25jbGllbnQvcmVzb3VyY2VzL2Jv
c3Rvbi5naWYpOiBmYWxzZQogUEVSTUlTU0lPTiBDTElFTlQ6IGFsbG93SW1hZ2UoKGZpbGUgdGVz
dCk6cGxhdGZvcm0vY2hyb21pdW0vcGVybWlzc2lvbmNsaWVudC9yZXNvdXJjZXMvYm9zdG9uLmdp
Zik6IGZhbHNlCiBQRVJNSVNTSU9OIENMSUVOVDogYWxsb3dJbWFnZSgoZmlsZSB0ZXN0KTpwbGF0
Zm9ybS9jaHJvbWl1bS9wZXJtaXNzaW9uY2xpZW50L3Jlc291cmNlcy9ib3N0b24uZ2lmKTogZmFs
c2UKIAogCiBQQVNTOiBmaXJzdCBpbWFnZSBsb2FkZWQKLVBBU1M6IGVycm9yIGV2ZW50IGZvciBu
b3QgY2FjaGVkIGltYWdlCi1QQVNTOiBlcnJvciBldmVudCBmb3IgaW1hZ2UgZnJvbSBjYWNoZQog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9wZXJtaXNzaW9uY2xp
ZW50L2ltYWdlLXBlcm1pc3Npb25zLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9wZXJtaXNzaW9uY2xpZW50L2ltYWdlLXBlcm1pc3Npb25zLmh0bWwKaW5kZXggN2I1ZTJjNTc1
Yzk4OTc0YWMwOGY4N2U5ZjhjMTIwNzEwYWRiZmVmMC4uZjU3YTNiNzA3MDQzMzA5YzJmYWIyZmY5
MmMzZTllMmM2ZTQxOTY0NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vcGVybWlzc2lvbmNsaWVudC9pbWFnZS1wZXJtaXNzaW9ucy5odG1sCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL3Blcm1pc3Npb25jbGllbnQvaW1hZ2UtcGVybWlzc2lvbnMu
aHRtbApAQCAtMSw2ICsxLDkgQEAKIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0PgorLy8gQmxvY2tl
ZCBpbWFnZXMgY2FuIGJlIHJlbG9hZGVkLCBzbyBuZWl0aGVyIG9ubG9hZCBub3Igb25lcnJvciBp
cyBjYWxsZWQuCisvLyBPbmx5IGNoZWNrIGhlcmUgdGhhdCBvbmxvYWQgaXMgbmV2ZXIgY2FsbGVk
IHdoZW4gaW1hZ2UgaXMgYmxvY2tlZC4KKwogaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgdGVzdFJ1bm5lci5kdW1wUGVybWlzc2lvbkNs
aWVudENhbGxiYWNrcygpOwpAQCAtMjEsMTQgKzI0LDEyIEBAIGZ1bmN0aW9uIGxvYWRlZCgpCiAK
ICAgICAvLyBMb2FkIGFuIGltYWdlIG5vdCBpbiBjYWNoZS4KICAgICB2YXIgaW1nID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnaW1nJyk7Ci0gICAgaW1nLm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7
IGxvZygiUEFTUzogZXJyb3IgZXZlbnQgZm9yIG5vdCBjYWNoZWQgaW1hZ2UiKTsgfQogICAgIGlt
Zy5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7IGxvZygiRkFJTDogbm90IGNhY2hlZCBpbWFnZSBsb2Fk
ZWQiKTsgfQogICAgIGltZy5zcmMgPSAicmVzb3VyY2VzL2Jvc3Rvbi5naWY/bm9jYWNoZSI7CiAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImltZyIpLmFwcGVuZENoaWxkKGltZyk7CiAKICAg
ICAvLyBMb2FkIGFuIGltYWdlIGZyb20gY2FjaGUuCiAgICAgdmFyIGltZ0Zyb21DYWNoZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2ltZycpOwotICAgIGltZ0Zyb21DYWNoZS5vbmVycm9yID0g
ZnVuY3Rpb24gKCkgeyBsb2coIlBBU1M6IGVycm9yIGV2ZW50IGZvciBpbWFnZSBmcm9tIGNhY2hl
Iik7IH0KICAgICBpbWdGcm9tQ2FjaGUub25sb2FkID0gZnVuY3Rpb24gKCkgeyBsb2coIkZBSUw6
IGltYWdlIGZyb20gY2FjaGUgbG9hZGVkIik7IH0KICAgICBpbWdGcm9tQ2FjaGUuc3JjID0gInJl
c291cmNlcy9ib3N0b24uZ2lmIjsKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW1nIiku
YXBwZW5kQ2hpbGQoaW1nRnJvbUNhY2hlKTsKQEAgLTQxLDcgKzQyLDcgQEAgZnVuY3Rpb24gbG9h
ZGVkKCkKIDwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08aW1nIHNyYz0icmVzb3VyY2VzL2Jv
c3Rvbi5naWYiIG9ubG9hZD0ibG9hZGVkKCkiIG9uZXJyb3I9ImxvZygnRkFJTDogZXJyb3IgZXZl
bnQgZm9yIGZpcnN0IGltYWdlJykiPgorPGltZyBzcmM9InJlc291cmNlcy9ib3N0b24uZ2lmIiBv
bmxvYWQ9ImxvYWRlZCgpIj4KIDxkaXYgaWQ9ImltZyI+PC9kaXY+CiA8ZGl2IGlkPSJyZXN1bHRz
Ij48L2Rpdj4KIDwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL3Blcm1pc3Npb25jbGllbnQvcmVzb3VyY2VzL2ltYWdlLmh0bWwgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS9wZXJtaXNzaW9uY2xpZW50L3Jlc291cmNlcy9pbWFnZS5odG1sCmlu
ZGV4IGUyYWRmZTNmMGI2MjFhYThkOWZmNGUxOTBjOTAyMjMwNWNjMDcwZWIuLjIzOTc3MTcxMDFk
ZWQ0NDBhMzI5NTU4MjZlODQxY2QxY2Q2MjNmOTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL3Blcm1pc3Npb25jbGllbnQvcmVzb3VyY2VzL2ltYWdlLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vcGVybWlzc2lvbmNsaWVudC9yZXNvdXJj
ZXMvaW1hZ2UuaHRtbApAQCAtOCw3ICs4LDcgQEAgZnVuY3Rpb24gbG9nKGEpCiA8L3NjcmlwdD4K
IDwvaGVhZD4KIDxib2R5PgotPGltZyBzcmM9ImJvc3Rvbi5naWYiIG9ubG9hZD0ibG9nKCdGQUlM
OiBsb2FkIGV2ZW50IGZvciBpZnJhbWVkIGltYWdlKSIgb25lcnJvcj0ibG9nKCdGQUlMOiBlcnJv
ciBldmVudCBmb3IgaWZyYW1lZCBpbWFnZScpIj4KKzxpbWcgc3JjPSJib3N0b24uZ2lmIiBvbmxv
YWQ9ImxvZygnRkFJTDogbG9hZCBldmVudCBmb3IgaWZyYW1lZCBpbWFnZScpIj4KIDxkaXYgaWQ9
InJlc3VsdHMiPjwvZGl2PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vd2syL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBl
ZAppbmRleCAxOTE3YjZjZWZiMzc5OWViZGFkM2U5ODBmMzU3NjgxNmQ4NGQwMzExLi5jMWRhYjI3
YTRhNjZkYTNmZDU2NDBjYjMwMzhhZGNjZGE5OGExYTE2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS93azIvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tp
cHBlZApAQCAtMjAxLDYgKzIwMSw3IEBAIGZhc3QvY2FudmFzL3dlYmdsL3dlYmdsLWFycmF5LWlu
dmFsaWQtcmFuZ2VzLmh0bWwKIGZhc3QvY2FudmFzL3dlYmdsL3dlYmdsLXNwZWNpZmljLmh0bWwK
IGZhc3QvaGFybmVzcy9vdmVycmlkZS1wcmVmZXJlbmNlcy0yLmh0bWwKIGZhc3QvaW1hZ2VzL2Fu
aW1hdGVkLWdpZi1yZXN0b3JlZC1mcm9tLWJmY2FjaGUuaHRtbAorZmFzdC9sb2FkZXIvZGlzcGxh
eS1pbWFnZS11bnNldC1hbGxvd3MtY2FjaGVkLWltYWdlLWxvYWQuaHRtbAogZmFzdC90ZXh0L3pl
cm8tZm9udC1zaXplLmh0bWwKIAogIyBXZWJLaXRUZXN0UnVubmVyIG5lZWRzIHRvIHN1cHBvcnQg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcERPTUFzV2ViQXJjaGl2ZQpAQCAtMzM5LDYgKzM0MCw4
IEBAIHN2Zy9jdXN0b20vc3ZnLWFsbG93ZWQtaW4tZGFzaGJvYXJkLW9iamVjdC5odG1sCiAjIDxo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDI2NzI+CiBmYXN0L2Nzcy9j
b21wYXJlLWNvbnRlbnQtc3R5bGUuaHRtbAogZmFzdC9mcmFtZXMvZnJhbWUtZGlzcGxheS1ub25l
LWZvY3VzLmh0bWwKK2Zhc3QvbG9hZGVyL2Rpc3BsYXktaW1hZ2UtdW5zZXQtY2FuLWJsb2NrLWlt
YWdlLWFuZC1jYW4tcmVsb2FkLWluLXBsYWNlLmh0bWwKK2Zhc3QvbG9hZGVyL2ltYWdlcy1lbmFi
bGVkLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS5odG1sCiBm
YXN0L2xvYWRlci9yZWxvYWQtcG9saWN5LWRlbGVnYXRlLmh0bWwKIAogIyBXZWJLaXRUZXN0UnVu
bmVyIG5lZWRzIGxheW91dFRlc3RDb250cm9sbGVyLnF1ZXVlTG9hZApkaWZmIC0tZ2l0IGEvQ2hh
bmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDgwMzA5Njg3ODI4ZDJhOWIxODBlNWI5MDM0Y2Y3ZTg0
MGU3NmQ3ZGMuLmFmNzAzMDA5YTUwYTZkNzY3YjIyYTZkMDU1MGU1ZjU0ZWY2NGFhMWMgMTAwNjQ0
Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsNSArMSwzMiBAQAogMjAxMi0w
OS0xOCAgQm8gTGl1ICA8Ym9saXVAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFJlbGFuZCAiQWRk
IGluLXBsYWNlIHJlbG9hZCBiZWhhdmlvciB0byBJbWFnZXNFbmFibGVkIHNldHRpbmciIHdpdGgg
b3B0aW1pemF0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTcwNTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBSZWxhbmRpbmcgMTI4NzgwLCAxMjg2NzYsIDEyODY0NS4gV2FzIHJldmVydGVkIGluIDEy
ODkxNCBkdWUgdG8KKyAgICAgICAgcGVyZm9ybWFuY2UgcmVncmVzc2lvbiBpbiBDaHJvbWl1bS4K
KworICAgICAgICBOZXcgY2hhbmdlcyBpbiBhZGRpdGlvbiB0byBwcmV2aW91c2x5IHJldmVydGVk
IHBhdGNoZXM6CisKKyAgICAgICAgUmVtb3ZlIENhY2hlZFJlc291cmNlTG9hZGVyOjpzaG91bGRE
ZWZlckltYWdlTG9hZCBjYWxscyBpbgorICAgICAgICBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVx
dWVzdEltYWdlIGFuZAorICAgICAgICBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVsb2FkSW1hZ2Vz
SWZOb3REZWZlcnJlZC4gVGhlIHNhbWUgY2FsbCBpcyBtYWRlCisgICAgICAgIGltbWVkaWF0ZWx5
IGFmdGVyIGluIENhY2hlZEltYWdlOjpsb2FkLCBzbyB0aGV5IGFyZSBub3QgbmVjZXNzYXJ5Lgor
CisgICAgICAgIFJlbW92ZWQgdW5uZWNlc3NhcnkgRnJhbWUuaCBpbmNsdWRlcyBpbiBDYWNoZWRS
ZXNvdXJjZSBhbmQKKyAgICAgICAgQ2FjaGVkSW1hZ2UuCisKKyAgICAgICAgUmVtb3ZlZCBkZWFk
IGxvYWQoKSBtZXRob2QgZGVjbGFyYXRpb24gaW4gQ2FjaGVkSW1hZ2UuCisKKyAgICAgICAgVXBk
YXRlZCB0ZXh0IGV4cGVjdGF0aW9uIGZvciB0d28gaW1hZ2UtcGVybWlzc2lvbnMgdGVzdHMgdG8g
cmVmbGVjdAorICAgICAgICB0aGUgcmVtb3ZlZCBjYWxscyB0byBhbGxvd0ltYWdlLgorCisgICAg
ICAgICogU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcjoKKworMjAxMi0wOS0xOCAgQm8g
TGl1ICA8Ym9saXVAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFJldmVydCAxMjg3ODAsIDEyODY3
NiwgMTI4NjQ1CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05NzAyMgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164794</attachid>
            <date>2012-09-19 16:06:28 -0700</date>
            <delta_ts>2012-09-20 14:46:55 -0700</delta_ts>
            <desc>shouldDeferImageLoad check hack. Not for commit</desc>
            <filename>bug-97055-20120919160553.patch</filename>
            <type>text/plain</type>
            <size>42308</size>
            <attacher name="Bo Liu">boliu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5MDA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2NmNWMxMWI3NzVlYTEy
ODc2MjkxZGY3ZTBmZDJhZTQyMmViODk2OC4uNmJjNjY4MTljZTljZDFjODA3NzI3MjNkNTM5YWM0
N2JkYzAyNmZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDEyLTA5LTE4ICBCbyBM
aXUgIDxib2xpdUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVsYW5kICJBZGQgaW4tcGxhY2Ug
cmVsb2FkIGJlaGF2aW9yIHRvIEltYWdlc0VuYWJsZWQgc2V0dGluZyIgd2l0aCBvcHRpbWl6YXRp
b25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzA1
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbGFu
ZGluZyAxMjg3ODAsIDEyODY3NiwgMTI4NjQ1LiBXYXMgcmV2ZXJ0ZWQgaW4gMTI4OTE0IGR1ZSB0
bworICAgICAgICBwZXJmb3JtYW5jZSByZWdyZXNzaW9uIGluIENocm9taXVtLgorCisgICAgICAg
IE5ldyBjaGFuZ2VzIGluIGFkZGl0aW9uIHRvIHByZXZpb3VzbHkgcmV2ZXJ0ZWQgcGF0Y2hlczoK
KworICAgICAgICBSZW1vdmUgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnNob3VsZERlZmVySW1hZ2VM
b2FkIGNhbGxzIGluCisgICAgICAgIENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0SW1hZ2Ug
YW5kCisgICAgICAgIENhY2hlZFJlc291cmNlTG9hZGVyOjpyZWxvYWRJbWFnZXNJZk5vdERlZmVy
cmVkLiBUaGUgc2FtZSBjYWxsIGlzIG1hZGUKKyAgICAgICAgaW1tZWRpYXRlbHkgYWZ0ZXIgaW4g
Q2FjaGVkSW1hZ2U6OmxvYWQsIHNvIHRoZXkgYXJlIG5vdCBuZWNlc3NhcnkuCisKKyAgICAgICAg
UmVtb3ZlZCB1bm5lY2Vzc2FyeSBGcmFtZS5oIGluY2x1ZGVzIGluIENhY2hlZFJlc291cmNlIGFu
ZAorICAgICAgICBDYWNoZWRJbWFnZS4KKworICAgICAgICBSZW1vdmVkIGRlYWQgbG9hZCgpIG1l
dGhvZCBkZWNsYXJhdGlvbiBpbiBDYWNoZWRJbWFnZS4KKworICAgICAgICBVcGRhdGVkIHRleHQg
ZXhwZWN0YXRpb24gZm9yIHR3byBpbWFnZS1wZXJtaXNzaW9ucyB0ZXN0cyB0byByZWZsZWN0Cisg
ICAgICAgIHRoZSByZW1vdmVkIGNhbGxzIHRvIGFsbG93SW1hZ2UuCisKKyAgICAgICAgVGVzdHM6
IGZhc3QvbG9hZGVyL2Rpc3BsYXktaW1hZ2UtdW5zZXQtYWxsb3dzLWNhY2hlZC1pbWFnZS1sb2Fk
Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvbG9hZGVyL2Rpc3BsYXktaW1hZ2UtdW5zZXQtY2Fu
LWJsb2NrLWltYWdlLWFuZC1jYW4tcmVsb2FkLWluLXBsYWNlLmh0bWwKKyAgICAgICAgICAgICAg
IGZhc3QvbG9hZGVyL2ltYWdlcy1lbmFibGVkLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2Fu
LXJlbG9hZC1pbi1wbGFjZS5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAg
ICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXI6OmRpZEJlZ2luRG9jdW1lbnQpOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1
ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmxvYWQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6ZGlkQWRkQ2xpZW50KToKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnN0aWxsTmVlZHNMb2FkKToKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OkNhY2hlZFJlc291cmNlTG9hZGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0SW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNhblJlcXVlc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRldGVybWluZVJldmFsaWRhdGlvblBvbGljeSk6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6c2V0QXV0b0xvYWRJbWFn
ZXMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6c2V0SW1hZ2VzRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNv
dXJjZUxvYWRlcjo6Y2xpZW50QWxsb3dzSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
UmVzb3VyY2VMb2FkZXI6OnNob3VsZERlZmVySW1hZ2VMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZWxvYWRJbWFnZXNJZk5vdERlZmVycmVkKToKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKENhY2hl
ZFJlc291cmNlTG9hZGVyKToKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnNldEltYWdlTG9hZGluZ1NldHRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6OlNl
dHRpbmdzOjpTZXR0aW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6c2V0TG9hZHNJ
bWFnZXNBdXRvbWF0aWNhbGx5KToKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjppbWFnZUxv
YWRpbmdTZXR0aW5nc1RpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OnNl
dEltYWdlc0VuYWJsZWQpOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuaDoKKyAgICAgICAgKFNl
dHRpbmdzKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW50ZXJuYWxTZXR0aW5nczo6QmFja3VwOjpCYWNrdXApOgorICAgICAgICAo
V2ViQ29yZTo6SW50ZXJuYWxTZXR0aW5nczo6QmFja3VwOjpyZXN0b3JlVG8pOgorICAgICAgICAo
V2ViQ29yZTo6SW50ZXJuYWxTZXR0aW5nczo6c2V0SW1hZ2VzRW5hYmxlZCk6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaDoKKyAgICAgICAg
KEJhY2t1cCk6CisgICAgICAgIChJbnRlcm5hbFNldHRpbmdzKToKKyAgICAgICAgKiB0ZXN0aW5n
L0ludGVybmFsU2V0dGluZ3MuaWRsOgorCiAyMDEyLTA5LTE5ICBQYXRyaWNrIEdhbnN0ZXJlciAg
PHBhcm9nYUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSBhbGwgdXNhZ2VzIG9mIE1fUEkg
ZnJvbSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggN2E4OGU1MTJjYzNmYzljM2MyNWM4YjdjMjUwNmUz
MTUwMjQyYjhkNS4uYzJjOWE2ZDZmYzhmNzI0Nzk5YWNiNTJhNTcwZDBiNzY0OGZmNzA3OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTA5LTE4ICBCbyBMaXUgIDxib2xpdUBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgUmVsYW5kICJBZGQgaW4tcGxhY2UgcmVsb2FkIGJlaGF2aW9y
IHRvIEltYWdlc0VuYWJsZWQgc2V0dGluZyIgd2l0aCBvcHRpbWl6YXRpb25zCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzA1NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbGFuZGluZyAxMjg3ODAsIDEy
ODY3NiwgMTI4NjQ1LiBXYXMgcmV2ZXJ0ZWQgaW4gMTI4OTE0IGR1ZSB0bworICAgICAgICBwZXJm
b3JtYW5jZSByZWdyZXNzaW9uIGluIENocm9taXVtLgorCisgICAgICAgIE5ldyBjaGFuZ2VzIGlu
IGFkZGl0aW9uIHRvIHByZXZpb3VzbHkgcmV2ZXJ0ZWQgcGF0Y2hlczoKKworICAgICAgICBSZW1v
dmUgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnNob3VsZERlZmVySW1hZ2VMb2FkIGNhbGxzIGluCisg
ICAgICAgIENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0SW1hZ2UgYW5kCisgICAgICAgIENh
Y2hlZFJlc291cmNlTG9hZGVyOjpyZWxvYWRJbWFnZXNJZk5vdERlZmVycmVkLiBUaGUgc2FtZSBj
YWxsIGlzIG1hZGUKKyAgICAgICAgaW1tZWRpYXRlbHkgYWZ0ZXIgaW4gQ2FjaGVkSW1hZ2U6Omxv
YWQsIHNvIHRoZXkgYXJlIG5vdCBuZWNlc3NhcnkuCisKKyAgICAgICAgUmVtb3ZlZCB1bm5lY2Vz
c2FyeSBGcmFtZS5oIGluY2x1ZGVzIGluIENhY2hlZFJlc291cmNlIGFuZAorICAgICAgICBDYWNo
ZWRJbWFnZS4KKworICAgICAgICBSZW1vdmVkIGRlYWQgbG9hZCgpIG1ldGhvZCBkZWNsYXJhdGlv
biBpbiBDYWNoZWRJbWFnZS4KKworICAgICAgICBVcGRhdGVkIHRleHQgZXhwZWN0YXRpb24gZm9y
IHR3byBpbWFnZS1wZXJtaXNzaW9ucyB0ZXN0cyB0byByZWZsZWN0CisgICAgICAgIHRoZSByZW1v
dmVkIGNhbGxzIHRvIGFsbG93SW1hZ2UuCisKKyAgICAgICAgKiB3aW4vV2ViS2l0Mi5kZWY6CisK
IDIwMTItMDktMTkgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFtHVEtdIEFkZCBBUEkgdG8gZ2V0L3NldCB0aGUgc2VjdXJpdHkgcG9saWN5IG9m
IGEgZ2l2ZW4gVVJJIHNjaGVtZSB0byBXZWJLaXQyIEdUSysKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5k
ZXggMWE2ZjRmYmIxMWNhZDRhODU0NTg1ODMzMjIwN2UxNTRiODZmZmRkOS4uNGQ2MGI0ZDlkOGMx
MWUxYzI3NWIwMDM4MWIwMzVkNWU4Y2RkZjZlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTg1
Miw2ICs4NTIsNyBAQCBfX1pON1dlYkNvcmU4R3JhZGllbnRDMUVSS05TXzEwRmxvYXRQb2ludEVT
M18KIF9fWk43V2ViQ29yZThQb3NpdGlvbkMxRU4zV1RGMTBQYXNzUmVmUHRySU5TXzROb2RlRUVF
aU5TMF8xMEFuY2hvclR5cGVFCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MxNHNldEphdmFFbmFibGVk
RWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczE1c2V0V2ViR0xFbmFibGVkRWIKK19fWk43V2ViQ29y
ZThTZXR0aW5nczE2c2V0SW1hZ2VzRW5hYmxlZEViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MxNnNl
dFNjcmlwdEVuYWJsZWRFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMTZzZXRVc2VzUGFnZUNhY2hl
RWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczE3c2V0UGx1Z2luc0VuYWJsZWRFYgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggYjI2YjZkNGNjMjJmYWU3NTc4ZDA0NGY2MTA1
MTYxOTI0YjA2ZmM1Zi4uNDE3NzJjYWVlOGQyZDkzMmRkM2Y2YmVjMmE4YmJhZmMwZGNlNWYxYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC02NDcsNiArNjQ3LDcgQEAg
dm9pZCBGcmFtZUxvYWRlcjo6ZGlkQmVnaW5Eb2N1bWVudChib29sIGRpc3BhdGNoKQogICAgIG1f
ZnJhbWUtPmRvY3VtZW50KCktPmluaXRDb250ZW50U2VjdXJpdHlQb2xpY3koKTsKIAogICAgIFNl
dHRpbmdzKiBzZXR0aW5ncyA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnNldHRpbmdzKCk7CisgICAg
bV9mcmFtZS0+ZG9jdW1lbnQoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+c2V0SW1hZ2VzRW5h
YmxlZCghc2V0dGluZ3MgfHwgc2V0dGluZ3MtPmFyZUltYWdlc0VuYWJsZWQoKSk7CiAgICAgbV9m
cmFtZS0+ZG9jdW1lbnQoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+c2V0QXV0b0xvYWRJbWFn
ZXMoc2V0dGluZ3MgJiYgc2V0dGluZ3MtPmxvYWRzSW1hZ2VzQXV0b21hdGljYWxseSgpKTsKIAog
ICAgIGlmIChtX2RvY3VtZW50TG9hZGVyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJl
c291cmNlTG9hZGVyLmNwcAppbmRleCBmZjNiZTZlZGZmOGI5N2ZjNTVhMDg0OGI0YzFhZjAyZjA4
MWI0NjE2Li41NmRlMGQzNDEzM2MzZjVhNDcyYmZjMmJjNmY0ZTVjZGYzODMwM2ZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKQEAgLTE2NywxMSArMTY3
LDEzIEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJl
cXVlc3QmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291CiAgICAgCiAgICAgUmVzb3VyY2VMb2FkZXI6
OndpbGxTZW5kUmVxdWVzdChuZXdSZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKICAgICBpZiAo
IXByZXZpb3VzVVJMLmlzTnVsbCgpICYmICFuZXdSZXF1ZXN0LmlzTnVsbCgpICYmIHByZXZpb3Vz
VVJMICE9IG5ld1JlcXVlc3QudXJsKCkpIHsKLSAgICAgICAgaWYgKCFtX2RvY3VtZW50LT5jYWNo
ZWRSZXNvdXJjZUxvYWRlcigpLT5jYW5SZXF1ZXN0KG1fcmVzb3VyY2UtPnR5cGUoKSwgbmV3UmVx
dWVzdC51cmwoKSkpIHsKLSAgICAgICAgICAgIGNhbmNlbCgpOwotICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICBpZiAobV9kb2N1bWVudC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+Y2FuUmVx
dWVzdChtX3Jlc291cmNlLT50eXBlKCksIG5ld1JlcXVlc3QudXJsKCkpKSB7CisgICAgICAgICAg
ICBpZiAobV9yZXNvdXJjZS0+dHlwZSgpICE9IENhY2hlZFJlc291cmNlOjpJbWFnZVJlc291cmNl
IHx8ICFtX2RvY3VtZW50LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5zaG91bGREZWZlckltYWdl
TG9hZChuZXdSZXF1ZXN0LnVybCgpKSkgeworICAgICAgICAgICAgICAgIG1fcmVzb3VyY2UtPndp
bGxTZW5kUmVxdWVzdChuZXdSZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgbV9yZXNvdXJj
ZS0+d2lsbFNlbmRSZXF1ZXN0KG5ld1JlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOworICAgICAg
ICBjYW5jZWwoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2UuY3BwCmluZGV4IDQzMTY2MTZiMzY0NTNhMjA4NjVlNGQyZDZlMDI4OTMwYWYxNmI5
ZDMuLjBmMGRiMWMyZjYyZGUzZmJkOTgzNTc3NDZjYmQyMmYyNzU4NDVmMjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApAQCAtMjksNyArMjksNiBAQAog
I2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3Vy
Y2VDbGllbnRXYWxrZXIuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgotI2lu
Y2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRl
ICJGcmFtZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCkBAIC01OSw2ICs1
OCw4IEBAIENhY2hlZEltYWdlOjpDYWNoZWRJbWFnZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
c291cmNlUmVxdWVzdCkKICAgICA6IENhY2hlZFJlc291cmNlKHJlc291cmNlUmVxdWVzdCwgSW1h
Z2VSZXNvdXJjZSkKICAgICAsIG1faW1hZ2UoMCkKICAgICAsIG1fc2hvdWxkUGFpbnRCcm9rZW5J
bWFnZSh0cnVlKQorICAgICwgbV9za2lwTmV4dFNob3VsZERlZmVySW1hZ2VDaGVjayhmYWxzZSkK
KyAgICAsIG1fc2hvdWxkRGVmZXJJbWFnZVJlc3VsdChmYWxzZSkKIHsKICAgICBzZXRTdGF0dXMo
VW5rbm93bik7CiB9CkBAIC03OSw3ICs4MCwxNCBAQCBDYWNoZWRJbWFnZTo6fkNhY2hlZEltYWdl
KCkKIAogdm9pZCBDYWNoZWRJbWFnZTo6bG9hZChDYWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVk
UmVzb3VyY2VMb2FkZXIsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKIHsK
LSAgICBpZiAoIWNhY2hlZFJlc291cmNlTG9hZGVyIHx8IGNhY2hlZFJlc291cmNlTG9hZGVyLT5h
dXRvTG9hZEltYWdlcygpKQorICAgIGJvb2wgc2hvdWxkRGVmZXIgPSBmYWxzZTsKKyAgICBpZiAo
bV9za2lwTmV4dFNob3VsZERlZmVySW1hZ2VDaGVjaykgeworICAgICAgICBtX3NraXBOZXh0U2hv
dWxkRGVmZXJJbWFnZUNoZWNrID0gZmFsc2U7CisgICAgICAgIHNob3VsZERlZmVyID0gbV9zaG91
bGREZWZlckltYWdlUmVzdWx0OworICAgIH0gZWxzZQorICAgICAgICBzaG91bGREZWZlciA9IChj
YWNoZWRSZXNvdXJjZUxvYWRlciAmJiBjYWNoZWRSZXNvdXJjZUxvYWRlci0+c2hvdWxkRGVmZXJJ
bWFnZUxvYWQobV9yZXNvdXJjZVJlcXVlc3QudXJsKCkpKTsKKworICAgIGlmICghc2hvdWxkRGVm
ZXIpCiAgICAgICAgIENhY2hlZFJlc291cmNlOjpsb2FkKGNhY2hlZFJlc291cmNlTG9hZGVyLCBv
cHRpb25zKTsKICAgICBlbHNlCiAgICAgICAgIHNldExvYWRpbmcoZmFsc2UpOwpAQCAtNDgwLDQg
KzQ4OCwxMCBAQCB2b2lkIENhY2hlZEltYWdlOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmpl
Y3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogI2VuZGlmCiB9CiAKK3ZvaWQgQ2FjaGVk
SW1hZ2U6OnNldFNraXBOZXh0U2hvdWxkRGVmZXJJbWFnZUxvYWRDaGVjayhib29sIGIpCit7Cisg
ICAgbV9za2lwTmV4dFNob3VsZERlZmVySW1hZ2VDaGVjayA9IHRydWU7CisgICAgbV9zaG91bGRE
ZWZlckltYWdlUmVzdWx0ID0gYjsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAppbmRleCA0ODY1YzdlMjQ2NjViYTYz
OWIwZTFhOTZiYzYyNTI2MGQ3M2FkMDFiLi5hYTEzNjM1N2M0NmZiNDdhNzViOGQ1ODY1NzQwMjk3
YzZlZDc1OTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
SW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaApA
QCAtODIsOCArODIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNob3VsZElnbm9yZUhU
VFBTdGF0dXNDb2RlRXJyb3JzKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdmlydHVh
bCBib29sIGlzSW1hZ2UoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgYm9vbCBzdGlsbE5l
ZWRzTG9hZCgpIGNvbnN0IHsgcmV0dXJuICFlcnJvck9jY3VycmVkKCkgJiYgc3RhdHVzKCkgPT0g
VW5rbm93biAmJiAhaXNMb2FkaW5nKCk7IH0KLSAgICB2b2lkIGxvYWQoKTsKKyAgICB2aXJ0dWFs
IGJvb2wgc3RpbGxOZWVkc0xvYWQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiAhZXJyb3JPY2N1
cnJlZCgpICYmIHN0YXR1cygpID09IFVua25vd24gJiYgIWlzTG9hZGluZygpOyB9CiAKICAgICAv
LyBJbWFnZU9ic2VydmVyCiAgICAgdmlydHVhbCB2b2lkIGRlY29kZWRTaXplQ2hhbmdlZChjb25z
dCBJbWFnZSogaW1hZ2UsIGludCBkZWx0YSk7CkBAIC05NSw2ICs5NCw4IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29u
c3QgT1ZFUlJJREU7CiAKKyAgICB2b2lkIHNldFNraXBOZXh0U2hvdWxkRGVmZXJJbWFnZUxvYWRD
aGVjayhib29sKTsKKwogcHJpdmF0ZToKICAgICBJbWFnZSogbG9va3VwT3JDcmVhdGVJbWFnZUZv
clJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCopOwogCkBAIC0xMTIsNyArMTEzLDkgQEAgcHJp
dmF0ZToKICNpZiBFTkFCTEUoU1ZHKQogICAgIE93blB0cjxTVkdJbWFnZUNhY2hlPiBtX3N2Z0lt
YWdlQ2FjaGU7CiAjZW5kaWYKLSAgICBib29sIG1fc2hvdWxkUGFpbnRCcm9rZW5JbWFnZTsKKyAg
ICBib29sIG1fc2hvdWxkUGFpbnRCcm9rZW5JbWFnZSA6IDE7CisgICAgYm9vbCBtX3NraXBOZXh0
U2hvdWxkRGVmZXJJbWFnZUNoZWNrIDogMTsKKyAgICBib29sIG1fc2hvdWxkRGVmZXJJbWFnZVJl
c3VsdCA6IDE7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlLmNwcAppbmRleCA0M2MzZDE0NGY4MmYxNTY4OGNmNjZjMDU0YTA0ZGE5NjAxOWI5
ZDExLi4zM2QxYmE4MjNiYzZmZDg2NTcyZTZhOTQ2MWFjNWJkNzU2M2EwNmJiIDEwMDc1NQotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKQEAgLTMyLDcgKzMy
LDYgQEAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkNyb3Nz
T3JpZ2luQWNjZXNzQ29udHJvbC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAi
RnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIkluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIktVUkwuaCIKQEAgLTM5MCw3ICszODks
NyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGll
bnQqIGMpCiAgICAgICAgIG1fY2xpZW50cy5hZGQoYyk7CiAgICAgICAgIG1fY2xpZW50c0F3YWl0
aW5nQ2FsbGJhY2sucmVtb3ZlKGMpOwogICAgIH0KLSAgICBpZiAoIWlzTG9hZGluZygpKQorICAg
IGlmICghaXNMb2FkaW5nKCkgJiYgIXN0aWxsTmVlZHNMb2FkKCkpCiAgICAgICAgIGMtPm5vdGlm
eUZpbmlzaGVkKHRoaXMpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5oCmluZGV4IDBjYWQzZWU3Y2E0MjgxMmVhYTNlZmU2MDAzMTE2NDQ5ZjdhNjk2
YTEuLmI3MzlkNjhhZjgxZjJkYjdiNDg2MmRmMTU5YWFjZjE1OGUwYjU3MzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCkBAIC00NSw3ICs0NSw2IEBA
IGNsYXNzIENhY2hlZE1ldGFkYXRhOwogY2xhc3MgQ2FjaGVkUmVzb3VyY2VDbGllbnQ7CiBjbGFz
cyBDYWNoZWRSZXNvdXJjZUhhbmRsZUJhc2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRlcjsK
LWNsYXNzIEZyYW1lOwogY2xhc3MgSW5zcGVjdG9yUmVzb3VyY2U7CiBjbGFzcyBQdXJnZWFibGVC
dWZmZXI7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKQEAgLTE0NCw2ICsxNDMsNyBAQCBwdWJsaWM6
CiAKICAgICBib29sIGlzTG9hZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fbG9hZGluZzsgfQogICAg
IHZvaWQgc2V0TG9hZGluZyhib29sIGIpIHsgbV9sb2FkaW5nID0gYjsgfQorICAgIHZpcnR1YWwg
Ym9vbCBzdGlsbE5lZWRzTG9hZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBTdWJy
ZXNvdXJjZUxvYWRlciogbG9hZGVyKCkgeyByZXR1cm4gbV9sb2FkZXIuZ2V0KCk7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5j
cHAKaW5kZXggZjJjYWEzZDU3NjYxODhhNTYwNGJlNGI2NGY2NzQxOWMzNmQwMmFjNi4uZTg3MWZl
NDlhZWM3NjMyNTg4ZmMyY2VjZmE1MDI0ZDBmMmMwMzMwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC00Niw2ICs0
Niw3IEBACiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKICNpbmNsdWRlICJQaW5nTG9hZGVyLmgi
CiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgiCisjaW5jbHVkZSAiU2NoZW1lUmVn
aXN0cnkuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNldHRpbmdz
LmgiCiAjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CkBAIC0xMTUsNiArMTE2LDcgQEAgQ2Fj
aGVkUmVzb3VyY2VMb2FkZXI6OkNhY2hlZFJlc291cmNlTG9hZGVyKERvY3VtZW50KiBkb2N1bWVu
dCkKICAgICAsIG1fcmVxdWVzdENvdW50KDApCiAgICAgLCBtX2dhcmJhZ2VDb2xsZWN0RG9jdW1l
bnRSZXNvdXJjZXNUaW1lcih0aGlzLCAmQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmdhcmJhZ2VDb2xs
ZWN0RG9jdW1lbnRSZXNvdXJjZXNUaW1lckZpcmVkKQogICAgICwgbV9hdXRvTG9hZEltYWdlcyh0
cnVlKQorICAgICwgbV9pbWFnZXNFbmFibGVkKHRydWUpCiAgICAgLCBtX2FsbG93U3RhbGVSZXNv
dXJjZXMoZmFsc2UpCiB7CiB9CkBAIC0xNjAsNyArMTYyLDcgQEAgQ2FjaGVkUmVzb3VyY2VIYW5k
bGU8Q2FjaGVkSW1hZ2U+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0SW1hZ2UoUmVzb3Vy
Y2VSZXEKICAgICAgICAgfQogICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRJ
bWFnZT4gcmVzb3VyY2Uoc3RhdGljX2Nhc3Q8Q2FjaGVkSW1hZ2UqPihyZXF1ZXN0UmVzb3VyY2Uo
Q2FjaGVkUmVzb3VyY2U6OkltYWdlUmVzb3VyY2UsIHJlcXVlc3QsIFN0cmluZygpLCBkZWZhdWx0
Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCkpLmdldCgpKSk7Ci0gICAgaWYgKGF1dG9Mb2FkSW1hZ2Vz
KCkgJiYgcmVzb3VyY2UgJiYgcmVzb3VyY2UtPnN0aWxsTmVlZHNMb2FkKCkpCisgICAgaWYgKHJl
c291cmNlICYmIHJlc291cmNlLT5zdGlsbE5lZWRzTG9hZCgpKQogICAgICAgICByZXNvdXJjZS0+
bG9hZCh0aGlzLCBkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCkpOwogICAgIHJldHVybiBy
ZXNvdXJjZTsKIH0KQEAgLTM2MiwxMiArMzY0LDYgQEAgYm9vbCBDYWNoZWRSZXNvdXJjZUxvYWRl
cjo6Y2FuUmVxdWVzdChDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBLVVJMJiB1cmwK
ICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpJbWFnZVJlc291cmNlOgogICAgICAgICBpZiAoIW1f
ZG9jdW1lbnQtPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5hbGxvd0ltYWdlRnJvbVNvdXJjZSh1
cmwpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIGlmIChmcmFtZSgpKSB7
Ci0gICAgICAgICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBmcmFtZSgpLT5zZXR0aW5ncygpOwot
ICAgICAgICAgICAgaWYgKCFmcmFtZSgpLT5sb2FkZXIoKS0+Y2xpZW50KCktPmFsbG93SW1hZ2Uo
IXNldHRpbmdzIHx8IHNldHRpbmdzLT5hcmVJbWFnZXNFbmFibGVkKCksIHVybCkpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgQ2FjaGVkUmVzb3VyY2U6OkZvbnRSZXNvdXJjZTogewogICAgICAgICBpZiAoIW1fZG9jdW1l
bnQtPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5hbGxvd0ZvbnRGcm9tU291cmNlKHVybCkpCkBA
IC01MTQsMTEgKzUxMCwxMSBAQCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6UmV2YWxpZGF0aW9uUG9s
aWN5IENhY2hlZFJlc291cmNlTG9hZGVyOjpkZXRlcm1pbmVSZXZhbGlkYQogewogICAgIGlmICgh
ZXhpc3RpbmdSZXNvdXJjZSkKICAgICAgICAgcmV0dXJuIExvYWQ7Ci0gICAgCisKICAgICAvLyBX
ZSBhbHJlYWR5IGhhdmUgYSBwcmVsb2FkIGdvaW5nIGZvciB0aGlzIFVSTC4KICAgICBpZiAoZm9y
UHJlbG9hZCAmJiBleGlzdGluZ1Jlc291cmNlLT5pc1ByZWxvYWRlZCgpKQogICAgICAgICByZXR1
cm4gVXNlOwotICAgIAorCiAgICAgLy8gSWYgdGhlIHNhbWUgVVJMIGhhcyBiZWVuIGxvYWRlZCBh
cyBhIGRpZmZlcmVudCB0eXBlLCB3ZSBuZWVkIHRvIHJlbG9hZC4KICAgICBpZiAoZXhpc3RpbmdS
ZXNvdXJjZS0+dHlwZSgpICE9IHR5cGUpIHsKICAgICAgICAgTE9HKFJlc291cmNlTG9hZGluZywg
IkNhY2hlZFJlc291cmNlTG9hZGVyOjpkZXRlcm1pbmVSZXZhbGlkYXRpb25Qb2xpY3kgcmVsb2Fk
aW5nIGR1ZSB0byB0eXBlIG1pc21hdGNoLiIpOwpAQCAtNTMzLDYgKzUyOSwxNSBAQCBDYWNoZWRS
ZXNvdXJjZUxvYWRlcjo6UmV2YWxpZGF0aW9uUG9saWN5IENhY2hlZFJlc291cmNlTG9hZGVyOjpk
ZXRlcm1pbmVSZXZhbGlkYQogICAgIC8vIG9mIHRoaW5ncyBhYm91dCBob3cgcmV2YWxpZGF0aW9u
IHdvcmtzIHRoYXQgbWFudWFsIGhlYWRlcnMgdmlvbGF0ZSwgc28gcHVudCB0byBSZWxvYWQgaW5z
dGVhZC4KICAgICBpZiAocmVxdWVzdC5pc0NvbmRpdGlvbmFsKCkpCiAgICAgICAgIHJldHVybiBS
ZWxvYWQ7CisKKyAgICAvLyBEbyBub3QgbG9hZCBmcm9tIGNhY2hlIGlmIGltYWdlcyBhcmUgbm90
IGVuYWJsZWQuIFRoZSBsb2FkIGZvciB0aGlzIGltYWdlIHdpbGwgYmUgYmxvY2tlZAorICAgIC8v
IGluIENhY2hlZEltYWdlOjpsb2FkLgorICAgIGlmIChleGlzdGluZ1Jlc291cmNlLT50eXBlKCkg
PT0gQ2FjaGVkUmVzb3VyY2U6OkltYWdlUmVzb3VyY2UpIHsKKyAgICAgICAgYm9vbCBibG9ja2Vk
QnlDbGllbnQgPSAhY2xpZW50QWxsb3dzSW1hZ2UoZXhpc3RpbmdSZXNvdXJjZS0+dXJsKCkpOwor
ICAgICAgICBzdGF0aWNfY2FzdDxDYWNoZWRJbWFnZSo+KGV4aXN0aW5nUmVzb3VyY2UpLT5zZXRT
a2lwTmV4dFNob3VsZERlZmVySW1hZ2VMb2FkQ2hlY2soYmxvY2tlZEJ5Q2xpZW50IHx8ICFtX2F1
dG9Mb2FkSW1hZ2VzKTsKKyAgICAgICAgaWYgKGJsb2NrZWRCeUNsaWVudCkKKyAgICAgICAgICAg
IHJldHVybiBSZWxvYWQ7CisgICAgfQogICAgIAogICAgIC8vIERvbid0IHJlbG9hZCByZXNvdXJj
ZXMgd2hpbGUgcGFzdGluZy4KICAgICBpZiAobV9hbGxvd1N0YWxlUmVzb3VyY2VzKQpAQCAtNjI5
LDYgKzYzNCwzNCBAQCB2b2lkIENhY2hlZFJlc291cmNlTG9hZGVyOjpzZXRBdXRvTG9hZEltYWdl
cyhib29sIGVuYWJsZSkKICAgICBpZiAoIW1fYXV0b0xvYWRJbWFnZXMpCiAgICAgICAgIHJldHVy
bjsKIAorICAgIHJlbG9hZEltYWdlc0lmTm90RGVmZXJyZWQoKTsKK30KKwordm9pZCBDYWNoZWRS
ZXNvdXJjZUxvYWRlcjo6c2V0SW1hZ2VzRW5hYmxlZChib29sIGVuYWJsZSkKK3sKKyAgICBpZiAo
ZW5hYmxlID09IG1faW1hZ2VzRW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9pbWFn
ZXNFbmFibGVkID0gZW5hYmxlOworCisgICAgaWYgKCFtX2ltYWdlc0VuYWJsZWQpCisgICAgICAg
IHJldHVybjsKKworICAgIHJlbG9hZEltYWdlc0lmTm90RGVmZXJyZWQoKTsKK30KKworYm9vbCBD
YWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2xpZW50QWxsb3dzSW1hZ2UoY29uc3QgS1VSTCYgdXJsKSBj
b25zdAoreworICAgIHJldHVybiAhZnJhbWUoKSB8fCBmcmFtZSgpLT5sb2FkZXIoKS0+Y2xpZW50
KCktPmFsbG93SW1hZ2UobV9pbWFnZXNFbmFibGVkLCB1cmwpOworfQorCitib29sIENhY2hlZFJl
c291cmNlTG9hZGVyOjpzaG91bGREZWZlckltYWdlTG9hZChjb25zdCBLVVJMJiB1cmwpIGNvbnN0
Cit7CisgICAgcmV0dXJuICFjbGllbnRBbGxvd3NJbWFnZSh1cmwpIHx8ICFtX2F1dG9Mb2FkSW1h
Z2VzOworfQorCit2b2lkIENhY2hlZFJlc291cmNlTG9hZGVyOjpyZWxvYWRJbWFnZXNJZk5vdERl
ZmVycmVkKCkKK3sKICAgICBEb2N1bWVudFJlc291cmNlTWFwOjppdGVyYXRvciBlbmQgPSBtX2Rv
Y3VtZW50UmVzb3VyY2VzLmVuZCgpOwogICAgIGZvciAoRG9jdW1lbnRSZXNvdXJjZU1hcDo6aXRl
cmF0b3IgaXQgPSBtX2RvY3VtZW50UmVzb3VyY2VzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkg
ewogICAgICAgICBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UgPSBpdC0+c2Vjb25kLmdldCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9h
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIu
aAppbmRleCBmNDc1NWMyMmZkOGQyZjFjMmEwZThlNmRhODJlN2Y5YjUyM2ExOWZiLi4yMWU0ZjM5
MWRiYjQ4MjE2YzQ2NTQzNzg5NjNmOTFhNzQwNWE3MjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaApAQCAtOTcsNiArOTcsMTAg
QEAgcHVibGljOgogCiAgICAgYm9vbCBhdXRvTG9hZEltYWdlcygpIGNvbnN0IHsgcmV0dXJuIG1f
YXV0b0xvYWRJbWFnZXM7IH0KICAgICB2b2lkIHNldEF1dG9Mb2FkSW1hZ2VzKGJvb2wpOworCisg
ICAgdm9pZCBzZXRJbWFnZXNFbmFibGVkKGJvb2wpOworCisgICAgYm9vbCBzaG91bGREZWZlcklt
YWdlTG9hZChjb25zdCBLVVJMJikgY29uc3Q7CiAgICAgCiAgICAgQ2FjaGVQb2xpY3kgY2FjaGVQ
b2xpY3koKSBjb25zdDsKICAgICAKQEAgLTEzNSw2ICsxMzksOSBAQCBwcml2YXRlOgogCiAgICAg
dm9pZCBnYXJiYWdlQ29sbGVjdERvY3VtZW50UmVzb3VyY2VzVGltZXJGaXJlZChUaW1lcjxDYWNo
ZWRSZXNvdXJjZUxvYWRlcj4qKTsKICAgICB2b2lkIHBlcmZvcm1Qb3N0TG9hZEFjdGlvbnMoKTsK
KworICAgIGJvb2wgY2xpZW50QWxsb3dzSW1hZ2UoY29uc3QgS1VSTCYpIGNvbnN0OworICAgIHZv
aWQgcmVsb2FkSW1hZ2VzSWZOb3REZWZlcnJlZCgpOwogICAgIAogICAgIEhhc2hTZXQ8U3RyaW5n
PiBtX3ZhbGlkYXRlZFVSTHM7CiAgICAgbXV0YWJsZSBEb2N1bWVudFJlc291cmNlTWFwIG1fZG9j
dW1lbnRSZXNvdXJjZXM7CkBAIC0xNTIsOCArMTU5LDkgQEAgcHJpdmF0ZToKIAogICAgIFRpbWVy
PENhY2hlZFJlc291cmNlTG9hZGVyPiBtX2dhcmJhZ2VDb2xsZWN0RG9jdW1lbnRSZXNvdXJjZXNU
aW1lcjsKIAotICAgIC8vIDMwIGJpdHMgbGVmdAorICAgIC8vIDI5IGJpdHMgbGVmdAogICAgIGJv
b2wgbV9hdXRvTG9hZEltYWdlcyA6IDE7CisgICAgYm9vbCBtX2ltYWdlc0VuYWJsZWQgOiAxOwog
ICAgIGJvb2wgbV9hbGxvd1N0YWxlUmVzb3VyY2VzIDogMTsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0
aW5ncy5jcHAKaW5kZXggNDY1YTQyMGRiZWFkM2U3NjVmMGM4NTE1YmE1YzA1ZGZhOGE5ZTRhMy4u
NGQxNzgwNGJkNzEzMDQzM2JkMmFlOGU1NGI2YmUzZDc3NWZiZmE4YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZXR0aW5ncy5jcHAKQEAgLTQ2LDEwICs0NiwxMiBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyB2b2lkIHNldExvYWRzSW1hZ2VzQXV0b21hdGlj
YWxseUluQWxsRnJhbWVzKFBhZ2UqIHBhZ2UpCitzdGF0aWMgdm9pZCBzZXRJbWFnZUxvYWRpbmdT
ZXR0aW5ncyhQYWdlKiBwYWdlKQogewotICAgIGZvciAoRnJhbWUqIGZyYW1lID0gcGFnZS0+bWFp
bkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKQor
ICAgIGZvciAoRnJhbWUqIGZyYW1lID0gcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9
IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKSB7CisgICAgICAgIGZyYW1lLT5kb2N1bWVu
dCgpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5zZXRJbWFnZXNFbmFibGVkKHBhZ2UtPnNldHRp
bmdzKCktPmFyZUltYWdlc0VuYWJsZWQoKSk7CiAgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT5j
YWNoZWRSZXNvdXJjZUxvYWRlcigpLT5zZXRBdXRvTG9hZEltYWdlcyhwYWdlLT5zZXR0aW5ncygp
LT5sb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoKSk7CisgICAgfQogfQogCiAvLyBTZXRzIHRoZSBl
bnRyeSBpbiB0aGUgZm9udCBtYXAgZm9yIHRoZSBnaXZlbiBzY3JpcHQuIElmIGZhbWlseSBpcyB0
aGUgZW1wdHkgc3RyaW5nLCByZW1vdmVzIHRoZSBlbnRyeSBpbnN0ZWFkLgpAQCAtMjkwLDcgKzI5
Miw3IEBAIFNldHRpbmdzOjpTZXR0aW5ncyhQYWdlKiBwYWdlKQogICAgICwgbV93aW5kb3dGb2N1
c1Jlc3RyaWN0ZWQodHJ1ZSkKICAgICAsIG1fZGlhZ25vc3RpY0xvZ2dpbmdFbmFibGVkKGZhbHNl
KQogICAgICwgbV9zY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKGZhbHNlKQotICAg
ICwgbV9sb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHlUaW1lcih0aGlzLCAmU2V0dGluZ3M6OmxvYWRz
SW1hZ2VzQXV0b21hdGljYWxseVRpbWVyRmlyZWQpCisgICAgLCBtX3NldEltYWdlTG9hZGluZ1Nl
dHRpbmdzVGltZXIodGhpcywgJlNldHRpbmdzOjppbWFnZUxvYWRpbmdTZXR0aW5nc1RpbWVyRmly
ZWQpCiAgICAgLCBtX2luY3JlbWVudGFsUmVuZGVyaW5nU3VwcHJlc3Npb25UaW1lb3V0SW5TZWNv
bmRzKGRlZmF1bHRJbmNyZW1lbnRhbFJlbmRlcmluZ1N1cHByZXNzaW9uVGltZW91dEluU2Vjb25k
cykKIHsKICAgICAvLyBBIEZyYW1lIG1heSBub3QgaGF2ZSBiZWVuIGNyZWF0ZWQgeWV0LCBzbyB3
ZSBpbml0aWFsaXplIHRoZSBBdG9taWNTdHJpbmcKQEAgLTQ1NiwxMiArNDU4LDEyIEBAIHZvaWQg
U2V0dGluZ3M6OnNldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseShib29sIGxvYWRzSW1hZ2VzQXV0
b21hdGljYWxseSkKICAgICAvLyBTdGFydGluZyB0aGVzZSBsb2FkcyBzeW5jaHJvbm91c2x5IGlz
IG5vdCBpbXBvcnRhbnQuICBCeSBwdXR0aW5nIGl0IG9uIGEgMC1kZWxheSwgcHJvcGVybHkgY2xv
c2luZyB0aGUgUGFnZSBjYW5jZWxzIHRoZW0KICAgICAvLyBiZWZvcmUgdGhleSBoYXZlIGEgY2hh
bmNlIHRvIHJlYWxseSBzdGFydC4KICAgICAvLyBTZWUgaHR0cDovL3dlYmtpdC5vcmcvYi82MDU3
MiBmb3IgbW9yZSBkaXNjdXNzaW9uLgotICAgIG1fbG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5VGlt
ZXIuc3RhcnRPbmVTaG90KDApOworICAgIG1fc2V0SW1hZ2VMb2FkaW5nU2V0dGluZ3NUaW1lci5z
dGFydE9uZVNob3QoMCk7CiB9CiAKLXZvaWQgU2V0dGluZ3M6OmxvYWRzSW1hZ2VzQXV0b21hdGlj
YWxseVRpbWVyRmlyZWQoVGltZXI8U2V0dGluZ3M+KikKK3ZvaWQgU2V0dGluZ3M6OmltYWdlTG9h
ZGluZ1NldHRpbmdzVGltZXJGaXJlZChUaW1lcjxTZXR0aW5ncz4qKQogewotICAgIHNldExvYWRz
SW1hZ2VzQXV0b21hdGljYWxseUluQWxsRnJhbWVzKG1fcGFnZSk7CisgICAgc2V0SW1hZ2VMb2Fk
aW5nU2V0dGluZ3MobV9wYWdlKTsKIH0KIAogdm9pZCBTZXR0aW5nczo6c2V0TG9hZHNTaXRlSWNv
bnNJZ25vcmluZ0ltYWdlTG9hZGluZ1NldHRpbmcoYm9vbCBsb2Fkc1NpdGVJY29ucykKQEAgLTUw
Nyw2ICs1MDksOSBAQCB2b2lkIFNldHRpbmdzOjpzZXRKYXZhRW5hYmxlZEZvckxvY2FsRmlsZXMo
Ym9vbCBpc0phdmFFbmFibGVkRm9yTG9jYWxGaWxlcykKIHZvaWQgU2V0dGluZ3M6OnNldEltYWdl
c0VuYWJsZWQoYm9vbCBhcmVJbWFnZXNFbmFibGVkKQogewogICAgIG1fYXJlSW1hZ2VzRW5hYmxl
ZCA9IGFyZUltYWdlc0VuYWJsZWQ7CisKKyAgICAvLyBTZWUgY29tbWVudCBpbiBzZXRMb2Fkc0lt
YWdlc0F1dG9tYXRpY2FsbHkuCisgICAgbV9zZXRJbWFnZUxvYWRpbmdTZXR0aW5nc1RpbWVyLnN0
YXJ0T25lU2hvdCgwKTsKIH0KIAogdm9pZCBTZXR0aW5nczo6c2V0TWVkaWFFbmFibGVkKGJvb2wg
aXNNZWRpYUVuYWJsZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdz
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKaW5kZXggODRkZDU4NjI1NTM5ZmJi
ZjA0Mjk1N2Q0NmM2NTcxZTlhMzZmM2UyMS4uMWYyOTYzYzVkMDkxNTg1ZDM0NjZkMGJkNTBmOWQw
ZWI1ZWRjMzZjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaApAQCAtODE0LDggKzgxNCw4IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBib29sIG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VM
b2dnaW5nRW5hYmxlZCA6IDE7CiAKLSAgICAgICAgVGltZXI8U2V0dGluZ3M+IG1fbG9hZHNJbWFn
ZXNBdXRvbWF0aWNhbGx5VGltZXI7Ci0gICAgICAgIHZvaWQgbG9hZHNJbWFnZXNBdXRvbWF0aWNh
bGx5VGltZXJGaXJlZChUaW1lcjxTZXR0aW5ncz4qKTsKKyAgICAgICAgVGltZXI8U2V0dGluZ3M+
IG1fc2V0SW1hZ2VMb2FkaW5nU2V0dGluZ3NUaW1lcjsKKyAgICAgICAgdm9pZCBpbWFnZUxvYWRp
bmdTZXR0aW5nc1RpbWVyRmlyZWQoVGltZXI8U2V0dGluZ3M+Kik7CiAgICAgICAgIAogICAgICAg
ICBkb3VibGUgbV9pbmNyZW1lbnRhbFJlbmRlcmluZ1N1cHByZXNzaW9uVGltZW91dEluU2Vjb25k
czsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAKaW5kZXgg
YmQyMzc2NjA3ZDcwNDFmMTc3MmMxNjFjMjEyNTljNTVlNDFjMzAyOC4uYmI5ZWVkNmIxMzU2ZTEx
OGExNTYyZmY0ZDJkYzI0MGMzNWYwNWI2NyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFsU2V0dGluZ3MuY3BwCkBAIC0xMDAsNiArMTAwLDcgQEAgSW50ZXJuYWxTZXR0aW5nczo6
QmFja3VwOjpCYWNrdXAoUGFnZSogcGFnZSwgU2V0dGluZ3MqIHNldHRpbmdzKQogICAgICwgbV9j
YW5TdGFydE1lZGlhKHBhZ2UtPmNhblN0YXJ0TWVkaWEoKSkKICAgICAsIG1fb3JpZ2luYWxNb2Nr
U2Nyb2xsYmFyc0VuYWJsZWQoc2V0dGluZ3MtPm1vY2tTY3JvbGxiYXJzRW5hYmxlZCgpKQogICAg
ICwgbV9sYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJRW5hYmxlZChSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpsYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJRW5hYmxlZCgpKQorICAg
ICwgbV9pbWFnZXNFbmFibGVkKHNldHRpbmdzLT5hcmVJbWFnZXNFbmFibGVkKCkpCiB7CiB9CiAK
QEAgLTEzNSw2ICsxMzYsNyBAQCB2b2lkIEludGVybmFsU2V0dGluZ3M6OkJhY2t1cDo6cmVzdG9y
ZVRvKFBhZ2UqIHBhZ2UsIFNldHRpbmdzKiBzZXR0aW5ncykKICAgICBwYWdlLT5zZXRDYW5TdGFy
dE1lZGlhKG1fY2FuU3RhcnRNZWRpYSk7CiAgICAgc2V0dGluZ3MtPnNldE1vY2tTY3JvbGxiYXJz
RW5hYmxlZChtX29yaWdpbmFsTW9ja1Njcm9sbGJhcnNFbmFibGVkKTsKICAgICBSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpzZXRMYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJRW5hYmxlZCht
X2xhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVkKTsKKyAgICBzZXR0aW5ncy0+
c2V0SW1hZ2VzRW5hYmxlZChtX2ltYWdlc0VuYWJsZWQpOwogfQogCiBJbnRlcm5hbFNldHRpbmdz
KiBJbnRlcm5hbFNldHRpbmdzOjpmcm9tKFBhZ2UqIHBhZ2UpCkBAIC02NTksNCArNjYxLDEwIEBA
IHZvaWQgSW50ZXJuYWxTZXR0aW5nczo6c2V0TGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xV
SUVuYWJsZWQoYm9vbCBlbmFibGVkKQogICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldExh
bmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVkKGVuYWJsZWQpOwogfQogCit2b2lk
IEludGVybmFsU2V0dGluZ3M6OnNldEltYWdlc0VuYWJsZWQoYm9vbCBlbmFibGVkLCBFeGNlcHRp
b25Db2RlJiBlYykKK3sKKyAgICBJbnRlcm5hbFNldHRpbmdzR3VhcmRGb3JTZXR0aW5ncygpOwor
ICAgIHNldHRpbmdzKCktPnNldEltYWdlc0VuYWJsZWQoZW5hYmxlZCk7Cit9CisKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5oIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmgKaW5kZXggMmMwNzNkZjZlZWRhNGYw
NmUzZWVhMGFiM2QxYTQ3Y2Y0NDY5MTk1YS4uYmU4ODEwZGU2NjgyYmM4N2Q0NDc2YmY5M2Q5YTBk
ODAyOWFlMDkwOCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNl
dHRpbmdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmgK
QEAgLTgyLDYgKzgyLDcgQEAgcHVibGljOgogICAgICAgICBib29sIG1fY2FuU3RhcnRNZWRpYTsK
ICAgICAgICAgYm9vbCBtX29yaWdpbmFsTW9ja1Njcm9sbGJhcnNFbmFibGVkOwogICAgICAgICBi
b29sIG1fbGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQ7CisgICAgICAgIGJv
b2wgbV9pbWFnZXNFbmFibGVkOwogICAgIH07CiAKICAgICB0eXBlZGVmIFJlZkNvdW50ZWRTdXBw
bGVtZW50PFBhZ2UsIEludGVybmFsU2V0dGluZ3M+IFN1cGVyVHlwZTsKQEAgLTE0Nyw2ICsxNDgs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRNZW1vcnlJbmZvRW5hYmxlZChib29sLCBFeGNlcHRp
b25Db2RlJik7CiAgICAgdm9pZCBzZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koY29uc3QgU3RyaW5n
JiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgc2V0TGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNv
bnRyb2xVSUVuYWJsZWQoYm9vbCk7CisgICAgdm9pZCBzZXRJbWFnZXNFbmFibGVkKGJvb2wgZW5h
YmxlZCwgRXhjZXB0aW9uQ29kZSYpOworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEludGVybmFs
U2V0dGluZ3MoUGFnZSopOwogICAgIHZpcnR1YWwgdm9pZCBob3N0RGVzdHJveWVkKCkgT1ZFUlJJ
REUgeyBtX3BhZ2UgPSAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFsU2V0dGluZ3MuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRp
bmdzLmlkbAppbmRleCA5NjczZDJmMWMyNWQxYjRjMTJjNThkMjk0Y2M5ZTdiNWIyMzIyZWFmLi5k
OGE4YWFmOGJiYTgxNTgyMDRjOTU2OTRiMTRiODM0MzFjYzYyODUzIDEwMDc1NQotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5pZGwKQEAgLTgyLDYgKzgyLDcgQEAgbW9kdWxl
IHdpbmRvdyB7CiAjZW5kaWYKICAgICAgICAgdm9pZCBzZXRNZW1vcnlJbmZvRW5hYmxlZChpbiBi
b29sZWFuIGVuYWJsZWQpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgICAgICB2b2lkIHNldFN0
b3JhZ2VCbG9ja2luZ1BvbGljeShpbiBET01TdHJpbmcgcG9saWN5KSByYWlzZXMoRE9NRXhjZXB0
aW9uKTsKKyAgICAgICAgdm9pZCBzZXRJbWFnZXNFbmFibGVkKGluIGJvb2xlYW4gZW5hYmxlZCkg
cmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvd2luL1dlYktpdDIuZGVmIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCmlu
ZGV4IGE5YjAwZGIzOTczMzM5MDJjMTVlMzRmZDZiYjk1ZWM2OGU3ZWQxMGUuLjZmZDFkMzE5NjA0
Zjk4YjdhYmE5YWQ0YTlkNjI2ZGY3ZjM4M2E4MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L3dpbi9XZWJLaXQyLmRlZgorKysgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKQEAg
LTIyMiw2ICsyMjIsNyBAQCBFWFBPUlRTCiAgICAgICAgID9zZXRET01FeGNlcHRpb25AV2ViQ29y
ZUBAWUFYUEFWRXhlY1N0YXRlQEpTQ0BASEBaCiAgICAgICAgID9zZXRGYW50YXN5Rm9udEZhbWls
eUBTZXR0aW5nc0BXZWJDb3JlQEBRQUVYQUJWQXRvbWljU3RyaW5nQFdURkBAVzRVU2NyaXB0Q29k
ZUBAQFoKICAgICAgICAgP3NldEZpeGVkRm9udEZhbWlseUBTZXR0aW5nc0BXZWJDb3JlQEBRQUVY
QUJWQXRvbWljU3RyaW5nQFdURkBAVzRVU2NyaXB0Q29kZUBAQFoKKyAgICAgICAgP3NldEltYWdl
c0VuYWJsZWRAU2V0dGluZ3NAV2ViQ29yZUBAUUFFWF9OQFoKICAgICAgICAgP3NldE1vY2tTY3Jv
bGxiYXJzRW5hYmxlZEBTZXR0aW5nc0BXZWJDb3JlQEBTQVhfTkBaCiAgICAgICAgID9tb2NrU2Ny
b2xsYmFyc0VuYWJsZWRAU2V0dGluZ3NAV2ViQ29yZUBAU0FfTlhaCiAgICAgICAgID9zZXRVc2Vz
T3ZlcmxheVNjcm9sbGJhcnNAU2V0dGluZ3NAV2ViQ29yZUBAU0FYX05AWgpkaWZmIC0tZ2l0IGEv
U291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlciBiL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9s
cy5maWx0ZXIKaW5kZXggZDVkNTQxMDZhNmIxYjMyZjdiMjM0MGNmOTc2MjZiYTM2ODc5ZTM5Yy4u
NjIzMDVjNGZhZGRjN2JhZWY5N2YzMzIxYWEzMjA1YmViNDdhZDgzOSAxMDA2NDQKLS0tIGEvU291
cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgorKysgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJv
bHMuZmlsdGVyCkBAIC0xNDUsNiArMTQ1LDcgQEAgX1pON1dlYkNvcmUxNFNjcm9sbGFibGVBcmVh
MjhzZXRTY3JvbGxPZmZzZXRGcm9tSW50ZXJuYWxzRVJLTlNfOEludFBvaW50RTsKIF9aTjdXZWJD
b3JlMTBTY3JvbGxWaWV3MjNzZXRTY3JvbGxiYXJzU3VwcHJlc3NlZEViYjsKIF9aTjdXZWJDb3Jl
MTBTY3JvbGxWaWV3MjFzZXREZWxlZ2F0ZXNTY3JvbGxpbmdFYjsKIF9aTjdXZWJDb3JlNE5vZGUx
NHJlbW92ZWRMYXN0UmVmRXY7CitfWk43V2ViQ29yZThTZXR0aW5nczE2c2V0SW1hZ2VzRW5hYmxl
ZEViOwogX1pON1dlYkNvcmU4U2V0dGluZ3MxOHNldEZpeGVkRm9udEZhbWlseUVSS04zV1RGMTJB
dG9taWNTdHJpbmdFMTFVU2NyaXB0Q29kZTsKIF9aTjdXZWJDb3JlOFNldHRpbmdzMThzZXRTZXJp
ZkZvbnRGYW1pbHlFUktOM1dURjEyQXRvbWljU3RyaW5nRTExVVNjcmlwdENvZGU7CiBfWk43V2Vi
Q29yZThTZXR0aW5nczIwc2V0Q3Vyc2l2ZUZvbnRGYW1pbHlFUktOM1dURjEyQXRvbWljU3RyaW5n
RTExVVNjcmlwdENvZGU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggODlhMDVjZmJkZDQ5ZTEzMGQ1MzkzOWYyMTYxY2YyN2Ex
NmQwZDZiOS4uNGY0ZGNiZjA2YWE5Yjg3N2YxNGRhMjU0ZWQ0MGI2ODlkMWYyMTIyMiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDQxIEBACisyMDEyLTA5LTE4ICBCbyBMaXUgIDxib2xpdUBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgUmVsYW5kICJBZGQgaW4tcGxhY2UgcmVsb2FkIGJlaGF2aW9yIHRvIEltYWdl
c0VuYWJsZWQgc2V0dGluZyIgd2l0aCBvcHRpbWl6YXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzA1NQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbGFuZGluZyAxMjg3ODAsIDEyODY3NiwgMTI4
NjQ1LiBXYXMgcmV2ZXJ0ZWQgaW4gMTI4OTE0IGR1ZSB0bworICAgICAgICBwZXJmb3JtYW5jZSBy
ZWdyZXNzaW9uIGluIENocm9taXVtLgorCisgICAgICAgIE5ldyBjaGFuZ2VzIGluIGFkZGl0aW9u
IHRvIHByZXZpb3VzbHkgcmV2ZXJ0ZWQgcGF0Y2hlczoKKworICAgICAgICBSZW1vdmUgQ2FjaGVk
UmVzb3VyY2VMb2FkZXI6OnNob3VsZERlZmVySW1hZ2VMb2FkIGNhbGxzIGluCisgICAgICAgIENh
Y2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0SW1hZ2UgYW5kCisgICAgICAgIENhY2hlZFJlc291
cmNlTG9hZGVyOjpyZWxvYWRJbWFnZXNJZk5vdERlZmVycmVkLiBUaGUgc2FtZSBjYWxsIGlzIG1h
ZGUKKyAgICAgICAgaW1tZWRpYXRlbHkgYWZ0ZXIgaW4gQ2FjaGVkSW1hZ2U6OmxvYWQsIHNvIHRo
ZXkgYXJlIG5vdCBuZWNlc3NhcnkuCisKKyAgICAgICAgUmVtb3ZlZCB1bm5lY2Vzc2FyeSBGcmFt
ZS5oIGluY2x1ZGVzIGluIENhY2hlZFJlc291cmNlIGFuZAorICAgICAgICBDYWNoZWRJbWFnZS4K
KworICAgICAgICBSZW1vdmVkIGRlYWQgbG9hZCgpIG1ldGhvZCBkZWNsYXJhdGlvbiBpbiBDYWNo
ZWRJbWFnZS4KKworICAgICAgICBVcGRhdGVkIHRleHQgZXhwZWN0YXRpb24gZm9yIHR3byBpbWFn
ZS1wZXJtaXNzaW9ucyB0ZXN0cyB0byByZWZsZWN0CisgICAgICAgIHRoZSByZW1vdmVkIGNhbGxz
IHRvIGFsbG93SW1hZ2UuCisKKyAgICAgICAgKiBmYXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVu
c2V0LWFsbG93cy1jYWNoZWQtaW1hZ2UtbG9hZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvbG9hZGVyL2Rpc3BsYXktaW1hZ2UtdW5zZXQtYWxsb3dzLWNhY2hlZC1pbWFnZS1s
b2FkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbG9hZGVyL2Rpc3BsYXktaW1hZ2UtdW5z
ZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1jYW4tcmVsb2FkLWluLXBsYWNlLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZmFzdC9sb2FkZXIvZGlzcGxheS1pbWFnZS11bnNldC1jYW4tYmxv
Y2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9sb2FkZXIvaW1hZ2VzLWVuYWJsZWQtdW5zZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1jYW4t
cmVsb2FkLWluLXBsYWNlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9sb2Fk
ZXIvaW1hZ2VzLWVuYWJsZWQtdW5zZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1jYW4tcmVsb2FkLWlu
LXBsYWNlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbG9hZGVyL3Jlc291cmNlcy9pbWFn
ZTEuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9sb2FkZXIvcmVzb3VyY2VzL2ltYWdlMi5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9wZXJtaXNzaW9uY2xpZW50
L2ltYWdlLXBlcm1pc3Npb25zLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJv
bWl1bS9wZXJtaXNzaW9uY2xpZW50L2ltYWdlLXBlcm1pc3Npb25zLmh0bWw6CisgICAgICAgICog
cGxhdGZvcm0vY2hyb21pdW0vcGVybWlzc2lvbmNsaWVudC9yZXNvdXJjZXMvaW1hZ2UuaHRtbDoK
KyAgICAgICAgKiBwbGF0Zm9ybS93azIvU2tpcHBlZDoKKwogMjAxMi0wOS0xOSAgWmFuIERvYmVy
c2VrICA8emFuZG9iZXJzZWtAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgR1RLIGdh
cmRlbmluZy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2Rpc3BsYXktaW1h
Z2UtdW5zZXQtYWxsb3dzLWNhY2hlZC1pbWFnZS1sb2FkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Zhc3QvbG9hZGVyL2Rpc3BsYXktaW1hZ2UtdW5zZXQtYWxsb3dzLWNhY2hlZC1pbWFnZS1s
b2FkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTE1YWFjMGM1MTVlODA1NmFiM2NjYzk1MTkw
MzczMzI4ZjgzN2Y4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIv
ZGlzcGxheS1pbWFnZS11bnNldC1hbGxvd3MtY2FjaGVkLWltYWdlLWxvYWQtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMiBAQAorVGVzdCB0aGF0IFdlYktpdERpc3BsYXlJbWFnZXNLZXkgdW5zZXQg
ZG9lcyBub3QgYmxvY2sgaW1hZ2UgaW4gY2FjaGUuCitQQVNTCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0LWFsbG93cy1jYWNoZWQtaW1hZ2Ut
bG9hZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZGlzcGxheS1pbWFnZS11bnNldC1h
bGxvd3MtY2FjaGVkLWltYWdlLWxvYWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOGQ3MDNkNTA0ZWFhNDVi
M2Y0ZWZmZWQwYjQ3YjQ3N2U0ODE4ZmQ3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9sb2FkZXIvZGlzcGxheS1pbWFnZS11bnNldC1hbGxvd3MtY2FjaGVkLWltYWdlLWxvYWQu
aHRtbApAQCAtMCwwICsxLDM5IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKy8vIE9wZW5z
IHR3byB3aW5kb3dzIGNvbnRhaW5pbmcgdGhlIHNhbWUgaW1hZ2UuIEZpcnN0IHdpbmRvdyB3aWxs
IHBvcHVsYXRlIHRoZSBjYWNoZSB3aXRoCisvLyBpbWFnZS4gVGhlIHNlY29uZCB3aW5kb3cgaXMg
b3BlbmVkIHdpdGggV2ViS2l0RGlzcGxheUltYWdlc0tleSB1bnNldCwgYnV0IGltYWdlIHNob3Vs
ZAorLy8gc3RpbGwgbG9hZCBzaW5jZSBpdCBpcyBpbiBjYWNoZS4KK2Z1bmN0aW9uIHJ1blRlc3Qo
KQoreworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgICAg
IHRlc3RSdW5uZXIuc2V0Q2FuT3BlbldpbmRvd3MoKTsKKyAgICAgICAgdGVzdFJ1bm5lci5vdmVy
cmlkZVByZWZlcmVuY2UoIldlYktpdFVzZXNQYWdlQ2FjaGVQcmVmZXJlbmNlS2V5IiwgMSk7CisK
KyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9ICdG
QUlMVVJFOiBpbWFnZTEuaHRtbCBub3QgbG9hZGVkJzsKKyAgICAgICAgd2luZG93Lm9wZW4oInJl
c291cmNlcy9pbWFnZTEuaHRtbCIsICJfYmxhbmsiKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGlt
YWdlMUxvYWRlZCgpCit7CisgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoJ1dlYktp
dERpc3BsYXlJbWFnZXNLZXknLCAwKTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVz
dWx0JykuaW5uZXJIVE1MID0gJ0ZBSUxVUkU6IGltYWdlMi5odG1sIG5vdCBsb2FkZWQnOworICAg
IHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkge3dpbmRvdy5vcGVuKCJyZXNvdXJjZXMvaW1h
Z2UyLmh0bWwiLCAiX2JsYW5rIik7fSwgMCk7Cit9CisKK2Z1bmN0aW9uIGltYWdlMkxvYWRlZCgp
Cit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9ICdQ
QVNTJzsKKwkJdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KK1Rlc3QgdGhhdCBXZWJLaXREaXNwbGF5SW1hZ2Vz
S2V5IHVuc2V0IGRvZXMgbm90IGJsb2NrIGltYWdlIGluIGNhY2hlLgorPGRpdiBpZD0icmVzdWx0
Ij5GQUlMVVJFOiBUZXN0IHNjcmlwdCBkaWRuJ3QgcnVuLjwvZGl2PgorPC9ib2R5PgorPC9odG1s
PgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVu
c2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0LWNhbi1ibG9jay1p
bWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2E5
ZWY1MzQ3OWI4YjVhYTRiNDY0ZjY1N2YyYWNmN2U1YmI0NDdkMgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2Rpc3BsYXktaW1hZ2UtdW5zZXQtY2FuLWJsb2NrLWlt
YWdlLWFuZC1jYW4tcmVsb2FkLWluLXBsYWNlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAK
K1Rlc3QgdGhhdCBEaXNwbGF5SW1hZ2VzIGRpc2FibGVkIGNhbiBibG9jayBodHRwIGltYWdlIGFu
ZCBjYW4gYmUgcmVsb2FkZWQgaW4tcGxhY2Ugd2hlbiB0b2dnbGVkLgorU1VDQ0VTUworCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0LWNhbi1i
bG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9sb2FkZXIvZGlzcGxheS1pbWFnZS11bnNldC1jYW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxv
YWQtaW4tcGxhY2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMTJmNTA5ZDU0M2I3YTVhN2Q0N2QxOTFiNzg4
NjYzZTZkMjYxOTc3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIv
ZGlzcGxheS1pbWFnZS11bnNldC1jYW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxh
Y2UuaHRtbApAQCAtMCwwICsxLDQ3IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKy8vIFNl
dHRpbmcgV2ViS2l0RGlzcGxheUltYWdlc0tleSBpcyBhc3luY2hyb25vdXMsIHNvIHVzaW5nIHF1
ZXVlUmVsb2FkIGFuZCBzZXRJbnRlcnZhbCB0byBjaGVjayB3aGVuIHRoZSBzZXR0aW5nIGFjdHVh
bGx5IHRha2UgZWZmZWN0LgorCit2YXIgaW50ZXJ2YWxJZDsKK3ZhciBpbWFnZU9ubG9hZEZpcmVk
ID0gMDsKKworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7CisgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRJbWFnZXNFbmFibGVkKHRy
dWUpOworICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCdXZWJLaXREaXNwbGF5SW1h
Z2VzS2V5JywgMCk7CisgICAgdGVzdFJ1bm5lci5xdWV1ZVJlbG9hZCgpOworfQorCitmdW5jdGlv
biBydW5UZXN0KCkKK3sKKyAgICB2YXIgaW1hZ2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
aW1hZ2UnKTsKKyAgICBpZiAoaW1hZ2UubmF0dXJhbEhlaWdodCAhPSAwIHx8IGltYWdlLm5hdHVy
YWxXaWR0aCAhPSAwIHx8IGltYWdlT25sb2FkRmlyZWQgIT0gMCkgeworICAgICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1MID0gJ0ZBSUxVUkU6IEltYWdlIHNo
b3VsZCBub3QgYmUgbG9hZGVkIHdoZW4gRGlzcGxheUltYWdlIGlzIHVuc2V0JzsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCdXZWJL
aXREaXNwbGF5SW1hZ2VzS2V5JywgMSk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jl
c3VsdCcpLmlubmVySFRNTCA9ICdGQUlMVVJFOiBJbWFnZSBzaG91bGQgcmVsb2FkIGluLXBsYWNl
IHdoZW4gRGlzcGFseUltYWdlIGlzIGNoYW5nZXMgZnJvbSB1bnNldCB0byBzZXQnOworICAgIHRl
c3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIGludGVydmFsSWQgPSB3aW5kb3cuc2V0SW50
ZXJ2YWwocnVuVGVzdFJlc3QsIDEwKTsKK30KKworZnVuY3Rpb24gcnVuVGVzdFJlc3QoKQorewor
ICAgIHZhciBpbWFnZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbWFnZScpOworICAgIGlm
IChpbWFnZS5uYXR1cmFsSGVpZ2h0ID09IDMzICYmIGltYWdlLm5hdHVyYWxXaWR0aCA9PSAzNyAm
JiBpbWFnZU9ubG9hZEZpcmVkID09IDEpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9ICdTVUNDRVNTJzsKKyAgICAgICAgd2luZG93LmNsZWFy
SW50ZXJ2YWwoaW50ZXJ2YWxJZCk7CisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwor
ICAgIH0KK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgor
ICBUZXN0IHRoYXQgRGlzcGxheUltYWdlcyBkaXNhYmxlZCBjYW4gYmxvY2sgaHR0cCBpbWFnZSBh
bmQgY2FuIGJlIHJlbG9hZGVkIGluLXBsYWNlIHdoZW4gdG9nZ2xlZC4KKyAgPGRpdiBpZD0icmVz
dWx0Ij5GQUlMVVJFOiBUZXN0IHNjcmlwdCBkaWRuJ3QgcnVuLjwvZGl2PgorICA8aW1nIGlkPSJp
bWFnZSIgc3JjPSIuLi9pbWFnZXMvcmVzb3VyY2VzL292YWwucG5nIiBvbmxvYWQ9ImltYWdlT25s
b2FkRmlyZWQ9MTsiPgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2xvYWRlci9pbWFnZXMtZW5hYmxlZC11bnNldC1jYW4tYmxvY2staW1hZ2UtYW5kLWNh
bi1yZWxvYWQtaW4tcGxhY2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIv
aW1hZ2VzLWVuYWJsZWQtdW5zZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1jYW4tcmVsb2FkLWluLXBs
YWNlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NTFkNDYwMWNjYzNjYTE4ZDhjZmQ1YTk2OTc4
MTExZmZiMGM2MDIwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIv
aW1hZ2VzLWVuYWJsZWQtdW5zZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1jYW4tcmVsb2FkLWluLXBs
YWNlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKK1Rlc3QgdGhhdCBFbmFibGVJbWFnZXMg
dW5zZXQgY2FuIGJsb2NrIGltYWdlIGFuZCBjYW4gYmUgcmVsb2FkZWQgaW4tcGxhY2Ugd2hlbiB0
b2dnbGVkLgorU1VDQ0VTUworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9p
bWFnZXMtZW5hYmxlZC11bnNldC1jYW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxh
Y2UuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2ltYWdlcy1lbmFibGVkLXVuc2V0LWNh
bi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNm
NDhlNjI4ZGRkNjBkNWJhZmEyYjE0ZjA4MzYwYjRiNmU2YTY2M2MKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9pbWFnZXMtZW5hYmxlZC11bnNldC1jYW4tYmxvY2st
aW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UuaHRtbApAQCAtMCwwICsxLDQ3IEBACis8aHRt
bD4KKzxoZWFkPgorPHNjcmlwdD4KKy8vIFNldHRpbmcgSW1hZ2VzRW5hYmxlZCBpcyBhc3luY2hy
b25vdXMsIHNvIHVzaW5nIHF1ZXVlUmVsb2FkIGFuZCBzZXRJbnRlcnZhbCB0byBjaGVjayB3aGVu
IHRoZSBzZXR0aW5nIGFjdHVhbGx5IHRha2UgZWZmZWN0LgorCit2YXIgaW50ZXJ2YWxJZDsKK3Zh
ciBpbWFnZU9ubG9hZEZpcmVkID0gMDsKKworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVu
Y2UoJ1dlYktpdERpc3BsYXlJbWFnZXNLZXknLCAxKTsKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNl
dHRpbmdzLnNldEltYWdlc0VuYWJsZWQoZmFsc2UpOworICAgIHRlc3RSdW5uZXIucXVldWVSZWxv
YWQoKTsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgdmFyIGltYWdlID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2ltYWdlJyk7CisgICAgaWYgKGltYWdlLm5hdHVyYWxIZWlnaHQg
IT0gMCB8fCBpbWFnZS5uYXR1cmFsV2lkdGggIT0gMCB8fCBpbWFnZU9ubG9hZEZpcmVkICE9IDAp
IHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9
ICdGQUlMVVJFOiBJbWFnZSBzaG91bGQgbm90IGJlIGxvYWRlZCB3aGVuIEltYWdlc0VuYWJsZWQg
aXMgdW5zZXQnOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgd2luZG93LmludGVybmFs
cy5zZXR0aW5ncy5zZXRJbWFnZXNFbmFibGVkKHRydWUpOworICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSAnRkFJTFVSRTogSW1hZ2Ugc2hvdWxkIHJlbG9h
ZCBpbi1wbGFjZSB3aGVuIEltYWdlc0VuYWJsZWQgaXMgY2hhbmdlcyBmcm9tIHVuc2V0IHRvIHNl
dCc7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgaW50ZXJ2YWxJZCA9IHdp
bmRvdy5zZXRJbnRlcnZhbChydW5UZXN0UmVzdCwgMTApOworfQorCitmdW5jdGlvbiBydW5UZXN0
UmVzdCgpCit7CisgICAgdmFyIGltYWdlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ltYWdl
Jyk7CisgICAgaWYgKGltYWdlLm5hdHVyYWxIZWlnaHQgPT0gMzMgJiYgaW1hZ2UubmF0dXJhbFdp
ZHRoID09IDM3IHx8IGltYWdlT25sb2FkRmlyZWQgPT0gMSkgeworICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1MID0gJ1NVQ0NFU1MnOworICAgICAgICB3
aW5kb3cuY2xlYXJJbnRlcnZhbChpbnRlcnZhbElkKTsKKyAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7CisgICAgfQorfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1
blRlc3QoKSI+CisgIFRlc3QgdGhhdCBFbmFibGVJbWFnZXMgdW5zZXQgY2FuIGJsb2NrIGltYWdl
IGFuZCBjYW4gYmUgcmVsb2FkZWQgaW4tcGxhY2Ugd2hlbiB0b2dnbGVkLgorICA8ZGl2IGlkPSJy
ZXN1bHQiPkZBSUxVUkU6IFRlc3Qgc2NyaXB0IGRpZG4ndCBydW4uPC9kaXY+CisgIDxpbWcgaWQ9
ImltYWdlIiBzcmM9Ii4uL2ltYWdlcy9yZXNvdXJjZXMvb3ZhbC5wbmciIG9ubG9hZD0iaW1hZ2VP
bmxvYWRGaXJlZD0xOyI+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvbG9hZGVyL3Jlc291cmNlcy9pbWFnZTEuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
bG9hZGVyL3Jlc291cmNlcy9pbWFnZTEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZDY5ZGMzYzJhMGQ2YTE1
ZTA4OTYzNzkxMDMyNTRmNWVhYTM0ZGMxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9sb2FkZXIvcmVzb3VyY2VzL2ltYWdlMS5odG1sCkBAIC0wLDAgKzEsNSBAQAorPGh0bWw+
Cis8Ym9keT4KKyAgPGltZyBzcmM9Ii4uLy4uL2ltYWdlcy9yZXNvdXJjZXMvb3ZhbC5wbmciIG9u
bG9hZD0id2luZG93Lm9wZW5lci5pbWFnZTFMb2FkZWQoKTsiPgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvcmVzb3VyY2VzL2ltYWdlMi5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvcmVzb3VyY2VzL2ltYWdlMi5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmMwMzdmZmYwY2U2NTY3NzdjYzAyZThhZTZjYzgxY2Y2ZWE0NDJhYWMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9yZXNvdXJjZXMvaW1hZ2UyLmh0bWwKQEAg
LTAsMCArMSw1IEBACis8aHRtbD4KKzxib2R5PgorICA8aW1nIHNyYz0iLi4vLi4vaW1hZ2VzL3Jl
c291cmNlcy9vdmFsLnBuZyIgb25sb2FkPSJ3aW5kb3cub3BlbmVyLmltYWdlMkxvYWRlZCgpOyI+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9wZXJtaXNzaW9uY2xpZW50L2ltYWdlLXBlcm1pc3Npb25zLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Blcm1pc3Npb25jbGllbnQvaW1hZ2UtcGVybWlz
c2lvbnMtZXhwZWN0ZWQudHh0CmluZGV4IDYwZTc2YTUyM2FkZjI2NDQ2NTMzNTgyOTZmN2NiOWVi
NDM4ZDNmOWYuLjY3YTFlNTExYjc1NmUzYjRlMDVlNGNiOTdmOTJhNTViYTQwMGU3ZTcgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Blcm1pc3Npb25jbGllbnQvaW1h
Z2UtcGVybWlzc2lvbnMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL3Blcm1pc3Npb25jbGllbnQvaW1hZ2UtcGVybWlzc2lvbnMtZXhwZWN0ZWQudHh0CkBA
IC0xLDEwICsxLDEzIEBACiBQRVJNSVNTSU9OIENMSUVOVDogYWxsb3dJbWFnZSgoZmlsZSB0ZXN0
KTpwbGF0Zm9ybS9jaHJvbWl1bS9wZXJtaXNzaW9uY2xpZW50L3Jlc291cmNlcy9ib3N0b24uZ2lm
KTogdHJ1ZQogUEVSTUlTU0lPTiBDTElFTlQ6IGFsbG93SW1hZ2UoKGZpbGUgdGVzdCk6cGxhdGZv
cm0vY2hyb21pdW0vcGVybWlzc2lvbmNsaWVudC9yZXNvdXJjZXMvYm9zdG9uLmdpZj9ub2NhY2hl
KTogZmFsc2UKK1BFUk1JU1NJT04gQ0xJRU5UOiBhbGxvd0ltYWdlKChmaWxlIHRlc3QpOnBsYXRm
b3JtL2Nocm9taXVtL3Blcm1pc3Npb25jbGllbnQvcmVzb3VyY2VzL2Jvc3Rvbi5naWY/bm9jYWNo
ZSk6IGZhbHNlCitQRVJNSVNTSU9OIENMSUVOVDogYWxsb3dJbWFnZSgoZmlsZSB0ZXN0KTpwbGF0
Zm9ybS9jaHJvbWl1bS9wZXJtaXNzaW9uY2xpZW50L3Jlc291cmNlcy9ib3N0b24uZ2lmKTogZmFs
c2UKK1BFUk1JU1NJT04gQ0xJRU5UOiBhbGxvd0ltYWdlKChmaWxlIHRlc3QpOnBsYXRmb3JtL2No
cm9taXVtL3Blcm1pc3Npb25jbGllbnQvcmVzb3VyY2VzL2Jvc3Rvbi5naWYpOiBmYWxzZQorUEVS
TUlTU0lPTiBDTElFTlQ6IGFsbG93SW1hZ2UoKGZpbGUgdGVzdCk6cGxhdGZvcm0vY2hyb21pdW0v
cGVybWlzc2lvbmNsaWVudC9yZXNvdXJjZXMvYm9zdG9uLmdpZik6IGZhbHNlCitQRVJNSVNTSU9O
IENMSUVOVDogYWxsb3dJbWFnZSgoZmlsZSB0ZXN0KTpwbGF0Zm9ybS9jaHJvbWl1bS9wZXJtaXNz
aW9uY2xpZW50L3Jlc291cmNlcy9ib3N0b24uZ2lmKTogZmFsc2UKIFBFUk1JU1NJT04gQ0xJRU5U
OiBhbGxvd0ltYWdlKChmaWxlIHRlc3QpOnBsYXRmb3JtL2Nocm9taXVtL3Blcm1pc3Npb25jbGll
bnQvcmVzb3VyY2VzL2Jvc3Rvbi5naWYpOiBmYWxzZQogUEVSTUlTU0lPTiBDTElFTlQ6IGFsbG93
SW1hZ2UoKGZpbGUgdGVzdCk6cGxhdGZvcm0vY2hyb21pdW0vcGVybWlzc2lvbmNsaWVudC9yZXNv
dXJjZXMvYm9zdG9uLmdpZik6IGZhbHNlCiAKIAogUEFTUzogZmlyc3QgaW1hZ2UgbG9hZGVkCi1Q
QVNTOiBlcnJvciBldmVudCBmb3Igbm90IGNhY2hlZCBpbWFnZQotUEFTUzogZXJyb3IgZXZlbnQg
Zm9yIGltYWdlIGZyb20gY2FjaGUKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vcGVybWlzc2lvbmNsaWVudC9pbWFnZS1wZXJtaXNzaW9ucy5odG1sIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vcGVybWlzc2lvbmNsaWVudC9pbWFnZS1wZXJtaXNzaW9u
cy5odG1sCmluZGV4IDdiNWUyYzU3NWM5ODk3NGFjMDhmODdlOWY4YzEyMDcxMGFkYmZlZjAuLmY1
N2EzYjcwNzA0MzMwOWMyZmFiMmZmOTJjM2U5ZTJjNmU0MTk2NDcgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Blcm1pc3Npb25jbGllbnQvaW1hZ2UtcGVybWlzc2lv
bnMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9wZXJtaXNzaW9uY2xp
ZW50L2ltYWdlLXBlcm1pc3Npb25zLmh0bWwKQEAgLTEsNiArMSw5IEBACiA8aHRtbD4KIDxoZWFk
PgogPHNjcmlwdD4KKy8vIEJsb2NrZWQgaW1hZ2VzIGNhbiBiZSByZWxvYWRlZCwgc28gbmVpdGhl
ciBvbmxvYWQgbm9yIG9uZXJyb3IgaXMgY2FsbGVkLgorLy8gT25seSBjaGVjayBoZXJlIHRoYXQg
b25sb2FkIGlzIG5ldmVyIGNhbGxlZCB3aGVuIGltYWdlIGlzIGJsb2NrZWQuCisKIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikgewogICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgIHRlc3RS
dW5uZXIuZHVtcFBlcm1pc3Npb25DbGllbnRDYWxsYmFja3MoKTsKQEAgLTIxLDE0ICsyNCwxMiBA
QCBmdW5jdGlvbiBsb2FkZWQoKQogCiAgICAgLy8gTG9hZCBhbiBpbWFnZSBub3QgaW4gY2FjaGUu
CiAgICAgdmFyIGltZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2ltZycpOwotICAgIGltZy5v
bmVycm9yID0gZnVuY3Rpb24gKCkgeyBsb2coIlBBU1M6IGVycm9yIGV2ZW50IGZvciBub3QgY2Fj
aGVkIGltYWdlIik7IH0KICAgICBpbWcub25sb2FkID0gZnVuY3Rpb24gKCkgeyBsb2coIkZBSUw6
IG5vdCBjYWNoZWQgaW1hZ2UgbG9hZGVkIik7IH0KICAgICBpbWcuc3JjID0gInJlc291cmNlcy9i
b3N0b24uZ2lmP25vY2FjaGUiOwogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbWciKS5h
cHBlbmRDaGlsZChpbWcpOwogCiAgICAgLy8gTG9hZCBhbiBpbWFnZSBmcm9tIGNhY2hlLgogICAg
IHZhciBpbWdGcm9tQ2FjaGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbWcnKTsKLSAgICBp
bWdGcm9tQ2FjaGUub25lcnJvciA9IGZ1bmN0aW9uICgpIHsgbG9nKCJQQVNTOiBlcnJvciBldmVu
dCBmb3IgaW1hZ2UgZnJvbSBjYWNoZSIpOyB9CiAgICAgaW1nRnJvbUNhY2hlLm9ubG9hZCA9IGZ1
bmN0aW9uICgpIHsgbG9nKCJGQUlMOiBpbWFnZSBmcm9tIGNhY2hlIGxvYWRlZCIpOyB9CiAgICAg
aW1nRnJvbUNhY2hlLnNyYyA9ICJyZXNvdXJjZXMvYm9zdG9uLmdpZiI7CiAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImltZyIpLmFwcGVuZENoaWxkKGltZ0Zyb21DYWNoZSk7CkBAIC00MSw3
ICs0Miw3IEBAIGZ1bmN0aW9uIGxvYWRlZCgpCiA8L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5Pgot
PGltZyBzcmM9InJlc291cmNlcy9ib3N0b24uZ2lmIiBvbmxvYWQ9ImxvYWRlZCgpIiBvbmVycm9y
PSJsb2coJ0ZBSUw6IGVycm9yIGV2ZW50IGZvciBmaXJzdCBpbWFnZScpIj4KKzxpbWcgc3JjPSJy
ZXNvdXJjZXMvYm9zdG9uLmdpZiIgb25sb2FkPSJsb2FkZWQoKSI+CiA8ZGl2IGlkPSJpbWciPjwv
ZGl2PgogPGRpdiBpZD0icmVzdWx0cyI+PC9kaXY+CiA8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9wZXJtaXNzaW9uY2xpZW50L3Jlc291cmNlcy9pbWFn
ZS5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vcGVybWlzc2lvbmNsaWVudC9y
ZXNvdXJjZXMvaW1hZ2UuaHRtbAppbmRleCBlMmFkZmUzZjBiNjIxYWE4ZDlmZjRlMTkwYzkwMjIz
MDVjYzA3MGViLi4yMzk3NzE3MTAxZGVkNDQwYTMyOTU1ODI2ZTg0MWNkMWNkNjIzZjk3IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9wZXJtaXNzaW9uY2xpZW50L3Jl
c291cmNlcy9pbWFnZS5odG1sCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Bl
cm1pc3Npb25jbGllbnQvcmVzb3VyY2VzL2ltYWdlLmh0bWwKQEAgLTgsNyArOCw3IEBAIGZ1bmN0
aW9uIGxvZyhhKQogPC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxpbWcgc3JjPSJib3N0b24u
Z2lmIiBvbmxvYWQ9ImxvZygnRkFJTDogbG9hZCBldmVudCBmb3IgaWZyYW1lZCBpbWFnZSkiIG9u
ZXJyb3I9ImxvZygnRkFJTDogZXJyb3IgZXZlbnQgZm9yIGlmcmFtZWQgaW1hZ2UnKSI+Cis8aW1n
IHNyYz0iYm9zdG9uLmdpZiIgb25sb2FkPSJsb2coJ0ZBSUw6IGxvYWQgZXZlbnQgZm9yIGlmcmFt
ZWQgaW1hZ2UnKSI+CiA8ZGl2IGlkPSJyZXN1bHRzIj48L2Rpdj4KIDwvYm9keT4KIDwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9Ta2lwcGVkIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vd2syL1NraXBwZWQKaW5kZXggMTkxN2I2Y2VmYjM3OTllYmRhZDNlOTgwZjM1
NzY4MTZkODRkMDMxMS4uYzFkYWIyN2E0YTY2ZGEzZmQ1NjQwY2IzMDM4YWRjY2RhOThhMWExNiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1NraXBwZWQKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vd2syL1NraXBwZWQKQEAgLTIwMSw2ICsyMDEsNyBAQCBmYXN0L2NhbnZh
cy93ZWJnbC93ZWJnbC1hcnJheS1pbnZhbGlkLXJhbmdlcy5odG1sCiBmYXN0L2NhbnZhcy93ZWJn
bC93ZWJnbC1zcGVjaWZpYy5odG1sCiBmYXN0L2hhcm5lc3Mvb3ZlcnJpZGUtcHJlZmVyZW5jZXMt
Mi5odG1sCiBmYXN0L2ltYWdlcy9hbmltYXRlZC1naWYtcmVzdG9yZWQtZnJvbS1iZmNhY2hlLmh0
bWwKK2Zhc3QvbG9hZGVyL2Rpc3BsYXktaW1hZ2UtdW5zZXQtYWxsb3dzLWNhY2hlZC1pbWFnZS1s
b2FkLmh0bWwKIGZhc3QvdGV4dC96ZXJvLWZvbnQtc2l6ZS5odG1sCiAKICMgV2ViS2l0VGVzdFJ1
bm5lciBuZWVkcyB0byBzdXBwb3J0IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBET01Bc1dlYkFy
Y2hpdmUKQEAgLTMzOSw2ICszNDAsOCBAQCBzdmcvY3VzdG9tL3N2Zy1hbGxvd2VkLWluLWRhc2hi
b2FyZC1vYmplY3QuaHRtbAogIyA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQyNjcyPgogZmFzdC9jc3MvY29tcGFyZS1jb250ZW50LXN0eWxlLmh0bWwKIGZhc3QvZnJh
bWVzL2ZyYW1lLWRpc3BsYXktbm9uZS1mb2N1cy5odG1sCitmYXN0L2xvYWRlci9kaXNwbGF5LWlt
YWdlLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS5odG1sCitm
YXN0L2xvYWRlci9pbWFnZXMtZW5hYmxlZC11bnNldC1jYW4tYmxvY2staW1hZ2UtYW5kLWNhbi1y
ZWxvYWQtaW4tcGxhY2UuaHRtbAogZmFzdC9sb2FkZXIvcmVsb2FkLXBvbGljeS1kZWxlZ2F0ZS5o
dG1sCiAKICMgV2ViS2l0VGVzdFJ1bm5lciBuZWVkcyBsYXlvdXRUZXN0Q29udHJvbGxlci5xdWV1
ZUxvYWQKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA1YzNjYWRkMGFl
MzQ4MzMwMTUwZWE3Mzg3NTA2Yzk3ZDdlZDdhMjljLi43MzdkYjlhYzlmMzI5OTc2YTVjZWQ3NWI4
MWJlN2E5MzIxYjhhMDBhIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzAgQEAKKzIwMTItMDktMTggIEJvIExpdSAgPGJvbGl1QGNocm9taXVtLm9yZz4K
KworICAgICAgICBSZWxhbmQgIkFkZCBpbi1wbGFjZSByZWxvYWQgYmVoYXZpb3IgdG8gSW1hZ2Vz
RW5hYmxlZCBzZXR0aW5nIiB3aXRoIG9wdGltaXphdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3MDU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVsYW5kaW5nIDEyODc4MCwgMTI4Njc2LCAxMjg2
NDUuIFdhcyByZXZlcnRlZCBpbiAxMjg5MTQgZHVlIHRvCisgICAgICAgIHBlcmZvcm1hbmNlIHJl
Z3Jlc3Npb24gaW4gQ2hyb21pdW0uCisKKyAgICAgICAgTmV3IGNoYW5nZXMgaW4gYWRkaXRpb24g
dG8gcHJldmlvdXNseSByZXZlcnRlZCBwYXRjaGVzOgorCisgICAgICAgIFJlbW92ZSBDYWNoZWRS
ZXNvdXJjZUxvYWRlcjo6c2hvdWxkRGVmZXJJbWFnZUxvYWQgY2FsbHMgaW4KKyAgICAgICAgQ2Fj
aGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RJbWFnZSBhbmQKKyAgICAgICAgQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXI6OnJlbG9hZEltYWdlc0lmTm90RGVmZXJyZWQuIFRoZSBzYW1lIGNhbGwgaXMgbWFk
ZQorICAgICAgICBpbW1lZGlhdGVseSBhZnRlciBpbiBDYWNoZWRJbWFnZTo6bG9hZCwgc28gdGhl
eSBhcmUgbm90IG5lY2Vzc2FyeS4KKworICAgICAgICBSZW1vdmVkIHVubmVjZXNzYXJ5IEZyYW1l
LmggaW5jbHVkZXMgaW4gQ2FjaGVkUmVzb3VyY2UgYW5kCisgICAgICAgIENhY2hlZEltYWdlLgor
CisgICAgICAgIFJlbW92ZWQgZGVhZCBsb2FkKCkgbWV0aG9kIGRlY2xhcmF0aW9uIGluIENhY2hl
ZEltYWdlLgorCisgICAgICAgIFVwZGF0ZWQgdGV4dCBleHBlY3RhdGlvbiBmb3IgdHdvIGltYWdl
LXBlcm1pc3Npb25zIHRlc3RzIHRvIHJlZmxlY3QKKyAgICAgICAgdGhlIHJlbW92ZWQgY2FsbHMg
dG8gYWxsb3dJbWFnZS4KKworICAgICAgICAqIFNvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0
ZXI6CisKIDIwMTItMDktMTggIFNhaWxlc2ggQWdyYXdhbCAgPHNhaWxAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIENocm9taXVtOiBTY3JvbGxiYXIgd2l0aCB0aWNrbWFya3MgZG9lc24ndCByZXNw
b25kIHRvIGNsaWNrcwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164988</attachid>
            <date>2012-09-20 14:46:57 -0700</date>
            <delta_ts>2012-09-20 17:01:52 -0700</delta_ts>
            <desc>Do not call load for image in loadResource/revalidateResource</desc>
            <filename>bug-97055-20120920144622.patch</filename>
            <type>text/plain</type>
            <size>41807</size>
            <attacher name="Bo Liu">boliu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5MTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWQ2ZTA2NTdkOGJmZWRm
ZDRlMmJmNzlhZmE5MzE1MjE5ZGY0MzIxNS4uNDNjNDRlMDJkNmI2Y2Q1M2E4M2M2OTY1N2E5OWU0
ZmY4MGM0Zjc2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDEyLTA5LTE4ICBCbyBM
aXUgIDxib2xpdUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVsYW5kICJBZGQgaW4tcGxhY2Ug
cmVsb2FkIGJlaGF2aW9yIHRvIEltYWdlc0VuYWJsZWQgc2V0dGluZyIgd2l0aCBvcHRpbWl6YXRp
b25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzA1
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbGFu
ZGluZyAxMjg3ODAsIDEyODY3NiwgMTI4NjQ1LiBXYXMgcmV2ZXJ0ZWQgaW4gMTI4OTE0IGR1ZSB0
bworICAgICAgICBwZXJmb3JtYW5jZSByZWdyZXNzaW9uIGluIENocm9taXVtLgorCisgICAgICAg
IE5ldyBjaGFuZ2VzIGluIGFkZGl0aW9uIHRvIHByZXZpb3VzbHkgcmV2ZXJ0ZWQgcGF0Y2hlczoK
KworICAgICAgICBSZW1vdmUgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnNob3VsZERlZmVySW1hZ2VM
b2FkIGNhbGxzIGluCisgICAgICAgIENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0SW1hZ2Ug
YW5kCisgICAgICAgIENhY2hlZFJlc291cmNlTG9hZGVyOjpyZWxvYWRJbWFnZXNJZk5vdERlZmVy
cmVkLiBUaGUgc2FtZSBjYWxsIGlzIG1hZGUKKyAgICAgICAgaW1tZWRpYXRlbHkgYWZ0ZXIgaW4g
Q2FjaGVkSW1hZ2U6OmxvYWQsIHNvIHRoZXkgYXJlIG5vdCBuZWNlc3NhcnkuCisKKyAgICAgICAg
RG8gbm90IGNhbGwgbG9hZCBmb3IgaW1hZ2UgaW4gbG9hZFJlc291cmNlL3JldmFsaWRhdGVSZXNv
dXJjZSBzaW5jZQorICAgICAgICB0aGUgc2FtZSBjYWxsIGlzIG1hZGUgYWdhaW4gaW4gcmVxdWVz
dEltYWdlLgorCisgICAgICAgIFJlbW92ZWQgdW5uZWNlc3NhcnkgRnJhbWUuaCBpbmNsdWRlcyBp
biBDYWNoZWRSZXNvdXJjZSBhbmQKKyAgICAgICAgQ2FjaGVkSW1hZ2UuCisKKyAgICAgICAgUmVt
b3ZlZCBkZWFkIGxvYWQoKSBtZXRob2QgZGVjbGFyYXRpb24gaW4gQ2FjaGVkSW1hZ2UuCisKKyAg
ICAgICAgVXBkYXRlZCB0ZXh0IGV4cGVjdGF0aW9uIGZvciB0d28gaW1hZ2UtcGVybWlzc2lvbnMg
dGVzdHMgdG8gcmVmbGVjdAorICAgICAgICB0aGUgcmVtb3ZlZCBjYWxscyB0byBhbGxvd0ltYWdl
LgorCisgICAgICAgIFRlc3RzOiBmYXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0LWFsbG93
cy1jYWNoZWQtaW1hZ2UtbG9hZC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2xvYWRlci9kaXNw
bGF5LWltYWdlLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS5o
dG1sCisgICAgICAgICAgICAgICBmYXN0L2xvYWRlci9pbWFnZXMtZW5hYmxlZC11bnNldC1jYW4t
YmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UuaHRtbAorCisgICAgICAgICogV2Vi
Q29yZS5leHAuaW46CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkaWRCZWdpbkRvY3VtZW50KToKKyAgICAgICAgKiBsb2Fk
ZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VM
b2FkZXI6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZElt
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpsb2FkKToKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmRpZEFk
ZENsaWVudCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpzdGlsbE5l
ZWRzTG9hZCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpDYWNoZWRSZXNvdXJj
ZUxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVz
dEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpjYW5SZXF1
ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpkZXRlcm1pbmVS
ZXZhbGlkYXRpb25Qb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2Fk
ZXI6OnNldEF1dG9Mb2FkSW1hZ2VzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnNldEltYWdlc0VuYWJsZWQpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNsaWVudEFsbG93c0ltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpzaG91bGREZWZlckltYWdlTG9hZCk6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVsb2FkSW1hZ2VzSWZO
b3REZWZlcnJlZCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVy
Lmg6CisgICAgICAgIChDYWNoZWRSZXNvdXJjZUxvYWRlcik6CisgICAgICAgICogcGFnZS9TZXR0
aW5ncy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRJbWFnZUxvYWRpbmdTZXR0aW5ncyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6U2V0dGluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6
U2V0dGluZ3M6OnNldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseSk6CisgICAgICAgIChXZWJDb3Jl
OjpTZXR0aW5nczo6aW1hZ2VMb2FkaW5nU2V0dGluZ3NUaW1lckZpcmVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlNldHRpbmdzOjpzZXRJbWFnZXNFbmFibGVkKToKKyAgICAgICAgKiBwYWdlL1NldHRp
bmdzLmg6CisgICAgICAgIChTZXR0aW5ncyk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbFNl
dHRpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsU2V0dGluZ3M6OkJhY2t1cDo6
QmFja3VwKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsU2V0dGluZ3M6OkJhY2t1cDo6cmVz
dG9yZVRvKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsU2V0dGluZ3M6OnNldEltYWdlc0Vu
YWJsZWQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbFNl
dHRpbmdzLmg6CisgICAgICAgIChCYWNrdXApOgorICAgICAgICAoSW50ZXJuYWxTZXR0aW5ncyk6
CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbDoKKwogMjAxMi0wOS0yMCAg
QWRhbSBLbGVpbiAgPGFkYW1rQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZW5hbWUgQ29udGFp
bmVyTm9kZTo6cGFyc2VyQWRkQ2hpbGQgInBhcnNlckFwcGVuZENoaWxkIiBmb3IgY29uc2lzdGVu
Y3kKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwppbmRleCA4OGE1MmEyZmIyYWIwY2UzYTVjOTk0NTlmZjFiNDM4ZTE2MDFlYzY4
Li5iYTRjMWE4ZTQ4ODc2NDNmNWFlNDYyNzNhNGFmMmE5NTA2NzY3MmUzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzMgQEAKKzIwMTItMDktMTggIEJvIExpdSAgPGJvbGl1QGNocm9taXVtLm9yZz4K
KworICAgICAgICBSZWxhbmQgIkFkZCBpbi1wbGFjZSByZWxvYWQgYmVoYXZpb3IgdG8gSW1hZ2Vz
RW5hYmxlZCBzZXR0aW5nIiB3aXRoIG9wdGltaXphdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3MDU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVsYW5kaW5nIDEyODc4MCwgMTI4Njc2LCAxMjg2
NDUuIFdhcyByZXZlcnRlZCBpbiAxMjg5MTQgZHVlIHRvCisgICAgICAgIHBlcmZvcm1hbmNlIHJl
Z3Jlc3Npb24gaW4gQ2hyb21pdW0uCisKKyAgICAgICAgTmV3IGNoYW5nZXMgaW4gYWRkaXRpb24g
dG8gcHJldmlvdXNseSByZXZlcnRlZCBwYXRjaGVzOgorCisgICAgICAgIFJlbW92ZSBDYWNoZWRS
ZXNvdXJjZUxvYWRlcjo6c2hvdWxkRGVmZXJJbWFnZUxvYWQgY2FsbHMgaW4KKyAgICAgICAgQ2Fj
aGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RJbWFnZSBhbmQKKyAgICAgICAgQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXI6OnJlbG9hZEltYWdlc0lmTm90RGVmZXJyZWQuIFRoZSBzYW1lIGNhbGwgaXMgbWFk
ZQorICAgICAgICBpbW1lZGlhdGVseSBhZnRlciBpbiBDYWNoZWRJbWFnZTo6bG9hZCwgc28gdGhl
eSBhcmUgbm90IG5lY2Vzc2FyeS4KKworICAgICAgICBEbyBub3QgY2FsbCBsb2FkIGZvciBpbWFn
ZSBpbiBsb2FkUmVzb3VyY2UvcmV2YWxpZGF0ZVJlc291cmNlIHNpbmNlCisgICAgICAgIHRoZSBz
YW1lIGNhbGwgaXMgbWFkZSBhZ2FpbiBpbiByZXF1ZXN0SW1hZ2UuCisKKyAgICAgICAgUmVtb3Zl
ZCB1bm5lY2Vzc2FyeSBGcmFtZS5oIGluY2x1ZGVzIGluIENhY2hlZFJlc291cmNlIGFuZAorICAg
ICAgICBDYWNoZWRJbWFnZS4KKworICAgICAgICBSZW1vdmVkIGRlYWQgbG9hZCgpIG1ldGhvZCBk
ZWNsYXJhdGlvbiBpbiBDYWNoZWRJbWFnZS4KKworICAgICAgICBVcGRhdGVkIHRleHQgZXhwZWN0
YXRpb24gZm9yIHR3byBpbWFnZS1wZXJtaXNzaW9ucyB0ZXN0cyB0byByZWZsZWN0CisgICAgICAg
IHRoZSByZW1vdmVkIGNhbGxzIHRvIGFsbG93SW1hZ2UuCisKKyAgICAgICAgKiB3aW4vV2ViS2l0
Mi5kZWY6CisKIDIwMTItMDktMTcgIEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgogCiAgICAg
ICAgIFNhZmFyaSA2IG5vdGlmaWNhdGlvbnMnIG9uY2xpY2sgaGFuZGxlcnMgY2FuJ3QgY2FsbCB3
aW5kb3cub3BlbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IGRmZjgzMGQ1MDM4NDkyZmQyZGU0
MTBjZjI1ZjgzMjkzNzIyMDEwMzguLjdjMzY3MjY2OTBiMzNjMzczN2QzZjdiODc2NTUwNDM3ZmNm
YjcxMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC04NTIsNiArODUyLDcgQEAgX19aTjdXZWJD
b3JlOEdyYWRpZW50QzFFUktOU18xMEZsb2F0UG9pbnRFUzNfCiBfX1pON1dlYkNvcmU4UG9zaXRp
b25DMUVOM1dURjEwUGFzc1JlZlB0cklOU180Tm9kZUVFRWlOUzBfMTBBbmNob3JUeXBlRQogX19a
TjdXZWJDb3JlOFNldHRpbmdzMTRzZXRKYXZhRW5hYmxlZEViCiBfX1pON1dlYkNvcmU4U2V0dGlu
Z3MxNXNldFdlYkdMRW5hYmxlZEViCitfX1pON1dlYkNvcmU4U2V0dGluZ3MxNnNldEltYWdlc0Vu
YWJsZWRFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMTZzZXRTY3JpcHRFbmFibGVkRWIKIF9fWk43
V2ViQ29yZThTZXR0aW5nczE2c2V0VXNlc1BhZ2VDYWNoZUViCiBfX1pON1dlYkNvcmU4U2V0dGlu
Z3MxN3NldFBsdWdpbnNFbmFibGVkRWIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
CmluZGV4IGIyNmI2ZDRjYzIyZmFlNzU3OGQwNDRmNjEwNTE2MTkyNGIwNmZjNWYuLjQxNzcyY2Fl
ZThkMmQ5MzJkZDNmNmJlYzJhOGJiYWZjMGRjZTVmMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcApAQCAtNjQ3LDYgKzY0Nyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmRpZEJl
Z2luRG9jdW1lbnQoYm9vbCBkaXNwYXRjaCkKICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5pbml0
Q29udGVudFNlY3VyaXR5UG9saWN5KCk7CiAKICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBtX2Zy
YW1lLT5kb2N1bWVudCgpLT5zZXR0aW5ncygpOworICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmNh
Y2hlZFJlc291cmNlTG9hZGVyKCktPnNldEltYWdlc0VuYWJsZWQoIXNldHRpbmdzIHx8IHNldHRp
bmdzLT5hcmVJbWFnZXNFbmFibGVkKCkpOwogICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmNhY2hl
ZFJlc291cmNlTG9hZGVyKCktPnNldEF1dG9Mb2FkSW1hZ2VzKHNldHRpbmdzICYmIHNldHRpbmdz
LT5sb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoKSk7CiAKICAgICBpZiAobV9kb2N1bWVudExvYWRl
cikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKaW5kZXgg
ZmYzYmU2ZWRmZjhiOTdmYzU1YTA4NDhiNGMxYWYwMmYwODFiNDYxNi4uNTZkZTBkMzQxMzNjM2Y1
YTQ3MmJmYzJiYzZmNGU1Y2RmMzgzMDNmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
cmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xNjcsMTEgKzE2NywxMyBAQCB2b2lkIFN1YnJlc291cmNl
TG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0LCBjb25z
dCBSZXNvdQogICAgIAogICAgIFJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QobmV3UmVx
dWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CiAgICAgaWYgKCFwcmV2aW91c1VSTC5pc051bGwoKSAm
JiAhbmV3UmVxdWVzdC5pc051bGwoKSAmJiBwcmV2aW91c1VSTCAhPSBuZXdSZXF1ZXN0LnVybCgp
KSB7Ci0gICAgICAgIGlmICghbV9kb2N1bWVudC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+Y2Fu
UmVxdWVzdChtX3Jlc291cmNlLT50eXBlKCksIG5ld1JlcXVlc3QudXJsKCkpKSB7Ci0gICAgICAg
ICAgICBjYW5jZWwoKTsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKG1fZG9jdW1l
bnQtPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPmNhblJlcXVlc3QobV9yZXNvdXJjZS0+dHlwZSgp
LCBuZXdSZXF1ZXN0LnVybCgpKSkgeworICAgICAgICAgICAgaWYgKG1fcmVzb3VyY2UtPnR5cGUo
KSAhPSBDYWNoZWRSZXNvdXJjZTo6SW1hZ2VSZXNvdXJjZSB8fCAhbV9kb2N1bWVudC0+Y2FjaGVk
UmVzb3VyY2VMb2FkZXIoKS0+c2hvdWxkRGVmZXJJbWFnZUxvYWQobmV3UmVxdWVzdC51cmwoKSkp
IHsKKyAgICAgICAgICAgICAgICBtX3Jlc291cmNlLT53aWxsU2VuZFJlcXVlc3QobmV3UmVxdWVz
dCwgcmVkaXJlY3RSZXNwb25zZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgfQogICAgICAgICB9Ci0gICAgICAgIG1fcmVzb3VyY2UtPndpbGxTZW5kUmVxdWVzdChuZXdS
ZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKKyAgICAgICAgY2FuY2VsKCk7CiAgICAgfQogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAppbmRleCA0MzE2
NjE2YjM2NDUzYTIwODY1ZTRkMmQ2ZTAyODkzMGFmMTZiOWQzLi5iMGE3YTAzM2JhNGVjODc2YzFm
MTc2OTM4MmNiYjI4OTY5YTc5NWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRJbWFnZS5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJj
ZUNsaWVudC5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyLmgiCiAjaW5j
bHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKLSNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1
ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJUeXBlcy5oIgog
I2luY2x1ZGUgIkZyYW1lVmlldy5oIgpAQCAtNzksNyArNzgsNyBAQCBDYWNoZWRJbWFnZTo6fkNh
Y2hlZEltYWdlKCkKIAogdm9pZCBDYWNoZWRJbWFnZTo6bG9hZChDYWNoZWRSZXNvdXJjZUxvYWRl
ciogY2FjaGVkUmVzb3VyY2VMb2FkZXIsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0
aW9ucykKIHsKLSAgICBpZiAoIWNhY2hlZFJlc291cmNlTG9hZGVyIHx8IGNhY2hlZFJlc291cmNl
TG9hZGVyLT5hdXRvTG9hZEltYWdlcygpKQorICAgIGlmICghY2FjaGVkUmVzb3VyY2VMb2FkZXIg
fHwgIWNhY2hlZFJlc291cmNlTG9hZGVyLT5zaG91bGREZWZlckltYWdlTG9hZChtX3Jlc291cmNl
UmVxdWVzdC51cmwoKSkpCiAgICAgICAgIENhY2hlZFJlc291cmNlOjpsb2FkKGNhY2hlZFJlc291
cmNlTG9hZGVyLCBvcHRpb25zKTsKICAgICBlbHNlCiAgICAgICAgIHNldExvYWRpbmcoZmFsc2Up
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAppbmRleCA0ODY1Yzdl
MjQ2NjViYTYzOWIwZTFhOTZiYzYyNTI2MGQ3M2FkMDFiLi4wNzhmN2FiMWM2MmZmODZiODE1Yjlm
MDY1NDYzMGQzNjAxOTI5M2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
SW1hZ2UuaApAQCAtODIsOCArODIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNob3Vs
ZElnbm9yZUhUVFBTdGF0dXNDb2RlRXJyb3JzKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiAg
ICAgdmlydHVhbCBib29sIGlzSW1hZ2UoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgYm9v
bCBzdGlsbE5lZWRzTG9hZCgpIGNvbnN0IHsgcmV0dXJuICFlcnJvck9jY3VycmVkKCkgJiYgc3Rh
dHVzKCkgPT0gVW5rbm93biAmJiAhaXNMb2FkaW5nKCk7IH0KLSAgICB2b2lkIGxvYWQoKTsKKyAg
ICB2aXJ0dWFsIGJvb2wgc3RpbGxOZWVkc0xvYWQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiAh
ZXJyb3JPY2N1cnJlZCgpICYmIHN0YXR1cygpID09IFVua25vd24gJiYgIWlzTG9hZGluZygpOyB9
CiAKICAgICAvLyBJbWFnZU9ic2VydmVyCiAgICAgdmlydHVhbCB2b2lkIGRlY29kZWRTaXplQ2hh
bmdlZChjb25zdCBJbWFnZSogaW1hZ2UsIGludCBkZWx0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCA0M2MzZDE0NGY4MmYxNTY4OGNm
NjZjMDU0YTA0ZGE5NjAxOWI5ZDExLi4zM2QxYmE4MjNiYzZmZDg2NTcyZTZhOTQ2MWFjNWJkNzU2
M2EwNmJiIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZS5jcHAKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5o
IgogI2luY2x1ZGUgIkNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oIgogI2luY2x1ZGUgIkRvY3Vt
ZW50LmgiCi0jaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5o
IgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIktVUkwu
aCIKQEAgLTM5MCw3ICszODksNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpkaWRBZGRDbGllbnQo
Q2FjaGVkUmVzb3VyY2VDbGllbnQqIGMpCiAgICAgICAgIG1fY2xpZW50cy5hZGQoYyk7CiAgICAg
ICAgIG1fY2xpZW50c0F3YWl0aW5nQ2FsbGJhY2sucmVtb3ZlKGMpOwogICAgIH0KLSAgICBpZiAo
IWlzTG9hZGluZygpKQorICAgIGlmICghaXNMb2FkaW5nKCkgJiYgIXN0aWxsTmVlZHNMb2FkKCkp
CiAgICAgICAgIGMtPm5vdGlmeUZpbmlzaGVkKHRoaXMpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IDBjYWQzZWU3Y2E0MjgxMmVhYTNl
ZmU2MDAzMTE2NDQ5ZjdhNjk2YTEuLmI3MzlkNjhhZjgxZjJkYjdiNDg2MmRmMTU5YWFjZjE1OGUw
YjU3MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5o
CkBAIC00NSw3ICs0NSw2IEBAIGNsYXNzIENhY2hlZE1ldGFkYXRhOwogY2xhc3MgQ2FjaGVkUmVz
b3VyY2VDbGllbnQ7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZUhhbmRsZUJhc2U7CiBjbGFzcyBDYWNo
ZWRSZXNvdXJjZUxvYWRlcjsKLWNsYXNzIEZyYW1lOwogY2xhc3MgSW5zcGVjdG9yUmVzb3VyY2U7
CiBjbGFzcyBQdXJnZWFibGVCdWZmZXI7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKQEAgLTE0NCw2
ICsxNDMsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzTG9hZGluZygpIGNvbnN0IHsgcmV0dXJu
IG1fbG9hZGluZzsgfQogICAgIHZvaWQgc2V0TG9hZGluZyhib29sIGIpIHsgbV9sb2FkaW5nID0g
YjsgfQorICAgIHZpcnR1YWwgYm9vbCBzdGlsbE5lZWRzTG9hZCgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAKICAgICBTdWJyZXNvdXJjZUxvYWRlciogbG9hZGVyKCkgeyByZXR1cm4gbV9sb2Fk
ZXIuZ2V0KCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMzUzYTYyYWE2NDBkYmRkNWU1MTI3ZDkwYjEwODQ1
NmQ0YWM3Y2VkYi4uYjdmZDA0MThmMTRjNjkyNWIxNDI1ZDUzZGQ0ZjQzMDQzY2FjMzY5NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXIuY3BwCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKICNpbmNs
dWRlICJQaW5nTG9hZGVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgiCisj
aW5jbHVkZSAiU2NoZW1lUmVnaXN0cnkuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgog
I2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CkBAIC0x
MTUsNiArMTE2LDcgQEAgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OkNhY2hlZFJlc291cmNlTG9hZGVy
KERvY3VtZW50KiBkb2N1bWVudCkKICAgICAsIG1fcmVxdWVzdENvdW50KDApCiAgICAgLCBtX2dh
cmJhZ2VDb2xsZWN0RG9jdW1lbnRSZXNvdXJjZXNUaW1lcih0aGlzLCAmQ2FjaGVkUmVzb3VyY2VM
b2FkZXI6OmdhcmJhZ2VDb2xsZWN0RG9jdW1lbnRSZXNvdXJjZXNUaW1lckZpcmVkKQogICAgICwg
bV9hdXRvTG9hZEltYWdlcyh0cnVlKQorICAgICwgbV9pbWFnZXNFbmFibGVkKHRydWUpCiAgICAg
LCBtX2FsbG93U3RhbGVSZXNvdXJjZXMoZmFsc2UpCiB7CiB9CkBAIC0xNjAsNyArMTYyLDcgQEAg
Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkSW1hZ2U+IENhY2hlZFJlc291cmNlTG9hZGVyOjpy
ZXF1ZXN0SW1hZ2UoUmVzb3VyY2VSZXEKICAgICAgICAgfQogICAgIH0KICAgICBDYWNoZWRSZXNv
dXJjZUhhbmRsZTxDYWNoZWRJbWFnZT4gcmVzb3VyY2Uoc3RhdGljX2Nhc3Q8Q2FjaGVkSW1hZ2Uq
PihyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OkltYWdlUmVzb3VyY2UsIHJlcXVlc3Qs
IFN0cmluZygpLCBkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCkpLmdldCgpKSk7Ci0gICAg
aWYgKGF1dG9Mb2FkSW1hZ2VzKCkgJiYgcmVzb3VyY2UgJiYgcmVzb3VyY2UtPnN0aWxsTmVlZHNM
b2FkKCkpCisgICAgaWYgKHJlc291cmNlICYmIHJlc291cmNlLT5zdGlsbE5lZWRzTG9hZCgpKQog
ICAgICAgICByZXNvdXJjZS0+bG9hZCh0aGlzLCBkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25z
KCkpOwogICAgIHJldHVybiByZXNvdXJjZTsKIH0KQEAgLTM2MiwxMiArMzY0LDYgQEAgYm9vbCBD
YWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2FuUmVxdWVzdChDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBl
LCBjb25zdCBLVVJMJiB1cmwKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpJbWFnZVJlc291cmNl
OgogICAgICAgICBpZiAoIW1fZG9jdW1lbnQtPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5hbGxv
d0ltYWdlRnJvbVNvdXJjZSh1cmwpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
ICAgIGlmIChmcmFtZSgpKSB7Ci0gICAgICAgICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBmcmFt
ZSgpLT5zZXR0aW5ncygpOwotICAgICAgICAgICAgaWYgKCFmcmFtZSgpLT5sb2FkZXIoKS0+Y2xp
ZW50KCktPmFsbG93SW1hZ2UoIXNldHRpbmdzIHx8IHNldHRpbmdzLT5hcmVJbWFnZXNFbmFibGVk
KCksIHVybCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkZvbnRSZXNvdXJjZTogewogICAg
ICAgICBpZiAoIW1fZG9jdW1lbnQtPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5hbGxvd0ZvbnRG
cm9tU291cmNlKHVybCkpCkBAIC00NzUsNyArNDcxLDggQEAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8
Q2FjaGVkUmVzb3VyY2U+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXZhbGlkYXRlUmVzb3VyY2Uo
Q2EKICAgICBtZW1vcnlDYWNoZSgpLT5hZGQobmV3UmVzb3VyY2UuZ2V0KCkpOwogICAgIAogICAg
IG5ld1Jlc291cmNlLT5zZXRMb2FkUHJpb3JpdHkocHJpb3JpdHkpOwotICAgIG5ld1Jlc291cmNl
LT5sb2FkKHRoaXMsIG9wdGlvbnMpOworICAgIGlmIChyZXNvdXJjZS0+dHlwZSgpICE9IENhY2hl
ZFJlc291cmNlOjpJbWFnZVJlc291cmNlKQorICAgICAgICBuZXdSZXNvdXJjZS0+bG9hZCh0aGlz
LCBvcHRpb25zKTsKIAogICAgIGlmICghdXJsUHJvdG9jb2xJc0RhdGEpCiAgICAgICAgIG1fdmFs
aWRhdGVkVVJMcy5hZGQodXJsKTsKQEAgLTQ5Myw3ICs0OTAsOCBAQCBDYWNoZWRSZXNvdXJjZUhh
bmRsZTxDYWNoZWRSZXNvdXJjZT4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmxvYWRSZXNvdXJjZShD
YWNoZWRSZQogICAgIGJvb2wgaW5DYWNoZSA9IG1lbW9yeUNhY2hlKCktPmFkZChyZXNvdXJjZS5n
ZXQoKSk7CiAgICAgCiAgICAgcmVzb3VyY2UtPnNldExvYWRQcmlvcml0eShwcmlvcml0eSk7Ci0g
ICAgcmVzb3VyY2UtPmxvYWQodGhpcywgb3B0aW9ucyk7CisgICAgaWYgKHR5cGUgIT0gQ2FjaGVk
UmVzb3VyY2U6OkltYWdlUmVzb3VyY2UpCisgICAgICAgIHJlc291cmNlLT5sb2FkKHRoaXMsIG9w
dGlvbnMpOwogICAgIAogICAgIGlmICghaW5DYWNoZSkKICAgICAgICAgcmVzb3VyY2UtPnNldE93
bmluZ0NhY2hlZFJlc291cmNlTG9hZGVyKHRoaXMpOwpAQCAtNTE0LDExICs1MTIsMTEgQEAgQ2Fj
aGVkUmVzb3VyY2VMb2FkZXI6OlJldmFsaWRhdGlvblBvbGljeSBDYWNoZWRSZXNvdXJjZUxvYWRl
cjo6ZGV0ZXJtaW5lUmV2YWxpZGEKIHsKICAgICBpZiAoIWV4aXN0aW5nUmVzb3VyY2UpCiAgICAg
ICAgIHJldHVybiBMb2FkOwotICAgIAorCiAgICAgLy8gV2UgYWxyZWFkeSBoYXZlIGEgcHJlbG9h
ZCBnb2luZyBmb3IgdGhpcyBVUkwuCiAgICAgaWYgKGZvclByZWxvYWQgJiYgZXhpc3RpbmdSZXNv
dXJjZS0+aXNQcmVsb2FkZWQoKSkKICAgICAgICAgcmV0dXJuIFVzZTsKLSAgICAKKwogICAgIC8v
IElmIHRoZSBzYW1lIFVSTCBoYXMgYmVlbiBsb2FkZWQgYXMgYSBkaWZmZXJlbnQgdHlwZSwgd2Ug
bmVlZCB0byByZWxvYWQuCiAgICAgaWYgKGV4aXN0aW5nUmVzb3VyY2UtPnR5cGUoKSAhPSB0eXBl
KSB7CiAgICAgICAgIExPRyhSZXNvdXJjZUxvYWRpbmcsICJDYWNoZWRSZXNvdXJjZUxvYWRlcjo6
ZGV0ZXJtaW5lUmV2YWxpZGF0aW9uUG9saWN5IHJlbG9hZGluZyBkdWUgdG8gdHlwZSBtaXNtYXRj
aC4iKTsKQEAgLTUzMyw2ICs1MzEsMTEgQEAgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OlJldmFsaWRh
dGlvblBvbGljeSBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6ZGV0ZXJtaW5lUmV2YWxpZGEKICAgICAv
LyBvZiB0aGluZ3MgYWJvdXQgaG93IHJldmFsaWRhdGlvbiB3b3JrcyB0aGF0IG1hbnVhbCBoZWFk
ZXJzIHZpb2xhdGUsIHNvIHB1bnQgdG8gUmVsb2FkIGluc3RlYWQuCiAgICAgaWYgKHJlcXVlc3Qu
aXNDb25kaXRpb25hbCgpKQogICAgICAgICByZXR1cm4gUmVsb2FkOworCisgICAgLy8gRG8gbm90
IGxvYWQgZnJvbSBjYWNoZSBpZiBpbWFnZXMgYXJlIG5vdCBlbmFibGVkLiBUaGUgbG9hZCBmb3Ig
dGhpcyBpbWFnZSB3aWxsIGJlIGJsb2NrZWQKKyAgICAvLyBpbiBDYWNoZWRJbWFnZTo6bG9hZC4K
KyAgICBpZiAoZXhpc3RpbmdSZXNvdXJjZS0+dHlwZSgpID09IENhY2hlZFJlc291cmNlOjpJbWFn
ZVJlc291cmNlICYmICFjbGllbnRBbGxvd3NJbWFnZShleGlzdGluZ1Jlc291cmNlLT51cmwoKSkp
CisgICAgICAgIHJldHVybiBSZWxvYWQ7CiAgICAgCiAgICAgLy8gRG9uJ3QgcmVsb2FkIHJlc291
cmNlcyB3aGlsZSBwYXN0aW5nLgogICAgIGlmIChtX2FsbG93U3RhbGVSZXNvdXJjZXMpCkBAIC02
MjksNiArNjMyLDM0IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnNldEF1dG9Mb2FkSW1h
Z2VzKGJvb2wgZW5hYmxlKQogICAgIGlmICghbV9hdXRvTG9hZEltYWdlcykKICAgICAgICAgcmV0
dXJuOwogCisgICAgcmVsb2FkSW1hZ2VzSWZOb3REZWZlcnJlZCgpOworfQorCit2b2lkIENhY2hl
ZFJlc291cmNlTG9hZGVyOjpzZXRJbWFnZXNFbmFibGVkKGJvb2wgZW5hYmxlKQoreworICAgIGlm
IChlbmFibGUgPT0gbV9pbWFnZXNFbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2lt
YWdlc0VuYWJsZWQgPSBlbmFibGU7CisKKyAgICBpZiAoIW1faW1hZ2VzRW5hYmxlZCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgcmVsb2FkSW1hZ2VzSWZOb3REZWZlcnJlZCgpOworfQorCitib29s
IENhY2hlZFJlc291cmNlTG9hZGVyOjpjbGllbnRBbGxvd3NJbWFnZShjb25zdCBLVVJMJiB1cmwp
IGNvbnN0Cit7CisgICAgcmV0dXJuICFmcmFtZSgpIHx8IGZyYW1lKCktPmxvYWRlcigpLT5jbGll
bnQoKS0+YWxsb3dJbWFnZShtX2ltYWdlc0VuYWJsZWQsIHVybCk7Cit9CisKK2Jvb2wgQ2FjaGVk
UmVzb3VyY2VMb2FkZXI6OnNob3VsZERlZmVySW1hZ2VMb2FkKGNvbnN0IEtVUkwmIHVybCkgY29u
c3QKK3sKKyAgICByZXR1cm4gIWNsaWVudEFsbG93c0ltYWdlKHVybCkgfHwgIW1fYXV0b0xvYWRJ
bWFnZXM7Cit9CisKK3ZvaWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlbG9hZEltYWdlc0lmTm90
RGVmZXJyZWQoKQorewogICAgIERvY3VtZW50UmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGVuZCA9IG1f
ZG9jdW1lbnRSZXNvdXJjZXMuZW5kKCk7CiAgICAgZm9yIChEb2N1bWVudFJlc291cmNlTWFwOjpp
dGVyYXRvciBpdCA9IG1fZG9jdW1lbnRSZXNvdXJjZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0
KSB7CiAgICAgICAgIENhY2hlZFJlc291cmNlKiByZXNvdXJjZSA9IGl0LT5zZWNvbmQuZ2V0KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VM
b2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRl
ci5oCmluZGV4IGY0NzU1YzIyZmQ4ZDJmMWMyYTBlOGU2ZGE4MmU3ZjliNTIzYTE5ZmIuLjIxZTRm
MzkxZGJiNDgyMTZjNDY1NDM3ODk2M2Y5MWE3NDA1YTcyNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCkBAIC05Nyw2ICs5Nywx
MCBAQCBwdWJsaWM6CiAKICAgICBib29sIGF1dG9Mb2FkSW1hZ2VzKCkgY29uc3QgeyByZXR1cm4g
bV9hdXRvTG9hZEltYWdlczsgfQogICAgIHZvaWQgc2V0QXV0b0xvYWRJbWFnZXMoYm9vbCk7CisK
KyAgICB2b2lkIHNldEltYWdlc0VuYWJsZWQoYm9vbCk7CisKKyAgICBib29sIHNob3VsZERlZmVy
SW1hZ2VMb2FkKGNvbnN0IEtVUkwmKSBjb25zdDsKICAgICAKICAgICBDYWNoZVBvbGljeSBjYWNo
ZVBvbGljeSgpIGNvbnN0OwogICAgIApAQCAtMTM1LDYgKzEzOSw5IEBAIHByaXZhdGU6CiAKICAg
ICB2b2lkIGdhcmJhZ2VDb2xsZWN0RG9jdW1lbnRSZXNvdXJjZXNUaW1lckZpcmVkKFRpbWVyPENh
Y2hlZFJlc291cmNlTG9hZGVyPiopOwogICAgIHZvaWQgcGVyZm9ybVBvc3RMb2FkQWN0aW9ucygp
OworCisgICAgYm9vbCBjbGllbnRBbGxvd3NJbWFnZShjb25zdCBLVVJMJikgY29uc3Q7CisgICAg
dm9pZCByZWxvYWRJbWFnZXNJZk5vdERlZmVycmVkKCk7CiAgICAgCiAgICAgSGFzaFNldDxTdHJp
bmc+IG1fdmFsaWRhdGVkVVJMczsKICAgICBtdXRhYmxlIERvY3VtZW50UmVzb3VyY2VNYXAgbV9k
b2N1bWVudFJlc291cmNlczsKQEAgLTE1Miw4ICsxNTksOSBAQCBwcml2YXRlOgogCiAgICAgVGlt
ZXI8Q2FjaGVkUmVzb3VyY2VMb2FkZXI+IG1fZ2FyYmFnZUNvbGxlY3REb2N1bWVudFJlc291cmNl
c1RpbWVyOwogCi0gICAgLy8gMzAgYml0cyBsZWZ0CisgICAgLy8gMjkgYml0cyBsZWZ0CiAgICAg
Ym9vbCBtX2F1dG9Mb2FkSW1hZ2VzIDogMTsKKyAgICBib29sIG1faW1hZ2VzRW5hYmxlZCA6IDE7
CiAgICAgYm9vbCBtX2FsbG93U3RhbGVSZXNvdXJjZXMgOiAxOwogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
dHRpbmdzLmNwcAppbmRleCBkZjQyNTk2NGRlNjExZGI1MzhmOWNiYmNjNzY3ZDI0MmUxMzNlZDE3
Li4zMDY2NmM1NjE5ODMyMzliOGQ5ODlkMjgzMzEwY2YyZjZiNDZjM2M4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NldHRpbmdzLmNwcApAQCAtNDYsMTAgKzQ2LDEyIEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIHZvaWQgc2V0TG9hZHNJbWFnZXNBdXRvbWF0
aWNhbGx5SW5BbGxGcmFtZXMoUGFnZSogcGFnZSkKK3N0YXRpYyB2b2lkIHNldEltYWdlTG9hZGlu
Z1NldHRpbmdzKFBhZ2UqIHBhZ2UpCiB7Ci0gICAgZm9yIChGcmFtZSogZnJhbWUgPSBwYWdlLT5t
YWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkp
CisgICAgZm9yIChGcmFtZSogZnJhbWUgPSBwYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1l
ID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpIHsKKyAgICAgICAgZnJhbWUtPmRvY3Vt
ZW50KCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPnNldEltYWdlc0VuYWJsZWQocGFnZS0+c2V0
dGluZ3MoKS0+YXJlSW1hZ2VzRW5hYmxlZCgpKTsKICAgICAgICAgZnJhbWUtPmRvY3VtZW50KCkt
PmNhY2hlZFJlc291cmNlTG9hZGVyKCktPnNldEF1dG9Mb2FkSW1hZ2VzKHBhZ2UtPnNldHRpbmdz
KCktPmxvYWRzSW1hZ2VzQXV0b21hdGljYWxseSgpKTsKKyAgICB9CiB9CiAKIC8vIFNldHMgdGhl
IGVudHJ5IGluIHRoZSBmb250IG1hcCBmb3IgdGhlIGdpdmVuIHNjcmlwdC4gSWYgZmFtaWx5IGlz
IHRoZSBlbXB0eSBzdHJpbmcsIHJlbW92ZXMgdGhlIGVudHJ5IGluc3RlYWQuCkBAIC0yOTEsNyAr
MjkzLDcgQEAgU2V0dGluZ3M6OlNldHRpbmdzKFBhZ2UqIHBhZ2UpCiAgICAgLCBtX3dpbmRvd0Zv
Y3VzUmVzdHJpY3RlZCh0cnVlKQogICAgICwgbV9kaWFnbm9zdGljTG9nZ2luZ0VuYWJsZWQoZmFs
c2UpCiAgICAgLCBtX3Njcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoZmFsc2UpCi0g
ICAgLCBtX2xvYWRzSW1hZ2VzQXV0b21hdGljYWxseVRpbWVyKHRoaXMsICZTZXR0aW5nczo6bG9h
ZHNJbWFnZXNBdXRvbWF0aWNhbGx5VGltZXJGaXJlZCkKKyAgICAsIG1fc2V0SW1hZ2VMb2FkaW5n
U2V0dGluZ3NUaW1lcih0aGlzLCAmU2V0dGluZ3M6OmltYWdlTG9hZGluZ1NldHRpbmdzVGltZXJG
aXJlZCkKICAgICAsIG1faW5jcmVtZW50YWxSZW5kZXJpbmdTdXBwcmVzc2lvblRpbWVvdXRJblNl
Y29uZHMoZGVmYXVsdEluY3JlbWVudGFsUmVuZGVyaW5nU3VwcHJlc3Npb25UaW1lb3V0SW5TZWNv
bmRzKQogewogICAgIC8vIEEgRnJhbWUgbWF5IG5vdCBoYXZlIGJlZW4gY3JlYXRlZCB5ZXQsIHNv
IHdlIGluaXRpYWxpemUgdGhlIEF0b21pY1N0cmluZwpAQCAtNDY2LDEyICs0NjgsMTIgQEAgdm9p
ZCBTZXR0aW5nczo6c2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KGJvb2wgbG9hZHNJbWFnZXNB
dXRvbWF0aWNhbGx5KQogICAgIC8vIFN0YXJ0aW5nIHRoZXNlIGxvYWRzIHN5bmNocm9ub3VzbHkg
aXMgbm90IGltcG9ydGFudC4gIEJ5IHB1dHRpbmcgaXQgb24gYSAwLWRlbGF5LCBwcm9wZXJseSBj
bG9zaW5nIHRoZSBQYWdlIGNhbmNlbHMgdGhlbQogICAgIC8vIGJlZm9yZSB0aGV5IGhhdmUgYSBj
aGFuY2UgdG8gcmVhbGx5IHN0YXJ0LgogICAgIC8vIFNlZSBodHRwOi8vd2Via2l0Lm9yZy9iLzYw
NTcyIGZvciBtb3JlIGRpc2N1c3Npb24uCi0gICAgbV9sb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHlU
aW1lci5zdGFydE9uZVNob3QoMCk7CisgICAgbV9zZXRJbWFnZUxvYWRpbmdTZXR0aW5nc1RpbWVy
LnN0YXJ0T25lU2hvdCgwKTsKIH0KIAotdm9pZCBTZXR0aW5nczo6bG9hZHNJbWFnZXNBdXRvbWF0
aWNhbGx5VGltZXJGaXJlZChUaW1lcjxTZXR0aW5ncz4qKQordm9pZCBTZXR0aW5nczo6aW1hZ2VM
b2FkaW5nU2V0dGluZ3NUaW1lckZpcmVkKFRpbWVyPFNldHRpbmdzPiopCiB7Ci0gICAgc2V0TG9h
ZHNJbWFnZXNBdXRvbWF0aWNhbGx5SW5BbGxGcmFtZXMobV9wYWdlKTsKKyAgICBzZXRJbWFnZUxv
YWRpbmdTZXR0aW5ncyhtX3BhZ2UpOwogfQogCiB2b2lkIFNldHRpbmdzOjpzZXRMb2Fkc1NpdGVJ
Y29uc0lnbm9yaW5nSW1hZ2VMb2FkaW5nU2V0dGluZyhib29sIGxvYWRzU2l0ZUljb25zKQpAQCAt
NTE3LDYgKzUxOSw5IEBAIHZvaWQgU2V0dGluZ3M6OnNldEphdmFFbmFibGVkRm9yTG9jYWxGaWxl
cyhib29sIGlzSmF2YUVuYWJsZWRGb3JMb2NhbEZpbGVzKQogdm9pZCBTZXR0aW5nczo6c2V0SW1h
Z2VzRW5hYmxlZChib29sIGFyZUltYWdlc0VuYWJsZWQpCiB7CiAgICAgbV9hcmVJbWFnZXNFbmFi
bGVkID0gYXJlSW1hZ2VzRW5hYmxlZDsKKworICAgIC8vIFNlZSBjb21tZW50IGluIHNldExvYWRz
SW1hZ2VzQXV0b21hdGljYWxseS4KKyAgICBtX3NldEltYWdlTG9hZGluZ1NldHRpbmdzVGltZXIu
c3RhcnRPbmVTaG90KDApOwogfQogCiB2b2lkIFNldHRpbmdzOjpzZXRNZWRpYUVuYWJsZWQoYm9v
bCBpc01lZGlhRW5hYmxlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGlu
Z3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAppbmRleCA4Mzk4NmY2OTcwYmZk
MjhhZTI4ZWZhNmM4OWQxZmFkNTQ5NTY4YjBhLi5jMThkZmQ3MzA2YjU5NTUyZmYzNDJiZDE3YzBm
YzI1Y2E1N2Y3MzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCkBAIC04MTgsOCArODE4LDggQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIGJvb2wgbV9zY3JvbGxpbmdQZXJmb3JtYW5j
ZUxvZ2dpbmdFbmFibGVkIDogMTsKIAotICAgICAgICBUaW1lcjxTZXR0aW5ncz4gbV9sb2Fkc0lt
YWdlc0F1dG9tYXRpY2FsbHlUaW1lcjsKLSAgICAgICAgdm9pZCBsb2Fkc0ltYWdlc0F1dG9tYXRp
Y2FsbHlUaW1lckZpcmVkKFRpbWVyPFNldHRpbmdzPiopOworICAgICAgICBUaW1lcjxTZXR0aW5n
cz4gbV9zZXRJbWFnZUxvYWRpbmdTZXR0aW5nc1RpbWVyOworICAgICAgICB2b2lkIGltYWdlTG9h
ZGluZ1NldHRpbmdzVGltZXJGaXJlZChUaW1lcjxTZXR0aW5ncz4qKTsKICAgICAgICAgCiAgICAg
ICAgIGRvdWJsZSBtX2luY3JlbWVudGFsUmVuZGVyaW5nU3VwcHJlc3Npb25UaW1lb3V0SW5TZWNv
bmRzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGlu
Z3MuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcAppbmRl
eCBiZDIzNzY2MDdkNzA0MWYxNzcyYzE2MWMyMTI1OWM1NWU0MWMzMDI4Li5iYjllZWQ2YjEzNTZl
MTE4YTE1NjJmZjRkMmRjMjQwYzM1ZjA1YjY3IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxTZXR0aW5ncy5jcHAKQEAgLTEwMCw2ICsxMDAsNyBAQCBJbnRlcm5hbFNldHRpbmdz
OjpCYWNrdXA6OkJhY2t1cChQYWdlKiBwYWdlLCBTZXR0aW5ncyogc2V0dGluZ3MpCiAgICAgLCBt
X2NhblN0YXJ0TWVkaWEocGFnZS0+Y2FuU3RhcnRNZWRpYSgpKQogICAgICwgbV9vcmlnaW5hbE1v
Y2tTY3JvbGxiYXJzRW5hYmxlZChzZXR0aW5ncy0+bW9ja1Njcm9sbGJhcnNFbmFibGVkKCkpCiAg
ICAgLCBtX2xhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVkKFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OmxhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVkKCkpCisg
ICAgLCBtX2ltYWdlc0VuYWJsZWQoc2V0dGluZ3MtPmFyZUltYWdlc0VuYWJsZWQoKSkKIHsKIH0K
IApAQCAtMTM1LDYgKzEzNiw3IEBAIHZvaWQgSW50ZXJuYWxTZXR0aW5nczo6QmFja3VwOjpyZXN0
b3JlVG8oUGFnZSogcGFnZSwgU2V0dGluZ3MqIHNldHRpbmdzKQogICAgIHBhZ2UtPnNldENhblN0
YXJ0TWVkaWEobV9jYW5TdGFydE1lZGlhKTsKICAgICBzZXR0aW5ncy0+c2V0TW9ja1Njcm9sbGJh
cnNFbmFibGVkKG1fb3JpZ2luYWxNb2NrU2Nyb2xsYmFyc0VuYWJsZWQpOwogICAgIFJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OnNldExhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVk
KG1fbGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQpOworICAgIHNldHRpbmdz
LT5zZXRJbWFnZXNFbmFibGVkKG1faW1hZ2VzRW5hYmxlZCk7CiB9CiAKIEludGVybmFsU2V0dGlu
Z3MqIEludGVybmFsU2V0dGluZ3M6OmZyb20oUGFnZSogcGFnZSkKQEAgLTY1OSw0ICs2NjEsMTAg
QEAgdm9pZCBJbnRlcm5hbFNldHRpbmdzOjpzZXRMYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29udHJv
bFVJRW5hYmxlZChib29sIGVuYWJsZWQpCiAgICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0
TGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQoZW5hYmxlZCk7CiB9CiAKK3Zv
aWQgSW50ZXJuYWxTZXR0aW5nczo6c2V0SW1hZ2VzRW5hYmxlZChib29sIGVuYWJsZWQsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQoreworICAgIEludGVybmFsU2V0dGluZ3NHdWFyZEZvclNldHRpbmdzKCk7
CisgICAgc2V0dGluZ3MoKS0+c2V0SW1hZ2VzRW5hYmxlZChlbmFibGVkKTsKK30KKwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaAppbmRleCAyYzA3M2RmNmVlZGE0
ZjA2ZTNlZWEwYWIzZDFhNDdjZjQ0NjkxOTVhLi5iZTg4MTBkZTY2ODJiYzg3ZDQ0NzZiZjkzZDlh
MGQ4MDI5YWUwOTA4IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
U2V0dGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3Mu
aApAQCAtODIsNiArODIsNyBAQCBwdWJsaWM6CiAgICAgICAgIGJvb2wgbV9jYW5TdGFydE1lZGlh
OwogICAgICAgICBib29sIG1fb3JpZ2luYWxNb2NrU2Nyb2xsYmFyc0VuYWJsZWQ7CiAgICAgICAg
IGJvb2wgbV9sYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJRW5hYmxlZDsKKyAgICAgICAg
Ym9vbCBtX2ltYWdlc0VuYWJsZWQ7CiAgICAgfTsKIAogICAgIHR5cGVkZWYgUmVmQ291bnRlZFN1
cHBsZW1lbnQ8UGFnZSwgSW50ZXJuYWxTZXR0aW5ncz4gU3VwZXJUeXBlOwpAQCAtMTQ3LDYgKzE0
OCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE1lbW9yeUluZm9FbmFibGVkKGJvb2wsIEV4Y2Vw
dGlvbkNvZGUmKTsKICAgICB2b2lkIHNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShjb25zdCBTdHJp
bmcmLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBzZXRMYW5nQXR0cmlidXRlQXdhcmVGb3Jt
Q29udHJvbFVJRW5hYmxlZChib29sKTsKKyAgICB2b2lkIHNldEltYWdlc0VuYWJsZWQoYm9vbCBl
bmFibGVkLCBFeGNlcHRpb25Db2RlJik7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgSW50ZXJu
YWxTZXR0aW5ncyhQYWdlKik7CiAgICAgdmlydHVhbCB2b2lkIGhvc3REZXN0cm95ZWQoKSBPVkVS
UklERSB7IG1fcGFnZSA9IDA7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxTZXR0aW5ncy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0
dGluZ3MuaWRsCmluZGV4IDk2NzNkMmYxYzI1ZDFiNGMxMmM1OGQyOTRjYzllN2I1YjIzMjJlYWYu
LmQ4YThhYWY4YmJhODE1ODIwNGM5NTY5NGIxNGI4MzQzMWNjNjI4NTMgMTAwNzU1Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5pZGwKKysrIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbApAQCAtODIsNiArODIsNyBAQCBtb2R1
bGUgd2luZG93IHsKICNlbmRpZgogICAgICAgICB2b2lkIHNldE1lbW9yeUluZm9FbmFibGVkKGlu
IGJvb2xlYW4gZW5hYmxlZCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIHZvaWQgc2V0
U3RvcmFnZUJsb2NraW5nUG9saWN5KGluIERPTVN0cmluZyBwb2xpY3kpIHJhaXNlcyhET01FeGNl
cHRpb24pOworICAgICAgICB2b2lkIHNldEltYWdlc0VuYWJsZWQoaW4gYm9vbGVhbiBlbmFibGVk
KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYK
aW5kZXggYTliMDBkYjM5NzMzMzkwMmMxNWUzNGZkNmJiOTVlYzY4ZTdlZDEwZS4uNmZkMWQzMTk2
MDRmOThiN2FiYTlhZDRhOWQ2MjZkZjdmMzgzYTgzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvd2luL1dlYktpdDIuZGVmCisrKyBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgpA
QCAtMjIyLDYgKzIyMiw3IEBAIEVYUE9SVFMKICAgICAgICAgP3NldERPTUV4Y2VwdGlvbkBXZWJD
b3JlQEBZQVhQQVZFeGVjU3RhdGVASlNDQEBIQFoKICAgICAgICAgP3NldEZhbnRhc3lGb250RmFt
aWx5QFNldHRpbmdzQFdlYkNvcmVAQFFBRVhBQlZBdG9taWNTdHJpbmdAV1RGQEBXNFVTY3JpcHRD
b2RlQEBAWgogICAgICAgICA/c2V0Rml4ZWRGb250RmFtaWx5QFNldHRpbmdzQFdlYkNvcmVAQFFB
RVhBQlZBdG9taWNTdHJpbmdAV1RGQEBXNFVTY3JpcHRDb2RlQEBAWgorICAgICAgICA/c2V0SW1h
Z2VzRW5hYmxlZEBTZXR0aW5nc0BXZWJDb3JlQEBRQUVYX05AWgogICAgICAgICA/c2V0TW9ja1Nj
cm9sbGJhcnNFbmFibGVkQFNldHRpbmdzQFdlYkNvcmVAQFNBWF9OQFoKICAgICAgICAgP21vY2tT
Y3JvbGxiYXJzRW5hYmxlZEBTZXR0aW5nc0BXZWJDb3JlQEBTQV9OWFoKICAgICAgICAgP3NldFVz
ZXNPdmVybGF5U2Nyb2xsYmFyc0BTZXR0aW5nc0BXZWJDb3JlQEBTQVhfTkBaCmRpZmYgLS1naXQg
YS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyIGIvU291cmNlL2F1dG90b29scy9zeW1i
b2xzLmZpbHRlcgppbmRleCBkNWQ1NDEwNmE2YjFiMzJmN2IyMzQwY2Y5NzYyNmJhMzY4NzllMzlj
Li42MjMwNWM0ZmFkZGM3YmFlZjk3ZjMzMjFhYTMyMDViZWI0N2FkODM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCisrKyBiL1NvdXJjZS9hdXRvdG9vbHMvc3lt
Ym9scy5maWx0ZXIKQEAgLTE0NSw2ICsxNDUsNyBAQCBfWk43V2ViQ29yZTE0U2Nyb2xsYWJsZUFy
ZWEyOHNldFNjcm9sbE9mZnNldEZyb21JbnRlcm5hbHNFUktOU184SW50UG9pbnRFOwogX1pON1dl
YkNvcmUxMFNjcm9sbFZpZXcyM3NldFNjcm9sbGJhcnNTdXBwcmVzc2VkRWJiOwogX1pON1dlYkNv
cmUxMFNjcm9sbFZpZXcyMXNldERlbGVnYXRlc1Njcm9sbGluZ0ViOwogX1pON1dlYkNvcmU0Tm9k
ZTE0cmVtb3ZlZExhc3RSZWZFdjsKK19aTjdXZWJDb3JlOFNldHRpbmdzMTZzZXRJbWFnZXNFbmFi
bGVkRWI7CiBfWk43V2ViQ29yZThTZXR0aW5nczE4c2V0Rml4ZWRGb250RmFtaWx5RVJLTjNXVEYx
MkF0b21pY1N0cmluZ0UxMVVTY3JpcHRDb2RlOwogX1pON1dlYkNvcmU4U2V0dGluZ3MxOHNldFNl
cmlmRm9udEZhbWlseUVSS04zV1RGMTJBdG9taWNTdHJpbmdFMTFVU2NyaXB0Q29kZTsKIF9aTjdX
ZWJDb3JlOFNldHRpbmdzMjBzZXRDdXJzaXZlRm9udEZhbWlseUVSS04zV1RGMTJBdG9taWNTdHJp
bmdFMTFVU2NyaXB0Q29kZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2YTFhN2EwZWEyNTRlMzhiNTI0MWMxOTI1NTBkMzQ1
Nzg3YzBjNDg3Li5mYTdmNjg0YzBlODQwMDVkYTJkMTQwMThmZTg3YTc3MDRlNTgzMDY5IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNDQgQEAKKzIwMTItMDktMTggIEJvIExpdSAgPGJvbGl1QGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZWxhbmQgIkFkZCBpbi1wbGFjZSByZWxvYWQgYmVoYXZpb3IgdG8gSW1h
Z2VzRW5hYmxlZCBzZXR0aW5nIiB3aXRoIG9wdGltaXphdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3MDU1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVsYW5kaW5nIDEyODc4MCwgMTI4Njc2LCAx
Mjg2NDUuIFdhcyByZXZlcnRlZCBpbiAxMjg5MTQgZHVlIHRvCisgICAgICAgIHBlcmZvcm1hbmNl
IHJlZ3Jlc3Npb24gaW4gQ2hyb21pdW0uCisKKyAgICAgICAgTmV3IGNoYW5nZXMgaW4gYWRkaXRp
b24gdG8gcHJldmlvdXNseSByZXZlcnRlZCBwYXRjaGVzOgorCisgICAgICAgIFJlbW92ZSBDYWNo
ZWRSZXNvdXJjZUxvYWRlcjo6c2hvdWxkRGVmZXJJbWFnZUxvYWQgY2FsbHMgaW4KKyAgICAgICAg
Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RJbWFnZSBhbmQKKyAgICAgICAgQ2FjaGVkUmVz
b3VyY2VMb2FkZXI6OnJlbG9hZEltYWdlc0lmTm90RGVmZXJyZWQuIFRoZSBzYW1lIGNhbGwgaXMg
bWFkZQorICAgICAgICBpbW1lZGlhdGVseSBhZnRlciBpbiBDYWNoZWRJbWFnZTo6bG9hZCwgc28g
dGhleSBhcmUgbm90IG5lY2Vzc2FyeS4KKworICAgICAgICBEbyBub3QgY2FsbCBsb2FkIGZvciBp
bWFnZSBpbiBsb2FkUmVzb3VyY2UvcmV2YWxpZGF0ZVJlc291cmNlIHNpbmNlCisgICAgICAgIHRo
ZSBzYW1lIGNhbGwgaXMgbWFkZSBhZ2FpbiBpbiByZXF1ZXN0SW1hZ2UuCisKKyAgICAgICAgUmVt
b3ZlZCB1bm5lY2Vzc2FyeSBGcmFtZS5oIGluY2x1ZGVzIGluIENhY2hlZFJlc291cmNlIGFuZAor
ICAgICAgICBDYWNoZWRJbWFnZS4KKworICAgICAgICBSZW1vdmVkIGRlYWQgbG9hZCgpIG1ldGhv
ZCBkZWNsYXJhdGlvbiBpbiBDYWNoZWRJbWFnZS4KKworICAgICAgICBVcGRhdGVkIHRleHQgZXhw
ZWN0YXRpb24gZm9yIHR3byBpbWFnZS1wZXJtaXNzaW9ucyB0ZXN0cyB0byByZWZsZWN0CisgICAg
ICAgIHRoZSByZW1vdmVkIGNhbGxzIHRvIGFsbG93SW1hZ2UuCisKKyAgICAgICAgKiBmYXN0L2xv
YWRlci9kaXNwbGF5LWltYWdlLXVuc2V0LWFsbG93cy1jYWNoZWQtaW1hZ2UtbG9hZC1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbG9hZGVyL2Rpc3BsYXktaW1hZ2UtdW5zZXQt
YWxsb3dzLWNhY2hlZC1pbWFnZS1sb2FkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbG9h
ZGVyL2Rpc3BsYXktaW1hZ2UtdW5zZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1jYW4tcmVsb2FkLWlu
LXBsYWNlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9sb2FkZXIvZGlzcGxh
eS1pbWFnZS11bnNldC1jYW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UuaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC9sb2FkZXIvaW1hZ2VzLWVuYWJsZWQtdW5zZXQtY2Fu
LWJsb2NrLWltYWdlLWFuZC1jYW4tcmVsb2FkLWluLXBsYWNlLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9sb2FkZXIvaW1hZ2VzLWVuYWJsZWQtdW5zZXQtY2FuLWJsb2NrLWlt
YWdlLWFuZC1jYW4tcmVsb2FkLWluLXBsYWNlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
bG9hZGVyL3Jlc291cmNlcy9pbWFnZTEuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9sb2Fk
ZXIvcmVzb3VyY2VzL2ltYWdlMi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJv
bWl1bS9wZXJtaXNzaW9uY2xpZW50L2ltYWdlLXBlcm1pc3Npb25zLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9wZXJtaXNzaW9uY2xpZW50L2ltYWdlLXBlcm1pc3Np
b25zLmh0bWw6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vcGVybWlzc2lvbmNsaWVudC9y
ZXNvdXJjZXMvaW1hZ2UuaHRtbDoKKyAgICAgICAgKiBwbGF0Zm9ybS93azIvU2tpcHBlZDoKKwog
MjAxMi0wOS0yMCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAg
ICAgICBtZWRpYS90cmFjay90cmFjay1jdWUtcmVuZGVyaW5nLWlubmVyLXRpbWVzdGFtcHMuaHRt
bCB0aW1lcyBvdXQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9kaXNwbGF5
LWltYWdlLXVuc2V0LWFsbG93cy1jYWNoZWQtaW1hZ2UtbG9hZC1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9mYXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0LWFsbG93cy1jYWNoZWQtaW1h
Z2UtbG9hZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmUxNWFhYzBjNTE1ZTgwNTZhYjNjY2M5
NTE5MDM3MzMyOGY4MzdmOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbG9h
ZGVyL2Rpc3BsYXktaW1hZ2UtdW5zZXQtYWxsb3dzLWNhY2hlZC1pbWFnZS1sb2FkLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDIgQEAKK1Rlc3QgdGhhdCBXZWJLaXREaXNwbGF5SW1hZ2VzS2V5IHVu
c2V0IGRvZXMgbm90IGJsb2NrIGltYWdlIGluIGNhY2hlLgorUEFTUwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9sb2FkZXIvZGlzcGxheS1pbWFnZS11bnNldC1hbGxvd3MtY2FjaGVkLWlt
YWdlLWxvYWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2Rpc3BsYXktaW1hZ2UtdW5z
ZXQtYWxsb3dzLWNhY2hlZC1pbWFnZS1sb2FkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDhkNzAzZDUwNGVh
YTQ1YjNmNGVmZmVkMGI0N2I0NzdlNDgxOGZkNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvbG9hZGVyL2Rpc3BsYXktaW1hZ2UtdW5zZXQtYWxsb3dzLWNhY2hlZC1pbWFnZS1s
b2FkLmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CisvLyBP
cGVucyB0d28gd2luZG93cyBjb250YWluaW5nIHRoZSBzYW1lIGltYWdlLiBGaXJzdCB3aW5kb3cg
d2lsbCBwb3B1bGF0ZSB0aGUgY2FjaGUgd2l0aAorLy8gaW1hZ2UuIFRoZSBzZWNvbmQgd2luZG93
IGlzIG9wZW5lZCB3aXRoIFdlYktpdERpc3BsYXlJbWFnZXNLZXkgdW5zZXQsIGJ1dCBpbWFnZSBz
aG91bGQKKy8vIHN0aWxsIGxvYWQgc2luY2UgaXQgaXMgaW4gY2FjaGUuCitmdW5jdGlvbiBydW5U
ZXN0KCkKK3sKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAg
ICAgICB0ZXN0UnVubmVyLnNldENhbk9wZW5XaW5kb3dzKCk7CisgICAgICAgIHRlc3RSdW5uZXIu
b3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRVc2VzUGFnZUNhY2hlUHJlZmVyZW5jZUtleSIsIDEp
OworCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwg
PSAnRkFJTFVSRTogaW1hZ2UxLmh0bWwgbm90IGxvYWRlZCc7CisgICAgICAgIHdpbmRvdy5vcGVu
KCJyZXNvdXJjZXMvaW1hZ2UxLmh0bWwiLCAiX2JsYW5rIik7CisgICAgfQorfQorCitmdW5jdGlv
biBpbWFnZTFMb2FkZWQoKQoreworICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCdX
ZWJLaXREaXNwbGF5SW1hZ2VzS2V5JywgMCk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3Jlc3VsdCcpLmlubmVySFRNTCA9ICdGQUlMVVJFOiBpbWFnZTIuaHRtbCBub3QgbG9hZGVkJzsK
KyAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHt3aW5kb3cub3BlbigicmVzb3VyY2Vz
L2ltYWdlMi5odG1sIiwgIl9ibGFuayIpO30sIDApOworfQorCitmdW5jdGlvbiBpbWFnZTJMb2Fk
ZWQoKQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwg
PSAnUEFTUyc7CisJCXRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQorPC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CitUZXN0IHRoYXQgV2ViS2l0RGlzcGxheUlt
YWdlc0tleSB1bnNldCBkb2VzIG5vdCBibG9jayBpbWFnZSBpbiBjYWNoZS4KKzxkaXYgaWQ9InJl
c3VsdCI+RkFJTFVSRTogVGVzdCBzY3JpcHQgZGlkbid0IHJ1bi48L2Rpdj4KKzwvYm9keT4KKzwv
aHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZGlzcGxheS1pbWFn
ZS11bnNldC1jYW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZGlzcGxheS1pbWFnZS11bnNldC1jYW4tYmxv
Y2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjdhOWVmNTM0NzliOGI1YWE0YjQ2NGY2NTdmMmFjZjdlNWJiNDQ3ZDIKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0LWNhbi1ibG9j
ay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwz
IEBACitUZXN0IHRoYXQgRGlzcGxheUltYWdlcyBkaXNhYmxlZCBjYW4gYmxvY2sgaHR0cCBpbWFn
ZSBhbmQgY2FuIGJlIHJlbG9hZGVkIGluLXBsYWNlIHdoZW4gdG9nZ2xlZC4KK1NVQ0NFU1MKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZGlzcGxheS1pbWFnZS11bnNldC1j
YW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvbG9hZGVyL2Rpc3BsYXktaW1hZ2UtdW5zZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1jYW4t
cmVsb2FkLWluLXBsYWNlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzEyZjUwOWQ1NDNiN2E1YTdkNDdkMTkx
Yjc4ODY2M2U2ZDI2MTk3NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbG9h
ZGVyL2Rpc3BsYXktaW1hZ2UtdW5zZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1jYW4tcmVsb2FkLWlu
LXBsYWNlLmh0bWwKQEAgLTAsMCArMSw0NyBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+Cisv
LyBTZXR0aW5nIFdlYktpdERpc3BsYXlJbWFnZXNLZXkgaXMgYXN5bmNocm9ub3VzLCBzbyB1c2lu
ZyBxdWV1ZVJlbG9hZCBhbmQgc2V0SW50ZXJ2YWwgdG8gY2hlY2sgd2hlbiB0aGUgc2V0dGluZyBh
Y3R1YWxseSB0YWtlIGVmZmVjdC4KKwordmFyIGludGVydmFsSWQ7Cit2YXIgaW1hZ2VPbmxvYWRG
aXJlZCA9IDA7CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOworICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0SW1hZ2VzRW5hYmxl
ZCh0cnVlKTsKKyAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgnV2ViS2l0RGlzcGxh
eUltYWdlc0tleScsIDApOworICAgIHRlc3RSdW5uZXIucXVldWVSZWxvYWQoKTsKK30KKworZnVu
Y3Rpb24gcnVuVGVzdCgpCit7CisgICAgdmFyIGltYWdlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2ltYWdlJyk7CisgICAgaWYgKGltYWdlLm5hdHVyYWxIZWlnaHQgIT0gMCB8fCBpbWFnZS5u
YXR1cmFsV2lkdGggIT0gMCB8fCBpbWFnZU9ubG9hZEZpcmVkICE9IDApIHsKKyAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9ICdGQUlMVVJFOiBJbWFn
ZSBzaG91bGQgbm90IGJlIGxvYWRlZCB3aGVuIERpc3BsYXlJbWFnZSBpcyB1bnNldCc7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgn
V2ViS2l0RGlzcGxheUltYWdlc0tleScsIDEpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdyZXN1bHQnKS5pbm5lckhUTUwgPSAnRkFJTFVSRTogSW1hZ2Ugc2hvdWxkIHJlbG9hZCBpbi1w
bGFjZSB3aGVuIERpc3BhbHlJbWFnZSBpcyBjaGFuZ2VzIGZyb20gdW5zZXQgdG8gc2V0JzsKKyAg
ICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpbnRlcnZhbElkID0gd2luZG93LnNl
dEludGVydmFsKHJ1blRlc3RSZXN0LCAxMCk7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3RSZXN0KCkK
K3sKKyAgICB2YXIgaW1hZ2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW1hZ2UnKTsKKyAg
ICBpZiAoaW1hZ2UubmF0dXJhbEhlaWdodCA9PSAzMyAmJiBpbWFnZS5uYXR1cmFsV2lkdGggPT0g
MzcgJiYgaW1hZ2VPbmxvYWRGaXJlZCA9PSAxKSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSAnU1VDQ0VTUyc7CisgICAgICAgIHdpbmRvdy5j
bGVhckludGVydmFsKGludGVydmFsSWQpOworICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKKyAgICB9Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgp
Ij4KKyAgVGVzdCB0aGF0IERpc3BsYXlJbWFnZXMgZGlzYWJsZWQgY2FuIGJsb2NrIGh0dHAgaW1h
Z2UgYW5kIGNhbiBiZSByZWxvYWRlZCBpbi1wbGFjZSB3aGVuIHRvZ2dsZWQuCisgIDxkaXYgaWQ9
InJlc3VsdCI+RkFJTFVSRTogVGVzdCBzY3JpcHQgZGlkbid0IHJ1bi48L2Rpdj4KKyAgPGltZyBp
ZD0iaW1hZ2UiIHNyYz0iLi4vaW1hZ2VzL3Jlc291cmNlcy9vdmFsLnBuZyIgb25sb2FkPSJpbWFn
ZU9ubG9hZEZpcmVkPTE7Ij4KKzwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9sb2FkZXIvaW1hZ2VzLWVuYWJsZWQtdW5zZXQtY2FuLWJsb2NrLWltYWdlLWFu
ZC1jYW4tcmVsb2FkLWluLXBsYWNlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbG9h
ZGVyL2ltYWdlcy1lbmFibGVkLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1p
bi1wbGFjZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTUxZDQ2MDFjY2MzY2ExOGQ4Y2ZkNWE5
Njk3ODExMWZmYjBjNjAyMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbG9h
ZGVyL2ltYWdlcy1lbmFibGVkLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1p
bi1wbGFjZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACitUZXN0IHRoYXQgRW5hYmxlSW1h
Z2VzIHVuc2V0IGNhbiBibG9jayBpbWFnZSBhbmQgY2FuIGJlIHJlbG9hZGVkIGluLXBsYWNlIHdo
ZW4gdG9nZ2xlZC4KK1NVQ0NFU1MKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9sb2Fk
ZXIvaW1hZ2VzLWVuYWJsZWQtdW5zZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1jYW4tcmVsb2FkLWlu
LXBsYWNlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9pbWFnZXMtZW5hYmxlZC11bnNl
dC1jYW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zZjQ4ZTYyOGRkZDYwZDViYWZhMmIxNGYwODM2MGI0YjZlNmE2NjNjCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvaW1hZ2VzLWVuYWJsZWQtdW5zZXQtY2FuLWJs
b2NrLWltYWdlLWFuZC1jYW4tcmVsb2FkLWluLXBsYWNlLmh0bWwKQEAgLTAsMCArMSw0NyBAQAor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CisvLyBTZXR0aW5nIEltYWdlc0VuYWJsZWQgaXMgYXN5
bmNocm9ub3VzLCBzbyB1c2luZyBxdWV1ZVJlbG9hZCBhbmQgc2V0SW50ZXJ2YWwgdG8gY2hlY2sg
d2hlbiB0aGUgc2V0dGluZyBhY3R1YWxseSB0YWtlIGVmZmVjdC4KKwordmFyIGludGVydmFsSWQ7
Cit2YXIgaW1hZ2VPbmxvYWRGaXJlZCA9IDA7CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgewor
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVm
ZXJlbmNlKCdXZWJLaXREaXNwbGF5SW1hZ2VzS2V5JywgMSk7CisgICAgd2luZG93LmludGVybmFs
cy5zZXR0aW5ncy5zZXRJbWFnZXNFbmFibGVkKGZhbHNlKTsKKyAgICB0ZXN0UnVubmVyLnF1ZXVl
UmVsb2FkKCk7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIHZhciBpbWFnZSA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbWFnZScpOworICAgIGlmIChpbWFnZS5uYXR1cmFsSGVp
Z2h0ICE9IDAgfHwgaW1hZ2UubmF0dXJhbFdpZHRoICE9IDAgfHwgaW1hZ2VPbmxvYWRGaXJlZCAh
PSAwKSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhU
TUwgPSAnRkFJTFVSRTogSW1hZ2Ugc2hvdWxkIG5vdCBiZSBsb2FkZWQgd2hlbiBJbWFnZXNFbmFi
bGVkIGlzIHVuc2V0JzsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHdpbmRvdy5pbnRl
cm5hbHMuc2V0dGluZ3Muc2V0SW1hZ2VzRW5hYmxlZCh0cnVlKTsKKyAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1MID0gJ0ZBSUxVUkU6IEltYWdlIHNob3VsZCBy
ZWxvYWQgaW4tcGxhY2Ugd2hlbiBJbWFnZXNFbmFibGVkIGlzIGNoYW5nZXMgZnJvbSB1bnNldCB0
byBzZXQnOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIGludGVydmFsSWQg
PSB3aW5kb3cuc2V0SW50ZXJ2YWwocnVuVGVzdFJlc3QsIDEwKTsKK30KKworZnVuY3Rpb24gcnVu
VGVzdFJlc3QoKQoreworICAgIHZhciBpbWFnZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdp
bWFnZScpOworICAgIGlmIChpbWFnZS5uYXR1cmFsSGVpZ2h0ID09IDMzICYmIGltYWdlLm5hdHVy
YWxXaWR0aCA9PSAzNyB8fCBpbWFnZU9ubG9hZEZpcmVkID09IDEpIHsKKyAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9ICdTVUNDRVNTJzsKKyAgICAg
ICAgd2luZG93LmNsZWFySW50ZXJ2YWwoaW50ZXJ2YWxJZCk7CisgICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOworICAgIH0KK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2Fk
PSJydW5UZXN0KCkiPgorICBUZXN0IHRoYXQgRW5hYmxlSW1hZ2VzIHVuc2V0IGNhbiBibG9jayBp
bWFnZSBhbmQgY2FuIGJlIHJlbG9hZGVkIGluLXBsYWNlIHdoZW4gdG9nZ2xlZC4KKyAgPGRpdiBp
ZD0icmVzdWx0Ij5GQUlMVVJFOiBUZXN0IHNjcmlwdCBkaWRuJ3QgcnVuLjwvZGl2PgorICA8aW1n
IGlkPSJpbWFnZSIgc3JjPSIuLi9pbWFnZXMvcmVzb3VyY2VzL292YWwucG5nIiBvbmxvYWQ9Imlt
YWdlT25sb2FkRmlyZWQ9MTsiPgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2xvYWRlci9yZXNvdXJjZXMvaW1hZ2UxLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2xvYWRlci9yZXNvdXJjZXMvaW1hZ2UxLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2Q2OWRjM2MyYTBk
NmExNWUwODk2Mzc5MTAzMjU0ZjVlYWEzNGRjMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvbG9hZGVyL3Jlc291cmNlcy9pbWFnZTEuaHRtbApAQCAtMCwwICsxLDUgQEAKKzxo
dG1sPgorPGJvZHk+CisgIDxpbWcgc3JjPSIuLi8uLi9pbWFnZXMvcmVzb3VyY2VzL292YWwucG5n
IiBvbmxvYWQ9IndpbmRvdy5vcGVuZXIuaW1hZ2UxTG9hZGVkKCk7Ij4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3Jlc291cmNlcy9pbWFnZTIu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3Jlc291cmNlcy9pbWFnZTIuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5jMDM3ZmZmMGNlNjU2Nzc3Y2MwMmU4YWU2Y2M4MWNmNmVhNDQyYWFjCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvcmVzb3VyY2VzL2ltYWdlMi5odG1s
CkBAIC0wLDAgKzEsNSBAQAorPGh0bWw+Cis8Ym9keT4KKyAgPGltZyBzcmM9Ii4uLy4uL2ltYWdl
cy9yZXNvdXJjZXMvb3ZhbC5wbmciIG9ubG9hZD0id2luZG93Lm9wZW5lci5pbWFnZTJMb2FkZWQo
KTsiPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vcGVybWlzc2lvbmNsaWVudC9pbWFnZS1wZXJtaXNzaW9ucy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9wZXJtaXNzaW9uY2xpZW50L2ltYWdlLXBl
cm1pc3Npb25zLWV4cGVjdGVkLnR4dAppbmRleCA2MGU3NmE1MjNhZGYyNjQ0NjUzMzU4Mjk2Zjdj
YjllYjQzOGQzZjlmLi44MzFjZDIwZmU5YTA3OTkyN2FjMzdkMzNhYmQ0YjlhNWM0ZmJhOTNiIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9wZXJtaXNzaW9uY2xpZW50
L2ltYWdlLXBlcm1pc3Npb25zLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS9wZXJtaXNzaW9uY2xpZW50L2ltYWdlLXBlcm1pc3Npb25zLWV4cGVjdGVkLnR4
dApAQCAtMiw5ICsyLDkgQEAgUEVSTUlTU0lPTiBDTElFTlQ6IGFsbG93SW1hZ2UoKGZpbGUgdGVz
dCk6cGxhdGZvcm0vY2hyb21pdW0vcGVybWlzc2lvbmNsaWVudC9yZXMKIFBFUk1JU1NJT04gQ0xJ
RU5UOiBhbGxvd0ltYWdlKChmaWxlIHRlc3QpOnBsYXRmb3JtL2Nocm9taXVtL3Blcm1pc3Npb25j
bGllbnQvcmVzb3VyY2VzL2Jvc3Rvbi5naWY/bm9jYWNoZSk6IGZhbHNlCiBQRVJNSVNTSU9OIENM
SUVOVDogYWxsb3dJbWFnZSgoZmlsZSB0ZXN0KTpwbGF0Zm9ybS9jaHJvbWl1bS9wZXJtaXNzaW9u
Y2xpZW50L3Jlc291cmNlcy9ib3N0b24uZ2lmKTogZmFsc2UKIFBFUk1JU1NJT04gQ0xJRU5UOiBh
bGxvd0ltYWdlKChmaWxlIHRlc3QpOnBsYXRmb3JtL2Nocm9taXVtL3Blcm1pc3Npb25jbGllbnQv
cmVzb3VyY2VzL2Jvc3Rvbi5naWYpOiBmYWxzZQorUEVSTUlTU0lPTiBDTElFTlQ6IGFsbG93SW1h
Z2UoKGZpbGUgdGVzdCk6cGxhdGZvcm0vY2hyb21pdW0vcGVybWlzc2lvbmNsaWVudC9yZXNvdXJj
ZXMvYm9zdG9uLmdpZik6IGZhbHNlCitQRVJNSVNTSU9OIENMSUVOVDogYWxsb3dJbWFnZSgoZmls
ZSB0ZXN0KTpwbGF0Zm9ybS9jaHJvbWl1bS9wZXJtaXNzaW9uY2xpZW50L3Jlc291cmNlcy9ib3N0
b24uZ2lmKTogZmFsc2UKIAogCiBQQVNTOiBmaXJzdCBpbWFnZSBsb2FkZWQKLVBBU1M6IGVycm9y
IGV2ZW50IGZvciBub3QgY2FjaGVkIGltYWdlCi1QQVNTOiBlcnJvciBldmVudCBmb3IgaW1hZ2Ug
ZnJvbSBjYWNoZQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9w
ZXJtaXNzaW9uY2xpZW50L2ltYWdlLXBlcm1pc3Npb25zLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9wZXJtaXNzaW9uY2xpZW50L2ltYWdlLXBlcm1pc3Npb25zLmh0bWwKaW5k
ZXggN2I1ZTJjNTc1Yzk4OTc0YWMwOGY4N2U5ZjhjMTIwNzEwYWRiZmVmMC4uZjU3YTNiNzA3MDQz
MzA5YzJmYWIyZmY5MmMzZTllMmM2ZTQxOTY0NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vcGVybWlzc2lvbmNsaWVudC9pbWFnZS1wZXJtaXNzaW9ucy5odG1sCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Blcm1pc3Npb25jbGllbnQvaW1hZ2Ut
cGVybWlzc2lvbnMuaHRtbApAQCAtMSw2ICsxLDkgQEAKIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0
PgorLy8gQmxvY2tlZCBpbWFnZXMgY2FuIGJlIHJlbG9hZGVkLCBzbyBuZWl0aGVyIG9ubG9hZCBu
b3Igb25lcnJvciBpcyBjYWxsZWQuCisvLyBPbmx5IGNoZWNrIGhlcmUgdGhhdCBvbmxvYWQgaXMg
bmV2ZXIgY2FsbGVkIHdoZW4gaW1hZ2UgaXMgYmxvY2tlZC4KKwogaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7CiAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgdGVzdFJ1bm5lci5kdW1w
UGVybWlzc2lvbkNsaWVudENhbGxiYWNrcygpOwpAQCAtMjEsMTQgKzI0LDEyIEBAIGZ1bmN0aW9u
IGxvYWRlZCgpCiAKICAgICAvLyBMb2FkIGFuIGltYWdlIG5vdCBpbiBjYWNoZS4KICAgICB2YXIg
aW1nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW1nJyk7Ci0gICAgaW1nLm9uZXJyb3IgPSBm
dW5jdGlvbiAoKSB7IGxvZygiUEFTUzogZXJyb3IgZXZlbnQgZm9yIG5vdCBjYWNoZWQgaW1hZ2Ui
KTsgfQogICAgIGltZy5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7IGxvZygiRkFJTDogbm90IGNhY2hl
ZCBpbWFnZSBsb2FkZWQiKTsgfQogICAgIGltZy5zcmMgPSAicmVzb3VyY2VzL2Jvc3Rvbi5naWY/
bm9jYWNoZSI7CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImltZyIpLmFwcGVuZENoaWxk
KGltZyk7CiAKICAgICAvLyBMb2FkIGFuIGltYWdlIGZyb20gY2FjaGUuCiAgICAgdmFyIGltZ0Zy
b21DYWNoZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2ltZycpOwotICAgIGltZ0Zyb21DYWNo
ZS5vbmVycm9yID0gZnVuY3Rpb24gKCkgeyBsb2coIlBBU1M6IGVycm9yIGV2ZW50IGZvciBpbWFn
ZSBmcm9tIGNhY2hlIik7IH0KICAgICBpbWdGcm9tQ2FjaGUub25sb2FkID0gZnVuY3Rpb24gKCkg
eyBsb2coIkZBSUw6IGltYWdlIGZyb20gY2FjaGUgbG9hZGVkIik7IH0KICAgICBpbWdGcm9tQ2Fj
aGUuc3JjID0gInJlc291cmNlcy9ib3N0b24uZ2lmIjsKICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiaW1nIikuYXBwZW5kQ2hpbGQoaW1nRnJvbUNhY2hlKTsKQEAgLTQxLDcgKzQyLDcgQEAg
ZnVuY3Rpb24gbG9hZGVkKCkKIDwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08aW1nIHNyYz0i
cmVzb3VyY2VzL2Jvc3Rvbi5naWYiIG9ubG9hZD0ibG9hZGVkKCkiIG9uZXJyb3I9ImxvZygnRkFJ
TDogZXJyb3IgZXZlbnQgZm9yIGZpcnN0IGltYWdlJykiPgorPGltZyBzcmM9InJlc291cmNlcy9i
b3N0b24uZ2lmIiBvbmxvYWQ9ImxvYWRlZCgpIj4KIDxkaXYgaWQ9ImltZyI+PC9kaXY+CiA8ZGl2
IGlkPSJyZXN1bHRzIj48L2Rpdj4KIDwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL3Blcm1pc3Npb25jbGllbnQvcmVzb3VyY2VzL2ltYWdlLmh0bWwgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9wZXJtaXNzaW9uY2xpZW50L3Jlc291cmNlcy9p
bWFnZS5odG1sCmluZGV4IGUyYWRmZTNmMGI2MjFhYThkOWZmNGUxOTBjOTAyMjMwNWNjMDcwZWIu
LjIzOTc3MTcxMDFkZWQ0NDBhMzI5NTU4MjZlODQxY2QxY2Q2MjNmOTcgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Blcm1pc3Npb25jbGllbnQvcmVzb3VyY2VzL2lt
YWdlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vcGVybWlzc2lvbmNs
aWVudC9yZXNvdXJjZXMvaW1hZ2UuaHRtbApAQCAtOCw3ICs4LDcgQEAgZnVuY3Rpb24gbG9nKGEp
CiA8L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPGltZyBzcmM9ImJvc3Rvbi5naWYiIG9ubG9h
ZD0ibG9nKCdGQUlMOiBsb2FkIGV2ZW50IGZvciBpZnJhbWVkIGltYWdlKSIgb25lcnJvcj0ibG9n
KCdGQUlMOiBlcnJvciBldmVudCBmb3IgaWZyYW1lZCBpbWFnZScpIj4KKzxpbWcgc3JjPSJib3N0
b24uZ2lmIiBvbmxvYWQ9ImxvZygnRkFJTDogbG9hZCBldmVudCBmb3IgaWZyYW1lZCBpbWFnZScp
Ij4KIDxkaXYgaWQ9InJlc3VsdHMiPjwvZGl2PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS93azIvU2tpcHBlZAppbmRleCAxOTE3YjZjZWZiMzc5OWViZGFkM2U5ODBmMzU3NjgxNmQ4NGQw
MzExLi5jMWRhYjI3YTRhNjZkYTNmZDU2NDBjYjMwMzhhZGNjZGE5OGExYTE2IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS93azIvU2tpcHBlZApAQCAtMjAxLDYgKzIwMSw3IEBAIGZhc3QvY2FudmFzL3dlYmdsL3dl
YmdsLWFycmF5LWludmFsaWQtcmFuZ2VzLmh0bWwKIGZhc3QvY2FudmFzL3dlYmdsL3dlYmdsLXNw
ZWNpZmljLmh0bWwKIGZhc3QvaGFybmVzcy9vdmVycmlkZS1wcmVmZXJlbmNlcy0yLmh0bWwKIGZh
c3QvaW1hZ2VzL2FuaW1hdGVkLWdpZi1yZXN0b3JlZC1mcm9tLWJmY2FjaGUuaHRtbAorZmFzdC9s
b2FkZXIvZGlzcGxheS1pbWFnZS11bnNldC1hbGxvd3MtY2FjaGVkLWltYWdlLWxvYWQuaHRtbAog
ZmFzdC90ZXh0L3plcm8tZm9udC1zaXplLmh0bWwKIAogIyBXZWJLaXRUZXN0UnVubmVyIG5lZWRz
IHRvIHN1cHBvcnQgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcERPTUFzV2ViQXJjaGl2ZQpAQCAt
MzM5LDYgKzM0MCw4IEBAIHN2Zy9jdXN0b20vc3ZnLWFsbG93ZWQtaW4tZGFzaGJvYXJkLW9iamVj
dC5odG1sCiAjIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDI2NzI+
CiBmYXN0L2Nzcy9jb21wYXJlLWNvbnRlbnQtc3R5bGUuaHRtbAogZmFzdC9mcmFtZXMvZnJhbWUt
ZGlzcGxheS1ub25lLWZvY3VzLmh0bWwKK2Zhc3QvbG9hZGVyL2Rpc3BsYXktaW1hZ2UtdW5zZXQt
Y2FuLWJsb2NrLWltYWdlLWFuZC1jYW4tcmVsb2FkLWluLXBsYWNlLmh0bWwKK2Zhc3QvbG9hZGVy
L2ltYWdlcy1lbmFibGVkLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1w
bGFjZS5odG1sCiBmYXN0L2xvYWRlci9yZWxvYWQtcG9saWN5LWRlbGVnYXRlLmh0bWwKIAogIyBX
ZWJLaXRUZXN0UnVubmVyIG5lZWRzIGxheW91dFRlc3RDb250cm9sbGVyLnF1ZXVlTG9hZApkaWZm
IC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IGRmNzQ0NzNmMDJlNTI4YjQxMGNi
MjYyMjk1OTk5YjI1OWMyMjExZGUuLmZkMzRiMThhZGZjYTMzYmM5OGFmNzU1MTdkZWQ5Njc1Mzg2
NzVmODUgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
MyBAQAorMjAxMi0wOS0xOCAgQm8gTGl1ICA8Ym9saXVAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFJlbGFuZCAiQWRkIGluLXBsYWNlIHJlbG9hZCBiZWhhdmlvciB0byBJbWFnZXNFbmFibGVkIHNl
dHRpbmciIHdpdGggb3B0aW1pemF0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTcwNTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSZWxhbmRpbmcgMTI4NzgwLCAxMjg2NzYsIDEyODY0NS4gV2FzIHJl
dmVydGVkIGluIDEyODkxNCBkdWUgdG8KKyAgICAgICAgcGVyZm9ybWFuY2UgcmVncmVzc2lvbiBp
biBDaHJvbWl1bS4KKworICAgICAgICBOZXcgY2hhbmdlcyBpbiBhZGRpdGlvbiB0byBwcmV2aW91
c2x5IHJldmVydGVkIHBhdGNoZXM6CisKKyAgICAgICAgUmVtb3ZlIENhY2hlZFJlc291cmNlTG9h
ZGVyOjpzaG91bGREZWZlckltYWdlTG9hZCBjYWxscyBpbgorICAgICAgICBDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6cmVxdWVzdEltYWdlIGFuZAorICAgICAgICBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6
cmVsb2FkSW1hZ2VzSWZOb3REZWZlcnJlZC4gVGhlIHNhbWUgY2FsbCBpcyBtYWRlCisgICAgICAg
IGltbWVkaWF0ZWx5IGFmdGVyIGluIENhY2hlZEltYWdlOjpsb2FkLCBzbyB0aGV5IGFyZSBub3Qg
bmVjZXNzYXJ5LgorCisgICAgICAgIERvIG5vdCBjYWxsIGxvYWQgZm9yIGltYWdlIGluIGxvYWRS
ZXNvdXJjZS9yZXZhbGlkYXRlUmVzb3VyY2Ugc2luY2UKKyAgICAgICAgdGhlIHNhbWUgY2FsbCBp
cyBtYWRlIGFnYWluIGluIHJlcXVlc3RJbWFnZS4KKworICAgICAgICBSZW1vdmVkIHVubmVjZXNz
YXJ5IEZyYW1lLmggaW5jbHVkZXMgaW4gQ2FjaGVkUmVzb3VyY2UgYW5kCisgICAgICAgIENhY2hl
ZEltYWdlLgorCisgICAgICAgIFJlbW92ZWQgZGVhZCBsb2FkKCkgbWV0aG9kIGRlY2xhcmF0aW9u
IGluIENhY2hlZEltYWdlLgorCisgICAgICAgIFVwZGF0ZWQgdGV4dCBleHBlY3RhdGlvbiBmb3Ig
dHdvIGltYWdlLXBlcm1pc3Npb25zIHRlc3RzIHRvIHJlZmxlY3QKKyAgICAgICAgdGhlIHJlbW92
ZWQgY2FsbHMgdG8gYWxsb3dJbWFnZS4KKworICAgICAgICAqIFNvdXJjZS9hdXRvdG9vbHMvc3lt
Ym9scy5maWx0ZXI6CisKIDIwMTItMDktMjAgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21h
bm5AZGlnaWEuY29tPgogCiAgICAgICAgIFtRdF0gUXRXZWJLaXQgbW9kdWxlIGhlYWRlciBpbmNs
dWRlcyBwcml2YXRlIGRlcGVuZGVuY2llcwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165015</attachid>
            <date>2012-09-20 17:02:37 -0700</date>
            <delta_ts>2012-09-21 12:04:29 -0700</delta_ts>
            <desc>Move check logic into CachedImage::load and remove load call at end of requestImage</desc>
            <filename>bug-97055-20120920170127.patch</filename>
            <type>text/plain</type>
            <size>45046</size>
            <attacher name="Bo Liu">boliu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5MTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWQ2ZTA2NTdkOGJmZWRm
ZDRlMmJmNzlhZmE5MzE1MjE5ZGY0MzIxNS4uNWYwOGU1YjcwZmY1OTBhYzJhNGExMjNmNzIwYmYw
MzFjZTg2YjlkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1MCBAQAorMjAxMi0wOS0yMCAgQm8g
TGl1ICA8Ym9saXVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlbGFuZCAiQWRkIGluLXBsYWNl
IHJlbG9hZCBiZWhhdmlvciB0byBJbWFnZXNFbmFibGVkIHNldHRpbmciIHdpdGggb3B0aW1pemF0
aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTcw
NTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWxh
bmRpbmcgMTI4NzgwLCAxMjg2NzYsIDEyODY0NS4gV2FzIHJldmVydGVkIGluIDEyODkxNCBkdWUg
dG8KKyAgICAgICAgcGVyZm9ybWFuY2UgcmVncmVzc2lvbiBpbiBDaHJvbWl1bS4KKworICAgICAg
ICBOZXcgY2hhbmdlcyBpbiBhZGRpdGlvbiB0byBwcmV2aW91c2x5IHJldmVydGVkIHBhdGNoZXM6
CisKKyAgICAgICAgTW92ZSBsb2FkIGNoZWNraW5nIGxvZ2ljIGludG8gQ2FjaGVkSW1hZ2U6Omxv
YWQgYW5kIGRvIG5vdCByZXBlYXQgbG9hZAorICAgICAgICBhdCBlbmQgb2YgQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXI6OlJlcXVlc3RJbWFnZS4KKworICAgICAgICBSZW1vdmVkIHVubmVjZXNzYXJ5IEZy
YW1lLmggaW5jbHVkZXMgaW4gQ2FjaGVkUmVzb3VyY2UgYW5kCisgICAgICAgIENhY2hlZEltYWdl
LgorCisgICAgICAgIFJlbW92ZWQgZGVhZCBsb2FkKCkgbWV0aG9kIGRlY2xhcmF0aW9uIGluIENh
Y2hlZEltYWdlLgorCisgICAgICAgIFVwZGF0ZWQgdGV4dCBleHBlY3RhdGlvbiBmb3IgdHdvIGlt
YWdlLXBlcm1pc3Npb25zIHRlc3RzIHRvIHJlZmxlY3QKKyAgICAgICAgdGhlIHJlbW92ZWQgY2Fs
bHMgdG8gYWxsb3dJbWFnZS4KKworICAgICAgICBUZXN0czogZmFzdC9sb2FkZXIvZGlzcGxheS1p
bWFnZS11bnNldC1hbGxvd3MtY2FjaGVkLWltYWdlLWxvYWQuaHRtbAorICAgICAgICAgICAgICAg
ZmFzdC9sb2FkZXIvZGlzcGxheS1pbWFnZS11bnNldC1jYW4tYmxvY2staW1hZ2UtYW5kLWNhbi1y
ZWxvYWQtaW4tcGxhY2UuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9sb2FkZXIvaW1hZ2VzLWVu
YWJsZWQtdW5zZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1jYW4tcmVsb2FkLWluLXBsYWNlLmh0bWwK
KworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZGlkQmVnaW5Eb2N1bWVudCk6
CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlN1YnJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6
bG9hZCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmg6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFJlc291cmNlOjpkaWRBZGRDbGllbnQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRS
ZXNvdXJjZTo6c3RpbGxOZWVkc0xvYWQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRl
cjo6Q2FjaGVkUmVzb3VyY2VMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3Vy
Y2VMb2FkZXI6OnJlcXVlc3RJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6Y2FuUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxv
YWRlcjo6ZGV0ZXJtaW5lUmV2YWxpZGF0aW9uUG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZFJlc291cmNlTG9hZGVyOjpzZXRBdXRvTG9hZEltYWdlcyk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpzZXRJbWFnZXNFbmFi
bGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpjbGllbnRBbGxv
d3NJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6c2hvdWxk
RGVmZXJJbWFnZUxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6
OnJlbG9hZEltYWdlc0lmTm90RGVmZXJyZWQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAoQ2FjaGVkUmVzb3VyY2VMb2FkZXIpOgorICAg
ICAgICAqIHBhZ2UvU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0SW1hZ2VMb2Fk
aW5nU2V0dGluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OlNldHRpbmdzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpzZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkpOgor
ICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OmltYWdlTG9hZGluZ1NldHRpbmdzVGltZXJGaXJl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6c2V0SW1hZ2VzRW5hYmxlZCk6CisgICAg
ICAgICogcGFnZS9TZXR0aW5ncy5oOgorICAgICAgICAoU2V0dGluZ3MpOgorICAgICAgICAqIHRl
c3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbFNl
dHRpbmdzOjpCYWNrdXA6OkJhY2t1cCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbFNldHRp
bmdzOjpCYWNrdXA6OnJlc3RvcmVUbyk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbFNldHRp
bmdzOjpzZXRJbWFnZXNFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHRl
c3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5oOgorICAgICAgICAoQmFja3VwKToKKyAgICAgICAgKElu
dGVybmFsU2V0dGluZ3MpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5pZGw6
CisKKzIwMTItMDktMTggIEJvIExpdSAgPGJvbGl1QGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZWxhbmQgIkFkZCBpbi1wbGFjZSByZWxvYWQgYmVoYXZpb3IgdG8gSW1hZ2VzRW5hYmxlZCBzZXR0
aW5nIiB3aXRoIG9wdGltaXphdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTk3MDU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgUmVsYW5kaW5nIDEyODc4MCwgMTI4Njc2LCAxMjg2NDUuIFdhcyByZXZl
cnRlZCBpbiAxMjg5MTQgZHVlIHRvCisgICAgICAgIHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb24gaW4g
Q2hyb21pdW0uCisKKyAgICAgICAgTmV3IGNoYW5nZXMgaW4gYWRkaXRpb24gdG8gcHJldmlvdXNs
eSByZXZlcnRlZCBwYXRjaGVzOgorCisgICAgICAgIFJlbW92ZSBDYWNoZWRSZXNvdXJjZUxvYWRl
cjo6c2hvdWxkRGVmZXJJbWFnZUxvYWQgY2FsbHMgaW4KKyAgICAgICAgQ2FjaGVkUmVzb3VyY2VM
b2FkZXI6OnJlcXVlc3RJbWFnZSBhbmQKKyAgICAgICAgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJl
bG9hZEltYWdlc0lmTm90RGVmZXJyZWQuIFRoZSBzYW1lIGNhbGwgaXMgbWFkZQorICAgICAgICBp
bW1lZGlhdGVseSBhZnRlciBpbiBDYWNoZWRJbWFnZTo6bG9hZCwgc28gdGhleSBhcmUgbm90IG5l
Y2Vzc2FyeS4KKworICAgICAgICBEbyBub3QgY2FsbCBsb2FkIGZvciBpbWFnZSBpbiBsb2FkUmVz
b3VyY2UvcmV2YWxpZGF0ZVJlc291cmNlIHNpbmNlCisgICAgICAgIHRoZSBzYW1lIGNhbGwgaXMg
bWFkZSBhZ2FpbiBpbiByZXF1ZXN0SW1hZ2UuCisKKyAgICAgICAgUmVtb3ZlZCB1bm5lY2Vzc2Fy
eSBGcmFtZS5oIGluY2x1ZGVzIGluIENhY2hlZFJlc291cmNlIGFuZAorICAgICAgICBDYWNoZWRJ
bWFnZS4KKworICAgICAgICBSZW1vdmVkIGRlYWQgbG9hZCgpIG1ldGhvZCBkZWNsYXJhdGlvbiBp
biBDYWNoZWRJbWFnZS4KKworICAgICAgICBVcGRhdGVkIHRleHQgZXhwZWN0YXRpb24gZm9yIHR3
byBpbWFnZS1wZXJtaXNzaW9ucyB0ZXN0cyB0byByZWZsZWN0CisgICAgICAgIHRoZSByZW1vdmVk
IGNhbGxzIHRvIGFsbG93SW1hZ2UuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvbG9hZGVyL2Rpc3Bs
YXktaW1hZ2UtdW5zZXQtYWxsb3dzLWNhY2hlZC1pbWFnZS1sb2FkLmh0bWwKKyAgICAgICAgICAg
ICAgIGZhc3QvbG9hZGVyL2Rpc3BsYXktaW1hZ2UtdW5zZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1j
YW4tcmVsb2FkLWluLXBsYWNlLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvbG9hZGVyL2ltYWdl
cy1lbmFibGVkLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS5o
dG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmRpZEJlZ2luRG9jdW1l
bnQpOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1h
Z2U6OmxvYWQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRSZXNvdXJjZTo6ZGlkQWRkQ2xpZW50KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkUmVzb3VyY2U6OnN0aWxsTmVlZHNMb2FkKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VM
b2FkZXI6OkNhY2hlZFJlc291cmNlTG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJl
c291cmNlTG9hZGVyOjpyZXF1ZXN0SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVz
b3VyY2VMb2FkZXI6OmNhblJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3Vy
Y2VMb2FkZXI6OmRldGVybWluZVJldmFsaWRhdGlvblBvbGljeSk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6c2V0QXV0b0xvYWRJbWFnZXMpOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6c2V0SW1hZ2Vz
RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2xpZW50
QWxsb3dzSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnNo
b3VsZERlZmVySW1hZ2VMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9h
ZGVyOjpyZWxvYWRJbWFnZXNJZk5vdERlZmVycmVkKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKENhY2hlZFJlc291cmNlTG9hZGVyKToK
KyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldEltYWdl
TG9hZGluZ1NldHRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpTZXR0aW5ncyk6
CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6c2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5
KToKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjppbWFnZUxvYWRpbmdTZXR0aW5nc1RpbWVy
RmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OnNldEltYWdlc0VuYWJsZWQpOgor
ICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuaDoKKyAgICAgICAgKFNldHRpbmdzKToKKyAgICAgICAg
KiB0ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJu
YWxTZXR0aW5nczo6QmFja3VwOjpCYWNrdXApOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxT
ZXR0aW5nczo6QmFja3VwOjpyZXN0b3JlVG8pOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxT
ZXR0aW5nczo6c2V0SW1hZ2VzRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KiB0ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaDoKKyAgICAgICAgKEJhY2t1cCk6CisgICAgICAg
IChJbnRlcm5hbFNldHRpbmdzKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFsU2V0dGluZ3Mu
aWRsOgorCiAyMDEyLTA5LTIwICBBZGFtIEtsZWluICA8YWRhbWtAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFJlbmFtZSBDb250YWluZXJOb2RlOjpwYXJzZXJBZGRDaGlsZCAicGFyc2VyQXBwZW5k
Q2hpbGQiIGZvciBjb25zaXN0ZW5jeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDg4YTUyYTJmYjJhYjBjZTNhNWM5
OTQ1OWZmMWI0MzhlMTYwMWVjNjguLmQwN2Q4NGFkYzZjMGNjMWZiYThlOTIyNGM2NDI5YjRjN2Iw
MmY3MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1OCBAQAorMjAxMi0wOS0yMCAgQm8gTGl1ICA8
Ym9saXVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlbGFuZCAiQWRkIGluLXBsYWNlIHJlbG9h
ZCBiZWhhdmlvciB0byBJbWFnZXNFbmFibGVkIHNldHRpbmciIHdpdGggb3B0aW1pemF0aW9ucwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTcwNTUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWxhbmRpbmcg
MTI4NzgwLCAxMjg2NzYsIDEyODY0NS4gV2FzIHJldmVydGVkIGluIDEyODkxNCBkdWUgdG8KKyAg
ICAgICAgcGVyZm9ybWFuY2UgcmVncmVzc2lvbiBpbiBDaHJvbWl1bS4KKworICAgICAgICBOZXcg
Y2hhbmdlcyBpbiBhZGRpdGlvbiB0byBwcmV2aW91c2x5IHJldmVydGVkIHBhdGNoZXM6CisKKyAg
ICAgICAgTW92ZSBsb2FkIGNoZWNraW5nIGxvZ2ljIGludG8gQ2FjaGVkSW1hZ2U6OmxvYWQgYW5k
IGRvIG5vdCByZXBlYXQgbG9hZAorICAgICAgICBhdCBlbmQgb2YgQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI6OlJlcXVlc3RJbWFnZS4KKworICAgICAgICBSZW1vdmVkIHVubmVjZXNzYXJ5IEZyYW1lLmgg
aW5jbHVkZXMgaW4gQ2FjaGVkUmVzb3VyY2UgYW5kCisgICAgICAgIENhY2hlZEltYWdlLgorCisg
ICAgICAgIFJlbW92ZWQgZGVhZCBsb2FkKCkgbWV0aG9kIGRlY2xhcmF0aW9uIGluIENhY2hlZElt
YWdlLgorCisgICAgICAgIFVwZGF0ZWQgdGV4dCBleHBlY3RhdGlvbiBmb3IgdHdvIGltYWdlLXBl
cm1pc3Npb25zIHRlc3RzIHRvIHJlZmxlY3QKKyAgICAgICAgdGhlIHJlbW92ZWQgY2FsbHMgdG8g
YWxsb3dJbWFnZS4KKworICAgICAgICAqIHdpbi9XZWJLaXQyLmRlZjoKKworMjAxMi0wOS0xOCAg
Qm8gTGl1ICA8Ym9saXVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlbGFuZCAiQWRkIGluLXBs
YWNlIHJlbG9hZCBiZWhhdmlvciB0byBJbWFnZXNFbmFibGVkIHNldHRpbmciIHdpdGggb3B0aW1p
emF0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTcwNTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBS
ZWxhbmRpbmcgMTI4NzgwLCAxMjg2NzYsIDEyODY0NS4gV2FzIHJldmVydGVkIGluIDEyODkxNCBk
dWUgdG8KKyAgICAgICAgcGVyZm9ybWFuY2UgcmVncmVzc2lvbiBpbiBDaHJvbWl1bS4KKworICAg
ICAgICBOZXcgY2hhbmdlcyBpbiBhZGRpdGlvbiB0byBwcmV2aW91c2x5IHJldmVydGVkIHBhdGNo
ZXM6CisKKyAgICAgICAgUmVtb3ZlIENhY2hlZFJlc291cmNlTG9hZGVyOjpzaG91bGREZWZlcklt
YWdlTG9hZCBjYWxscyBpbgorICAgICAgICBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdElt
YWdlIGFuZAorICAgICAgICBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVsb2FkSW1hZ2VzSWZOb3RE
ZWZlcnJlZC4gVGhlIHNhbWUgY2FsbCBpcyBtYWRlCisgICAgICAgIGltbWVkaWF0ZWx5IGFmdGVy
IGluIENhY2hlZEltYWdlOjpsb2FkLCBzbyB0aGV5IGFyZSBub3QgbmVjZXNzYXJ5LgorCisgICAg
ICAgIERvIG5vdCBjYWxsIGxvYWQgZm9yIGltYWdlIGluIGxvYWRSZXNvdXJjZS9yZXZhbGlkYXRl
UmVzb3VyY2Ugc2luY2UKKyAgICAgICAgdGhlIHNhbWUgY2FsbCBpcyBtYWRlIGFnYWluIGluIHJl
cXVlc3RJbWFnZS4KKworICAgICAgICBSZW1vdmVkIHVubmVjZXNzYXJ5IEZyYW1lLmggaW5jbHVk
ZXMgaW4gQ2FjaGVkUmVzb3VyY2UgYW5kCisgICAgICAgIENhY2hlZEltYWdlLgorCisgICAgICAg
IFJlbW92ZWQgZGVhZCBsb2FkKCkgbWV0aG9kIGRlY2xhcmF0aW9uIGluIENhY2hlZEltYWdlLgor
CisgICAgICAgIFVwZGF0ZWQgdGV4dCBleHBlY3RhdGlvbiBmb3IgdHdvIGltYWdlLXBlcm1pc3Np
b25zIHRlc3RzIHRvIHJlZmxlY3QKKyAgICAgICAgdGhlIHJlbW92ZWQgY2FsbHMgdG8gYWxsb3dJ
bWFnZS4KKworICAgICAgICAqIHdpbi9XZWJLaXQyLmRlZjoKKwogMjAxMi0wOS0xNyAgSm9uIExl
ZSAgPGpvbmxlZUBhcHBsZS5jb20+CiAKICAgICAgICAgU2FmYXJpIDYgbm90aWZpY2F0aW9ucycg
b25jbGljayBoYW5kbGVycyBjYW4ndCBjYWxsIHdpbmRvdy5vcGVuKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAu
aW4KaW5kZXggZGZmODMwZDUwMzg0OTJmZDJkZTQxMGNmMjVmODMyOTM3MjIwMTAzOC4uN2MzNjcy
NjY5MGIzM2MzNzM3ZDNmN2I4NzY1NTA0MzdmY2ZiNzExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4K
QEAgLTg1Miw2ICs4NTIsNyBAQCBfX1pON1dlYkNvcmU4R3JhZGllbnRDMUVSS05TXzEwRmxvYXRQ
b2ludEVTM18KIF9fWk43V2ViQ29yZThQb3NpdGlvbkMxRU4zV1RGMTBQYXNzUmVmUHRySU5TXzRO
b2RlRUVFaU5TMF8xMEFuY2hvclR5cGVFCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MxNHNldEphdmFF
bmFibGVkRWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczE1c2V0V2ViR0xFbmFibGVkRWIKK19fWk43
V2ViQ29yZThTZXR0aW5nczE2c2V0SW1hZ2VzRW5hYmxlZEViCiBfX1pON1dlYkNvcmU4U2V0dGlu
Z3MxNnNldFNjcmlwdEVuYWJsZWRFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMTZzZXRVc2VzUGFn
ZUNhY2hlRWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczE3c2V0UGx1Z2luc0VuYWJsZWRFYgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggYjI2YjZkNGNjMjJmYWU3NTc4ZDA0
NGY2MTA1MTYxOTI0YjA2ZmM1Zi4uNDE3NzJjYWVlOGQyZDkzMmRkM2Y2YmVjMmE4YmJhZmMwZGNl
NWYxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC02NDcsNiArNjQ3
LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6ZGlkQmVnaW5Eb2N1bWVudChib29sIGRpc3BhdGNoKQog
ICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmluaXRDb250ZW50U2VjdXJpdHlQb2xpY3koKTsKIAog
ICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnNldHRpbmdzKCk7
CisgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+c2V0SW1h
Z2VzRW5hYmxlZCghc2V0dGluZ3MgfHwgc2V0dGluZ3MtPmFyZUltYWdlc0VuYWJsZWQoKSk7CiAg
ICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+c2V0QXV0b0xv
YWRJbWFnZXMoc2V0dGluZ3MgJiYgc2V0dGluZ3MtPmxvYWRzSW1hZ2VzQXV0b21hdGljYWxseSgp
KTsKIAogICAgIGlmIChtX2RvY3VtZW50TG9hZGVyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1N1YnJlc291cmNlTG9hZGVyLmNwcAppbmRleCBmZjNiZTZlZGZmOGI5N2ZjNTVhMDg0OGI0YzFh
ZjAyZjA4MWI0NjE2Li41NmRlMGQzNDEzM2MzZjVhNDcyYmZjMmJjNmY0ZTVjZGYzODMwM2ZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKQEAgLTE2Nywx
MSArMTY3LDEzIEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXNv
dXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291CiAgICAgCiAgICAgUmVzb3VyY2VM
b2FkZXI6OndpbGxTZW5kUmVxdWVzdChuZXdSZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKICAg
ICBpZiAoIXByZXZpb3VzVVJMLmlzTnVsbCgpICYmICFuZXdSZXF1ZXN0LmlzTnVsbCgpICYmIHBy
ZXZpb3VzVVJMICE9IG5ld1JlcXVlc3QudXJsKCkpIHsKLSAgICAgICAgaWYgKCFtX2RvY3VtZW50
LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5jYW5SZXF1ZXN0KG1fcmVzb3VyY2UtPnR5cGUoKSwg
bmV3UmVxdWVzdC51cmwoKSkpIHsKLSAgICAgICAgICAgIGNhbmNlbCgpOwotICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICBpZiAobV9kb2N1bWVudC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+
Y2FuUmVxdWVzdChtX3Jlc291cmNlLT50eXBlKCksIG5ld1JlcXVlc3QudXJsKCkpKSB7CisgICAg
ICAgICAgICBpZiAobV9yZXNvdXJjZS0+dHlwZSgpICE9IENhY2hlZFJlc291cmNlOjpJbWFnZVJl
c291cmNlIHx8ICFtX2RvY3VtZW50LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5zaG91bGREZWZl
ckltYWdlTG9hZChuZXdSZXF1ZXN0LnVybCgpKSkgeworICAgICAgICAgICAgICAgIG1fcmVzb3Vy
Y2UtPndpbGxTZW5kUmVxdWVzdChuZXdSZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgbV9y
ZXNvdXJjZS0+d2lsbFNlbmRSZXF1ZXN0KG5ld1JlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOwor
ICAgICAgICBjYW5jZWwoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkSW1hZ2UuY3BwCmluZGV4IDQzMTY2MTZiMzY0NTNhMjA4NjVlNGQyZDZlMDI4OTMw
YWYxNmI5ZDMuLmRkMzY1ZjEwY2M4N2E5ODIxNjliMGU1YmY5YjZmMTBmYmZmOGZkOGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApAQCAtMjksNyArMjks
NiBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ2FjaGVk
UmVzb3VyY2VDbGllbnRXYWxrZXIuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5o
IgotI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNp
bmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCkBAIC03
OSw3ICs3OCw3IEBAIENhY2hlZEltYWdlOjp+Q2FjaGVkSW1hZ2UoKQogCiB2b2lkIENhY2hlZElt
YWdlOjpsb2FkKENhY2hlZFJlc291cmNlTG9hZGVyKiBjYWNoZWRSZXNvdXJjZUxvYWRlciwgY29u
c3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zKQogewotICAgIGlmICghY2FjaGVkUmVz
b3VyY2VMb2FkZXIgfHwgY2FjaGVkUmVzb3VyY2VMb2FkZXItPmF1dG9Mb2FkSW1hZ2VzKCkpCisg
ICAgaWYgKHN0aWxsTmVlZHNMb2FkKCkgJiYgKCFjYWNoZWRSZXNvdXJjZUxvYWRlciB8fCAhY2Fj
aGVkUmVzb3VyY2VMb2FkZXItPnNob3VsZERlZmVySW1hZ2VMb2FkKG1fcmVzb3VyY2VSZXF1ZXN0
LnVybCgpKSkpCiAgICAgICAgIENhY2hlZFJlc291cmNlOjpsb2FkKGNhY2hlZFJlc291cmNlTG9h
ZGVyLCBvcHRpb25zKTsKICAgICBlbHNlCiAgICAgICAgIHNldExvYWRpbmcoZmFsc2UpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAppbmRleCA0ODY1YzdlMjQ2NjVi
YTYzOWIwZTFhOTZiYzYyNTI2MGQ3M2FkMDFiLi4wNzhmN2FiMWM2MmZmODZiODE1YjlmMDY1NDYz
MGQzNjAxOTI5M2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2Uu
aApAQCAtODIsOCArODIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNob3VsZElnbm9y
ZUhUVFBTdGF0dXNDb2RlRXJyb3JzKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdmly
dHVhbCBib29sIGlzSW1hZ2UoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgYm9vbCBzdGls
bE5lZWRzTG9hZCgpIGNvbnN0IHsgcmV0dXJuICFlcnJvck9jY3VycmVkKCkgJiYgc3RhdHVzKCkg
PT0gVW5rbm93biAmJiAhaXNMb2FkaW5nKCk7IH0KLSAgICB2b2lkIGxvYWQoKTsKKyAgICB2aXJ0
dWFsIGJvb2wgc3RpbGxOZWVkc0xvYWQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiAhZXJyb3JP
Y2N1cnJlZCgpICYmIHN0YXR1cygpID09IFVua25vd24gJiYgIWlzTG9hZGluZygpOyB9CiAKICAg
ICAvLyBJbWFnZU9ic2VydmVyCiAgICAgdmlydHVhbCB2b2lkIGRlY29kZWRTaXplQ2hhbmdlZChj
b25zdCBJbWFnZSogaW1hZ2UsIGludCBkZWx0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCA0M2MzZDE0NGY4MmYxNTY4OGNmNjZjMDU0
YTA0ZGE5NjAxOWI5ZDExLi4zM2QxYmE4MjNiYzZmZDg2NTcyZTZhOTQ2MWFjNWJkNzU2M2EwNmJi
IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAK
QEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgogI2lu
Y2x1ZGUgIkNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oIgogI2luY2x1ZGUgIkRvY3VtZW50Lmgi
Ci0jaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgogI2lu
Y2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIktVUkwuaCIKQEAg
LTM5MCw3ICszODksNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpkaWRBZGRDbGllbnQoQ2FjaGVk
UmVzb3VyY2VDbGllbnQqIGMpCiAgICAgICAgIG1fY2xpZW50cy5hZGQoYyk7CiAgICAgICAgIG1f
Y2xpZW50c0F3YWl0aW5nQ2FsbGJhY2sucmVtb3ZlKGMpOwogICAgIH0KLSAgICBpZiAoIWlzTG9h
ZGluZygpKQorICAgIGlmICghaXNMb2FkaW5nKCkgJiYgIXN0aWxsTmVlZHNMb2FkKCkpCiAgICAg
ICAgIGMtPm5vdGlmeUZpbmlzaGVkKHRoaXMpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IDBjYWQzZWU3Y2E0MjgxMmVhYTNlZmU2MDAz
MTE2NDQ5ZjdhNjk2YTEuLmI3MzlkNjhhZjgxZjJkYjdiNDg2MmRmMTU5YWFjZjE1OGUwYjU3MzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCkBAIC00
NSw3ICs0NSw2IEBAIGNsYXNzIENhY2hlZE1ldGFkYXRhOwogY2xhc3MgQ2FjaGVkUmVzb3VyY2VD
bGllbnQ7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZUhhbmRsZUJhc2U7CiBjbGFzcyBDYWNoZWRSZXNv
dXJjZUxvYWRlcjsKLWNsYXNzIEZyYW1lOwogY2xhc3MgSW5zcGVjdG9yUmVzb3VyY2U7CiBjbGFz
cyBQdXJnZWFibGVCdWZmZXI7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKQEAgLTE0NCw2ICsxNDMs
NyBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzTG9hZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fbG9h
ZGluZzsgfQogICAgIHZvaWQgc2V0TG9hZGluZyhib29sIGIpIHsgbV9sb2FkaW5nID0gYjsgfQor
ICAgIHZpcnR1YWwgYm9vbCBzdGlsbE5lZWRzTG9hZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAKICAgICBTdWJyZXNvdXJjZUxvYWRlciogbG9hZGVyKCkgeyByZXR1cm4gbV9sb2FkZXIuZ2V0
KCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZUxvYWRlci5jcHAKaW5kZXggMzUzYTYyYWE2NDBkYmRkNWU1MTI3ZDkwYjEwODQ1NmQ0YWM3
Y2VkYi4uNmQ5ZGRhYzdjYjZkNTUzOTAxOTBlOWY1NzRmZjQ4NzIzNTNlMGI4YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3Bw
CkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKICNpbmNsdWRlICJQ
aW5nTG9hZGVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgiCisjaW5jbHVk
ZSAiU2NoZW1lUmVnaXN0cnkuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1
ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CkBAIC0xMTUsNiAr
MTE2LDcgQEAgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OkNhY2hlZFJlc291cmNlTG9hZGVyKERvY3Vt
ZW50KiBkb2N1bWVudCkKICAgICAsIG1fcmVxdWVzdENvdW50KDApCiAgICAgLCBtX2dhcmJhZ2VD
b2xsZWN0RG9jdW1lbnRSZXNvdXJjZXNUaW1lcih0aGlzLCAmQ2FjaGVkUmVzb3VyY2VMb2FkZXI6
OmdhcmJhZ2VDb2xsZWN0RG9jdW1lbnRSZXNvdXJjZXNUaW1lckZpcmVkKQogICAgICwgbV9hdXRv
TG9hZEltYWdlcyh0cnVlKQorICAgICwgbV9pbWFnZXNFbmFibGVkKHRydWUpCiAgICAgLCBtX2Fs
bG93U3RhbGVSZXNvdXJjZXMoZmFsc2UpCiB7CiB9CkBAIC0xNTksMTAgKzE2MSw3IEBAIENhY2hl
ZFJlc291cmNlSGFuZGxlPENhY2hlZEltYWdlPiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVz
dEltYWdlKFJlc291cmNlUmVxCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogICAg
IH0KLSAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRJbWFnZT4gcmVzb3VyY2Uoc3RhdGlj
X2Nhc3Q8Q2FjaGVkSW1hZ2UqPihyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OkltYWdl
UmVzb3VyY2UsIHJlcXVlc3QsIFN0cmluZygpLCBkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25z
KCkpLmdldCgpKSk7Ci0gICAgaWYgKGF1dG9Mb2FkSW1hZ2VzKCkgJiYgcmVzb3VyY2UgJiYgcmVz
b3VyY2UtPnN0aWxsTmVlZHNMb2FkKCkpCi0gICAgICAgIHJlc291cmNlLT5sb2FkKHRoaXMsIGRl
ZmF1bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKSk7Ci0gICAgcmV0dXJuIHJlc291cmNlOworICAg
IHJldHVybiBzdGF0aWNfY2FzdDxDYWNoZWRJbWFnZSo+KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRS
ZXNvdXJjZTo6SW1hZ2VSZXNvdXJjZSwgcmVxdWVzdCwgU3RyaW5nKCksIGRlZmF1bHRDYWNoZWRS
ZXNvdXJjZU9wdGlvbnMoKSkuZ2V0KCkpOwogfQogCiBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNo
ZWRGb250PiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdEZvbnQoUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0KQpAQCAtMzYyLDEyICszNjEsNiBAQCBib29sIENhY2hlZFJlc291cmNlTG9hZGVy
OjpjYW5SZXF1ZXN0KENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IEtVUkwmIHVybAog
ICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkltYWdlUmVzb3VyY2U6CiAgICAgICAgIGlmICghbV9k
b2N1bWVudC0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmFsbG93SW1hZ2VGcm9tU291cmNlKHVy
bCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgaWYgKGZyYW1lKCkpIHsK
LSAgICAgICAgICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGZyYW1lKCktPnNldHRpbmdzKCk7Ci0g
ICAgICAgICAgICBpZiAoIWZyYW1lKCktPmxvYWRlcigpLT5jbGllbnQoKS0+YWxsb3dJbWFnZSgh
c2V0dGluZ3MgfHwgc2V0dGluZ3MtPmFyZUltYWdlc0VuYWJsZWQoKSwgdXJsKSkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBDYWNoZWRSZXNvdXJjZTo6Rm9udFJlc291cmNlOiB7CiAgICAgICAgIGlmICghbV9kb2N1bWVu
dC0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmFsbG93Rm9udEZyb21Tb3VyY2UodXJsKSkKQEAg
LTUxNCwxMSArNTA3LDExIEBAIENhY2hlZFJlc291cmNlTG9hZGVyOjpSZXZhbGlkYXRpb25Qb2xp
Y3kgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRldGVybWluZVJldmFsaWRhCiB7CiAgICAgaWYgKCFl
eGlzdGluZ1Jlc291cmNlKQogICAgICAgICByZXR1cm4gTG9hZDsKLSAgICAKKwogICAgIC8vIFdl
IGFscmVhZHkgaGF2ZSBhIHByZWxvYWQgZ29pbmcgZm9yIHRoaXMgVVJMLgogICAgIGlmIChmb3JQ
cmVsb2FkICYmIGV4aXN0aW5nUmVzb3VyY2UtPmlzUHJlbG9hZGVkKCkpCiAgICAgICAgIHJldHVy
biBVc2U7Ci0gICAgCisKICAgICAvLyBJZiB0aGUgc2FtZSBVUkwgaGFzIGJlZW4gbG9hZGVkIGFz
IGEgZGlmZmVyZW50IHR5cGUsIHdlIG5lZWQgdG8gcmVsb2FkLgogICAgIGlmIChleGlzdGluZ1Jl
c291cmNlLT50eXBlKCkgIT0gdHlwZSkgewogICAgICAgICBMT0coUmVzb3VyY2VMb2FkaW5nLCAi
Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRldGVybWluZVJldmFsaWRhdGlvblBvbGljeSByZWxvYWRp
bmcgZHVlIHRvIHR5cGUgbWlzbWF0Y2guIik7CkBAIC01MzMsNiArNTI2LDExIEBAIENhY2hlZFJl
c291cmNlTG9hZGVyOjpSZXZhbGlkYXRpb25Qb2xpY3kgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRl
dGVybWluZVJldmFsaWRhCiAgICAgLy8gb2YgdGhpbmdzIGFib3V0IGhvdyByZXZhbGlkYXRpb24g
d29ya3MgdGhhdCBtYW51YWwgaGVhZGVycyB2aW9sYXRlLCBzbyBwdW50IHRvIFJlbG9hZCBpbnN0
ZWFkLgogICAgIGlmIChyZXF1ZXN0LmlzQ29uZGl0aW9uYWwoKSkKICAgICAgICAgcmV0dXJuIFJl
bG9hZDsKKworICAgIC8vIERvIG5vdCBsb2FkIGZyb20gY2FjaGUgaWYgaW1hZ2VzIGFyZSBub3Qg
ZW5hYmxlZC4gVGhlIGxvYWQgZm9yIHRoaXMgaW1hZ2Ugd2lsbCBiZSBibG9ja2VkCisgICAgLy8g
aW4gQ2FjaGVkSW1hZ2U6OmxvYWQuCisgICAgaWYgKGV4aXN0aW5nUmVzb3VyY2UtPnR5cGUoKSA9
PSBDYWNoZWRSZXNvdXJjZTo6SW1hZ2VSZXNvdXJjZSAmJiAhY2xpZW50QWxsb3dzSW1hZ2UoZXhp
c3RpbmdSZXNvdXJjZS0+dXJsKCkpKQorICAgICAgICByZXR1cm4gUmVsb2FkOwogICAgIAogICAg
IC8vIERvbid0IHJlbG9hZCByZXNvdXJjZXMgd2hpbGUgcGFzdGluZy4KICAgICBpZiAobV9hbGxv
d1N0YWxlUmVzb3VyY2VzKQpAQCAtNjI5LDE0ICs2MjcsNDAgQEAgdm9pZCBDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6c2V0QXV0b0xvYWRJbWFnZXMoYm9vbCBlbmFibGUpCiAgICAgaWYgKCFtX2F1dG9M
b2FkSW1hZ2VzKQogICAgICAgICByZXR1cm47CiAKKyAgICByZWxvYWRJbWFnZXNJZk5vdERlZmVy
cmVkKCk7Cit9CisKK3ZvaWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnNldEltYWdlc0VuYWJsZWQo
Ym9vbCBlbmFibGUpCit7CisgICAgaWYgKGVuYWJsZSA9PSBtX2ltYWdlc0VuYWJsZWQpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1faW1hZ2VzRW5hYmxlZCA9IGVuYWJsZTsKKworICAgIGlmICgh
bV9pbWFnZXNFbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAgICByZWxvYWRJbWFnZXNJZk5v
dERlZmVycmVkKCk7Cit9CisKK2Jvb2wgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNsaWVudEFsbG93
c0ltYWdlKGNvbnN0IEtVUkwmIHVybCkgY29uc3QKK3sKKyAgICByZXR1cm4gIWZyYW1lKCkgfHwg
ZnJhbWUoKS0+bG9hZGVyKCktPmNsaWVudCgpLT5hbGxvd0ltYWdlKG1faW1hZ2VzRW5hYmxlZCwg
dXJsKTsKK30KKworYm9vbCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6c2hvdWxkRGVmZXJJbWFnZUxv
YWQoY29uc3QgS1VSTCYgdXJsKSBjb25zdAoreworICAgIHJldHVybiAhY2xpZW50QWxsb3dzSW1h
Z2UodXJsKSB8fCAhbV9hdXRvTG9hZEltYWdlczsKK30KKwordm9pZCBDYWNoZWRSZXNvdXJjZUxv
YWRlcjo6cmVsb2FkSW1hZ2VzSWZOb3REZWZlcnJlZCgpCit7CiAgICAgRG9jdW1lbnRSZXNvdXJj
ZU1hcDo6aXRlcmF0b3IgZW5kID0gbV9kb2N1bWVudFJlc291cmNlcy5lbmQoKTsKICAgICBmb3Ig
KERvY3VtZW50UmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGl0ID0gbV9kb2N1bWVudFJlc291cmNlcy5i
ZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291
cmNlID0gaXQtPnNlY29uZC5nZXQoKTsKICAgICAgICAgaWYgKHJlc291cmNlLT50eXBlKCkgPT0g
Q2FjaGVkUmVzb3VyY2U6OkltYWdlUmVzb3VyY2UpIHsKLSAgICAgICAgICAgIENhY2hlZEltYWdl
KiBpbWFnZSA9IGNvbnN0X2Nhc3Q8Q2FjaGVkSW1hZ2UqPihzdGF0aWNfY2FzdDxjb25zdCBDYWNo
ZWRJbWFnZSo+KHJlc291cmNlKSk7Ci0KLSAgICAgICAgICAgIGlmIChpbWFnZS0+c3RpbGxOZWVk
c0xvYWQoKSkKLSAgICAgICAgICAgICAgICBpbWFnZS0+bG9hZCh0aGlzLCBkZWZhdWx0Q2FjaGVk
UmVzb3VyY2VPcHRpb25zKCkpOworICAgICAgICAgICAgLy8gQ2hlY2sgaGFwcGVucyBpbiBDYWNo
ZWRJbWFnZTo6bG9hZC4KKyAgICAgICAgICAgIGNvbnN0X2Nhc3Q8Q2FjaGVkUmVzb3VyY2UqPihy
ZXNvdXJjZSktPmxvYWQodGhpcywgZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpKTsKICAg
ICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlTG9hZGVyLmgKaW5kZXggZjQ3NTVjMjJmZDhkMmYxYzJhMGU4ZTZkYTgyZTdm
OWI1MjNhMTlmYi4uMjFlNGYzOTFkYmI0ODIxNmM0NjU0Mzc4OTYzZjkxYTc0MDVhNzI2MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVy
LmgKQEAgLTk3LDYgKzk3LDEwIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgYXV0b0xvYWRJbWFnZXMo
KSBjb25zdCB7IHJldHVybiBtX2F1dG9Mb2FkSW1hZ2VzOyB9CiAgICAgdm9pZCBzZXRBdXRvTG9h
ZEltYWdlcyhib29sKTsKKworICAgIHZvaWQgc2V0SW1hZ2VzRW5hYmxlZChib29sKTsKKworICAg
IGJvb2wgc2hvdWxkRGVmZXJJbWFnZUxvYWQoY29uc3QgS1VSTCYpIGNvbnN0OwogICAgIAogICAg
IENhY2hlUG9saWN5IGNhY2hlUG9saWN5KCkgY29uc3Q7CiAgICAgCkBAIC0xMzUsNiArMTM5LDkg
QEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZ2FyYmFnZUNvbGxlY3REb2N1bWVudFJlc291cmNlc1Rp
bWVyRmlyZWQoVGltZXI8Q2FjaGVkUmVzb3VyY2VMb2FkZXI+Kik7CiAgICAgdm9pZCBwZXJmb3Jt
UG9zdExvYWRBY3Rpb25zKCk7CisKKyAgICBib29sIGNsaWVudEFsbG93c0ltYWdlKGNvbnN0IEtV
UkwmKSBjb25zdDsKKyAgICB2b2lkIHJlbG9hZEltYWdlc0lmTm90RGVmZXJyZWQoKTsKICAgICAK
ICAgICBIYXNoU2V0PFN0cmluZz4gbV92YWxpZGF0ZWRVUkxzOwogICAgIG11dGFibGUgRG9jdW1l
bnRSZXNvdXJjZU1hcCBtX2RvY3VtZW50UmVzb3VyY2VzOwpAQCAtMTUyLDggKzE1OSw5IEBAIHBy
aXZhdGU6CiAKICAgICBUaW1lcjxDYWNoZWRSZXNvdXJjZUxvYWRlcj4gbV9nYXJiYWdlQ29sbGVj
dERvY3VtZW50UmVzb3VyY2VzVGltZXI7CiAKLSAgICAvLyAzMCBiaXRzIGxlZnQKKyAgICAvLyAy
OSBiaXRzIGxlZnQKICAgICBib29sIG1fYXV0b0xvYWRJbWFnZXMgOiAxOworICAgIGJvb2wgbV9p
bWFnZXNFbmFibGVkIDogMTsKICAgICBib29sIG1fYWxsb3dTdGFsZVJlc291cmNlcyA6IDE7CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCmluZGV4IGRmNDI1OTY0ZGU2MTFkYjUzOGY5Y2Ji
Y2M3NjdkMjQyZTEzM2VkMTcuLjMwNjY2YzU2MTk4MzIzOWI4ZDk4OWQyODMzMTBjZjJmNmI0NmMz
YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCkBAIC00NiwxMCArNDYsMTIgQEAgdXNpbmcg
bmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgdm9pZCBzZXRM
b2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHlJbkFsbEZyYW1lcyhQYWdlKiBwYWdlKQorc3RhdGljIHZv
aWQgc2V0SW1hZ2VMb2FkaW5nU2V0dGluZ3MoUGFnZSogcGFnZSkKIHsKLSAgICBmb3IgKEZyYW1l
KiBmcmFtZSA9IHBhZ2UtPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgp
LT50cmF2ZXJzZU5leHQoKSkKKyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IHBhZ2UtPm1haW5GcmFt
ZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkgeworICAg
ICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+c2V0SW1hZ2Vz
RW5hYmxlZChwYWdlLT5zZXR0aW5ncygpLT5hcmVJbWFnZXNFbmFibGVkKCkpOwogICAgICAgICBm
cmFtZS0+ZG9jdW1lbnQoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+c2V0QXV0b0xvYWRJbWFn
ZXMocGFnZS0+c2V0dGluZ3MoKS0+bG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KCkpOworICAgIH0K
IH0KIAogLy8gU2V0cyB0aGUgZW50cnkgaW4gdGhlIGZvbnQgbWFwIGZvciB0aGUgZ2l2ZW4gc2Ny
aXB0LiBJZiBmYW1pbHkgaXMgdGhlIGVtcHR5IHN0cmluZywgcmVtb3ZlcyB0aGUgZW50cnkgaW5z
dGVhZC4KQEAgLTI5MSw3ICsyOTMsNyBAQCBTZXR0aW5nczo6U2V0dGluZ3MoUGFnZSogcGFnZSkK
ICAgICAsIG1fd2luZG93Rm9jdXNSZXN0cmljdGVkKHRydWUpCiAgICAgLCBtX2RpYWdub3N0aWNM
b2dnaW5nRW5hYmxlZChmYWxzZSkKICAgICAsIG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5n
RW5hYmxlZChmYWxzZSkKLSAgICAsIG1fbG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5VGltZXIodGhp
cywgJlNldHRpbmdzOjpsb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHlUaW1lckZpcmVkKQorICAgICwg
bV9zZXRJbWFnZUxvYWRpbmdTZXR0aW5nc1RpbWVyKHRoaXMsICZTZXR0aW5nczo6aW1hZ2VMb2Fk
aW5nU2V0dGluZ3NUaW1lckZpcmVkKQogICAgICwgbV9pbmNyZW1lbnRhbFJlbmRlcmluZ1N1cHBy
ZXNzaW9uVGltZW91dEluU2Vjb25kcyhkZWZhdWx0SW5jcmVtZW50YWxSZW5kZXJpbmdTdXBwcmVz
c2lvblRpbWVvdXRJblNlY29uZHMpCiB7CiAgICAgLy8gQSBGcmFtZSBtYXkgbm90IGhhdmUgYmVl
biBjcmVhdGVkIHlldCwgc28gd2UgaW5pdGlhbGl6ZSB0aGUgQXRvbWljU3RyaW5nCkBAIC00NjYs
MTIgKzQ2OCwxMiBAQCB2b2lkIFNldHRpbmdzOjpzZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHko
Ym9vbCBsb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkpCiAgICAgLy8gU3RhcnRpbmcgdGhlc2UgbG9h
ZHMgc3luY2hyb25vdXNseSBpcyBub3QgaW1wb3J0YW50LiAgQnkgcHV0dGluZyBpdCBvbiBhIDAt
ZGVsYXksIHByb3Blcmx5IGNsb3NpbmcgdGhlIFBhZ2UgY2FuY2VscyB0aGVtCiAgICAgLy8gYmVm
b3JlIHRoZXkgaGF2ZSBhIGNoYW5jZSB0byByZWFsbHkgc3RhcnQuCiAgICAgLy8gU2VlIGh0dHA6
Ly93ZWJraXQub3JnL2IvNjA1NzIgZm9yIG1vcmUgZGlzY3Vzc2lvbi4KLSAgICBtX2xvYWRzSW1h
Z2VzQXV0b21hdGljYWxseVRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKKyAgICBtX3NldEltYWdlTG9h
ZGluZ1NldHRpbmdzVGltZXIuc3RhcnRPbmVTaG90KDApOwogfQogCi12b2lkIFNldHRpbmdzOjps
b2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHlUaW1lckZpcmVkKFRpbWVyPFNldHRpbmdzPiopCit2b2lk
IFNldHRpbmdzOjppbWFnZUxvYWRpbmdTZXR0aW5nc1RpbWVyRmlyZWQoVGltZXI8U2V0dGluZ3M+
KikKIHsKLSAgICBzZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHlJbkFsbEZyYW1lcyhtX3BhZ2Up
OworICAgIHNldEltYWdlTG9hZGluZ1NldHRpbmdzKG1fcGFnZSk7CiB9CiAKIHZvaWQgU2V0dGlu
Z3M6OnNldExvYWRzU2l0ZUljb25zSWdub3JpbmdJbWFnZUxvYWRpbmdTZXR0aW5nKGJvb2wgbG9h
ZHNTaXRlSWNvbnMpCkBAIC01MTcsNiArNTE5LDkgQEAgdm9pZCBTZXR0aW5nczo6c2V0SmF2YUVu
YWJsZWRGb3JMb2NhbEZpbGVzKGJvb2wgaXNKYXZhRW5hYmxlZEZvckxvY2FsRmlsZXMpCiB2b2lk
IFNldHRpbmdzOjpzZXRJbWFnZXNFbmFibGVkKGJvb2wgYXJlSW1hZ2VzRW5hYmxlZCkKIHsKICAg
ICBtX2FyZUltYWdlc0VuYWJsZWQgPSBhcmVJbWFnZXNFbmFibGVkOworCisgICAgLy8gU2VlIGNv
bW1lbnQgaW4gc2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5LgorICAgIG1fc2V0SW1hZ2VMb2Fk
aW5nU2V0dGluZ3NUaW1lci5zdGFydE9uZVNob3QoMCk7CiB9CiAKIHZvaWQgU2V0dGluZ3M6OnNl
dE1lZGlhRW5hYmxlZChib29sIGlzTWVkaWFFbmFibGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9TZXR0aW5ncy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCmlu
ZGV4IDgzOTg2ZjY5NzBiZmQyOGFlMjhlZmE2Yzg5ZDFmYWQ1NDk1NjhiMGEuLmMxOGRmZDczMDZi
NTk1NTJmZjM0MmJkMTdjMGZjMjVjYTU3ZjczMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2V0dGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKQEAg
LTgxOCw4ICs4MTgsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgYm9vbCBtX3Nj
cm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQgOiAxOwogCi0gICAgICAgIFRpbWVyPFNl
dHRpbmdzPiBtX2xvYWRzSW1hZ2VzQXV0b21hdGljYWxseVRpbWVyOwotICAgICAgICB2b2lkIGxv
YWRzSW1hZ2VzQXV0b21hdGljYWxseVRpbWVyRmlyZWQoVGltZXI8U2V0dGluZ3M+Kik7CisgICAg
ICAgIFRpbWVyPFNldHRpbmdzPiBtX3NldEltYWdlTG9hZGluZ1NldHRpbmdzVGltZXI7CisgICAg
ICAgIHZvaWQgaW1hZ2VMb2FkaW5nU2V0dGluZ3NUaW1lckZpcmVkKFRpbWVyPFNldHRpbmdzPiop
OwogICAgICAgICAKICAgICAgICAgZG91YmxlIG1faW5jcmVtZW50YWxSZW5kZXJpbmdTdXBwcmVz
c2lvblRpbWVvdXRJblNlY29uZHM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
U2V0dGluZ3MuY3BwCmluZGV4IGJkMjM3NjYwN2Q3MDQxZjE3NzJjMTYxYzIxMjU5YzU1ZTQxYzMw
MjguLmJiOWVlZDZiMTM1NmUxMThhMTU2MmZmNGQyZGMyNDBjMzVmMDViNjcgMTAwNzU1Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcApAQCAtMTAwLDYgKzEwMCw3IEBA
IEludGVybmFsU2V0dGluZ3M6OkJhY2t1cDo6QmFja3VwKFBhZ2UqIHBhZ2UsIFNldHRpbmdzKiBz
ZXR0aW5ncykKICAgICAsIG1fY2FuU3RhcnRNZWRpYShwYWdlLT5jYW5TdGFydE1lZGlhKCkpCiAg
ICAgLCBtX29yaWdpbmFsTW9ja1Njcm9sbGJhcnNFbmFibGVkKHNldHRpbmdzLT5tb2NrU2Nyb2xs
YmFyc0VuYWJsZWQoKSkKICAgICAsIG1fbGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVu
YWJsZWQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6bGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRy
b2xVSUVuYWJsZWQoKSkKKyAgICAsIG1faW1hZ2VzRW5hYmxlZChzZXR0aW5ncy0+YXJlSW1hZ2Vz
RW5hYmxlZCgpKQogewogfQogCkBAIC0xMzUsNiArMTM2LDcgQEAgdm9pZCBJbnRlcm5hbFNldHRp
bmdzOjpCYWNrdXA6OnJlc3RvcmVUbyhQYWdlKiBwYWdlLCBTZXR0aW5ncyogc2V0dGluZ3MpCiAg
ICAgcGFnZS0+c2V0Q2FuU3RhcnRNZWRpYShtX2NhblN0YXJ0TWVkaWEpOwogICAgIHNldHRpbmdz
LT5zZXRNb2NrU2Nyb2xsYmFyc0VuYWJsZWQobV9vcmlnaW5hbE1vY2tTY3JvbGxiYXJzRW5hYmxl
ZCk7CiAgICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0TGFuZ0F0dHJpYnV0ZUF3YXJlRm9y
bUNvbnRyb2xVSUVuYWJsZWQobV9sYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJRW5hYmxl
ZCk7CisgICAgc2V0dGluZ3MtPnNldEltYWdlc0VuYWJsZWQobV9pbWFnZXNFbmFibGVkKTsKIH0K
IAogSW50ZXJuYWxTZXR0aW5ncyogSW50ZXJuYWxTZXR0aW5nczo6ZnJvbShQYWdlKiBwYWdlKQpA
QCAtNjU5LDQgKzY2MSwxMCBAQCB2b2lkIEludGVybmFsU2V0dGluZ3M6OnNldExhbmdBdHRyaWJ1
dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICBSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpzZXRMYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJRW5hYmxlZChl
bmFibGVkKTsKIH0KIAordm9pZCBJbnRlcm5hbFNldHRpbmdzOjpzZXRJbWFnZXNFbmFibGVkKGJv
b2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgSW50ZXJuYWxTZXR0aW5nc0d1
YXJkRm9yU2V0dGluZ3MoKTsKKyAgICBzZXR0aW5ncygpLT5zZXRJbWFnZXNFbmFibGVkKGVuYWJs
ZWQpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
U2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5oCmlu
ZGV4IDJjMDczZGY2ZWVkYTRmMDZlM2VlYTBhYjNkMWE0N2NmNDQ2OTE5NWEuLmJlODgxMGRlNjY4
MmJjODdkNDQ3NmJmOTNkOWEwZDgwMjlhZTA5MDggMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxTZXR0aW5ncy5oCkBAIC04Miw2ICs4Miw3IEBAIHB1YmxpYzoKICAgICAgICAgYm9v
bCBtX2NhblN0YXJ0TWVkaWE7CiAgICAgICAgIGJvb2wgbV9vcmlnaW5hbE1vY2tTY3JvbGxiYXJz
RW5hYmxlZDsKICAgICAgICAgYm9vbCBtX2xhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlF
bmFibGVkOworICAgICAgICBib29sIG1faW1hZ2VzRW5hYmxlZDsKICAgICB9OwogCiAgICAgdHlw
ZWRlZiBSZWZDb3VudGVkU3VwcGxlbWVudDxQYWdlLCBJbnRlcm5hbFNldHRpbmdzPiBTdXBlclR5
cGU7CkBAIC0xNDcsNiArMTQ4LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0TWVtb3J5SW5mb0Vu
YWJsZWQoYm9vbCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgc2V0U3RvcmFnZUJsb2NraW5n
UG9saWN5KGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHNldExhbmdB
dHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVkKGJvb2wpOworICAgIHZvaWQgc2V0SW1h
Z2VzRW5hYmxlZChib29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNvZGUmKTsKKwogcHJpdmF0ZToKICAg
ICBleHBsaWNpdCBJbnRlcm5hbFNldHRpbmdzKFBhZ2UqKTsKICAgICB2aXJ0dWFsIHZvaWQgaG9z
dERlc3Ryb3llZCgpIE9WRVJSSURFIHsgbV9wYWdlID0gMDsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5pZGwKaW5kZXggOTY3M2QyZjFjMjVkMWI0YzEyYzU4ZDI5
NGNjOWU3YjViMjMyMmVhZi4uZDhhOGFhZjhiYmE4MTU4MjA0Yzk1Njk0YjE0YjgzNDMxY2M2Mjg1
MyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaWRsCkBAIC04
Miw2ICs4Miw3IEBAIG1vZHVsZSB3aW5kb3cgewogI2VuZGlmCiAgICAgICAgIHZvaWQgc2V0TWVt
b3J5SW5mb0VuYWJsZWQoaW4gYm9vbGVhbiBlbmFibGVkKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsK
ICAgICAgICAgdm9pZCBzZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koaW4gRE9NU3RyaW5nIHBvbGlj
eSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAgIHZvaWQgc2V0SW1hZ2VzRW5hYmxlZChp
biBib29sZWFuIGVuYWJsZWQpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgIH07CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZiBiL1NvdXJjZS9XZWJLaXQy
L3dpbi9XZWJLaXQyLmRlZgppbmRleCBhOWIwMGRiMzk3MzMzOTAyYzE1ZTM0ZmQ2YmI5NWVjNjhl
N2VkMTBlLi42ZmQxZDMxOTYwNGY5OGI3YWJhOWFkNGE5ZDYyNmRmN2YzODNhODM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKKysrIGIvU291cmNlL1dlYktpdDIv
d2luL1dlYktpdDIuZGVmCkBAIC0yMjIsNiArMjIyLDcgQEAgRVhQT1JUUwogICAgICAgICA/c2V0
RE9NRXhjZXB0aW9uQFdlYkNvcmVAQFlBWFBBVkV4ZWNTdGF0ZUBKU0NAQEhAWgogICAgICAgICA/
c2V0RmFudGFzeUZvbnRGYW1pbHlAU2V0dGluZ3NAV2ViQ29yZUBAUUFFWEFCVkF0b21pY1N0cmlu
Z0BXVEZAQFc0VVNjcmlwdENvZGVAQEBaCiAgICAgICAgID9zZXRGaXhlZEZvbnRGYW1pbHlAU2V0
dGluZ3NAV2ViQ29yZUBAUUFFWEFCVkF0b21pY1N0cmluZ0BXVEZAQFc0VVNjcmlwdENvZGVAQEBa
CisgICAgICAgID9zZXRJbWFnZXNFbmFibGVkQFNldHRpbmdzQFdlYkNvcmVAQFFBRVhfTkBaCiAg
ICAgICAgID9zZXRNb2NrU2Nyb2xsYmFyc0VuYWJsZWRAU2V0dGluZ3NAV2ViQ29yZUBAU0FYX05A
WgogICAgICAgICA/bW9ja1Njcm9sbGJhcnNFbmFibGVkQFNldHRpbmdzQFdlYkNvcmVAQFNBX05Y
WgogICAgICAgICA/c2V0VXNlc092ZXJsYXlTY3JvbGxiYXJzQFNldHRpbmdzQFdlYkNvcmVAQFNB
WF9OQFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIgYi9Tb3Vy
Y2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCmluZGV4IGQ1ZDU0MTA2YTZiMWIzMmY3YjIzNDBj
Zjk3NjI2YmEzNjg3OWUzOWMuLjYyMzA1YzRmYWRkYzdiYWVmOTdmMzMyMWFhMzIwNWJlYjQ3YWQ4
MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKKysrIGIvU291
cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgpAQCAtMTQ1LDYgKzE0NSw3IEBAIF9aTjdXZWJD
b3JlMTRTY3JvbGxhYmxlQXJlYTI4c2V0U2Nyb2xsT2Zmc2V0RnJvbUludGVybmFsc0VSS05TXzhJ
bnRQb2ludEU7CiBfWk43V2ViQ29yZTEwU2Nyb2xsVmlldzIzc2V0U2Nyb2xsYmFyc1N1cHByZXNz
ZWRFYmI7CiBfWk43V2ViQ29yZTEwU2Nyb2xsVmlldzIxc2V0RGVsZWdhdGVzU2Nyb2xsaW5nRWI7
CiBfWk43V2ViQ29yZTROb2RlMTRyZW1vdmVkTGFzdFJlZkV2OworX1pON1dlYkNvcmU4U2V0dGlu
Z3MxNnNldEltYWdlc0VuYWJsZWRFYjsKIF9aTjdXZWJDb3JlOFNldHRpbmdzMThzZXRGaXhlZEZv
bnRGYW1pbHlFUktOM1dURjEyQXRvbWljU3RyaW5nRTExVVNjcmlwdENvZGU7CiBfWk43V2ViQ29y
ZThTZXR0aW5nczE4c2V0U2VyaWZGb250RmFtaWx5RVJLTjNXVEYxMkF0b21pY1N0cmluZ0UxMVVT
Y3JpcHRDb2RlOwogX1pON1dlYkNvcmU4U2V0dGluZ3MyMHNldEN1cnNpdmVGb250RmFtaWx5RVJL
TjNXVEYxMkF0b21pY1N0cmluZ0UxMVVTY3JpcHRDb2RlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDZhMWE3YTBlYTI1NGUz
OGI1MjQxYzE5MjU1MGQzNDU3ODdjMGM0ODcuLjJlYzk0NWNkYWQwZTgwODdlOTVhNTY1MTQ3NmQ2
ZTFmMmZkZDZkZDUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAxMi0wOS0yMCAgQm8gTGl1ICA8
Ym9saXVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlbGFuZCAiQWRkIGluLXBsYWNlIHJlbG9h
ZCBiZWhhdmlvciB0byBJbWFnZXNFbmFibGVkIHNldHRpbmciIHdpdGggb3B0aW1pemF0aW9ucwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTcwNTUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWxhbmRpbmcg
MTI4NzgwLCAxMjg2NzYsIDEyODY0NS4gV2FzIHJldmVydGVkIGluIDEyODkxNCBkdWUgdG8KKyAg
ICAgICAgcGVyZm9ybWFuY2UgcmVncmVzc2lvbiBpbiBDaHJvbWl1bS4KKworICAgICAgICBOZXcg
Y2hhbmdlcyBpbiBhZGRpdGlvbiB0byBwcmV2aW91c2x5IHJldmVydGVkIHBhdGNoZXM6CisKKyAg
ICAgICAgTW92ZSBsb2FkIGNoZWNraW5nIGxvZ2ljIGludG8gQ2FjaGVkSW1hZ2U6OmxvYWQgYW5k
IGRvIG5vdCByZXBlYXQgbG9hZAorICAgICAgICBhdCBlbmQgb2YgQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI6OlJlcXVlc3RJbWFnZS4KKworICAgICAgICBSZW1vdmVkIHVubmVjZXNzYXJ5IEZyYW1lLmgg
aW5jbHVkZXMgaW4gQ2FjaGVkUmVzb3VyY2UgYW5kCisgICAgICAgIENhY2hlZEltYWdlLgorCisg
ICAgICAgIFJlbW92ZWQgZGVhZCBsb2FkKCkgbWV0aG9kIGRlY2xhcmF0aW9uIGluIENhY2hlZElt
YWdlLgorCisgICAgICAgIFVwZGF0ZWQgdGV4dCBleHBlY3RhdGlvbiBmb3IgdHdvIGltYWdlLXBl
cm1pc3Npb25zIHRlc3RzIHRvIHJlZmxlY3QKKyAgICAgICAgdGhlIHJlbW92ZWQgY2FsbHMgdG8g
YWxsb3dJbWFnZS4KKworICAgICAgICAqIGZhc3QvbG9hZGVyL2Rpc3BsYXktaW1hZ2UtdW5zZXQt
YWxsb3dzLWNhY2hlZC1pbWFnZS1sb2FkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9sb2FkZXIvZGlzcGxheS1pbWFnZS11bnNldC1hbGxvd3MtY2FjaGVkLWltYWdlLWxvYWQu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9sb2FkZXIvZGlzcGxheS1pbWFnZS11bnNldC1j
YW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0LWNhbi1ibG9jay1p
bWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2xvYWRlci9pbWFnZXMtZW5hYmxlZC11bnNldC1jYW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxv
YWQtaW4tcGxhY2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2xvYWRlci9p
bWFnZXMtZW5hYmxlZC11bnNldC1jYW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxh
Y2UuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9sb2FkZXIvcmVzb3VyY2VzL2ltYWdlMS5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2xvYWRlci9yZXNvdXJjZXMvaW1hZ2UyLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3Blcm1pc3Npb25jbGllbnQvaW1h
Z2UtcGVybWlzc2lvbnMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVt
L3Blcm1pc3Npb25jbGllbnQvaW1hZ2UtcGVybWlzc2lvbnMuaHRtbDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS9wZXJtaXNzaW9uY2xpZW50L3Jlc291cmNlcy9pbWFnZS5odG1sOgorICAg
ICAgICAqIHBsYXRmb3JtL3drMi9Ta2lwcGVkOgorCiAyMDEyLTA5LTIwICBTaW1vbiBGcmFzZXIg
IDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIG1lZGlhL3RyYWNrL3RyYWNrLWN1
ZS1yZW5kZXJpbmctaW5uZXItdGltZXN0YW1wcy5odG1sIHRpbWVzIG91dC4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2Rpc3BsYXktaW1hZ2UtdW5zZXQtYWxsb3dzLWNhY2hl
ZC1pbWFnZS1sb2FkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2Rpc3Bs
YXktaW1hZ2UtdW5zZXQtYWxsb3dzLWNhY2hlZC1pbWFnZS1sb2FkLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZTE1YWFjMGM1MTVlODA1NmFiM2NjYzk1MTkwMzczMzI4ZjgzN2Y4Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZGlzcGxheS1pbWFnZS11bnNldC1h
bGxvd3MtY2FjaGVkLWltYWdlLWxvYWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMiBAQAorVGVz
dCB0aGF0IFdlYktpdERpc3BsYXlJbWFnZXNLZXkgdW5zZXQgZG9lcyBub3QgYmxvY2sgaW1hZ2Ug
aW4gY2FjaGUuCitQQVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9kaXNw
bGF5LWltYWdlLXVuc2V0LWFsbG93cy1jYWNoZWQtaW1hZ2UtbG9hZC5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9sb2FkZXIvZGlzcGxheS1pbWFnZS11bnNldC1hbGxvd3MtY2FjaGVkLWltYWdlLWxv
YWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wOGQ3MDNkNTA0ZWFhNDViM2Y0ZWZmZWQwYjQ3YjQ3N2U0ODE4
ZmQ3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZGlzcGxheS1p
bWFnZS11bnNldC1hbGxvd3MtY2FjaGVkLWltYWdlLWxvYWQuaHRtbApAQCAtMCwwICsxLDM5IEBA
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKy8vIE9wZW5zIHR3byB3aW5kb3dzIGNvbnRhaW5p
bmcgdGhlIHNhbWUgaW1hZ2UuIEZpcnN0IHdpbmRvdyB3aWxsIHBvcHVsYXRlIHRoZSBjYWNoZSB3
aXRoCisvLyBpbWFnZS4gVGhlIHNlY29uZCB3aW5kb3cgaXMgb3BlbmVkIHdpdGggV2ViS2l0RGlz
cGxheUltYWdlc0tleSB1bnNldCwgYnV0IGltYWdlIHNob3VsZAorLy8gc3RpbGwgbG9hZCBzaW5j
ZSBpdCBpcyBpbiBjYWNoZS4KK2Z1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAg
dGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0Q2FuT3Bl
bldpbmRvd3MoKTsKKyAgICAgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktp
dFVzZXNQYWdlQ2FjaGVQcmVmZXJlbmNlS2V5IiwgMSk7CisKKyAgICAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9ICdGQUlMVVJFOiBpbWFnZTEuaHRtbCBu
b3QgbG9hZGVkJzsKKyAgICAgICAgd2luZG93Lm9wZW4oInJlc291cmNlcy9pbWFnZTEuaHRtbCIs
ICJfYmxhbmsiKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGltYWdlMUxvYWRlZCgpCit7CisgICAg
dGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoJ1dlYktpdERpc3BsYXlJbWFnZXNLZXknLCAw
KTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1MID0gJ0ZB
SUxVUkU6IGltYWdlMi5odG1sIG5vdCBsb2FkZWQnOworICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1
bmN0aW9uKCkge3dpbmRvdy5vcGVuKCJyZXNvdXJjZXMvaW1hZ2UyLmh0bWwiLCAiX2JsYW5rIik7
fSwgMCk7Cit9CisKK2Z1bmN0aW9uIGltYWdlMkxvYWRlZCgpCit7CisgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9ICdQQVNTJzsKKwkJdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVz
dCgpIj4KK1Rlc3QgdGhhdCBXZWJLaXREaXNwbGF5SW1hZ2VzS2V5IHVuc2V0IGRvZXMgbm90IGJs
b2NrIGltYWdlIGluIGNhY2hlLgorPGRpdiBpZD0icmVzdWx0Ij5GQUlMVVJFOiBUZXN0IHNjcmlw
dCBkaWRuJ3QgcnVuLjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1h
bmQtY2FuLXJlbG9hZC1pbi1wbGFjZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2xv
YWRlci9kaXNwbGF5LWltYWdlLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1p
bi1wbGFjZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2E5ZWY1MzQ3OWI4YjVhYTRiNDY0ZjY1
N2YyYWNmN2U1YmI0NDdkMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbG9h
ZGVyL2Rpc3BsYXktaW1hZ2UtdW5zZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1jYW4tcmVsb2FkLWlu
LXBsYWNlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKK1Rlc3QgdGhhdCBEaXNwbGF5SW1h
Z2VzIGRpc2FibGVkIGNhbiBibG9jayBodHRwIGltYWdlIGFuZCBjYW4gYmUgcmVsb2FkZWQgaW4t
cGxhY2Ugd2hlbiB0b2dnbGVkLgorU1VDQ0VTUworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJl
bG9hZC1pbi1wbGFjZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZGlzcGxheS1pbWFn
ZS11bnNldC1jYW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zMTJmNTA5ZDU0M2I3YTVhN2Q0N2QxOTFiNzg4NjYzZTZkMjYxOTc3Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZGlzcGxheS1pbWFnZS11bnNldC1j
YW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UuaHRtbApAQCAtMCwwICsxLDQ3
IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKy8vIFNldHRpbmcgV2ViS2l0RGlzcGxheUlt
YWdlc0tleSBpcyBhc3luY2hyb25vdXMsIHNvIHVzaW5nIHF1ZXVlUmVsb2FkIGFuZCBzZXRJbnRl
cnZhbCB0byBjaGVjayB3aGVuIHRoZSBzZXR0aW5nIGFjdHVhbGx5IHRha2UgZWZmZWN0LgorCit2
YXIgaW50ZXJ2YWxJZDsKK3ZhciBpbWFnZU9ubG9hZEZpcmVkID0gMDsKKworaWYgKHdpbmRvdy50
ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgd2luZG93Lmlu
dGVybmFscy5zZXR0aW5ncy5zZXRJbWFnZXNFbmFibGVkKHRydWUpOworICAgIHRlc3RSdW5uZXIu
b3ZlcnJpZGVQcmVmZXJlbmNlKCdXZWJLaXREaXNwbGF5SW1hZ2VzS2V5JywgMCk7CisgICAgdGVz
dFJ1bm5lci5xdWV1ZVJlbG9hZCgpOworfQorCitmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICB2
YXIgaW1hZ2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW1hZ2UnKTsKKyAgICBpZiAoaW1h
Z2UubmF0dXJhbEhlaWdodCAhPSAwIHx8IGltYWdlLm5hdHVyYWxXaWR0aCAhPSAwIHx8IGltYWdl
T25sb2FkRmlyZWQgIT0gMCkgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVz
dWx0JykuaW5uZXJIVE1MID0gJ0ZBSUxVUkU6IEltYWdlIHNob3VsZCBub3QgYmUgbG9hZGVkIHdo
ZW4gRGlzcGxheUltYWdlIGlzIHVuc2V0JzsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCdXZWJLaXREaXNwbGF5SW1hZ2VzS2V5Jywg
MSk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9ICdG
QUlMVVJFOiBJbWFnZSBzaG91bGQgcmVsb2FkIGluLXBsYWNlIHdoZW4gRGlzcGFseUltYWdlIGlz
IGNoYW5nZXMgZnJvbSB1bnNldCB0byBzZXQnOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOworICAgIGludGVydmFsSWQgPSB3aW5kb3cuc2V0SW50ZXJ2YWwocnVuVGVzdFJlc3QsIDEw
KTsKK30KKworZnVuY3Rpb24gcnVuVGVzdFJlc3QoKQoreworICAgIHZhciBpbWFnZSA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdpbWFnZScpOworICAgIGlmIChpbWFnZS5uYXR1cmFsSGVpZ2h0
ID09IDMzICYmIGltYWdlLm5hdHVyYWxXaWR0aCA9PSAzNyAmJiBpbWFnZU9ubG9hZEZpcmVkID09
IDEpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRN
TCA9ICdTVUNDRVNTJzsKKyAgICAgICAgd2luZG93LmNsZWFySW50ZXJ2YWwoaW50ZXJ2YWxJZCk7
CisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgIH0KK30KKzwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorICBUZXN0IHRoYXQgRGlzcGxheUlt
YWdlcyBkaXNhYmxlZCBjYW4gYmxvY2sgaHR0cCBpbWFnZSBhbmQgY2FuIGJlIHJlbG9hZGVkIGlu
LXBsYWNlIHdoZW4gdG9nZ2xlZC4KKyAgPGRpdiBpZD0icmVzdWx0Ij5GQUlMVVJFOiBUZXN0IHNj
cmlwdCBkaWRuJ3QgcnVuLjwvZGl2PgorICA8aW1nIGlkPSJpbWFnZSIgc3JjPSIuLi9pbWFnZXMv
cmVzb3VyY2VzL292YWwucG5nIiBvbmxvYWQ9ImltYWdlT25sb2FkRmlyZWQ9MTsiPgorPC9ib2R5
PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9pbWFnZXMt
ZW5hYmxlZC11bnNldC1jYW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvaW1hZ2VzLWVuYWJsZWQtdW5zZXQt
Y2FuLWJsb2NrLWltYWdlLWFuZC1jYW4tcmVsb2FkLWluLXBsYWNlLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi45NTFkNDYwMWNjYzNjYTE4ZDhjZmQ1YTk2OTc4MTExZmZiMGM2MDIwCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvaW1hZ2VzLWVuYWJsZWQtdW5zZXQt
Y2FuLWJsb2NrLWltYWdlLWFuZC1jYW4tcmVsb2FkLWluLXBsYWNlLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDMgQEAKK1Rlc3QgdGhhdCBFbmFibGVJbWFnZXMgdW5zZXQgY2FuIGJsb2NrIGltYWdl
IGFuZCBjYW4gYmUgcmVsb2FkZWQgaW4tcGxhY2Ugd2hlbiB0b2dnbGVkLgorU1VDQ0VTUworCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9pbWFnZXMtZW5hYmxlZC11bnNldC1j
YW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvbG9hZGVyL2ltYWdlcy1lbmFibGVkLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2Fu
LXJlbG9hZC1pbi1wbGFjZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNmNDhlNjI4ZGRkNjBkNWJhZmEyYjE0
ZjA4MzYwYjRiNmU2YTY2M2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2xv
YWRlci9pbWFnZXMtZW5hYmxlZC11bnNldC1jYW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQt
aW4tcGxhY2UuaHRtbApAQCAtMCwwICsxLDQ3IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4K
Ky8vIFNldHRpbmcgSW1hZ2VzRW5hYmxlZCBpcyBhc3luY2hyb25vdXMsIHNvIHVzaW5nIHF1ZXVl
UmVsb2FkIGFuZCBzZXRJbnRlcnZhbCB0byBjaGVjayB3aGVuIHRoZSBzZXR0aW5nIGFjdHVhbGx5
IHRha2UgZWZmZWN0LgorCit2YXIgaW50ZXJ2YWxJZDsKK3ZhciBpbWFnZU9ubG9hZEZpcmVkID0g
MDsKKworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CisgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoJ1dlYktpdERpc3BsYXlJbWFn
ZXNLZXknLCAxKTsKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldEltYWdlc0VuYWJs
ZWQoZmFsc2UpOworICAgIHRlc3RSdW5uZXIucXVldWVSZWxvYWQoKTsKK30KKworZnVuY3Rpb24g
cnVuVGVzdCgpCit7CisgICAgdmFyIGltYWdlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lt
YWdlJyk7CisgICAgaWYgKGltYWdlLm5hdHVyYWxIZWlnaHQgIT0gMCB8fCBpbWFnZS5uYXR1cmFs
V2lkdGggIT0gMCB8fCBpbWFnZU9ubG9hZEZpcmVkICE9IDApIHsKKyAgICAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9ICdGQUlMVVJFOiBJbWFnZSBzaG91
bGQgbm90IGJlIGxvYWRlZCB3aGVuIEltYWdlc0VuYWJsZWQgaXMgdW5zZXQnOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRJbWFnZXNF
bmFibGVkKHRydWUpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5l
ckhUTUwgPSAnRkFJTFVSRTogSW1hZ2Ugc2hvdWxkIHJlbG9hZCBpbi1wbGFjZSB3aGVuIEltYWdl
c0VuYWJsZWQgaXMgY2hhbmdlcyBmcm9tIHVuc2V0IHRvIHNldCc7CisgICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7CisgICAgaW50ZXJ2YWxJZCA9IHdpbmRvdy5zZXRJbnRlcnZhbChydW5U
ZXN0UmVzdCwgMTApOworfQorCitmdW5jdGlvbiBydW5UZXN0UmVzdCgpCit7CisgICAgdmFyIGlt
YWdlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ltYWdlJyk7CisgICAgaWYgKGltYWdlLm5h
dHVyYWxIZWlnaHQgPT0gMzMgJiYgaW1hZ2UubmF0dXJhbFdpZHRoID09IDM3IHx8IGltYWdlT25s
b2FkRmlyZWQgPT0gMSkgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0
JykuaW5uZXJIVE1MID0gJ1NVQ0NFU1MnOworICAgICAgICB3aW5kb3cuY2xlYXJJbnRlcnZhbChp
bnRlcnZhbElkKTsKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgfQorfQor
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CisgIFRlc3QgdGhh
dCBFbmFibGVJbWFnZXMgdW5zZXQgY2FuIGJsb2NrIGltYWdlIGFuZCBjYW4gYmUgcmVsb2FkZWQg
aW4tcGxhY2Ugd2hlbiB0b2dnbGVkLgorICA8ZGl2IGlkPSJyZXN1bHQiPkZBSUxVUkU6IFRlc3Qg
c2NyaXB0IGRpZG4ndCBydW4uPC9kaXY+CisgIDxpbWcgaWQ9ImltYWdlIiBzcmM9Ii4uL2ltYWdl
cy9yZXNvdXJjZXMvb3ZhbC5wbmciIG9ubG9hZD0iaW1hZ2VPbmxvYWRGaXJlZD0xOyI+Cis8L2Jv
ZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3Jlc291
cmNlcy9pbWFnZTEuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3Jlc291cmNlcy9pbWFn
ZTEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jZDY5ZGMzYzJhMGQ2YTE1ZTA4OTYzNzkxMDMyNTRmNWVhYTM0
ZGMxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvcmVzb3VyY2Vz
L2ltYWdlMS5odG1sCkBAIC0wLDAgKzEsNSBAQAorPGh0bWw+Cis8Ym9keT4KKyAgPGltZyBzcmM9
Ii4uLy4uL2ltYWdlcy9yZXNvdXJjZXMvb3ZhbC5wbmciIG9ubG9hZD0id2luZG93Lm9wZW5lci5p
bWFnZTFMb2FkZWQoKTsiPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9sb2FkZXIvcmVzb3VyY2VzL2ltYWdlMi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9s
b2FkZXIvcmVzb3VyY2VzL2ltYWdlMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwMzdmZmYwY2U2NTY3Nzdj
YzAyZThhZTZjYzgxY2Y2ZWE0NDJhYWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2xvYWRlci9yZXNvdXJjZXMvaW1hZ2UyLmh0bWwKQEAgLTAsMCArMSw1IEBACis8aHRtbD4K
Kzxib2R5PgorICA8aW1nIHNyYz0iLi4vLi4vaW1hZ2VzL3Jlc291cmNlcy9vdmFsLnBuZyIgb25s
b2FkPSJ3aW5kb3cub3BlbmVyLmltYWdlMkxvYWRlZCgpOyI+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9wZXJtaXNzaW9uY2xpZW50
L2ltYWdlLXBlcm1pc3Npb25zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL3Blcm1pc3Npb25jbGllbnQvaW1hZ2UtcGVybWlzc2lvbnMtZXhwZWN0ZWQudHh0Cmlu
ZGV4IDYwZTc2YTUyM2FkZjI2NDQ2NTMzNTgyOTZmN2NiOWViNDM4ZDNmOWYuLjgzMWNkMjBmZTlh
MDc5OTI3YWMzN2QzM2FiZDRiOWE1YzRmYmE5M2IgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL3Blcm1pc3Npb25jbGllbnQvaW1hZ2UtcGVybWlzc2lvbnMtZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Blcm1pc3Npb25jbGll
bnQvaW1hZ2UtcGVybWlzc2lvbnMtZXhwZWN0ZWQudHh0CkBAIC0yLDkgKzIsOSBAQCBQRVJNSVNT
SU9OIENMSUVOVDogYWxsb3dJbWFnZSgoZmlsZSB0ZXN0KTpwbGF0Zm9ybS9jaHJvbWl1bS9wZXJt
aXNzaW9uY2xpZW50L3JlcwogUEVSTUlTU0lPTiBDTElFTlQ6IGFsbG93SW1hZ2UoKGZpbGUgdGVz
dCk6cGxhdGZvcm0vY2hyb21pdW0vcGVybWlzc2lvbmNsaWVudC9yZXNvdXJjZXMvYm9zdG9uLmdp
Zj9ub2NhY2hlKTogZmFsc2UKIFBFUk1JU1NJT04gQ0xJRU5UOiBhbGxvd0ltYWdlKChmaWxlIHRl
c3QpOnBsYXRmb3JtL2Nocm9taXVtL3Blcm1pc3Npb25jbGllbnQvcmVzb3VyY2VzL2Jvc3Rvbi5n
aWYpOiBmYWxzZQogUEVSTUlTU0lPTiBDTElFTlQ6IGFsbG93SW1hZ2UoKGZpbGUgdGVzdCk6cGxh
dGZvcm0vY2hyb21pdW0vcGVybWlzc2lvbmNsaWVudC9yZXNvdXJjZXMvYm9zdG9uLmdpZik6IGZh
bHNlCitQRVJNSVNTSU9OIENMSUVOVDogYWxsb3dJbWFnZSgoZmlsZSB0ZXN0KTpwbGF0Zm9ybS9j
aHJvbWl1bS9wZXJtaXNzaW9uY2xpZW50L3Jlc291cmNlcy9ib3N0b24uZ2lmKTogZmFsc2UKK1BF
Uk1JU1NJT04gQ0xJRU5UOiBhbGxvd0ltYWdlKChmaWxlIHRlc3QpOnBsYXRmb3JtL2Nocm9taXVt
L3Blcm1pc3Npb25jbGllbnQvcmVzb3VyY2VzL2Jvc3Rvbi5naWYpOiBmYWxzZQogCiAKIFBBU1M6
IGZpcnN0IGltYWdlIGxvYWRlZAotUEFTUzogZXJyb3IgZXZlbnQgZm9yIG5vdCBjYWNoZWQgaW1h
Z2UKLVBBU1M6IGVycm9yIGV2ZW50IGZvciBpbWFnZSBmcm9tIGNhY2hlCiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Blcm1pc3Npb25jbGllbnQvaW1hZ2UtcGVy
bWlzc2lvbnMuaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Blcm1pc3Npb25j
bGllbnQvaW1hZ2UtcGVybWlzc2lvbnMuaHRtbAppbmRleCA3YjVlMmM1NzVjOTg5NzRhYzA4Zjg3
ZTlmOGMxMjA3MTBhZGJmZWYwLi5mNTdhM2I3MDcwNDMzMDljMmZhYjJmZjkyYzNlOWUyYzZlNDE5
NjQ3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9wZXJtaXNzaW9u
Y2xpZW50L2ltYWdlLXBlcm1pc3Npb25zLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vcGVybWlzc2lvbmNsaWVudC9pbWFnZS1wZXJtaXNzaW9ucy5odG1sCkBAIC0xLDYg
KzEsOSBAQAogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQ+CisvLyBCbG9ja2VkIGltYWdlcyBjYW4g
YmUgcmVsb2FkZWQsIHNvIG5laXRoZXIgb25sb2FkIG5vciBvbmVycm9yIGlzIGNhbGxlZC4KKy8v
IE9ubHkgY2hlY2sgaGVyZSB0aGF0IG9ubG9hZCBpcyBuZXZlciBjYWxsZWQgd2hlbiBpbWFnZSBp
cyBibG9ja2VkLgorCiBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKICAgICB0ZXN0UnVubmVyLmR1bXBQZXJtaXNzaW9uQ2xpZW50Q2FsbGJhY2tz
KCk7CkBAIC0yMSwxNCArMjQsMTIgQEAgZnVuY3Rpb24gbG9hZGVkKCkKIAogICAgIC8vIExvYWQg
YW4gaW1hZ2Ugbm90IGluIGNhY2hlLgogICAgIHZhciBpbWcgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdpbWcnKTsKLSAgICBpbWcub25lcnJvciA9IGZ1bmN0aW9uICgpIHsgbG9nKCJQQVNTOiBl
cnJvciBldmVudCBmb3Igbm90IGNhY2hlZCBpbWFnZSIpOyB9CiAgICAgaW1nLm9ubG9hZCA9IGZ1
bmN0aW9uICgpIHsgbG9nKCJGQUlMOiBub3QgY2FjaGVkIGltYWdlIGxvYWRlZCIpOyB9CiAgICAg
aW1nLnNyYyA9ICJyZXNvdXJjZXMvYm9zdG9uLmdpZj9ub2NhY2hlIjsKICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiaW1nIikuYXBwZW5kQ2hpbGQoaW1nKTsKIAogICAgIC8vIExvYWQgYW4g
aW1hZ2UgZnJvbSBjYWNoZS4KICAgICB2YXIgaW1nRnJvbUNhY2hlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnaW1nJyk7Ci0gICAgaW1nRnJvbUNhY2hlLm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7
IGxvZygiUEFTUzogZXJyb3IgZXZlbnQgZm9yIGltYWdlIGZyb20gY2FjaGUiKTsgfQogICAgIGlt
Z0Zyb21DYWNoZS5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7IGxvZygiRkFJTDogaW1hZ2UgZnJvbSBj
YWNoZSBsb2FkZWQiKTsgfQogICAgIGltZ0Zyb21DYWNoZS5zcmMgPSAicmVzb3VyY2VzL2Jvc3Rv
bi5naWYiOwogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbWciKS5hcHBlbmRDaGlsZChp
bWdGcm9tQ2FjaGUpOwpAQCAtNDEsNyArNDIsNyBAQCBmdW5jdGlvbiBsb2FkZWQoKQogPC9zY3Jp
cHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxpbWcgc3JjPSJyZXNvdXJjZXMvYm9zdG9uLmdpZiIgb25s
b2FkPSJsb2FkZWQoKSIgb25lcnJvcj0ibG9nKCdGQUlMOiBlcnJvciBldmVudCBmb3IgZmlyc3Qg
aW1hZ2UnKSI+Cis8aW1nIHNyYz0icmVzb3VyY2VzL2Jvc3Rvbi5naWYiIG9ubG9hZD0ibG9hZGVk
KCkiPgogPGRpdiBpZD0iaW1nIj48L2Rpdj4KIDxkaXYgaWQ9InJlc3VsdHMiPjwvZGl2PgogPC9i
b2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vcGVybWlzc2lv
bmNsaWVudC9yZXNvdXJjZXMvaW1hZ2UuaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL3Blcm1pc3Npb25jbGllbnQvcmVzb3VyY2VzL2ltYWdlLmh0bWwKaW5kZXggZTJhZGZlM2Yw
YjYyMWFhOGQ5ZmY0ZTE5MGM5MDIyMzA1Y2MwNzBlYi4uMjM5NzcxNzEwMWRlZDQ0MGEzMjk1NTgy
NmU4NDFjZDFjZDYyM2Y5NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vcGVybWlzc2lvbmNsaWVudC9yZXNvdXJjZXMvaW1hZ2UuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS9wZXJtaXNzaW9uY2xpZW50L3Jlc291cmNlcy9pbWFnZS5odG1s
CkBAIC04LDcgKzgsNyBAQCBmdW5jdGlvbiBsb2coYSkKIDwvc2NyaXB0PgogPC9oZWFkPgogPGJv
ZHk+Ci08aW1nIHNyYz0iYm9zdG9uLmdpZiIgb25sb2FkPSJsb2coJ0ZBSUw6IGxvYWQgZXZlbnQg
Zm9yIGlmcmFtZWQgaW1hZ2UpIiBvbmVycm9yPSJsb2coJ0ZBSUw6IGVycm9yIGV2ZW50IGZvciBp
ZnJhbWVkIGltYWdlJykiPgorPGltZyBzcmM9ImJvc3Rvbi5naWYiIG9ubG9hZD0ibG9nKCdGQUlM
OiBsb2FkIGV2ZW50IGZvciBpZnJhbWVkIGltYWdlJykiPgogPGRpdiBpZD0icmVzdWx0cyI+PC9k
aXY+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93
azIvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9Ta2lwcGVkCmluZGV4IDE5MTdi
NmNlZmIzNzk5ZWJkYWQzZTk4MGYzNTc2ODE2ZDg0ZDAzMTEuLmMxZGFiMjdhNGE2NmRhM2ZkNTY0
MGNiMzAzOGFkY2NkYTk4YTFhMTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dr
Mi9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9Ta2lwcGVkCkBAIC0yMDEs
NiArMjAxLDcgQEAgZmFzdC9jYW52YXMvd2ViZ2wvd2ViZ2wtYXJyYXktaW52YWxpZC1yYW5nZXMu
aHRtbAogZmFzdC9jYW52YXMvd2ViZ2wvd2ViZ2wtc3BlY2lmaWMuaHRtbAogZmFzdC9oYXJuZXNz
L292ZXJyaWRlLXByZWZlcmVuY2VzLTIuaHRtbAogZmFzdC9pbWFnZXMvYW5pbWF0ZWQtZ2lmLXJl
c3RvcmVkLWZyb20tYmZjYWNoZS5odG1sCitmYXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0
LWFsbG93cy1jYWNoZWQtaW1hZ2UtbG9hZC5odG1sCiBmYXN0L3RleHQvemVyby1mb250LXNpemUu
aHRtbAogCiAjIFdlYktpdFRlc3RSdW5uZXIgbmVlZHMgdG8gc3VwcG9ydCBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wRE9NQXNXZWJBcmNoaXZlCkBAIC0zMzksNiArMzQwLDggQEAgc3ZnL2N1c3Rv
bS9zdmctYWxsb3dlZC1pbi1kYXNoYm9hcmQtb2JqZWN0Lmh0bWwKICMgPGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjY3Mj4KIGZhc3QvY3NzL2NvbXBhcmUtY29udGVu
dC1zdHlsZS5odG1sCiBmYXN0L2ZyYW1lcy9mcmFtZS1kaXNwbGF5LW5vbmUtZm9jdXMuaHRtbAor
ZmFzdC9sb2FkZXIvZGlzcGxheS1pbWFnZS11bnNldC1jYW4tYmxvY2staW1hZ2UtYW5kLWNhbi1y
ZWxvYWQtaW4tcGxhY2UuaHRtbAorZmFzdC9sb2FkZXIvaW1hZ2VzLWVuYWJsZWQtdW5zZXQtY2Fu
LWJsb2NrLWltYWdlLWFuZC1jYW4tcmVsb2FkLWluLXBsYWNlLmh0bWwKIGZhc3QvbG9hZGVyL3Jl
bG9hZC1wb2xpY3ktZGVsZWdhdGUuaHRtbAogCiAjIFdlYktpdFRlc3RSdW5uZXIgbmVlZHMgbGF5
b3V0VGVzdENvbnRyb2xsZXIucXVldWVMb2FkCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFu
Z2VMb2cKaW5kZXggZGY3NDQ3M2YwMmU1MjhiNDEwY2IyNjIyOTU5OTliMjU5YzIyMTFkZS4uMmRh
YzZkOGMzNDU1OTBlYWY3ZDg3NjlmYTNmMmRlZmExYjc1Nzg5ZiAxMDA2NDQKLS0tIGEvQ2hhbmdl
TG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTA5LTIwICBCbyBMaXUg
IDxib2xpdUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVsYW5kICJBZGQgaW4tcGxhY2UgcmVs
b2FkIGJlaGF2aW9yIHRvIEltYWdlc0VuYWJsZWQgc2V0dGluZyIgd2l0aCBvcHRpbWl6YXRpb25z
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzA1NQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbGFuZGlu
ZyAxMjg3ODAsIDEyODY3NiwgMTI4NjQ1LiBXYXMgcmV2ZXJ0ZWQgaW4gMTI4OTE0IGR1ZSB0bwor
ICAgICAgICBwZXJmb3JtYW5jZSByZWdyZXNzaW9uIGluIENocm9taXVtLgorCisgICAgICAgIE5l
dyBjaGFuZ2VzIGluIGFkZGl0aW9uIHRvIHByZXZpb3VzbHkgcmV2ZXJ0ZWQgcGF0Y2hlczoKKwor
ICAgICAgICBNb3ZlIGxvYWQgY2hlY2tpbmcgbG9naWMgaW50byBDYWNoZWRJbWFnZTo6bG9hZCBh
bmQgZG8gbm90IHJlcGVhdCBsb2FkCisgICAgICAgIGF0IGVuZCBvZiBDYWNoZWRSZXNvdXJjZUxv
YWRlcjo6UmVxdWVzdEltYWdlLgorCisgICAgICAgIFJlbW92ZWQgdW5uZWNlc3NhcnkgRnJhbWUu
aCBpbmNsdWRlcyBpbiBDYWNoZWRSZXNvdXJjZSBhbmQKKyAgICAgICAgQ2FjaGVkSW1hZ2UuCisK
KyAgICAgICAgUmVtb3ZlZCBkZWFkIGxvYWQoKSBtZXRob2QgZGVjbGFyYXRpb24gaW4gQ2FjaGVk
SW1hZ2UuCisKKyAgICAgICAgVXBkYXRlZCB0ZXh0IGV4cGVjdGF0aW9uIGZvciB0d28gaW1hZ2Ut
cGVybWlzc2lvbnMgdGVzdHMgdG8gcmVmbGVjdAorICAgICAgICB0aGUgcmVtb3ZlZCBjYWxscyB0
byBhbGxvd0ltYWdlLgorCisgICAgICAgICogU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRl
cjoKKwogMjAxMi0wOS0yMCAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBkaWdpYS5j
b20+CiAKICAgICAgICAgW1F0XSBRdFdlYktpdCBtb2R1bGUgaGVhZGVyIGluY2x1ZGVzIHByaXZh
dGUgZGVwZW5kZW5jaWVzCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165168</attachid>
            <date>2012-09-21 12:04:34 -0700</date>
            <delta_ts>2012-09-21 12:39:50 -0700</delta_ts>
            <desc>Add bool parameter to requestResource to avoid duplicated allowImage calls. Refactored CachedResource::load call out of loadResource/revalidateResource to end of requestResource.</desc>
            <filename>bug-97055-20120921120358.patch</filename>
            <type>text/plain</type>
            <size>47736</size>
            <attacher name="Bo Liu">boliu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5MTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWQ2ZTA2NTdkOGJmZWRm
ZDRlMmJmNzlhZmE5MzE1MjE5ZGY0MzIxNS4uNTc2MDc0NjAyNzRhNGE1NGViMDY5ODJjMWM0ZTk4
ODgwYTAzMTBiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg3IEBACisyMDEyLTA5LTIxICBCbyBM
aXUgIDxib2xpdUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVsYW5kICJBZGQgaW4tcGxhY2Ug
cmVsb2FkIGJlaGF2aW9yIHRvIEltYWdlc0VuYWJsZWQgc2V0dGluZyIgd2l0aCBvcHRpbWl6YXRp
b25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzA1
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbGFu
ZGluZyAxMjg3ODAsIDEyODY3NiwgMTI4NjQ1LiBXYXMgcmV2ZXJ0ZWQgaW4gMTI4OTE0IGR1ZSB0
bworICAgICAgICBwZXJmb3JtYW5jZSByZWdyZXNzaW9uIGluIENocm9taXVtLgorCisgICAgICAg
IE5ldyBjaGFuZ2VzIGluIGFkZGl0aW9uIHRvIHByZXZpb3VzbHkgcmV2ZXJ0ZWQgcGF0Y2hlczoK
KworICAgICAgICBSZWZhY3RvcmVkIENhY2hlZFJlc291cmNlOjpyZXF1ZXN0UmVzb3VyY2UsIGxv
YWRSZXNvdXJjZSwgYW5kCisgICAgICAgIHJldmFsaWRhdGVSZXNvdXJjZS4gTW92ZWQgQ2FjaGVk
UmVzb3VyY2U6OmxvYWQgbWV0aG9kIHRvIGVuZCBvZgorICAgICAgICByZXF1ZXN0UmVzb3VyY2Ug
c28gdGhlcmUgaXMgb25lIHBsYWNlIHdoZXJlIGxvYWQgaXMgY2FsbGVkIGZvciBhbGwKKyAgICAg
ICAgcmVzb3VyY2VzLgorCisgICAgICAgIEFkZGVkIGEgYm9vbCBwYXJhbWV0ZXIgZm9yIHJlcXVl
c3RSZXNvdXJjZSBhbmQKKyAgICAgICAgZGV0ZXJtaW5lUmV2YWxpZGF0aW9uUG9saWN5IHNvIHRo
YXQgRnJhbWVMb2FkZXJDbGllbnQ6OmFsbG93SW1hZ2UgY2FsbAorICAgICAgICBkbyBub3QgbmVl
ZCB0byBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMuCisKKyAgICAgICAgUmVtb3ZlZCBDYWNoZWRJ
bWFnZTo6bG9hZCBjYWxsIGluIHJlcXVlc3RJbWFnZSBzbyBpdCBpcyBub3QgY2FsbGVkCisgICAg
ICAgIHR3aWNlLgorCisgICAgICAgIFJlbW92ZWQgdW5uZWNlc3NhcnkgRnJhbWUuaCBpbmNsdWRl
cyBpbiBDYWNoZWRSZXNvdXJjZSBhbmQKKyAgICAgICAgQ2FjaGVkSW1hZ2UuCisKKyAgICAgICAg
UmVtb3ZlZCBkZWFkIGxvYWQoKSBtZXRob2QgZGVjbGFyYXRpb24gaW4gQ2FjaGVkSW1hZ2UuCisK
KyAgICAgICAgVXBkYXRlZCB0ZXh0IGV4cGVjdGF0aW9uIGZvciB0d28gaW1hZ2UtcGVybWlzc2lv
bnMgdGVzdHMgdG8gcmVmbGVjdAorICAgICAgICB0aGUgcmVtb3ZlZCBjYWxscyB0byBhbGxvd0lt
YWdlLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0LWFs
bG93cy1jYWNoZWQtaW1hZ2UtbG9hZC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2xvYWRlci9k
aXNwbGF5LWltYWdlLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFj
ZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2xvYWRlci9pbWFnZXMtZW5hYmxlZC11bnNldC1j
YW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UuaHRtbAorCisgICAgICAgICog
V2ViQ29yZS5leHAuaW46CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkaWRCZWdpbkRvY3VtZW50KToKKyAgICAgICAgKiBs
b2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3Vy
Y2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpsb2FkKToKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmRp
ZEFkZENsaWVudCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpzdGls
bE5lZWRzTG9hZCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpDYWNoZWRSZXNv
dXJjZUxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVx
dWVzdEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpjYW5S
ZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0
UmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJldmFs
aWRhdGVSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6
bG9hZFJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpk
ZXRlcm1pbmVSZXZhbGlkYXRpb25Qb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVz
b3VyY2VMb2FkZXI6OnNldEF1dG9Mb2FkSW1hZ2VzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnNldEltYWdlc0VuYWJsZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNsaWVudERlZmVyc0ltYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpzaG91bGREZWZlcklt
YWdlTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVsb2Fk
SW1hZ2VzSWZOb3REZWZlcnJlZCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxv
YWRlcjo6cmVxdWVzdFByZWxvYWQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZUxvYWRlci5oOgorICAgICAgICAoQ2FjaGVkUmVzb3VyY2VMb2FkZXIpOgorICAgICAgICAq
IHBhZ2UvU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0SW1hZ2VMb2FkaW5nU2V0
dGluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OlNldHRpbmdzKToKKyAgICAgICAg
KFdlYkNvcmU6OlNldHRpbmdzOjpzZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkpOgorICAgICAg
ICAoV2ViQ29yZTo6U2V0dGluZ3M6OmltYWdlTG9hZGluZ1NldHRpbmdzVGltZXJGaXJlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6c2V0SW1hZ2VzRW5hYmxlZCk6CisgICAgICAgICog
cGFnZS9TZXR0aW5ncy5oOgorICAgICAgICAoU2V0dGluZ3MpOgorICAgICAgICAqIHRlc3Rpbmcv
SW50ZXJuYWxTZXR0aW5ncy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbFNldHRpbmdz
OjpCYWNrdXA6OkJhY2t1cCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbFNldHRpbmdzOjpC
YWNrdXA6OnJlc3RvcmVUbyk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbFNldHRpbmdzOjpz
ZXRJbWFnZXNFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHRlc3Rpbmcv
SW50ZXJuYWxTZXR0aW5ncy5oOgorICAgICAgICAoQmFja3VwKToKKyAgICAgICAgKEludGVybmFs
U2V0dGluZ3MpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5pZGw6CisKIDIw
MTItMDktMjAgIEFkYW0gS2xlaW4gIDxhZGFta0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVu
YW1lIENvbnRhaW5lck5vZGU6OnBhcnNlckFkZENoaWxkICJwYXJzZXJBcHBlbmRDaGlsZCIgZm9y
IGNvbnNpc3RlbmN5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggODhhNTJhMmZiMmFiMGNlM2E1Yzk5NDU5ZmYxYjQz
OGUxNjAxZWM2OC4uNGFkYWE4MmZiMjJmM2M5ZjJkMDEyMzdjZTUwZjhkODk4MTAwYmY2NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDEyLTA5LTIxICBCbyBMaXUgIDxib2xpdUBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgUmVsYW5kICJBZGQgaW4tcGxhY2UgcmVsb2FkIGJlaGF2aW9y
IHRvIEltYWdlc0VuYWJsZWQgc2V0dGluZyIgd2l0aCBvcHRpbWl6YXRpb25zCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzA1NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbGFuZGluZyAxMjg3ODAsIDEy
ODY3NiwgMTI4NjQ1LiBXYXMgcmV2ZXJ0ZWQgaW4gMTI4OTE0IGR1ZSB0bworICAgICAgICBwZXJm
b3JtYW5jZSByZWdyZXNzaW9uIGluIENocm9taXVtLgorCisgICAgICAgIE5ldyBjaGFuZ2VzIGlu
IGFkZGl0aW9uIHRvIHByZXZpb3VzbHkgcmV2ZXJ0ZWQgcGF0Y2hlczoKKworICAgICAgICBSZWZh
Y3RvcmVkIENhY2hlZFJlc291cmNlOjpyZXF1ZXN0UmVzb3VyY2UsIGxvYWRSZXNvdXJjZSwgYW5k
CisgICAgICAgIHJldmFsaWRhdGVSZXNvdXJjZS4gTW92ZWQgQ2FjaGVkUmVzb3VyY2U6OmxvYWQg
bWV0aG9kIHRvIGVuZCBvZgorICAgICAgICByZXF1ZXN0UmVzb3VyY2Ugc28gdGhlcmUgaXMgb25l
IHBsYWNlIHdoZXJlIGxvYWQgaXMgY2FsbGVkIGZvciBhbGwKKyAgICAgICAgcmVzb3VyY2VzLgor
CisgICAgICAgIEFkZGVkIGEgYm9vbCBwYXJhbWV0ZXIgZm9yIHJlcXVlc3RSZXNvdXJjZSBhbmQK
KyAgICAgICAgZGV0ZXJtaW5lUmV2YWxpZGF0aW9uUG9saWN5IHNvIHRoYXQgRnJhbWVMb2FkZXJD
bGllbnQ6OmFsbG93SW1hZ2UgY2FsbAorICAgICAgICBkbyBub3QgbmVlZCB0byBiZSBjYWxsZWQg
bXVsdGlwbGUgdGltZXMuCisKKyAgICAgICAgUmVtb3ZlZCBDYWNoZWRJbWFnZTo6bG9hZCBjYWxs
IGluIHJlcXVlc3RJbWFnZSBzbyBpdCBpcyBub3QgY2FsbGVkCisgICAgICAgIHR3aWNlLgorCisg
ICAgICAgIFJlbW92ZWQgdW5uZWNlc3NhcnkgRnJhbWUuaCBpbmNsdWRlcyBpbiBDYWNoZWRSZXNv
dXJjZSBhbmQKKyAgICAgICAgQ2FjaGVkSW1hZ2UuCisKKyAgICAgICAgUmVtb3ZlZCBkZWFkIGxv
YWQoKSBtZXRob2QgZGVjbGFyYXRpb24gaW4gQ2FjaGVkSW1hZ2UuCisKKyAgICAgICAgVXBkYXRl
ZCB0ZXh0IGV4cGVjdGF0aW9uIGZvciB0d28gaW1hZ2UtcGVybWlzc2lvbnMgdGVzdHMgdG8gcmVm
bGVjdAorICAgICAgICB0aGUgcmVtb3ZlZCBjYWxscyB0byBhbGxvd0ltYWdlLgorCisgICAgICAg
ICogd2luL1dlYktpdDIuZGVmOgorCiAyMDEyLTA5LTE3ICBKb24gTGVlICA8am9ubGVlQGFwcGxl
LmNvbT4KIAogICAgICAgICBTYWZhcmkgNiBub3RpZmljYXRpb25zJyBvbmNsaWNrIGhhbmRsZXJz
IGNhbid0IGNhbGwgd2luZG93Lm9wZW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCBkZmY4MzBk
NTAzODQ5MmZkMmRlNDEwY2YyNWY4MzI5MzcyMjAxMDM4Li43YzM2NzI2NjkwYjMzYzM3MzdkM2Y3
Yjg3NjU1MDQzN2ZjZmI3MTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtODUyLDYgKzg1Miw3
IEBAIF9fWk43V2ViQ29yZThHcmFkaWVudEMxRVJLTlNfMTBGbG9hdFBvaW50RVMzXwogX19aTjdX
ZWJDb3JlOFBvc2l0aW9uQzFFTjNXVEYxMFBhc3NSZWZQdHJJTlNfNE5vZGVFRUVpTlMwXzEwQW5j
aG9yVHlwZUUKIF9fWk43V2ViQ29yZThTZXR0aW5nczE0c2V0SmF2YUVuYWJsZWRFYgogX19aTjdX
ZWJDb3JlOFNldHRpbmdzMTVzZXRXZWJHTEVuYWJsZWRFYgorX19aTjdXZWJDb3JlOFNldHRpbmdz
MTZzZXRJbWFnZXNFbmFibGVkRWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczE2c2V0U2NyaXB0RW5h
YmxlZEViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MxNnNldFVzZXNQYWdlQ2FjaGVFYgogX19aTjdX
ZWJDb3JlOFNldHRpbmdzMTdzZXRQbHVnaW5zRW5hYmxlZEViCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcAppbmRleCBiMjZiNmQ0Y2MyMmZhZTc1NzhkMDQ0ZjYxMDUxNjE5MjRiMDZm
YzVmLi40MTc3MmNhZWU4ZDJkOTMyZGQzZjZiZWMyYThiYmFmYzBkY2U1ZjFjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTY0Nyw2ICs2NDcsNyBAQCB2b2lkIEZyYW1l
TG9hZGVyOjpkaWRCZWdpbkRvY3VtZW50KGJvb2wgZGlzcGF0Y2gpCiAgICAgbV9mcmFtZS0+ZG9j
dW1lbnQoKS0+aW5pdENvbnRlbnRTZWN1cml0eVBvbGljeSgpOwogCiAgICAgU2V0dGluZ3MqIHNl
dHRpbmdzID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+c2V0dGluZ3MoKTsKKyAgICBtX2ZyYW1lLT5k
b2N1bWVudCgpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5zZXRJbWFnZXNFbmFibGVkKCFzZXR0
aW5ncyB8fCBzZXR0aW5ncy0+YXJlSW1hZ2VzRW5hYmxlZCgpKTsKICAgICBtX2ZyYW1lLT5kb2N1
bWVudCgpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5zZXRBdXRvTG9hZEltYWdlcyhzZXR0aW5n
cyAmJiBzZXR0aW5ncy0+bG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KCkpOwogCiAgICAgaWYgKG1f
ZG9jdW1lbnRMb2FkZXIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJy
ZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2Fk
ZXIuY3BwCmluZGV4IGZmM2JlNmVkZmY4Yjk3ZmM1NWEwODQ4YjRjMWFmMDJmMDgxYjQ2MTYuLjU2
ZGUwZDM0MTMzYzNmNWE0NzJiZmMyYmM2ZjRlNWNkZjM4MzAzZmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAtMTY3LDExICsxNjcsMTMgQEAgdm9p
ZCBTdWJyZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYgbmV3
UmVxdWVzdCwgY29uc3QgUmVzb3UKICAgICAKICAgICBSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRS
ZXF1ZXN0KG5ld1JlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOwogICAgIGlmICghcHJldmlvdXNV
UkwuaXNOdWxsKCkgJiYgIW5ld1JlcXVlc3QuaXNOdWxsKCkgJiYgcHJldmlvdXNVUkwgIT0gbmV3
UmVxdWVzdC51cmwoKSkgewotICAgICAgICBpZiAoIW1fZG9jdW1lbnQtPmNhY2hlZFJlc291cmNl
TG9hZGVyKCktPmNhblJlcXVlc3QobV9yZXNvdXJjZS0+dHlwZSgpLCBuZXdSZXF1ZXN0LnVybCgp
KSkgewotICAgICAgICAgICAgY2FuY2VsKCk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAg
IGlmIChtX2RvY3VtZW50LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5jYW5SZXF1ZXN0KG1fcmVz
b3VyY2UtPnR5cGUoKSwgbmV3UmVxdWVzdC51cmwoKSkpIHsKKyAgICAgICAgICAgIGlmIChtX3Jl
c291cmNlLT50eXBlKCkgIT0gQ2FjaGVkUmVzb3VyY2U6OkltYWdlUmVzb3VyY2UgfHwgIW1fZG9j
dW1lbnQtPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPnNob3VsZERlZmVySW1hZ2VMb2FkKG5ld1Jl
cXVlc3QudXJsKCkpKSB7CisgICAgICAgICAgICAgICAgbV9yZXNvdXJjZS0+d2lsbFNlbmRSZXF1
ZXN0KG5ld1JlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOworICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBtX3Jlc291cmNlLT53aWxsU2Vu
ZFJlcXVlc3QobmV3UmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CisgICAgICAgIGNhbmNlbCgp
OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5j
cHAKaW5kZXggNDMxNjYxNmIzNjQ1M2EyMDg2NWU0ZDJkNmUwMjg5MzBhZjE2YjlkMy4uMDU1YWNi
OTBjZDE5OWI0NzhlNTE2ZTA2NWI1MWUwOGRiNDcwNTk0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAi
Q2FjaGVkUmVzb3VyY2VDbGllbnQuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudFdh
bGtlci5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCi0jaW5jbHVkZSAiRnJh
bWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIkZyYW1lTG9h
ZGVyVHlwZXMuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKQEAgLTc5LDcgKzc4LDcgQEAgQ2Fj
aGVkSW1hZ2U6On5DYWNoZWRJbWFnZSgpCiAKIHZvaWQgQ2FjaGVkSW1hZ2U6OmxvYWQoQ2FjaGVk
UmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyLCBjb25zdCBSZXNvdXJjZUxvYWRl
ck9wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgaWYgKCFjYWNoZWRSZXNvdXJjZUxvYWRlciB8fCBj
YWNoZWRSZXNvdXJjZUxvYWRlci0+YXV0b0xvYWRJbWFnZXMoKSkKKyAgICBpZiAoc3RpbGxOZWVk
c0xvYWQoKSAmJiAoIWNhY2hlZFJlc291cmNlTG9hZGVyIHx8IGNhY2hlZFJlc291cmNlTG9hZGVy
LT5hdXRvTG9hZEltYWdlcygpKSkKICAgICAgICAgQ2FjaGVkUmVzb3VyY2U6OmxvYWQoY2FjaGVk
UmVzb3VyY2VMb2FkZXIsIG9wdGlvbnMpOwogICAgIGVsc2UKICAgICAgICAgc2V0TG9hZGluZyhm
YWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCmluZGV4IDQ4
NjVjN2UyNDY2NWJhNjM5YjBlMWE5NmJjNjI1MjYwZDczYWQwMWIuLjA3OGY3YWIxYzYyZmY4NmI4
MTViOWYwNjU0NjMwZDM2MDE5MjkzY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRJbWFnZS5oCkBAIC04Miw4ICs4Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkSWdub3JlSFRUUFN0YXR1c0NvZGVFcnJvcnMoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9
CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAg
ICBib29sIHN0aWxsTmVlZHNMb2FkKCkgY29uc3QgeyByZXR1cm4gIWVycm9yT2NjdXJyZWQoKSAm
JiBzdGF0dXMoKSA9PSBVbmtub3duICYmICFpc0xvYWRpbmcoKTsgfQotICAgIHZvaWQgbG9hZCgp
OworICAgIHZpcnR1YWwgYm9vbCBzdGlsbE5lZWRzTG9hZCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0
dXJuICFlcnJvck9jY3VycmVkKCkgJiYgc3RhdHVzKCkgPT0gVW5rbm93biAmJiAhaXNMb2FkaW5n
KCk7IH0KIAogICAgIC8vIEltYWdlT2JzZXJ2ZXIKICAgICB2aXJ0dWFsIHZvaWQgZGVjb2RlZFNp
emVDaGFuZ2VkKGNvbnN0IEltYWdlKiBpbWFnZSwgaW50IGRlbHRhKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IDQzYzNkMTQ0ZjgyZjE1
Njg4Y2Y2NmMwNTRhMDRkYTk2MDE5YjlkMTEuLjMzZDFiYTgyM2JjNmZkODY1NzJlNmE5NDYxYWM1
YmQ3NTYzYTA2YmIgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlLmNwcApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9h
ZGVyLmgiCiAjaW5jbHVkZSAiQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmgiCiAjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKLSNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xp
ZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAi
S1VSTC5oIgpAQCAtMzkwLDcgKzM4OSw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OmRpZEFkZENs
aWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCogYykKICAgICAgICAgbV9jbGllbnRzLmFkZChjKTsK
ICAgICAgICAgbV9jbGllbnRzQXdhaXRpbmdDYWxsYmFjay5yZW1vdmUoYyk7CiAgICAgfQotICAg
IGlmICghaXNMb2FkaW5nKCkpCisgICAgaWYgKCFpc0xvYWRpbmcoKSAmJiAhc3RpbGxOZWVkc0xv
YWQoKSkKICAgICAgICAgYy0+bm90aWZ5RmluaXNoZWQodGhpcyk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKaW5kZXggMGNhZDNlZTdjYTQyODEy
ZWFhM2VmZTYwMDMxMTY0NDlmN2E2OTZhMS4uYjczOWQ2OGFmODFmMmRiN2I0ODYyZGYxNTlhYWNm
MTU4ZTBiNTczMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlLmgKQEAgLTQ1LDcgKzQ1LDYgQEAgY2xhc3MgQ2FjaGVkTWV0YWRhdGE7CiBjbGFzcyBDYWNo
ZWRSZXNvdXJjZUNsaWVudDsKIGNsYXNzIENhY2hlZFJlc291cmNlSGFuZGxlQmFzZTsKIGNsYXNz
IENhY2hlZFJlc291cmNlTG9hZGVyOwotY2xhc3MgRnJhbWU7CiBjbGFzcyBJbnNwZWN0b3JSZXNv
dXJjZTsKIGNsYXNzIFB1cmdlYWJsZUJ1ZmZlcjsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwpAQCAt
MTQ0LDYgKzE0Myw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNMb2FkaW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV9sb2FkaW5nOyB9CiAgICAgdm9pZCBzZXRMb2FkaW5nKGJvb2wgYikgeyBtX2xvYWRp
bmcgPSBiOyB9CisgICAgdmlydHVhbCBib29sIHN0aWxsTmVlZHNMb2FkKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KIAogICAgIFN1YnJlc291cmNlTG9hZGVyKiBsb2FkZXIoKSB7IHJldHVybiBt
X2xvYWRlci5nZXQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAppbmRleCAzNTNhNjJhYTY0MGRiZGQ1ZTUxMjdkOTBi
MTA4NDU2ZDRhYzdjZWRiLi4wY2MwNjZjNTBiYzg3OGEzNWJmYmQzMjU1ZTY1YzU1NzBiNWFmYTY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZUxvYWRlci5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgog
I2luY2x1ZGUgIlBpbmdMb2FkZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRTY2hlZHVsZXIu
aCIKKyNpbmNsdWRlICJTY2hlbWVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2lu
LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4K
QEAgLTExNSw2ICsxMTYsNyBAQCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Q2FjaGVkUmVzb3VyY2VM
b2FkZXIoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgICwgbV9yZXF1ZXN0Q291bnQoMCkKICAgICAs
IG1fZ2FyYmFnZUNvbGxlY3REb2N1bWVudFJlc291cmNlc1RpbWVyKHRoaXMsICZDYWNoZWRSZXNv
dXJjZUxvYWRlcjo6Z2FyYmFnZUNvbGxlY3REb2N1bWVudFJlc291cmNlc1RpbWVyRmlyZWQpCiAg
ICAgLCBtX2F1dG9Mb2FkSW1hZ2VzKHRydWUpCisgICAgLCBtX2ltYWdlc0VuYWJsZWQodHJ1ZSkK
ICAgICAsIG1fYWxsb3dTdGFsZVJlc291cmNlcyhmYWxzZSkKIHsKIH0KQEAgLTE1OSwxMCArMTYx
LDcgQEAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkSW1hZ2U+IENhY2hlZFJlc291cmNlTG9h
ZGVyOjpyZXF1ZXN0SW1hZ2UoUmVzb3VyY2VSZXEKICAgICAgICAgICAgIHJldHVybiAwOwogICAg
ICAgICB9CiAgICAgfQotICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZEltYWdlPiByZXNv
dXJjZShzdGF0aWNfY2FzdDxDYWNoZWRJbWFnZSo+KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNv
dXJjZTo6SW1hZ2VSZXNvdXJjZSwgcmVxdWVzdCwgU3RyaW5nKCksIGRlZmF1bHRDYWNoZWRSZXNv
dXJjZU9wdGlvbnMoKSkuZ2V0KCkpKTsKLSAgICBpZiAoYXV0b0xvYWRJbWFnZXMoKSAmJiByZXNv
dXJjZSAmJiByZXNvdXJjZS0+c3RpbGxOZWVkc0xvYWQoKSkKLSAgICAgICAgcmVzb3VyY2UtPmxv
YWQodGhpcywgZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpKTsKLSAgICByZXR1cm4gcmVz
b3VyY2U7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENhY2hlZEltYWdlKj4ocmVxdWVzdFJlc291
cmNlKENhY2hlZFJlc291cmNlOjpJbWFnZVJlc291cmNlLCByZXF1ZXN0LCBTdHJpbmcoKSwgZGVm
YXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpLCBSZXNvdXJjZUxvYWRQcmlvcml0eVVucmVzb2x2
ZWQsIGZhbHNlLCBjbGllbnREZWZlcnNJbWFnZShyZXF1ZXN0LnVybCgpKSkuZ2V0KCkpOwogfQog
CiBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRGb250PiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6
cmVxdWVzdEZvbnQoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQpAQCAtMzYyLDEyICszNjEsNiBA
QCBib29sIENhY2hlZFJlc291cmNlTG9hZGVyOjpjYW5SZXF1ZXN0KENhY2hlZFJlc291cmNlOjpU
eXBlIHR5cGUsIGNvbnN0IEtVUkwmIHVybAogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkltYWdl
UmVzb3VyY2U6CiAgICAgICAgIGlmICghbV9kb2N1bWVudC0+Y29udGVudFNlY3VyaXR5UG9saWN5
KCktPmFsbG93SW1hZ2VGcm9tU291cmNlKHVybCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICAgICAgaWYgKGZyYW1lKCkpIHsKLSAgICAgICAgICAgIFNldHRpbmdzKiBzZXR0aW5n
cyA9IGZyYW1lKCktPnNldHRpbmdzKCk7Ci0gICAgICAgICAgICBpZiAoIWZyYW1lKCktPmxvYWRl
cigpLT5jbGllbnQoKS0+YWxsb3dJbWFnZSghc2V0dGluZ3MgfHwgc2V0dGluZ3MtPmFyZUltYWdl
c0VuYWJsZWQoKSwgdXJsKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IH0KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6Rm9udFJlc291cmNl
OiB7CiAgICAgICAgIGlmICghbV9kb2N1bWVudC0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmFs
bG93Rm9udEZyb21Tb3VyY2UodXJsKSkKQEAgLTQwMSw3ICszOTQsNyBAQCBib29sIENhY2hlZFJl
c291cmNlTG9hZGVyOjpjYW5SZXF1ZXN0KENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIGNvbnN0
IEtVUkwmIHVybAogICAgIHJldHVybiB0cnVlOwogfQogCi1DYWNoZWRSZXNvdXJjZUhhbmRsZTxD
YWNoZWRSZXNvdXJjZT4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZShDYWNo
ZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0
cmluZyYgY2hhcnNldCwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zLCBSZXNv
dXJjZUxvYWRQcmlvcml0eSBwcmlvcml0eSwgYm9vbCBmb3JQcmVsb2FkKQorQ2FjaGVkUmVzb3Vy
Y2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVz
b3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0
aW9ucywgUmVzb3VyY2VMb2FkUHJpb3JpdHkgcHJpb3JpdHksIGJvb2wgZm9yUHJlbG9hZCwgYm9v
bCBpbWFnZURlZmVycmVkQnlDbGllbnQpCiB7CiAgICAgS1VSTCB1cmwgPSByZXF1ZXN0LnVybCgp
OwogICAgIApAQCAtNDMwLDEyICs0MjMsMTIgQEAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVk
UmVzb3VyY2U+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UoQ2FjaGUKICAg
ICBpZiAocmVxdWVzdC51cmwoKSAhPSB1cmwpCiAgICAgICAgIHJlcXVlc3Quc2V0VVJMKHVybCk7
CiAKLSAgICBzd2l0Y2ggKGRldGVybWluZVJldmFsaWRhdGlvblBvbGljeSh0eXBlLCByZXF1ZXN0
LCBmb3JQcmVsb2FkLCByZXNvdXJjZS5nZXQoKSkpIHsKLSAgICBjYXNlIExvYWQ6Ci0gICAgICAg
IHJlc291cmNlID0gbG9hZFJlc291cmNlKHR5cGUsIHJlcXVlc3QsIGNoYXJzZXQsIHByaW9yaXR5
LCBvcHRpb25zKTsKLSAgICAgICAgYnJlYWs7CisgICAgY29uc3QgUmV2YWxpZGF0aW9uUG9saWN5
IHBvbGljeSA9IGRldGVybWluZVJldmFsaWRhdGlvblBvbGljeSh0eXBlLCByZXF1ZXN0LCBmb3JQ
cmVsb2FkLCByZXNvdXJjZS5nZXQoKSwgaW1hZ2VEZWZlcnJlZEJ5Q2xpZW50KTsKKyAgICBzd2l0
Y2ggKHBvbGljeSkgewogICAgIGNhc2UgUmVsb2FkOgogICAgICAgICBtZW1vcnlDYWNoZSgpLT5y
ZW1vdmUocmVzb3VyY2UuZ2V0KCkpOworICAgICAgICAvLyBGYWxsIHRocm91Z2gKKyAgICBjYXNl
IExvYWQ6CiAgICAgICAgIHJlc291cmNlID0gbG9hZFJlc291cmNlKHR5cGUsIHJlcXVlc3QsIGNo
YXJzZXQsIHByaW9yaXR5LCBvcHRpb25zKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBSZXZh
bGlkYXRlOgpAQCAtNDUwLDYgKzQ0MywxOCBAQCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRS
ZXNvdXJjZT4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZShDYWNoZQogICAg
IGlmICghcmVzb3VyY2UpCiAgICAgICAgIHJldHVybiAwOwogCisgICAgcmVzb3VyY2UtPnNldExv
YWRQcmlvcml0eShwcmlvcml0eSk7CisgICAgaWYgKHJlc291cmNlLT50eXBlKCkgPT0gQ2FjaGVk
UmVzb3VyY2U6OkltYWdlUmVzb3VyY2UgPyAhaW1hZ2VEZWZlcnJlZEJ5Q2xpZW50IDogcG9saWN5
ICE9IFVzZSkgeworICAgICAgICByZXNvdXJjZS0+bG9hZCh0aGlzLCBvcHRpb25zKTsKKworICAg
ICAgICAvLyBXZSBkb24ndCBzdXBwb3J0IGltbWVkaWF0ZSBsb2FkcywgYnV0IHdlIGRvIHN1cHBv
cnQgaW1tZWRpYXRlIGZhaWx1cmUuCisgICAgICAgIGlmIChyZXNvdXJjZS0+ZXJyb3JPY2N1cnJl
ZCgpKSB7CisgICAgICAgICAgICBpZiAocmVzb3VyY2UtPmluQ2FjaGUoKSkKKyAgICAgICAgICAg
ICAgICBtZW1vcnlDYWNoZSgpLT5yZW1vdmUocmVzb3VyY2UuZ2V0KCkpOworICAgICAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgIH0KKyAgICB9CisKICAgICBBU1NFUlQocmVzb3VyY2UtPnVybCgp
ID09IHVybC5zdHJpbmcoKSk7CiAgICAgbV9kb2N1bWVudFJlc291cmNlcy5zZXQocmVzb3VyY2Ut
PnVybCgpLCByZXNvdXJjZSk7CiAgICAgcmV0dXJuIHJlc291cmNlOwpAQCAtNDczLDkgKzQ3OCw2
IEBAIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBDYWNoZWRSZXNvdXJjZUxv
YWRlcjo6cmV2YWxpZGF0ZVJlc291cmNlKENhCiAgICAgCiAgICAgbWVtb3J5Q2FjaGUoKS0+cmVt
b3ZlKHJlc291cmNlKTsKICAgICBtZW1vcnlDYWNoZSgpLT5hZGQobmV3UmVzb3VyY2UuZ2V0KCkp
OwotICAgIAotICAgIG5ld1Jlc291cmNlLT5zZXRMb2FkUHJpb3JpdHkocHJpb3JpdHkpOwotICAg
IG5ld1Jlc291cmNlLT5sb2FkKHRoaXMsIG9wdGlvbnMpOwogCiAgICAgaWYgKCF1cmxQcm90b2Nv
bElzRGF0YSkKICAgICAgICAgbV92YWxpZGF0ZWRVUkxzLmFkZCh1cmwpOwpAQCAtNDkwLDM1ICs0
OTIsMjMgQEAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IENhY2hlZFJlc291
cmNlTG9hZGVyOjpsb2FkUmVzb3VyY2UoQ2FjaGVkUmUKICAgICAKICAgICBDYWNoZWRSZXNvdXJj
ZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gcmVzb3VyY2UgPSBjcmVhdGVSZXNvdXJjZSh0eXBlLCBy
ZXF1ZXN0LCBjaGFyc2V0KTsKICAgICAKLSAgICBib29sIGluQ2FjaGUgPSBtZW1vcnlDYWNoZSgp
LT5hZGQocmVzb3VyY2UuZ2V0KCkpOwotICAgIAotICAgIHJlc291cmNlLT5zZXRMb2FkUHJpb3Jp
dHkocHJpb3JpdHkpOwotICAgIHJlc291cmNlLT5sb2FkKHRoaXMsIG9wdGlvbnMpOwotICAgIAot
ICAgIGlmICghaW5DYWNoZSkKKyAgICBpZiAoIW1lbW9yeUNhY2hlKCktPmFkZChyZXNvdXJjZS5n
ZXQoKSkpCiAgICAgICAgIHJlc291cmNlLT5zZXRPd25pbmdDYWNoZWRSZXNvdXJjZUxvYWRlcih0
aGlzKTsKIAotICAgIC8vIFdlIGRvbid0IHN1cHBvcnQgaW1tZWRpYXRlIGxvYWRzLCBidXQgd2Ug
ZG8gc3VwcG9ydCBpbW1lZGlhdGUgZmFpbHVyZS4KLSAgICBpZiAocmVzb3VyY2UtPmVycm9yT2Nj
dXJyZWQoKSkgewotICAgICAgICBpZiAoaW5DYWNoZSkKLSAgICAgICAgICAgIG1lbW9yeUNhY2hl
KCktPnJlbW92ZShyZXNvdXJjZS5nZXQoKSk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQog
ICAgIGlmICghcmVxdWVzdC51cmwoKS5wcm90b2NvbElzRGF0YSgpKQogICAgICAgICBtX3ZhbGlk
YXRlZFVSTHMuYWRkKHJlcXVlc3QudXJsKCkpOwogICAgIHJldHVybiByZXNvdXJjZTsKIH0KIAot
Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OlJldmFsaWRhdGlvblBvbGljeSBDYWNoZWRSZXNvdXJjZUxv
YWRlcjo6ZGV0ZXJtaW5lUmV2YWxpZGF0aW9uUG9saWN5KENhY2hlZFJlc291cmNlOjpUeXBlIHR5
cGUsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBmb3JQcmVsb2FkLCBDYWNoZWRSZXNv
dXJjZSogZXhpc3RpbmdSZXNvdXJjZSkgY29uc3QKK0NhY2hlZFJlc291cmNlTG9hZGVyOjpSZXZh
bGlkYXRpb25Qb2xpY3kgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRldGVybWluZVJldmFsaWRhdGlv
blBvbGljeShDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIGJvb2wgZm9yUHJlbG9hZCwgQ2FjaGVkUmVzb3VyY2UqIGV4aXN0aW5nUmVzb3VyY2UsIGJv
b2wgaW1hZ2VEZWZlcnJlZEJ5Q2xpZW50KSBjb25zdAogewogICAgIGlmICghZXhpc3RpbmdSZXNv
dXJjZSkKICAgICAgICAgcmV0dXJuIExvYWQ7Ci0gICAgCisKICAgICAvLyBXZSBhbHJlYWR5IGhh
dmUgYSBwcmVsb2FkIGdvaW5nIGZvciB0aGlzIFVSTC4KICAgICBpZiAoZm9yUHJlbG9hZCAmJiBl
eGlzdGluZ1Jlc291cmNlLT5pc1ByZWxvYWRlZCgpKQogICAgICAgICByZXR1cm4gVXNlOwotICAg
IAorCiAgICAgLy8gSWYgdGhlIHNhbWUgVVJMIGhhcyBiZWVuIGxvYWRlZCBhcyBhIGRpZmZlcmVu
dCB0eXBlLCB3ZSBuZWVkIHRvIHJlbG9hZC4KICAgICBpZiAoZXhpc3RpbmdSZXNvdXJjZS0+dHlw
ZSgpICE9IHR5cGUpIHsKICAgICAgICAgTE9HKFJlc291cmNlTG9hZGluZywgIkNhY2hlZFJlc291
cmNlTG9hZGVyOjpkZXRlcm1pbmVSZXZhbGlkYXRpb25Qb2xpY3kgcmVsb2FkaW5nIGR1ZSB0byB0
eXBlIG1pc21hdGNoLiIpOwpAQCAtNTMzLDYgKzUyMywxMSBAQCBDYWNoZWRSZXNvdXJjZUxvYWRl
cjo6UmV2YWxpZGF0aW9uUG9saWN5IENhY2hlZFJlc291cmNlTG9hZGVyOjpkZXRlcm1pbmVSZXZh
bGlkYQogICAgIC8vIG9mIHRoaW5ncyBhYm91dCBob3cgcmV2YWxpZGF0aW9uIHdvcmtzIHRoYXQg
bWFudWFsIGhlYWRlcnMgdmlvbGF0ZSwgc28gcHVudCB0byBSZWxvYWQgaW5zdGVhZC4KICAgICBp
ZiAocmVxdWVzdC5pc0NvbmRpdGlvbmFsKCkpCiAgICAgICAgIHJldHVybiBSZWxvYWQ7CisKKyAg
ICAvLyBEbyBub3QgbG9hZCBmcm9tIGNhY2hlIGlmIGltYWdlcyBhcmUgbm90IGVuYWJsZWQuIFRo
ZSBsb2FkIGZvciB0aGlzIGltYWdlIHdpbGwgYmUgYmxvY2tlZAorICAgIC8vIGluIENhY2hlZElt
YWdlOjpsb2FkLgorICAgIGlmIChpbWFnZURlZmVycmVkQnlDbGllbnQgJiYgZXhpc3RpbmdSZXNv
dXJjZS0+dHlwZSgpID09IENhY2hlZFJlc291cmNlOjpJbWFnZVJlc291cmNlKQorICAgICAgICBy
ZXR1cm4gUmVsb2FkOwogICAgIAogICAgIC8vIERvbid0IHJlbG9hZCByZXNvdXJjZXMgd2hpbGUg
cGFzdGluZy4KICAgICBpZiAobV9hbGxvd1N0YWxlUmVzb3VyY2VzKQpAQCAtNjI5LDE1ICs2MjQs
MzkgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6c2V0QXV0b0xvYWRJbWFnZXMoYm9vbCBl
bmFibGUpCiAgICAgaWYgKCFtX2F1dG9Mb2FkSW1hZ2VzKQogICAgICAgICByZXR1cm47CiAKKyAg
ICByZWxvYWRJbWFnZXNJZk5vdERlZmVycmVkKCk7Cit9CisKK3ZvaWQgQ2FjaGVkUmVzb3VyY2VM
b2FkZXI6OnNldEltYWdlc0VuYWJsZWQoYm9vbCBlbmFibGUpCit7CisgICAgaWYgKGVuYWJsZSA9
PSBtX2ltYWdlc0VuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1faW1hZ2VzRW5hYmxl
ZCA9IGVuYWJsZTsKKworICAgIGlmICghbV9pbWFnZXNFbmFibGVkKQorICAgICAgICByZXR1cm47
CisKKyAgICByZWxvYWRJbWFnZXNJZk5vdERlZmVycmVkKCk7Cit9CisKK2Jvb2wgQ2FjaGVkUmVz
b3VyY2VMb2FkZXI6OmNsaWVudERlZmVyc0ltYWdlKGNvbnN0IEtVUkwmIHVybCkgY29uc3QKK3sK
KyAgICByZXR1cm4gZnJhbWUoKSAmJiAhZnJhbWUoKS0+bG9hZGVyKCktPmNsaWVudCgpLT5hbGxv
d0ltYWdlKG1faW1hZ2VzRW5hYmxlZCwgdXJsKTsKK30KKworYm9vbCBDYWNoZWRSZXNvdXJjZUxv
YWRlcjo6c2hvdWxkRGVmZXJJbWFnZUxvYWQoY29uc3QgS1VSTCYgdXJsKSBjb25zdAoreworICAg
IHJldHVybiBjbGllbnREZWZlcnNJbWFnZSh1cmwpIHx8ICFtX2F1dG9Mb2FkSW1hZ2VzOworfQor
Cit2b2lkIENhY2hlZFJlc291cmNlTG9hZGVyOjpyZWxvYWRJbWFnZXNJZk5vdERlZmVycmVkKCkK
K3sKICAgICBEb2N1bWVudFJlc291cmNlTWFwOjppdGVyYXRvciBlbmQgPSBtX2RvY3VtZW50UmVz
b3VyY2VzLmVuZCgpOwogICAgIGZvciAoRG9jdW1lbnRSZXNvdXJjZU1hcDo6aXRlcmF0b3IgaXQg
PSBtX2RvY3VtZW50UmVzb3VyY2VzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAg
ICBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UgPSBpdC0+c2Vjb25kLmdldCgpOwotICAgICAgICBp
ZiAocmVzb3VyY2UtPnR5cGUoKSA9PSBDYWNoZWRSZXNvdXJjZTo6SW1hZ2VSZXNvdXJjZSkgewot
ICAgICAgICAgICAgQ2FjaGVkSW1hZ2UqIGltYWdlID0gY29uc3RfY2FzdDxDYWNoZWRJbWFnZSo+
KHN0YXRpY19jYXN0PGNvbnN0IENhY2hlZEltYWdlKj4ocmVzb3VyY2UpKTsKLQotICAgICAgICAg
ICAgaWYgKGltYWdlLT5zdGlsbE5lZWRzTG9hZCgpKQotICAgICAgICAgICAgICAgIGltYWdlLT5s
b2FkKHRoaXMsIGRlZmF1bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKSk7Ci0gICAgICAgIH0KKyAg
ICAgICAgaWYgKHJlc291cmNlLT50eXBlKCkgPT0gQ2FjaGVkUmVzb3VyY2U6OkltYWdlUmVzb3Vy
Y2UgJiYgIWNsaWVudERlZmVyc0ltYWdlKHJlc291cmNlLT51cmwoKSkpCisgICAgICAgICAgICBj
b25zdF9jYXN0PENhY2hlZFJlc291cmNlKj4ocmVzb3VyY2UpLT5sb2FkKHRoaXMsIGRlZmF1bHRD
YWNoZWRSZXNvdXJjZU9wdGlvbnMoKSk7CiAgICAgfQogfQogCkBAIC03NjksNyArNzg4LDcgQEAg
dm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFByZWxvYWQoQ2FjaGVkUmVzb3VyY2U6
OlR5cGUgdHlwZSwgUmVzb3VyY2VSZXEKICAgICBpZiAodHlwZSA9PSBDYWNoZWRSZXNvdXJjZTo6
U2NyaXB0IHx8IHR5cGUgPT0gQ2FjaGVkUmVzb3VyY2U6OkNTU1N0eWxlU2hlZXQpCiAgICAgICAg
IGVuY29kaW5nID0gY2hhcnNldC5pc0VtcHR5KCkgPyBtX2RvY3VtZW50LT5jaGFyc2V0KCkgOiBj
aGFyc2V0OwogCi0gICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IHJlc291
cmNlID0gcmVxdWVzdFJlc291cmNlKHR5cGUsIHJlcXVlc3QsIGVuY29kaW5nLCBkZWZhdWx0Q2Fj
aGVkUmVzb3VyY2VPcHRpb25zKCksIFJlc291cmNlTG9hZFByaW9yaXR5VW5yZXNvbHZlZCwgdHJ1
ZSk7CisgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IHJlc291cmNlID0g
cmVxdWVzdFJlc291cmNlKHR5cGUsIHJlcXVlc3QsIGVuY29kaW5nLCBkZWZhdWx0Q2FjaGVkUmVz
b3VyY2VPcHRpb25zKCksIFJlc291cmNlTG9hZFByaW9yaXR5VW5yZXNvbHZlZCwgdHJ1ZSwgZmFs
c2UpOwogICAgIGlmICghcmVzb3VyY2UgfHwgKG1fcHJlbG9hZHMgJiYgbV9wcmVsb2Fkcy0+Y29u
dGFpbnMocmVzb3VyY2UuZ2V0KCkpKSkKICAgICAgICAgcmV0dXJuOwogICAgIHJlc291cmNlLT5p
bmNyZWFzZVByZWxvYWRDb3VudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaAppbmRleCBmNDc1NWMyMmZkOGQyZjFjMmEwZThlNmRh
ODJlN2Y5YjUyM2ExOWZiLi43NTg0Y2Q4OTQ0NDI5MmM1YzMwNTdlZDc4MjQ4NDdjNzI2MTkxZThi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VM
b2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VM
b2FkZXIuaApAQCAtOTcsNiArOTcsMTAgQEAgcHVibGljOgogCiAgICAgYm9vbCBhdXRvTG9hZElt
YWdlcygpIGNvbnN0IHsgcmV0dXJuIG1fYXV0b0xvYWRJbWFnZXM7IH0KICAgICB2b2lkIHNldEF1
dG9Mb2FkSW1hZ2VzKGJvb2wpOworCisgICAgdm9pZCBzZXRJbWFnZXNFbmFibGVkKGJvb2wpOwor
CisgICAgYm9vbCBzaG91bGREZWZlckltYWdlTG9hZChjb25zdCBLVVJMJikgY29uc3Q7CiAgICAg
CiAgICAgQ2FjaGVQb2xpY3kgY2FjaGVQb2xpY3koKSBjb25zdDsKICAgICAKQEAgLTEyMiwxOSAr
MTI2LDIyIEBAIHB1YmxpYzoKICAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVj
dEluZm8qKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNo
ZWRSZXNvdXJjZT4gcmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpUeXBlLCBSZXNvdXJj
ZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0
aW9ucyYsIFJlc291cmNlTG9hZFByaW9yaXR5ID0gUmVzb3VyY2VMb2FkUHJpb3JpdHlVbnJlc29s
dmVkLCBib29sIGlzUHJlbG9hZCA9IGZhbHNlKTsKKyAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxD
YWNoZWRSZXNvdXJjZT4gcmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpUeXBlLCBSZXNv
dXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIGNvbnN0IFJlc291cmNlTG9hZGVy
T3B0aW9ucyYsIFJlc291cmNlTG9hZFByaW9yaXR5ID0gUmVzb3VyY2VMb2FkUHJpb3JpdHlVbnJl
c29sdmVkLCBib29sIGlzUHJlbG9hZCA9IGZhbHNlLCBib29sIGltYWdlRGVmZXJyZWRCeUNsaWVu
dCA9IGZhbHNlKTsKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gcmV2
YWxpZGF0ZVJlc291cmNlKENhY2hlZFJlc291cmNlKiwgUmVzb3VyY2VMb2FkUHJpb3JpdHksIGNv
bnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYpOwogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENh
Y2hlZFJlc291cmNlPiBsb2FkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIFJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgUmVzb3VyY2VMb2FkUHJpb3JpdHksIGNv
bnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYpOwogICAgIHZvaWQgcmVxdWVzdFByZWxvYWQoQ2Fj
aGVkUmVzb3VyY2U6OlR5cGUsIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgY2hhcnNl
dCk7CiAKICAgICBlbnVtIFJldmFsaWRhdGlvblBvbGljeSB7IFVzZSwgUmV2YWxpZGF0ZSwgUmVs
b2FkLCBMb2FkIH07Ci0gICAgUmV2YWxpZGF0aW9uUG9saWN5IGRldGVybWluZVJldmFsaWRhdGlv
blBvbGljeShDYWNoZWRSZXNvdXJjZTo6VHlwZSwgUmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBmb3JQ
cmVsb2FkLCBDYWNoZWRSZXNvdXJjZSogZXhpc3RpbmdSZXNvdXJjZSkgY29uc3Q7CisgICAgUmV2
YWxpZGF0aW9uUG9saWN5IGRldGVybWluZVJldmFsaWRhdGlvblBvbGljeShDYWNoZWRSZXNvdXJj
ZTo6VHlwZSwgUmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBmb3JQcmVsb2FkLCBDYWNoZWRSZXNvdXJj
ZSogZXhpc3RpbmdSZXNvdXJjZSwgYm9vbCBpbWFnZURlZmVycmVkQnlDbGllbnQpIGNvbnN0Owog
ICAgIAogICAgIHZvaWQgbm90aWZ5TG9hZGVkRnJvbU1lbW9yeUNhY2hlKENhY2hlZFJlc291cmNl
Kik7CiAgICAgYm9vbCBjaGVja0luc2VjdXJlQ29udGVudChDYWNoZWRSZXNvdXJjZTo6VHlwZSwg
Y29uc3QgS1VSTCYpIGNvbnN0OwogCiAgICAgdm9pZCBnYXJiYWdlQ29sbGVjdERvY3VtZW50UmVz
b3VyY2VzVGltZXJGaXJlZChUaW1lcjxDYWNoZWRSZXNvdXJjZUxvYWRlcj4qKTsKICAgICB2b2lk
IHBlcmZvcm1Qb3N0TG9hZEFjdGlvbnMoKTsKKworICAgIGJvb2wgY2xpZW50RGVmZXJzSW1hZ2Uo
Y29uc3QgS1VSTCYpIGNvbnN0OworICAgIHZvaWQgcmVsb2FkSW1hZ2VzSWZOb3REZWZlcnJlZCgp
OwogICAgIAogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3ZhbGlkYXRlZFVSTHM7CiAgICAgbXV0YWJs
ZSBEb2N1bWVudFJlc291cmNlTWFwIG1fZG9jdW1lbnRSZXNvdXJjZXM7CkBAIC0xNTIsOCArMTU5
LDkgQEAgcHJpdmF0ZToKIAogICAgIFRpbWVyPENhY2hlZFJlc291cmNlTG9hZGVyPiBtX2dhcmJh
Z2VDb2xsZWN0RG9jdW1lbnRSZXNvdXJjZXNUaW1lcjsKIAotICAgIC8vIDMwIGJpdHMgbGVmdAor
ICAgIC8vIDI5IGJpdHMgbGVmdAogICAgIGJvb2wgbV9hdXRvTG9hZEltYWdlcyA6IDE7CisgICAg
Ym9vbCBtX2ltYWdlc0VuYWJsZWQgOiAxOwogICAgIGJvb2wgbV9hbGxvd1N0YWxlUmVzb3VyY2Vz
IDogMTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKaW5kZXggZGY0MjU5NjRkZTYxMWRi
NTM4ZjljYmJjYzc2N2QyNDJlMTMzZWQxNy4uMzA2NjZjNTYxOTgzMjM5YjhkOTg5ZDI4MzMxMGNm
MmY2YjQ2YzNjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKQEAgLTQ2LDEwICs0NiwxMiBA
QCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyB2
b2lkIHNldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseUluQWxsRnJhbWVzKFBhZ2UqIHBhZ2UpCitz
dGF0aWMgdm9pZCBzZXRJbWFnZUxvYWRpbmdTZXR0aW5ncyhQYWdlKiBwYWdlKQogewotICAgIGZv
ciAoRnJhbWUqIGZyYW1lID0gcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1l
LT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKQorICAgIGZvciAoRnJhbWUqIGZyYW1lID0gcGFnZS0+
bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgp
KSB7CisgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5z
ZXRJbWFnZXNFbmFibGVkKHBhZ2UtPnNldHRpbmdzKCktPmFyZUltYWdlc0VuYWJsZWQoKSk7CiAg
ICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5zZXRBdXRv
TG9hZEltYWdlcyhwYWdlLT5zZXR0aW5ncygpLT5sb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoKSk7
CisgICAgfQogfQogCiAvLyBTZXRzIHRoZSBlbnRyeSBpbiB0aGUgZm9udCBtYXAgZm9yIHRoZSBn
aXZlbiBzY3JpcHQuIElmIGZhbWlseSBpcyB0aGUgZW1wdHkgc3RyaW5nLCByZW1vdmVzIHRoZSBl
bnRyeSBpbnN0ZWFkLgpAQCAtMjkxLDcgKzI5Myw3IEBAIFNldHRpbmdzOjpTZXR0aW5ncyhQYWdl
KiBwYWdlKQogICAgICwgbV93aW5kb3dGb2N1c1Jlc3RyaWN0ZWQodHJ1ZSkKICAgICAsIG1fZGlh
Z25vc3RpY0xvZ2dpbmdFbmFibGVkKGZhbHNlKQogICAgICwgbV9zY3JvbGxpbmdQZXJmb3JtYW5j
ZUxvZ2dpbmdFbmFibGVkKGZhbHNlKQotICAgICwgbV9sb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHlU
aW1lcih0aGlzLCAmU2V0dGluZ3M6OmxvYWRzSW1hZ2VzQXV0b21hdGljYWxseVRpbWVyRmlyZWQp
CisgICAgLCBtX3NldEltYWdlTG9hZGluZ1NldHRpbmdzVGltZXIodGhpcywgJlNldHRpbmdzOjpp
bWFnZUxvYWRpbmdTZXR0aW5nc1RpbWVyRmlyZWQpCiAgICAgLCBtX2luY3JlbWVudGFsUmVuZGVy
aW5nU3VwcHJlc3Npb25UaW1lb3V0SW5TZWNvbmRzKGRlZmF1bHRJbmNyZW1lbnRhbFJlbmRlcmlu
Z1N1cHByZXNzaW9uVGltZW91dEluU2Vjb25kcykKIHsKICAgICAvLyBBIEZyYW1lIG1heSBub3Qg
aGF2ZSBiZWVuIGNyZWF0ZWQgeWV0LCBzbyB3ZSBpbml0aWFsaXplIHRoZSBBdG9taWNTdHJpbmcK
QEAgLTQ2NiwxMiArNDY4LDEyIEBAIHZvaWQgU2V0dGluZ3M6OnNldExvYWRzSW1hZ2VzQXV0b21h
dGljYWxseShib29sIGxvYWRzSW1hZ2VzQXV0b21hdGljYWxseSkKICAgICAvLyBTdGFydGluZyB0
aGVzZSBsb2FkcyBzeW5jaHJvbm91c2x5IGlzIG5vdCBpbXBvcnRhbnQuICBCeSBwdXR0aW5nIGl0
IG9uIGEgMC1kZWxheSwgcHJvcGVybHkgY2xvc2luZyB0aGUgUGFnZSBjYW5jZWxzIHRoZW0KICAg
ICAvLyBiZWZvcmUgdGhleSBoYXZlIGEgY2hhbmNlIHRvIHJlYWxseSBzdGFydC4KICAgICAvLyBT
ZWUgaHR0cDovL3dlYmtpdC5vcmcvYi82MDU3MiBmb3IgbW9yZSBkaXNjdXNzaW9uLgotICAgIG1f
bG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5VGltZXIuc3RhcnRPbmVTaG90KDApOworICAgIG1fc2V0
SW1hZ2VMb2FkaW5nU2V0dGluZ3NUaW1lci5zdGFydE9uZVNob3QoMCk7CiB9CiAKLXZvaWQgU2V0
dGluZ3M6OmxvYWRzSW1hZ2VzQXV0b21hdGljYWxseVRpbWVyRmlyZWQoVGltZXI8U2V0dGluZ3M+
KikKK3ZvaWQgU2V0dGluZ3M6OmltYWdlTG9hZGluZ1NldHRpbmdzVGltZXJGaXJlZChUaW1lcjxT
ZXR0aW5ncz4qKQogewotICAgIHNldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseUluQWxsRnJhbWVz
KG1fcGFnZSk7CisgICAgc2V0SW1hZ2VMb2FkaW5nU2V0dGluZ3MobV9wYWdlKTsKIH0KIAogdm9p
ZCBTZXR0aW5nczo6c2V0TG9hZHNTaXRlSWNvbnNJZ25vcmluZ0ltYWdlTG9hZGluZ1NldHRpbmco
Ym9vbCBsb2Fkc1NpdGVJY29ucykKQEAgLTUxNyw2ICs1MTksOSBAQCB2b2lkIFNldHRpbmdzOjpz
ZXRKYXZhRW5hYmxlZEZvckxvY2FsRmlsZXMoYm9vbCBpc0phdmFFbmFibGVkRm9yTG9jYWxGaWxl
cykKIHZvaWQgU2V0dGluZ3M6OnNldEltYWdlc0VuYWJsZWQoYm9vbCBhcmVJbWFnZXNFbmFibGVk
KQogewogICAgIG1fYXJlSW1hZ2VzRW5hYmxlZCA9IGFyZUltYWdlc0VuYWJsZWQ7CisKKyAgICAv
LyBTZWUgY29tbWVudCBpbiBzZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkuCisgICAgbV9zZXRJ
bWFnZUxvYWRpbmdTZXR0aW5nc1RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKIH0KIAogdm9pZCBTZXR0
aW5nczo6c2V0TWVkaWFFbmFibGVkKGJvb2wgaXNNZWRpYUVuYWJsZWQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRp
bmdzLmgKaW5kZXggODM5ODZmNjk3MGJmZDI4YWUyOGVmYTZjODlkMWZhZDU0OTU2OGIwYS4uYzE4
ZGZkNzMwNmI1OTU1MmZmMzQyYmQxN2MwZmMyNWNhNTdmNzMyNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGlu
Z3MuaApAQCAtODE4LDggKzgxOCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBi
b29sIG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCA6IDE7CiAKLSAgICAgICAg
VGltZXI8U2V0dGluZ3M+IG1fbG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5VGltZXI7Ci0gICAgICAg
IHZvaWQgbG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5VGltZXJGaXJlZChUaW1lcjxTZXR0aW5ncz4q
KTsKKyAgICAgICAgVGltZXI8U2V0dGluZ3M+IG1fc2V0SW1hZ2VMb2FkaW5nU2V0dGluZ3NUaW1l
cjsKKyAgICAgICAgdm9pZCBpbWFnZUxvYWRpbmdTZXR0aW5nc1RpbWVyRmlyZWQoVGltZXI8U2V0
dGluZ3M+Kik7CiAgICAgICAgIAogICAgICAgICBkb3VibGUgbV9pbmNyZW1lbnRhbFJlbmRlcmlu
Z1N1cHByZXNzaW9uVGltZW91dEluU2Vjb25kczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxTZXR0aW5ncy5jcHAKaW5kZXggYmQyMzc2NjA3ZDcwNDFmMTc3MmMxNjFjMjEyNTlj
NTVlNDFjMzAyOC4uYmI5ZWVkNmIxMzU2ZTExOGExNTYyZmY0ZDJkYzI0MGMzNWYwNWI2NyAxMDA3
NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCkBAIC0xMDAsNiAr
MTAwLDcgQEAgSW50ZXJuYWxTZXR0aW5nczo6QmFja3VwOjpCYWNrdXAoUGFnZSogcGFnZSwgU2V0
dGluZ3MqIHNldHRpbmdzKQogICAgICwgbV9jYW5TdGFydE1lZGlhKHBhZ2UtPmNhblN0YXJ0TWVk
aWEoKSkKICAgICAsIG1fb3JpZ2luYWxNb2NrU2Nyb2xsYmFyc0VuYWJsZWQoc2V0dGluZ3MtPm1v
Y2tTY3JvbGxiYXJzRW5hYmxlZCgpKQogICAgICwgbV9sYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29u
dHJvbFVJRW5hYmxlZChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpsYW5nQXR0cmlidXRlQXdhcmVG
b3JtQ29udHJvbFVJRW5hYmxlZCgpKQorICAgICwgbV9pbWFnZXNFbmFibGVkKHNldHRpbmdzLT5h
cmVJbWFnZXNFbmFibGVkKCkpCiB7CiB9CiAKQEAgLTEzNSw2ICsxMzYsNyBAQCB2b2lkIEludGVy
bmFsU2V0dGluZ3M6OkJhY2t1cDo6cmVzdG9yZVRvKFBhZ2UqIHBhZ2UsIFNldHRpbmdzKiBzZXR0
aW5ncykKICAgICBwYWdlLT5zZXRDYW5TdGFydE1lZGlhKG1fY2FuU3RhcnRNZWRpYSk7CiAgICAg
c2V0dGluZ3MtPnNldE1vY2tTY3JvbGxiYXJzRW5hYmxlZChtX29yaWdpbmFsTW9ja1Njcm9sbGJh
cnNFbmFibGVkKTsKICAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRMYW5nQXR0cmlidXRl
QXdhcmVGb3JtQ29udHJvbFVJRW5hYmxlZChtX2xhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9s
VUlFbmFibGVkKTsKKyAgICBzZXR0aW5ncy0+c2V0SW1hZ2VzRW5hYmxlZChtX2ltYWdlc0VuYWJs
ZWQpOwogfQogCiBJbnRlcm5hbFNldHRpbmdzKiBJbnRlcm5hbFNldHRpbmdzOjpmcm9tKFBhZ2Uq
IHBhZ2UpCkBAIC02NTksNCArNjYxLDEwIEBAIHZvaWQgSW50ZXJuYWxTZXR0aW5nczo6c2V0TGFu
Z0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQoYm9vbCBlbmFibGVkKQogICAgIFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldExhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlF
bmFibGVkKGVuYWJsZWQpOwogfQogCit2b2lkIEludGVybmFsU2V0dGluZ3M6OnNldEltYWdlc0Vu
YWJsZWQoYm9vbCBlbmFibGVkLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBJbnRlcm5hbFNl
dHRpbmdzR3VhcmRGb3JTZXR0aW5ncygpOworICAgIHNldHRpbmdzKCktPnNldEltYWdlc0VuYWJs
ZWQoZW5hYmxlZCk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxTZXR0aW5ncy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRp
bmdzLmgKaW5kZXggMmMwNzNkZjZlZWRhNGYwNmUzZWVhMGFiM2QxYTQ3Y2Y0NDY5MTk1YS4uYmU4
ODEwZGU2NjgyYmM4N2Q0NDc2YmY5M2Q5YTBkODAyOWFlMDkwOCAxMDA3NTUKLS0tIGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmgKQEAgLTgyLDYgKzgyLDcgQEAgcHVibGljOgogICAg
ICAgICBib29sIG1fY2FuU3RhcnRNZWRpYTsKICAgICAgICAgYm9vbCBtX29yaWdpbmFsTW9ja1Nj
cm9sbGJhcnNFbmFibGVkOwogICAgICAgICBib29sIG1fbGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNv
bnRyb2xVSUVuYWJsZWQ7CisgICAgICAgIGJvb2wgbV9pbWFnZXNFbmFibGVkOwogICAgIH07CiAK
ICAgICB0eXBlZGVmIFJlZkNvdW50ZWRTdXBwbGVtZW50PFBhZ2UsIEludGVybmFsU2V0dGluZ3M+
IFN1cGVyVHlwZTsKQEAgLTE0Nyw2ICsxNDgsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRNZW1v
cnlJbmZvRW5hYmxlZChib29sLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBzZXRTdG9yYWdl
QmxvY2tpbmdQb2xpY3koY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQg
c2V0TGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQoYm9vbCk7CisgICAgdm9p
ZCBzZXRJbWFnZXNFbmFibGVkKGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYpOworCiBwcml2
YXRlOgogICAgIGV4cGxpY2l0IEludGVybmFsU2V0dGluZ3MoUGFnZSopOwogICAgIHZpcnR1YWwg
dm9pZCBob3N0RGVzdHJveWVkKCkgT1ZFUlJJREUgeyBtX3BhZ2UgPSAwOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaWRsIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbAppbmRleCA5NjczZDJmMWMyNWQxYjRj
MTJjNThkMjk0Y2M5ZTdiNWIyMzIyZWFmLi5kOGE4YWFmOGJiYTgxNTgyMDRjOTU2OTRiMTRiODM0
MzFjYzYyODUzIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0
dGluZ3MuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5p
ZGwKQEAgLTgyLDYgKzgyLDcgQEAgbW9kdWxlIHdpbmRvdyB7CiAjZW5kaWYKICAgICAgICAgdm9p
ZCBzZXRNZW1vcnlJbmZvRW5hYmxlZChpbiBib29sZWFuIGVuYWJsZWQpIHJhaXNlcyhET01FeGNl
cHRpb24pOwogICAgICAgICB2b2lkIHNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShpbiBET01TdHJp
bmcgcG9saWN5KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgdm9pZCBzZXRJbWFnZXNF
bmFibGVkKGluIGJvb2xlYW4gZW5hYmxlZCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgfTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmIGIvU291cmNl
L1dlYktpdDIvd2luL1dlYktpdDIuZGVmCmluZGV4IGE5YjAwZGIzOTczMzM5MDJjMTVlMzRmZDZi
Yjk1ZWM2OGU3ZWQxMGUuLjZmZDFkMzE5NjA0Zjk4YjdhYmE5YWQ0YTlkNjI2ZGY3ZjM4M2E4Mzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKQEAgLTIyMiw2ICsyMjIsNyBAQCBFWFBPUlRTCiAgICAg
ICAgID9zZXRET01FeGNlcHRpb25AV2ViQ29yZUBAWUFYUEFWRXhlY1N0YXRlQEpTQ0BASEBaCiAg
ICAgICAgID9zZXRGYW50YXN5Rm9udEZhbWlseUBTZXR0aW5nc0BXZWJDb3JlQEBRQUVYQUJWQXRv
bWljU3RyaW5nQFdURkBAVzRVU2NyaXB0Q29kZUBAQFoKICAgICAgICAgP3NldEZpeGVkRm9udEZh
bWlseUBTZXR0aW5nc0BXZWJDb3JlQEBRQUVYQUJWQXRvbWljU3RyaW5nQFdURkBAVzRVU2NyaXB0
Q29kZUBAQFoKKyAgICAgICAgP3NldEltYWdlc0VuYWJsZWRAU2V0dGluZ3NAV2ViQ29yZUBAUUFF
WF9OQFoKICAgICAgICAgP3NldE1vY2tTY3JvbGxiYXJzRW5hYmxlZEBTZXR0aW5nc0BXZWJDb3Jl
QEBTQVhfTkBaCiAgICAgICAgID9tb2NrU2Nyb2xsYmFyc0VuYWJsZWRAU2V0dGluZ3NAV2ViQ29y
ZUBAU0FfTlhaCiAgICAgICAgID9zZXRVc2VzT3ZlcmxheVNjcm9sbGJhcnNAU2V0dGluZ3NAV2Vi
Q29yZUBAU0FYX05AWgpkaWZmIC0tZ2l0IGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRl
ciBiL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKaW5kZXggZDVkNTQxMDZhNmIxYjMy
ZjdiMjM0MGNmOTc2MjZiYTM2ODc5ZTM5Yy4uNjIzMDVjNGZhZGRjN2JhZWY5N2YzMzIxYWEzMjA1
YmViNDdhZDgzOSAxMDA2NDQKLS0tIGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgor
KysgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCkBAIC0xNDUsNiArMTQ1LDcgQEAg
X1pON1dlYkNvcmUxNFNjcm9sbGFibGVBcmVhMjhzZXRTY3JvbGxPZmZzZXRGcm9tSW50ZXJuYWxz
RVJLTlNfOEludFBvaW50RTsKIF9aTjdXZWJDb3JlMTBTY3JvbGxWaWV3MjNzZXRTY3JvbGxiYXJz
U3VwcHJlc3NlZEViYjsKIF9aTjdXZWJDb3JlMTBTY3JvbGxWaWV3MjFzZXREZWxlZ2F0ZXNTY3Jv
bGxpbmdFYjsKIF9aTjdXZWJDb3JlNE5vZGUxNHJlbW92ZWRMYXN0UmVmRXY7CitfWk43V2ViQ29y
ZThTZXR0aW5nczE2c2V0SW1hZ2VzRW5hYmxlZEViOwogX1pON1dlYkNvcmU4U2V0dGluZ3MxOHNl
dEZpeGVkRm9udEZhbWlseUVSS04zV1RGMTJBdG9taWNTdHJpbmdFMTFVU2NyaXB0Q29kZTsKIF9a
TjdXZWJDb3JlOFNldHRpbmdzMThzZXRTZXJpZkZvbnRGYW1pbHlFUktOM1dURjEyQXRvbWljU3Ry
aW5nRTExVVNjcmlwdENvZGU7CiBfWk43V2ViQ29yZThTZXR0aW5nczIwc2V0Q3Vyc2l2ZUZvbnRG
YW1pbHlFUktOM1dURjEyQXRvbWljU3RyaW5nRTExVVNjcmlwdENvZGU7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNmExYTdh
MGVhMjU0ZTM4YjUyNDFjMTkyNTUwZDM0NTc4N2MwYzQ4Ny4uOWQ0N2I1NjM5ZDdkNzBmMjk3ZDcw
MjljZmMxOTNkYmYwMzUwYTc1ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEyLTA5LTIxICBC
byBMaXUgIDxib2xpdUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVsYW5kICJBZGQgaW4tcGxh
Y2UgcmVsb2FkIGJlaGF2aW9yIHRvIEltYWdlc0VuYWJsZWQgc2V0dGluZyIgd2l0aCBvcHRpbWl6
YXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
NzA1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJl
bGFuZGluZyAxMjg3ODAsIDEyODY3NiwgMTI4NjQ1LiBXYXMgcmV2ZXJ0ZWQgaW4gMTI4OTE0IGR1
ZSB0bworICAgICAgICBwZXJmb3JtYW5jZSByZWdyZXNzaW9uIGluIENocm9taXVtLgorCisgICAg
ICAgIE5ldyBjaGFuZ2VzIGluIGFkZGl0aW9uIHRvIHByZXZpb3VzbHkgcmV2ZXJ0ZWQgcGF0Y2hl
czoKKworICAgICAgICBSZWZhY3RvcmVkIENhY2hlZFJlc291cmNlOjpyZXF1ZXN0UmVzb3VyY2Us
IGxvYWRSZXNvdXJjZSwgYW5kCisgICAgICAgIHJldmFsaWRhdGVSZXNvdXJjZS4gTW92ZWQgQ2Fj
aGVkUmVzb3VyY2U6OmxvYWQgbWV0aG9kIHRvIGVuZCBvZgorICAgICAgICByZXF1ZXN0UmVzb3Vy
Y2Ugc28gdGhlcmUgaXMgb25lIHBsYWNlIHdoZXJlIGxvYWQgaXMgY2FsbGVkIGZvciBhbGwKKyAg
ICAgICAgcmVzb3VyY2VzLgorCisgICAgICAgIEFkZGVkIGEgYm9vbCBwYXJhbWV0ZXIgZm9yIHJl
cXVlc3RSZXNvdXJjZSBhbmQKKyAgICAgICAgZGV0ZXJtaW5lUmV2YWxpZGF0aW9uUG9saWN5IHNv
IHRoYXQgRnJhbWVMb2FkZXJDbGllbnQ6OmFsbG93SW1hZ2UgY2FsbAorICAgICAgICBkbyBub3Qg
bmVlZCB0byBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMuCisKKyAgICAgICAgUmVtb3ZlZCBDYWNo
ZWRJbWFnZTo6bG9hZCBjYWxsIGluIHJlcXVlc3RJbWFnZSBzbyBpdCBpcyBub3QgY2FsbGVkCisg
ICAgICAgIHR3aWNlLgorCisgICAgICAgIFJlbW92ZWQgdW5uZWNlc3NhcnkgRnJhbWUuaCBpbmNs
dWRlcyBpbiBDYWNoZWRSZXNvdXJjZSBhbmQKKyAgICAgICAgQ2FjaGVkSW1hZ2UuCisKKyAgICAg
ICAgUmVtb3ZlZCBkZWFkIGxvYWQoKSBtZXRob2QgZGVjbGFyYXRpb24gaW4gQ2FjaGVkSW1hZ2Uu
CisKKyAgICAgICAgVXBkYXRlZCB0ZXh0IGV4cGVjdGF0aW9uIGZvciB0d28gaW1hZ2UtcGVybWlz
c2lvbnMgdGVzdHMgdG8gcmVmbGVjdAorICAgICAgICB0aGUgcmVtb3ZlZCBjYWxscyB0byBhbGxv
d0ltYWdlLgorCisgICAgICAgICogZmFzdC9sb2FkZXIvZGlzcGxheS1pbWFnZS11bnNldC1hbGxv
d3MtY2FjaGVkLWltYWdlLWxvYWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0LWFsbG93cy1jYWNoZWQtaW1hZ2UtbG9hZC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0LWNhbi1i
bG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvbG9hZGVyL2Rpc3BsYXktaW1hZ2UtdW5zZXQtY2FuLWJsb2NrLWltYWdl
LWFuZC1jYW4tcmVsb2FkLWluLXBsYWNlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbG9h
ZGVyL2ltYWdlcy1lbmFibGVkLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1p
bi1wbGFjZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbG9hZGVyL2ltYWdl
cy1lbmFibGVkLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2xvYWRlci9yZXNvdXJjZXMvaW1hZ2UxLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvbG9hZGVyL3Jlc291cmNlcy9pbWFnZTIuaHRtbDogQWRk
ZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vcGVybWlzc2lvbmNsaWVudC9pbWFnZS1w
ZXJtaXNzaW9ucy1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vcGVy
bWlzc2lvbmNsaWVudC9pbWFnZS1wZXJtaXNzaW9ucy5odG1sOgorICAgICAgICAqIHBsYXRmb3Jt
L2Nocm9taXVtL3Blcm1pc3Npb25jbGllbnQvcmVzb3VyY2VzL2ltYWdlLmh0bWw6CisgICAgICAg
ICogcGxhdGZvcm0vd2syL1NraXBwZWQ6CisKIDIwMTItMDktMjAgIFNpbW9uIEZyYXNlciAgPHNp
bW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgbWVkaWEvdHJhY2svdHJhY2stY3VlLXJl
bmRlcmluZy1pbm5lci10aW1lc3RhbXBzLmh0bWwgdGltZXMgb3V0LgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9sb2FkZXIvZGlzcGxheS1pbWFnZS11bnNldC1hbGxvd3MtY2FjaGVkLWlt
YWdlLWxvYWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZGlzcGxheS1p
bWFnZS11bnNldC1hbGxvd3MtY2FjaGVkLWltYWdlLWxvYWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlMTVhYWMwYzUxNWU4MDU2YWIzY2NjOTUxOTAzNzMzMjhmODM3ZjgKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0LWFsbG93
cy1jYWNoZWQtaW1hZ2UtbG9hZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyIEBACitUZXN0IHRo
YXQgV2ViS2l0RGlzcGxheUltYWdlc0tleSB1bnNldCBkb2VzIG5vdCBibG9jayBpbWFnZSBpbiBj
YWNoZS4KK1BBU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2Rpc3BsYXkt
aW1hZ2UtdW5zZXQtYWxsb3dzLWNhY2hlZC1pbWFnZS1sb2FkLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0LWFsbG93cy1jYWNoZWQtaW1hZ2UtbG9hZC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjA4ZDcwM2Q1MDRlYWE0NWIzZjRlZmZlZDBiNDdiNDc3ZTQ4MThmZDcK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9kaXNwbGF5LWltYWdl
LXVuc2V0LWFsbG93cy1jYWNoZWQtaW1hZ2UtbG9hZC5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorLy8gT3BlbnMgdHdvIHdpbmRvd3MgY29udGFpbmluZyB0
aGUgc2FtZSBpbWFnZS4gRmlyc3Qgd2luZG93IHdpbGwgcG9wdWxhdGUgdGhlIGNhY2hlIHdpdGgK
Ky8vIGltYWdlLiBUaGUgc2Vjb25kIHdpbmRvdyBpcyBvcGVuZWQgd2l0aCBXZWJLaXREaXNwbGF5
SW1hZ2VzS2V5IHVuc2V0LCBidXQgaW1hZ2Ugc2hvdWxkCisvLyBzdGlsbCBsb2FkIHNpbmNlIGl0
IGlzIGluIGNhY2hlLgorZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICB0ZXN0
UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRDYW5PcGVuV2lu
ZG93cygpOworICAgICAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0VXNl
c1BhZ2VDYWNoZVByZWZlcmVuY2VLZXkiLCAxKTsKKworICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1MID0gJ0ZBSUxVUkU6IGltYWdlMS5odG1sIG5vdCBs
b2FkZWQnOworICAgICAgICB3aW5kb3cub3BlbigicmVzb3VyY2VzL2ltYWdlMS5odG1sIiwgIl9i
bGFuayIpOworICAgIH0KK30KKworZnVuY3Rpb24gaW1hZ2UxTG9hZGVkKCkKK3sKKyAgICB0ZXN0
UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgnV2ViS2l0RGlzcGxheUltYWdlc0tleScsIDApOwor
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSAnRkFJTFVS
RTogaW1hZ2UyLmh0bWwgbm90IGxvYWRlZCc7CisgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7d2luZG93Lm9wZW4oInJlc291cmNlcy9pbWFnZTIuaHRtbCIsICJfYmxhbmsiKTt9LCAw
KTsKK30KKworZnVuY3Rpb24gaW1hZ2UyTG9hZGVkKCkKK3sKKyAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1MID0gJ1BBU1MnOworCQl0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCki
PgorVGVzdCB0aGF0IFdlYktpdERpc3BsYXlJbWFnZXNLZXkgdW5zZXQgZG9lcyBub3QgYmxvY2sg
aW1hZ2UgaW4gY2FjaGUuCis8ZGl2IGlkPSJyZXN1bHQiPkZBSUxVUkU6IFRlc3Qgc2NyaXB0IGRp
ZG4ndCBydW4uPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvbG9hZGVyL2Rpc3BsYXktaW1hZ2UtdW5zZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1j
YW4tcmVsb2FkLWluLXBsYWNlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVy
L2Rpc3BsYXktaW1hZ2UtdW5zZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1jYW4tcmVsb2FkLWluLXBs
YWNlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YTllZjUzNDc5YjhiNWFhNGI0NjRmNjU3ZjJh
Y2Y3ZTViYjQ0N2QyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIv
ZGlzcGxheS1pbWFnZS11bnNldC1jYW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxh
Y2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorVGVzdCB0aGF0IERpc3BsYXlJbWFnZXMg
ZGlzYWJsZWQgY2FuIGJsb2NrIGh0dHAgaW1hZ2UgYW5kIGNhbiBiZSByZWxvYWRlZCBpbi1wbGFj
ZSB3aGVuIHRvZ2dsZWQuCitTVUNDRVNTCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
bG9hZGVyL2Rpc3BsYXktaW1hZ2UtdW5zZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1jYW4tcmVsb2Fk
LWluLXBsYWNlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVu
c2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjMxMmY1MDlkNTQzYjdhNWE3ZDQ3ZDE5MWI3ODg2NjNlNmQyNjE5NzcKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0LWNhbi1i
bG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS5odG1sCkBAIC0wLDAgKzEsNDcgQEAK
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorLy8gU2V0dGluZyBXZWJLaXREaXNwbGF5SW1hZ2Vz
S2V5IGlzIGFzeW5jaHJvbm91cywgc28gdXNpbmcgcXVldWVSZWxvYWQgYW5kIHNldEludGVydmFs
IHRvIGNoZWNrIHdoZW4gdGhlIHNldHRpbmcgYWN0dWFsbHkgdGFrZSBlZmZlY3QuCisKK3ZhciBp
bnRlcnZhbElkOwordmFyIGltYWdlT25sb2FkRmlyZWQgPSAwOworCitpZiAod2luZG93LnRlc3RS
dW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB3aW5kb3cuaW50ZXJu
YWxzLnNldHRpbmdzLnNldEltYWdlc0VuYWJsZWQodHJ1ZSk7CisgICAgdGVzdFJ1bm5lci5vdmVy
cmlkZVByZWZlcmVuY2UoJ1dlYktpdERpc3BsYXlJbWFnZXNLZXknLCAwKTsKKyAgICB0ZXN0UnVu
bmVyLnF1ZXVlUmVsb2FkKCk7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIHZhciBp
bWFnZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbWFnZScpOworICAgIGlmIChpbWFnZS5u
YXR1cmFsSGVpZ2h0ICE9IDAgfHwgaW1hZ2UubmF0dXJhbFdpZHRoICE9IDAgfHwgaW1hZ2VPbmxv
YWRGaXJlZCAhPSAwKSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQn
KS5pbm5lckhUTUwgPSAnRkFJTFVSRTogSW1hZ2Ugc2hvdWxkIG5vdCBiZSBsb2FkZWQgd2hlbiBE
aXNwbGF5SW1hZ2UgaXMgdW5zZXQnOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgdGVz
dFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoJ1dlYktpdERpc3BsYXlJbWFnZXNLZXknLCAxKTsK
KyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1MID0gJ0ZBSUxV
UkU6IEltYWdlIHNob3VsZCByZWxvYWQgaW4tcGxhY2Ugd2hlbiBEaXNwYWx5SW1hZ2UgaXMgY2hh
bmdlcyBmcm9tIHVuc2V0IHRvIHNldCc7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7
CisgICAgaW50ZXJ2YWxJZCA9IHdpbmRvdy5zZXRJbnRlcnZhbChydW5UZXN0UmVzdCwgMTApOwor
fQorCitmdW5jdGlvbiBydW5UZXN0UmVzdCgpCit7CisgICAgdmFyIGltYWdlID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2ltYWdlJyk7CisgICAgaWYgKGltYWdlLm5hdHVyYWxIZWlnaHQgPT0g
MzMgJiYgaW1hZ2UubmF0dXJhbFdpZHRoID09IDM3ICYmIGltYWdlT25sb2FkRmlyZWQgPT0gMSkg
eworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1MID0g
J1NVQ0NFU1MnOworICAgICAgICB3aW5kb3cuY2xlYXJJbnRlcnZhbChpbnRlcnZhbElkKTsKKyAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgfQorfQorPC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CisgIFRlc3QgdGhhdCBEaXNwbGF5SW1hZ2Vz
IGRpc2FibGVkIGNhbiBibG9jayBodHRwIGltYWdlIGFuZCBjYW4gYmUgcmVsb2FkZWQgaW4tcGxh
Y2Ugd2hlbiB0b2dnbGVkLgorICA8ZGl2IGlkPSJyZXN1bHQiPkZBSUxVUkU6IFRlc3Qgc2NyaXB0
IGRpZG4ndCBydW4uPC9kaXY+CisgIDxpbWcgaWQ9ImltYWdlIiBzcmM9Ii4uL2ltYWdlcy9yZXNv
dXJjZXMvb3ZhbC5wbmciIG9ubG9hZD0iaW1hZ2VPbmxvYWRGaXJlZD0xOyI+Cis8L2JvZHk+Cis8
L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2ltYWdlcy1lbmFi
bGVkLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9pbWFnZXMtZW5hYmxlZC11bnNldC1jYW4t
YmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjk1MWQ0NjAxY2NjM2NhMThkOGNmZDVhOTY5NzgxMTFmZmIwYzYwMjAKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9pbWFnZXMtZW5hYmxlZC11bnNldC1jYW4t
YmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMyBAQAorVGVzdCB0aGF0IEVuYWJsZUltYWdlcyB1bnNldCBjYW4gYmxvY2sgaW1hZ2UgYW5k
IGNhbiBiZSByZWxvYWRlZCBpbi1wbGFjZSB3aGVuIHRvZ2dsZWQuCitTVUNDRVNTCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2ltYWdlcy1lbmFibGVkLXVuc2V0LWNhbi1i
bG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9sb2FkZXIvaW1hZ2VzLWVuYWJsZWQtdW5zZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1jYW4tcmVs
b2FkLWluLXBsYWNlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2Y0OGU2MjhkZGQ2MGQ1YmFmYTJiMTRmMDgz
NjBiNGI2ZTZhNjYzYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVy
L2ltYWdlcy1lbmFibGVkLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1w
bGFjZS5odG1sCkBAIC0wLDAgKzEsNDcgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorLy8g
U2V0dGluZyBJbWFnZXNFbmFibGVkIGlzIGFzeW5jaHJvbm91cywgc28gdXNpbmcgcXVldWVSZWxv
YWQgYW5kIHNldEludGVydmFsIHRvIGNoZWNrIHdoZW4gdGhlIHNldHRpbmcgYWN0dWFsbHkgdGFr
ZSBlZmZlY3QuCisKK3ZhciBpbnRlcnZhbElkOwordmFyIGltYWdlT25sb2FkRmlyZWQgPSAwOwor
CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
KyAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgnV2ViS2l0RGlzcGxheUltYWdlc0tl
eScsIDEpOworICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0SW1hZ2VzRW5hYmxlZChm
YWxzZSk7CisgICAgdGVzdFJ1bm5lci5xdWV1ZVJlbG9hZCgpOworfQorCitmdW5jdGlvbiBydW5U
ZXN0KCkKK3sKKyAgICB2YXIgaW1hZ2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW1hZ2Un
KTsKKyAgICBpZiAoaW1hZ2UubmF0dXJhbEhlaWdodCAhPSAwIHx8IGltYWdlLm5hdHVyYWxXaWR0
aCAhPSAwIHx8IGltYWdlT25sb2FkRmlyZWQgIT0gMCkgeworICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1MID0gJ0ZBSUxVUkU6IEltYWdlIHNob3VsZCBu
b3QgYmUgbG9hZGVkIHdoZW4gSW1hZ2VzRW5hYmxlZCBpcyB1bnNldCc7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldEltYWdlc0VuYWJs
ZWQodHJ1ZSk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRN
TCA9ICdGQUlMVVJFOiBJbWFnZSBzaG91bGQgcmVsb2FkIGluLXBsYWNlIHdoZW4gSW1hZ2VzRW5h
YmxlZCBpcyBjaGFuZ2VzIGZyb20gdW5zZXQgdG8gc2V0JzsKKyAgICB0ZXN0UnVubmVyLndhaXRV
bnRpbERvbmUoKTsKKyAgICBpbnRlcnZhbElkID0gd2luZG93LnNldEludGVydmFsKHJ1blRlc3RS
ZXN0LCAxMCk7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3RSZXN0KCkKK3sKKyAgICB2YXIgaW1hZ2Ug
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW1hZ2UnKTsKKyAgICBpZiAoaW1hZ2UubmF0dXJh
bEhlaWdodCA9PSAzMyAmJiBpbWFnZS5uYXR1cmFsV2lkdGggPT0gMzcgfHwgaW1hZ2VPbmxvYWRG
aXJlZCA9PSAxKSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5p
bm5lckhUTUwgPSAnU1VDQ0VTUyc7CisgICAgICAgIHdpbmRvdy5jbGVhckludGVydmFsKGludGVy
dmFsSWQpOworICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICB9Cit9Cis8L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKyAgVGVzdCB0aGF0IEVu
YWJsZUltYWdlcyB1bnNldCBjYW4gYmxvY2sgaW1hZ2UgYW5kIGNhbiBiZSByZWxvYWRlZCBpbi1w
bGFjZSB3aGVuIHRvZ2dsZWQuCisgIDxkaXYgaWQ9InJlc3VsdCI+RkFJTFVSRTogVGVzdCBzY3Jp
cHQgZGlkbid0IHJ1bi48L2Rpdj4KKyAgPGltZyBpZD0iaW1hZ2UiIHNyYz0iLi4vaW1hZ2VzL3Jl
c291cmNlcy9vdmFsLnBuZyIgb25sb2FkPSJpbWFnZU9ubG9hZEZpcmVkPTE7Ij4KKzwvYm9keT4K
KzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvcmVzb3VyY2Vz
L2ltYWdlMS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvcmVzb3VyY2VzL2ltYWdlMS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmNkNjlkYzNjMmEwZDZhMTVlMDg5NjM3OTEwMzI1NGY1ZWFhMzRkYzEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9yZXNvdXJjZXMvaW1h
Z2UxLmh0bWwKQEAgLTAsMCArMSw1IEBACis8aHRtbD4KKzxib2R5PgorICA8aW1nIHNyYz0iLi4v
Li4vaW1hZ2VzL3Jlc291cmNlcy9vdmFsLnBuZyIgb25sb2FkPSJ3aW5kb3cub3BlbmVyLmltYWdl
MUxvYWRlZCgpOyI+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2xvYWRlci9yZXNvdXJjZXMvaW1hZ2UyLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRl
ci9yZXNvdXJjZXMvaW1hZ2UyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzAzN2ZmZjBjZTY1Njc3N2NjMDJl
OGFlNmNjODFjZjZlYTQ0MmFhYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
bG9hZGVyL3Jlc291cmNlcy9pbWFnZTIuaHRtbApAQCAtMCwwICsxLDUgQEAKKzxodG1sPgorPGJv
ZHk+CisgIDxpbWcgc3JjPSIuLi8uLi9pbWFnZXMvcmVzb3VyY2VzL292YWwucG5nIiBvbmxvYWQ9
IndpbmRvdy5vcGVuZXIuaW1hZ2UyTG9hZGVkKCk7Ij4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Blcm1pc3Npb25jbGllbnQvaW1h
Z2UtcGVybWlzc2lvbnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vcGVybWlzc2lvbmNsaWVudC9pbWFnZS1wZXJtaXNzaW9ucy1leHBlY3RlZC50eHQKaW5kZXgg
NjBlNzZhNTIzYWRmMjY0NDY1MzM1ODI5NmY3Y2I5ZWI0MzhkM2Y5Zi4uZTYwN2ExMDEzMTEyODNi
N2E0ZmMwNTc5YmM2YWI1YTJmZTI0MTIxMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vcGVybWlzc2lvbmNsaWVudC9pbWFnZS1wZXJtaXNzaW9ucy1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vcGVybWlzc2lvbmNsaWVudC9p
bWFnZS1wZXJtaXNzaW9ucy1leHBlY3RlZC50eHQKQEAgLTUsNiArNSw0IEBAIFBFUk1JU1NJT04g
Q0xJRU5UOiBhbGxvd0ltYWdlKChmaWxlIHRlc3QpOnBsYXRmb3JtL2Nocm9taXVtL3Blcm1pc3Np
b25jbGllbnQvcmVzCiAKIAogUEFTUzogZmlyc3QgaW1hZ2UgbG9hZGVkCi1QQVNTOiBlcnJvciBl
dmVudCBmb3Igbm90IGNhY2hlZCBpbWFnZQotUEFTUzogZXJyb3IgZXZlbnQgZm9yIGltYWdlIGZy
b20gY2FjaGUKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vcGVy
bWlzc2lvbmNsaWVudC9pbWFnZS1wZXJtaXNzaW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vcGVybWlzc2lvbmNsaWVudC9pbWFnZS1wZXJtaXNzaW9ucy5odG1sCmluZGV4
IDdiNWUyYzU3NWM5ODk3NGFjMDhmODdlOWY4YzEyMDcxMGFkYmZlZjAuLmY1N2EzYjcwNzA0MzMw
OWMyZmFiMmZmOTJjM2U5ZTJjNmU0MTk2NDcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtL3Blcm1pc3Npb25jbGllbnQvaW1hZ2UtcGVybWlzc2lvbnMuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9wZXJtaXNzaW9uY2xpZW50L2ltYWdlLXBl
cm1pc3Npb25zLmh0bWwKQEAgLTEsNiArMSw5IEBACiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdD4K
Ky8vIEJsb2NrZWQgaW1hZ2VzIGNhbiBiZSByZWxvYWRlZCwgc28gbmVpdGhlciBvbmxvYWQgbm9y
IG9uZXJyb3IgaXMgY2FsbGVkLgorLy8gT25seSBjaGVjayBoZXJlIHRoYXQgb25sb2FkIGlzIG5l
dmVyIGNhbGxlZCB3aGVuIGltYWdlIGlzIGJsb2NrZWQuCisKIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikgewogICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgIHRlc3RSdW5uZXIuZHVtcFBl
cm1pc3Npb25DbGllbnRDYWxsYmFja3MoKTsKQEAgLTIxLDE0ICsyNCwxMiBAQCBmdW5jdGlvbiBs
b2FkZWQoKQogCiAgICAgLy8gTG9hZCBhbiBpbWFnZSBub3QgaW4gY2FjaGUuCiAgICAgdmFyIGlt
ZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2ltZycpOwotICAgIGltZy5vbmVycm9yID0gZnVu
Y3Rpb24gKCkgeyBsb2coIlBBU1M6IGVycm9yIGV2ZW50IGZvciBub3QgY2FjaGVkIGltYWdlIik7
IH0KICAgICBpbWcub25sb2FkID0gZnVuY3Rpb24gKCkgeyBsb2coIkZBSUw6IG5vdCBjYWNoZWQg
aW1hZ2UgbG9hZGVkIik7IH0KICAgICBpbWcuc3JjID0gInJlc291cmNlcy9ib3N0b24uZ2lmP25v
Y2FjaGUiOwogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbWciKS5hcHBlbmRDaGlsZChp
bWcpOwogCiAgICAgLy8gTG9hZCBhbiBpbWFnZSBmcm9tIGNhY2hlLgogICAgIHZhciBpbWdGcm9t
Q2FjaGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbWcnKTsKLSAgICBpbWdGcm9tQ2FjaGUu
b25lcnJvciA9IGZ1bmN0aW9uICgpIHsgbG9nKCJQQVNTOiBlcnJvciBldmVudCBmb3IgaW1hZ2Ug
ZnJvbSBjYWNoZSIpOyB9CiAgICAgaW1nRnJvbUNhY2hlLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsg
bG9nKCJGQUlMOiBpbWFnZSBmcm9tIGNhY2hlIGxvYWRlZCIpOyB9CiAgICAgaW1nRnJvbUNhY2hl
LnNyYyA9ICJyZXNvdXJjZXMvYm9zdG9uLmdpZiI7CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImltZyIpLmFwcGVuZENoaWxkKGltZ0Zyb21DYWNoZSk7CkBAIC00MSw3ICs0Miw3IEBAIGZ1
bmN0aW9uIGxvYWRlZCgpCiA8L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPGltZyBzcmM9InJl
c291cmNlcy9ib3N0b24uZ2lmIiBvbmxvYWQ9ImxvYWRlZCgpIiBvbmVycm9yPSJsb2coJ0ZBSUw6
IGVycm9yIGV2ZW50IGZvciBmaXJzdCBpbWFnZScpIj4KKzxpbWcgc3JjPSJyZXNvdXJjZXMvYm9z
dG9uLmdpZiIgb25sb2FkPSJsb2FkZWQoKSI+CiA8ZGl2IGlkPSJpbWciPjwvZGl2PgogPGRpdiBp
ZD0icmVzdWx0cyI+PC9kaXY+CiA8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9wZXJtaXNzaW9uY2xpZW50L3Jlc291cmNlcy9pbWFnZS5odG1sIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vcGVybWlzc2lvbmNsaWVudC9yZXNvdXJjZXMvaW1h
Z2UuaHRtbAppbmRleCBlMmFkZmUzZjBiNjIxYWE4ZDlmZjRlMTkwYzkwMjIzMDVjYzA3MGViLi4y
Mzk3NzE3MTAxZGVkNDQwYTMyOTU1ODI2ZTg0MWNkMWNkNjIzZjk3IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9wZXJtaXNzaW9uY2xpZW50L3Jlc291cmNlcy9pbWFn
ZS5odG1sCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Blcm1pc3Npb25jbGll
bnQvcmVzb3VyY2VzL2ltYWdlLmh0bWwKQEAgLTgsNyArOCw3IEBAIGZ1bmN0aW9uIGxvZyhhKQog
PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxpbWcgc3JjPSJib3N0b24uZ2lmIiBvbmxvYWQ9
ImxvZygnRkFJTDogbG9hZCBldmVudCBmb3IgaWZyYW1lZCBpbWFnZSkiIG9uZXJyb3I9ImxvZygn
RkFJTDogZXJyb3IgZXZlbnQgZm9yIGlmcmFtZWQgaW1hZ2UnKSI+Cis8aW1nIHNyYz0iYm9zdG9u
LmdpZiIgb25sb2FkPSJsb2coJ0ZBSUw6IGxvYWQgZXZlbnQgZm9yIGlmcmFtZWQgaW1hZ2UnKSI+
CiA8ZGl2IGlkPSJyZXN1bHRzIj48L2Rpdj4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
d2syL1NraXBwZWQKaW5kZXggMTkxN2I2Y2VmYjM3OTllYmRhZDNlOTgwZjM1NzY4MTZkODRkMDMx
MS4uYzFkYWIyN2E0YTY2ZGEzZmQ1NjQwY2IzMDM4YWRjY2RhOThhMWExNiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vd2syL1NraXBwZWQKQEAgLTIwMSw2ICsyMDEsNyBAQCBmYXN0L2NhbnZhcy93ZWJnbC93ZWJn
bC1hcnJheS1pbnZhbGlkLXJhbmdlcy5odG1sCiBmYXN0L2NhbnZhcy93ZWJnbC93ZWJnbC1zcGVj
aWZpYy5odG1sCiBmYXN0L2hhcm5lc3Mvb3ZlcnJpZGUtcHJlZmVyZW5jZXMtMi5odG1sCiBmYXN0
L2ltYWdlcy9hbmltYXRlZC1naWYtcmVzdG9yZWQtZnJvbS1iZmNhY2hlLmh0bWwKK2Zhc3QvbG9h
ZGVyL2Rpc3BsYXktaW1hZ2UtdW5zZXQtYWxsb3dzLWNhY2hlZC1pbWFnZS1sb2FkLmh0bWwKIGZh
c3QvdGV4dC96ZXJvLWZvbnQtc2l6ZS5odG1sCiAKICMgV2ViS2l0VGVzdFJ1bm5lciBuZWVkcyB0
byBzdXBwb3J0IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBET01Bc1dlYkFyY2hpdmUKQEAgLTMz
OSw2ICszNDAsOCBAQCBzdmcvY3VzdG9tL3N2Zy1hbGxvd2VkLWluLWRhc2hib2FyZC1vYmplY3Qu
aHRtbAogIyA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyNjcyPgog
ZmFzdC9jc3MvY29tcGFyZS1jb250ZW50LXN0eWxlLmh0bWwKIGZhc3QvZnJhbWVzL2ZyYW1lLWRp
c3BsYXktbm9uZS1mb2N1cy5odG1sCitmYXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0LWNh
bi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS5odG1sCitmYXN0L2xvYWRlci9p
bWFnZXMtZW5hYmxlZC11bnNldC1jYW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxh
Y2UuaHRtbAogZmFzdC9sb2FkZXIvcmVsb2FkLXBvbGljeS1kZWxlZ2F0ZS5odG1sCiAKICMgV2Vi
S2l0VGVzdFJ1bm5lciBuZWVkcyBsYXlvdXRUZXN0Q29udHJvbGxlci5xdWV1ZUxvYWQKZGlmZiAt
LWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBkZjc0NDczZjAyZTUyOGI0MTBjYjI2
MjI5NTk5OWIyNTljMjIxMWRlLi44ZjhhY2EzZjc5YTI0OWMyZGZjNDNlOTc1YTU4NjZkNjFiOTRk
YWQxIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcg
QEAKKzIwMTItMDktMjEgIEJvIExpdSAgPGJvbGl1QGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZWxhbmQgIkFkZCBpbi1wbGFjZSByZWxvYWQgYmVoYXZpb3IgdG8gSW1hZ2VzRW5hYmxlZCBzZXR0
aW5nIiB3aXRoIG9wdGltaXphdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTk3MDU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgUmVsYW5kaW5nIDEyODc4MCwgMTI4Njc2LCAxMjg2NDUuIFdhcyByZXZl
cnRlZCBpbiAxMjg5MTQgZHVlIHRvCisgICAgICAgIHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb24gaW4g
Q2hyb21pdW0uCisKKyAgICAgICAgTmV3IGNoYW5nZXMgaW4gYWRkaXRpb24gdG8gcHJldmlvdXNs
eSByZXZlcnRlZCBwYXRjaGVzOgorCisgICAgICAgIFJlZmFjdG9yZWQgQ2FjaGVkUmVzb3VyY2U6
OnJlcXVlc3RSZXNvdXJjZSwgbG9hZFJlc291cmNlLCBhbmQKKyAgICAgICAgcmV2YWxpZGF0ZVJl
c291cmNlLiBNb3ZlZCBDYWNoZWRSZXNvdXJjZTo6bG9hZCBtZXRob2QgdG8gZW5kIG9mCisgICAg
ICAgIHJlcXVlc3RSZXNvdXJjZSBzbyB0aGVyZSBpcyBvbmUgcGxhY2Ugd2hlcmUgbG9hZCBpcyBj
YWxsZWQgZm9yIGFsbAorICAgICAgICByZXNvdXJjZXMuCisKKyAgICAgICAgQWRkZWQgYSBib29s
IHBhcmFtZXRlciBmb3IgcmVxdWVzdFJlc291cmNlIGFuZAorICAgICAgICBkZXRlcm1pbmVSZXZh
bGlkYXRpb25Qb2xpY3kgc28gdGhhdCBGcmFtZUxvYWRlckNsaWVudDo6YWxsb3dJbWFnZSBjYWxs
CisgICAgICAgIGRvIG5vdCBuZWVkIHRvIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcy4KKworICAg
ICAgICBSZW1vdmVkIENhY2hlZEltYWdlOjpsb2FkIGNhbGwgaW4gcmVxdWVzdEltYWdlIHNvIGl0
IGlzIG5vdCBjYWxsZWQKKyAgICAgICAgdHdpY2UuCisKKyAgICAgICAgUmVtb3ZlZCB1bm5lY2Vz
c2FyeSBGcmFtZS5oIGluY2x1ZGVzIGluIENhY2hlZFJlc291cmNlIGFuZAorICAgICAgICBDYWNo
ZWRJbWFnZS4KKworICAgICAgICBSZW1vdmVkIGRlYWQgbG9hZCgpIG1ldGhvZCBkZWNsYXJhdGlv
biBpbiBDYWNoZWRJbWFnZS4KKworICAgICAgICBVcGRhdGVkIHRleHQgZXhwZWN0YXRpb24gZm9y
IHR3byBpbWFnZS1wZXJtaXNzaW9ucyB0ZXN0cyB0byByZWZsZWN0CisgICAgICAgIHRoZSByZW1v
dmVkIGNhbGxzIHRvIGFsbG93SW1hZ2UuCisKKyAgICAgICAgKiBTb3VyY2UvYXV0b3Rvb2xzL3N5
bWJvbHMuZmlsdGVyOgorCiAyMDEyLTA5LTIwICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNt
YW5uQGRpZ2lhLmNvbT4KIAogICAgICAgICBbUXRdIFF0V2ViS2l0IG1vZHVsZSBoZWFkZXIgaW5j
bHVkZXMgcHJpdmF0ZSBkZXBlbmRlbmNpZXMK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165173</attachid>
            <date>2012-09-21 12:39:53 -0700</date>
            <delta_ts>2012-09-21 17:50:50 -0700</delta_ts>
            <desc>Move check logic into CachedImage::load and remove load call at end of requestImage</desc>
            <filename>bug-97055-20120921123917.patch</filename>
            <type>text/plain</type>
            <size>49025</size>
            <attacher name="Bo Liu">boliu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5MTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWQ2ZTA2NTdkOGJmZWRm
ZDRlMmJmNzlhZmE5MzE1MjE5ZGY0MzIxNS4uNTc2MDc0NjAyNzRhNGE1NGViMDY5ODJjMWM0ZTk4
ODgwYTAzMTBiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg3IEBACisyMDEyLTA5LTIxICBCbyBM
aXUgIDxib2xpdUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVsYW5kICJBZGQgaW4tcGxhY2Ug
cmVsb2FkIGJlaGF2aW9yIHRvIEltYWdlc0VuYWJsZWQgc2V0dGluZyIgd2l0aCBvcHRpbWl6YXRp
b25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzA1
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbGFu
ZGluZyAxMjg3ODAsIDEyODY3NiwgMTI4NjQ1LiBXYXMgcmV2ZXJ0ZWQgaW4gMTI4OTE0IGR1ZSB0
bworICAgICAgICBwZXJmb3JtYW5jZSByZWdyZXNzaW9uIGluIENocm9taXVtLgorCisgICAgICAg
IE5ldyBjaGFuZ2VzIGluIGFkZGl0aW9uIHRvIHByZXZpb3VzbHkgcmV2ZXJ0ZWQgcGF0Y2hlczoK
KworICAgICAgICBSZWZhY3RvcmVkIENhY2hlZFJlc291cmNlOjpyZXF1ZXN0UmVzb3VyY2UsIGxv
YWRSZXNvdXJjZSwgYW5kCisgICAgICAgIHJldmFsaWRhdGVSZXNvdXJjZS4gTW92ZWQgQ2FjaGVk
UmVzb3VyY2U6OmxvYWQgbWV0aG9kIHRvIGVuZCBvZgorICAgICAgICByZXF1ZXN0UmVzb3VyY2Ug
c28gdGhlcmUgaXMgb25lIHBsYWNlIHdoZXJlIGxvYWQgaXMgY2FsbGVkIGZvciBhbGwKKyAgICAg
ICAgcmVzb3VyY2VzLgorCisgICAgICAgIEFkZGVkIGEgYm9vbCBwYXJhbWV0ZXIgZm9yIHJlcXVl
c3RSZXNvdXJjZSBhbmQKKyAgICAgICAgZGV0ZXJtaW5lUmV2YWxpZGF0aW9uUG9saWN5IHNvIHRo
YXQgRnJhbWVMb2FkZXJDbGllbnQ6OmFsbG93SW1hZ2UgY2FsbAorICAgICAgICBkbyBub3QgbmVl
ZCB0byBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMuCisKKyAgICAgICAgUmVtb3ZlZCBDYWNoZWRJ
bWFnZTo6bG9hZCBjYWxsIGluIHJlcXVlc3RJbWFnZSBzbyBpdCBpcyBub3QgY2FsbGVkCisgICAg
ICAgIHR3aWNlLgorCisgICAgICAgIFJlbW92ZWQgdW5uZWNlc3NhcnkgRnJhbWUuaCBpbmNsdWRl
cyBpbiBDYWNoZWRSZXNvdXJjZSBhbmQKKyAgICAgICAgQ2FjaGVkSW1hZ2UuCisKKyAgICAgICAg
UmVtb3ZlZCBkZWFkIGxvYWQoKSBtZXRob2QgZGVjbGFyYXRpb24gaW4gQ2FjaGVkSW1hZ2UuCisK
KyAgICAgICAgVXBkYXRlZCB0ZXh0IGV4cGVjdGF0aW9uIGZvciB0d28gaW1hZ2UtcGVybWlzc2lv
bnMgdGVzdHMgdG8gcmVmbGVjdAorICAgICAgICB0aGUgcmVtb3ZlZCBjYWxscyB0byBhbGxvd0lt
YWdlLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0LWFs
bG93cy1jYWNoZWQtaW1hZ2UtbG9hZC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2xvYWRlci9k
aXNwbGF5LWltYWdlLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFj
ZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2xvYWRlci9pbWFnZXMtZW5hYmxlZC11bnNldC1j
YW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UuaHRtbAorCisgICAgICAgICog
V2ViQ29yZS5leHAuaW46CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkaWRCZWdpbkRvY3VtZW50KToKKyAgICAgICAgKiBs
b2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3Vy
Y2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpsb2FkKToKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmRp
ZEFkZENsaWVudCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpzdGls
bE5lZWRzTG9hZCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpDYWNoZWRSZXNv
dXJjZUxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVx
dWVzdEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpjYW5S
ZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0
UmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJldmFs
aWRhdGVSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6
bG9hZFJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpk
ZXRlcm1pbmVSZXZhbGlkYXRpb25Qb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVz
b3VyY2VMb2FkZXI6OnNldEF1dG9Mb2FkSW1hZ2VzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnNldEltYWdlc0VuYWJsZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNsaWVudERlZmVyc0ltYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpzaG91bGREZWZlcklt
YWdlTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVsb2Fk
SW1hZ2VzSWZOb3REZWZlcnJlZCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxv
YWRlcjo6cmVxdWVzdFByZWxvYWQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZUxvYWRlci5oOgorICAgICAgICAoQ2FjaGVkUmVzb3VyY2VMb2FkZXIpOgorICAgICAgICAq
IHBhZ2UvU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0SW1hZ2VMb2FkaW5nU2V0
dGluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OlNldHRpbmdzKToKKyAgICAgICAg
KFdlYkNvcmU6OlNldHRpbmdzOjpzZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkpOgorICAgICAg
ICAoV2ViQ29yZTo6U2V0dGluZ3M6OmltYWdlTG9hZGluZ1NldHRpbmdzVGltZXJGaXJlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6c2V0SW1hZ2VzRW5hYmxlZCk6CisgICAgICAgICog
cGFnZS9TZXR0aW5ncy5oOgorICAgICAgICAoU2V0dGluZ3MpOgorICAgICAgICAqIHRlc3Rpbmcv
SW50ZXJuYWxTZXR0aW5ncy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbFNldHRpbmdz
OjpCYWNrdXA6OkJhY2t1cCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbFNldHRpbmdzOjpC
YWNrdXA6OnJlc3RvcmVUbyk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbFNldHRpbmdzOjpz
ZXRJbWFnZXNFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHRlc3Rpbmcv
SW50ZXJuYWxTZXR0aW5ncy5oOgorICAgICAgICAoQmFja3VwKToKKyAgICAgICAgKEludGVybmFs
U2V0dGluZ3MpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5pZGw6CisKIDIw
MTItMDktMjAgIEFkYW0gS2xlaW4gIDxhZGFta0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVu
YW1lIENvbnRhaW5lck5vZGU6OnBhcnNlckFkZENoaWxkICJwYXJzZXJBcHBlbmRDaGlsZCIgZm9y
IGNvbnNpc3RlbmN5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggODhhNTJhMmZiMmFiMGNlM2E1Yzk5NDU5ZmYxYjQz
OGUxNjAxZWM2OC4uNGFkYWE4MmZiMjJmM2M5ZjJkMDEyMzdjZTUwZjhkODk4MTAwYmY2NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDEyLTA5LTIxICBCbyBMaXUgIDxib2xpdUBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgUmVsYW5kICJBZGQgaW4tcGxhY2UgcmVsb2FkIGJlaGF2aW9y
IHRvIEltYWdlc0VuYWJsZWQgc2V0dGluZyIgd2l0aCBvcHRpbWl6YXRpb25zCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzA1NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbGFuZGluZyAxMjg3ODAsIDEy
ODY3NiwgMTI4NjQ1LiBXYXMgcmV2ZXJ0ZWQgaW4gMTI4OTE0IGR1ZSB0bworICAgICAgICBwZXJm
b3JtYW5jZSByZWdyZXNzaW9uIGluIENocm9taXVtLgorCisgICAgICAgIE5ldyBjaGFuZ2VzIGlu
IGFkZGl0aW9uIHRvIHByZXZpb3VzbHkgcmV2ZXJ0ZWQgcGF0Y2hlczoKKworICAgICAgICBSZWZh
Y3RvcmVkIENhY2hlZFJlc291cmNlOjpyZXF1ZXN0UmVzb3VyY2UsIGxvYWRSZXNvdXJjZSwgYW5k
CisgICAgICAgIHJldmFsaWRhdGVSZXNvdXJjZS4gTW92ZWQgQ2FjaGVkUmVzb3VyY2U6OmxvYWQg
bWV0aG9kIHRvIGVuZCBvZgorICAgICAgICByZXF1ZXN0UmVzb3VyY2Ugc28gdGhlcmUgaXMgb25l
IHBsYWNlIHdoZXJlIGxvYWQgaXMgY2FsbGVkIGZvciBhbGwKKyAgICAgICAgcmVzb3VyY2VzLgor
CisgICAgICAgIEFkZGVkIGEgYm9vbCBwYXJhbWV0ZXIgZm9yIHJlcXVlc3RSZXNvdXJjZSBhbmQK
KyAgICAgICAgZGV0ZXJtaW5lUmV2YWxpZGF0aW9uUG9saWN5IHNvIHRoYXQgRnJhbWVMb2FkZXJD
bGllbnQ6OmFsbG93SW1hZ2UgY2FsbAorICAgICAgICBkbyBub3QgbmVlZCB0byBiZSBjYWxsZWQg
bXVsdGlwbGUgdGltZXMuCisKKyAgICAgICAgUmVtb3ZlZCBDYWNoZWRJbWFnZTo6bG9hZCBjYWxs
IGluIHJlcXVlc3RJbWFnZSBzbyBpdCBpcyBub3QgY2FsbGVkCisgICAgICAgIHR3aWNlLgorCisg
ICAgICAgIFJlbW92ZWQgdW5uZWNlc3NhcnkgRnJhbWUuaCBpbmNsdWRlcyBpbiBDYWNoZWRSZXNv
dXJjZSBhbmQKKyAgICAgICAgQ2FjaGVkSW1hZ2UuCisKKyAgICAgICAgUmVtb3ZlZCBkZWFkIGxv
YWQoKSBtZXRob2QgZGVjbGFyYXRpb24gaW4gQ2FjaGVkSW1hZ2UuCisKKyAgICAgICAgVXBkYXRl
ZCB0ZXh0IGV4cGVjdGF0aW9uIGZvciB0d28gaW1hZ2UtcGVybWlzc2lvbnMgdGVzdHMgdG8gcmVm
bGVjdAorICAgICAgICB0aGUgcmVtb3ZlZCBjYWxscyB0byBhbGxvd0ltYWdlLgorCisgICAgICAg
ICogd2luL1dlYktpdDIuZGVmOgorCiAyMDEyLTA5LTE3ICBKb24gTGVlICA8am9ubGVlQGFwcGxl
LmNvbT4KIAogICAgICAgICBTYWZhcmkgNiBub3RpZmljYXRpb25zJyBvbmNsaWNrIGhhbmRsZXJz
IGNhbid0IGNhbGwgd2luZG93Lm9wZW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCBkZmY4MzBk
NTAzODQ5MmZkMmRlNDEwY2YyNWY4MzI5MzcyMjAxMDM4Li43YzM2NzI2NjkwYjMzYzM3MzdkM2Y3
Yjg3NjU1MDQzN2ZjZmI3MTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtODUyLDYgKzg1Miw3
IEBAIF9fWk43V2ViQ29yZThHcmFkaWVudEMxRVJLTlNfMTBGbG9hdFBvaW50RVMzXwogX19aTjdX
ZWJDb3JlOFBvc2l0aW9uQzFFTjNXVEYxMFBhc3NSZWZQdHJJTlNfNE5vZGVFRUVpTlMwXzEwQW5j
aG9yVHlwZUUKIF9fWk43V2ViQ29yZThTZXR0aW5nczE0c2V0SmF2YUVuYWJsZWRFYgogX19aTjdX
ZWJDb3JlOFNldHRpbmdzMTVzZXRXZWJHTEVuYWJsZWRFYgorX19aTjdXZWJDb3JlOFNldHRpbmdz
MTZzZXRJbWFnZXNFbmFibGVkRWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczE2c2V0U2NyaXB0RW5h
YmxlZEViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MxNnNldFVzZXNQYWdlQ2FjaGVFYgogX19aTjdX
ZWJDb3JlOFNldHRpbmdzMTdzZXRQbHVnaW5zRW5hYmxlZEViCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcAppbmRleCBiMjZiNmQ0Y2MyMmZhZTc1NzhkMDQ0ZjYxMDUxNjE5MjRiMDZm
YzVmLi40MTc3MmNhZWU4ZDJkOTMyZGQzZjZiZWMyYThiYmFmYzBkY2U1ZjFjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTY0Nyw2ICs2NDcsNyBAQCB2b2lkIEZyYW1l
TG9hZGVyOjpkaWRCZWdpbkRvY3VtZW50KGJvb2wgZGlzcGF0Y2gpCiAgICAgbV9mcmFtZS0+ZG9j
dW1lbnQoKS0+aW5pdENvbnRlbnRTZWN1cml0eVBvbGljeSgpOwogCiAgICAgU2V0dGluZ3MqIHNl
dHRpbmdzID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+c2V0dGluZ3MoKTsKKyAgICBtX2ZyYW1lLT5k
b2N1bWVudCgpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5zZXRJbWFnZXNFbmFibGVkKCFzZXR0
aW5ncyB8fCBzZXR0aW5ncy0+YXJlSW1hZ2VzRW5hYmxlZCgpKTsKICAgICBtX2ZyYW1lLT5kb2N1
bWVudCgpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5zZXRBdXRvTG9hZEltYWdlcyhzZXR0aW5n
cyAmJiBzZXR0aW5ncy0+bG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KCkpOwogCiAgICAgaWYgKG1f
ZG9jdW1lbnRMb2FkZXIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJy
ZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2Fk
ZXIuY3BwCmluZGV4IGZmM2JlNmVkZmY4Yjk3ZmM1NWEwODQ4YjRjMWFmMDJmMDgxYjQ2MTYuLjU2
ZGUwZDM0MTMzYzNmNWE0NzJiZmMyYmM2ZjRlNWNkZjM4MzAzZmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAtMTY3LDExICsxNjcsMTMgQEAgdm9p
ZCBTdWJyZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYgbmV3
UmVxdWVzdCwgY29uc3QgUmVzb3UKICAgICAKICAgICBSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRS
ZXF1ZXN0KG5ld1JlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOwogICAgIGlmICghcHJldmlvdXNV
UkwuaXNOdWxsKCkgJiYgIW5ld1JlcXVlc3QuaXNOdWxsKCkgJiYgcHJldmlvdXNVUkwgIT0gbmV3
UmVxdWVzdC51cmwoKSkgewotICAgICAgICBpZiAoIW1fZG9jdW1lbnQtPmNhY2hlZFJlc291cmNl
TG9hZGVyKCktPmNhblJlcXVlc3QobV9yZXNvdXJjZS0+dHlwZSgpLCBuZXdSZXF1ZXN0LnVybCgp
KSkgewotICAgICAgICAgICAgY2FuY2VsKCk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAg
IGlmIChtX2RvY3VtZW50LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5jYW5SZXF1ZXN0KG1fcmVz
b3VyY2UtPnR5cGUoKSwgbmV3UmVxdWVzdC51cmwoKSkpIHsKKyAgICAgICAgICAgIGlmIChtX3Jl
c291cmNlLT50eXBlKCkgIT0gQ2FjaGVkUmVzb3VyY2U6OkltYWdlUmVzb3VyY2UgfHwgIW1fZG9j
dW1lbnQtPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPnNob3VsZERlZmVySW1hZ2VMb2FkKG5ld1Jl
cXVlc3QudXJsKCkpKSB7CisgICAgICAgICAgICAgICAgbV9yZXNvdXJjZS0+d2lsbFNlbmRSZXF1
ZXN0KG5ld1JlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOworICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBtX3Jlc291cmNlLT53aWxsU2Vu
ZFJlcXVlc3QobmV3UmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CisgICAgICAgIGNhbmNlbCgp
OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5j
cHAKaW5kZXggNDMxNjYxNmIzNjQ1M2EyMDg2NWU0ZDJkNmUwMjg5MzBhZjE2YjlkMy4uMDU1YWNi
OTBjZDE5OWI0NzhlNTE2ZTA2NWI1MWUwOGRiNDcwNTk0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAi
Q2FjaGVkUmVzb3VyY2VDbGllbnQuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudFdh
bGtlci5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCi0jaW5jbHVkZSAiRnJh
bWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIkZyYW1lTG9h
ZGVyVHlwZXMuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKQEAgLTc5LDcgKzc4LDcgQEAgQ2Fj
aGVkSW1hZ2U6On5DYWNoZWRJbWFnZSgpCiAKIHZvaWQgQ2FjaGVkSW1hZ2U6OmxvYWQoQ2FjaGVk
UmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyLCBjb25zdCBSZXNvdXJjZUxvYWRl
ck9wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgaWYgKCFjYWNoZWRSZXNvdXJjZUxvYWRlciB8fCBj
YWNoZWRSZXNvdXJjZUxvYWRlci0+YXV0b0xvYWRJbWFnZXMoKSkKKyAgICBpZiAoc3RpbGxOZWVk
c0xvYWQoKSAmJiAoIWNhY2hlZFJlc291cmNlTG9hZGVyIHx8IGNhY2hlZFJlc291cmNlTG9hZGVy
LT5hdXRvTG9hZEltYWdlcygpKSkKICAgICAgICAgQ2FjaGVkUmVzb3VyY2U6OmxvYWQoY2FjaGVk
UmVzb3VyY2VMb2FkZXIsIG9wdGlvbnMpOwogICAgIGVsc2UKICAgICAgICAgc2V0TG9hZGluZyhm
YWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCmluZGV4IDQ4
NjVjN2UyNDY2NWJhNjM5YjBlMWE5NmJjNjI1MjYwZDczYWQwMWIuLjA3OGY3YWIxYzYyZmY4NmI4
MTViOWYwNjU0NjMwZDM2MDE5MjkzY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRJbWFnZS5oCkBAIC04Miw4ICs4Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkSWdub3JlSFRUUFN0YXR1c0NvZGVFcnJvcnMoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9
CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAg
ICBib29sIHN0aWxsTmVlZHNMb2FkKCkgY29uc3QgeyByZXR1cm4gIWVycm9yT2NjdXJyZWQoKSAm
JiBzdGF0dXMoKSA9PSBVbmtub3duICYmICFpc0xvYWRpbmcoKTsgfQotICAgIHZvaWQgbG9hZCgp
OworICAgIHZpcnR1YWwgYm9vbCBzdGlsbE5lZWRzTG9hZCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0
dXJuICFlcnJvck9jY3VycmVkKCkgJiYgc3RhdHVzKCkgPT0gVW5rbm93biAmJiAhaXNMb2FkaW5n
KCk7IH0KIAogICAgIC8vIEltYWdlT2JzZXJ2ZXIKICAgICB2aXJ0dWFsIHZvaWQgZGVjb2RlZFNp
emVDaGFuZ2VkKGNvbnN0IEltYWdlKiBpbWFnZSwgaW50IGRlbHRhKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IDQzYzNkMTQ0ZjgyZjE1
Njg4Y2Y2NmMwNTRhMDRkYTk2MDE5YjlkMTEuLjMzZDFiYTgyM2JjNmZkODY1NzJlNmE5NDYxYWM1
YmQ3NTYzYTA2YmIgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlLmNwcApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9h
ZGVyLmgiCiAjaW5jbHVkZSAiQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmgiCiAjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKLSNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xp
ZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAi
S1VSTC5oIgpAQCAtMzkwLDcgKzM4OSw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OmRpZEFkZENs
aWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCogYykKICAgICAgICAgbV9jbGllbnRzLmFkZChjKTsK
ICAgICAgICAgbV9jbGllbnRzQXdhaXRpbmdDYWxsYmFjay5yZW1vdmUoYyk7CiAgICAgfQotICAg
IGlmICghaXNMb2FkaW5nKCkpCisgICAgaWYgKCFpc0xvYWRpbmcoKSAmJiAhc3RpbGxOZWVkc0xv
YWQoKSkKICAgICAgICAgYy0+bm90aWZ5RmluaXNoZWQodGhpcyk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKaW5kZXggMGNhZDNlZTdjYTQyODEy
ZWFhM2VmZTYwMDMxMTY0NDlmN2E2OTZhMS4uYjczOWQ2OGFmODFmMmRiN2I0ODYyZGYxNTlhYWNm
MTU4ZTBiNTczMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlLmgKQEAgLTQ1LDcgKzQ1LDYgQEAgY2xhc3MgQ2FjaGVkTWV0YWRhdGE7CiBjbGFzcyBDYWNo
ZWRSZXNvdXJjZUNsaWVudDsKIGNsYXNzIENhY2hlZFJlc291cmNlSGFuZGxlQmFzZTsKIGNsYXNz
IENhY2hlZFJlc291cmNlTG9hZGVyOwotY2xhc3MgRnJhbWU7CiBjbGFzcyBJbnNwZWN0b3JSZXNv
dXJjZTsKIGNsYXNzIFB1cmdlYWJsZUJ1ZmZlcjsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwpAQCAt
MTQ0LDYgKzE0Myw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNMb2FkaW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV9sb2FkaW5nOyB9CiAgICAgdm9pZCBzZXRMb2FkaW5nKGJvb2wgYikgeyBtX2xvYWRp
bmcgPSBiOyB9CisgICAgdmlydHVhbCBib29sIHN0aWxsTmVlZHNMb2FkKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KIAogICAgIFN1YnJlc291cmNlTG9hZGVyKiBsb2FkZXIoKSB7IHJldHVybiBt
X2xvYWRlci5nZXQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAppbmRleCAzNTNhNjJhYTY0MGRiZGQ1ZTUxMjdkOTBi
MTA4NDU2ZDRhYzdjZWRiLi5lN2E0Njk5MDkxZjllY2VhMTRmMGE4ZmM4YWE3NDE2MzE4ZDQyODYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZUxvYWRlci5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgog
I2luY2x1ZGUgIlBpbmdMb2FkZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRTY2hlZHVsZXIu
aCIKKyNpbmNsdWRlICJTY2hlbWVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2lu
LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4K
QEAgLTExNSw2ICsxMTYsNyBAQCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Q2FjaGVkUmVzb3VyY2VM
b2FkZXIoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgICwgbV9yZXF1ZXN0Q291bnQoMCkKICAgICAs
IG1fZ2FyYmFnZUNvbGxlY3REb2N1bWVudFJlc291cmNlc1RpbWVyKHRoaXMsICZDYWNoZWRSZXNv
dXJjZUxvYWRlcjo6Z2FyYmFnZUNvbGxlY3REb2N1bWVudFJlc291cmNlc1RpbWVyRmlyZWQpCiAg
ICAgLCBtX2F1dG9Mb2FkSW1hZ2VzKHRydWUpCisgICAgLCBtX2ltYWdlc0VuYWJsZWQodHJ1ZSkK
ICAgICAsIG1fYWxsb3dTdGFsZVJlc291cmNlcyhmYWxzZSkKIHsKIH0KQEAgLTE1OSwxMCArMTYx
LDcgQEAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkSW1hZ2U+IENhY2hlZFJlc291cmNlTG9h
ZGVyOjpyZXF1ZXN0SW1hZ2UoUmVzb3VyY2VSZXEKICAgICAgICAgICAgIHJldHVybiAwOwogICAg
ICAgICB9CiAgICAgfQotICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZEltYWdlPiByZXNv
dXJjZShzdGF0aWNfY2FzdDxDYWNoZWRJbWFnZSo+KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNv
dXJjZTo6SW1hZ2VSZXNvdXJjZSwgcmVxdWVzdCwgU3RyaW5nKCksIGRlZmF1bHRDYWNoZWRSZXNv
dXJjZU9wdGlvbnMoKSkuZ2V0KCkpKTsKLSAgICBpZiAoYXV0b0xvYWRJbWFnZXMoKSAmJiByZXNv
dXJjZSAmJiByZXNvdXJjZS0+c3RpbGxOZWVkc0xvYWQoKSkKLSAgICAgICAgcmVzb3VyY2UtPmxv
YWQodGhpcywgZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpKTsKLSAgICByZXR1cm4gcmVz
b3VyY2U7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENhY2hlZEltYWdlKj4ocmVxdWVzdFJlc291
cmNlKENhY2hlZFJlc291cmNlOjpJbWFnZVJlc291cmNlLCByZXF1ZXN0LCBTdHJpbmcoKSwgZGVm
YXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpLCBSZXNvdXJjZUxvYWRQcmlvcml0eVVucmVzb2x2
ZWQsIGZhbHNlLCBjbGllbnREZWZlcnNJbWFnZShyZXF1ZXN0LnVybCgpKSkuZ2V0KCkpOwogfQog
CiBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRGb250PiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6
cmVxdWVzdEZvbnQoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQpAQCAtMzYyLDEyICszNjEsNiBA
QCBib29sIENhY2hlZFJlc291cmNlTG9hZGVyOjpjYW5SZXF1ZXN0KENhY2hlZFJlc291cmNlOjpU
eXBlIHR5cGUsIGNvbnN0IEtVUkwmIHVybAogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkltYWdl
UmVzb3VyY2U6CiAgICAgICAgIGlmICghbV9kb2N1bWVudC0+Y29udGVudFNlY3VyaXR5UG9saWN5
KCktPmFsbG93SW1hZ2VGcm9tU291cmNlKHVybCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICAgICAgaWYgKGZyYW1lKCkpIHsKLSAgICAgICAgICAgIFNldHRpbmdzKiBzZXR0aW5n
cyA9IGZyYW1lKCktPnNldHRpbmdzKCk7Ci0gICAgICAgICAgICBpZiAoIWZyYW1lKCktPmxvYWRl
cigpLT5jbGllbnQoKS0+YWxsb3dJbWFnZSghc2V0dGluZ3MgfHwgc2V0dGluZ3MtPmFyZUltYWdl
c0VuYWJsZWQoKSwgdXJsKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IH0KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6Rm9udFJlc291cmNl
OiB7CiAgICAgICAgIGlmICghbV9kb2N1bWVudC0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmFs
bG93Rm9udEZyb21Tb3VyY2UodXJsKSkKQEAgLTQwMSw3ICszOTQsNyBAQCBib29sIENhY2hlZFJl
c291cmNlTG9hZGVyOjpjYW5SZXF1ZXN0KENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIGNvbnN0
IEtVUkwmIHVybAogICAgIHJldHVybiB0cnVlOwogfQogCi1DYWNoZWRSZXNvdXJjZUhhbmRsZTxD
YWNoZWRSZXNvdXJjZT4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZShDYWNo
ZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0
cmluZyYgY2hhcnNldCwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zLCBSZXNv
dXJjZUxvYWRQcmlvcml0eSBwcmlvcml0eSwgYm9vbCBmb3JQcmVsb2FkKQorQ2FjaGVkUmVzb3Vy
Y2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVz
b3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0
aW9ucywgUmVzb3VyY2VMb2FkUHJpb3JpdHkgcHJpb3JpdHksIGJvb2wgZm9yUHJlbG9hZCwgYm9v
bCBpbWFnZURlZmVycmVkQnlDbGllbnQpCiB7CiAgICAgS1VSTCB1cmwgPSByZXF1ZXN0LnVybCgp
OwogICAgIApAQCAtNDMwLDE2ICs0MjMsMTYgQEAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVk
UmVzb3VyY2U+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UoQ2FjaGUKICAg
ICBpZiAocmVxdWVzdC51cmwoKSAhPSB1cmwpCiAgICAgICAgIHJlcXVlc3Quc2V0VVJMKHVybCk7
CiAKLSAgICBzd2l0Y2ggKGRldGVybWluZVJldmFsaWRhdGlvblBvbGljeSh0eXBlLCByZXF1ZXN0
LCBmb3JQcmVsb2FkLCByZXNvdXJjZS5nZXQoKSkpIHsKLSAgICBjYXNlIExvYWQ6Ci0gICAgICAg
IHJlc291cmNlID0gbG9hZFJlc291cmNlKHR5cGUsIHJlcXVlc3QsIGNoYXJzZXQsIHByaW9yaXR5
LCBvcHRpb25zKTsKLSAgICAgICAgYnJlYWs7CisgICAgY29uc3QgUmV2YWxpZGF0aW9uUG9saWN5
IHBvbGljeSA9IGRldGVybWluZVJldmFsaWRhdGlvblBvbGljeSh0eXBlLCByZXF1ZXN0LCBmb3JQ
cmVsb2FkLCByZXNvdXJjZS5nZXQoKSwgaW1hZ2VEZWZlcnJlZEJ5Q2xpZW50KTsKKyAgICBzd2l0
Y2ggKHBvbGljeSkgewogICAgIGNhc2UgUmVsb2FkOgogICAgICAgICBtZW1vcnlDYWNoZSgpLT5y
ZW1vdmUocmVzb3VyY2UuZ2V0KCkpOwotICAgICAgICByZXNvdXJjZSA9IGxvYWRSZXNvdXJjZSh0
eXBlLCByZXF1ZXN0LCBjaGFyc2V0LCBwcmlvcml0eSwgb3B0aW9ucyk7CisgICAgICAgIC8vIEZh
bGwgdGhyb3VnaAorICAgIGNhc2UgTG9hZDoKKyAgICAgICAgcmVzb3VyY2UgPSBsb2FkUmVzb3Vy
Y2UodHlwZSwgcmVxdWVzdCwgY2hhcnNldCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUmV2
YWxpZGF0ZToKLSAgICAgICAgcmVzb3VyY2UgPSByZXZhbGlkYXRlUmVzb3VyY2UocmVzb3VyY2Uu
Z2V0KCksIHByaW9yaXR5LCBvcHRpb25zKTsKKyAgICAgICAgcmVzb3VyY2UgPSByZXZhbGlkYXRl
UmVzb3VyY2UocmVzb3VyY2UuZ2V0KCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFVzZToK
ICAgICAgICAgbWVtb3J5Q2FjaGUoKS0+cmVzb3VyY2VBY2Nlc3NlZChyZXNvdXJjZS5nZXQoKSk7
CkBAIC00NTAsMTIgKzQ0MywyNCBAQCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJj
ZT4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZShDYWNoZQogICAgIGlmICgh
cmVzb3VyY2UpCiAgICAgICAgIHJldHVybiAwOwogCisgICAgcmVzb3VyY2UtPnNldExvYWRQcmlv
cml0eShwcmlvcml0eSk7CisgICAgaWYgKHJlc291cmNlLT50eXBlKCkgPT0gQ2FjaGVkUmVzb3Vy
Y2U6OkltYWdlUmVzb3VyY2UgPyAhaW1hZ2VEZWZlcnJlZEJ5Q2xpZW50IDogcG9saWN5ICE9IFVz
ZSkgeworICAgICAgICByZXNvdXJjZS0+bG9hZCh0aGlzLCBvcHRpb25zKTsKKworICAgICAgICAv
LyBXZSBkb24ndCBzdXBwb3J0IGltbWVkaWF0ZSBsb2FkcywgYnV0IHdlIGRvIHN1cHBvcnQgaW1t
ZWRpYXRlIGZhaWx1cmUuCisgICAgICAgIGlmIChyZXNvdXJjZS0+ZXJyb3JPY2N1cnJlZCgpKSB7
CisgICAgICAgICAgICBpZiAocmVzb3VyY2UtPmluQ2FjaGUoKSkKKyAgICAgICAgICAgICAgICBt
ZW1vcnlDYWNoZSgpLT5yZW1vdmUocmVzb3VyY2UuZ2V0KCkpOworICAgICAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgIH0KKyAgICB9CisKICAgICBBU1NFUlQocmVzb3VyY2UtPnVybCgpID09IHVy
bC5zdHJpbmcoKSk7CiAgICAgbV9kb2N1bWVudFJlc291cmNlcy5zZXQocmVzb3VyY2UtPnVybCgp
LCByZXNvdXJjZSk7CiAgICAgcmV0dXJuIHJlc291cmNlOwogfQogCi1DYWNoZWRSZXNvdXJjZUhh
bmRsZTxDYWNoZWRSZXNvdXJjZT4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJldmFsaWRhdGVSZXNv
dXJjZShDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIFJlc291cmNlTG9hZFByaW9yaXR5IHByaW9y
aXR5LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCitDYWNoZWRSZXNvdXJj
ZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJldmFsaWRhdGVS
ZXNvdXJjZShDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCiB7CiAgICAgQVNTRVJUKHJlc291cmNl
KTsKICAgICBBU1NFUlQocmVzb3VyY2UtPmluQ2FjaGUoKSk7CkBAIC00NzMsMTYgKzQ3OCwxMyBA
QCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI6OnJldmFsaWRhdGVSZXNvdXJjZShDYQogICAgIAogICAgIG1lbW9yeUNhY2hlKCktPnJlbW92
ZShyZXNvdXJjZSk7CiAgICAgbWVtb3J5Q2FjaGUoKS0+YWRkKG5ld1Jlc291cmNlLmdldCgpKTsK
LSAgICAKLSAgICBuZXdSZXNvdXJjZS0+c2V0TG9hZFByaW9yaXR5KHByaW9yaXR5KTsKLSAgICBu
ZXdSZXNvdXJjZS0+bG9hZCh0aGlzLCBvcHRpb25zKTsKIAogICAgIGlmICghdXJsUHJvdG9jb2xJ
c0RhdGEpCiAgICAgICAgIG1fdmFsaWRhdGVkVVJMcy5hZGQodXJsKTsKICAgICByZXR1cm4gbmV3
UmVzb3VyY2U7CiB9CiAKLUNhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBDYWNo
ZWRSZXNvdXJjZUxvYWRlcjo6bG9hZFJlc291cmNlKENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUs
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBSZXNvdXJj
ZUxvYWRQcmlvcml0eSBwcmlvcml0eSwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRp
b25zKQorQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IENhY2hlZFJlc291cmNl
TG9hZGVyOjpsb2FkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIGNoYXJzZXQpCiB7CiAgICAgQVNTRVJUKCFt
ZW1vcnlDYWNoZSgpLT5yZXNvdXJjZUZvclVSTChyZXF1ZXN0LnVybCgpKSk7CiAgICAgCkBAIC00
OTAsMzUgKzQ5MiwyMyBAQCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gQ2Fj
aGVkUmVzb3VyY2VMb2FkZXI6OmxvYWRSZXNvdXJjZShDYWNoZWRSZQogICAgIAogICAgIENhY2hl
ZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiByZXNvdXJjZSA9IGNyZWF0ZVJlc291cmNl
KHR5cGUsIHJlcXVlc3QsIGNoYXJzZXQpOwogICAgIAotICAgIGJvb2wgaW5DYWNoZSA9IG1lbW9y
eUNhY2hlKCktPmFkZChyZXNvdXJjZS5nZXQoKSk7Ci0gICAgCi0gICAgcmVzb3VyY2UtPnNldExv
YWRQcmlvcml0eShwcmlvcml0eSk7Ci0gICAgcmVzb3VyY2UtPmxvYWQodGhpcywgb3B0aW9ucyk7
Ci0gICAgCi0gICAgaWYgKCFpbkNhY2hlKQorICAgIGlmICghbWVtb3J5Q2FjaGUoKS0+YWRkKHJl
c291cmNlLmdldCgpKSkKICAgICAgICAgcmVzb3VyY2UtPnNldE93bmluZ0NhY2hlZFJlc291cmNl
TG9hZGVyKHRoaXMpOwogCi0gICAgLy8gV2UgZG9uJ3Qgc3VwcG9ydCBpbW1lZGlhdGUgbG9hZHMs
IGJ1dCB3ZSBkbyBzdXBwb3J0IGltbWVkaWF0ZSBmYWlsdXJlLgotICAgIGlmIChyZXNvdXJjZS0+
ZXJyb3JPY2N1cnJlZCgpKSB7Ci0gICAgICAgIGlmIChpbkNhY2hlKQotICAgICAgICAgICAgbWVt
b3J5Q2FjaGUoKS0+cmVtb3ZlKHJlc291cmNlLmdldCgpKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0g
ICAgfQotCiAgICAgaWYgKCFyZXF1ZXN0LnVybCgpLnByb3RvY29sSXNEYXRhKCkpCiAgICAgICAg
IG1fdmFsaWRhdGVkVVJMcy5hZGQocmVxdWVzdC51cmwoKSk7CiAgICAgcmV0dXJuIHJlc291cmNl
OwogfQogCi1DYWNoZWRSZXNvdXJjZUxvYWRlcjo6UmV2YWxpZGF0aW9uUG9saWN5IENhY2hlZFJl
c291cmNlTG9hZGVyOjpkZXRlcm1pbmVSZXZhbGlkYXRpb25Qb2xpY3koQ2FjaGVkUmVzb3VyY2U6
OlR5cGUgdHlwZSwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sIGZvclByZWxvYWQsIENh
Y2hlZFJlc291cmNlKiBleGlzdGluZ1Jlc291cmNlKSBjb25zdAorQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI6OlJldmFsaWRhdGlvblBvbGljeSBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6ZGV0ZXJtaW5lUmV2
YWxpZGF0aW9uUG9saWN5KENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgYm9vbCBmb3JQcmVsb2FkLCBDYWNoZWRSZXNvdXJjZSogZXhpc3RpbmdSZXNv
dXJjZSwgYm9vbCBpbWFnZURlZmVycmVkQnlDbGllbnQpIGNvbnN0CiB7CiAgICAgaWYgKCFleGlz
dGluZ1Jlc291cmNlKQogICAgICAgICByZXR1cm4gTG9hZDsKLSAgICAKKwogICAgIC8vIFdlIGFs
cmVhZHkgaGF2ZSBhIHByZWxvYWQgZ29pbmcgZm9yIHRoaXMgVVJMLgogICAgIGlmIChmb3JQcmVs
b2FkICYmIGV4aXN0aW5nUmVzb3VyY2UtPmlzUHJlbG9hZGVkKCkpCiAgICAgICAgIHJldHVybiBV
c2U7Ci0gICAgCisKICAgICAvLyBJZiB0aGUgc2FtZSBVUkwgaGFzIGJlZW4gbG9hZGVkIGFzIGEg
ZGlmZmVyZW50IHR5cGUsIHdlIG5lZWQgdG8gcmVsb2FkLgogICAgIGlmIChleGlzdGluZ1Jlc291
cmNlLT50eXBlKCkgIT0gdHlwZSkgewogICAgICAgICBMT0coUmVzb3VyY2VMb2FkaW5nLCAiQ2Fj
aGVkUmVzb3VyY2VMb2FkZXI6OmRldGVybWluZVJldmFsaWRhdGlvblBvbGljeSByZWxvYWRpbmcg
ZHVlIHRvIHR5cGUgbWlzbWF0Y2guIik7CkBAIC01MzMsNiArNTIzLDExIEBAIENhY2hlZFJlc291
cmNlTG9hZGVyOjpSZXZhbGlkYXRpb25Qb2xpY3kgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRldGVy
bWluZVJldmFsaWRhCiAgICAgLy8gb2YgdGhpbmdzIGFib3V0IGhvdyByZXZhbGlkYXRpb24gd29y
a3MgdGhhdCBtYW51YWwgaGVhZGVycyB2aW9sYXRlLCBzbyBwdW50IHRvIFJlbG9hZCBpbnN0ZWFk
LgogICAgIGlmIChyZXF1ZXN0LmlzQ29uZGl0aW9uYWwoKSkKICAgICAgICAgcmV0dXJuIFJlbG9h
ZDsKKworICAgIC8vIERvIG5vdCBsb2FkIGZyb20gY2FjaGUgaWYgaW1hZ2VzIGFyZSBub3QgZW5h
YmxlZC4gVGhlIGxvYWQgZm9yIHRoaXMgaW1hZ2Ugd2lsbCBiZSBibG9ja2VkCisgICAgLy8gaW4g
Q2FjaGVkSW1hZ2U6OmxvYWQuCisgICAgaWYgKGltYWdlRGVmZXJyZWRCeUNsaWVudCAmJiBleGlz
dGluZ1Jlc291cmNlLT50eXBlKCkgPT0gQ2FjaGVkUmVzb3VyY2U6OkltYWdlUmVzb3VyY2UpCisg
ICAgICAgIHJldHVybiBSZWxvYWQ7CiAgICAgCiAgICAgLy8gRG9uJ3QgcmVsb2FkIHJlc291cmNl
cyB3aGlsZSBwYXN0aW5nLgogICAgIGlmIChtX2FsbG93U3RhbGVSZXNvdXJjZXMpCkBAIC02Mjks
MTUgKzYyNCwzOSBAQCB2b2lkIENhY2hlZFJlc291cmNlTG9hZGVyOjpzZXRBdXRvTG9hZEltYWdl
cyhib29sIGVuYWJsZSkKICAgICBpZiAoIW1fYXV0b0xvYWRJbWFnZXMpCiAgICAgICAgIHJldHVy
bjsKIAorICAgIHJlbG9hZEltYWdlc0lmTm90RGVmZXJyZWQoKTsKK30KKwordm9pZCBDYWNoZWRS
ZXNvdXJjZUxvYWRlcjo6c2V0SW1hZ2VzRW5hYmxlZChib29sIGVuYWJsZSkKK3sKKyAgICBpZiAo
ZW5hYmxlID09IG1faW1hZ2VzRW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9pbWFn
ZXNFbmFibGVkID0gZW5hYmxlOworCisgICAgaWYgKCFtX2ltYWdlc0VuYWJsZWQpCisgICAgICAg
IHJldHVybjsKKworICAgIHJlbG9hZEltYWdlc0lmTm90RGVmZXJyZWQoKTsKK30KKworYm9vbCBD
YWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2xpZW50RGVmZXJzSW1hZ2UoY29uc3QgS1VSTCYgdXJsKSBj
b25zdAoreworICAgIHJldHVybiBmcmFtZSgpICYmICFmcmFtZSgpLT5sb2FkZXIoKS0+Y2xpZW50
KCktPmFsbG93SW1hZ2UobV9pbWFnZXNFbmFibGVkLCB1cmwpOworfQorCitib29sIENhY2hlZFJl
c291cmNlTG9hZGVyOjpzaG91bGREZWZlckltYWdlTG9hZChjb25zdCBLVVJMJiB1cmwpIGNvbnN0
Cit7CisgICAgcmV0dXJuIGNsaWVudERlZmVyc0ltYWdlKHVybCkgfHwgIW1fYXV0b0xvYWRJbWFn
ZXM7Cit9CisKK3ZvaWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlbG9hZEltYWdlc0lmTm90RGVm
ZXJyZWQoKQorewogICAgIERvY3VtZW50UmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGVuZCA9IG1fZG9j
dW1lbnRSZXNvdXJjZXMuZW5kKCk7CiAgICAgZm9yIChEb2N1bWVudFJlc291cmNlTWFwOjppdGVy
YXRvciBpdCA9IG1fZG9jdW1lbnRSZXNvdXJjZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7
CiAgICAgICAgIENhY2hlZFJlc291cmNlKiByZXNvdXJjZSA9IGl0LT5zZWNvbmQuZ2V0KCk7Ci0g
ICAgICAgIGlmIChyZXNvdXJjZS0+dHlwZSgpID09IENhY2hlZFJlc291cmNlOjpJbWFnZVJlc291
cmNlKSB7Ci0gICAgICAgICAgICBDYWNoZWRJbWFnZSogaW1hZ2UgPSBjb25zdF9jYXN0PENhY2hl
ZEltYWdlKj4oc3RhdGljX2Nhc3Q8Y29uc3QgQ2FjaGVkSW1hZ2UqPihyZXNvdXJjZSkpOwotCi0g
ICAgICAgICAgICBpZiAoaW1hZ2UtPnN0aWxsTmVlZHNMb2FkKCkpCi0gICAgICAgICAgICAgICAg
aW1hZ2UtPmxvYWQodGhpcywgZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpKTsKLSAgICAg
ICAgfQorICAgICAgICBpZiAocmVzb3VyY2UtPnR5cGUoKSA9PSBDYWNoZWRSZXNvdXJjZTo6SW1h
Z2VSZXNvdXJjZSAmJiAhY2xpZW50RGVmZXJzSW1hZ2UocmVzb3VyY2UtPnVybCgpKSkKKyAgICAg
ICAgICAgIGNvbnN0X2Nhc3Q8Q2FjaGVkUmVzb3VyY2UqPihyZXNvdXJjZSktPmxvYWQodGhpcywg
ZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpKTsKICAgICB9CiB9CiAKQEAgLTc2OSw3ICs3
ODgsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UHJlbG9hZChDYWNoZWRS
ZXNvdXJjZTo6VHlwZSB0eXBlLCBSZXNvdXJjZVJlcQogICAgIGlmICh0eXBlID09IENhY2hlZFJl
c291cmNlOjpTY3JpcHQgfHwgdHlwZSA9PSBDYWNoZWRSZXNvdXJjZTo6Q1NTU3R5bGVTaGVldCkK
ICAgICAgICAgZW5jb2RpbmcgPSBjaGFyc2V0LmlzRW1wdHkoKSA/IG1fZG9jdW1lbnQtPmNoYXJz
ZXQoKSA6IGNoYXJzZXQ7CiAKLSAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJj
ZT4gcmVzb3VyY2UgPSByZXF1ZXN0UmVzb3VyY2UodHlwZSwgcmVxdWVzdCwgZW5jb2RpbmcsIGRl
ZmF1bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKSwgUmVzb3VyY2VMb2FkUHJpb3JpdHlVbnJlc29s
dmVkLCB0cnVlKTsKKyAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gcmVz
b3VyY2UgPSByZXF1ZXN0UmVzb3VyY2UodHlwZSwgcmVxdWVzdCwgZW5jb2RpbmcsIGRlZmF1bHRD
YWNoZWRSZXNvdXJjZU9wdGlvbnMoKSwgUmVzb3VyY2VMb2FkUHJpb3JpdHlVbnJlc29sdmVkLCB0
cnVlLCBmYWxzZSk7CiAgICAgaWYgKCFyZXNvdXJjZSB8fCAobV9wcmVsb2FkcyAmJiBtX3ByZWxv
YWRzLT5jb250YWlucyhyZXNvdXJjZS5nZXQoKSkpKQogICAgICAgICByZXR1cm47CiAgICAgcmVz
b3VyY2UtPmluY3JlYXNlUHJlbG9hZENvdW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCmluZGV4IGY0NzU1YzIyZmQ4ZDJmMWMy
YTBlOGU2ZGE4MmU3ZjliNTIzYTE5ZmIuLmExZmI3YWE1MWQwZmQ4ZThkZDQxN2MwMWYyOWVlMjU0
MWM1MTM2OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZUxvYWRlci5oCkBAIC05Nyw2ICs5NywxMCBAQCBwdWJsaWM6CiAKICAgICBib29sIGF1
dG9Mb2FkSW1hZ2VzKCkgY29uc3QgeyByZXR1cm4gbV9hdXRvTG9hZEltYWdlczsgfQogICAgIHZv
aWQgc2V0QXV0b0xvYWRJbWFnZXMoYm9vbCk7CisKKyAgICB2b2lkIHNldEltYWdlc0VuYWJsZWQo
Ym9vbCk7CisKKyAgICBib29sIHNob3VsZERlZmVySW1hZ2VMb2FkKGNvbnN0IEtVUkwmKSBjb25z
dDsKICAgICAKICAgICBDYWNoZVBvbGljeSBjYWNoZVBvbGljeSgpIGNvbnN0OwogICAgIApAQCAt
MTIyLDE5ICsxMjYsMjIgQEAgcHVibGljOgogICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVt
b3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCiBwcml2YXRlOgotICAgIENhY2hlZFJlc291cmNlSGFu
ZGxlPENhY2hlZFJlc291cmNlPiByZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlR5cGUs
IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgY29uc3QgUmVzb3VyY2VM
b2FkZXJPcHRpb25zJiwgUmVzb3VyY2VMb2FkUHJpb3JpdHkgPSBSZXNvdXJjZUxvYWRQcmlvcml0
eVVucmVzb2x2ZWQsIGJvb2wgaXNQcmVsb2FkID0gZmFsc2UpOwotICAgIENhY2hlZFJlc291cmNl
SGFuZGxlPENhY2hlZFJlc291cmNlPiByZXZhbGlkYXRlUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2Uq
LCBSZXNvdXJjZUxvYWRQcmlvcml0eSwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJik7Ci0g
ICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IGxvYWRSZXNvdXJjZShDYWNo
ZWRSZXNvdXJjZTo6VHlwZSwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBjaGFyc2V0
LCBSZXNvdXJjZUxvYWRQcmlvcml0eSwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJik7Cisg
ICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IHJlcXVlc3RSZXNvdXJjZShD
YWNoZWRSZXNvdXJjZTo6VHlwZSwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBjaGFy
c2V0LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmLCBSZXNvdXJjZUxvYWRQcmlvcml0eSA9
IFJlc291cmNlTG9hZFByaW9yaXR5VW5yZXNvbHZlZCwgYm9vbCBpc1ByZWxvYWQgPSBmYWxzZSwg
Ym9vbCBpbWFnZURlZmVycmVkQnlDbGllbnQgPSBmYWxzZSk7CisgICAgQ2FjaGVkUmVzb3VyY2VI
YW5kbGU8Q2FjaGVkUmVzb3VyY2U+IHJldmFsaWRhdGVSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSop
OworICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBsb2FkUmVzb3VyY2Uo
Q2FjaGVkUmVzb3VyY2U6OlR5cGUsIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgY2hh
cnNldCk7CiAgICAgdm9pZCByZXF1ZXN0UHJlbG9hZChDYWNoZWRSZXNvdXJjZTo6VHlwZSwgUmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBjaGFyc2V0KTsKIAogICAgIGVudW0gUmV2YWxp
ZGF0aW9uUG9saWN5IHsgVXNlLCBSZXZhbGlkYXRlLCBSZWxvYWQsIExvYWQgfTsKLSAgICBSZXZh
bGlkYXRpb25Qb2xpY3kgZGV0ZXJtaW5lUmV2YWxpZGF0aW9uUG9saWN5KENhY2hlZFJlc291cmNl
OjpUeXBlLCBSZXNvdXJjZVJlcXVlc3QmLCBib29sIGZvclByZWxvYWQsIENhY2hlZFJlc291cmNl
KiBleGlzdGluZ1Jlc291cmNlKSBjb25zdDsKKyAgICBSZXZhbGlkYXRpb25Qb2xpY3kgZGV0ZXJt
aW5lUmV2YWxpZGF0aW9uUG9saWN5KENhY2hlZFJlc291cmNlOjpUeXBlLCBSZXNvdXJjZVJlcXVl
c3QmLCBib29sIGZvclByZWxvYWQsIENhY2hlZFJlc291cmNlKiBleGlzdGluZ1Jlc291cmNlLCBi
b29sIGltYWdlRGVmZXJyZWRCeUNsaWVudCkgY29uc3Q7CiAgICAgCiAgICAgdm9pZCBub3RpZnlM
b2FkZWRGcm9tTWVtb3J5Q2FjaGUoQ2FjaGVkUmVzb3VyY2UqKTsKICAgICBib29sIGNoZWNrSW5z
ZWN1cmVDb250ZW50KENhY2hlZFJlc291cmNlOjpUeXBlLCBjb25zdCBLVVJMJikgY29uc3Q7CiAK
ICAgICB2b2lkIGdhcmJhZ2VDb2xsZWN0RG9jdW1lbnRSZXNvdXJjZXNUaW1lckZpcmVkKFRpbWVy
PENhY2hlZFJlc291cmNlTG9hZGVyPiopOwogICAgIHZvaWQgcGVyZm9ybVBvc3RMb2FkQWN0aW9u
cygpOworCisgICAgYm9vbCBjbGllbnREZWZlcnNJbWFnZShjb25zdCBLVVJMJikgY29uc3Q7Cisg
ICAgdm9pZCByZWxvYWRJbWFnZXNJZk5vdERlZmVycmVkKCk7CiAgICAgCiAgICAgSGFzaFNldDxT
dHJpbmc+IG1fdmFsaWRhdGVkVVJMczsKICAgICBtdXRhYmxlIERvY3VtZW50UmVzb3VyY2VNYXAg
bV9kb2N1bWVudFJlc291cmNlczsKQEAgLTE1Miw4ICsxNTksOSBAQCBwcml2YXRlOgogCiAgICAg
VGltZXI8Q2FjaGVkUmVzb3VyY2VMb2FkZXI+IG1fZ2FyYmFnZUNvbGxlY3REb2N1bWVudFJlc291
cmNlc1RpbWVyOwogCi0gICAgLy8gMzAgYml0cyBsZWZ0CisgICAgLy8gMjkgYml0cyBsZWZ0CiAg
ICAgYm9vbCBtX2F1dG9Mb2FkSW1hZ2VzIDogMTsKKyAgICBib29sIG1faW1hZ2VzRW5hYmxlZCA6
IDE7CiAgICAgYm9vbCBtX2FsbG93U3RhbGVSZXNvdXJjZXMgOiAxOwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NldHRpbmdzLmNwcAppbmRleCBkZjQyNTk2NGRlNjExZGI1MzhmOWNiYmNjNzY3ZDI0MmUxMzNl
ZDE3Li4zMDY2NmM1NjE5ODMyMzliOGQ5ODlkMjgzMzEwY2YyZjZiNDZjM2M4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NldHRpbmdzLmNwcApAQCAtNDYsMTAgKzQ2LDEyIEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIHZvaWQgc2V0TG9hZHNJbWFnZXNBdXRv
bWF0aWNhbGx5SW5BbGxGcmFtZXMoUGFnZSogcGFnZSkKK3N0YXRpYyB2b2lkIHNldEltYWdlTG9h
ZGluZ1NldHRpbmdzKFBhZ2UqIHBhZ2UpCiB7Ci0gICAgZm9yIChGcmFtZSogZnJhbWUgPSBwYWdl
LT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0
KCkpCisgICAgZm9yIChGcmFtZSogZnJhbWUgPSBwYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZy
YW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpIHsKKyAgICAgICAgZnJhbWUtPmRv
Y3VtZW50KCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPnNldEltYWdlc0VuYWJsZWQocGFnZS0+
c2V0dGluZ3MoKS0+YXJlSW1hZ2VzRW5hYmxlZCgpKTsKICAgICAgICAgZnJhbWUtPmRvY3VtZW50
KCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPnNldEF1dG9Mb2FkSW1hZ2VzKHBhZ2UtPnNldHRp
bmdzKCktPmxvYWRzSW1hZ2VzQXV0b21hdGljYWxseSgpKTsKKyAgICB9CiB9CiAKIC8vIFNldHMg
dGhlIGVudHJ5IGluIHRoZSBmb250IG1hcCBmb3IgdGhlIGdpdmVuIHNjcmlwdC4gSWYgZmFtaWx5
IGlzIHRoZSBlbXB0eSBzdHJpbmcsIHJlbW92ZXMgdGhlIGVudHJ5IGluc3RlYWQuCkBAIC0yOTEs
NyArMjkzLDcgQEAgU2V0dGluZ3M6OlNldHRpbmdzKFBhZ2UqIHBhZ2UpCiAgICAgLCBtX3dpbmRv
d0ZvY3VzUmVzdHJpY3RlZCh0cnVlKQogICAgICwgbV9kaWFnbm9zdGljTG9nZ2luZ0VuYWJsZWQo
ZmFsc2UpCiAgICAgLCBtX3Njcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoZmFsc2Up
Ci0gICAgLCBtX2xvYWRzSW1hZ2VzQXV0b21hdGljYWxseVRpbWVyKHRoaXMsICZTZXR0aW5nczo6
bG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5VGltZXJGaXJlZCkKKyAgICAsIG1fc2V0SW1hZ2VMb2Fk
aW5nU2V0dGluZ3NUaW1lcih0aGlzLCAmU2V0dGluZ3M6OmltYWdlTG9hZGluZ1NldHRpbmdzVGlt
ZXJGaXJlZCkKICAgICAsIG1faW5jcmVtZW50YWxSZW5kZXJpbmdTdXBwcmVzc2lvblRpbWVvdXRJ
blNlY29uZHMoZGVmYXVsdEluY3JlbWVudGFsUmVuZGVyaW5nU3VwcHJlc3Npb25UaW1lb3V0SW5T
ZWNvbmRzKQogewogICAgIC8vIEEgRnJhbWUgbWF5IG5vdCBoYXZlIGJlZW4gY3JlYXRlZCB5ZXQs
IHNvIHdlIGluaXRpYWxpemUgdGhlIEF0b21pY1N0cmluZwpAQCAtNDY2LDEyICs0NjgsMTIgQEAg
dm9pZCBTZXR0aW5nczo6c2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KGJvb2wgbG9hZHNJbWFn
ZXNBdXRvbWF0aWNhbGx5KQogICAgIC8vIFN0YXJ0aW5nIHRoZXNlIGxvYWRzIHN5bmNocm9ub3Vz
bHkgaXMgbm90IGltcG9ydGFudC4gIEJ5IHB1dHRpbmcgaXQgb24gYSAwLWRlbGF5LCBwcm9wZXJs
eSBjbG9zaW5nIHRoZSBQYWdlIGNhbmNlbHMgdGhlbQogICAgIC8vIGJlZm9yZSB0aGV5IGhhdmUg
YSBjaGFuY2UgdG8gcmVhbGx5IHN0YXJ0LgogICAgIC8vIFNlZSBodHRwOi8vd2Via2l0Lm9yZy9i
LzYwNTcyIGZvciBtb3JlIGRpc2N1c3Npb24uCi0gICAgbV9sb2Fkc0ltYWdlc0F1dG9tYXRpY2Fs
bHlUaW1lci5zdGFydE9uZVNob3QoMCk7CisgICAgbV9zZXRJbWFnZUxvYWRpbmdTZXR0aW5nc1Rp
bWVyLnN0YXJ0T25lU2hvdCgwKTsKIH0KIAotdm9pZCBTZXR0aW5nczo6bG9hZHNJbWFnZXNBdXRv
bWF0aWNhbGx5VGltZXJGaXJlZChUaW1lcjxTZXR0aW5ncz4qKQordm9pZCBTZXR0aW5nczo6aW1h
Z2VMb2FkaW5nU2V0dGluZ3NUaW1lckZpcmVkKFRpbWVyPFNldHRpbmdzPiopCiB7Ci0gICAgc2V0
TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5SW5BbGxGcmFtZXMobV9wYWdlKTsKKyAgICBzZXRJbWFn
ZUxvYWRpbmdTZXR0aW5ncyhtX3BhZ2UpOwogfQogCiB2b2lkIFNldHRpbmdzOjpzZXRMb2Fkc1Np
dGVJY29uc0lnbm9yaW5nSW1hZ2VMb2FkaW5nU2V0dGluZyhib29sIGxvYWRzU2l0ZUljb25zKQpA
QCAtNTE3LDYgKzUxOSw5IEBAIHZvaWQgU2V0dGluZ3M6OnNldEphdmFFbmFibGVkRm9yTG9jYWxG
aWxlcyhib29sIGlzSmF2YUVuYWJsZWRGb3JMb2NhbEZpbGVzKQogdm9pZCBTZXR0aW5nczo6c2V0
SW1hZ2VzRW5hYmxlZChib29sIGFyZUltYWdlc0VuYWJsZWQpCiB7CiAgICAgbV9hcmVJbWFnZXNF
bmFibGVkID0gYXJlSW1hZ2VzRW5hYmxlZDsKKworICAgIC8vIFNlZSBjb21tZW50IGluIHNldExv
YWRzSW1hZ2VzQXV0b21hdGljYWxseS4KKyAgICBtX3NldEltYWdlTG9hZGluZ1NldHRpbmdzVGlt
ZXIuc3RhcnRPbmVTaG90KDApOwogfQogCiB2b2lkIFNldHRpbmdzOjpzZXRNZWRpYUVuYWJsZWQo
Ym9vbCBpc01lZGlhRW5hYmxlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0
dGluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAppbmRleCA4Mzk4NmY2OTcw
YmZkMjhhZTI4ZWZhNmM4OWQxZmFkNTQ5NTY4YjBhLi5jMThkZmQ3MzA2YjU5NTUyZmYzNDJiZDE3
YzBmYzI1Y2E1N2Y3MzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCkBAIC04MTgsOCArODE4LDgg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIGJvb2wgbV9zY3JvbGxpbmdQZXJmb3Jt
YW5jZUxvZ2dpbmdFbmFibGVkIDogMTsKIAotICAgICAgICBUaW1lcjxTZXR0aW5ncz4gbV9sb2Fk
c0ltYWdlc0F1dG9tYXRpY2FsbHlUaW1lcjsKLSAgICAgICAgdm9pZCBsb2Fkc0ltYWdlc0F1dG9t
YXRpY2FsbHlUaW1lckZpcmVkKFRpbWVyPFNldHRpbmdzPiopOworICAgICAgICBUaW1lcjxTZXR0
aW5ncz4gbV9zZXRJbWFnZUxvYWRpbmdTZXR0aW5nc1RpbWVyOworICAgICAgICB2b2lkIGltYWdl
TG9hZGluZ1NldHRpbmdzVGltZXJGaXJlZChUaW1lcjxTZXR0aW5ncz4qKTsKICAgICAgICAgCiAg
ICAgICAgIGRvdWJsZSBtX2luY3JlbWVudGFsUmVuZGVyaW5nU3VwcHJlc3Npb25UaW1lb3V0SW5T
ZWNvbmRzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0
dGluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcApp
bmRleCBiZDIzNzY2MDdkNzA0MWYxNzcyYzE2MWMyMTI1OWM1NWU0MWMzMDI4Li5iYjllZWQ2YjEz
NTZlMTE4YTE1NjJmZjRkMmRjMjQwYzM1ZjA1YjY3IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAKQEAgLTEwMCw2ICsxMDAsNyBAQCBJbnRlcm5hbFNldHRp
bmdzOjpCYWNrdXA6OkJhY2t1cChQYWdlKiBwYWdlLCBTZXR0aW5ncyogc2V0dGluZ3MpCiAgICAg
LCBtX2NhblN0YXJ0TWVkaWEocGFnZS0+Y2FuU3RhcnRNZWRpYSgpKQogICAgICwgbV9vcmlnaW5h
bE1vY2tTY3JvbGxiYXJzRW5hYmxlZChzZXR0aW5ncy0+bW9ja1Njcm9sbGJhcnNFbmFibGVkKCkp
CiAgICAgLCBtX2xhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVkKFJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OmxhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVkKCkp
CisgICAgLCBtX2ltYWdlc0VuYWJsZWQoc2V0dGluZ3MtPmFyZUltYWdlc0VuYWJsZWQoKSkKIHsK
IH0KIApAQCAtMTM1LDYgKzEzNiw3IEBAIHZvaWQgSW50ZXJuYWxTZXR0aW5nczo6QmFja3VwOjpy
ZXN0b3JlVG8oUGFnZSogcGFnZSwgU2V0dGluZ3MqIHNldHRpbmdzKQogICAgIHBhZ2UtPnNldENh
blN0YXJ0TWVkaWEobV9jYW5TdGFydE1lZGlhKTsKICAgICBzZXR0aW5ncy0+c2V0TW9ja1Njcm9s
bGJhcnNFbmFibGVkKG1fb3JpZ2luYWxNb2NrU2Nyb2xsYmFyc0VuYWJsZWQpOwogICAgIFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNldExhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFi
bGVkKG1fbGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQpOworICAgIHNldHRp
bmdzLT5zZXRJbWFnZXNFbmFibGVkKG1faW1hZ2VzRW5hYmxlZCk7CiB9CiAKIEludGVybmFsU2V0
dGluZ3MqIEludGVybmFsU2V0dGluZ3M6OmZyb20oUGFnZSogcGFnZSkKQEAgLTY1OSw0ICs2NjEs
MTAgQEAgdm9pZCBJbnRlcm5hbFNldHRpbmdzOjpzZXRMYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29u
dHJvbFVJRW5hYmxlZChib29sIGVuYWJsZWQpCiAgICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
c2V0TGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQoZW5hYmxlZCk7CiB9CiAK
K3ZvaWQgSW50ZXJuYWxTZXR0aW5nczo6c2V0SW1hZ2VzRW5hYmxlZChib29sIGVuYWJsZWQsIEV4
Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIEludGVybmFsU2V0dGluZ3NHdWFyZEZvclNldHRpbmdz
KCk7CisgICAgc2V0dGluZ3MoKS0+c2V0SW1hZ2VzRW5hYmxlZChlbmFibGVkKTsKK30KKwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmggYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaAppbmRleCAyYzA3M2RmNmVl
ZGE0ZjA2ZTNlZWEwYWIzZDFhNDdjZjQ0NjkxOTVhLi5iZTg4MTBkZTY2ODJiYzg3ZDQ0NzZiZjkz
ZDlhMGQ4MDI5YWUwOTA4IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFsU2V0dGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGlu
Z3MuaApAQCAtODIsNiArODIsNyBAQCBwdWJsaWM6CiAgICAgICAgIGJvb2wgbV9jYW5TdGFydE1l
ZGlhOwogICAgICAgICBib29sIG1fb3JpZ2luYWxNb2NrU2Nyb2xsYmFyc0VuYWJsZWQ7CiAgICAg
ICAgIGJvb2wgbV9sYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJRW5hYmxlZDsKKyAgICAg
ICAgYm9vbCBtX2ltYWdlc0VuYWJsZWQ7CiAgICAgfTsKIAogICAgIHR5cGVkZWYgUmVmQ291bnRl
ZFN1cHBsZW1lbnQ8UGFnZSwgSW50ZXJuYWxTZXR0aW5ncz4gU3VwZXJUeXBlOwpAQCAtMTQ3LDYg
KzE0OCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE1lbW9yeUluZm9FbmFibGVkKGJvb2wsIEV4
Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShjb25zdCBT
dHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBzZXRMYW5nQXR0cmlidXRlQXdhcmVG
b3JtQ29udHJvbFVJRW5hYmxlZChib29sKTsKKyAgICB2b2lkIHNldEltYWdlc0VuYWJsZWQoYm9v
bCBlbmFibGVkLCBFeGNlcHRpb25Db2RlJik7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgSW50
ZXJuYWxTZXR0aW5ncyhQYWdlKik7CiAgICAgdmlydHVhbCB2b2lkIGhvc3REZXN0cm95ZWQoKSBP
VkVSUklERSB7IG1fcGFnZSA9IDA7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxTZXR0aW5ncy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
U2V0dGluZ3MuaWRsCmluZGV4IDk2NzNkMmYxYzI1ZDFiNGMxMmM1OGQyOTRjYzllN2I1YjIzMjJl
YWYuLmQ4YThhYWY4YmJhODE1ODIwNGM5NTY5NGIxNGI4MzQzMWNjNjI4NTMgMTAwNzU1Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5pZGwKKysrIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbApAQCAtODIsNiArODIsNyBAQCBt
b2R1bGUgd2luZG93IHsKICNlbmRpZgogICAgICAgICB2b2lkIHNldE1lbW9yeUluZm9FbmFibGVk
KGluIGJvb2xlYW4gZW5hYmxlZCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIHZvaWQg
c2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KGluIERPTVN0cmluZyBwb2xpY3kpIHJhaXNlcyhET01F
eGNlcHRpb24pOworICAgICAgICB2b2lkIHNldEltYWdlc0VuYWJsZWQoaW4gYm9vbGVhbiBlbmFi
bGVkKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5k
ZWYKaW5kZXggYTliMDBkYjM5NzMzMzkwMmMxNWUzNGZkNmJiOTVlYzY4ZTdlZDEwZS4uNmZkMWQz
MTk2MDRmOThiN2FiYTlhZDRhOWQ2MjZkZjdmMzgzYTgzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvd2luL1dlYktpdDIuZGVmCisrKyBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRl
ZgpAQCAtMjIyLDYgKzIyMiw3IEBAIEVYUE9SVFMKICAgICAgICAgP3NldERPTUV4Y2VwdGlvbkBX
ZWJDb3JlQEBZQVhQQVZFeGVjU3RhdGVASlNDQEBIQFoKICAgICAgICAgP3NldEZhbnRhc3lGb250
RmFtaWx5QFNldHRpbmdzQFdlYkNvcmVAQFFBRVhBQlZBdG9taWNTdHJpbmdAV1RGQEBXNFVTY3Jp
cHRDb2RlQEBAWgogICAgICAgICA/c2V0Rml4ZWRGb250RmFtaWx5QFNldHRpbmdzQFdlYkNvcmVA
QFFBRVhBQlZBdG9taWNTdHJpbmdAV1RGQEBXNFVTY3JpcHRDb2RlQEBAWgorICAgICAgICA/c2V0
SW1hZ2VzRW5hYmxlZEBTZXR0aW5nc0BXZWJDb3JlQEBRQUVYX05AWgogICAgICAgICA/c2V0TW9j
a1Njcm9sbGJhcnNFbmFibGVkQFNldHRpbmdzQFdlYkNvcmVAQFNBWF9OQFoKICAgICAgICAgP21v
Y2tTY3JvbGxiYXJzRW5hYmxlZEBTZXR0aW5nc0BXZWJDb3JlQEBTQV9OWFoKICAgICAgICAgP3Nl
dFVzZXNPdmVybGF5U2Nyb2xsYmFyc0BTZXR0aW5nc0BXZWJDb3JlQEBTQVhfTkBaCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyIGIvU291cmNlL2F1dG90b29scy9z
eW1ib2xzLmZpbHRlcgppbmRleCBkNWQ1NDEwNmE2YjFiMzJmN2IyMzQwY2Y5NzYyNmJhMzY4Nzll
MzljLi42MjMwNWM0ZmFkZGM3YmFlZjk3ZjMzMjFhYTMyMDViZWI0N2FkODM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCisrKyBiL1NvdXJjZS9hdXRvdG9vbHMv
c3ltYm9scy5maWx0ZXIKQEAgLTE0NSw2ICsxNDUsNyBAQCBfWk43V2ViQ29yZTE0U2Nyb2xsYWJs
ZUFyZWEyOHNldFNjcm9sbE9mZnNldEZyb21JbnRlcm5hbHNFUktOU184SW50UG9pbnRFOwogX1pO
N1dlYkNvcmUxMFNjcm9sbFZpZXcyM3NldFNjcm9sbGJhcnNTdXBwcmVzc2VkRWJiOwogX1pON1dl
YkNvcmUxMFNjcm9sbFZpZXcyMXNldERlbGVnYXRlc1Njcm9sbGluZ0ViOwogX1pON1dlYkNvcmU0
Tm9kZTE0cmVtb3ZlZExhc3RSZWZFdjsKK19aTjdXZWJDb3JlOFNldHRpbmdzMTZzZXRJbWFnZXNF
bmFibGVkRWI7CiBfWk43V2ViQ29yZThTZXR0aW5nczE4c2V0Rml4ZWRGb250RmFtaWx5RVJLTjNX
VEYxMkF0b21pY1N0cmluZ0UxMVVTY3JpcHRDb2RlOwogX1pON1dlYkNvcmU4U2V0dGluZ3MxOHNl
dFNlcmlmRm9udEZhbWlseUVSS04zV1RGMTJBdG9taWNTdHJpbmdFMTFVU2NyaXB0Q29kZTsKIF9a
TjdXZWJDb3JlOFNldHRpbmdzMjBzZXRDdXJzaXZlRm9udEZhbWlseUVSS04zV1RGMTJBdG9taWNT
dHJpbmdFMTFVU2NyaXB0Q29kZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2YTFhN2EwZWEyNTRlMzhiNTI0MWMxOTI1NTBk
MzQ1Nzg3YzBjNDg3Li45ZDQ3YjU2MzlkN2Q3MGYyOTdkNzAyOWNmYzE5M2RiZjAzNTBhNzVmIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMTItMDktMjEgIEJvIExpdSAgPGJvbGl1QGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZWxhbmQgIkFkZCBpbi1wbGFjZSByZWxvYWQgYmVoYXZpb3IgdG8g
SW1hZ2VzRW5hYmxlZCBzZXR0aW5nIiB3aXRoIG9wdGltaXphdGlvbnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3MDU1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVsYW5kaW5nIDEyODc4MCwgMTI4Njc2
LCAxMjg2NDUuIFdhcyByZXZlcnRlZCBpbiAxMjg5MTQgZHVlIHRvCisgICAgICAgIHBlcmZvcm1h
bmNlIHJlZ3Jlc3Npb24gaW4gQ2hyb21pdW0uCisKKyAgICAgICAgTmV3IGNoYW5nZXMgaW4gYWRk
aXRpb24gdG8gcHJldmlvdXNseSByZXZlcnRlZCBwYXRjaGVzOgorCisgICAgICAgIFJlZmFjdG9y
ZWQgQ2FjaGVkUmVzb3VyY2U6OnJlcXVlc3RSZXNvdXJjZSwgbG9hZFJlc291cmNlLCBhbmQKKyAg
ICAgICAgcmV2YWxpZGF0ZVJlc291cmNlLiBNb3ZlZCBDYWNoZWRSZXNvdXJjZTo6bG9hZCBtZXRo
b2QgdG8gZW5kIG9mCisgICAgICAgIHJlcXVlc3RSZXNvdXJjZSBzbyB0aGVyZSBpcyBvbmUgcGxh
Y2Ugd2hlcmUgbG9hZCBpcyBjYWxsZWQgZm9yIGFsbAorICAgICAgICByZXNvdXJjZXMuCisKKyAg
ICAgICAgQWRkZWQgYSBib29sIHBhcmFtZXRlciBmb3IgcmVxdWVzdFJlc291cmNlIGFuZAorICAg
ICAgICBkZXRlcm1pbmVSZXZhbGlkYXRpb25Qb2xpY3kgc28gdGhhdCBGcmFtZUxvYWRlckNsaWVu
dDo6YWxsb3dJbWFnZSBjYWxsCisgICAgICAgIGRvIG5vdCBuZWVkIHRvIGJlIGNhbGxlZCBtdWx0
aXBsZSB0aW1lcy4KKworICAgICAgICBSZW1vdmVkIENhY2hlZEltYWdlOjpsb2FkIGNhbGwgaW4g
cmVxdWVzdEltYWdlIHNvIGl0IGlzIG5vdCBjYWxsZWQKKyAgICAgICAgdHdpY2UuCisKKyAgICAg
ICAgUmVtb3ZlZCB1bm5lY2Vzc2FyeSBGcmFtZS5oIGluY2x1ZGVzIGluIENhY2hlZFJlc291cmNl
IGFuZAorICAgICAgICBDYWNoZWRJbWFnZS4KKworICAgICAgICBSZW1vdmVkIGRlYWQgbG9hZCgp
IG1ldGhvZCBkZWNsYXJhdGlvbiBpbiBDYWNoZWRJbWFnZS4KKworICAgICAgICBVcGRhdGVkIHRl
eHQgZXhwZWN0YXRpb24gZm9yIHR3byBpbWFnZS1wZXJtaXNzaW9ucyB0ZXN0cyB0byByZWZsZWN0
CisgICAgICAgIHRoZSByZW1vdmVkIGNhbGxzIHRvIGFsbG93SW1hZ2UuCisKKyAgICAgICAgKiBm
YXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0LWFsbG93cy1jYWNoZWQtaW1hZ2UtbG9hZC1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbG9hZGVyL2Rpc3BsYXktaW1hZ2Ut
dW5zZXQtYWxsb3dzLWNhY2hlZC1pbWFnZS1sb2FkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvbG9hZGVyL2Rpc3BsYXktaW1hZ2UtdW5zZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1jYW4tcmVs
b2FkLWluLXBsYWNlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9sb2FkZXIv
ZGlzcGxheS1pbWFnZS11bnNldC1jYW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxh
Y2UuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9sb2FkZXIvaW1hZ2VzLWVuYWJsZWQtdW5z
ZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1jYW4tcmVsb2FkLWluLXBsYWNlLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZmFzdC9sb2FkZXIvaW1hZ2VzLWVuYWJsZWQtdW5zZXQtY2FuLWJs
b2NrLWltYWdlLWFuZC1jYW4tcmVsb2FkLWluLXBsYWNlLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvbG9hZGVyL3Jlc291cmNlcy9pbWFnZTEuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9sb2FkZXIvcmVzb3VyY2VzL2ltYWdlMi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9jaHJvbWl1bS9wZXJtaXNzaW9uY2xpZW50L2ltYWdlLXBlcm1pc3Npb25zLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9wZXJtaXNzaW9uY2xpZW50L2ltYWdlLXBl
cm1pc3Npb25zLmh0bWw6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vcGVybWlzc2lvbmNs
aWVudC9yZXNvdXJjZXMvaW1hZ2UuaHRtbDoKKyAgICAgICAgKiBwbGF0Zm9ybS93azIvU2tpcHBl
ZDoKKwogMjAxMi0wOS0yMCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4K
IAogICAgICAgICBtZWRpYS90cmFjay90cmFjay1jdWUtcmVuZGVyaW5nLWlubmVyLXRpbWVzdGFt
cHMuaHRtbCB0aW1lcyBvdXQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9k
aXNwbGF5LWltYWdlLXVuc2V0LWFsbG93cy1jYWNoZWQtaW1hZ2UtbG9hZC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0LWFsbG93cy1jYWNo
ZWQtaW1hZ2UtbG9hZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmUxNWFhYzBjNTE1ZTgwNTZh
YjNjY2M5NTE5MDM3MzMyOGY4MzdmOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvbG9hZGVyL2Rpc3BsYXktaW1hZ2UtdW5zZXQtYWxsb3dzLWNhY2hlZC1pbWFnZS1sb2FkLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDIgQEAKK1Rlc3QgdGhhdCBXZWJLaXREaXNwbGF5SW1hZ2Vz
S2V5IHVuc2V0IGRvZXMgbm90IGJsb2NrIGltYWdlIGluIGNhY2hlLgorUEFTUwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZGlzcGxheS1pbWFnZS11bnNldC1hbGxvd3MtY2Fj
aGVkLWltYWdlLWxvYWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2Rpc3BsYXktaW1h
Z2UtdW5zZXQtYWxsb3dzLWNhY2hlZC1pbWFnZS1sb2FkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDhkNzAz
ZDUwNGVhYTQ1YjNmNGVmZmVkMGI0N2I0NzdlNDgxOGZkNwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvbG9hZGVyL2Rpc3BsYXktaW1hZ2UtdW5zZXQtYWxsb3dzLWNhY2hlZC1p
bWFnZS1sb2FkLmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+
CisvLyBPcGVucyB0d28gd2luZG93cyBjb250YWluaW5nIHRoZSBzYW1lIGltYWdlLiBGaXJzdCB3
aW5kb3cgd2lsbCBwb3B1bGF0ZSB0aGUgY2FjaGUgd2l0aAorLy8gaW1hZ2UuIFRoZSBzZWNvbmQg
d2luZG93IGlzIG9wZW5lZCB3aXRoIFdlYktpdERpc3BsYXlJbWFnZXNLZXkgdW5zZXQsIGJ1dCBp
bWFnZSBzaG91bGQKKy8vIHN0aWxsIGxvYWQgc2luY2UgaXQgaXMgaW4gY2FjaGUuCitmdW5jdGlv
biBydW5UZXN0KCkKK3sKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgp
OworICAgICAgICB0ZXN0UnVubmVyLnNldENhbk9wZW5XaW5kb3dzKCk7CisgICAgICAgIHRlc3RS
dW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRVc2VzUGFnZUNhY2hlUHJlZmVyZW5jZUtl
eSIsIDEpOworCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5l
ckhUTUwgPSAnRkFJTFVSRTogaW1hZ2UxLmh0bWwgbm90IGxvYWRlZCc7CisgICAgICAgIHdpbmRv
dy5vcGVuKCJyZXNvdXJjZXMvaW1hZ2UxLmh0bWwiLCAiX2JsYW5rIik7CisgICAgfQorfQorCitm
dW5jdGlvbiBpbWFnZTFMb2FkZWQoKQoreworICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJl
bmNlKCdXZWJLaXREaXNwbGF5SW1hZ2VzS2V5JywgMCk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9ICdGQUlMVVJFOiBpbWFnZTIuaHRtbCBub3QgbG9h
ZGVkJzsKKyAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHt3aW5kb3cub3BlbigicmVz
b3VyY2VzL2ltYWdlMi5odG1sIiwgIl9ibGFuayIpO30sIDApOworfQorCitmdW5jdGlvbiBpbWFn
ZTJMb2FkZWQoKQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5l
ckhUTUwgPSAnUEFTUyc7CisJCXRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQorPC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CitUZXN0IHRoYXQgV2ViS2l0RGlz
cGxheUltYWdlc0tleSB1bnNldCBkb2VzIG5vdCBibG9jayBpbWFnZSBpbiBjYWNoZS4KKzxkaXYg
aWQ9InJlc3VsdCI+RkFJTFVSRTogVGVzdCBzY3JpcHQgZGlkbid0IHJ1bi48L2Rpdj4KKzwvYm9k
eT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZGlzcGxh
eS1pbWFnZS11bnNldC1jYW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZGlzcGxheS1pbWFnZS11bnNldC1j
YW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjdhOWVmNTM0NzliOGI1YWE0YjQ2NGY2NTdmMmFjZjdlNWJiNDQ3ZDIKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0LWNh
bi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwzIEBACitUZXN0IHRoYXQgRGlzcGxheUltYWdlcyBkaXNhYmxlZCBjYW4gYmxvY2sgaHR0
cCBpbWFnZSBhbmQgY2FuIGJlIHJlbG9hZGVkIGluLXBsYWNlIHdoZW4gdG9nZ2xlZC4KK1NVQ0NF
U1MKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZGlzcGxheS1pbWFnZS11
bnNldC1jYW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvbG9hZGVyL2Rpc3BsYXktaW1hZ2UtdW5zZXQtY2FuLWJsb2NrLWltYWdlLWFu
ZC1jYW4tcmVsb2FkLWluLXBsYWNlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzEyZjUwOWQ1NDNiN2E1YTdk
NDdkMTkxYjc4ODY2M2U2ZDI2MTk3NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvbG9hZGVyL2Rpc3BsYXktaW1hZ2UtdW5zZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1jYW4tcmVs
b2FkLWluLXBsYWNlLmh0bWwKQEAgLTAsMCArMSw0NyBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQ+CisvLyBTZXR0aW5nIFdlYktpdERpc3BsYXlJbWFnZXNLZXkgaXMgYXN5bmNocm9ub3VzLCBz
byB1c2luZyBxdWV1ZVJlbG9hZCBhbmQgc2V0SW50ZXJ2YWwgdG8gY2hlY2sgd2hlbiB0aGUgc2V0
dGluZyBhY3R1YWxseSB0YWtlIGVmZmVjdC4KKwordmFyIGludGVydmFsSWQ7Cit2YXIgaW1hZ2VP
bmxvYWRGaXJlZCA9IDA7CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOworICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0SW1hZ2Vz
RW5hYmxlZCh0cnVlKTsKKyAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgnV2ViS2l0
RGlzcGxheUltYWdlc0tleScsIDApOworICAgIHRlc3RSdW5uZXIucXVldWVSZWxvYWQoKTsKK30K
KworZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgdmFyIGltYWdlID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2ltYWdlJyk7CisgICAgaWYgKGltYWdlLm5hdHVyYWxIZWlnaHQgIT0gMCB8fCBp
bWFnZS5uYXR1cmFsV2lkdGggIT0gMCB8fCBpbWFnZU9ubG9hZEZpcmVkICE9IDApIHsKKyAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9ICdGQUlMVVJF
OiBJbWFnZSBzaG91bGQgbm90IGJlIGxvYWRlZCB3aGVuIERpc3BsYXlJbWFnZSBpcyB1bnNldCc7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVy
ZW5jZSgnV2ViS2l0RGlzcGxheUltYWdlc0tleScsIDEpOworICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSAnRkFJTFVSRTogSW1hZ2Ugc2hvdWxkIHJlbG9h
ZCBpbi1wbGFjZSB3aGVuIERpc3BhbHlJbWFnZSBpcyBjaGFuZ2VzIGZyb20gdW5zZXQgdG8gc2V0
JzsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpbnRlcnZhbElkID0gd2lu
ZG93LnNldEludGVydmFsKHJ1blRlc3RSZXN0LCAxMCk7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3RS
ZXN0KCkKK3sKKyAgICB2YXIgaW1hZ2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW1hZ2Un
KTsKKyAgICBpZiAoaW1hZ2UubmF0dXJhbEhlaWdodCA9PSAzMyAmJiBpbWFnZS5uYXR1cmFsV2lk
dGggPT0gMzcgJiYgaW1hZ2VPbmxvYWRGaXJlZCA9PSAxKSB7CisgICAgICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSAnU1VDQ0VTUyc7CisgICAgICAgIHdp
bmRvdy5jbGVhckludGVydmFsKGludGVydmFsSWQpOworICAgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKKyAgICB9Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVu
VGVzdCgpIj4KKyAgVGVzdCB0aGF0IERpc3BsYXlJbWFnZXMgZGlzYWJsZWQgY2FuIGJsb2NrIGh0
dHAgaW1hZ2UgYW5kIGNhbiBiZSByZWxvYWRlZCBpbi1wbGFjZSB3aGVuIHRvZ2dsZWQuCisgIDxk
aXYgaWQ9InJlc3VsdCI+RkFJTFVSRTogVGVzdCBzY3JpcHQgZGlkbid0IHJ1bi48L2Rpdj4KKyAg
PGltZyBpZD0iaW1hZ2UiIHNyYz0iLi4vaW1hZ2VzL3Jlc291cmNlcy9vdmFsLnBuZyIgb25sb2Fk
PSJpbWFnZU9ubG9hZEZpcmVkPTE7Ij4KKzwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvaW1hZ2VzLWVuYWJsZWQtdW5zZXQtY2FuLWJsb2NrLWlt
YWdlLWFuZC1jYW4tcmVsb2FkLWluLXBsYWNlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zh
c3QvbG9hZGVyL2ltYWdlcy1lbmFibGVkLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJl
bG9hZC1pbi1wbGFjZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTUxZDQ2MDFjY2MzY2ExOGQ4
Y2ZkNWE5Njk3ODExMWZmYjBjNjAyMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvbG9hZGVyL2ltYWdlcy1lbmFibGVkLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJl
bG9hZC1pbi1wbGFjZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACitUZXN0IHRoYXQgRW5h
YmxlSW1hZ2VzIHVuc2V0IGNhbiBibG9jayBpbWFnZSBhbmQgY2FuIGJlIHJlbG9hZGVkIGluLXBs
YWNlIHdoZW4gdG9nZ2xlZC4KK1NVQ0NFU1MKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9sb2FkZXIvaW1hZ2VzLWVuYWJsZWQtdW5zZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1jYW4tcmVs
b2FkLWluLXBsYWNlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9pbWFnZXMtZW5hYmxl
ZC11bnNldC1jYW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zZjQ4ZTYyOGRkZDYwZDViYWZhMmIxNGYwODM2MGI0YjZlNmE2NjNjCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvaW1hZ2VzLWVuYWJsZWQtdW5zZXQt
Y2FuLWJsb2NrLWltYWdlLWFuZC1jYW4tcmVsb2FkLWluLXBsYWNlLmh0bWwKQEAgLTAsMCArMSw0
NyBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CisvLyBTZXR0aW5nIEltYWdlc0VuYWJsZWQg
aXMgYXN5bmNocm9ub3VzLCBzbyB1c2luZyBxdWV1ZVJlbG9hZCBhbmQgc2V0SW50ZXJ2YWwgdG8g
Y2hlY2sgd2hlbiB0aGUgc2V0dGluZyBhY3R1YWxseSB0YWtlIGVmZmVjdC4KKwordmFyIGludGVy
dmFsSWQ7Cit2YXIgaW1hZ2VPbmxvYWRGaXJlZCA9IDA7CisKK2lmICh3aW5kb3cudGVzdFJ1bm5l
cikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIub3ZlcnJp
ZGVQcmVmZXJlbmNlKCdXZWJLaXREaXNwbGF5SW1hZ2VzS2V5JywgMSk7CisgICAgd2luZG93Lmlu
dGVybmFscy5zZXR0aW5ncy5zZXRJbWFnZXNFbmFibGVkKGZhbHNlKTsKKyAgICB0ZXN0UnVubmVy
LnF1ZXVlUmVsb2FkKCk7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIHZhciBpbWFn
ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbWFnZScpOworICAgIGlmIChpbWFnZS5uYXR1
cmFsSGVpZ2h0ICE9IDAgfHwgaW1hZ2UubmF0dXJhbFdpZHRoICE9IDAgfHwgaW1hZ2VPbmxvYWRG
aXJlZCAhPSAwKSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5p
bm5lckhUTUwgPSAnRkFJTFVSRTogSW1hZ2Ugc2hvdWxkIG5vdCBiZSBsb2FkZWQgd2hlbiBJbWFn
ZXNFbmFibGVkIGlzIHVuc2V0JzsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHdpbmRv
dy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0SW1hZ2VzRW5hYmxlZCh0cnVlKTsKKyAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1MID0gJ0ZBSUxVUkU6IEltYWdlIHNo
b3VsZCByZWxvYWQgaW4tcGxhY2Ugd2hlbiBJbWFnZXNFbmFibGVkIGlzIGNoYW5nZXMgZnJvbSB1
bnNldCB0byBzZXQnOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIGludGVy
dmFsSWQgPSB3aW5kb3cuc2V0SW50ZXJ2YWwocnVuVGVzdFJlc3QsIDEwKTsKK30KKworZnVuY3Rp
b24gcnVuVGVzdFJlc3QoKQoreworICAgIHZhciBpbWFnZSA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdpbWFnZScpOworICAgIGlmIChpbWFnZS5uYXR1cmFsSGVpZ2h0ID09IDMzICYmIGltYWdl
Lm5hdHVyYWxXaWR0aCA9PSAzNyB8fCBpbWFnZU9ubG9hZEZpcmVkID09IDEpIHsKKyAgICAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9ICdTVUNDRVNTJzsK
KyAgICAgICAgd2luZG93LmNsZWFySW50ZXJ2YWwoaW50ZXJ2YWxJZCk7CisgICAgICAgIHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOworICAgIH0KK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkg
b25sb2FkPSJydW5UZXN0KCkiPgorICBUZXN0IHRoYXQgRW5hYmxlSW1hZ2VzIHVuc2V0IGNhbiBi
bG9jayBpbWFnZSBhbmQgY2FuIGJlIHJlbG9hZGVkIGluLXBsYWNlIHdoZW4gdG9nZ2xlZC4KKyAg
PGRpdiBpZD0icmVzdWx0Ij5GQUlMVVJFOiBUZXN0IHNjcmlwdCBkaWRuJ3QgcnVuLjwvZGl2Pgor
ICA8aW1nIGlkPSJpbWFnZSIgc3JjPSIuLi9pbWFnZXMvcmVzb3VyY2VzL292YWwucG5nIiBvbmxv
YWQ9ImltYWdlT25sb2FkRmlyZWQ9MTsiPgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9yZXNvdXJjZXMvaW1hZ2UxLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2xvYWRlci9yZXNvdXJjZXMvaW1hZ2UxLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2Q2OWRj
M2MyYTBkNmExNWUwODk2Mzc5MTAzMjU0ZjVlYWEzNGRjMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvbG9hZGVyL3Jlc291cmNlcy9pbWFnZTEuaHRtbApAQCAtMCwwICsxLDUg
QEAKKzxodG1sPgorPGJvZHk+CisgIDxpbWcgc3JjPSIuLi8uLi9pbWFnZXMvcmVzb3VyY2VzL292
YWwucG5nIiBvbmxvYWQ9IndpbmRvdy5vcGVuZXIuaW1hZ2UxTG9hZGVkKCk7Ij4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3Jlc291cmNlcy9p
bWFnZTIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3Jlc291cmNlcy9pbWFnZTIuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jMDM3ZmZmMGNlNjU2Nzc3Y2MwMmU4YWU2Y2M4MWNmNmVhNDQyYWFjCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvcmVzb3VyY2VzL2ltYWdl
Mi5odG1sCkBAIC0wLDAgKzEsNSBAQAorPGh0bWw+Cis8Ym9keT4KKyAgPGltZyBzcmM9Ii4uLy4u
L2ltYWdlcy9yZXNvdXJjZXMvb3ZhbC5wbmciIG9ubG9hZD0id2luZG93Lm9wZW5lci5pbWFnZTJM
b2FkZWQoKTsiPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vcGVybWlzc2lvbmNsaWVudC9pbWFnZS1wZXJtaXNzaW9ucy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9wZXJtaXNzaW9uY2xpZW50L2lt
YWdlLXBlcm1pc3Npb25zLWV4cGVjdGVkLnR4dAppbmRleCA2MGU3NmE1MjNhZGYyNjQ0NjUzMzU4
Mjk2ZjdjYjllYjQzOGQzZjlmLi5lNjA3YTEwMTMxMTI4M2I3YTRmYzA1NzliYzZhYjVhMmZlMjQx
MjEyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9wZXJtaXNzaW9u
Y2xpZW50L2ltYWdlLXBlcm1pc3Npb25zLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS9wZXJtaXNzaW9uY2xpZW50L2ltYWdlLXBlcm1pc3Npb25zLWV4cGVj
dGVkLnR4dApAQCAtNSw2ICs1LDQgQEAgUEVSTUlTU0lPTiBDTElFTlQ6IGFsbG93SW1hZ2UoKGZp
bGUgdGVzdCk6cGxhdGZvcm0vY2hyb21pdW0vcGVybWlzc2lvbmNsaWVudC9yZXMKIAogCiBQQVNT
OiBmaXJzdCBpbWFnZSBsb2FkZWQKLVBBU1M6IGVycm9yIGV2ZW50IGZvciBub3QgY2FjaGVkIGlt
YWdlCi1QQVNTOiBlcnJvciBldmVudCBmb3IgaW1hZ2UgZnJvbSBjYWNoZQogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9wZXJtaXNzaW9uY2xpZW50L2ltYWdlLXBl
cm1pc3Npb25zLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9wZXJtaXNzaW9u
Y2xpZW50L2ltYWdlLXBlcm1pc3Npb25zLmh0bWwKaW5kZXggN2I1ZTJjNTc1Yzk4OTc0YWMwOGY4
N2U5ZjhjMTIwNzEwYWRiZmVmMC4uZjU3YTNiNzA3MDQzMzA5YzJmYWIyZmY5MmMzZTllMmM2ZTQx
OTY0NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vcGVybWlzc2lv
bmNsaWVudC9pbWFnZS1wZXJtaXNzaW9ucy5odG1sCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL3Blcm1pc3Npb25jbGllbnQvaW1hZ2UtcGVybWlzc2lvbnMuaHRtbApAQCAtMSw2
ICsxLDkgQEAKIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0PgorLy8gQmxvY2tlZCBpbWFnZXMgY2Fu
IGJlIHJlbG9hZGVkLCBzbyBuZWl0aGVyIG9ubG9hZCBub3Igb25lcnJvciBpcyBjYWxsZWQuCisv
LyBPbmx5IGNoZWNrIGhlcmUgdGhhdCBvbmxvYWQgaXMgbmV2ZXIgY2FsbGVkIHdoZW4gaW1hZ2Ug
aXMgYmxvY2tlZC4KKwogaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CiAgICAgdGVzdFJ1bm5lci5kdW1wUGVybWlzc2lvbkNsaWVudENhbGxiYWNr
cygpOwpAQCAtMjEsMTQgKzI0LDEyIEBAIGZ1bmN0aW9uIGxvYWRlZCgpCiAKICAgICAvLyBMb2Fk
IGFuIGltYWdlIG5vdCBpbiBjYWNoZS4KICAgICB2YXIgaW1nID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnaW1nJyk7Ci0gICAgaW1nLm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7IGxvZygiUEFTUzog
ZXJyb3IgZXZlbnQgZm9yIG5vdCBjYWNoZWQgaW1hZ2UiKTsgfQogICAgIGltZy5vbmxvYWQgPSBm
dW5jdGlvbiAoKSB7IGxvZygiRkFJTDogbm90IGNhY2hlZCBpbWFnZSBsb2FkZWQiKTsgfQogICAg
IGltZy5zcmMgPSAicmVzb3VyY2VzL2Jvc3Rvbi5naWY/bm9jYWNoZSI7CiAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImltZyIpLmFwcGVuZENoaWxkKGltZyk7CiAKICAgICAvLyBMb2FkIGFu
IGltYWdlIGZyb20gY2FjaGUuCiAgICAgdmFyIGltZ0Zyb21DYWNoZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2ltZycpOwotICAgIGltZ0Zyb21DYWNoZS5vbmVycm9yID0gZnVuY3Rpb24gKCkg
eyBsb2coIlBBU1M6IGVycm9yIGV2ZW50IGZvciBpbWFnZSBmcm9tIGNhY2hlIik7IH0KICAgICBp
bWdGcm9tQ2FjaGUub25sb2FkID0gZnVuY3Rpb24gKCkgeyBsb2coIkZBSUw6IGltYWdlIGZyb20g
Y2FjaGUgbG9hZGVkIik7IH0KICAgICBpbWdGcm9tQ2FjaGUuc3JjID0gInJlc291cmNlcy9ib3N0
b24uZ2lmIjsKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW1nIikuYXBwZW5kQ2hpbGQo
aW1nRnJvbUNhY2hlKTsKQEAgLTQxLDcgKzQyLDcgQEAgZnVuY3Rpb24gbG9hZGVkKCkKIDwvc2Ny
aXB0PgogPC9oZWFkPgogPGJvZHk+Ci08aW1nIHNyYz0icmVzb3VyY2VzL2Jvc3Rvbi5naWYiIG9u
bG9hZD0ibG9hZGVkKCkiIG9uZXJyb3I9ImxvZygnRkFJTDogZXJyb3IgZXZlbnQgZm9yIGZpcnN0
IGltYWdlJykiPgorPGltZyBzcmM9InJlc291cmNlcy9ib3N0b24uZ2lmIiBvbmxvYWQ9ImxvYWRl
ZCgpIj4KIDxkaXYgaWQ9ImltZyI+PC9kaXY+CiA8ZGl2IGlkPSJyZXN1bHRzIj48L2Rpdj4KIDwv
Ym9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Blcm1pc3Np
b25jbGllbnQvcmVzb3VyY2VzL2ltYWdlLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9wZXJtaXNzaW9uY2xpZW50L3Jlc291cmNlcy9pbWFnZS5odG1sCmluZGV4IGUyYWRmZTNm
MGI2MjFhYThkOWZmNGUxOTBjOTAyMjMwNWNjMDcwZWIuLjIzOTc3MTcxMDFkZWQ0NDBhMzI5NTU4
MjZlODQxY2QxY2Q2MjNmOTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL3Blcm1pc3Npb25jbGllbnQvcmVzb3VyY2VzL2ltYWdlLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vcGVybWlzc2lvbmNsaWVudC9yZXNvdXJjZXMvaW1hZ2UuaHRt
bApAQCAtOCw3ICs4LDcgQEAgZnVuY3Rpb24gbG9nKGEpCiA8L3NjcmlwdD4KIDwvaGVhZD4KIDxi
b2R5PgotPGltZyBzcmM9ImJvc3Rvbi5naWYiIG9ubG9hZD0ibG9nKCdGQUlMOiBsb2FkIGV2ZW50
IGZvciBpZnJhbWVkIGltYWdlKSIgb25lcnJvcj0ibG9nKCdGQUlMOiBlcnJvciBldmVudCBmb3Ig
aWZyYW1lZCBpbWFnZScpIj4KKzxpbWcgc3JjPSJib3N0b24uZ2lmIiBvbmxvYWQ9ImxvZygnRkFJ
TDogbG9hZCBldmVudCBmb3IgaWZyYW1lZCBpbWFnZScpIj4KIDxkaXYgaWQ9InJlc3VsdHMiPjwv
ZGl2PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
d2syL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBlZAppbmRleCAxOTE3
YjZjZWZiMzc5OWViZGFkM2U5ODBmMzU3NjgxNmQ4NGQwMzExLi5jMWRhYjI3YTRhNjZkYTNmZDU2
NDBjYjMwMzhhZGNjZGE5OGExYTE2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93
azIvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBlZApAQCAtMjAx
LDYgKzIwMSw3IEBAIGZhc3QvY2FudmFzL3dlYmdsL3dlYmdsLWFycmF5LWludmFsaWQtcmFuZ2Vz
Lmh0bWwKIGZhc3QvY2FudmFzL3dlYmdsL3dlYmdsLXNwZWNpZmljLmh0bWwKIGZhc3QvaGFybmVz
cy9vdmVycmlkZS1wcmVmZXJlbmNlcy0yLmh0bWwKIGZhc3QvaW1hZ2VzL2FuaW1hdGVkLWdpZi1y
ZXN0b3JlZC1mcm9tLWJmY2FjaGUuaHRtbAorZmFzdC9sb2FkZXIvZGlzcGxheS1pbWFnZS11bnNl
dC1hbGxvd3MtY2FjaGVkLWltYWdlLWxvYWQuaHRtbAogZmFzdC90ZXh0L3plcm8tZm9udC1zaXpl
Lmh0bWwKIAogIyBXZWJLaXRUZXN0UnVubmVyIG5lZWRzIHRvIHN1cHBvcnQgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcERPTUFzV2ViQXJjaGl2ZQpAQCAtMzM5LDYgKzM0MCw4IEBAIHN2Zy9jdXN0
b20vc3ZnLWFsbG93ZWQtaW4tZGFzaGJvYXJkLW9iamVjdC5odG1sCiAjIDxodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDI2NzI+CiBmYXN0L2Nzcy9jb21wYXJlLWNvbnRl
bnQtc3R5bGUuaHRtbAogZmFzdC9mcmFtZXMvZnJhbWUtZGlzcGxheS1ub25lLWZvY3VzLmh0bWwK
K2Zhc3QvbG9hZGVyL2Rpc3BsYXktaW1hZ2UtdW5zZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1jYW4t
cmVsb2FkLWluLXBsYWNlLmh0bWwKK2Zhc3QvbG9hZGVyL2ltYWdlcy1lbmFibGVkLXVuc2V0LWNh
bi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS5odG1sCiBmYXN0L2xvYWRlci9y
ZWxvYWQtcG9saWN5LWRlbGVnYXRlLmh0bWwKIAogIyBXZWJLaXRUZXN0UnVubmVyIG5lZWRzIGxh
eW91dFRlc3RDb250cm9sbGVyLnF1ZXVlTG9hZApkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hh
bmdlTG9nCmluZGV4IGRmNzQ0NzNmMDJlNTI4YjQxMGNiMjYyMjk1OTk5YjI1OWMyMjExZGUuLjhm
OGFjYTNmNzlhMjQ5YzJkZmM0M2U5NzVhNTg2NmQ2MWI5NGRhZDEgMTAwNjQ0Ci0tLSBhL0NoYW5n
ZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxMi0wOS0yMSAgQm8gTGl1
ICA8Ym9saXVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlbGFuZCAiQWRkIGluLXBsYWNlIHJl
bG9hZCBiZWhhdmlvciB0byBJbWFnZXNFbmFibGVkIHNldHRpbmciIHdpdGggb3B0aW1pemF0aW9u
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTcwNTUK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWxhbmRp
bmcgMTI4NzgwLCAxMjg2NzYsIDEyODY0NS4gV2FzIHJldmVydGVkIGluIDEyODkxNCBkdWUgdG8K
KyAgICAgICAgcGVyZm9ybWFuY2UgcmVncmVzc2lvbiBpbiBDaHJvbWl1bS4KKworICAgICAgICBO
ZXcgY2hhbmdlcyBpbiBhZGRpdGlvbiB0byBwcmV2aW91c2x5IHJldmVydGVkIHBhdGNoZXM6CisK
KyAgICAgICAgUmVmYWN0b3JlZCBDYWNoZWRSZXNvdXJjZTo6cmVxdWVzdFJlc291cmNlLCBsb2Fk
UmVzb3VyY2UsIGFuZAorICAgICAgICByZXZhbGlkYXRlUmVzb3VyY2UuIE1vdmVkIENhY2hlZFJl
c291cmNlOjpsb2FkIG1ldGhvZCB0byBlbmQgb2YKKyAgICAgICAgcmVxdWVzdFJlc291cmNlIHNv
IHRoZXJlIGlzIG9uZSBwbGFjZSB3aGVyZSBsb2FkIGlzIGNhbGxlZCBmb3IgYWxsCisgICAgICAg
IHJlc291cmNlcy4KKworICAgICAgICBBZGRlZCBhIGJvb2wgcGFyYW1ldGVyIGZvciByZXF1ZXN0
UmVzb3VyY2UgYW5kCisgICAgICAgIGRldGVybWluZVJldmFsaWRhdGlvblBvbGljeSBzbyB0aGF0
IEZyYW1lTG9hZGVyQ2xpZW50OjphbGxvd0ltYWdlIGNhbGwKKyAgICAgICAgZG8gbm90IG5lZWQg
dG8gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzLgorCisgICAgICAgIFJlbW92ZWQgQ2FjaGVkSW1h
Z2U6OmxvYWQgY2FsbCBpbiByZXF1ZXN0SW1hZ2Ugc28gaXQgaXMgbm90IGNhbGxlZAorICAgICAg
ICB0d2ljZS4KKworICAgICAgICBSZW1vdmVkIHVubmVjZXNzYXJ5IEZyYW1lLmggaW5jbHVkZXMg
aW4gQ2FjaGVkUmVzb3VyY2UgYW5kCisgICAgICAgIENhY2hlZEltYWdlLgorCisgICAgICAgIFJl
bW92ZWQgZGVhZCBsb2FkKCkgbWV0aG9kIGRlY2xhcmF0aW9uIGluIENhY2hlZEltYWdlLgorCisg
ICAgICAgIFVwZGF0ZWQgdGV4dCBleHBlY3RhdGlvbiBmb3IgdHdvIGltYWdlLXBlcm1pc3Npb25z
IHRlc3RzIHRvIHJlZmxlY3QKKyAgICAgICAgdGhlIHJlbW92ZWQgY2FsbHMgdG8gYWxsb3dJbWFn
ZS4KKworICAgICAgICAqIFNvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXI6CisKIDIwMTIt
MDktMjAgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5AZGlnaWEuY29tPgogCiAgICAg
ICAgIFtRdF0gUXRXZWJLaXQgbW9kdWxlIGhlYWRlciBpbmNsdWRlcyBwcml2YXRlIGRlcGVuZGVu
Y2llcwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165236</attachid>
            <date>2012-09-21 17:50:54 -0700</date>
            <delta_ts>2012-09-24 10:38:34 -0700</delta_ts>
            <desc>Fix condition for whether to call load</desc>
            <filename>bug-97055-20120921175017.patch</filename>
            <type>text/plain</type>
            <size>49210</size>
            <attacher name="Bo Liu">boliu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5MjQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTkwY2ZkYmU3Y2JlYTA0
ODU3MWQ0OTgyNDhmNDczYjFkZWJlZGY1ZS4uM2M1OWNmYjVmMTU2NGQ5MzM0Mjk5NzEyZjBjMGVk
ZTMzZmRiM2M4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg3IEBACisyMDEyLTA5LTIxICBCbyBM
aXUgIDxib2xpdUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVsYW5kICJBZGQgaW4tcGxhY2Ug
cmVsb2FkIGJlaGF2aW9yIHRvIEltYWdlc0VuYWJsZWQgc2V0dGluZyIgd2l0aCBvcHRpbWl6YXRp
b25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzA1
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbGFu
ZGluZyAxMjg3ODAsIDEyODY3NiwgMTI4NjQ1LiBXYXMgcmV2ZXJ0ZWQgaW4gMTI4OTE0IGR1ZSB0
bworICAgICAgICBwZXJmb3JtYW5jZSByZWdyZXNzaW9uIGluIENocm9taXVtLgorCisgICAgICAg
IE5ldyBjaGFuZ2VzIGluIGFkZGl0aW9uIHRvIHByZXZpb3VzbHkgcmV2ZXJ0ZWQgcGF0Y2hlczoK
KworICAgICAgICBSZWZhY3RvcmVkIENhY2hlZFJlc291cmNlOjpyZXF1ZXN0UmVzb3VyY2UsIGxv
YWRSZXNvdXJjZSwgYW5kCisgICAgICAgIHJldmFsaWRhdGVSZXNvdXJjZS4gTW92ZWQgQ2FjaGVk
UmVzb3VyY2U6OmxvYWQgbWV0aG9kIHRvIGVuZCBvZgorICAgICAgICByZXF1ZXN0UmVzb3VyY2Ug
c28gdGhlcmUgaXMgb25lIHBsYWNlIHdoZXJlIGxvYWQgaXMgY2FsbGVkIGZvciBhbGwKKyAgICAg
ICAgcmVzb3VyY2VzLgorCisgICAgICAgIEFkZGVkIGEgYm9vbCBwYXJhbWV0ZXIgZm9yIHJlcXVl
c3RSZXNvdXJjZSBhbmQKKyAgICAgICAgZGV0ZXJtaW5lUmV2YWxpZGF0aW9uUG9saWN5IHNvIHRo
YXQgRnJhbWVMb2FkZXJDbGllbnQ6OmFsbG93SW1hZ2UgY2FsbAorICAgICAgICBkbyBub3QgbmVl
ZCB0byBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMuCisKKyAgICAgICAgUmVtb3ZlZCBDYWNoZWRJ
bWFnZTo6bG9hZCBjYWxsIGluIHJlcXVlc3RJbWFnZSBzbyBpdCBpcyBub3QgY2FsbGVkCisgICAg
ICAgIHR3aWNlLgorCisgICAgICAgIFJlbW92ZWQgdW5uZWNlc3NhcnkgRnJhbWUuaCBpbmNsdWRl
cyBpbiBDYWNoZWRSZXNvdXJjZSBhbmQKKyAgICAgICAgQ2FjaGVkSW1hZ2UuCisKKyAgICAgICAg
UmVtb3ZlZCBkZWFkIGxvYWQoKSBtZXRob2QgZGVjbGFyYXRpb24gaW4gQ2FjaGVkSW1hZ2UuCisK
KyAgICAgICAgVXBkYXRlZCB0ZXh0IGV4cGVjdGF0aW9uIGZvciB0d28gaW1hZ2UtcGVybWlzc2lv
bnMgdGVzdHMgdG8gcmVmbGVjdAorICAgICAgICB0aGUgcmVtb3ZlZCBjYWxscyB0byBhbGxvd0lt
YWdlLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0LWFs
bG93cy1jYWNoZWQtaW1hZ2UtbG9hZC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2xvYWRlci9k
aXNwbGF5LWltYWdlLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFj
ZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2xvYWRlci9pbWFnZXMtZW5hYmxlZC11bnNldC1j
YW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UuaHRtbAorCisgICAgICAgICog
V2ViQ29yZS5leHAuaW46CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkaWRCZWdpbkRvY3VtZW50KToKKyAgICAgICAgKiBs
b2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3Vy
Y2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpsb2FkKToKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmRp
ZEFkZENsaWVudCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpzdGls
bE5lZWRzTG9hZCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpDYWNoZWRSZXNv
dXJjZUxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVx
dWVzdEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpjYW5S
ZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0
UmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJldmFs
aWRhdGVSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6
bG9hZFJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpk
ZXRlcm1pbmVSZXZhbGlkYXRpb25Qb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVz
b3VyY2VMb2FkZXI6OnNldEF1dG9Mb2FkSW1hZ2VzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnNldEltYWdlc0VuYWJsZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNsaWVudERlZmVyc0ltYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpzaG91bGREZWZlcklt
YWdlTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVsb2Fk
SW1hZ2VzSWZOb3REZWZlcnJlZCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxv
YWRlcjo6cmVxdWVzdFByZWxvYWQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZUxvYWRlci5oOgorICAgICAgICAoQ2FjaGVkUmVzb3VyY2VMb2FkZXIpOgorICAgICAgICAq
IHBhZ2UvU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0SW1hZ2VMb2FkaW5nU2V0
dGluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OlNldHRpbmdzKToKKyAgICAgICAg
KFdlYkNvcmU6OlNldHRpbmdzOjpzZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkpOgorICAgICAg
ICAoV2ViQ29yZTo6U2V0dGluZ3M6OmltYWdlTG9hZGluZ1NldHRpbmdzVGltZXJGaXJlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6c2V0SW1hZ2VzRW5hYmxlZCk6CisgICAgICAgICog
cGFnZS9TZXR0aW5ncy5oOgorICAgICAgICAoU2V0dGluZ3MpOgorICAgICAgICAqIHRlc3Rpbmcv
SW50ZXJuYWxTZXR0aW5ncy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbFNldHRpbmdz
OjpCYWNrdXA6OkJhY2t1cCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbFNldHRpbmdzOjpC
YWNrdXA6OnJlc3RvcmVUbyk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbFNldHRpbmdzOjpz
ZXRJbWFnZXNFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHRlc3Rpbmcv
SW50ZXJuYWxTZXR0aW5ncy5oOgorICAgICAgICAoQmFja3VwKToKKyAgICAgICAgKEludGVybmFs
U2V0dGluZ3MpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5pZGw6CisKIDIw
MTItMDktMjEgIEV2YW4gV2FsbGFjZSAgPGV2YW4uZXhlQGdtYWlsLmNvbT4KIAogICAgICAgICBb
V2ViU29ja2V0XSBSZWNlaXZpbmcgYSBsYXJnZSBtZXNzYWdlIGlzIHJlYWxseSBzbG93CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKaW5kZXggNDE4YTVkNTFiZjAwNWU4OTdkYzdmYjg0ZmZhOTk5OTdjMmQ2YTFiZC4uZjE4ZmJk
MGJmYzFlOGNjMDFlM2U2YjE2ZTdlYTIzNzMyMDUyOWNlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDM3IEBACisyMDEyLTA5LTIxICBCbyBMaXUgIDxib2xpdUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmVsYW5kICJBZGQgaW4tcGxhY2UgcmVsb2FkIGJlaGF2aW9yIHRvIEltYWdlc0VuYWJsZWQg
c2V0dGluZyIgd2l0aCBvcHRpbWl6YXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05NzA1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFJlbGFuZGluZyAxMjg3ODAsIDEyODY3NiwgMTI4NjQ1LiBXYXMg
cmV2ZXJ0ZWQgaW4gMTI4OTE0IGR1ZSB0bworICAgICAgICBwZXJmb3JtYW5jZSByZWdyZXNzaW9u
IGluIENocm9taXVtLgorCisgICAgICAgIE5ldyBjaGFuZ2VzIGluIGFkZGl0aW9uIHRvIHByZXZp
b3VzbHkgcmV2ZXJ0ZWQgcGF0Y2hlczoKKworICAgICAgICBSZWZhY3RvcmVkIENhY2hlZFJlc291
cmNlOjpyZXF1ZXN0UmVzb3VyY2UsIGxvYWRSZXNvdXJjZSwgYW5kCisgICAgICAgIHJldmFsaWRh
dGVSZXNvdXJjZS4gTW92ZWQgQ2FjaGVkUmVzb3VyY2U6OmxvYWQgbWV0aG9kIHRvIGVuZCBvZgor
ICAgICAgICByZXF1ZXN0UmVzb3VyY2Ugc28gdGhlcmUgaXMgb25lIHBsYWNlIHdoZXJlIGxvYWQg
aXMgY2FsbGVkIGZvciBhbGwKKyAgICAgICAgcmVzb3VyY2VzLgorCisgICAgICAgIEFkZGVkIGEg
Ym9vbCBwYXJhbWV0ZXIgZm9yIHJlcXVlc3RSZXNvdXJjZSBhbmQKKyAgICAgICAgZGV0ZXJtaW5l
UmV2YWxpZGF0aW9uUG9saWN5IHNvIHRoYXQgRnJhbWVMb2FkZXJDbGllbnQ6OmFsbG93SW1hZ2Ug
Y2FsbAorICAgICAgICBkbyBub3QgbmVlZCB0byBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMuCisK
KyAgICAgICAgUmVtb3ZlZCBDYWNoZWRJbWFnZTo6bG9hZCBjYWxsIGluIHJlcXVlc3RJbWFnZSBz
byBpdCBpcyBub3QgY2FsbGVkCisgICAgICAgIHR3aWNlLgorCisgICAgICAgIFJlbW92ZWQgdW5u
ZWNlc3NhcnkgRnJhbWUuaCBpbmNsdWRlcyBpbiBDYWNoZWRSZXNvdXJjZSBhbmQKKyAgICAgICAg
Q2FjaGVkSW1hZ2UuCisKKyAgICAgICAgUmVtb3ZlZCBkZWFkIGxvYWQoKSBtZXRob2QgZGVjbGFy
YXRpb24gaW4gQ2FjaGVkSW1hZ2UuCisKKyAgICAgICAgVXBkYXRlZCB0ZXh0IGV4cGVjdGF0aW9u
IGZvciB0d28gaW1hZ2UtcGVybWlzc2lvbnMgdGVzdHMgdG8gcmVmbGVjdAorICAgICAgICB0aGUg
cmVtb3ZlZCBjYWxscyB0byBhbGxvd0ltYWdlLgorCisgICAgICAgICogd2luL1dlYktpdDIuZGVm
OgorCiAyMDEyLTA5LTIxICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNv
bT4KIAogICAgICAgICBbR1RLXSBJbXBsZW1lbnQgVmlld1N0YXRlIG1ldGhvZHMgaW4gUGFnZUNs
aWVudEltcGwgaW4gV2ViS2l0MgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCBkZmY4MzBkNTAzODQ5
MmZkMmRlNDEwY2YyNWY4MzI5MzcyMjAxMDM4Li43YzM2NzI2NjkwYjMzYzM3MzdkM2Y3Yjg3NjU1
MDQzN2ZjZmI3MTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtODUyLDYgKzg1Miw3IEBAIF9f
Wk43V2ViQ29yZThHcmFkaWVudEMxRVJLTlNfMTBGbG9hdFBvaW50RVMzXwogX19aTjdXZWJDb3Jl
OFBvc2l0aW9uQzFFTjNXVEYxMFBhc3NSZWZQdHJJTlNfNE5vZGVFRUVpTlMwXzEwQW5jaG9yVHlw
ZUUKIF9fWk43V2ViQ29yZThTZXR0aW5nczE0c2V0SmF2YUVuYWJsZWRFYgogX19aTjdXZWJDb3Jl
OFNldHRpbmdzMTVzZXRXZWJHTEVuYWJsZWRFYgorX19aTjdXZWJDb3JlOFNldHRpbmdzMTZzZXRJ
bWFnZXNFbmFibGVkRWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczE2c2V0U2NyaXB0RW5hYmxlZEVi
CiBfX1pON1dlYkNvcmU4U2V0dGluZ3MxNnNldFVzZXNQYWdlQ2FjaGVFYgogX19aTjdXZWJDb3Jl
OFNldHRpbmdzMTdzZXRQbHVnaW5zRW5hYmxlZEViCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcAppbmRleCBiMjZiNmQ0Y2MyMmZhZTc1NzhkMDQ0ZjYxMDUxNjE5MjRiMDZmYzVmLi40
MTc3MmNhZWU4ZDJkOTMyZGQzZjZiZWMyYThiYmFmYzBkY2U1ZjFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTY0Nyw2ICs2NDcsNyBAQCB2b2lkIEZyYW1lTG9hZGVy
OjpkaWRCZWdpbkRvY3VtZW50KGJvb2wgZGlzcGF0Y2gpCiAgICAgbV9mcmFtZS0+ZG9jdW1lbnQo
KS0+aW5pdENvbnRlbnRTZWN1cml0eVBvbGljeSgpOwogCiAgICAgU2V0dGluZ3MqIHNldHRpbmdz
ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+c2V0dGluZ3MoKTsKKyAgICBtX2ZyYW1lLT5kb2N1bWVu
dCgpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5zZXRJbWFnZXNFbmFibGVkKCFzZXR0aW5ncyB8
fCBzZXR0aW5ncy0+YXJlSW1hZ2VzRW5hYmxlZCgpKTsKICAgICBtX2ZyYW1lLT5kb2N1bWVudCgp
LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5zZXRBdXRvTG9hZEltYWdlcyhzZXR0aW5ncyAmJiBz
ZXR0aW5ncy0+bG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KCkpOwogCiAgICAgaWYgKG1fZG9jdW1l
bnRMb2FkZXIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJj
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3Bw
CmluZGV4IGZmM2JlNmVkZmY4Yjk3ZmM1NWEwODQ4YjRjMWFmMDJmMDgxYjQ2MTYuLjU2ZGUwZDM0
MTMzYzNmNWE0NzJiZmMyYmM2ZjRlNWNkZjM4MzAzZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAtMTY3LDExICsxNjcsMTMgQEAgdm9pZCBTdWJy
ZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYgbmV3UmVxdWVz
dCwgY29uc3QgUmVzb3UKICAgICAKICAgICBSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0
KG5ld1JlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOwogICAgIGlmICghcHJldmlvdXNVUkwuaXNO
dWxsKCkgJiYgIW5ld1JlcXVlc3QuaXNOdWxsKCkgJiYgcHJldmlvdXNVUkwgIT0gbmV3UmVxdWVz
dC51cmwoKSkgewotICAgICAgICBpZiAoIW1fZG9jdW1lbnQtPmNhY2hlZFJlc291cmNlTG9hZGVy
KCktPmNhblJlcXVlc3QobV9yZXNvdXJjZS0+dHlwZSgpLCBuZXdSZXF1ZXN0LnVybCgpKSkgewot
ICAgICAgICAgICAgY2FuY2VsKCk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmICht
X2RvY3VtZW50LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5jYW5SZXF1ZXN0KG1fcmVzb3VyY2Ut
PnR5cGUoKSwgbmV3UmVxdWVzdC51cmwoKSkpIHsKKyAgICAgICAgICAgIGlmIChtX3Jlc291cmNl
LT50eXBlKCkgIT0gQ2FjaGVkUmVzb3VyY2U6OkltYWdlUmVzb3VyY2UgfHwgIW1fZG9jdW1lbnQt
PmNhY2hlZFJlc291cmNlTG9hZGVyKCktPnNob3VsZERlZmVySW1hZ2VMb2FkKG5ld1JlcXVlc3Qu
dXJsKCkpKSB7CisgICAgICAgICAgICAgICAgbV9yZXNvdXJjZS0+d2lsbFNlbmRSZXF1ZXN0KG5l
d1JlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBtX3Jlc291cmNlLT53aWxsU2VuZFJlcXVl
c3QobmV3UmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CisgICAgICAgIGNhbmNlbCgpOwogICAg
IH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZElt
YWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKaW5k
ZXggNDMxNjYxNmIzNjQ1M2EyMDg2NWU0ZDJkNmUwMjg5MzBhZjE2YjlkMy4uNDEwNzVhN2IzMTUz
NDhmYmRmZTc2MGFiZTNmNzYyNGNmMWNhMDkyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiQ2FjaGVk
UmVzb3VyY2VDbGllbnQuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlci5o
IgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCi0jaW5jbHVkZSAiRnJhbWUuaCIK
ICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlw
ZXMuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEltYWdlLmgKaW5kZXggNDg2NWM3ZTI0NjY1YmE2MzliMGUxYTk2YmM2MjUyNjBkNzNh
ZDAxYi4uMDc4ZjdhYjFjNjJmZjg2YjgxNWI5ZjA2NTQ2MzBkMzYwMTkyOTNjYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKQEAgLTgyLDggKzgyLDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJZ25vcmVIVFRQU3RhdHVzQ29kZUVycm9ycygp
IGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBpc0ltYWdlKCkgY29u
c3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIGJvb2wgc3RpbGxOZWVkc0xvYWQoKSBjb25zdCB7IHJl
dHVybiAhZXJyb3JPY2N1cnJlZCgpICYmIHN0YXR1cygpID09IFVua25vd24gJiYgIWlzTG9hZGlu
ZygpOyB9Ci0gICAgdm9pZCBsb2FkKCk7CisgICAgdmlydHVhbCBib29sIHN0aWxsTmVlZHNMb2Fk
KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gIWVycm9yT2NjdXJyZWQoKSAmJiBzdGF0dXMoKSA9
PSBVbmtub3duICYmICFpc0xvYWRpbmcoKTsgfQogCiAgICAgLy8gSW1hZ2VPYnNlcnZlcgogICAg
IHZpcnR1YWwgdm9pZCBkZWNvZGVkU2l6ZUNoYW5nZWQoY29uc3QgSW1hZ2UqIGltYWdlLCBpbnQg
ZGVsdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5j
cHAKaW5kZXggNDNjM2QxNDRmODJmMTU2ODhjZjY2YzA1NGEwNGRhOTYwMTliOWQxMS4uMzNkMWJh
ODIzYmM2ZmQ4NjU3MmU2YTk0NjFhYzViZDc1NjNhMDZiYiAxMDA3NTUKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC0zMiw3ICszMiw2IEBACiAjaW5j
bHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJDcm9zc09yaWdpbkFjY2Vz
c0NvbnRyb2wuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkZyYW1lLmgiCiAj
aW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uaCIKICNpbmNsdWRlICJLVVJMLmgiCkBAIC0zOTAsNyArMzg5LDcgQEAgdm9pZCBD
YWNoZWRSZXNvdXJjZTo6ZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50KiBjKQogICAg
ICAgICBtX2NsaWVudHMuYWRkKGMpOwogICAgICAgICBtX2NsaWVudHNBd2FpdGluZ0NhbGxiYWNr
LnJlbW92ZShjKTsKICAgICB9Ci0gICAgaWYgKCFpc0xvYWRpbmcoKSkKKyAgICBpZiAoIWlzTG9h
ZGluZygpICYmICFzdGlsbE5lZWRzTG9hZCgpKQogICAgICAgICBjLT5ub3RpZnlGaW5pc2hlZCh0
aGlzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2Uu
aAppbmRleCAwY2FkM2VlN2NhNDI4MTJlYWEzZWZlNjAwMzExNjQ0OWY3YTY5NmExLi5iNzM5ZDY4
YWY4MWYyZGI3YjQ4NjJkZjE1OWFhY2YxNThlMGI1NzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaApAQCAtNDUsNyArNDUsNiBAQCBjbGFzcyBDYWNo
ZWRNZXRhZGF0YTsKIGNsYXNzIENhY2hlZFJlc291cmNlQ2xpZW50OwogY2xhc3MgQ2FjaGVkUmVz
b3VyY2VIYW5kbGVCYXNlOwogY2xhc3MgQ2FjaGVkUmVzb3VyY2VMb2FkZXI7Ci1jbGFzcyBGcmFt
ZTsKIGNsYXNzIEluc3BlY3RvclJlc291cmNlOwogY2xhc3MgUHVyZ2VhYmxlQnVmZmVyOwogY2xh
c3MgU2VjdXJpdHlPcmlnaW47CkBAIC0xNDQsNiArMTQzLDcgQEAgcHVibGljOgogCiAgICAgYm9v
bCBpc0xvYWRpbmcoKSBjb25zdCB7IHJldHVybiBtX2xvYWRpbmc7IH0KICAgICB2b2lkIHNldExv
YWRpbmcoYm9vbCBiKSB7IG1fbG9hZGluZyA9IGI7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc3RpbGxO
ZWVkc0xvYWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgU3VicmVzb3VyY2VMb2Fk
ZXIqIGxvYWRlcigpIHsgcmV0dXJuIG1fbG9hZGVyLmdldCgpOyB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDM1
M2E2MmFhNjQwZGJkZDVlNTEyN2Q5MGIxMDg0NTZkNGFjN2NlZGIuLjc0ZGNmYWUyZWQyMTJiNjIx
ZDdmYjlhNjg4YWQ5MTg0ZTVjOTU0NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcApAQCAtNDYsNiArNDYsNyBAQAogI2lu
Y2x1ZGUgIk1lbW9yeUNhY2hlLmgiCiAjaW5jbHVkZSAiUGluZ0xvYWRlci5oIgogI2luY2x1ZGUg
IlJlc291cmNlTG9hZFNjaGVkdWxlci5oIgorI2luY2x1ZGUgIlNjaGVtZVJlZ2lzdHJ5LmgiCiAj
aW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1
ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgpAQCAtMTE1LDYgKzExNiw3IEBAIENhY2hlZFJlc291cmNl
TG9hZGVyOjpDYWNoZWRSZXNvdXJjZUxvYWRlcihEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgLCBt
X3JlcXVlc3RDb3VudCgwKQogICAgICwgbV9nYXJiYWdlQ29sbGVjdERvY3VtZW50UmVzb3VyY2Vz
VGltZXIodGhpcywgJkNhY2hlZFJlc291cmNlTG9hZGVyOjpnYXJiYWdlQ29sbGVjdERvY3VtZW50
UmVzb3VyY2VzVGltZXJGaXJlZCkKICAgICAsIG1fYXV0b0xvYWRJbWFnZXModHJ1ZSkKKyAgICAs
IG1faW1hZ2VzRW5hYmxlZCh0cnVlKQogICAgICwgbV9hbGxvd1N0YWxlUmVzb3VyY2VzKGZhbHNl
KQogewogfQpAQCAtMTU5LDEwICsxNjEsNyBAQCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRJ
bWFnZT4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RJbWFnZShSZXNvdXJjZVJlcQogICAg
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KICAgICB9Ci0gICAgQ2FjaGVkUmVzb3VyY2VI
YW5kbGU8Q2FjaGVkSW1hZ2U+IHJlc291cmNlKHN0YXRpY19jYXN0PENhY2hlZEltYWdlKj4ocmVx
dWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpJbWFnZVJlc291cmNlLCByZXF1ZXN0LCBTdHJp
bmcoKSwgZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpKS5nZXQoKSkpOwotICAgIGlmIChh
dXRvTG9hZEltYWdlcygpICYmIHJlc291cmNlICYmIHJlc291cmNlLT5zdGlsbE5lZWRzTG9hZCgp
KQotICAgICAgICByZXNvdXJjZS0+bG9hZCh0aGlzLCBkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRp
b25zKCkpOwotICAgIHJldHVybiByZXNvdXJjZTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q2Fj
aGVkSW1hZ2UqPihyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OkltYWdlUmVzb3VyY2Us
IHJlcXVlc3QsIFN0cmluZygpLCBkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCksIFJlc291
cmNlTG9hZFByaW9yaXR5VW5yZXNvbHZlZCwgZmFsc2UsIGNsaWVudERlZmVyc0ltYWdlKHJlcXVl
c3QudXJsKCkpKS5nZXQoKSk7CiB9CiAKIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZEZvbnQ+
IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0Rm9udChSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QpCkBAIC0zNjIsMTIgKzM2MSw2IEBAIGJvb2wgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNhblJl
cXVlc3QoQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgS1VSTCYgdXJsCiAgICAgY2Fz
ZSBDYWNoZWRSZXNvdXJjZTo6SW1hZ2VSZXNvdXJjZToKICAgICAgICAgaWYgKCFtX2RvY3VtZW50
LT5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dJbWFnZUZyb21Tb3VyY2UodXJsKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBpZiAoZnJhbWUoKSkgewotICAgICAg
ICAgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gZnJhbWUoKS0+c2V0dGluZ3MoKTsKLSAgICAgICAg
ICAgIGlmICghZnJhbWUoKS0+bG9hZGVyKCktPmNsaWVudCgpLT5hbGxvd0ltYWdlKCFzZXR0aW5n
cyB8fCBzZXR0aW5ncy0+YXJlSW1hZ2VzRW5hYmxlZCgpLCB1cmwpKQotICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNlIENhY2hl
ZFJlc291cmNlOjpGb250UmVzb3VyY2U6IHsKICAgICAgICAgaWYgKCFtX2RvY3VtZW50LT5jb250
ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dGb250RnJvbVNvdXJjZSh1cmwpKQpAQCAtNDAxLDcg
KzM5NCw3IEBAIGJvb2wgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNhblJlcXVlc3QoQ2FjaGVkUmVz
b3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgS1VSTCYgdXJsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LUNhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBDYWNoZWRSZXNvdXJjZUxvYWRl
cjo6cmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBjb25zdCBSZXNvdXJjZUxvYWRl
ck9wdGlvbnMmIG9wdGlvbnMsIFJlc291cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5LCBib29sIGZv
clByZWxvYWQpCitDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gQ2FjaGVkUmVz
b3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgY29uc3QgUmVz
b3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zLCBSZXNvdXJjZUxvYWRQcmlvcml0eSBwcmlvcml0
eSwgYm9vbCBmb3JQcmVsb2FkLCBib29sIGltYWdlRGVmZXJyZWRCeUNsaWVudCkKIHsKICAgICBL
VVJMIHVybCA9IHJlcXVlc3QudXJsKCk7CiAgICAgCkBAIC00MzAsMTYgKzQyMywxNiBAQCBDYWNo
ZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJl
cXVlc3RSZXNvdXJjZShDYWNoZQogICAgIGlmIChyZXF1ZXN0LnVybCgpICE9IHVybCkKICAgICAg
ICAgcmVxdWVzdC5zZXRVUkwodXJsKTsKIAotICAgIHN3aXRjaCAoZGV0ZXJtaW5lUmV2YWxpZGF0
aW9uUG9saWN5KHR5cGUsIHJlcXVlc3QsIGZvclByZWxvYWQsIHJlc291cmNlLmdldCgpKSkgewot
ICAgIGNhc2UgTG9hZDoKLSAgICAgICAgcmVzb3VyY2UgPSBsb2FkUmVzb3VyY2UodHlwZSwgcmVx
dWVzdCwgY2hhcnNldCwgcHJpb3JpdHksIG9wdGlvbnMpOwotICAgICAgICBicmVhazsKKyAgICBj
b25zdCBSZXZhbGlkYXRpb25Qb2xpY3kgcG9saWN5ID0gZGV0ZXJtaW5lUmV2YWxpZGF0aW9uUG9s
aWN5KHR5cGUsIHJlcXVlc3QsIGZvclByZWxvYWQsIHJlc291cmNlLmdldCgpLCBpbWFnZURlZmVy
cmVkQnlDbGllbnQpOworICAgIHN3aXRjaCAocG9saWN5KSB7CiAgICAgY2FzZSBSZWxvYWQ6CiAg
ICAgICAgIG1lbW9yeUNhY2hlKCktPnJlbW92ZShyZXNvdXJjZS5nZXQoKSk7Ci0gICAgICAgIHJl
c291cmNlID0gbG9hZFJlc291cmNlKHR5cGUsIHJlcXVlc3QsIGNoYXJzZXQsIHByaW9yaXR5LCBv
cHRpb25zKTsKKyAgICAgICAgLy8gRmFsbCB0aHJvdWdoCisgICAgY2FzZSBMb2FkOgorICAgICAg
ICByZXNvdXJjZSA9IGxvYWRSZXNvdXJjZSh0eXBlLCByZXF1ZXN0LCBjaGFyc2V0KTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBSZXZhbGlkYXRlOgotICAgICAgICByZXNvdXJjZSA9IHJldmFs
aWRhdGVSZXNvdXJjZShyZXNvdXJjZS5nZXQoKSwgcHJpb3JpdHksIG9wdGlvbnMpOworICAgICAg
ICByZXNvdXJjZSA9IHJldmFsaWRhdGVSZXNvdXJjZShyZXNvdXJjZS5nZXQoKSk7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgVXNlOgogICAgICAgICBtZW1vcnlDYWNoZSgpLT5yZXNvdXJjZUFj
Y2Vzc2VkKHJlc291cmNlLmdldCgpKTsKQEAgLTQ1MCwxMiArNDQzLDI3IEBAIENhY2hlZFJlc291
cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJl
c291cmNlKENhY2hlCiAgICAgaWYgKCFyZXNvdXJjZSkKICAgICAgICAgcmV0dXJuIDA7CiAKKyAg
ICByZXNvdXJjZS0+c2V0TG9hZFByaW9yaXR5KHByaW9yaXR5KTsKKyAgICBpZiAoKHBvbGljeSAh
PSBVc2UgfHwgcmVzb3VyY2UtPnN0aWxsTmVlZHNMb2FkKCkpICYmICFpbWFnZURlZmVycmVkQnlD
bGllbnQpIHsKKyAgICAgICAgcmVzb3VyY2UtPmxvYWQodGhpcywgb3B0aW9ucyk7CisKKyAgICAg
ICAgLy8gV2UgZG9uJ3Qgc3VwcG9ydCBpbW1lZGlhdGUgbG9hZHMsIGJ1dCB3ZSBkbyBzdXBwb3J0
IGltbWVkaWF0ZSBmYWlsdXJlLgorICAgICAgICBpZiAocmVzb3VyY2UtPmVycm9yT2NjdXJyZWQo
KSkgeworICAgICAgICAgICAgaWYgKHJlc291cmNlLT5pbkNhY2hlKCkpCisgICAgICAgICAgICAg
ICAgbWVtb3J5Q2FjaGUoKS0+cmVtb3ZlKHJlc291cmNlLmdldCgpKTsKKyAgICAgICAgICAgIHJl
dHVybiAwOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKCFyZXF1ZXN0LnVybCgpLnByb3Rv
Y29sSXNEYXRhKCkpCisgICAgICAgIG1fdmFsaWRhdGVkVVJMcy5hZGQocmVxdWVzdC51cmwoKSk7
CisKICAgICBBU1NFUlQocmVzb3VyY2UtPnVybCgpID09IHVybC5zdHJpbmcoKSk7CiAgICAgbV9k
b2N1bWVudFJlc291cmNlcy5zZXQocmVzb3VyY2UtPnVybCgpLCByZXNvdXJjZSk7CiAgICAgcmV0
dXJuIHJlc291cmNlOwogfQogCi1DYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4g
Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJldmFsaWRhdGVSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSog
cmVzb3VyY2UsIFJlc291cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5LCBjb25zdCBSZXNvdXJjZUxv
YWRlck9wdGlvbnMmIG9wdGlvbnMpCitDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJj
ZT4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJldmFsaWRhdGVSZXNvdXJjZShDYWNoZWRSZXNvdXJj
ZSogcmVzb3VyY2UpCiB7CiAgICAgQVNTRVJUKHJlc291cmNlKTsKICAgICBBU1NFUlQocmVzb3Vy
Y2UtPmluQ2FjaGUoKSk7CkBAIC00NjUsNyArNDczLDYgQEAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8
Q2FjaGVkUmVzb3VyY2U+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXZhbGlkYXRlUmVzb3VyY2Uo
Q2EKICAgICAKICAgICAvLyBDb3B5IHRoZSBVUkwgb3V0IG9mIHRoZSByZXNvdXJjZSB0byBiZSBy
ZXZhbGlkYXRlZCBpbiBjYXNlIGl0IGdldHMgZGVsZXRlZCBieSB0aGUgcmVtb3ZlKCkgY2FsbCBi
ZWxvdy4KICAgICBTdHJpbmcgdXJsID0gcmVzb3VyY2UtPnVybCgpOwotICAgIGJvb2wgdXJsUHJv
dG9jb2xJc0RhdGEgPSByZXNvdXJjZS0+dXJsKCkucHJvdG9jb2xJc0RhdGEoKTsKICAgICBDYWNo
ZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gbmV3UmVzb3VyY2UgPSBjcmVhdGVSZXNv
dXJjZShyZXNvdXJjZS0+dHlwZSgpLCByZXNvdXJjZS0+cmVzb3VyY2VSZXF1ZXN0KCksIHJlc291
cmNlLT5lbmNvZGluZygpKTsKICAgICAKICAgICBMT0coUmVzb3VyY2VMb2FkaW5nLCAiUmVzb3Vy
Y2UgJXAgY3JlYXRlZCB0byByZXZhbGlkYXRlICVwIiwgbmV3UmVzb3VyY2UuZ2V0KCksIHJlc291
cmNlKTsKQEAgLTQ3MywxNiArNDgwLDEwIEBAIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJl
c291cmNlPiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmV2YWxpZGF0ZVJlc291cmNlKENhCiAgICAg
CiAgICAgbWVtb3J5Q2FjaGUoKS0+cmVtb3ZlKHJlc291cmNlKTsKICAgICBtZW1vcnlDYWNoZSgp
LT5hZGQobmV3UmVzb3VyY2UuZ2V0KCkpOwotICAgIAotICAgIG5ld1Jlc291cmNlLT5zZXRMb2Fk
UHJpb3JpdHkocHJpb3JpdHkpOwotICAgIG5ld1Jlc291cmNlLT5sb2FkKHRoaXMsIG9wdGlvbnMp
OwotCi0gICAgaWYgKCF1cmxQcm90b2NvbElzRGF0YSkKLSAgICAgICAgbV92YWxpZGF0ZWRVUkxz
LmFkZCh1cmwpOwogICAgIHJldHVybiBuZXdSZXNvdXJjZTsKIH0KIAotQ2FjaGVkUmVzb3VyY2VI
YW5kbGU8Q2FjaGVkUmVzb3VyY2U+IENhY2hlZFJlc291cmNlTG9hZGVyOjpsb2FkUmVzb3VyY2Uo
Q2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25z
dCBTdHJpbmcmIGNoYXJzZXQsIFJlc291cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5LCBjb25zdCBS
ZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCitDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNo
ZWRSZXNvdXJjZT4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmxvYWRSZXNvdXJjZShDYWNoZWRSZXNv
dXJjZTo6VHlwZSB0eXBlLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYg
Y2hhcnNldCkKIHsKICAgICBBU1NFUlQoIW1lbW9yeUNhY2hlKCktPnJlc291cmNlRm9yVVJMKHJl
cXVlc3QudXJsKCkpKTsKICAgICAKQEAgLTQ5MCwzNSArNDkxLDIwIEBAIENhY2hlZFJlc291cmNl
SGFuZGxlPENhY2hlZFJlc291cmNlPiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6bG9hZFJlc291cmNl
KENhY2hlZFJlCiAgICAgCiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+
IHJlc291cmNlID0gY3JlYXRlUmVzb3VyY2UodHlwZSwgcmVxdWVzdCwgY2hhcnNldCk7CiAgICAg
Ci0gICAgYm9vbCBpbkNhY2hlID0gbWVtb3J5Q2FjaGUoKS0+YWRkKHJlc291cmNlLmdldCgpKTsK
LSAgICAKLSAgICByZXNvdXJjZS0+c2V0TG9hZFByaW9yaXR5KHByaW9yaXR5KTsKLSAgICByZXNv
dXJjZS0+bG9hZCh0aGlzLCBvcHRpb25zKTsKLSAgICAKLSAgICBpZiAoIWluQ2FjaGUpCisgICAg
aWYgKCFtZW1vcnlDYWNoZSgpLT5hZGQocmVzb3VyY2UuZ2V0KCkpKQogICAgICAgICByZXNvdXJj
ZS0+c2V0T3duaW5nQ2FjaGVkUmVzb3VyY2VMb2FkZXIodGhpcyk7Ci0KLSAgICAvLyBXZSBkb24n
dCBzdXBwb3J0IGltbWVkaWF0ZSBsb2FkcywgYnV0IHdlIGRvIHN1cHBvcnQgaW1tZWRpYXRlIGZh
aWx1cmUuCi0gICAgaWYgKHJlc291cmNlLT5lcnJvck9jY3VycmVkKCkpIHsKLSAgICAgICAgaWYg
KGluQ2FjaGUpCi0gICAgICAgICAgICBtZW1vcnlDYWNoZSgpLT5yZW1vdmUocmVzb3VyY2UuZ2V0
KCkpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBpZiAoIXJlcXVlc3QudXJsKCku
cHJvdG9jb2xJc0RhdGEoKSkKLSAgICAgICAgbV92YWxpZGF0ZWRVUkxzLmFkZChyZXF1ZXN0LnVy
bCgpKTsKICAgICByZXR1cm4gcmVzb3VyY2U7CiB9CiAKLUNhY2hlZFJlc291cmNlTG9hZGVyOjpS
ZXZhbGlkYXRpb25Qb2xpY3kgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRldGVybWluZVJldmFsaWRh
dGlvblBvbGljeShDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIGJvb2wgZm9yUHJlbG9hZCwgQ2FjaGVkUmVzb3VyY2UqIGV4aXN0aW5nUmVzb3VyY2Up
IGNvbnN0CitDYWNoZWRSZXNvdXJjZUxvYWRlcjo6UmV2YWxpZGF0aW9uUG9saWN5IENhY2hlZFJl
c291cmNlTG9hZGVyOjpkZXRlcm1pbmVSZXZhbGlkYXRpb25Qb2xpY3koQ2FjaGVkUmVzb3VyY2U6
OlR5cGUgdHlwZSwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sIGZvclByZWxvYWQsIENh
Y2hlZFJlc291cmNlKiBleGlzdGluZ1Jlc291cmNlLCBib29sIGltYWdlRGVmZXJyZWRCeUNsaWVu
dCkgY29uc3QKIHsKICAgICBpZiAoIWV4aXN0aW5nUmVzb3VyY2UpCiAgICAgICAgIHJldHVybiBM
b2FkOwotICAgIAorCiAgICAgLy8gV2UgYWxyZWFkeSBoYXZlIGEgcHJlbG9hZCBnb2luZyBmb3Ig
dGhpcyBVUkwuCiAgICAgaWYgKGZvclByZWxvYWQgJiYgZXhpc3RpbmdSZXNvdXJjZS0+aXNQcmVs
b2FkZWQoKSkKICAgICAgICAgcmV0dXJuIFVzZTsKLSAgICAKKwogICAgIC8vIElmIHRoZSBzYW1l
IFVSTCBoYXMgYmVlbiBsb2FkZWQgYXMgYSBkaWZmZXJlbnQgdHlwZSwgd2UgbmVlZCB0byByZWxv
YWQuCiAgICAgaWYgKGV4aXN0aW5nUmVzb3VyY2UtPnR5cGUoKSAhPSB0eXBlKSB7CiAgICAgICAg
IExPRyhSZXNvdXJjZUxvYWRpbmcsICJDYWNoZWRSZXNvdXJjZUxvYWRlcjo6ZGV0ZXJtaW5lUmV2
YWxpZGF0aW9uUG9saWN5IHJlbG9hZGluZyBkdWUgdG8gdHlwZSBtaXNtYXRjaC4iKTsKQEAgLTUz
Myw2ICs1MTksMTEgQEAgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OlJldmFsaWRhdGlvblBvbGljeSBD
YWNoZWRSZXNvdXJjZUxvYWRlcjo6ZGV0ZXJtaW5lUmV2YWxpZGEKICAgICAvLyBvZiB0aGluZ3Mg
YWJvdXQgaG93IHJldmFsaWRhdGlvbiB3b3JrcyB0aGF0IG1hbnVhbCBoZWFkZXJzIHZpb2xhdGUs
IHNvIHB1bnQgdG8gUmVsb2FkIGluc3RlYWQuCiAgICAgaWYgKHJlcXVlc3QuaXNDb25kaXRpb25h
bCgpKQogICAgICAgICByZXR1cm4gUmVsb2FkOworCisgICAgLy8gRG8gbm90IGxvYWQgZnJvbSBj
YWNoZSBpZiBpbWFnZXMgYXJlIG5vdCBlbmFibGVkLiBUaGUgbG9hZCBmb3IgdGhpcyBpbWFnZSB3
aWxsIGJlIGJsb2NrZWQKKyAgICAvLyBpbiBDYWNoZWRJbWFnZTo6bG9hZC4KKyAgICBpZiAoaW1h
Z2VEZWZlcnJlZEJ5Q2xpZW50ICYmIGV4aXN0aW5nUmVzb3VyY2UtPnR5cGUoKSA9PSBDYWNoZWRS
ZXNvdXJjZTo6SW1hZ2VSZXNvdXJjZSkKKyAgICAgICAgcmV0dXJuIFJlbG9hZDsKICAgICAKICAg
ICAvLyBEb24ndCByZWxvYWQgcmVzb3VyY2VzIHdoaWxlIHBhc3RpbmcuCiAgICAgaWYgKG1fYWxs
b3dTdGFsZVJlc291cmNlcykKQEAgLTYyOSwxNSArNjIwLDM5IEBAIHZvaWQgQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXI6OnNldEF1dG9Mb2FkSW1hZ2VzKGJvb2wgZW5hYmxlKQogICAgIGlmICghbV9hdXRv
TG9hZEltYWdlcykKICAgICAgICAgcmV0dXJuOwogCisgICAgcmVsb2FkSW1hZ2VzSWZOb3REZWZl
cnJlZCgpOworfQorCit2b2lkIENhY2hlZFJlc291cmNlTG9hZGVyOjpzZXRJbWFnZXNFbmFibGVk
KGJvb2wgZW5hYmxlKQoreworICAgIGlmIChlbmFibGUgPT0gbV9pbWFnZXNFbmFibGVkKQorICAg
ICAgICByZXR1cm47CisKKyAgICBtX2ltYWdlc0VuYWJsZWQgPSBlbmFibGU7CisKKyAgICBpZiAo
IW1faW1hZ2VzRW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgcmVsb2FkSW1hZ2VzSWZO
b3REZWZlcnJlZCgpOworfQorCitib29sIENhY2hlZFJlc291cmNlTG9hZGVyOjpjbGllbnREZWZl
cnNJbWFnZShjb25zdCBLVVJMJiB1cmwpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZyYW1lKCkgJiYg
IWZyYW1lKCktPmxvYWRlcigpLT5jbGllbnQoKS0+YWxsb3dJbWFnZShtX2ltYWdlc0VuYWJsZWQs
IHVybCk7Cit9CisKK2Jvb2wgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnNob3VsZERlZmVySW1hZ2VM
b2FkKGNvbnN0IEtVUkwmIHVybCkgY29uc3QKK3sKKyAgICByZXR1cm4gY2xpZW50RGVmZXJzSW1h
Z2UodXJsKSB8fCAhbV9hdXRvTG9hZEltYWdlczsKK30KKwordm9pZCBDYWNoZWRSZXNvdXJjZUxv
YWRlcjo6cmVsb2FkSW1hZ2VzSWZOb3REZWZlcnJlZCgpCit7CiAgICAgRG9jdW1lbnRSZXNvdXJj
ZU1hcDo6aXRlcmF0b3IgZW5kID0gbV9kb2N1bWVudFJlc291cmNlcy5lbmQoKTsKICAgICBmb3Ig
KERvY3VtZW50UmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGl0ID0gbV9kb2N1bWVudFJlc291cmNlcy5i
ZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291
cmNlID0gaXQtPnNlY29uZC5nZXQoKTsKLSAgICAgICAgaWYgKHJlc291cmNlLT50eXBlKCkgPT0g
Q2FjaGVkUmVzb3VyY2U6OkltYWdlUmVzb3VyY2UpIHsKLSAgICAgICAgICAgIENhY2hlZEltYWdl
KiBpbWFnZSA9IGNvbnN0X2Nhc3Q8Q2FjaGVkSW1hZ2UqPihzdGF0aWNfY2FzdDxjb25zdCBDYWNo
ZWRJbWFnZSo+KHJlc291cmNlKSk7Ci0KLSAgICAgICAgICAgIGlmIChpbWFnZS0+c3RpbGxOZWVk
c0xvYWQoKSkKLSAgICAgICAgICAgICAgICBpbWFnZS0+bG9hZCh0aGlzLCBkZWZhdWx0Q2FjaGVk
UmVzb3VyY2VPcHRpb25zKCkpOwotICAgICAgICB9CisgICAgICAgIGlmIChyZXNvdXJjZS0+dHlw
ZSgpID09IENhY2hlZFJlc291cmNlOjpJbWFnZVJlc291cmNlICYmICFjbGllbnREZWZlcnNJbWFn
ZShyZXNvdXJjZS0+dXJsKCkpKQorICAgICAgICAgICAgY29uc3RfY2FzdDxDYWNoZWRSZXNvdXJj
ZSo+KHJlc291cmNlKS0+bG9hZCh0aGlzLCBkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCkp
OwogICAgIH0KIH0KIApAQCAtNzY5LDcgKzc4NCw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI6OnJlcXVlc3RQcmVsb2FkKENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIFJlc291cmNlUmVx
CiAgICAgaWYgKHR5cGUgPT0gQ2FjaGVkUmVzb3VyY2U6OlNjcmlwdCB8fCB0eXBlID09IENhY2hl
ZFJlc291cmNlOjpDU1NTdHlsZVNoZWV0KQogICAgICAgICBlbmNvZGluZyA9IGNoYXJzZXQuaXNF
bXB0eSgpID8gbV9kb2N1bWVudC0+Y2hhcnNldCgpIDogY2hhcnNldDsKIAotICAgIENhY2hlZFJl
c291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiByZXNvdXJjZSA9IHJlcXVlc3RSZXNvdXJjZSh0
eXBlLCByZXF1ZXN0LCBlbmNvZGluZywgZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpLCBS
ZXNvdXJjZUxvYWRQcmlvcml0eVVucmVzb2x2ZWQsIHRydWUpOworICAgIENhY2hlZFJlc291cmNl
SGFuZGxlPENhY2hlZFJlc291cmNlPiByZXNvdXJjZSA9IHJlcXVlc3RSZXNvdXJjZSh0eXBlLCBy
ZXF1ZXN0LCBlbmNvZGluZywgZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpLCBSZXNvdXJj
ZUxvYWRQcmlvcml0eVVucmVzb2x2ZWQsIHRydWUsIGZhbHNlKTsKICAgICBpZiAoIXJlc291cmNl
IHx8IChtX3ByZWxvYWRzICYmIG1fcHJlbG9hZHMtPmNvbnRhaW5zKHJlc291cmNlLmdldCgpKSkp
CiAgICAgICAgIHJldHVybjsKICAgICByZXNvdXJjZS0+aW5jcmVhc2VQcmVsb2FkQ291bnQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxv
YWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVy
LmgKaW5kZXggZjQ3NTVjMjJmZDhkMmYxYzJhMGU4ZTZkYTgyZTdmOWI1MjNhMTlmYi4uYTFmYjdh
YTUxZDBmZDhlOGRkNDE3YzAxZjI5ZWUyNTQxYzUxMzY5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKQEAgLTk3LDYgKzk3LDEw
IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgYXV0b0xvYWRJbWFnZXMoKSBjb25zdCB7IHJldHVybiBt
X2F1dG9Mb2FkSW1hZ2VzOyB9CiAgICAgdm9pZCBzZXRBdXRvTG9hZEltYWdlcyhib29sKTsKKwor
ICAgIHZvaWQgc2V0SW1hZ2VzRW5hYmxlZChib29sKTsKKworICAgIGJvb2wgc2hvdWxkRGVmZXJJ
bWFnZUxvYWQoY29uc3QgS1VSTCYpIGNvbnN0OwogICAgIAogICAgIENhY2hlUG9saWN5IGNhY2hl
UG9saWN5KCkgY29uc3Q7CiAgICAgCkBAIC0xMjIsMTkgKzEyNiwyMiBAQCBwdWJsaWM6CiAgICAg
dm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAKIHByaXZh
dGU6Ci0gICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IHJlcXVlc3RSZXNv
dXJjZShDYWNoZWRSZXNvdXJjZTo6VHlwZSwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5n
JiBjaGFyc2V0LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmLCBSZXNvdXJjZUxvYWRQcmlv
cml0eSA9IFJlc291cmNlTG9hZFByaW9yaXR5VW5yZXNvbHZlZCwgYm9vbCBpc1ByZWxvYWQgPSBm
YWxzZSk7Ci0gICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IHJldmFsaWRh
dGVSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSosIFJlc291cmNlTG9hZFByaW9yaXR5LCBjb25zdCBS
ZXNvdXJjZUxvYWRlck9wdGlvbnMmKTsKLSAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRS
ZXNvdXJjZT4gbG9hZFJlc291cmNlKENhY2hlZFJlc291cmNlOjpUeXBlLCBSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIFJlc291cmNlTG9hZFByaW9yaXR5LCBjb25zdCBS
ZXNvdXJjZUxvYWRlck9wdGlvbnMmKTsKKyAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRS
ZXNvdXJjZT4gcmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpUeXBlLCBSZXNvdXJjZVJl
cXVlc3QmLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9u
cyYsIFJlc291cmNlTG9hZFByaW9yaXR5ID0gUmVzb3VyY2VMb2FkUHJpb3JpdHlVbnJlc29sdmVk
LCBib29sIGlzUHJlbG9hZCA9IGZhbHNlLCBib29sIGltYWdlRGVmZXJyZWRCeUNsaWVudCA9IGZh
bHNlKTsKKyAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gcmV2YWxpZGF0
ZVJlc291cmNlKENhY2hlZFJlc291cmNlKik7CisgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2Fj
aGVkUmVzb3VyY2U+IGxvYWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6VHlwZSwgUmVzb3VyY2VS
ZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBjaGFyc2V0KTsKICAgICB2b2lkIHJlcXVlc3RQcmVsb2Fk
KENhY2hlZFJlc291cmNlOjpUeXBlLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIGNo
YXJzZXQpOwogCiAgICAgZW51bSBSZXZhbGlkYXRpb25Qb2xpY3kgeyBVc2UsIFJldmFsaWRhdGUs
IFJlbG9hZCwgTG9hZCB9OwotICAgIFJldmFsaWRhdGlvblBvbGljeSBkZXRlcm1pbmVSZXZhbGlk
YXRpb25Qb2xpY3koQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIFJlc291cmNlUmVxdWVzdCYsIGJvb2wg
Zm9yUHJlbG9hZCwgQ2FjaGVkUmVzb3VyY2UqIGV4aXN0aW5nUmVzb3VyY2UpIGNvbnN0OworICAg
IFJldmFsaWRhdGlvblBvbGljeSBkZXRlcm1pbmVSZXZhbGlkYXRpb25Qb2xpY3koQ2FjaGVkUmVz
b3VyY2U6OlR5cGUsIFJlc291cmNlUmVxdWVzdCYsIGJvb2wgZm9yUHJlbG9hZCwgQ2FjaGVkUmVz
b3VyY2UqIGV4aXN0aW5nUmVzb3VyY2UsIGJvb2wgaW1hZ2VEZWZlcnJlZEJ5Q2xpZW50KSBjb25z
dDsKICAgICAKICAgICB2b2lkIG5vdGlmeUxvYWRlZEZyb21NZW1vcnlDYWNoZShDYWNoZWRSZXNv
dXJjZSopOwogICAgIGJvb2wgY2hlY2tJbnNlY3VyZUNvbnRlbnQoQ2FjaGVkUmVzb3VyY2U6OlR5
cGUsIGNvbnN0IEtVUkwmKSBjb25zdDsKIAogICAgIHZvaWQgZ2FyYmFnZUNvbGxlY3REb2N1bWVu
dFJlc291cmNlc1RpbWVyRmlyZWQoVGltZXI8Q2FjaGVkUmVzb3VyY2VMb2FkZXI+Kik7CiAgICAg
dm9pZCBwZXJmb3JtUG9zdExvYWRBY3Rpb25zKCk7CisKKyAgICBib29sIGNsaWVudERlZmVyc0lt
YWdlKGNvbnN0IEtVUkwmKSBjb25zdDsKKyAgICB2b2lkIHJlbG9hZEltYWdlc0lmTm90RGVmZXJy
ZWQoKTsKICAgICAKICAgICBIYXNoU2V0PFN0cmluZz4gbV92YWxpZGF0ZWRVUkxzOwogICAgIG11
dGFibGUgRG9jdW1lbnRSZXNvdXJjZU1hcCBtX2RvY3VtZW50UmVzb3VyY2VzOwpAQCAtMTUyLDgg
KzE1OSw5IEBAIHByaXZhdGU6CiAKICAgICBUaW1lcjxDYWNoZWRSZXNvdXJjZUxvYWRlcj4gbV9n
YXJiYWdlQ29sbGVjdERvY3VtZW50UmVzb3VyY2VzVGltZXI7CiAKLSAgICAvLyAzMCBiaXRzIGxl
ZnQKKyAgICAvLyAyOSBiaXRzIGxlZnQKICAgICBib29sIG1fYXV0b0xvYWRJbWFnZXMgOiAxOwor
ICAgIGJvb2wgbV9pbWFnZXNFbmFibGVkIDogMTsKICAgICBib29sIG1fYWxsb3dTdGFsZVJlc291
cmNlcyA6IDE7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCmluZGV4IGRmNDI1OTY0ZGU2
MTFkYjUzOGY5Y2JiY2M3NjdkMjQyZTEzM2VkMTcuLjMwNjY2YzU2MTk4MzIzOWI4ZDk4OWQyODMz
MTBjZjJmNmI0NmMzYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3Mu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCkBAIC00NiwxMCArNDYs
MTIgQEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0
aWMgdm9pZCBzZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHlJbkFsbEZyYW1lcyhQYWdlKiBwYWdl
KQorc3RhdGljIHZvaWQgc2V0SW1hZ2VMb2FkaW5nU2V0dGluZ3MoUGFnZSogcGFnZSkKIHsKLSAg
ICBmb3IgKEZyYW1lKiBmcmFtZSA9IHBhZ2UtPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBm
cmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkKKyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IHBh
Z2UtPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5l
eHQoKSkgeworICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIo
KS0+c2V0SW1hZ2VzRW5hYmxlZChwYWdlLT5zZXR0aW5ncygpLT5hcmVJbWFnZXNFbmFibGVkKCkp
OwogICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+c2V0
QXV0b0xvYWRJbWFnZXMocGFnZS0+c2V0dGluZ3MoKS0+bG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5
KCkpOworICAgIH0KIH0KIAogLy8gU2V0cyB0aGUgZW50cnkgaW4gdGhlIGZvbnQgbWFwIGZvciB0
aGUgZ2l2ZW4gc2NyaXB0LiBJZiBmYW1pbHkgaXMgdGhlIGVtcHR5IHN0cmluZywgcmVtb3ZlcyB0
aGUgZW50cnkgaW5zdGVhZC4KQEAgLTI5MSw3ICsyOTMsNyBAQCBTZXR0aW5nczo6U2V0dGluZ3Mo
UGFnZSogcGFnZSkKICAgICAsIG1fd2luZG93Rm9jdXNSZXN0cmljdGVkKHRydWUpCiAgICAgLCBt
X2RpYWdub3N0aWNMb2dnaW5nRW5hYmxlZChmYWxzZSkKICAgICAsIG1fc2Nyb2xsaW5nUGVyZm9y
bWFuY2VMb2dnaW5nRW5hYmxlZChmYWxzZSkKLSAgICAsIG1fbG9hZHNJbWFnZXNBdXRvbWF0aWNh
bGx5VGltZXIodGhpcywgJlNldHRpbmdzOjpsb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHlUaW1lckZp
cmVkKQorICAgICwgbV9zZXRJbWFnZUxvYWRpbmdTZXR0aW5nc1RpbWVyKHRoaXMsICZTZXR0aW5n
czo6aW1hZ2VMb2FkaW5nU2V0dGluZ3NUaW1lckZpcmVkKQogICAgICwgbV9pbmNyZW1lbnRhbFJl
bmRlcmluZ1N1cHByZXNzaW9uVGltZW91dEluU2Vjb25kcyhkZWZhdWx0SW5jcmVtZW50YWxSZW5k
ZXJpbmdTdXBwcmVzc2lvblRpbWVvdXRJblNlY29uZHMpCiB7CiAgICAgLy8gQSBGcmFtZSBtYXkg
bm90IGhhdmUgYmVlbiBjcmVhdGVkIHlldCwgc28gd2UgaW5pdGlhbGl6ZSB0aGUgQXRvbWljU3Ry
aW5nCkBAIC00NjYsMTIgKzQ2OCwxMiBAQCB2b2lkIFNldHRpbmdzOjpzZXRMb2Fkc0ltYWdlc0F1
dG9tYXRpY2FsbHkoYm9vbCBsb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkpCiAgICAgLy8gU3RhcnRp
bmcgdGhlc2UgbG9hZHMgc3luY2hyb25vdXNseSBpcyBub3QgaW1wb3J0YW50LiAgQnkgcHV0dGlu
ZyBpdCBvbiBhIDAtZGVsYXksIHByb3Blcmx5IGNsb3NpbmcgdGhlIFBhZ2UgY2FuY2VscyB0aGVt
CiAgICAgLy8gYmVmb3JlIHRoZXkgaGF2ZSBhIGNoYW5jZSB0byByZWFsbHkgc3RhcnQuCiAgICAg
Ly8gU2VlIGh0dHA6Ly93ZWJraXQub3JnL2IvNjA1NzIgZm9yIG1vcmUgZGlzY3Vzc2lvbi4KLSAg
ICBtX2xvYWRzSW1hZ2VzQXV0b21hdGljYWxseVRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKKyAgICBt
X3NldEltYWdlTG9hZGluZ1NldHRpbmdzVGltZXIuc3RhcnRPbmVTaG90KDApOwogfQogCi12b2lk
IFNldHRpbmdzOjpsb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHlUaW1lckZpcmVkKFRpbWVyPFNldHRp
bmdzPiopCit2b2lkIFNldHRpbmdzOjppbWFnZUxvYWRpbmdTZXR0aW5nc1RpbWVyRmlyZWQoVGlt
ZXI8U2V0dGluZ3M+KikKIHsKLSAgICBzZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHlJbkFsbEZy
YW1lcyhtX3BhZ2UpOworICAgIHNldEltYWdlTG9hZGluZ1NldHRpbmdzKG1fcGFnZSk7CiB9CiAK
IHZvaWQgU2V0dGluZ3M6OnNldExvYWRzU2l0ZUljb25zSWdub3JpbmdJbWFnZUxvYWRpbmdTZXR0
aW5nKGJvb2wgbG9hZHNTaXRlSWNvbnMpCkBAIC01MTcsNiArNTE5LDkgQEAgdm9pZCBTZXR0aW5n
czo6c2V0SmF2YUVuYWJsZWRGb3JMb2NhbEZpbGVzKGJvb2wgaXNKYXZhRW5hYmxlZEZvckxvY2Fs
RmlsZXMpCiB2b2lkIFNldHRpbmdzOjpzZXRJbWFnZXNFbmFibGVkKGJvb2wgYXJlSW1hZ2VzRW5h
YmxlZCkKIHsKICAgICBtX2FyZUltYWdlc0VuYWJsZWQgPSBhcmVJbWFnZXNFbmFibGVkOworCisg
ICAgLy8gU2VlIGNvbW1lbnQgaW4gc2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5LgorICAgIG1f
c2V0SW1hZ2VMb2FkaW5nU2V0dGluZ3NUaW1lci5zdGFydE9uZVNob3QoMCk7CiB9CiAKIHZvaWQg
U2V0dGluZ3M6OnNldE1lZGlhRW5hYmxlZChib29sIGlzTWVkaWFFbmFibGVkKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZXR0aW5ncy5oCmluZGV4IDgzOTg2ZjY5NzBiZmQyOGFlMjhlZmE2Yzg5ZDFmYWQ1NDk1NjhiMGEu
LmMxOGRmZDczMDZiNTk1NTJmZjM0MmJkMTdjMGZjMjVjYTU3ZjczMjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
dHRpbmdzLmgKQEAgLTgxOCw4ICs4MTgsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAg
ICAgYm9vbCBtX3Njcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQgOiAxOwogCi0gICAg
ICAgIFRpbWVyPFNldHRpbmdzPiBtX2xvYWRzSW1hZ2VzQXV0b21hdGljYWxseVRpbWVyOwotICAg
ICAgICB2b2lkIGxvYWRzSW1hZ2VzQXV0b21hdGljYWxseVRpbWVyRmlyZWQoVGltZXI8U2V0dGlu
Z3M+Kik7CisgICAgICAgIFRpbWVyPFNldHRpbmdzPiBtX3NldEltYWdlTG9hZGluZ1NldHRpbmdz
VGltZXI7CisgICAgICAgIHZvaWQgaW1hZ2VMb2FkaW5nU2V0dGluZ3NUaW1lckZpcmVkKFRpbWVy
PFNldHRpbmdzPiopOwogICAgICAgICAKICAgICAgICAgZG91YmxlIG1faW5jcmVtZW50YWxSZW5k
ZXJpbmdTdXBwcmVzc2lvblRpbWVvdXRJblNlY29uZHM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCmluZGV4IGJkMjM3NjYwN2Q3MDQxZjE3NzJjMTYxYzIx
MjU5YzU1ZTQxYzMwMjguLmJiOWVlZDZiMTM1NmUxMThhMTU2MmZmNGQyZGMyNDBjMzVmMDViNjcg
MTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcApAQCAtMTAw
LDYgKzEwMCw3IEBAIEludGVybmFsU2V0dGluZ3M6OkJhY2t1cDo6QmFja3VwKFBhZ2UqIHBhZ2Us
IFNldHRpbmdzKiBzZXR0aW5ncykKICAgICAsIG1fY2FuU3RhcnRNZWRpYShwYWdlLT5jYW5TdGFy
dE1lZGlhKCkpCiAgICAgLCBtX29yaWdpbmFsTW9ja1Njcm9sbGJhcnNFbmFibGVkKHNldHRpbmdz
LT5tb2NrU2Nyb2xsYmFyc0VuYWJsZWQoKSkKICAgICAsIG1fbGFuZ0F0dHJpYnV0ZUF3YXJlRm9y
bUNvbnRyb2xVSUVuYWJsZWQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6bGFuZ0F0dHJpYnV0ZUF3
YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQoKSkKKyAgICAsIG1faW1hZ2VzRW5hYmxlZChzZXR0aW5n
cy0+YXJlSW1hZ2VzRW5hYmxlZCgpKQogewogfQogCkBAIC0xMzUsNiArMTM2LDcgQEAgdm9pZCBJ
bnRlcm5hbFNldHRpbmdzOjpCYWNrdXA6OnJlc3RvcmVUbyhQYWdlKiBwYWdlLCBTZXR0aW5ncyog
c2V0dGluZ3MpCiAgICAgcGFnZS0+c2V0Q2FuU3RhcnRNZWRpYShtX2NhblN0YXJ0TWVkaWEpOwog
ICAgIHNldHRpbmdzLT5zZXRNb2NrU2Nyb2xsYmFyc0VuYWJsZWQobV9vcmlnaW5hbE1vY2tTY3Jv
bGxiYXJzRW5hYmxlZCk7CiAgICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0TGFuZ0F0dHJp
YnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQobV9sYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29u
dHJvbFVJRW5hYmxlZCk7CisgICAgc2V0dGluZ3MtPnNldEltYWdlc0VuYWJsZWQobV9pbWFnZXNF
bmFibGVkKTsKIH0KIAogSW50ZXJuYWxTZXR0aW5ncyogSW50ZXJuYWxTZXR0aW5nczo6ZnJvbShQ
YWdlKiBwYWdlKQpAQCAtNjU5LDQgKzY2MSwxMCBAQCB2b2lkIEludGVybmFsU2V0dGluZ3M6OnNl
dExhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAg
ICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRMYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29udHJv
bFVJRW5hYmxlZChlbmFibGVkKTsKIH0KIAordm9pZCBJbnRlcm5hbFNldHRpbmdzOjpzZXRJbWFn
ZXNFbmFibGVkKGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgSW50ZXJu
YWxTZXR0aW5nc0d1YXJkRm9yU2V0dGluZ3MoKTsKKyAgICBzZXR0aW5ncygpLT5zZXRJbWFnZXNF
bmFibGVkKGVuYWJsZWQpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFsU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxT
ZXR0aW5ncy5oCmluZGV4IDJjMDczZGY2ZWVkYTRmMDZlM2VlYTBhYjNkMWE0N2NmNDQ2OTE5NWEu
LmJlODgxMGRlNjY4MmJjODdkNDQ3NmJmOTNkOWEwZDgwMjlhZTA5MDggMTAwNzU1Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5oCkBAIC04Miw2ICs4Miw3IEBAIHB1YmxpYzoK
ICAgICAgICAgYm9vbCBtX2NhblN0YXJ0TWVkaWE7CiAgICAgICAgIGJvb2wgbV9vcmlnaW5hbE1v
Y2tTY3JvbGxiYXJzRW5hYmxlZDsKICAgICAgICAgYm9vbCBtX2xhbmdBdHRyaWJ1dGVBd2FyZUZv
cm1Db250cm9sVUlFbmFibGVkOworICAgICAgICBib29sIG1faW1hZ2VzRW5hYmxlZDsKICAgICB9
OwogCiAgICAgdHlwZWRlZiBSZWZDb3VudGVkU3VwcGxlbWVudDxQYWdlLCBJbnRlcm5hbFNldHRp
bmdzPiBTdXBlclR5cGU7CkBAIC0xNDcsNiArMTQ4LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0
TWVtb3J5SW5mb0VuYWJsZWQoYm9vbCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgc2V0U3Rv
cmFnZUJsb2NraW5nUG9saWN5KGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2
b2lkIHNldExhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVkKGJvb2wpOworICAg
IHZvaWQgc2V0SW1hZ2VzRW5hYmxlZChib29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNvZGUmKTsKKwog
cHJpdmF0ZToKICAgICBleHBsaWNpdCBJbnRlcm5hbFNldHRpbmdzKFBhZ2UqKTsKICAgICB2aXJ0
dWFsIHZvaWQgaG9zdERlc3Ryb3llZCgpIE9WRVJSSURFIHsgbV9wYWdlID0gMDsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5pZGwKaW5kZXggOTY3M2QyZjFjMjVk
MWI0YzEyYzU4ZDI5NGNjOWU3YjViMjMyMmVhZi4uZDhhOGFhZjhiYmE4MTU4MjA0Yzk1Njk0YjE0
YjgzNDMxY2M2Mjg1MyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bFNldHRpbmdzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGlu
Z3MuaWRsCkBAIC04Miw2ICs4Miw3IEBAIG1vZHVsZSB3aW5kb3cgewogI2VuZGlmCiAgICAgICAg
IHZvaWQgc2V0TWVtb3J5SW5mb0VuYWJsZWQoaW4gYm9vbGVhbiBlbmFibGVkKSByYWlzZXMoRE9N
RXhjZXB0aW9uKTsKICAgICAgICAgdm9pZCBzZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koaW4gRE9N
U3RyaW5nIHBvbGljeSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAgIHZvaWQgc2V0SW1h
Z2VzRW5hYmxlZChpbiBib29sZWFuIGVuYWJsZWQpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAg
IH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZiBiL1Nv
dXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgppbmRleCAxY2RjNDA0YzBjNmFkMjgwNzczZmZk
ODU2OWQ2YzhkODRhNmZhNGJkLi5iYzMyYWQ1ZDdjOTViOTQ0OGZiZDBiMWI3NzEyMDY5ZDI3OGFm
ZmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKKysrIGIvU291
cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCkBAIC0yMjIsNiArMjIyLDcgQEAgRVhQT1JUUwog
ICAgICAgICA/c2V0RE9NRXhjZXB0aW9uQFdlYkNvcmVAQFlBWFBBVkV4ZWNTdGF0ZUBKU0NAQEhA
WgogICAgICAgICA/c2V0RmFudGFzeUZvbnRGYW1pbHlAU2V0dGluZ3NAV2ViQ29yZUBAUUFFWEFC
VkF0b21pY1N0cmluZ0BXVEZAQFc0VVNjcmlwdENvZGVAQEBaCiAgICAgICAgID9zZXRGaXhlZEZv
bnRGYW1pbHlAU2V0dGluZ3NAV2ViQ29yZUBAUUFFWEFCVkF0b21pY1N0cmluZ0BXVEZAQFc0VVNj
cmlwdENvZGVAQEBaCisgICAgICAgID9zZXRJbWFnZXNFbmFibGVkQFNldHRpbmdzQFdlYkNvcmVA
QFFBRVhfTkBaCiAgICAgICAgID9zZXRNb2NrU2Nyb2xsYmFyc0VuYWJsZWRAU2V0dGluZ3NAV2Vi
Q29yZUBAU0FYX05AWgogICAgICAgICA/bW9ja1Njcm9sbGJhcnNFbmFibGVkQFNldHRpbmdzQFdl
YkNvcmVAQFNBX05YWgogICAgICAgICA/c2V0VXNlc092ZXJsYXlTY3JvbGxiYXJzQFNldHRpbmdz
QFdlYkNvcmVAQFNBWF9OQFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5m
aWx0ZXIgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCmluZGV4IGQ1ZDU0MTA2YTZi
MWIzMmY3YjIzNDBjZjk3NjI2YmEzNjg3OWUzOWMuLjYyMzA1YzRmYWRkYzdiYWVmOTdmMzMyMWFh
MzIwNWJlYjQ3YWQ4MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0
ZXIKKysrIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgpAQCAtMTQ1LDYgKzE0NSw3
IEBAIF9aTjdXZWJDb3JlMTRTY3JvbGxhYmxlQXJlYTI4c2V0U2Nyb2xsT2Zmc2V0RnJvbUludGVy
bmFsc0VSS05TXzhJbnRQb2ludEU7CiBfWk43V2ViQ29yZTEwU2Nyb2xsVmlldzIzc2V0U2Nyb2xs
YmFyc1N1cHByZXNzZWRFYmI7CiBfWk43V2ViQ29yZTEwU2Nyb2xsVmlldzIxc2V0RGVsZWdhdGVz
U2Nyb2xsaW5nRWI7CiBfWk43V2ViQ29yZTROb2RlMTRyZW1vdmVkTGFzdFJlZkV2OworX1pON1dl
YkNvcmU4U2V0dGluZ3MxNnNldEltYWdlc0VuYWJsZWRFYjsKIF9aTjdXZWJDb3JlOFNldHRpbmdz
MThzZXRGaXhlZEZvbnRGYW1pbHlFUktOM1dURjEyQXRvbWljU3RyaW5nRTExVVNjcmlwdENvZGU7
CiBfWk43V2ViQ29yZThTZXR0aW5nczE4c2V0U2VyaWZGb250RmFtaWx5RVJLTjNXVEYxMkF0b21p
Y1N0cmluZ0UxMVVTY3JpcHRDb2RlOwogX1pON1dlYkNvcmU4U2V0dGluZ3MyMHNldEN1cnNpdmVG
b250RmFtaWx5RVJLTjNXVEYxMkF0b21pY1N0cmluZ0UxMVVTY3JpcHRDb2RlOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDY2
ZDkzZmViNTgwYTViZDM5MWMwYzViZTcxZjViNDdmNzBlOWEwY2IuLjIzMzhhOTU0OWY0ZDQ4MWY2
MjA5OWU4Y2JiYWNkNjhlM2E0N2Y2NTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OCBAQAorMjAxMi0wOS0y
MSAgQm8gTGl1ICA8Ym9saXVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlbGFuZCAiQWRkIGlu
LXBsYWNlIHJlbG9hZCBiZWhhdmlvciB0byBJbWFnZXNFbmFibGVkIHNldHRpbmciIHdpdGggb3B0
aW1pemF0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTcwNTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBSZWxhbmRpbmcgMTI4NzgwLCAxMjg2NzYsIDEyODY0NS4gV2FzIHJldmVydGVkIGluIDEyODkx
NCBkdWUgdG8KKyAgICAgICAgcGVyZm9ybWFuY2UgcmVncmVzc2lvbiBpbiBDaHJvbWl1bS4KKwor
ICAgICAgICBOZXcgY2hhbmdlcyBpbiBhZGRpdGlvbiB0byBwcmV2aW91c2x5IHJldmVydGVkIHBh
dGNoZXM6CisKKyAgICAgICAgUmVmYWN0b3JlZCBDYWNoZWRSZXNvdXJjZTo6cmVxdWVzdFJlc291
cmNlLCBsb2FkUmVzb3VyY2UsIGFuZAorICAgICAgICByZXZhbGlkYXRlUmVzb3VyY2UuIE1vdmVk
IENhY2hlZFJlc291cmNlOjpsb2FkIG1ldGhvZCB0byBlbmQgb2YKKyAgICAgICAgcmVxdWVzdFJl
c291cmNlIHNvIHRoZXJlIGlzIG9uZSBwbGFjZSB3aGVyZSBsb2FkIGlzIGNhbGxlZCBmb3IgYWxs
CisgICAgICAgIHJlc291cmNlcy4KKworICAgICAgICBBZGRlZCBhIGJvb2wgcGFyYW1ldGVyIGZv
ciByZXF1ZXN0UmVzb3VyY2UgYW5kCisgICAgICAgIGRldGVybWluZVJldmFsaWRhdGlvblBvbGlj
eSBzbyB0aGF0IEZyYW1lTG9hZGVyQ2xpZW50OjphbGxvd0ltYWdlIGNhbGwKKyAgICAgICAgZG8g
bm90IG5lZWQgdG8gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzLgorCisgICAgICAgIFJlbW92ZWQg
Q2FjaGVkSW1hZ2U6OmxvYWQgY2FsbCBpbiByZXF1ZXN0SW1hZ2Ugc28gaXQgaXMgbm90IGNhbGxl
ZAorICAgICAgICB0d2ljZS4KKworICAgICAgICBSZW1vdmVkIHVubmVjZXNzYXJ5IEZyYW1lLmgg
aW5jbHVkZXMgaW4gQ2FjaGVkUmVzb3VyY2UgYW5kCisgICAgICAgIENhY2hlZEltYWdlLgorCisg
ICAgICAgIFJlbW92ZWQgZGVhZCBsb2FkKCkgbWV0aG9kIGRlY2xhcmF0aW9uIGluIENhY2hlZElt
YWdlLgorCisgICAgICAgIFVwZGF0ZWQgdGV4dCBleHBlY3RhdGlvbiBmb3IgdHdvIGltYWdlLXBl
cm1pc3Npb25zIHRlc3RzIHRvIHJlZmxlY3QKKyAgICAgICAgdGhlIHJlbW92ZWQgY2FsbHMgdG8g
YWxsb3dJbWFnZS4KKworICAgICAgICAqIGZhc3QvbG9hZGVyL2Rpc3BsYXktaW1hZ2UtdW5zZXQt
YWxsb3dzLWNhY2hlZC1pbWFnZS1sb2FkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9sb2FkZXIvZGlzcGxheS1pbWFnZS11bnNldC1hbGxvd3MtY2FjaGVkLWltYWdlLWxvYWQu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9sb2FkZXIvZGlzcGxheS1pbWFnZS11bnNldC1j
YW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0LWNhbi1ibG9jay1p
bWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2xvYWRlci9pbWFnZXMtZW5hYmxlZC11bnNldC1jYW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxv
YWQtaW4tcGxhY2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2xvYWRlci9p
bWFnZXMtZW5hYmxlZC11bnNldC1jYW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxh
Y2UuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9sb2FkZXIvcmVzb3VyY2VzL2ltYWdlMS5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2xvYWRlci9yZXNvdXJjZXMvaW1hZ2UyLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3Blcm1pc3Npb25jbGllbnQvaW1h
Z2UtcGVybWlzc2lvbnMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVt
L3Blcm1pc3Npb25jbGllbnQvaW1hZ2UtcGVybWlzc2lvbnMuaHRtbDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS9wZXJtaXNzaW9uY2xpZW50L3Jlc291cmNlcy9pbWFnZS5odG1sOgorICAg
ICAgICAqIHBsYXRmb3JtL3drMi9Ta2lwcGVkOgorCiAyMDEyLTA5LTIxICBHYXZpbiBCYXJyYWNs
b3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KIAogICAgICAgICBHbG9iYWwgTWF0aCBvYmpl
Y3Qgc2hvdWxkIGJlIGNvbmZpZ3VyYWJsZSBidXQgaXNuJ3QKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvbG9hZGVyL2Rpc3BsYXktaW1hZ2UtdW5zZXQtYWxsb3dzLWNhY2hlZC1pbWFnZS1s
b2FkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2Rpc3BsYXktaW1hZ2Ut
dW5zZXQtYWxsb3dzLWNhY2hlZC1pbWFnZS1sb2FkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTE1YWFjMGM1MTVlODA1NmFiM2NjYzk1MTkwMzczMzI4ZjgzN2Y4Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZGlzcGxheS1pbWFnZS11bnNldC1hbGxvd3MtY2Fj
aGVkLWltYWdlLWxvYWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMiBAQAorVGVzdCB0aGF0IFdl
YktpdERpc3BsYXlJbWFnZXNLZXkgdW5zZXQgZG9lcyBub3QgYmxvY2sgaW1hZ2UgaW4gY2FjaGUu
CitQQVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9kaXNwbGF5LWltYWdl
LXVuc2V0LWFsbG93cy1jYWNoZWQtaW1hZ2UtbG9hZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9s
b2FkZXIvZGlzcGxheS1pbWFnZS11bnNldC1hbGxvd3MtY2FjaGVkLWltYWdlLWxvYWQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wOGQ3MDNkNTA0ZWFhNDViM2Y0ZWZmZWQwYjQ3YjQ3N2U0ODE4ZmQ3Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZGlzcGxheS1pbWFnZS11bnNl
dC1hbGxvd3MtY2FjaGVkLWltYWdlLWxvYWQuaHRtbApAQCAtMCwwICsxLDM5IEBACis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdD4KKy8vIE9wZW5zIHR3byB3aW5kb3dzIGNvbnRhaW5pbmcgdGhlIHNh
bWUgaW1hZ2UuIEZpcnN0IHdpbmRvdyB3aWxsIHBvcHVsYXRlIHRoZSBjYWNoZSB3aXRoCisvLyBp
bWFnZS4gVGhlIHNlY29uZCB3aW5kb3cgaXMgb3BlbmVkIHdpdGggV2ViS2l0RGlzcGxheUltYWdl
c0tleSB1bnNldCwgYnV0IGltYWdlIHNob3VsZAorLy8gc3RpbGwgbG9hZCBzaW5jZSBpdCBpcyBp
biBjYWNoZS4KK2Z1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikgeworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgdGVzdFJ1bm5l
ci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0Q2FuT3BlbldpbmRvd3Mo
KTsKKyAgICAgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdFVzZXNQYWdl
Q2FjaGVQcmVmZXJlbmNlS2V5IiwgMSk7CisKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9ICdGQUlMVVJFOiBpbWFnZTEuaHRtbCBub3QgbG9hZGVk
JzsKKyAgICAgICAgd2luZG93Lm9wZW4oInJlc291cmNlcy9pbWFnZTEuaHRtbCIsICJfYmxhbmsi
KTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGltYWdlMUxvYWRlZCgpCit7CisgICAgdGVzdFJ1bm5l
ci5vdmVycmlkZVByZWZlcmVuY2UoJ1dlYktpdERpc3BsYXlJbWFnZXNLZXknLCAwKTsKKyAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1MID0gJ0ZBSUxVUkU6IGlt
YWdlMi5odG1sIG5vdCBsb2FkZWQnOworICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
e3dpbmRvdy5vcGVuKCJyZXNvdXJjZXMvaW1hZ2UyLmh0bWwiLCAiX2JsYW5rIik7fSwgMCk7Cit9
CisKK2Z1bmN0aW9uIGltYWdlMkxvYWRlZCgpCit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9ICdQQVNTJzsKKwkJdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KK1Rl
c3QgdGhhdCBXZWJLaXREaXNwbGF5SW1hZ2VzS2V5IHVuc2V0IGRvZXMgbm90IGJsb2NrIGltYWdl
IGluIGNhY2hlLgorPGRpdiBpZD0icmVzdWx0Ij5GQUlMVVJFOiBUZXN0IHNjcmlwdCBkaWRuJ3Qg
cnVuLjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJl
bG9hZC1pbi1wbGFjZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9kaXNw
bGF5LWltYWdlLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2E5ZWY1MzQ3OWI4YjVhYTRiNDY0ZjY1N2YyYWNmN2U1
YmI0NDdkMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2Rpc3Bs
YXktaW1hZ2UtdW5zZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1jYW4tcmVsb2FkLWluLXBsYWNlLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKK1Rlc3QgdGhhdCBEaXNwbGF5SW1hZ2VzIGRpc2Fi
bGVkIGNhbiBibG9jayBodHRwIGltYWdlIGFuZCBjYW4gYmUgcmVsb2FkZWQgaW4tcGxhY2Ugd2hl
biB0b2dnbGVkLgorU1VDQ0VTUworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRl
ci9kaXNwbGF5LWltYWdlLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1w
bGFjZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZGlzcGxheS1pbWFnZS11bnNldC1j
YW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4z
MTJmNTA5ZDU0M2I3YTVhN2Q0N2QxOTFiNzg4NjYzZTZkMjYxOTc3Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZGlzcGxheS1pbWFnZS11bnNldC1jYW4tYmxvY2st
aW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UuaHRtbApAQCAtMCwwICsxLDQ3IEBACis8aHRt
bD4KKzxoZWFkPgorPHNjcmlwdD4KKy8vIFNldHRpbmcgV2ViS2l0RGlzcGxheUltYWdlc0tleSBp
cyBhc3luY2hyb25vdXMsIHNvIHVzaW5nIHF1ZXVlUmVsb2FkIGFuZCBzZXRJbnRlcnZhbCB0byBj
aGVjayB3aGVuIHRoZSBzZXR0aW5nIGFjdHVhbGx5IHRha2UgZWZmZWN0LgorCit2YXIgaW50ZXJ2
YWxJZDsKK3ZhciBpbWFnZU9ubG9hZEZpcmVkID0gMDsKKworaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgd2luZG93LmludGVybmFscy5z
ZXR0aW5ncy5zZXRJbWFnZXNFbmFibGVkKHRydWUpOworICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQ
cmVmZXJlbmNlKCdXZWJLaXREaXNwbGF5SW1hZ2VzS2V5JywgMCk7CisgICAgdGVzdFJ1bm5lci5x
dWV1ZVJlbG9hZCgpOworfQorCitmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICB2YXIgaW1hZ2Ug
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW1hZ2UnKTsKKyAgICBpZiAoaW1hZ2UubmF0dXJh
bEhlaWdodCAhPSAwIHx8IGltYWdlLm5hdHVyYWxXaWR0aCAhPSAwIHx8IGltYWdlT25sb2FkRmly
ZWQgIT0gMCkgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5u
ZXJIVE1MID0gJ0ZBSUxVUkU6IEltYWdlIHNob3VsZCBub3QgYmUgbG9hZGVkIHdoZW4gRGlzcGxh
eUltYWdlIGlzIHVuc2V0JzsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHRlc3RSdW5u
ZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCdXZWJLaXREaXNwbGF5SW1hZ2VzS2V5JywgMSk7CisgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9ICdGQUlMVVJFOiBJ
bWFnZSBzaG91bGQgcmVsb2FkIGluLXBsYWNlIHdoZW4gRGlzcGFseUltYWdlIGlzIGNoYW5nZXMg
ZnJvbSB1bnNldCB0byBzZXQnOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAg
IGludGVydmFsSWQgPSB3aW5kb3cuc2V0SW50ZXJ2YWwocnVuVGVzdFJlc3QsIDEwKTsKK30KKwor
ZnVuY3Rpb24gcnVuVGVzdFJlc3QoKQoreworICAgIHZhciBpbWFnZSA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdpbWFnZScpOworICAgIGlmIChpbWFnZS5uYXR1cmFsSGVpZ2h0ID09IDMzICYm
IGltYWdlLm5hdHVyYWxXaWR0aCA9PSAzNyAmJiBpbWFnZU9ubG9hZEZpcmVkID09IDEpIHsKKyAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9ICdTVUND
RVNTJzsKKyAgICAgICAgd2luZG93LmNsZWFySW50ZXJ2YWwoaW50ZXJ2YWxJZCk7CisgICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgIH0KK30KKzwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorICBUZXN0IHRoYXQgRGlzcGxheUltYWdlcyBkaXNh
YmxlZCBjYW4gYmxvY2sgaHR0cCBpbWFnZSBhbmQgY2FuIGJlIHJlbG9hZGVkIGluLXBsYWNlIHdo
ZW4gdG9nZ2xlZC4KKyAgPGRpdiBpZD0icmVzdWx0Ij5GQUlMVVJFOiBUZXN0IHNjcmlwdCBkaWRu
J3QgcnVuLjwvZGl2PgorICA8aW1nIGlkPSJpbWFnZSIgc3JjPSIuLi9pbWFnZXMvcmVzb3VyY2Vz
L292YWwucG5nIiBvbmxvYWQ9ImltYWdlT25sb2FkRmlyZWQ9MTsiPgorPC9ib2R5PgorPC9odG1s
PgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9pbWFnZXMtZW5hYmxlZC11
bnNldC1jYW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvaW1hZ2VzLWVuYWJsZWQtdW5zZXQtY2FuLWJsb2Nr
LWltYWdlLWFuZC1jYW4tcmVsb2FkLWluLXBsYWNlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45
NTFkNDYwMWNjYzNjYTE4ZDhjZmQ1YTk2OTc4MTExZmZiMGM2MDIwCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvaW1hZ2VzLWVuYWJsZWQtdW5zZXQtY2FuLWJsb2Nr
LWltYWdlLWFuZC1jYW4tcmVsb2FkLWluLXBsYWNlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMg
QEAKK1Rlc3QgdGhhdCBFbmFibGVJbWFnZXMgdW5zZXQgY2FuIGJsb2NrIGltYWdlIGFuZCBjYW4g
YmUgcmVsb2FkZWQgaW4tcGxhY2Ugd2hlbiB0b2dnbGVkLgorU1VDQ0VTUworCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9pbWFnZXMtZW5hYmxlZC11bnNldC1jYW4tYmxvY2st
aW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbG9h
ZGVyL2ltYWdlcy1lbmFibGVkLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1p
bi1wbGFjZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNmNDhlNjI4ZGRkNjBkNWJhZmEyYjE0ZjA4MzYwYjRi
NmU2YTY2M2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9pbWFn
ZXMtZW5hYmxlZC11bnNldC1jYW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2Uu
aHRtbApAQCAtMCwwICsxLDQ3IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKy8vIFNldHRp
bmcgSW1hZ2VzRW5hYmxlZCBpcyBhc3luY2hyb25vdXMsIHNvIHVzaW5nIHF1ZXVlUmVsb2FkIGFu
ZCBzZXRJbnRlcnZhbCB0byBjaGVjayB3aGVuIHRoZSBzZXR0aW5nIGFjdHVhbGx5IHRha2UgZWZm
ZWN0LgorCit2YXIgaW50ZXJ2YWxJZDsKK3ZhciBpbWFnZU9ubG9hZEZpcmVkID0gMDsKKworaWYg
KHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAg
dGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoJ1dlYktpdERpc3BsYXlJbWFnZXNLZXknLCAx
KTsKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldEltYWdlc0VuYWJsZWQoZmFsc2Up
OworICAgIHRlc3RSdW5uZXIucXVldWVSZWxvYWQoKTsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgp
Cit7CisgICAgdmFyIGltYWdlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ltYWdlJyk7Cisg
ICAgaWYgKGltYWdlLm5hdHVyYWxIZWlnaHQgIT0gMCB8fCBpbWFnZS5uYXR1cmFsV2lkdGggIT0g
MCB8fCBpbWFnZU9ubG9hZEZpcmVkICE9IDApIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9ICdGQUlMVVJFOiBJbWFnZSBzaG91bGQgbm90IGJl
IGxvYWRlZCB3aGVuIEltYWdlc0VuYWJsZWQgaXMgdW5zZXQnOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRJbWFnZXNFbmFibGVkKHRy
dWUpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSAn
RkFJTFVSRTogSW1hZ2Ugc2hvdWxkIHJlbG9hZCBpbi1wbGFjZSB3aGVuIEltYWdlc0VuYWJsZWQg
aXMgY2hhbmdlcyBmcm9tIHVuc2V0IHRvIHNldCc7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxE
b25lKCk7CisgICAgaW50ZXJ2YWxJZCA9IHdpbmRvdy5zZXRJbnRlcnZhbChydW5UZXN0UmVzdCwg
MTApOworfQorCitmdW5jdGlvbiBydW5UZXN0UmVzdCgpCit7CisgICAgdmFyIGltYWdlID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ltYWdlJyk7CisgICAgaWYgKGltYWdlLm5hdHVyYWxIZWln
aHQgPT0gMzMgJiYgaW1hZ2UubmF0dXJhbFdpZHRoID09IDM3IHx8IGltYWdlT25sb2FkRmlyZWQg
PT0gMSkgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJI
VE1MID0gJ1NVQ0NFU1MnOworICAgICAgICB3aW5kb3cuY2xlYXJJbnRlcnZhbChpbnRlcnZhbElk
KTsKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgfQorfQorPC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CisgIFRlc3QgdGhhdCBFbmFibGVJ
bWFnZXMgdW5zZXQgY2FuIGJsb2NrIGltYWdlIGFuZCBjYW4gYmUgcmVsb2FkZWQgaW4tcGxhY2Ug
d2hlbiB0b2dnbGVkLgorICA8ZGl2IGlkPSJyZXN1bHQiPkZBSUxVUkU6IFRlc3Qgc2NyaXB0IGRp
ZG4ndCBydW4uPC9kaXY+CisgIDxpbWcgaWQ9ImltYWdlIiBzcmM9Ii4uL2ltYWdlcy9yZXNvdXJj
ZXMvb3ZhbC5wbmciIG9ubG9hZD0iaW1hZ2VPbmxvYWRGaXJlZD0xOyI+Cis8L2JvZHk+Cis8L2h0
bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3Jlc291cmNlcy9pbWFn
ZTEuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3Jlc291cmNlcy9pbWFnZTEuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jZDY5ZGMzYzJhMGQ2YTE1ZTA4OTYzNzkxMDMyNTRmNWVhYTM0ZGMxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvcmVzb3VyY2VzL2ltYWdlMS5o
dG1sCkBAIC0wLDAgKzEsNSBAQAorPGh0bWw+Cis8Ym9keT4KKyAgPGltZyBzcmM9Ii4uLy4uL2lt
YWdlcy9yZXNvdXJjZXMvb3ZhbC5wbmciIG9ubG9hZD0id2luZG93Lm9wZW5lci5pbWFnZTFMb2Fk
ZWQoKTsiPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9s
b2FkZXIvcmVzb3VyY2VzL2ltYWdlMi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvcmVz
b3VyY2VzL2ltYWdlMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwMzdmZmYwY2U2NTY3NzdjYzAyZThhZTZj
YzgxY2Y2ZWE0NDJhYWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRl
ci9yZXNvdXJjZXMvaW1hZ2UyLmh0bWwKQEAgLTAsMCArMSw1IEBACis8aHRtbD4KKzxib2R5Pgor
ICA8aW1nIHNyYz0iLi4vLi4vaW1hZ2VzL3Jlc291cmNlcy9vdmFsLnBuZyIgb25sb2FkPSJ3aW5k
b3cub3BlbmVyLmltYWdlMkxvYWRlZCgpOyI+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9wZXJtaXNzaW9uY2xpZW50L2ltYWdlLXBl
cm1pc3Npb25zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Bl
cm1pc3Npb25jbGllbnQvaW1hZ2UtcGVybWlzc2lvbnMtZXhwZWN0ZWQudHh0CmluZGV4IDYwZTc2
YTUyM2FkZjI2NDQ2NTMzNTgyOTZmN2NiOWViNDM4ZDNmOWYuLmU2MDdhMTAxMzExMjgzYjdhNGZj
MDU3OWJjNmFiNWEyZmUyNDEyMTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL3Blcm1pc3Npb25jbGllbnQvaW1hZ2UtcGVybWlzc2lvbnMtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Blcm1pc3Npb25jbGllbnQvaW1hZ2Ut
cGVybWlzc2lvbnMtZXhwZWN0ZWQudHh0CkBAIC01LDYgKzUsNCBAQCBQRVJNSVNTSU9OIENMSUVO
VDogYWxsb3dJbWFnZSgoZmlsZSB0ZXN0KTpwbGF0Zm9ybS9jaHJvbWl1bS9wZXJtaXNzaW9uY2xp
ZW50L3JlcwogCiAKIFBBU1M6IGZpcnN0IGltYWdlIGxvYWRlZAotUEFTUzogZXJyb3IgZXZlbnQg
Zm9yIG5vdCBjYWNoZWQgaW1hZ2UKLVBBU1M6IGVycm9yIGV2ZW50IGZvciBpbWFnZSBmcm9tIGNh
Y2hlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Blcm1pc3Np
b25jbGllbnQvaW1hZ2UtcGVybWlzc2lvbnMuaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL3Blcm1pc3Npb25jbGllbnQvaW1hZ2UtcGVybWlzc2lvbnMuaHRtbAppbmRleCA3YjVl
MmM1NzVjOTg5NzRhYzA4Zjg3ZTlmOGMxMjA3MTBhZGJmZWYwLi5mNTdhM2I3MDcwNDMzMDljMmZh
YjJmZjkyYzNlOWUyYzZlNDE5NjQ3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS9wZXJtaXNzaW9uY2xpZW50L2ltYWdlLXBlcm1pc3Npb25zLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vcGVybWlzc2lvbmNsaWVudC9pbWFnZS1wZXJtaXNz
aW9ucy5odG1sCkBAIC0xLDYgKzEsOSBAQAogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQ+CisvLyBC
bG9ja2VkIGltYWdlcyBjYW4gYmUgcmVsb2FkZWQsIHNvIG5laXRoZXIgb25sb2FkIG5vciBvbmVy
cm9yIGlzIGNhbGxlZC4KKy8vIE9ubHkgY2hlY2sgaGVyZSB0aGF0IG9ubG9hZCBpcyBuZXZlciBj
YWxsZWQgd2hlbiBpbWFnZSBpcyBibG9ja2VkLgorCiBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
ICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICB0ZXN0UnVubmVyLmR1bXBQZXJtaXNz
aW9uQ2xpZW50Q2FsbGJhY2tzKCk7CkBAIC0yMSwxNCArMjQsMTIgQEAgZnVuY3Rpb24gbG9hZGVk
KCkKIAogICAgIC8vIExvYWQgYW4gaW1hZ2Ugbm90IGluIGNhY2hlLgogICAgIHZhciBpbWcgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbWcnKTsKLSAgICBpbWcub25lcnJvciA9IGZ1bmN0aW9u
ICgpIHsgbG9nKCJQQVNTOiBlcnJvciBldmVudCBmb3Igbm90IGNhY2hlZCBpbWFnZSIpOyB9CiAg
ICAgaW1nLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsgbG9nKCJGQUlMOiBub3QgY2FjaGVkIGltYWdl
IGxvYWRlZCIpOyB9CiAgICAgaW1nLnNyYyA9ICJyZXNvdXJjZXMvYm9zdG9uLmdpZj9ub2NhY2hl
IjsKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW1nIikuYXBwZW5kQ2hpbGQoaW1nKTsK
IAogICAgIC8vIExvYWQgYW4gaW1hZ2UgZnJvbSBjYWNoZS4KICAgICB2YXIgaW1nRnJvbUNhY2hl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW1nJyk7Ci0gICAgaW1nRnJvbUNhY2hlLm9uZXJy
b3IgPSBmdW5jdGlvbiAoKSB7IGxvZygiUEFTUzogZXJyb3IgZXZlbnQgZm9yIGltYWdlIGZyb20g
Y2FjaGUiKTsgfQogICAgIGltZ0Zyb21DYWNoZS5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7IGxvZygi
RkFJTDogaW1hZ2UgZnJvbSBjYWNoZSBsb2FkZWQiKTsgfQogICAgIGltZ0Zyb21DYWNoZS5zcmMg
PSAicmVzb3VyY2VzL2Jvc3Rvbi5naWYiOwogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJp
bWciKS5hcHBlbmRDaGlsZChpbWdGcm9tQ2FjaGUpOwpAQCAtNDEsNyArNDIsNyBAQCBmdW5jdGlv
biBsb2FkZWQoKQogPC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxpbWcgc3JjPSJyZXNvdXJj
ZXMvYm9zdG9uLmdpZiIgb25sb2FkPSJsb2FkZWQoKSIgb25lcnJvcj0ibG9nKCdGQUlMOiBlcnJv
ciBldmVudCBmb3IgZmlyc3QgaW1hZ2UnKSI+Cis8aW1nIHNyYz0icmVzb3VyY2VzL2Jvc3Rvbi5n
aWYiIG9ubG9hZD0ibG9hZGVkKCkiPgogPGRpdiBpZD0iaW1nIj48L2Rpdj4KIDxkaXYgaWQ9InJl
c3VsdHMiPjwvZGl2PgogPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vcGVybWlzc2lvbmNsaWVudC9yZXNvdXJjZXMvaW1hZ2UuaHRtbCBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL3Blcm1pc3Npb25jbGllbnQvcmVzb3VyY2VzL2ltYWdlLmh0
bWwKaW5kZXggZTJhZGZlM2YwYjYyMWFhOGQ5ZmY0ZTE5MGM5MDIyMzA1Y2MwNzBlYi4uMjM5Nzcx
NzEwMWRlZDQ0MGEzMjk1NTgyNmU4NDFjZDFjZDYyM2Y5NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vcGVybWlzc2lvbmNsaWVudC9yZXNvdXJjZXMvaW1hZ2UuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9wZXJtaXNzaW9uY2xpZW50L3Jl
c291cmNlcy9pbWFnZS5odG1sCkBAIC04LDcgKzgsNyBAQCBmdW5jdGlvbiBsb2coYSkKIDwvc2Ny
aXB0PgogPC9oZWFkPgogPGJvZHk+Ci08aW1nIHNyYz0iYm9zdG9uLmdpZiIgb25sb2FkPSJsb2co
J0ZBSUw6IGxvYWQgZXZlbnQgZm9yIGlmcmFtZWQgaW1hZ2UpIiBvbmVycm9yPSJsb2coJ0ZBSUw6
IGVycm9yIGV2ZW50IGZvciBpZnJhbWVkIGltYWdlJykiPgorPGltZyBzcmM9ImJvc3Rvbi5naWYi
IG9ubG9hZD0ibG9nKCdGQUlMOiBsb2FkIGV2ZW50IGZvciBpZnJhbWVkIGltYWdlJykiPgogPGRp
diBpZD0icmVzdWx0cyI+PC9kaXY+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9T
a2lwcGVkCmluZGV4IDliY2JiMTEyYzE4MmQ3YWNiZjVkYzFhOTYzMzQ1ZTM4NDY1ZTYxMGYuLmUy
ODhkNjdiYjc2NmMxYjQ3ZjhhMTVlYmQzNGYzNzQ0MTlkMDE2NWMgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL3drMi9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dr
Mi9Ta2lwcGVkCkBAIC0yMDEsNiArMjAxLDcgQEAgZmFzdC9jYW52YXMvd2ViZ2wvd2ViZ2wtYXJy
YXktaW52YWxpZC1yYW5nZXMuaHRtbAogZmFzdC9jYW52YXMvd2ViZ2wvd2ViZ2wtc3BlY2lmaWMu
aHRtbAogZmFzdC9oYXJuZXNzL292ZXJyaWRlLXByZWZlcmVuY2VzLTIuaHRtbAogZmFzdC9pbWFn
ZXMvYW5pbWF0ZWQtZ2lmLXJlc3RvcmVkLWZyb20tYmZjYWNoZS5odG1sCitmYXN0L2xvYWRlci9k
aXNwbGF5LWltYWdlLXVuc2V0LWFsbG93cy1jYWNoZWQtaW1hZ2UtbG9hZC5odG1sCiBmYXN0L3Rl
eHQvemVyby1mb250LXNpemUuaHRtbAogCiAjIFdlYktpdFRlc3RSdW5uZXIgbmVlZHMgdG8gc3Vw
cG9ydCBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wRE9NQXNXZWJBcmNoaXZlCkBAIC0zMzksNiAr
MzQwLDggQEAgc3ZnL2N1c3RvbS9zdmctYWxsb3dlZC1pbi1kYXNoYm9hcmQtb2JqZWN0Lmh0bWwK
ICMgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjY3Mj4KIGZhc3Qv
Y3NzL2NvbXBhcmUtY29udGVudC1zdHlsZS5odG1sCiBmYXN0L2ZyYW1lcy9mcmFtZS1kaXNwbGF5
LW5vbmUtZm9jdXMuaHRtbAorZmFzdC9sb2FkZXIvZGlzcGxheS1pbWFnZS11bnNldC1jYW4tYmxv
Y2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UuaHRtbAorZmFzdC9sb2FkZXIvaW1hZ2Vz
LWVuYWJsZWQtdW5zZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1jYW4tcmVsb2FkLWluLXBsYWNlLmh0
bWwKIGZhc3QvbG9hZGVyL3JlbG9hZC1wb2xpY3ktZGVsZWdhdGUuaHRtbAogCiAjIFdlYktpdFRl
c3RSdW5uZXIgbmVlZHMgbGF5b3V0VGVzdENvbnRyb2xsZXIucXVldWVMb2FkCmRpZmYgLS1naXQg
YS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggNGJlYTQyZDZkNWU4YWQ1MTM1NWMwYWY2ZjFh
NWQwNGRjNzQ3ZjM3OS4uNGU2MTkyMGJjZGU1NjZhNjgzZmYzZWRjMmE0OGQ2NjJkYWRjZGM4NiAx
MDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisy
MDEyLTA5LTIxICBCbyBMaXUgIDxib2xpdUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVsYW5k
ICJBZGQgaW4tcGxhY2UgcmVsb2FkIGJlaGF2aW9yIHRvIEltYWdlc0VuYWJsZWQgc2V0dGluZyIg
d2l0aCBvcHRpbWl6YXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05NzA1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFJlbGFuZGluZyAxMjg3ODAsIDEyODY3NiwgMTI4NjQ1LiBXYXMgcmV2ZXJ0ZWQg
aW4gMTI4OTE0IGR1ZSB0bworICAgICAgICBwZXJmb3JtYW5jZSByZWdyZXNzaW9uIGluIENocm9t
aXVtLgorCisgICAgICAgIE5ldyBjaGFuZ2VzIGluIGFkZGl0aW9uIHRvIHByZXZpb3VzbHkgcmV2
ZXJ0ZWQgcGF0Y2hlczoKKworICAgICAgICBSZWZhY3RvcmVkIENhY2hlZFJlc291cmNlOjpyZXF1
ZXN0UmVzb3VyY2UsIGxvYWRSZXNvdXJjZSwgYW5kCisgICAgICAgIHJldmFsaWRhdGVSZXNvdXJj
ZS4gTW92ZWQgQ2FjaGVkUmVzb3VyY2U6OmxvYWQgbWV0aG9kIHRvIGVuZCBvZgorICAgICAgICBy
ZXF1ZXN0UmVzb3VyY2Ugc28gdGhlcmUgaXMgb25lIHBsYWNlIHdoZXJlIGxvYWQgaXMgY2FsbGVk
IGZvciBhbGwKKyAgICAgICAgcmVzb3VyY2VzLgorCisgICAgICAgIEFkZGVkIGEgYm9vbCBwYXJh
bWV0ZXIgZm9yIHJlcXVlc3RSZXNvdXJjZSBhbmQKKyAgICAgICAgZGV0ZXJtaW5lUmV2YWxpZGF0
aW9uUG9saWN5IHNvIHRoYXQgRnJhbWVMb2FkZXJDbGllbnQ6OmFsbG93SW1hZ2UgY2FsbAorICAg
ICAgICBkbyBub3QgbmVlZCB0byBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMuCisKKyAgICAgICAg
UmVtb3ZlZCBDYWNoZWRJbWFnZTo6bG9hZCBjYWxsIGluIHJlcXVlc3RJbWFnZSBzbyBpdCBpcyBu
b3QgY2FsbGVkCisgICAgICAgIHR3aWNlLgorCisgICAgICAgIFJlbW92ZWQgdW5uZWNlc3Nhcnkg
RnJhbWUuaCBpbmNsdWRlcyBpbiBDYWNoZWRSZXNvdXJjZSBhbmQKKyAgICAgICAgQ2FjaGVkSW1h
Z2UuCisKKyAgICAgICAgUmVtb3ZlZCBkZWFkIGxvYWQoKSBtZXRob2QgZGVjbGFyYXRpb24gaW4g
Q2FjaGVkSW1hZ2UuCisKKyAgICAgICAgVXBkYXRlZCB0ZXh0IGV4cGVjdGF0aW9uIGZvciB0d28g
aW1hZ2UtcGVybWlzc2lvbnMgdGVzdHMgdG8gcmVmbGVjdAorICAgICAgICB0aGUgcmVtb3ZlZCBj
YWxscyB0byBhbGxvd0ltYWdlLgorCisgICAgICAgICogU291cmNlL2F1dG90b29scy9zeW1ib2xz
LmZpbHRlcjoKKwogMjAxMi0wOS0yMSAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBk
aWdpYS5jb20+CiAKICAgICAgICAgW1F0XSBCYWlsIG91dCB3aGVuIHRyeWluZyB0byBidWlsZCBX
ZWJLaXQgd2l0aCBRdCAhPSA1Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165407</attachid>
            <date>2012-09-24 10:38:38 -0700</date>
            <delta_ts>2012-09-24 17:17:23 -0700</delta_ts>
            <desc>Use enum instead of bool.</desc>
            <filename>bug-97055-20120924103759.patch</filename>
            <type>text/plain</type>
            <size>48434</size>
            <attacher name="Bo Liu">boliu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5MzY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTk2ZGNlNGUzYzczYTEz
OWI1MWFhMDhhYTBlZGJmMDUzYzVjZjc4MS4uNGRlYjlkZThlMjcwY2IxNDE3Y2RiYThlMmJjZjJl
MWNmN2MyNThiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg1IEBACisyMDEyLTA5LTI0ICBCbyBM
aXUgIDxib2xpdUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVsYW5kICJBZGQgaW4tcGxhY2Ug
cmVsb2FkIGJlaGF2aW9yIHRvIEltYWdlc0VuYWJsZWQgc2V0dGluZyIgd2l0aCBvcHRpbWl6YXRp
b25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzA1
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbGFu
ZGluZyAxMjg3ODAsIDEyODY3NiwgMTI4NjQ1LiBXYXMgcmV2ZXJ0ZWQgaW4gMTI4OTE0IGR1ZSB0
bworICAgICAgICBwZXJmb3JtYW5jZSByZWdyZXNzaW9uIGluIENocm9taXVtLgorCisgICAgICAg
IE5ldyBjaGFuZ2VzIGluIGFkZGl0aW9uIHRvIHByZXZpb3VzbHkgcmV2ZXJ0ZWQgcGF0Y2hlczoK
KworICAgICAgICBSZWZhY3RvcmVkIENhY2hlZFJlc291cmNlOjpyZXF1ZXN0UmVzb3VyY2UsIGxv
YWRSZXNvdXJjZSwgYW5kCisgICAgICAgIHJldmFsaWRhdGVSZXNvdXJjZS4gTW92ZWQgQ2FjaGVk
UmVzb3VyY2U6OmxvYWQgbWV0aG9kIHRvIGVuZCBvZgorICAgICAgICByZXF1ZXN0UmVzb3VyY2Ug
c28gdGhlcmUgaXMgb25lIHBsYWNlIHdoZXJlIGxvYWQgaXMgY2FsbGVkIGZvciBhbGwKKyAgICAg
ICAgcmVzb3VyY2VzLgorCisgICAgICAgIEFkZGVkIGEgZW51bSBwYXJhbWV0ZXIgZm9yIHJlcXVl
c3RSZXNvdXJjZSBhbmQKKyAgICAgICAgZGV0ZXJtaW5lUmV2YWxpZGF0aW9uUG9saWN5IHNvIHRo
YXQgRnJhbWVMb2FkZXJDbGllbnQ6OmFsbG93SW1hZ2UgY2FsbAorICAgICAgICBkbyBub3QgbmVl
ZCB0byBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMuCisKKyAgICAgICAgUmVtb3ZlZCBDYWNoZWRJ
bWFnZTo6bG9hZCBjYWxsIGluIHJlcXVlc3RJbWFnZSBzbyBpdCBpcyBub3QgY2FsbGVkCisgICAg
ICAgIHR3aWNlLgorCisgICAgICAgIFJlbW92ZWQgdW5uZWNlc3NhcnkgRnJhbWUuaCBpbmNsdWRl
cyBpbiBDYWNoZWRSZXNvdXJjZSBhbmQKKyAgICAgICAgQ2FjaGVkSW1hZ2UuCisKKyAgICAgICAg
UmVtb3ZlZCBkZWFkIGxvYWQoKSBtZXRob2QgZGVjbGFyYXRpb24gaW4gQ2FjaGVkSW1hZ2UuCisK
KyAgICAgICAgVXBkYXRlZCB0ZXh0IGV4cGVjdGF0aW9uIGZvciB0d28gaW1hZ2UtcGVybWlzc2lv
bnMgdGVzdHMgdG8gcmVmbGVjdAorICAgICAgICB0aGUgcmVtb3ZlZCBjYWxscyB0byBhbGxvd0lt
YWdlLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0LWFs
bG93cy1jYWNoZWQtaW1hZ2UtbG9hZC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2xvYWRlci9k
aXNwbGF5LWltYWdlLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFj
ZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2xvYWRlci9pbWFnZXMtZW5hYmxlZC11bnNldC1j
YW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UuaHRtbAorCisgICAgICAgICog
V2ViQ29yZS5leHAuaW46CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkaWRCZWdpbkRvY3VtZW50KToKKyAgICAgICAgKiBs
b2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3Vy
Y2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZEltYWdlLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaDoKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkUmVzb3VyY2U6OmRpZEFkZENsaWVudCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZFJlc291cmNlOjpzdGlsbE5lZWRzTG9hZCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNl
TG9hZGVyOjpDYWNoZWRSZXNvdXJjZUxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRS
ZXNvdXJjZUxvYWRlcjo6cmVxdWVzdEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJl
c291cmNlTG9hZGVyOjpjYW5SZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291
cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVz
b3VyY2VMb2FkZXI6OnJldmFsaWRhdGVSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRSZXNvdXJjZUxvYWRlcjo6bG9hZFJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFJlc291cmNlTG9hZGVyOjpkZXRlcm1pbmVSZXZhbGlkYXRpb25Qb2xpY3kpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnNldEF1dG9Mb2FkSW1hZ2VzKToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnNl
dEltYWdlc0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6
OmNsaWVudERlZmVyc0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9h
ZGVyOjpzaG91bGREZWZlckltYWdlTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNv
dXJjZUxvYWRlcjo6cmVsb2FkSW1hZ2VzSWZOb3REZWZlcnJlZCk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmg6CisgICAgICAgIChDYWNoZWRSZXNvdXJjZUxv
YWRlcik6CisgICAgICAgICogcGFnZS9TZXR0aW5ncy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRJbWFnZUxvYWRpbmdTZXR0aW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6U2V0
dGluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OnNldExvYWRzSW1hZ2VzQXV0b21h
dGljYWxseSk6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6aW1hZ2VMb2FkaW5nU2V0dGlu
Z3NUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpzZXRJbWFnZXNFbmFi
bGVkKToKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmg6CisgICAgICAgIChTZXR0aW5ncyk6Cisg
ICAgICAgICogdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkludGVybmFsU2V0dGluZ3M6OkJhY2t1cDo6QmFja3VwKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
dGVybmFsU2V0dGluZ3M6OkJhY2t1cDo6cmVzdG9yZVRvKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
dGVybmFsU2V0dGluZ3M6OnNldEltYWdlc0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgICogdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmg6CisgICAgICAgIChCYWNrdXApOgor
ICAgICAgICAoSW50ZXJuYWxTZXR0aW5ncyk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbFNl
dHRpbmdzLmlkbDoKKwogMjAxMi0wOS0yNCAgSm9uYXRoYW4gTGl1ICA8bmV0MTQ3QGdtYWlsLmNv
bT4KIAogICAgICAgICBVc2UgdW5zaWduZWQgY2hhciBmb3IgYml0ZmllbGQgaW5zdGVhZCBvZiB1
bnNpZ25lZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwppbmRleCAzYmM4NWRjZGE0MmRiNWY5YWYzNTBjNjA5ZGUxZjg4MmJi
Y2E2MWE1Li5mNzA1NjdmMzNjYzY0NGU5MDBkNmJhMWQzODcwNjUwM2UxYWM0NjRjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTItMDktMjQgIEJvIExpdSAgPGJvbGl1QGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZWxhbmQgIkFkZCBpbi1wbGFjZSByZWxvYWQgYmVoYXZpb3IgdG8g
SW1hZ2VzRW5hYmxlZCBzZXR0aW5nIiB3aXRoIG9wdGltaXphdGlvbnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3MDU1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVsYW5kaW5nIDEyODc4MCwgMTI4Njc2
LCAxMjg2NDUuIFdhcyByZXZlcnRlZCBpbiAxMjg5MTQgZHVlIHRvCisgICAgICAgIHBlcmZvcm1h
bmNlIHJlZ3Jlc3Npb24gaW4gQ2hyb21pdW0uCisKKyAgICAgICAgTmV3IGNoYW5nZXMgaW4gYWRk
aXRpb24gdG8gcHJldmlvdXNseSByZXZlcnRlZCBwYXRjaGVzOgorCisgICAgICAgIFJlZmFjdG9y
ZWQgQ2FjaGVkUmVzb3VyY2U6OnJlcXVlc3RSZXNvdXJjZSwgbG9hZFJlc291cmNlLCBhbmQKKyAg
ICAgICAgcmV2YWxpZGF0ZVJlc291cmNlLiBNb3ZlZCBDYWNoZWRSZXNvdXJjZTo6bG9hZCBtZXRo
b2QgdG8gZW5kIG9mCisgICAgICAgIHJlcXVlc3RSZXNvdXJjZSBzbyB0aGVyZSBpcyBvbmUgcGxh
Y2Ugd2hlcmUgbG9hZCBpcyBjYWxsZWQgZm9yIGFsbAorICAgICAgICByZXNvdXJjZXMuCisKKyAg
ICAgICAgQWRkZWQgYSBlbnVtIHBhcmFtZXRlciBmb3IgcmVxdWVzdFJlc291cmNlIGFuZAorICAg
ICAgICBkZXRlcm1pbmVSZXZhbGlkYXRpb25Qb2xpY3kgc28gdGhhdCBGcmFtZUxvYWRlckNsaWVu
dDo6YWxsb3dJbWFnZSBjYWxsCisgICAgICAgIGRvIG5vdCBuZWVkIHRvIGJlIGNhbGxlZCBtdWx0
aXBsZSB0aW1lcy4KKworICAgICAgICBSZW1vdmVkIENhY2hlZEltYWdlOjpsb2FkIGNhbGwgaW4g
cmVxdWVzdEltYWdlIHNvIGl0IGlzIG5vdCBjYWxsZWQKKyAgICAgICAgdHdpY2UuCisKKyAgICAg
ICAgUmVtb3ZlZCB1bm5lY2Vzc2FyeSBGcmFtZS5oIGluY2x1ZGVzIGluIENhY2hlZFJlc291cmNl
IGFuZAorICAgICAgICBDYWNoZWRJbWFnZS4KKworICAgICAgICBSZW1vdmVkIGRlYWQgbG9hZCgp
IG1ldGhvZCBkZWNsYXJhdGlvbiBpbiBDYWNoZWRJbWFnZS4KKworICAgICAgICBVcGRhdGVkIHRl
eHQgZXhwZWN0YXRpb24gZm9yIHR3byBpbWFnZS1wZXJtaXNzaW9ucyB0ZXN0cyB0byByZWZsZWN0
CisgICAgICAgIHRoZSByZW1vdmVkIGNhbGxzIHRvIGFsbG93SW1hZ2UuCisKKyAgICAgICAgKiB3
aW4vV2ViS2l0Mi5kZWY6CisKIDIwMTItMDktMjQgIEJ5dW5nd29vIExlZSAgPGJ3ODAubGVlQHNh
bXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdW1dLMl0gQ2hhbmdlIHRoZSBpbnN0YWxsIHBhdGgg
Zm9yIGxpYmV3azJVbml0VGVzdEluamVjdGVkQnVuZGxlU2FtcGxlLnNvLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbgppbmRleCA1OGM1MDRkYTA5NTIzN2QwZTJiNWRmNzllOWE2ZWI5NzVhMzU3YjA5Li4zNzky
NDRlMDMwNGYyYWVmOGQ4ZTExMjBlNmYwMDAyZDhmOTBlODJiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
bgpAQCAtODUyLDYgKzg1Miw3IEBAIF9fWk43V2ViQ29yZThHcmFkaWVudEMxRVJLTlNfMTBGbG9h
dFBvaW50RVMzXwogX19aTjdXZWJDb3JlOFBvc2l0aW9uQzFFTjNXVEYxMFBhc3NSZWZQdHJJTlNf
NE5vZGVFRUVpTlMwXzEwQW5jaG9yVHlwZUUKIF9fWk43V2ViQ29yZThTZXR0aW5nczE0c2V0SmF2
YUVuYWJsZWRFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMTVzZXRXZWJHTEVuYWJsZWRFYgorX19a
TjdXZWJDb3JlOFNldHRpbmdzMTZzZXRJbWFnZXNFbmFibGVkRWIKIF9fWk43V2ViQ29yZThTZXR0
aW5nczE2c2V0U2NyaXB0RW5hYmxlZEViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MxNnNldFVzZXNQ
YWdlQ2FjaGVFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMTdzZXRQbHVnaW5zRW5hYmxlZEViCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCBiMjZiNmQ0Y2MyMmZhZTc1Nzhk
MDQ0ZjYxMDUxNjE5MjRiMDZmYzVmLi40MTc3MmNhZWU4ZDJkOTMyZGQzZjZiZWMyYThiYmFmYzBk
Y2U1ZjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTY0Nyw2ICs2
NDcsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpkaWRCZWdpbkRvY3VtZW50KGJvb2wgZGlzcGF0Y2gp
CiAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+aW5pdENvbnRlbnRTZWN1cml0eVBvbGljeSgpOwog
CiAgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+c2V0dGluZ3Mo
KTsKKyAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5zZXRJ
bWFnZXNFbmFibGVkKCFzZXR0aW5ncyB8fCBzZXR0aW5ncy0+YXJlSW1hZ2VzRW5hYmxlZCgpKTsK
ICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5zZXRBdXRv
TG9hZEltYWdlcyhzZXR0aW5ncyAmJiBzZXR0aW5ncy0+bG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5
KCkpOwogCiAgICAgaWYgKG1fZG9jdW1lbnRMb2FkZXIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGZmM2JlNmVkZmY4Yjk3ZmM1NWEwODQ4YjRj
MWFmMDJmMDgxYjQ2MTYuLjU2ZGUwZDM0MTMzYzNmNWE0NzJiZmMyYmM2ZjRlNWNkZjM4MzAzZmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAtMTY3
LDExICsxNjcsMTMgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJl
c291cmNlUmVxdWVzdCYgbmV3UmVxdWVzdCwgY29uc3QgUmVzb3UKICAgICAKICAgICBSZXNvdXJj
ZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KG5ld1JlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOwog
ICAgIGlmICghcHJldmlvdXNVUkwuaXNOdWxsKCkgJiYgIW5ld1JlcXVlc3QuaXNOdWxsKCkgJiYg
cHJldmlvdXNVUkwgIT0gbmV3UmVxdWVzdC51cmwoKSkgewotICAgICAgICBpZiAoIW1fZG9jdW1l
bnQtPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPmNhblJlcXVlc3QobV9yZXNvdXJjZS0+dHlwZSgp
LCBuZXdSZXF1ZXN0LnVybCgpKSkgewotICAgICAgICAgICAgY2FuY2VsKCk7Ci0gICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIGlmIChtX2RvY3VtZW50LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigp
LT5jYW5SZXF1ZXN0KG1fcmVzb3VyY2UtPnR5cGUoKSwgbmV3UmVxdWVzdC51cmwoKSkpIHsKKyAg
ICAgICAgICAgIGlmIChtX3Jlc291cmNlLT50eXBlKCkgIT0gQ2FjaGVkUmVzb3VyY2U6OkltYWdl
UmVzb3VyY2UgfHwgIW1fZG9jdW1lbnQtPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPnNob3VsZERl
ZmVySW1hZ2VMb2FkKG5ld1JlcXVlc3QudXJsKCkpKSB7CisgICAgICAgICAgICAgICAgbV9yZXNv
dXJjZS0+d2lsbFNlbmRSZXF1ZXN0KG5ld1JlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOworICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBt
X3Jlc291cmNlLT53aWxsU2VuZFJlcXVlc3QobmV3UmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7
CisgICAgICAgIGNhbmNlbCgpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRJbWFnZS5jcHAKaW5kZXggNDMxNjYxNmIzNjQ1M2EyMDg2NWU0ZDJkNmUwMjg5
MzBhZjE2YjlkMy4uNDEwNzVhN2IzMTUzNDhmYmRmZTc2MGFiZTNmNzYyNGNmMWNhMDkyZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCkBAIC0yOSw3ICsy
OSw2IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCIKICNpbmNsdWRlICJDYWNo
ZWRSZXNvdXJjZUNsaWVudFdhbGtlci5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVy
LmgiCi0jaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgog
I2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKaW5kZXggNDg2NWM3ZTI0NjY1
YmE2MzliMGUxYTk2YmM2MjUyNjBkNzNhZDAxYi4uMDc4ZjdhYjFjNjJmZjg2YjgxNWI5ZjA2NTQ2
MzBkMzYwMTkyOTNjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdl
LmgKQEAgLTgyLDggKzgyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJZ25v
cmVIVFRQU3RhdHVzQ29kZUVycm9ycygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHZp
cnR1YWwgYm9vbCBpc0ltYWdlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIGJvb2wgc3Rp
bGxOZWVkc0xvYWQoKSBjb25zdCB7IHJldHVybiAhZXJyb3JPY2N1cnJlZCgpICYmIHN0YXR1cygp
ID09IFVua25vd24gJiYgIWlzTG9hZGluZygpOyB9Ci0gICAgdm9pZCBsb2FkKCk7CisgICAgdmly
dHVhbCBib29sIHN0aWxsTmVlZHNMb2FkKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gIWVycm9y
T2NjdXJyZWQoKSAmJiBzdGF0dXMoKSA9PSBVbmtub3duICYmICFpc0xvYWRpbmcoKTsgfQogCiAg
ICAgLy8gSW1hZ2VPYnNlcnZlcgogICAgIHZpcnR1YWwgdm9pZCBkZWNvZGVkU2l6ZUNoYW5nZWQo
Y29uc3QgSW1hZ2UqIGltYWdlLCBpbnQgZGVsdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXggNDNjM2QxNDRmODJmMTU2ODhjZjY2YzA1
NGEwNGRhOTYwMTliOWQxMS4uMzNkMWJhODIzYmM2ZmQ4NjU3MmU2YTk0NjFhYzViZDc1NjNhMDZi
YiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3Bw
CkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKICNp
bmNsdWRlICJDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaCIKICNpbmNsdWRlICJEb2N1bWVudC5o
IgotI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNp
bmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJLVVJMLmgiCkBA
IC0zOTAsNyArMzg5LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6ZGlkQWRkQ2xpZW50KENhY2hl
ZFJlc291cmNlQ2xpZW50KiBjKQogICAgICAgICBtX2NsaWVudHMuYWRkKGMpOwogICAgICAgICBt
X2NsaWVudHNBd2FpdGluZ0NhbGxiYWNrLnJlbW92ZShjKTsKICAgICB9Ci0gICAgaWYgKCFpc0xv
YWRpbmcoKSkKKyAgICBpZiAoIWlzTG9hZGluZygpICYmICFzdGlsbE5lZWRzTG9hZCgpKQogICAg
ICAgICBjLT5ub3RpZnlGaW5pc2hlZCh0aGlzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAppbmRleCAwY2FkM2VlN2NhNDI4MTJlYWEzZWZlNjAw
MzExNjQ0OWY3YTY5NmExLi5iNzM5ZDY4YWY4MWYyZGI3YjQ4NjJkZjE1OWFhY2YxNThlMGI1NzMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaApAQCAt
NDUsNyArNDUsNiBAQCBjbGFzcyBDYWNoZWRNZXRhZGF0YTsKIGNsYXNzIENhY2hlZFJlc291cmNl
Q2xpZW50OwogY2xhc3MgQ2FjaGVkUmVzb3VyY2VIYW5kbGVCYXNlOwogY2xhc3MgQ2FjaGVkUmVz
b3VyY2VMb2FkZXI7Ci1jbGFzcyBGcmFtZTsKIGNsYXNzIEluc3BlY3RvclJlc291cmNlOwogY2xh
c3MgUHVyZ2VhYmxlQnVmZmVyOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CkBAIC0xNDQsNiArMTQz
LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0xvYWRpbmcoKSBjb25zdCB7IHJldHVybiBtX2xv
YWRpbmc7IH0KICAgICB2b2lkIHNldExvYWRpbmcoYm9vbCBiKSB7IG1fbG9hZGluZyA9IGI7IH0K
KyAgICB2aXJ0dWFsIGJvb2wgc3RpbGxOZWVkc0xvYWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogCiAgICAgU3VicmVzb3VyY2VMb2FkZXIqIGxvYWRlcigpIHsgcmV0dXJuIG1fbG9hZGVyLmdl
dCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2VMb2FkZXIuY3BwCmluZGV4IDM1M2E2MmFhNjQwZGJkZDVlNTEyN2Q5MGIxMDg0NTZkNGFj
N2NlZGIuLmQxZjZhNWYyYzJjM2FlMTkzMWFhOTNjZjE0NGVmYjVjZTE3NDBmMjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNw
cApAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCiAjaW5jbHVkZSAi
UGluZ0xvYWRlci5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFNjaGVkdWxlci5oIgorI2luY2x1
ZGUgIlNjaGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNs
dWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgpAQCAtMTE1LDYg
KzExNiw3IEBAIENhY2hlZFJlc291cmNlTG9hZGVyOjpDYWNoZWRSZXNvdXJjZUxvYWRlcihEb2N1
bWVudCogZG9jdW1lbnQpCiAgICAgLCBtX3JlcXVlc3RDb3VudCgwKQogICAgICwgbV9nYXJiYWdl
Q29sbGVjdERvY3VtZW50UmVzb3VyY2VzVGltZXIodGhpcywgJkNhY2hlZFJlc291cmNlTG9hZGVy
OjpnYXJiYWdlQ29sbGVjdERvY3VtZW50UmVzb3VyY2VzVGltZXJGaXJlZCkKICAgICAsIG1fYXV0
b0xvYWRJbWFnZXModHJ1ZSkKKyAgICAsIG1faW1hZ2VzRW5hYmxlZCh0cnVlKQogICAgICwgbV9h
bGxvd1N0YWxlUmVzb3VyY2VzKGZhbHNlKQogewogfQpAQCAtMTU5LDEwICsxNjEsNyBAQCBDYWNo
ZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRJbWFnZT4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVl
c3RJbWFnZShSZXNvdXJjZVJlcQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KICAg
ICB9Ci0gICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkSW1hZ2U+IHJlc291cmNlKHN0YXRp
Y19jYXN0PENhY2hlZEltYWdlKj4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpJbWFn
ZVJlc291cmNlLCByZXF1ZXN0LCBTdHJpbmcoKSwgZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9u
cygpKS5nZXQoKSkpOwotICAgIGlmIChhdXRvTG9hZEltYWdlcygpICYmIHJlc291cmNlICYmIHJl
c291cmNlLT5zdGlsbE5lZWRzTG9hZCgpKQotICAgICAgICByZXNvdXJjZS0+bG9hZCh0aGlzLCBk
ZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCkpOwotICAgIHJldHVybiByZXNvdXJjZTsKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8Q2FjaGVkSW1hZ2UqPihyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVk
UmVzb3VyY2U6OkltYWdlUmVzb3VyY2UsIHJlcXVlc3QsIFN0cmluZygpLCBkZWZhdWx0Q2FjaGVk
UmVzb3VyY2VPcHRpb25zKCksIFJlc291cmNlTG9hZFByaW9yaXR5VW5yZXNvbHZlZCwgZmFsc2Us
IGNsaWVudERlZmVyc0ltYWdlKHJlcXVlc3QudXJsKCkpID8gRGVmZXJyZWRCeUNsaWVudCA6IE5v
RGVmZXIpLmdldCgpKTsKIH0KIAogQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkRm9udD4gQ2Fj
aGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RGb250KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkK
QEAgLTM2MiwxMiArMzYxLDYgQEAgYm9vbCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2FuUmVxdWVz
dChDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBLVVJMJiB1cmwKICAgICBjYXNlIENh
Y2hlZFJlc291cmNlOjpJbWFnZVJlc291cmNlOgogICAgICAgICBpZiAoIW1fZG9jdW1lbnQtPmNv
bnRlbnRTZWN1cml0eVBvbGljeSgpLT5hbGxvd0ltYWdlRnJvbVNvdXJjZSh1cmwpKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIGlmIChmcmFtZSgpKSB7Ci0gICAgICAgICAg
ICBTZXR0aW5ncyogc2V0dGluZ3MgPSBmcmFtZSgpLT5zZXR0aW5ncygpOwotICAgICAgICAgICAg
aWYgKCFmcmFtZSgpLT5sb2FkZXIoKS0+Y2xpZW50KCktPmFsbG93SW1hZ2UoIXNldHRpbmdzIHx8
IHNldHRpbmdzLT5hcmVJbWFnZXNFbmFibGVkKCksIHVybCkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ2FjaGVkUmVz
b3VyY2U6OkZvbnRSZXNvdXJjZTogewogICAgICAgICBpZiAoIW1fZG9jdW1lbnQtPmNvbnRlbnRT
ZWN1cml0eVBvbGljeSgpLT5hbGxvd0ZvbnRGcm9tU291cmNlKHVybCkpCkBAIC00MDEsNyArMzk0
LDcgQEAgYm9vbCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2FuUmVxdWVzdChDYWNoZWRSZXNvdXJj
ZTo6VHlwZSB0eXBlLCBjb25zdCBLVVJMJiB1cmwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotQ2Fj
aGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IENhY2hlZFJlc291cmNlTG9hZGVyOjpy
ZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0
aW9ucyYgb3B0aW9ucywgUmVzb3VyY2VMb2FkUHJpb3JpdHkgcHJpb3JpdHksIGJvb2wgZm9yUHJl
bG9hZCkKK0NhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBjb25zdCBSZXNvdXJj
ZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMsIFJlc291cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5LCBi
b29sIGZvclByZWxvYWQsIERlZmVyT3B0aW9uIGRlZmVyKQogewogICAgIEtVUkwgdXJsID0gcmVx
dWVzdC51cmwoKTsKICAgICAKQEAgLTQzMCwxNiArNDIzLDE2IEBAIENhY2hlZFJlc291cmNlSGFu
ZGxlPENhY2hlZFJlc291cmNlPiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNl
KENhY2hlCiAgICAgaWYgKHJlcXVlc3QudXJsKCkgIT0gdXJsKQogICAgICAgICByZXF1ZXN0LnNl
dFVSTCh1cmwpOwogCi0gICAgc3dpdGNoIChkZXRlcm1pbmVSZXZhbGlkYXRpb25Qb2xpY3kodHlw
ZSwgcmVxdWVzdCwgZm9yUHJlbG9hZCwgcmVzb3VyY2UuZ2V0KCkpKSB7Ci0gICAgY2FzZSBMb2Fk
OgotICAgICAgICByZXNvdXJjZSA9IGxvYWRSZXNvdXJjZSh0eXBlLCByZXF1ZXN0LCBjaGFyc2V0
LCBwcmlvcml0eSwgb3B0aW9ucyk7Ci0gICAgICAgIGJyZWFrOworICAgIGNvbnN0IFJldmFsaWRh
dGlvblBvbGljeSBwb2xpY3kgPSBkZXRlcm1pbmVSZXZhbGlkYXRpb25Qb2xpY3kodHlwZSwgcmVx
dWVzdCwgZm9yUHJlbG9hZCwgcmVzb3VyY2UuZ2V0KCksIGRlZmVyKTsKKyAgICBzd2l0Y2ggKHBv
bGljeSkgewogICAgIGNhc2UgUmVsb2FkOgogICAgICAgICBtZW1vcnlDYWNoZSgpLT5yZW1vdmUo
cmVzb3VyY2UuZ2V0KCkpOwotICAgICAgICByZXNvdXJjZSA9IGxvYWRSZXNvdXJjZSh0eXBlLCBy
ZXF1ZXN0LCBjaGFyc2V0LCBwcmlvcml0eSwgb3B0aW9ucyk7CisgICAgICAgIC8vIEZhbGwgdGhy
b3VnaAorICAgIGNhc2UgTG9hZDoKKyAgICAgICAgcmVzb3VyY2UgPSBsb2FkUmVzb3VyY2UodHlw
ZSwgcmVxdWVzdCwgY2hhcnNldCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUmV2YWxpZGF0
ZToKLSAgICAgICAgcmVzb3VyY2UgPSByZXZhbGlkYXRlUmVzb3VyY2UocmVzb3VyY2UuZ2V0KCks
IHByaW9yaXR5LCBvcHRpb25zKTsKKyAgICAgICAgcmVzb3VyY2UgPSByZXZhbGlkYXRlUmVzb3Vy
Y2UocmVzb3VyY2UuZ2V0KCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFVzZToKICAgICAg
ICAgbWVtb3J5Q2FjaGUoKS0+cmVzb3VyY2VBY2Nlc3NlZChyZXNvdXJjZS5nZXQoKSk7CkBAIC00
NTAsMTIgKzQ0MywyNyBAQCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gQ2Fj
aGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZShDYWNoZQogICAgIGlmICghcmVzb3Vy
Y2UpCiAgICAgICAgIHJldHVybiAwOwogCisgICAgcmVzb3VyY2UtPnNldExvYWRQcmlvcml0eShw
cmlvcml0eSk7CisgICAgaWYgKChwb2xpY3kgIT0gVXNlIHx8IHJlc291cmNlLT5zdGlsbE5lZWRz
TG9hZCgpKSAmJiBOb0RlZmVyID09IGRlZmVyKSB7CisgICAgICAgIHJlc291cmNlLT5sb2FkKHRo
aXMsIG9wdGlvbnMpOworCisgICAgICAgIC8vIFdlIGRvbid0IHN1cHBvcnQgaW1tZWRpYXRlIGxv
YWRzLCBidXQgd2UgZG8gc3VwcG9ydCBpbW1lZGlhdGUgZmFpbHVyZS4KKyAgICAgICAgaWYgKHJl
c291cmNlLT5lcnJvck9jY3VycmVkKCkpIHsKKyAgICAgICAgICAgIGlmIChyZXNvdXJjZS0+aW5D
YWNoZSgpKQorICAgICAgICAgICAgICAgIG1lbW9yeUNhY2hlKCktPnJlbW92ZShyZXNvdXJjZS5n
ZXQoKSk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlm
ICghcmVxdWVzdC51cmwoKS5wcm90b2NvbElzRGF0YSgpKQorICAgICAgICBtX3ZhbGlkYXRlZFVS
THMuYWRkKHJlcXVlc3QudXJsKCkpOworCiAgICAgQVNTRVJUKHJlc291cmNlLT51cmwoKSA9PSB1
cmwuc3RyaW5nKCkpOwogICAgIG1fZG9jdW1lbnRSZXNvdXJjZXMuc2V0KHJlc291cmNlLT51cmwo
KSwgcmVzb3VyY2UpOwogICAgIHJldHVybiByZXNvdXJjZTsKIH0KIAotQ2FjaGVkUmVzb3VyY2VI
YW5kbGU8Q2FjaGVkUmVzb3VyY2U+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXZhbGlkYXRlUmVz
b3VyY2UoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBSZXNvdXJjZUxvYWRQcmlvcml0eSBwcmlv
cml0eSwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zKQorQ2FjaGVkUmVzb3Vy
Y2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXZhbGlkYXRl
UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQogewogICAgIEFTU0VSVChyZXNvdXJj
ZSk7CiAgICAgQVNTRVJUKHJlc291cmNlLT5pbkNhY2hlKCkpOwpAQCAtNDY1LDcgKzQ3Myw2IEBA
IENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBDYWNoZWRSZXNvdXJjZUxvYWRl
cjo6cmV2YWxpZGF0ZVJlc291cmNlKENhCiAgICAgCiAgICAgLy8gQ29weSB0aGUgVVJMIG91dCBv
ZiB0aGUgcmVzb3VyY2UgdG8gYmUgcmV2YWxpZGF0ZWQgaW4gY2FzZSBpdCBnZXRzIGRlbGV0ZWQg
YnkgdGhlIHJlbW92ZSgpIGNhbGwgYmVsb3cuCiAgICAgU3RyaW5nIHVybCA9IHJlc291cmNlLT51
cmwoKTsKLSAgICBib29sIHVybFByb3RvY29sSXNEYXRhID0gcmVzb3VyY2UtPnVybCgpLnByb3Rv
Y29sSXNEYXRhKCk7CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IG5l
d1Jlc291cmNlID0gY3JlYXRlUmVzb3VyY2UocmVzb3VyY2UtPnR5cGUoKSwgcmVzb3VyY2UtPnJl
c291cmNlUmVxdWVzdCgpLCByZXNvdXJjZS0+ZW5jb2RpbmcoKSk7CiAgICAgCiAgICAgTE9HKFJl
c291cmNlTG9hZGluZywgIlJlc291cmNlICVwIGNyZWF0ZWQgdG8gcmV2YWxpZGF0ZSAlcCIsIG5l
d1Jlc291cmNlLmdldCgpLCByZXNvdXJjZSk7CkBAIC00NzMsMTYgKzQ4MCwxMCBAQCBDYWNoZWRS
ZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJldmFs
aWRhdGVSZXNvdXJjZShDYQogICAgIAogICAgIG1lbW9yeUNhY2hlKCktPnJlbW92ZShyZXNvdXJj
ZSk7CiAgICAgbWVtb3J5Q2FjaGUoKS0+YWRkKG5ld1Jlc291cmNlLmdldCgpKTsKLSAgICAKLSAg
ICBuZXdSZXNvdXJjZS0+c2V0TG9hZFByaW9yaXR5KHByaW9yaXR5KTsKLSAgICBuZXdSZXNvdXJj
ZS0+bG9hZCh0aGlzLCBvcHRpb25zKTsKLQotICAgIGlmICghdXJsUHJvdG9jb2xJc0RhdGEpCi0g
ICAgICAgIG1fdmFsaWRhdGVkVVJMcy5hZGQodXJsKTsKICAgICByZXR1cm4gbmV3UmVzb3VyY2U7
CiB9CiAKLUNhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6bG9hZFJlc291cmNlKENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBSZXNvdXJjZUxvYWRQcmlv
cml0eSBwcmlvcml0eSwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zKQorQ2Fj
aGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IENhY2hlZFJlc291cmNlTG9hZGVyOjps
b2FkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBjb25zdCBTdHJpbmcmIGNoYXJzZXQpCiB7CiAgICAgQVNTRVJUKCFtZW1vcnlDYWNo
ZSgpLT5yZXNvdXJjZUZvclVSTChyZXF1ZXN0LnVybCgpKSk7CiAgICAgCkBAIC00OTAsMzUgKzQ5
MSwyMCBAQCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXI6OmxvYWRSZXNvdXJjZShDYWNoZWRSZQogICAgIAogICAgIENhY2hlZFJlc291cmNl
SGFuZGxlPENhY2hlZFJlc291cmNlPiByZXNvdXJjZSA9IGNyZWF0ZVJlc291cmNlKHR5cGUsIHJl
cXVlc3QsIGNoYXJzZXQpOwogICAgIAotICAgIGJvb2wgaW5DYWNoZSA9IG1lbW9yeUNhY2hlKCkt
PmFkZChyZXNvdXJjZS5nZXQoKSk7Ci0gICAgCi0gICAgcmVzb3VyY2UtPnNldExvYWRQcmlvcml0
eShwcmlvcml0eSk7Ci0gICAgcmVzb3VyY2UtPmxvYWQodGhpcywgb3B0aW9ucyk7Ci0gICAgCi0g
ICAgaWYgKCFpbkNhY2hlKQorICAgIGlmICghbWVtb3J5Q2FjaGUoKS0+YWRkKHJlc291cmNlLmdl
dCgpKSkKICAgICAgICAgcmVzb3VyY2UtPnNldE93bmluZ0NhY2hlZFJlc291cmNlTG9hZGVyKHRo
aXMpOwotCi0gICAgLy8gV2UgZG9uJ3Qgc3VwcG9ydCBpbW1lZGlhdGUgbG9hZHMsIGJ1dCB3ZSBk
byBzdXBwb3J0IGltbWVkaWF0ZSBmYWlsdXJlLgotICAgIGlmIChyZXNvdXJjZS0+ZXJyb3JPY2N1
cnJlZCgpKSB7Ci0gICAgICAgIGlmIChpbkNhY2hlKQotICAgICAgICAgICAgbWVtb3J5Q2FjaGUo
KS0+cmVtb3ZlKHJlc291cmNlLmdldCgpKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0g
ICAgaWYgKCFyZXF1ZXN0LnVybCgpLnByb3RvY29sSXNEYXRhKCkpCi0gICAgICAgIG1fdmFsaWRh
dGVkVVJMcy5hZGQocmVxdWVzdC51cmwoKSk7CiAgICAgcmV0dXJuIHJlc291cmNlOwogfQogCi1D
YWNoZWRSZXNvdXJjZUxvYWRlcjo6UmV2YWxpZGF0aW9uUG9saWN5IENhY2hlZFJlc291cmNlTG9h
ZGVyOjpkZXRlcm1pbmVSZXZhbGlkYXRpb25Qb2xpY3koQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlw
ZSwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sIGZvclByZWxvYWQsIENhY2hlZFJlc291
cmNlKiBleGlzdGluZ1Jlc291cmNlKSBjb25zdAorQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OlJldmFs
aWRhdGlvblBvbGljeSBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6ZGV0ZXJtaW5lUmV2YWxpZGF0aW9u
UG9saWN5KENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgYm9vbCBmb3JQcmVsb2FkLCBDYWNoZWRSZXNvdXJjZSogZXhpc3RpbmdSZXNvdXJjZSwgRGVm
ZXJPcHRpb24gZGVmZXIpIGNvbnN0CiB7CiAgICAgaWYgKCFleGlzdGluZ1Jlc291cmNlKQogICAg
ICAgICByZXR1cm4gTG9hZDsKLSAgICAKKwogICAgIC8vIFdlIGFscmVhZHkgaGF2ZSBhIHByZWxv
YWQgZ29pbmcgZm9yIHRoaXMgVVJMLgogICAgIGlmIChmb3JQcmVsb2FkICYmIGV4aXN0aW5nUmVz
b3VyY2UtPmlzUHJlbG9hZGVkKCkpCiAgICAgICAgIHJldHVybiBVc2U7Ci0gICAgCisKICAgICAv
LyBJZiB0aGUgc2FtZSBVUkwgaGFzIGJlZW4gbG9hZGVkIGFzIGEgZGlmZmVyZW50IHR5cGUsIHdl
IG5lZWQgdG8gcmVsb2FkLgogICAgIGlmIChleGlzdGluZ1Jlc291cmNlLT50eXBlKCkgIT0gdHlw
ZSkgewogICAgICAgICBMT0coUmVzb3VyY2VMb2FkaW5nLCAiQ2FjaGVkUmVzb3VyY2VMb2FkZXI6
OmRldGVybWluZVJldmFsaWRhdGlvblBvbGljeSByZWxvYWRpbmcgZHVlIHRvIHR5cGUgbWlzbWF0
Y2guIik7CkBAIC01MzMsNiArNTE5LDExIEBAIENhY2hlZFJlc291cmNlTG9hZGVyOjpSZXZhbGlk
YXRpb25Qb2xpY3kgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRldGVybWluZVJldmFsaWRhCiAgICAg
Ly8gb2YgdGhpbmdzIGFib3V0IGhvdyByZXZhbGlkYXRpb24gd29ya3MgdGhhdCBtYW51YWwgaGVh
ZGVycyB2aW9sYXRlLCBzbyBwdW50IHRvIFJlbG9hZCBpbnN0ZWFkLgogICAgIGlmIChyZXF1ZXN0
LmlzQ29uZGl0aW9uYWwoKSkKICAgICAgICAgcmV0dXJuIFJlbG9hZDsKKworICAgIC8vIERvIG5v
dCBsb2FkIGZyb20gY2FjaGUgaWYgaW1hZ2VzIGFyZSBub3QgZW5hYmxlZC4gVGhlIGxvYWQgZm9y
IHRoaXMgaW1hZ2Ugd2lsbCBiZSBibG9ja2VkCisgICAgLy8gaW4gQ2FjaGVkSW1hZ2U6OmxvYWQu
CisgICAgaWYgKERlZmVycmVkQnlDbGllbnQgPT0gZGVmZXIpCisgICAgICAgIHJldHVybiBSZWxv
YWQ7CiAgICAgCiAgICAgLy8gRG9uJ3QgcmVsb2FkIHJlc291cmNlcyB3aGlsZSBwYXN0aW5nLgog
ICAgIGlmIChtX2FsbG93U3RhbGVSZXNvdXJjZXMpCkBAIC02MjksMTUgKzYyMCwzOSBAQCB2b2lk
IENhY2hlZFJlc291cmNlTG9hZGVyOjpzZXRBdXRvTG9hZEltYWdlcyhib29sIGVuYWJsZSkKICAg
ICBpZiAoIW1fYXV0b0xvYWRJbWFnZXMpCiAgICAgICAgIHJldHVybjsKIAorICAgIHJlbG9hZElt
YWdlc0lmTm90RGVmZXJyZWQoKTsKK30KKwordm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6c2V0
SW1hZ2VzRW5hYmxlZChib29sIGVuYWJsZSkKK3sKKyAgICBpZiAoZW5hYmxlID09IG1faW1hZ2Vz
RW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9pbWFnZXNFbmFibGVkID0gZW5hYmxl
OworCisgICAgaWYgKCFtX2ltYWdlc0VuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIHJl
bG9hZEltYWdlc0lmTm90RGVmZXJyZWQoKTsKK30KKworYm9vbCBDYWNoZWRSZXNvdXJjZUxvYWRl
cjo6Y2xpZW50RGVmZXJzSW1hZ2UoY29uc3QgS1VSTCYgdXJsKSBjb25zdAoreworICAgIHJldHVy
biBmcmFtZSgpICYmICFmcmFtZSgpLT5sb2FkZXIoKS0+Y2xpZW50KCktPmFsbG93SW1hZ2UobV9p
bWFnZXNFbmFibGVkLCB1cmwpOworfQorCitib29sIENhY2hlZFJlc291cmNlTG9hZGVyOjpzaG91
bGREZWZlckltYWdlTG9hZChjb25zdCBLVVJMJiB1cmwpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNs
aWVudERlZmVyc0ltYWdlKHVybCkgfHwgIW1fYXV0b0xvYWRJbWFnZXM7Cit9CisKK3ZvaWQgQ2Fj
aGVkUmVzb3VyY2VMb2FkZXI6OnJlbG9hZEltYWdlc0lmTm90RGVmZXJyZWQoKQorewogICAgIERv
Y3VtZW50UmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGVuZCA9IG1fZG9jdW1lbnRSZXNvdXJjZXMuZW5k
KCk7CiAgICAgZm9yIChEb2N1bWVudFJlc291cmNlTWFwOjppdGVyYXRvciBpdCA9IG1fZG9jdW1l
bnRSZXNvdXJjZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgIENhY2hlZFJl
c291cmNlKiByZXNvdXJjZSA9IGl0LT5zZWNvbmQuZ2V0KCk7Ci0gICAgICAgIGlmIChyZXNvdXJj
ZS0+dHlwZSgpID09IENhY2hlZFJlc291cmNlOjpJbWFnZVJlc291cmNlKSB7Ci0gICAgICAgICAg
ICBDYWNoZWRJbWFnZSogaW1hZ2UgPSBjb25zdF9jYXN0PENhY2hlZEltYWdlKj4oc3RhdGljX2Nh
c3Q8Y29uc3QgQ2FjaGVkSW1hZ2UqPihyZXNvdXJjZSkpOwotCi0gICAgICAgICAgICBpZiAoaW1h
Z2UtPnN0aWxsTmVlZHNMb2FkKCkpCi0gICAgICAgICAgICAgICAgaW1hZ2UtPmxvYWQodGhpcywg
ZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpKTsKLSAgICAgICAgfQorICAgICAgICBpZiAo
cmVzb3VyY2UtPnR5cGUoKSA9PSBDYWNoZWRSZXNvdXJjZTo6SW1hZ2VSZXNvdXJjZSAmJiAhY2xp
ZW50RGVmZXJzSW1hZ2UocmVzb3VyY2UtPnVybCgpKSkKKyAgICAgICAgICAgIGNvbnN0X2Nhc3Q8
Q2FjaGVkUmVzb3VyY2UqPihyZXNvdXJjZSktPmxvYWQodGhpcywgZGVmYXVsdENhY2hlZFJlc291
cmNlT3B0aW9ucygpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKaW5kZXggZjQ3NTVjMjJmZDhkMmYxYzJhMGU4
ZTZkYTgyZTdmOWI1MjNhMTlmYi4uYjVkYzY5NDgyZTFkZjExOTcxNGFiNzgzNjcxYmQ1MDYyZmJh
Y2MwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlTG9hZGVyLmgKQEAgLTk3LDYgKzk3LDEwIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgYXV0b0xv
YWRJbWFnZXMoKSBjb25zdCB7IHJldHVybiBtX2F1dG9Mb2FkSW1hZ2VzOyB9CiAgICAgdm9pZCBz
ZXRBdXRvTG9hZEltYWdlcyhib29sKTsKKworICAgIHZvaWQgc2V0SW1hZ2VzRW5hYmxlZChib29s
KTsKKworICAgIGJvb2wgc2hvdWxkRGVmZXJJbWFnZUxvYWQoY29uc3QgS1VSTCYpIGNvbnN0Owog
ICAgIAogICAgIENhY2hlUG9saWN5IGNhY2hlUG9saWN5KCkgY29uc3Q7CiAgICAgCkBAIC0xMjIs
MTkgKzEyNiwyMyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlP
YmplY3RJbmZvKikgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8
Q2FjaGVkUmVzb3VyY2U+IHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6VHlwZSwgUmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBjb25zdCBSZXNvdXJjZUxvYWRl
ck9wdGlvbnMmLCBSZXNvdXJjZUxvYWRQcmlvcml0eSA9IFJlc291cmNlTG9hZFByaW9yaXR5VW5y
ZXNvbHZlZCwgYm9vbCBpc1ByZWxvYWQgPSBmYWxzZSk7Ci0gICAgQ2FjaGVkUmVzb3VyY2VIYW5k
bGU8Q2FjaGVkUmVzb3VyY2U+IHJldmFsaWRhdGVSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSosIFJl
c291cmNlTG9hZFByaW9yaXR5LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmKTsKLSAgICBD
YWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gbG9hZFJlc291cmNlKENhY2hlZFJl
c291cmNlOjpUeXBlLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIFJl
c291cmNlTG9hZFByaW9yaXR5LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmKTsKKyAgICBl
bnVtIERlZmVyT3B0aW9uIHsgTm9EZWZlciwgRGVmZXJyZWRCeUNsaWVudCB9OworICAgIENhY2hl
ZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiByZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVz
b3VyY2U6OlR5cGUsIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgY29u
c3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiwgUmVzb3VyY2VMb2FkUHJpb3JpdHkgPSBSZXNvdXJj
ZUxvYWRQcmlvcml0eVVucmVzb2x2ZWQsIGJvb2wgaXNQcmVsb2FkID0gZmFsc2UsIERlZmVyT3B0
aW9uID0gTm9EZWZlcik7CisgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+
IHJldmFsaWRhdGVSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSopOworICAgIENhY2hlZFJlc291cmNl
SGFuZGxlPENhY2hlZFJlc291cmNlPiBsb2FkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlR5cGUs
IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgY2hhcnNldCk7CiAgICAgdm9pZCByZXF1
ZXN0UHJlbG9hZChDYWNoZWRSZXNvdXJjZTo6VHlwZSwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3Qg
U3RyaW5nJiBjaGFyc2V0KTsKIAogICAgIGVudW0gUmV2YWxpZGF0aW9uUG9saWN5IHsgVXNlLCBS
ZXZhbGlkYXRlLCBSZWxvYWQsIExvYWQgfTsKLSAgICBSZXZhbGlkYXRpb25Qb2xpY3kgZGV0ZXJt
aW5lUmV2YWxpZGF0aW9uUG9saWN5KENhY2hlZFJlc291cmNlOjpUeXBlLCBSZXNvdXJjZVJlcXVl
c3QmLCBib29sIGZvclByZWxvYWQsIENhY2hlZFJlc291cmNlKiBleGlzdGluZ1Jlc291cmNlKSBj
b25zdDsKKyAgICBSZXZhbGlkYXRpb25Qb2xpY3kgZGV0ZXJtaW5lUmV2YWxpZGF0aW9uUG9saWN5
KENhY2hlZFJlc291cmNlOjpUeXBlLCBSZXNvdXJjZVJlcXVlc3QmLCBib29sIGZvclByZWxvYWQs
IENhY2hlZFJlc291cmNlKiBleGlzdGluZ1Jlc291cmNlLCBEZWZlck9wdGlvbikgY29uc3Q7CiAg
ICAgCiAgICAgdm9pZCBub3RpZnlMb2FkZWRGcm9tTWVtb3J5Q2FjaGUoQ2FjaGVkUmVzb3VyY2Uq
KTsKICAgICBib29sIGNoZWNrSW5zZWN1cmVDb250ZW50KENhY2hlZFJlc291cmNlOjpUeXBlLCBj
b25zdCBLVVJMJikgY29uc3Q7CiAKICAgICB2b2lkIGdhcmJhZ2VDb2xsZWN0RG9jdW1lbnRSZXNv
dXJjZXNUaW1lckZpcmVkKFRpbWVyPENhY2hlZFJlc291cmNlTG9hZGVyPiopOwogICAgIHZvaWQg
cGVyZm9ybVBvc3RMb2FkQWN0aW9ucygpOworCisgICAgYm9vbCBjbGllbnREZWZlcnNJbWFnZShj
b25zdCBLVVJMJikgY29uc3Q7CisgICAgdm9pZCByZWxvYWRJbWFnZXNJZk5vdERlZmVycmVkKCk7
CiAgICAgCiAgICAgSGFzaFNldDxTdHJpbmc+IG1fdmFsaWRhdGVkVVJMczsKICAgICBtdXRhYmxl
IERvY3VtZW50UmVzb3VyY2VNYXAgbV9kb2N1bWVudFJlc291cmNlczsKQEAgLTE1Miw4ICsxNjAs
OSBAQCBwcml2YXRlOgogCiAgICAgVGltZXI8Q2FjaGVkUmVzb3VyY2VMb2FkZXI+IG1fZ2FyYmFn
ZUNvbGxlY3REb2N1bWVudFJlc291cmNlc1RpbWVyOwogCi0gICAgLy8gMzAgYml0cyBsZWZ0Cisg
ICAgLy8gMjkgYml0cyBsZWZ0CiAgICAgYm9vbCBtX2F1dG9Mb2FkSW1hZ2VzIDogMTsKKyAgICBi
b29sIG1faW1hZ2VzRW5hYmxlZCA6IDE7CiAgICAgYm9vbCBtX2FsbG93U3RhbGVSZXNvdXJjZXMg
OiAxOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAppbmRleCBkZjQyNTk2NGRlNjExZGI1
MzhmOWNiYmNjNzY3ZDI0MmUxMzNlZDE3Li4zMDY2NmM1NjE5ODMyMzliOGQ5ODlkMjgzMzEwY2Yy
ZjZiNDZjM2M4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcApAQCAtNDYsMTAgKzQ2LDEyIEBA
IHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIHZv
aWQgc2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5SW5BbGxGcmFtZXMoUGFnZSogcGFnZSkKK3N0
YXRpYyB2b2lkIHNldEltYWdlTG9hZGluZ1NldHRpbmdzKFBhZ2UqIHBhZ2UpCiB7Ci0gICAgZm9y
IChGcmFtZSogZnJhbWUgPSBwYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUt
PnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpCisgICAgZm9yIChGcmFtZSogZnJhbWUgPSBwYWdlLT5t
YWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkp
IHsKKyAgICAgICAgZnJhbWUtPmRvY3VtZW50KCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPnNl
dEltYWdlc0VuYWJsZWQocGFnZS0+c2V0dGluZ3MoKS0+YXJlSW1hZ2VzRW5hYmxlZCgpKTsKICAg
ICAgICAgZnJhbWUtPmRvY3VtZW50KCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPnNldEF1dG9M
b2FkSW1hZ2VzKHBhZ2UtPnNldHRpbmdzKCktPmxvYWRzSW1hZ2VzQXV0b21hdGljYWxseSgpKTsK
KyAgICB9CiB9CiAKIC8vIFNldHMgdGhlIGVudHJ5IGluIHRoZSBmb250IG1hcCBmb3IgdGhlIGdp
dmVuIHNjcmlwdC4gSWYgZmFtaWx5IGlzIHRoZSBlbXB0eSBzdHJpbmcsIHJlbW92ZXMgdGhlIGVu
dHJ5IGluc3RlYWQuCkBAIC0yOTEsNyArMjkzLDcgQEAgU2V0dGluZ3M6OlNldHRpbmdzKFBhZ2Uq
IHBhZ2UpCiAgICAgLCBtX3dpbmRvd0ZvY3VzUmVzdHJpY3RlZCh0cnVlKQogICAgICwgbV9kaWFn
bm9zdGljTG9nZ2luZ0VuYWJsZWQoZmFsc2UpCiAgICAgLCBtX3Njcm9sbGluZ1BlcmZvcm1hbmNl
TG9nZ2luZ0VuYWJsZWQoZmFsc2UpCi0gICAgLCBtX2xvYWRzSW1hZ2VzQXV0b21hdGljYWxseVRp
bWVyKHRoaXMsICZTZXR0aW5nczo6bG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5VGltZXJGaXJlZCkK
KyAgICAsIG1fc2V0SW1hZ2VMb2FkaW5nU2V0dGluZ3NUaW1lcih0aGlzLCAmU2V0dGluZ3M6Omlt
YWdlTG9hZGluZ1NldHRpbmdzVGltZXJGaXJlZCkKICAgICAsIG1faW5jcmVtZW50YWxSZW5kZXJp
bmdTdXBwcmVzc2lvblRpbWVvdXRJblNlY29uZHMoZGVmYXVsdEluY3JlbWVudGFsUmVuZGVyaW5n
U3VwcHJlc3Npb25UaW1lb3V0SW5TZWNvbmRzKQogewogICAgIC8vIEEgRnJhbWUgbWF5IG5vdCBo
YXZlIGJlZW4gY3JlYXRlZCB5ZXQsIHNvIHdlIGluaXRpYWxpemUgdGhlIEF0b21pY1N0cmluZwpA
QCAtNDY2LDEyICs0NjgsMTIgQEAgdm9pZCBTZXR0aW5nczo6c2V0TG9hZHNJbWFnZXNBdXRvbWF0
aWNhbGx5KGJvb2wgbG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KQogICAgIC8vIFN0YXJ0aW5nIHRo
ZXNlIGxvYWRzIHN5bmNocm9ub3VzbHkgaXMgbm90IGltcG9ydGFudC4gIEJ5IHB1dHRpbmcgaXQg
b24gYSAwLWRlbGF5LCBwcm9wZXJseSBjbG9zaW5nIHRoZSBQYWdlIGNhbmNlbHMgdGhlbQogICAg
IC8vIGJlZm9yZSB0aGV5IGhhdmUgYSBjaGFuY2UgdG8gcmVhbGx5IHN0YXJ0LgogICAgIC8vIFNl
ZSBodHRwOi8vd2Via2l0Lm9yZy9iLzYwNTcyIGZvciBtb3JlIGRpc2N1c3Npb24uCi0gICAgbV9s
b2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHlUaW1lci5zdGFydE9uZVNob3QoMCk7CisgICAgbV9zZXRJ
bWFnZUxvYWRpbmdTZXR0aW5nc1RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKIH0KIAotdm9pZCBTZXR0
aW5nczo6bG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5VGltZXJGaXJlZChUaW1lcjxTZXR0aW5ncz4q
KQordm9pZCBTZXR0aW5nczo6aW1hZ2VMb2FkaW5nU2V0dGluZ3NUaW1lckZpcmVkKFRpbWVyPFNl
dHRpbmdzPiopCiB7Ci0gICAgc2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5SW5BbGxGcmFtZXMo
bV9wYWdlKTsKKyAgICBzZXRJbWFnZUxvYWRpbmdTZXR0aW5ncyhtX3BhZ2UpOwogfQogCiB2b2lk
IFNldHRpbmdzOjpzZXRMb2Fkc1NpdGVJY29uc0lnbm9yaW5nSW1hZ2VMb2FkaW5nU2V0dGluZyhi
b29sIGxvYWRzU2l0ZUljb25zKQpAQCAtNTE3LDYgKzUxOSw5IEBAIHZvaWQgU2V0dGluZ3M6OnNl
dEphdmFFbmFibGVkRm9yTG9jYWxGaWxlcyhib29sIGlzSmF2YUVuYWJsZWRGb3JMb2NhbEZpbGVz
KQogdm9pZCBTZXR0aW5nczo6c2V0SW1hZ2VzRW5hYmxlZChib29sIGFyZUltYWdlc0VuYWJsZWQp
CiB7CiAgICAgbV9hcmVJbWFnZXNFbmFibGVkID0gYXJlSW1hZ2VzRW5hYmxlZDsKKworICAgIC8v
IFNlZSBjb21tZW50IGluIHNldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseS4KKyAgICBtX3NldElt
YWdlTG9hZGluZ1NldHRpbmdzVGltZXIuc3RhcnRPbmVTaG90KDApOwogfQogCiB2b2lkIFNldHRp
bmdzOjpzZXRNZWRpYUVuYWJsZWQoYm9vbCBpc01lZGlhRW5hYmxlZCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGlu
Z3MuaAppbmRleCA4Mzk4NmY2OTcwYmZkMjhhZTI4ZWZhNmM4OWQxZmFkNTQ5NTY4YjBhLi5jMThk
ZmQ3MzA2YjU5NTUyZmYzNDJiZDE3YzBmYzI1Y2E1N2Y3MzI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5n
cy5oCkBAIC04MTgsOCArODE4LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIGJv
b2wgbV9zY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkIDogMTsKIAotICAgICAgICBU
aW1lcjxTZXR0aW5ncz4gbV9sb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHlUaW1lcjsKLSAgICAgICAg
dm9pZCBsb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHlUaW1lckZpcmVkKFRpbWVyPFNldHRpbmdzPiop
OworICAgICAgICBUaW1lcjxTZXR0aW5ncz4gbV9zZXRJbWFnZUxvYWRpbmdTZXR0aW5nc1RpbWVy
OworICAgICAgICB2b2lkIGltYWdlTG9hZGluZ1NldHRpbmdzVGltZXJGaXJlZChUaW1lcjxTZXR0
aW5ncz4qKTsKICAgICAgICAgCiAgICAgICAgIGRvdWJsZSBtX2luY3JlbWVudGFsUmVuZGVyaW5n
U3VwcHJlc3Npb25UaW1lb3V0SW5TZWNvbmRzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbFNldHRpbmdzLmNwcAppbmRleCBiZDIzNzY2MDdkNzA0MWYxNzcyYzE2MWMyMTI1OWM1
NWU0MWMzMDI4Li5iYjllZWQ2YjEzNTZlMTE4YTE1NjJmZjRkMmRjMjQwYzM1ZjA1YjY3IDEwMDc1
NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAKQEAgLTEwMCw2ICsx
MDAsNyBAQCBJbnRlcm5hbFNldHRpbmdzOjpCYWNrdXA6OkJhY2t1cChQYWdlKiBwYWdlLCBTZXR0
aW5ncyogc2V0dGluZ3MpCiAgICAgLCBtX2NhblN0YXJ0TWVkaWEocGFnZS0+Y2FuU3RhcnRNZWRp
YSgpKQogICAgICwgbV9vcmlnaW5hbE1vY2tTY3JvbGxiYXJzRW5hYmxlZChzZXR0aW5ncy0+bW9j
a1Njcm9sbGJhcnNFbmFibGVkKCkpCiAgICAgLCBtX2xhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250
cm9sVUlFbmFibGVkKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmxhbmdBdHRyaWJ1dGVBd2FyZUZv
cm1Db250cm9sVUlFbmFibGVkKCkpCisgICAgLCBtX2ltYWdlc0VuYWJsZWQoc2V0dGluZ3MtPmFy
ZUltYWdlc0VuYWJsZWQoKSkKIHsKIH0KIApAQCAtMTM1LDYgKzEzNiw3IEBAIHZvaWQgSW50ZXJu
YWxTZXR0aW5nczo6QmFja3VwOjpyZXN0b3JlVG8oUGFnZSogcGFnZSwgU2V0dGluZ3MqIHNldHRp
bmdzKQogICAgIHBhZ2UtPnNldENhblN0YXJ0TWVkaWEobV9jYW5TdGFydE1lZGlhKTsKICAgICBz
ZXR0aW5ncy0+c2V0TW9ja1Njcm9sbGJhcnNFbmFibGVkKG1fb3JpZ2luYWxNb2NrU2Nyb2xsYmFy
c0VuYWJsZWQpOwogICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldExhbmdBdHRyaWJ1dGVB
d2FyZUZvcm1Db250cm9sVUlFbmFibGVkKG1fbGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xV
SUVuYWJsZWQpOworICAgIHNldHRpbmdzLT5zZXRJbWFnZXNFbmFibGVkKG1faW1hZ2VzRW5hYmxl
ZCk7CiB9CiAKIEludGVybmFsU2V0dGluZ3MqIEludGVybmFsU2V0dGluZ3M6OmZyb20oUGFnZSog
cGFnZSkKQEAgLTY1OSw0ICs2NjEsMTAgQEAgdm9pZCBJbnRlcm5hbFNldHRpbmdzOjpzZXRMYW5n
QXR0cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJRW5hYmxlZChib29sIGVuYWJsZWQpCiAgICAgUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6c2V0TGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVu
YWJsZWQoZW5hYmxlZCk7CiB9CiAKK3ZvaWQgSW50ZXJuYWxTZXR0aW5nczo6c2V0SW1hZ2VzRW5h
YmxlZChib29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIEludGVybmFsU2V0
dGluZ3NHdWFyZEZvclNldHRpbmdzKCk7CisgICAgc2V0dGluZ3MoKS0+c2V0SW1hZ2VzRW5hYmxl
ZChlbmFibGVkKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbFNldHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGlu
Z3MuaAppbmRleCAyYzA3M2RmNmVlZGE0ZjA2ZTNlZWEwYWIzZDFhNDdjZjQ0NjkxOTVhLi5iZTg4
MTBkZTY2ODJiYzg3ZDQ0NzZiZjkzZDlhMGQ4MDI5YWUwOTA4IDEwMDc1NQotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaApAQCAtODIsNiArODIsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIGJvb2wgbV9jYW5TdGFydE1lZGlhOwogICAgICAgICBib29sIG1fb3JpZ2luYWxNb2NrU2Ny
b2xsYmFyc0VuYWJsZWQ7CiAgICAgICAgIGJvb2wgbV9sYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29u
dHJvbFVJRW5hYmxlZDsKKyAgICAgICAgYm9vbCBtX2ltYWdlc0VuYWJsZWQ7CiAgICAgfTsKIAog
ICAgIHR5cGVkZWYgUmVmQ291bnRlZFN1cHBsZW1lbnQ8UGFnZSwgSW50ZXJuYWxTZXR0aW5ncz4g
U3VwZXJUeXBlOwpAQCAtMTQ3LDYgKzE0OCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE1lbW9y
eUluZm9FbmFibGVkKGJvb2wsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHNldFN0b3JhZ2VC
bG9ja2luZ1BvbGljeShjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBz
ZXRMYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJRW5hYmxlZChib29sKTsKKyAgICB2b2lk
IHNldEltYWdlc0VuYWJsZWQoYm9vbCBlbmFibGVkLCBFeGNlcHRpb25Db2RlJik7CisKIHByaXZh
dGU6CiAgICAgZXhwbGljaXQgSW50ZXJuYWxTZXR0aW5ncyhQYWdlKik7CiAgICAgdmlydHVhbCB2
b2lkIGhvc3REZXN0cm95ZWQoKSBPVkVSUklERSB7IG1fcGFnZSA9IDA7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaWRsCmluZGV4IDk2NzNkMmYxYzI1ZDFiNGMx
MmM1OGQyOTRjYzllN2I1YjIzMjJlYWYuLmQ4YThhYWY4YmJhODE1ODIwNGM5NTY5NGIxNGI4MzQz
MWNjNjI4NTMgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0
aW5ncy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlk
bApAQCAtODIsNiArODIsNyBAQCBtb2R1bGUgd2luZG93IHsKICNlbmRpZgogICAgICAgICB2b2lk
IHNldE1lbW9yeUluZm9FbmFibGVkKGluIGJvb2xlYW4gZW5hYmxlZCkgcmFpc2VzKERPTUV4Y2Vw
dGlvbik7CiAgICAgICAgIHZvaWQgc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KGluIERPTVN0cmlu
ZyBwb2xpY3kpIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICB2b2lkIHNldEltYWdlc0Vu
YWJsZWQoaW4gYm9vbGVhbiBlbmFibGVkKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICB9Owog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYgYi9Tb3VyY2Uv
V2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKaW5kZXggZjQ1NzhmNzNjNWVlYzRiOTU0MDRmZTg5NzQz
MjM3OGMwZjkyODZiMi4uZTBiN2RhOWFiMTlmYTVkYWUwZDkzODJkYTZmMDVhNDE1YmRjNmJlMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgpAQCAtMjIyLDYgKzIyMiw3IEBAIEVYUE9SVFMKICAgICAg
ICAgP3NldERPTUV4Y2VwdGlvbkBXZWJDb3JlQEBZQVhQQVZFeGVjU3RhdGVASlNDQEBIQFoKICAg
ICAgICAgP3NldEZhbnRhc3lGb250RmFtaWx5QFNldHRpbmdzQFdlYkNvcmVAQFFBRVhBQlZBdG9t
aWNTdHJpbmdAV1RGQEBXNFVTY3JpcHRDb2RlQEBAWgogICAgICAgICA/c2V0Rml4ZWRGb250RmFt
aWx5QFNldHRpbmdzQFdlYkNvcmVAQFFBRVhBQlZBdG9taWNTdHJpbmdAV1RGQEBXNFVTY3JpcHRD
b2RlQEBAWgorICAgICAgICA/c2V0SW1hZ2VzRW5hYmxlZEBTZXR0aW5nc0BXZWJDb3JlQEBRQUVY
X05AWgogICAgICAgICA/c2V0TW9ja1Njcm9sbGJhcnNFbmFibGVkQFNldHRpbmdzQFdlYkNvcmVA
QFNBWF9OQFoKICAgICAgICAgP21vY2tTY3JvbGxiYXJzRW5hYmxlZEBTZXR0aW5nc0BXZWJDb3Jl
QEBTQV9OWFoKICAgICAgICAgP3NldFVzZXNPdmVybGF5U2Nyb2xsYmFyc0BTZXR0aW5nc0BXZWJD
b3JlQEBTQVhfTkBaCmRpZmYgLS1naXQgYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVy
IGIvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgppbmRleCBlMmE0MjI5NTA2ODQyNjUz
ZmRjMmE0ODA2YjZkZmEyNjI1NGVhMWY1Li40OTY3NmNmMTgzNjRhZDNmNWIwNzcxNzc4Yzg4M2Y5
ZDQ2NGVkNTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCisr
KyBiL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKQEAgLTE2Miw2ICsxNjIsNyBAQCBf
Wk43V2ViQ29yZTE0U2Nyb2xsYWJsZUFyZWEyOHNldFNjcm9sbE9mZnNldEZyb21JbnRlcm5hbHNF
UktOU184SW50UG9pbnRFOwogX1pON1dlYkNvcmUxMFNjcm9sbFZpZXcyM3NldFNjcm9sbGJhcnNT
dXBwcmVzc2VkRWJiOwogX1pON1dlYkNvcmUxMFNjcm9sbFZpZXcyMXNldERlbGVnYXRlc1Njcm9s
bGluZ0ViOwogX1pON1dlYkNvcmU0Tm9kZTE0cmVtb3ZlZExhc3RSZWZFdjsKK19aTjdXZWJDb3Jl
OFNldHRpbmdzMTZzZXRJbWFnZXNFbmFibGVkRWI7CiBfWk43V2ViQ29yZThTZXR0aW5nczE4c2V0
Rml4ZWRGb250RmFtaWx5RVJLTjNXVEYxMkF0b21pY1N0cmluZ0UxMVVTY3JpcHRDb2RlOwogX1pO
N1dlYkNvcmU4U2V0dGluZ3MxOHNldFNlcmlmRm9udEZhbWlseUVSS04zV1RGMTJBdG9taWNTdHJp
bmdFMTFVU2NyaXB0Q29kZTsKIF9aTjdXZWJDb3JlOFNldHRpbmdzMjBzZXRDdXJzaXZlRm9udEZh
bWlseUVSS04zV1RGMTJBdG9taWNTdHJpbmdFMTFVU2NyaXB0Q29kZTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2NjM0NDky
NWY0MjhmNGQ1MDhmMzU0ODNjNmY5NjA1NTY4ZWYwYzg2Li42Yzg3YmZkMDA1NmM5NTk3MDNhNWQ1
YzA0MTMzZWU2ZDIxMGIzZGE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMTItMDktMjQgIEJv
IExpdSAgPGJvbGl1QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZWxhbmQgIkFkZCBpbi1wbGFj
ZSByZWxvYWQgYmVoYXZpb3IgdG8gSW1hZ2VzRW5hYmxlZCBzZXR0aW5nIiB3aXRoIG9wdGltaXph
dGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3
MDU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVs
YW5kaW5nIDEyODc4MCwgMTI4Njc2LCAxMjg2NDUuIFdhcyByZXZlcnRlZCBpbiAxMjg5MTQgZHVl
IHRvCisgICAgICAgIHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb24gaW4gQ2hyb21pdW0uCisKKyAgICAg
ICAgTmV3IGNoYW5nZXMgaW4gYWRkaXRpb24gdG8gcHJldmlvdXNseSByZXZlcnRlZCBwYXRjaGVz
OgorCisgICAgICAgIFJlZmFjdG9yZWQgQ2FjaGVkUmVzb3VyY2U6OnJlcXVlc3RSZXNvdXJjZSwg
bG9hZFJlc291cmNlLCBhbmQKKyAgICAgICAgcmV2YWxpZGF0ZVJlc291cmNlLiBNb3ZlZCBDYWNo
ZWRSZXNvdXJjZTo6bG9hZCBtZXRob2QgdG8gZW5kIG9mCisgICAgICAgIHJlcXVlc3RSZXNvdXJj
ZSBzbyB0aGVyZSBpcyBvbmUgcGxhY2Ugd2hlcmUgbG9hZCBpcyBjYWxsZWQgZm9yIGFsbAorICAg
ICAgICByZXNvdXJjZXMuCisKKyAgICAgICAgQWRkZWQgYSBlbnVtIHBhcmFtZXRlciBmb3IgcmVx
dWVzdFJlc291cmNlIGFuZAorICAgICAgICBkZXRlcm1pbmVSZXZhbGlkYXRpb25Qb2xpY3kgc28g
dGhhdCBGcmFtZUxvYWRlckNsaWVudDo6YWxsb3dJbWFnZSBjYWxsCisgICAgICAgIGRvIG5vdCBu
ZWVkIHRvIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcy4KKworICAgICAgICBSZW1vdmVkIENhY2hl
ZEltYWdlOjpsb2FkIGNhbGwgaW4gcmVxdWVzdEltYWdlIHNvIGl0IGlzIG5vdCBjYWxsZWQKKyAg
ICAgICAgdHdpY2UuCisKKyAgICAgICAgUmVtb3ZlZCB1bm5lY2Vzc2FyeSBGcmFtZS5oIGluY2x1
ZGVzIGluIENhY2hlZFJlc291cmNlIGFuZAorICAgICAgICBDYWNoZWRJbWFnZS4KKworICAgICAg
ICBSZW1vdmVkIGRlYWQgbG9hZCgpIG1ldGhvZCBkZWNsYXJhdGlvbiBpbiBDYWNoZWRJbWFnZS4K
KworICAgICAgICBVcGRhdGVkIHRleHQgZXhwZWN0YXRpb24gZm9yIHR3byBpbWFnZS1wZXJtaXNz
aW9ucyB0ZXN0cyB0byByZWZsZWN0CisgICAgICAgIHRoZSByZW1vdmVkIGNhbGxzIHRvIGFsbG93
SW1hZ2UuCisKKyAgICAgICAgKiBmYXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0LWFsbG93
cy1jYWNoZWQtaW1hZ2UtbG9hZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
bG9hZGVyL2Rpc3BsYXktaW1hZ2UtdW5zZXQtYWxsb3dzLWNhY2hlZC1pbWFnZS1sb2FkLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvbG9hZGVyL2Rpc3BsYXktaW1hZ2UtdW5zZXQtY2FuLWJs
b2NrLWltYWdlLWFuZC1jYW4tcmVsb2FkLWluLXBsYWNlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9sb2FkZXIvZGlzcGxheS1pbWFnZS11bnNldC1jYW4tYmxvY2staW1hZ2Ut
YW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9sb2Fk
ZXIvaW1hZ2VzLWVuYWJsZWQtdW5zZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1jYW4tcmVsb2FkLWlu
LXBsYWNlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9sb2FkZXIvaW1hZ2Vz
LWVuYWJsZWQtdW5zZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1jYW4tcmVsb2FkLWluLXBsYWNlLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbG9hZGVyL3Jlc291cmNlcy9pbWFnZTEuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9sb2FkZXIvcmVzb3VyY2VzL2ltYWdlMi5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9wZXJtaXNzaW9uY2xpZW50L2ltYWdlLXBl
cm1pc3Npb25zLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9wZXJt
aXNzaW9uY2xpZW50L2ltYWdlLXBlcm1pc3Npb25zLmh0bWw6CisgICAgICAgICogcGxhdGZvcm0v
Y2hyb21pdW0vcGVybWlzc2lvbmNsaWVudC9yZXNvdXJjZXMvaW1hZ2UuaHRtbDoKKyAgICAgICAg
KiBwbGF0Zm9ybS93azIvU2tpcHBlZDoKKwogMjAxMi0wOS0yNCAgWmFuIERvYmVyc2VrICA8emFu
ZG9iZXJzZWtAZ21haWwuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIxMjkyMTEtcjEyOTIx
OCk6IGh0dHAvdGVzdHMvbG9hZGluZy9yZWRpcmVjdC13aXRoLW5vLWxvY2F0aW9uLWNyYXNoLmh0
bWwgZmFpbGluZyBvbiBHVEsgTGludXggNjQtYml0IFJlbGVhc2UgV0syIChUZXN0cykKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2Rpc3BsYXktaW1hZ2UtdW5zZXQtYWxsb3dz
LWNhY2hlZC1pbWFnZS1sb2FkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVy
L2Rpc3BsYXktaW1hZ2UtdW5zZXQtYWxsb3dzLWNhY2hlZC1pbWFnZS1sb2FkLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTE1YWFjMGM1MTVlODA1NmFiM2NjYzk1MTkwMzczMzI4ZjgzN2Y4Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZGlzcGxheS1pbWFnZS11
bnNldC1hbGxvd3MtY2FjaGVkLWltYWdlLWxvYWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMiBA
QAorVGVzdCB0aGF0IFdlYktpdERpc3BsYXlJbWFnZXNLZXkgdW5zZXQgZG9lcyBub3QgYmxvY2sg
aW1hZ2UgaW4gY2FjaGUuCitQQVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRl
ci9kaXNwbGF5LWltYWdlLXVuc2V0LWFsbG93cy1jYWNoZWQtaW1hZ2UtbG9hZC5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9sb2FkZXIvZGlzcGxheS1pbWFnZS11bnNldC1hbGxvd3MtY2FjaGVkLWlt
YWdlLWxvYWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOGQ3MDNkNTA0ZWFhNDViM2Y0ZWZmZWQwYjQ3YjQ3
N2U0ODE4ZmQ3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZGlz
cGxheS1pbWFnZS11bnNldC1hbGxvd3MtY2FjaGVkLWltYWdlLWxvYWQuaHRtbApAQCAtMCwwICsx
LDM5IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKy8vIE9wZW5zIHR3byB3aW5kb3dzIGNv
bnRhaW5pbmcgdGhlIHNhbWUgaW1hZ2UuIEZpcnN0IHdpbmRvdyB3aWxsIHBvcHVsYXRlIHRoZSBj
YWNoZSB3aXRoCisvLyBpbWFnZS4gVGhlIHNlY29uZCB3aW5kb3cgaXMgb3BlbmVkIHdpdGggV2Vi
S2l0RGlzcGxheUltYWdlc0tleSB1bnNldCwgYnV0IGltYWdlIHNob3VsZAorLy8gc3RpbGwgbG9h
ZCBzaW5jZSBpdCBpcyBpbiBjYWNoZS4KK2Z1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAg
ICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0
Q2FuT3BlbldpbmRvd3MoKTsKKyAgICAgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2Uo
IldlYktpdFVzZXNQYWdlQ2FjaGVQcmVmZXJlbmNlS2V5IiwgMSk7CisKKyAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9ICdGQUlMVVJFOiBpbWFnZTEu
aHRtbCBub3QgbG9hZGVkJzsKKyAgICAgICAgd2luZG93Lm9wZW4oInJlc291cmNlcy9pbWFnZTEu
aHRtbCIsICJfYmxhbmsiKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGltYWdlMUxvYWRlZCgpCit7
CisgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoJ1dlYktpdERpc3BsYXlJbWFnZXNL
ZXknLCAwKTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1M
ID0gJ0ZBSUxVUkU6IGltYWdlMi5odG1sIG5vdCBsb2FkZWQnOworICAgIHdpbmRvdy5zZXRUaW1l
b3V0KGZ1bmN0aW9uKCkge3dpbmRvdy5vcGVuKCJyZXNvdXJjZXMvaW1hZ2UyLmh0bWwiLCAiX2Js
YW5rIik7fSwgMCk7Cit9CisKK2Z1bmN0aW9uIGltYWdlMkxvYWRlZCgpCit7CisgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9ICdQQVNTJzsKKwkJdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0i
cnVuVGVzdCgpIj4KK1Rlc3QgdGhhdCBXZWJLaXREaXNwbGF5SW1hZ2VzS2V5IHVuc2V0IGRvZXMg
bm90IGJsb2NrIGltYWdlIGluIGNhY2hlLgorPGRpdiBpZD0icmVzdWx0Ij5GQUlMVVJFOiBUZXN0
IHNjcmlwdCBkaWRuJ3QgcnVuLjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0LWNhbi1ibG9jay1p
bWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9m
YXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJl
bG9hZC1pbi1wbGFjZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2E5ZWY1MzQ3OWI4YjVhYTRi
NDY0ZjY1N2YyYWNmN2U1YmI0NDdkMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvbG9hZGVyL2Rpc3BsYXktaW1hZ2UtdW5zZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1jYW4tcmVs
b2FkLWluLXBsYWNlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKK1Rlc3QgdGhhdCBEaXNw
bGF5SW1hZ2VzIGRpc2FibGVkIGNhbiBibG9jayBodHRwIGltYWdlIGFuZCBjYW4gYmUgcmVsb2Fk
ZWQgaW4tcGxhY2Ugd2hlbiB0b2dnbGVkLgorU1VDQ0VTUworCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1hbmQt
Y2FuLXJlbG9hZC1pbi1wbGFjZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZGlzcGxh
eS1pbWFnZS11bnNldC1jYW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zMTJmNTA5ZDU0M2I3YTVhN2Q0N2QxOTFiNzg4NjYzZTZkMjYxOTc3Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZGlzcGxheS1pbWFnZS11
bnNldC1jYW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UuaHRtbApAQCAtMCww
ICsxLDQ3IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKy8vIFNldHRpbmcgV2ViS2l0RGlz
cGxheUltYWdlc0tleSBpcyBhc3luY2hyb25vdXMsIHNvIHVzaW5nIHF1ZXVlUmVsb2FkIGFuZCBz
ZXRJbnRlcnZhbCB0byBjaGVjayB3aGVuIHRoZSBzZXR0aW5nIGFjdHVhbGx5IHRha2UgZWZmZWN0
LgorCit2YXIgaW50ZXJ2YWxJZDsKK3ZhciBpbWFnZU9ubG9hZEZpcmVkID0gMDsKKworaWYgKHdp
bmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgd2lu
ZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRJbWFnZXNFbmFibGVkKHRydWUpOworICAgIHRlc3RS
dW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCdXZWJLaXREaXNwbGF5SW1hZ2VzS2V5JywgMCk7Cisg
ICAgdGVzdFJ1bm5lci5xdWV1ZVJlbG9hZCgpOworfQorCitmdW5jdGlvbiBydW5UZXN0KCkKK3sK
KyAgICB2YXIgaW1hZ2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW1hZ2UnKTsKKyAgICBp
ZiAoaW1hZ2UubmF0dXJhbEhlaWdodCAhPSAwIHx8IGltYWdlLm5hdHVyYWxXaWR0aCAhPSAwIHx8
IGltYWdlT25sb2FkRmlyZWQgIT0gMCkgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgncmVzdWx0JykuaW5uZXJIVE1MID0gJ0ZBSUxVUkU6IEltYWdlIHNob3VsZCBub3QgYmUgbG9h
ZGVkIHdoZW4gRGlzcGxheUltYWdlIGlzIHVuc2V0JzsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCdXZWJLaXREaXNwbGF5SW1hZ2Vz
S2V5JywgMSk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRN
TCA9ICdGQUlMVVJFOiBJbWFnZSBzaG91bGQgcmVsb2FkIGluLXBsYWNlIHdoZW4gRGlzcGFseUlt
YWdlIGlzIGNoYW5nZXMgZnJvbSB1bnNldCB0byBzZXQnOworICAgIHRlc3RSdW5uZXIud2FpdFVu
dGlsRG9uZSgpOworICAgIGludGVydmFsSWQgPSB3aW5kb3cuc2V0SW50ZXJ2YWwocnVuVGVzdFJl
c3QsIDEwKTsKK30KKworZnVuY3Rpb24gcnVuVGVzdFJlc3QoKQoreworICAgIHZhciBpbWFnZSA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbWFnZScpOworICAgIGlmIChpbWFnZS5uYXR1cmFs
SGVpZ2h0ID09IDMzICYmIGltYWdlLm5hdHVyYWxXaWR0aCA9PSAzNyAmJiBpbWFnZU9ubG9hZEZp
cmVkID09IDEpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlu
bmVySFRNTCA9ICdTVUNDRVNTJzsKKyAgICAgICAgd2luZG93LmNsZWFySW50ZXJ2YWwoaW50ZXJ2
YWxJZCk7CisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgIH0KK30KKzwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorICBUZXN0IHRoYXQgRGlz
cGxheUltYWdlcyBkaXNhYmxlZCBjYW4gYmxvY2sgaHR0cCBpbWFnZSBhbmQgY2FuIGJlIHJlbG9h
ZGVkIGluLXBsYWNlIHdoZW4gdG9nZ2xlZC4KKyAgPGRpdiBpZD0icmVzdWx0Ij5GQUlMVVJFOiBU
ZXN0IHNjcmlwdCBkaWRuJ3QgcnVuLjwvZGl2PgorICA8aW1nIGlkPSJpbWFnZSIgc3JjPSIuLi9p
bWFnZXMvcmVzb3VyY2VzL292YWwucG5nIiBvbmxvYWQ9ImltYWdlT25sb2FkRmlyZWQ9MTsiPgor
PC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9p
bWFnZXMtZW5hYmxlZC11bnNldC1jYW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxh
Y2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvaW1hZ2VzLWVuYWJsZWQt
dW5zZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1jYW4tcmVsb2FkLWluLXBsYWNlLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45NTFkNDYwMWNjYzNjYTE4ZDhjZmQ1YTk2OTc4MTExZmZiMGM2MDIwCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvaW1hZ2VzLWVuYWJsZWQt
dW5zZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1jYW4tcmVsb2FkLWluLXBsYWNlLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDMgQEAKK1Rlc3QgdGhhdCBFbmFibGVJbWFnZXMgdW5zZXQgY2FuIGJsb2Nr
IGltYWdlIGFuZCBjYW4gYmUgcmVsb2FkZWQgaW4tcGxhY2Ugd2hlbiB0b2dnbGVkLgorU1VDQ0VT
UworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9pbWFnZXMtZW5hYmxlZC11
bnNldC1jYW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvbG9hZGVyL2ltYWdlcy1lbmFibGVkLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1h
bmQtY2FuLXJlbG9hZC1pbi1wbGFjZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNmNDhlNjI4ZGRkNjBkNWJh
ZmEyYjE0ZjA4MzYwYjRiNmU2YTY2M2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2xvYWRlci9pbWFnZXMtZW5hYmxlZC11bnNldC1jYW4tYmxvY2staW1hZ2UtYW5kLWNhbi1y
ZWxvYWQtaW4tcGxhY2UuaHRtbApAQCAtMCwwICsxLDQ3IEBACis8aHRtbD4KKzxoZWFkPgorPHNj
cmlwdD4KKy8vIFNldHRpbmcgSW1hZ2VzRW5hYmxlZCBpcyBhc3luY2hyb25vdXMsIHNvIHVzaW5n
IHF1ZXVlUmVsb2FkIGFuZCBzZXRJbnRlcnZhbCB0byBjaGVjayB3aGVuIHRoZSBzZXR0aW5nIGFj
dHVhbGx5IHRha2UgZWZmZWN0LgorCit2YXIgaW50ZXJ2YWxJZDsKK3ZhciBpbWFnZU9ubG9hZEZp
cmVkID0gMDsKKworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoJ1dlYktpdERpc3Bs
YXlJbWFnZXNLZXknLCAxKTsKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldEltYWdl
c0VuYWJsZWQoZmFsc2UpOworICAgIHRlc3RSdW5uZXIucXVldWVSZWxvYWQoKTsKK30KKworZnVu
Y3Rpb24gcnVuVGVzdCgpCit7CisgICAgdmFyIGltYWdlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2ltYWdlJyk7CisgICAgaWYgKGltYWdlLm5hdHVyYWxIZWlnaHQgIT0gMCB8fCBpbWFnZS5u
YXR1cmFsV2lkdGggIT0gMCB8fCBpbWFnZU9ubG9hZEZpcmVkICE9IDApIHsKKyAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9ICdGQUlMVVJFOiBJbWFn
ZSBzaG91bGQgbm90IGJlIGxvYWRlZCB3aGVuIEltYWdlc0VuYWJsZWQgaXMgdW5zZXQnOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRJ
bWFnZXNFbmFibGVkKHRydWUpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQn
KS5pbm5lckhUTUwgPSAnRkFJTFVSRTogSW1hZ2Ugc2hvdWxkIHJlbG9hZCBpbi1wbGFjZSB3aGVu
IEltYWdlc0VuYWJsZWQgaXMgY2hhbmdlcyBmcm9tIHVuc2V0IHRvIHNldCc7CisgICAgdGVzdFJ1
bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgaW50ZXJ2YWxJZCA9IHdpbmRvdy5zZXRJbnRlcnZh
bChydW5UZXN0UmVzdCwgMTApOworfQorCitmdW5jdGlvbiBydW5UZXN0UmVzdCgpCit7CisgICAg
dmFyIGltYWdlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ltYWdlJyk7CisgICAgaWYgKGlt
YWdlLm5hdHVyYWxIZWlnaHQgPT0gMzMgJiYgaW1hZ2UubmF0dXJhbFdpZHRoID09IDM3IHx8IGlt
YWdlT25sb2FkRmlyZWQgPT0gMSkgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
cmVzdWx0JykuaW5uZXJIVE1MID0gJ1NVQ0NFU1MnOworICAgICAgICB3aW5kb3cuY2xlYXJJbnRl
cnZhbChpbnRlcnZhbElkKTsKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAg
fQorfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CisgIFRl
c3QgdGhhdCBFbmFibGVJbWFnZXMgdW5zZXQgY2FuIGJsb2NrIGltYWdlIGFuZCBjYW4gYmUgcmVs
b2FkZWQgaW4tcGxhY2Ugd2hlbiB0b2dnbGVkLgorICA8ZGl2IGlkPSJyZXN1bHQiPkZBSUxVUkU6
IFRlc3Qgc2NyaXB0IGRpZG4ndCBydW4uPC9kaXY+CisgIDxpbWcgaWQ9ImltYWdlIiBzcmM9Ii4u
L2ltYWdlcy9yZXNvdXJjZXMvb3ZhbC5wbmciIG9ubG9hZD0iaW1hZ2VPbmxvYWRGaXJlZD0xOyI+
Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVy
L3Jlc291cmNlcy9pbWFnZTEuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3Jlc291cmNl
cy9pbWFnZTEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZDY5ZGMzYzJhMGQ2YTE1ZTA4OTYzNzkxMDMyNTRm
NWVhYTM0ZGMxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvcmVz
b3VyY2VzL2ltYWdlMS5odG1sCkBAIC0wLDAgKzEsNSBAQAorPGh0bWw+Cis8Ym9keT4KKyAgPGlt
ZyBzcmM9Ii4uLy4uL2ltYWdlcy9yZXNvdXJjZXMvb3ZhbC5wbmciIG9ubG9hZD0id2luZG93Lm9w
ZW5lci5pbWFnZTFMb2FkZWQoKTsiPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9sb2FkZXIvcmVzb3VyY2VzL2ltYWdlMi5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9sb2FkZXIvcmVzb3VyY2VzL2ltYWdlMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwMzdmZmYwY2U2
NTY3NzdjYzAyZThhZTZjYzgxY2Y2ZWE0NDJhYWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2xvYWRlci9yZXNvdXJjZXMvaW1hZ2UyLmh0bWwKQEAgLTAsMCArMSw1IEBACis8
aHRtbD4KKzxib2R5PgorICA8aW1nIHNyYz0iLi4vLi4vaW1hZ2VzL3Jlc291cmNlcy9vdmFsLnBu
ZyIgb25sb2FkPSJ3aW5kb3cub3BlbmVyLmltYWdlMkxvYWRlZCgpOyI+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9wZXJtaXNzaW9u
Y2xpZW50L2ltYWdlLXBlcm1pc3Npb25zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtL3Blcm1pc3Npb25jbGllbnQvaW1hZ2UtcGVybWlzc2lvbnMtZXhwZWN0ZWQu
dHh0CmluZGV4IDYwZTc2YTUyM2FkZjI2NDQ2NTMzNTgyOTZmN2NiOWViNDM4ZDNmOWYuLmU2MDdh
MTAxMzExMjgzYjdhNGZjMDU3OWJjNmFiNWEyZmUyNDEyMTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL3Blcm1pc3Npb25jbGllbnQvaW1hZ2UtcGVybWlzc2lvbnMt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Blcm1pc3Np
b25jbGllbnQvaW1hZ2UtcGVybWlzc2lvbnMtZXhwZWN0ZWQudHh0CkBAIC01LDYgKzUsNCBAQCBQ
RVJNSVNTSU9OIENMSUVOVDogYWxsb3dJbWFnZSgoZmlsZSB0ZXN0KTpwbGF0Zm9ybS9jaHJvbWl1
bS9wZXJtaXNzaW9uY2xpZW50L3JlcwogCiAKIFBBU1M6IGZpcnN0IGltYWdlIGxvYWRlZAotUEFT
UzogZXJyb3IgZXZlbnQgZm9yIG5vdCBjYWNoZWQgaW1hZ2UKLVBBU1M6IGVycm9yIGV2ZW50IGZv
ciBpbWFnZSBmcm9tIGNhY2hlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL3Blcm1pc3Npb25jbGllbnQvaW1hZ2UtcGVybWlzc2lvbnMuaHRtbCBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL3Blcm1pc3Npb25jbGllbnQvaW1hZ2UtcGVybWlzc2lvbnMu
aHRtbAppbmRleCA3YjVlMmM1NzVjOTg5NzRhYzA4Zjg3ZTlmOGMxMjA3MTBhZGJmZWYwLi5mNTdh
M2I3MDcwNDMzMDljMmZhYjJmZjkyYzNlOWUyYzZlNDE5NjQ3IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9wZXJtaXNzaW9uY2xpZW50L2ltYWdlLXBlcm1pc3Npb25z
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vcGVybWlzc2lvbmNsaWVu
dC9pbWFnZS1wZXJtaXNzaW9ucy5odG1sCkBAIC0xLDYgKzEsOSBAQAogPGh0bWw+CiA8aGVhZD4K
IDxzY3JpcHQ+CisvLyBCbG9ja2VkIGltYWdlcyBjYW4gYmUgcmVsb2FkZWQsIHNvIG5laXRoZXIg
b25sb2FkIG5vciBvbmVycm9yIGlzIGNhbGxlZC4KKy8vIE9ubHkgY2hlY2sgaGVyZSB0aGF0IG9u
bG9hZCBpcyBuZXZlciBjYWxsZWQgd2hlbiBpbWFnZSBpcyBibG9ja2VkLgorCiBpZiAod2luZG93
LnRlc3RSdW5uZXIpIHsKICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICB0ZXN0UnVu
bmVyLmR1bXBQZXJtaXNzaW9uQ2xpZW50Q2FsbGJhY2tzKCk7CkBAIC0yMSwxNCArMjQsMTIgQEAg
ZnVuY3Rpb24gbG9hZGVkKCkKIAogICAgIC8vIExvYWQgYW4gaW1hZ2Ugbm90IGluIGNhY2hlLgog
ICAgIHZhciBpbWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbWcnKTsKLSAgICBpbWcub25l
cnJvciA9IGZ1bmN0aW9uICgpIHsgbG9nKCJQQVNTOiBlcnJvciBldmVudCBmb3Igbm90IGNhY2hl
ZCBpbWFnZSIpOyB9CiAgICAgaW1nLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsgbG9nKCJGQUlMOiBu
b3QgY2FjaGVkIGltYWdlIGxvYWRlZCIpOyB9CiAgICAgaW1nLnNyYyA9ICJyZXNvdXJjZXMvYm9z
dG9uLmdpZj9ub2NhY2hlIjsKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW1nIikuYXBw
ZW5kQ2hpbGQoaW1nKTsKIAogICAgIC8vIExvYWQgYW4gaW1hZ2UgZnJvbSBjYWNoZS4KICAgICB2
YXIgaW1nRnJvbUNhY2hlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW1nJyk7Ci0gICAgaW1n
RnJvbUNhY2hlLm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7IGxvZygiUEFTUzogZXJyb3IgZXZlbnQg
Zm9yIGltYWdlIGZyb20gY2FjaGUiKTsgfQogICAgIGltZ0Zyb21DYWNoZS5vbmxvYWQgPSBmdW5j
dGlvbiAoKSB7IGxvZygiRkFJTDogaW1hZ2UgZnJvbSBjYWNoZSBsb2FkZWQiKTsgfQogICAgIGlt
Z0Zyb21DYWNoZS5zcmMgPSAicmVzb3VyY2VzL2Jvc3Rvbi5naWYiOwogICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJpbWciKS5hcHBlbmRDaGlsZChpbWdGcm9tQ2FjaGUpOwpAQCAtNDEsNyAr
NDIsNyBAQCBmdW5jdGlvbiBsb2FkZWQoKQogPC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxp
bWcgc3JjPSJyZXNvdXJjZXMvYm9zdG9uLmdpZiIgb25sb2FkPSJsb2FkZWQoKSIgb25lcnJvcj0i
bG9nKCdGQUlMOiBlcnJvciBldmVudCBmb3IgZmlyc3QgaW1hZ2UnKSI+Cis8aW1nIHNyYz0icmVz
b3VyY2VzL2Jvc3Rvbi5naWYiIG9ubG9hZD0ibG9hZGVkKCkiPgogPGRpdiBpZD0iaW1nIj48L2Rp
dj4KIDxkaXYgaWQ9InJlc3VsdHMiPjwvZGl2PgogPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vcGVybWlzc2lvbmNsaWVudC9yZXNvdXJjZXMvaW1hZ2Uu
aHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Blcm1pc3Npb25jbGllbnQvcmVz
b3VyY2VzL2ltYWdlLmh0bWwKaW5kZXggZTJhZGZlM2YwYjYyMWFhOGQ5ZmY0ZTE5MGM5MDIyMzA1
Y2MwNzBlYi4uMjM5NzcxNzEwMWRlZDQ0MGEzMjk1NTgyNmU4NDFjZDFjZDYyM2Y5NyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vcGVybWlzc2lvbmNsaWVudC9yZXNv
dXJjZXMvaW1hZ2UuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9wZXJt
aXNzaW9uY2xpZW50L3Jlc291cmNlcy9pbWFnZS5odG1sCkBAIC04LDcgKzgsNyBAQCBmdW5jdGlv
biBsb2coYSkKIDwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08aW1nIHNyYz0iYm9zdG9uLmdp
ZiIgb25sb2FkPSJsb2coJ0ZBSUw6IGxvYWQgZXZlbnQgZm9yIGlmcmFtZWQgaW1hZ2UpIiBvbmVy
cm9yPSJsb2coJ0ZBSUw6IGVycm9yIGV2ZW50IGZvciBpZnJhbWVkIGltYWdlJykiPgorPGltZyBz
cmM9ImJvc3Rvbi5naWYiIG9ubG9hZD0ibG9nKCdGQUlMOiBsb2FkIGV2ZW50IGZvciBpZnJhbWVk
IGltYWdlJykiPgogPGRpdiBpZD0icmVzdWx0cyI+PC9kaXY+CiA8L2JvZHk+CiA8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBlZCBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL3drMi9Ta2lwcGVkCmluZGV4IDM0ZjAwNzJkNjIzODE3MTJmYTM0NTEwOTEwZGFm
ZGVlMjg2OGY2Y2UuLjFhMGQxMzY0NDY1NjM4YjcyYzJkZjMyNWM1MjEzMGIyNTdlMWJhNTEgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9Ta2lwcGVkCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL3drMi9Ta2lwcGVkCkBAIC0yMDIsNiArMjAyLDcgQEAgZmFzdC9jYW52YXMv
d2ViZ2wvd2ViZ2wtc3BlY2lmaWMuaHRtbAogZmFzdC9jYW52YXMvd2ViZ2wvb2VzLXZlcnRleC1h
cnJheS1vYmplY3QuaHRtbAogZmFzdC9oYXJuZXNzL292ZXJyaWRlLXByZWZlcmVuY2VzLTIuaHRt
bAogZmFzdC9pbWFnZXMvYW5pbWF0ZWQtZ2lmLXJlc3RvcmVkLWZyb20tYmZjYWNoZS5odG1sCitm
YXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0LWFsbG93cy1jYWNoZWQtaW1hZ2UtbG9hZC5o
dG1sCiBmYXN0L3RleHQvemVyby1mb250LXNpemUuaHRtbAogCiAjIFdlYktpdFRlc3RSdW5uZXIg
bmVlZHMgdG8gc3VwcG9ydCBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wRE9NQXNXZWJBcmNoaXZl
CkBAIC0zMTYsNiArMzE3LDggQEAgc3ZnL2N1c3RvbS9zdmctYWxsb3dlZC1pbi1kYXNoYm9hcmQt
b2JqZWN0Lmh0bWwKICMgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
MjY3Mj4KIGZhc3QvY3NzL2NvbXBhcmUtY29udGVudC1zdHlsZS5odG1sCiBmYXN0L2ZyYW1lcy9m
cmFtZS1kaXNwbGF5LW5vbmUtZm9jdXMuaHRtbAorZmFzdC9sb2FkZXIvZGlzcGxheS1pbWFnZS11
bnNldC1jYW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UuaHRtbAorZmFzdC9s
b2FkZXIvaW1hZ2VzLWVuYWJsZWQtdW5zZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1jYW4tcmVsb2Fk
LWluLXBsYWNlLmh0bWwKIGZhc3QvbG9hZGVyL3JlbG9hZC1wb2xpY3ktZGVsZWdhdGUuaHRtbAog
CiAjIFdlYktpdFRlc3RSdW5uZXIgbmVlZHMgbGF5b3V0VGVzdENvbnRyb2xsZXIucXVldWVMb2Fk
CmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggNDMxZjYzMjI4MmQxZjc3
ZWMzNDAyNTE0ZDE2YmRlZGY4MzRiNjIwMy4uMDg3MzhiYmQ4YmFiMTUzMjJhOTdhOGQyZDA2NmQy
MGMyYjVhMTY3YyAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDM3IEBACisyMDEyLTA5LTI0ICBCbyBMaXUgIDxib2xpdUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmVsYW5kICJBZGQgaW4tcGxhY2UgcmVsb2FkIGJlaGF2aW9yIHRvIEltYWdlc0VuYWJs
ZWQgc2V0dGluZyIgd2l0aCBvcHRpbWl6YXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzA1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFJlbGFuZGluZyAxMjg3ODAsIDEyODY3NiwgMTI4NjQ1LiBX
YXMgcmV2ZXJ0ZWQgaW4gMTI4OTE0IGR1ZSB0bworICAgICAgICBwZXJmb3JtYW5jZSByZWdyZXNz
aW9uIGluIENocm9taXVtLgorCisgICAgICAgIE5ldyBjaGFuZ2VzIGluIGFkZGl0aW9uIHRvIHBy
ZXZpb3VzbHkgcmV2ZXJ0ZWQgcGF0Y2hlczoKKworICAgICAgICBSZWZhY3RvcmVkIENhY2hlZFJl
c291cmNlOjpyZXF1ZXN0UmVzb3VyY2UsIGxvYWRSZXNvdXJjZSwgYW5kCisgICAgICAgIHJldmFs
aWRhdGVSZXNvdXJjZS4gTW92ZWQgQ2FjaGVkUmVzb3VyY2U6OmxvYWQgbWV0aG9kIHRvIGVuZCBv
ZgorICAgICAgICByZXF1ZXN0UmVzb3VyY2Ugc28gdGhlcmUgaXMgb25lIHBsYWNlIHdoZXJlIGxv
YWQgaXMgY2FsbGVkIGZvciBhbGwKKyAgICAgICAgcmVzb3VyY2VzLgorCisgICAgICAgIEFkZGVk
IGEgZW51bSBwYXJhbWV0ZXIgZm9yIHJlcXVlc3RSZXNvdXJjZSBhbmQKKyAgICAgICAgZGV0ZXJt
aW5lUmV2YWxpZGF0aW9uUG9saWN5IHNvIHRoYXQgRnJhbWVMb2FkZXJDbGllbnQ6OmFsbG93SW1h
Z2UgY2FsbAorICAgICAgICBkbyBub3QgbmVlZCB0byBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMu
CisKKyAgICAgICAgUmVtb3ZlZCBDYWNoZWRJbWFnZTo6bG9hZCBjYWxsIGluIHJlcXVlc3RJbWFn
ZSBzbyBpdCBpcyBub3QgY2FsbGVkCisgICAgICAgIHR3aWNlLgorCisgICAgICAgIFJlbW92ZWQg
dW5uZWNlc3NhcnkgRnJhbWUuaCBpbmNsdWRlcyBpbiBDYWNoZWRSZXNvdXJjZSBhbmQKKyAgICAg
ICAgQ2FjaGVkSW1hZ2UuCisKKyAgICAgICAgUmVtb3ZlZCBkZWFkIGxvYWQoKSBtZXRob2QgZGVj
bGFyYXRpb24gaW4gQ2FjaGVkSW1hZ2UuCisKKyAgICAgICAgVXBkYXRlZCB0ZXh0IGV4cGVjdGF0
aW9uIGZvciB0d28gaW1hZ2UtcGVybWlzc2lvbnMgdGVzdHMgdG8gcmVmbGVjdAorICAgICAgICB0
aGUgcmVtb3ZlZCBjYWxscyB0byBhbGxvd0ltYWdlLgorCisgICAgICAgICogU291cmNlL2F1dG90
b29scy9zeW1ib2xzLmZpbHRlcjoKKwogMjAxMi0wOS0yNCAgVml2ZWsgR2FsYXRhZ2UgIDx2aXZl
a2dhbGF0YWdlQGdtYWlsLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBpbXBsZW1lbnQg
dGVzdGluZyBoYXJuZXNzIGZvciBwdXJlIHByb3RvY29sIHRlc3RzLgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165472</attachid>
            <date>2012-09-24 17:17:29 -0700</date>
            <delta_ts>2012-09-24 23:51:22 -0700</delta_ts>
            <desc>Fix crash in image-empty-crash.html: was missing stillNeedsLoad check in reloadImagesIfNotDeferred. Other crashes are probably due to same mistake, but haven&apos;t checked</desc>
            <filename>bug-97055-20120924171649.patch</filename>
            <type>text/plain</type>
            <size>48366</size>
            <attacher name="Bo Liu">boliu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5NDE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjM2ZmYwNWZmMzQ4MThm
MGI3MDY1YTkyMDQ2YzVkNTI5YjM1N2Y1NS4uMmIwYzgwZTEyZjEyODVjODY1NDk5OTZlMjE0NWNj
ZWZiZGQ3ZDM4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg1IEBACisyMDEyLTA5LTI0ICBCbyBM
aXUgIDxib2xpdUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVsYW5kICJBZGQgaW4tcGxhY2Ug
cmVsb2FkIGJlaGF2aW9yIHRvIEltYWdlc0VuYWJsZWQgc2V0dGluZyIgd2l0aCBvcHRpbWl6YXRp
b25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzA1
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbGFu
ZGluZyAxMjg3ODAsIDEyODY3NiwgMTI4NjQ1LiBXYXMgcmV2ZXJ0ZWQgaW4gMTI4OTE0IGR1ZSB0
bworICAgICAgICBwZXJmb3JtYW5jZSByZWdyZXNzaW9uIGluIENocm9taXVtLgorCisgICAgICAg
IE5ldyBjaGFuZ2VzIGluIGFkZGl0aW9uIHRvIHByZXZpb3VzbHkgcmV2ZXJ0ZWQgcGF0Y2hlczoK
KworICAgICAgICBSZWZhY3RvcmVkIENhY2hlZFJlc291cmNlOjpyZXF1ZXN0UmVzb3VyY2UsIGxv
YWRSZXNvdXJjZSwgYW5kCisgICAgICAgIHJldmFsaWRhdGVSZXNvdXJjZS4gTW92ZWQgQ2FjaGVk
UmVzb3VyY2U6OmxvYWQgbWV0aG9kIHRvIGVuZCBvZgorICAgICAgICByZXF1ZXN0UmVzb3VyY2Ug
c28gdGhlcmUgaXMgb25lIHBsYWNlIHdoZXJlIGxvYWQgaXMgY2FsbGVkIGZvciBhbGwKKyAgICAg
ICAgcmVzb3VyY2VzLgorCisgICAgICAgIEFkZGVkIGEgZW51bSBwYXJhbWV0ZXIgZm9yIHJlcXVl
c3RSZXNvdXJjZSBhbmQKKyAgICAgICAgZGV0ZXJtaW5lUmV2YWxpZGF0aW9uUG9saWN5IHNvIHRo
YXQgRnJhbWVMb2FkZXJDbGllbnQ6OmFsbG93SW1hZ2UgY2FsbAorICAgICAgICBkbyBub3QgbmVl
ZCB0byBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMuCisKKyAgICAgICAgUmVtb3ZlZCBDYWNoZWRJ
bWFnZTo6bG9hZCBjYWxsIGluIHJlcXVlc3RJbWFnZSBzbyBpdCBpcyBub3QgY2FsbGVkCisgICAg
ICAgIHR3aWNlLgorCisgICAgICAgIFJlbW92ZWQgdW5uZWNlc3NhcnkgRnJhbWUuaCBpbmNsdWRl
cyBpbiBDYWNoZWRSZXNvdXJjZSBhbmQKKyAgICAgICAgQ2FjaGVkSW1hZ2UuCisKKyAgICAgICAg
UmVtb3ZlZCBkZWFkIGxvYWQoKSBtZXRob2QgZGVjbGFyYXRpb24gaW4gQ2FjaGVkSW1hZ2UuCisK
KyAgICAgICAgVXBkYXRlZCB0ZXh0IGV4cGVjdGF0aW9uIGZvciB0d28gaW1hZ2UtcGVybWlzc2lv
bnMgdGVzdHMgdG8gcmVmbGVjdAorICAgICAgICB0aGUgcmVtb3ZlZCBjYWxscyB0byBhbGxvd0lt
YWdlLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0LWFs
bG93cy1jYWNoZWQtaW1hZ2UtbG9hZC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2xvYWRlci9k
aXNwbGF5LWltYWdlLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFj
ZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2xvYWRlci9pbWFnZXMtZW5hYmxlZC11bnNldC1j
YW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UuaHRtbAorCisgICAgICAgICog
V2ViQ29yZS5leHAuaW46CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkaWRCZWdpbkRvY3VtZW50KToKKyAgICAgICAgKiBs
b2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3Vy
Y2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZEltYWdlLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaDoKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkUmVzb3VyY2U6OmRpZEFkZENsaWVudCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZFJlc291cmNlOjpzdGlsbE5lZWRzTG9hZCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNl
TG9hZGVyOjpDYWNoZWRSZXNvdXJjZUxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRS
ZXNvdXJjZUxvYWRlcjo6cmVxdWVzdEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJl
c291cmNlTG9hZGVyOjpjYW5SZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291
cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVz
b3VyY2VMb2FkZXI6OnJldmFsaWRhdGVSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRSZXNvdXJjZUxvYWRlcjo6bG9hZFJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFJlc291cmNlTG9hZGVyOjpkZXRlcm1pbmVSZXZhbGlkYXRpb25Qb2xpY3kpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnNldEF1dG9Mb2FkSW1hZ2VzKToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnNl
dEltYWdlc0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6
OmNsaWVudERlZmVyc0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9h
ZGVyOjpzaG91bGREZWZlckltYWdlTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNv
dXJjZUxvYWRlcjo6cmVsb2FkSW1hZ2VzSWZOb3REZWZlcnJlZCk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmg6CisgICAgICAgIChDYWNoZWRSZXNvdXJjZUxv
YWRlcik6CisgICAgICAgICogcGFnZS9TZXR0aW5ncy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRJbWFnZUxvYWRpbmdTZXR0aW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6U2V0
dGluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OnNldExvYWRzSW1hZ2VzQXV0b21h
dGljYWxseSk6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6aW1hZ2VMb2FkaW5nU2V0dGlu
Z3NUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpzZXRJbWFnZXNFbmFi
bGVkKToKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmg6CisgICAgICAgIChTZXR0aW5ncyk6Cisg
ICAgICAgICogdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkludGVybmFsU2V0dGluZ3M6OkJhY2t1cDo6QmFja3VwKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
dGVybmFsU2V0dGluZ3M6OkJhY2t1cDo6cmVzdG9yZVRvKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
dGVybmFsU2V0dGluZ3M6OnNldEltYWdlc0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgICogdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmg6CisgICAgICAgIChCYWNrdXApOgor
ICAgICAgICAoSW50ZXJuYWxTZXR0aW5ncyk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbFNl
dHRpbmdzLmlkbDoKKwogMjAxMi0wOS0yNCAgT3R0byBEZXJlayBDaGV1bmcgIDxvdGNoZXVuZ0By
aW0uY29tPgogCiAgICAgICAgIFtCbGFja0JlcnJ5XSBSZXZlcnRpbmcgaW1wbGVtZW50YXRpb24g
Zm9yIDQwNyBlcnJvciBwYWdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDY1Zjc1ZTU4YzBjNDk2ZTg0NmE1ZDA2
NzAzMjAxYmI3ZGY5ZjZiNTQuLjQxNmQ4ODdjY2RkZGJlNTJlMWE2OGRjMDE0ZWIzZWNjZjM5NDM3
NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxMi0wOS0yNCAgQm8gTGl1ICA8Ym9s
aXVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlbGFuZCAiQWRkIGluLXBsYWNlIHJlbG9hZCBi
ZWhhdmlvciB0byBJbWFnZXNFbmFibGVkIHNldHRpbmciIHdpdGggb3B0aW1pemF0aW9ucworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTcwNTUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWxhbmRpbmcgMTI4
NzgwLCAxMjg2NzYsIDEyODY0NS4gV2FzIHJldmVydGVkIGluIDEyODkxNCBkdWUgdG8KKyAgICAg
ICAgcGVyZm9ybWFuY2UgcmVncmVzc2lvbiBpbiBDaHJvbWl1bS4KKworICAgICAgICBOZXcgY2hh
bmdlcyBpbiBhZGRpdGlvbiB0byBwcmV2aW91c2x5IHJldmVydGVkIHBhdGNoZXM6CisKKyAgICAg
ICAgUmVmYWN0b3JlZCBDYWNoZWRSZXNvdXJjZTo6cmVxdWVzdFJlc291cmNlLCBsb2FkUmVzb3Vy
Y2UsIGFuZAorICAgICAgICByZXZhbGlkYXRlUmVzb3VyY2UuIE1vdmVkIENhY2hlZFJlc291cmNl
Ojpsb2FkIG1ldGhvZCB0byBlbmQgb2YKKyAgICAgICAgcmVxdWVzdFJlc291cmNlIHNvIHRoZXJl
IGlzIG9uZSBwbGFjZSB3aGVyZSBsb2FkIGlzIGNhbGxlZCBmb3IgYWxsCisgICAgICAgIHJlc291
cmNlcy4KKworICAgICAgICBBZGRlZCBhIGVudW0gcGFyYW1ldGVyIGZvciByZXF1ZXN0UmVzb3Vy
Y2UgYW5kCisgICAgICAgIGRldGVybWluZVJldmFsaWRhdGlvblBvbGljeSBzbyB0aGF0IEZyYW1l
TG9hZGVyQ2xpZW50OjphbGxvd0ltYWdlIGNhbGwKKyAgICAgICAgZG8gbm90IG5lZWQgdG8gYmUg
Y2FsbGVkIG11bHRpcGxlIHRpbWVzLgorCisgICAgICAgIFJlbW92ZWQgQ2FjaGVkSW1hZ2U6Omxv
YWQgY2FsbCBpbiByZXF1ZXN0SW1hZ2Ugc28gaXQgaXMgbm90IGNhbGxlZAorICAgICAgICB0d2lj
ZS4KKworICAgICAgICBSZW1vdmVkIHVubmVjZXNzYXJ5IEZyYW1lLmggaW5jbHVkZXMgaW4gQ2Fj
aGVkUmVzb3VyY2UgYW5kCisgICAgICAgIENhY2hlZEltYWdlLgorCisgICAgICAgIFJlbW92ZWQg
ZGVhZCBsb2FkKCkgbWV0aG9kIGRlY2xhcmF0aW9uIGluIENhY2hlZEltYWdlLgorCisgICAgICAg
IFVwZGF0ZWQgdGV4dCBleHBlY3RhdGlvbiBmb3IgdHdvIGltYWdlLXBlcm1pc3Npb25zIHRlc3Rz
IHRvIHJlZmxlY3QKKyAgICAgICAgdGhlIHJlbW92ZWQgY2FsbHMgdG8gYWxsb3dJbWFnZS4KKwor
ICAgICAgICAqIHdpbi9XZWJLaXQyLmRlZjoKKwogMjAxMi0wOS0yNCAgU2hlcmlmZiBCb3QgIDx3
ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGlu
ZyBvdXQgcjEyOTM4OC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggYTE5Njg4MzQ2Yzk3ODZiZmQ5
MTVlMjk1M2EzMWMxMDUyNjU4ZDFkOC4uMDRkYmYxZDk3YzZmYTNhMjRmODczZmIyYjQ4N2RmZGU4
MTg0NTkzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTg1Miw2ICs4NTIsNyBAQCBfX1pON1dl
YkNvcmU4R3JhZGllbnRDMUVSS05TXzEwRmxvYXRQb2ludEVTM18KIF9fWk43V2ViQ29yZThQb3Np
dGlvbkMxRU4zV1RGMTBQYXNzUmVmUHRySU5TXzROb2RlRUVFaU5TMF8xMEFuY2hvclR5cGVFCiBf
X1pON1dlYkNvcmU4U2V0dGluZ3MxNHNldEphdmFFbmFibGVkRWIKIF9fWk43V2ViQ29yZThTZXR0
aW5nczE1c2V0V2ViR0xFbmFibGVkRWIKK19fWk43V2ViQ29yZThTZXR0aW5nczE2c2V0SW1hZ2Vz
RW5hYmxlZEViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MxNnNldFNjcmlwdEVuYWJsZWRFYgogX19a
TjdXZWJDb3JlOFNldHRpbmdzMTZzZXRVc2VzUGFnZUNhY2hlRWIKIF9fWk43V2ViQ29yZThTZXR0
aW5nczE3c2V0UGx1Z2luc0VuYWJsZWRFYgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAKaW5kZXggYjI2YjZkNGNjMjJmYWU3NTc4ZDA0NGY2MTA1MTYxOTI0YjA2ZmM1Zi4uODlmODc2
MjQyOWIxYmU3YmI2ZjM3ODY0M2MwZDE5ODcwOGMzMmViNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwCkBAIC02NDcsNyArNjQ3LDEwIEBAIHZvaWQgRnJhbWVMb2FkZXI6OmRp
ZEJlZ2luRG9jdW1lbnQoYm9vbCBkaXNwYXRjaCkKICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5p
bml0Q29udGVudFNlY3VyaXR5UG9saWN5KCk7CiAKICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBt
X2ZyYW1lLT5kb2N1bWVudCgpLT5zZXR0aW5ncygpOwotICAgIG1fZnJhbWUtPmRvY3VtZW50KCkt
PmNhY2hlZFJlc291cmNlTG9hZGVyKCktPnNldEF1dG9Mb2FkSW1hZ2VzKHNldHRpbmdzICYmIHNl
dHRpbmdzLT5sb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoKSk7CisgICAgaWYgKHNldHRpbmdzKSB7
CisgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPnNl
dEltYWdlc0VuYWJsZWQoc2V0dGluZ3MtPmFyZUltYWdlc0VuYWJsZWQoKSk7CisgICAgICAgIG1f
ZnJhbWUtPmRvY3VtZW50KCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPnNldEF1dG9Mb2FkSW1h
Z2VzKHNldHRpbmdzLT5sb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoKSk7CisgICAgfQogCiAgICAg
aWYgKG1fZG9jdW1lbnRMb2FkZXIpIHsKICAgICAgICAgU3RyaW5nIGRuc1ByZWZldGNoQ29udHJv
bCA9IG1fZG9jdW1lbnRMb2FkZXItPnJlc3BvbnNlKCkuaHR0cEhlYWRlckZpZWxkKCJYLUROUy1Q
cmVmZXRjaC1Db250cm9sIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
cmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9h
ZGVyLmNwcAppbmRleCBmZjNiZTZlZGZmOGI5N2ZjNTVhMDg0OGI0YzFhZjAyZjA4MWI0NjE2Li41
NmRlMGQzNDEzM2MzZjVhNDcyYmZjMmJjNmY0ZTVjZGYzODMwM2ZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKQEAgLTE2NywxMSArMTY3LDEzIEBAIHZv
aWQgU3VicmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmIG5l
d1JlcXVlc3QsIGNvbnN0IFJlc291CiAgICAgCiAgICAgUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5k
UmVxdWVzdChuZXdSZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKICAgICBpZiAoIXByZXZpb3Vz
VVJMLmlzTnVsbCgpICYmICFuZXdSZXF1ZXN0LmlzTnVsbCgpICYmIHByZXZpb3VzVVJMICE9IG5l
d1JlcXVlc3QudXJsKCkpIHsKLSAgICAgICAgaWYgKCFtX2RvY3VtZW50LT5jYWNoZWRSZXNvdXJj
ZUxvYWRlcigpLT5jYW5SZXF1ZXN0KG1fcmVzb3VyY2UtPnR5cGUoKSwgbmV3UmVxdWVzdC51cmwo
KSkpIHsKLSAgICAgICAgICAgIGNhbmNlbCgpOwotICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICBpZiAobV9kb2N1bWVudC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+Y2FuUmVxdWVzdChtX3Jl
c291cmNlLT50eXBlKCksIG5ld1JlcXVlc3QudXJsKCkpKSB7CisgICAgICAgICAgICBpZiAobV9y
ZXNvdXJjZS0+dHlwZSgpICE9IENhY2hlZFJlc291cmNlOjpJbWFnZVJlc291cmNlIHx8ICFtX2Rv
Y3VtZW50LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5zaG91bGREZWZlckltYWdlTG9hZChuZXdS
ZXF1ZXN0LnVybCgpKSkgeworICAgICAgICAgICAgICAgIG1fcmVzb3VyY2UtPndpbGxTZW5kUmVx
dWVzdChuZXdSZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgbV9yZXNvdXJjZS0+d2lsbFNl
bmRSZXF1ZXN0KG5ld1JlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOworICAgICAgICBjYW5jZWwo
KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2Uu
Y3BwCmluZGV4IDQzMTY2MTZiMzY0NTNhMjA4NjVlNGQyZDZlMDI4OTMwYWYxNmI5ZDMuLjQxMDc1
YTdiMzE1MzQ4ZmJkZmU3NjBhYmUzZjc2MjRjZjFjYTA5MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUg
IkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnRX
YWxrZXIuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgotI2luY2x1ZGUgIkZy
YW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJGcmFtZUxv
YWRlclR5cGVzLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5oCmluZGV4IDQ4NjVjN2UyNDY2NWJhNjM5YjBlMWE5NmJjNjI1
MjYwZDczYWQwMWIuLjA3OGY3YWIxYzYyZmY4NmI4MTViOWYwNjU0NjMwZDM2MDE5MjkzY2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCkBAIC04Miw4ICs4Miw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSWdub3JlSFRUUFN0YXR1c0NvZGVF
cnJvcnMoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNJbWFn
ZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICBib29sIHN0aWxsTmVlZHNMb2FkKCkgY29u
c3QgeyByZXR1cm4gIWVycm9yT2NjdXJyZWQoKSAmJiBzdGF0dXMoKSA9PSBVbmtub3duICYmICFp
c0xvYWRpbmcoKTsgfQotICAgIHZvaWQgbG9hZCgpOworICAgIHZpcnR1YWwgYm9vbCBzdGlsbE5l
ZWRzTG9hZCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuICFlcnJvck9jY3VycmVkKCkgJiYgc3Rh
dHVzKCkgPT0gVW5rbm93biAmJiAhaXNMb2FkaW5nKCk7IH0KIAogICAgIC8vIEltYWdlT2JzZXJ2
ZXIKICAgICB2aXJ0dWFsIHZvaWQgZGVjb2RlZFNpemVDaGFuZ2VkKGNvbnN0IEltYWdlKiBpbWFn
ZSwgaW50IGRlbHRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2UuY3BwCmluZGV4IDQzYzNkMTQ0ZjgyZjE1Njg4Y2Y2NmMwNTRhMDRkYTk2MDE5YjlkMTEu
LjMzZDFiYTgyM2JjNmZkODY1NzJlNmE5NDYxYWM1YmQ3NTYzYTA2YmIgMTAwNzU1Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAtMzIsNyArMzIsNiBA
QAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiQ3Jvc3NPcmln
aW5BY2Nlc3NDb250cm9sLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJGcmFt
ZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgpAQCAtMzkwLDcgKzM4OSw3IEBA
IHZvaWQgQ2FjaGVkUmVzb3VyY2U6OmRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCog
YykKICAgICAgICAgbV9jbGllbnRzLmFkZChjKTsKICAgICAgICAgbV9jbGllbnRzQXdhaXRpbmdD
YWxsYmFjay5yZW1vdmUoYyk7CiAgICAgfQotICAgIGlmICghaXNMb2FkaW5nKCkpCisgICAgaWYg
KCFpc0xvYWRpbmcoKSAmJiAhc3RpbGxOZWVkc0xvYWQoKSkKICAgICAgICAgYy0+bm90aWZ5Rmlu
aXNoZWQodGhpcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlLmgKaW5kZXggMGNhZDNlZTdjYTQyODEyZWFhM2VmZTYwMDMxMTY0NDlmN2E2OTZhMS4u
YjczOWQ2OGFmODFmMmRiN2I0ODYyZGYxNTlhYWNmMTU4ZTBiNTczMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKQEAgLTQ1LDcgKzQ1LDYgQEAgY2xh
c3MgQ2FjaGVkTWV0YWRhdGE7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZUNsaWVudDsKIGNsYXNzIENh
Y2hlZFJlc291cmNlSGFuZGxlQmFzZTsKIGNsYXNzIENhY2hlZFJlc291cmNlTG9hZGVyOwotY2xh
c3MgRnJhbWU7CiBjbGFzcyBJbnNwZWN0b3JSZXNvdXJjZTsKIGNsYXNzIFB1cmdlYWJsZUJ1ZmZl
cjsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwpAQCAtMTQ0LDYgKzE0Myw3IEBAIHB1YmxpYzoKIAog
ICAgIGJvb2wgaXNMb2FkaW5nKCkgY29uc3QgeyByZXR1cm4gbV9sb2FkaW5nOyB9CiAgICAgdm9p
ZCBzZXRMb2FkaW5nKGJvb2wgYikgeyBtX2xvYWRpbmcgPSBiOyB9CisgICAgdmlydHVhbCBib29s
IHN0aWxsTmVlZHNMb2FkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIFN1YnJlc291
cmNlTG9hZGVyKiBsb2FkZXIoKSB7IHJldHVybiBtX2xvYWRlci5nZXQoKTsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcApp
bmRleCAzNTNhNjJhYTY0MGRiZGQ1ZTUxMjdkOTBiMTA4NDU2ZDRhYzdjZWRiLi41OTNkNTMyYTE1
YWE4MmNhMDg3Y2I2YzNjZDUxN2M4ZWRmOTAyNmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTExNSw2ICsxMTUs
NyBAQCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Q2FjaGVkUmVzb3VyY2VMb2FkZXIoRG9jdW1lbnQq
IGRvY3VtZW50KQogICAgICwgbV9yZXF1ZXN0Q291bnQoMCkKICAgICAsIG1fZ2FyYmFnZUNvbGxl
Y3REb2N1bWVudFJlc291cmNlc1RpbWVyKHRoaXMsICZDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Z2Fy
YmFnZUNvbGxlY3REb2N1bWVudFJlc291cmNlc1RpbWVyRmlyZWQpCiAgICAgLCBtX2F1dG9Mb2Fk
SW1hZ2VzKHRydWUpCisgICAgLCBtX2ltYWdlc0VuYWJsZWQodHJ1ZSkKICAgICAsIG1fYWxsb3dT
dGFsZVJlc291cmNlcyhmYWxzZSkKIHsKIH0KQEAgLTE1OSwxMCArMTYwLDcgQEAgQ2FjaGVkUmVz
b3VyY2VIYW5kbGU8Q2FjaGVkSW1hZ2U+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0SW1h
Z2UoUmVzb3VyY2VSZXEKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAgICAgfQot
ICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZEltYWdlPiByZXNvdXJjZShzdGF0aWNfY2Fz
dDxDYWNoZWRJbWFnZSo+KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6SW1hZ2VSZXNv
dXJjZSwgcmVxdWVzdCwgU3RyaW5nKCksIGRlZmF1bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKSku
Z2V0KCkpKTsKLSAgICBpZiAoYXV0b0xvYWRJbWFnZXMoKSAmJiByZXNvdXJjZSAmJiByZXNvdXJj
ZS0+c3RpbGxOZWVkc0xvYWQoKSkKLSAgICAgICAgcmVzb3VyY2UtPmxvYWQodGhpcywgZGVmYXVs
dENhY2hlZFJlc291cmNlT3B0aW9ucygpKTsKLSAgICByZXR1cm4gcmVzb3VyY2U7CisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PENhY2hlZEltYWdlKj4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291
cmNlOjpJbWFnZVJlc291cmNlLCByZXF1ZXN0LCBTdHJpbmcoKSwgZGVmYXVsdENhY2hlZFJlc291
cmNlT3B0aW9ucygpLCBSZXNvdXJjZUxvYWRQcmlvcml0eVVucmVzb2x2ZWQsIGZhbHNlLCBjbGll
bnREZWZlcnNJbWFnZShyZXF1ZXN0LnVybCgpKSA/IERlZmVycmVkQnlDbGllbnQgOiBOb0RlZmVy
KS5nZXQoKSk7CiB9CiAKIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZEZvbnQ+IENhY2hlZFJl
c291cmNlTG9hZGVyOjpyZXF1ZXN0Rm9udChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCkBAIC0z
NjIsMTIgKzM2MCw2IEBAIGJvb2wgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNhblJlcXVlc3QoQ2Fj
aGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgS1VSTCYgdXJsCiAgICAgY2FzZSBDYWNoZWRS
ZXNvdXJjZTo6SW1hZ2VSZXNvdXJjZToKICAgICAgICAgaWYgKCFtX2RvY3VtZW50LT5jb250ZW50
U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dJbWFnZUZyb21Tb3VyY2UodXJsKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgICAgICBpZiAoZnJhbWUoKSkgewotICAgICAgICAgICAgU2V0
dGluZ3MqIHNldHRpbmdzID0gZnJhbWUoKS0+c2V0dGluZ3MoKTsKLSAgICAgICAgICAgIGlmICgh
ZnJhbWUoKS0+bG9hZGVyKCktPmNsaWVudCgpLT5hbGxvd0ltYWdlKCFzZXR0aW5ncyB8fCBzZXR0
aW5ncy0+YXJlSW1hZ2VzRW5hYmxlZCgpLCB1cmwpKQotICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNlIENhY2hlZFJlc291cmNl
OjpGb250UmVzb3VyY2U6IHsKICAgICAgICAgaWYgKCFtX2RvY3VtZW50LT5jb250ZW50U2VjdXJp
dHlQb2xpY3koKS0+YWxsb3dGb250RnJvbVNvdXJjZSh1cmwpKQpAQCAtNDAxLDcgKzM5Myw3IEBA
IGJvb2wgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNhblJlcXVlc3QoQ2FjaGVkUmVzb3VyY2U6OlR5
cGUgdHlwZSwgY29uc3QgS1VSTCYgdXJsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLUNhY2hlZFJl
c291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVz
dFJlc291cmNlKENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMm
IG9wdGlvbnMsIFJlc291cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5LCBib29sIGZvclByZWxvYWQp
CitDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI6OnJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgY29uc3QgUmVzb3VyY2VMb2Fk
ZXJPcHRpb25zJiBvcHRpb25zLCBSZXNvdXJjZUxvYWRQcmlvcml0eSBwcmlvcml0eSwgYm9vbCBm
b3JQcmVsb2FkLCBEZWZlck9wdGlvbiBkZWZlcikKIHsKICAgICBLVVJMIHVybCA9IHJlcXVlc3Qu
dXJsKCk7CiAgICAgCkBAIC00MzAsMTYgKzQyMiwxNiBAQCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxD
YWNoZWRSZXNvdXJjZT4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZShDYWNo
ZQogICAgIGlmIChyZXF1ZXN0LnVybCgpICE9IHVybCkKICAgICAgICAgcmVxdWVzdC5zZXRVUkwo
dXJsKTsKIAotICAgIHN3aXRjaCAoZGV0ZXJtaW5lUmV2YWxpZGF0aW9uUG9saWN5KHR5cGUsIHJl
cXVlc3QsIGZvclByZWxvYWQsIHJlc291cmNlLmdldCgpKSkgewotICAgIGNhc2UgTG9hZDoKLSAg
ICAgICAgcmVzb3VyY2UgPSBsb2FkUmVzb3VyY2UodHlwZSwgcmVxdWVzdCwgY2hhcnNldCwgcHJp
b3JpdHksIG9wdGlvbnMpOwotICAgICAgICBicmVhazsKKyAgICBjb25zdCBSZXZhbGlkYXRpb25Q
b2xpY3kgcG9saWN5ID0gZGV0ZXJtaW5lUmV2YWxpZGF0aW9uUG9saWN5KHR5cGUsIHJlcXVlc3Qs
IGZvclByZWxvYWQsIHJlc291cmNlLmdldCgpLCBkZWZlcik7CisgICAgc3dpdGNoIChwb2xpY3kp
IHsKICAgICBjYXNlIFJlbG9hZDoKICAgICAgICAgbWVtb3J5Q2FjaGUoKS0+cmVtb3ZlKHJlc291
cmNlLmdldCgpKTsKLSAgICAgICAgcmVzb3VyY2UgPSBsb2FkUmVzb3VyY2UodHlwZSwgcmVxdWVz
dCwgY2hhcnNldCwgcHJpb3JpdHksIG9wdGlvbnMpOworICAgICAgICAvLyBGYWxsIHRocm91Z2gK
KyAgICBjYXNlIExvYWQ6CisgICAgICAgIHJlc291cmNlID0gbG9hZFJlc291cmNlKHR5cGUsIHJl
cXVlc3QsIGNoYXJzZXQpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFJldmFsaWRhdGU6Ci0g
ICAgICAgIHJlc291cmNlID0gcmV2YWxpZGF0ZVJlc291cmNlKHJlc291cmNlLmdldCgpLCBwcmlv
cml0eSwgb3B0aW9ucyk7CisgICAgICAgIHJlc291cmNlID0gcmV2YWxpZGF0ZVJlc291cmNlKHJl
c291cmNlLmdldCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBVc2U6CiAgICAgICAgIG1l
bW9yeUNhY2hlKCktPnJlc291cmNlQWNjZXNzZWQocmVzb3VyY2UuZ2V0KCkpOwpAQCAtNDUwLDEy
ICs0NDIsMjcgQEAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IENhY2hlZFJl
c291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UoQ2FjaGUKICAgICBpZiAoIXJlc291cmNlKQog
ICAgICAgICByZXR1cm4gMDsKIAorICAgIHJlc291cmNlLT5zZXRMb2FkUHJpb3JpdHkocHJpb3Jp
dHkpOworICAgIGlmICgocG9saWN5ICE9IFVzZSB8fCByZXNvdXJjZS0+c3RpbGxOZWVkc0xvYWQo
KSkgJiYgTm9EZWZlciA9PSBkZWZlcikgeworICAgICAgICByZXNvdXJjZS0+bG9hZCh0aGlzLCBv
cHRpb25zKTsKKworICAgICAgICAvLyBXZSBkb24ndCBzdXBwb3J0IGltbWVkaWF0ZSBsb2Fkcywg
YnV0IHdlIGRvIHN1cHBvcnQgaW1tZWRpYXRlIGZhaWx1cmUuCisgICAgICAgIGlmIChyZXNvdXJj
ZS0+ZXJyb3JPY2N1cnJlZCgpKSB7CisgICAgICAgICAgICBpZiAocmVzb3VyY2UtPmluQ2FjaGUo
KSkKKyAgICAgICAgICAgICAgICBtZW1vcnlDYWNoZSgpLT5yZW1vdmUocmVzb3VyY2UuZ2V0KCkp
OworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIXJl
cXVlc3QudXJsKCkucHJvdG9jb2xJc0RhdGEoKSkKKyAgICAgICAgbV92YWxpZGF0ZWRVUkxzLmFk
ZChyZXF1ZXN0LnVybCgpKTsKKwogICAgIEFTU0VSVChyZXNvdXJjZS0+dXJsKCkgPT0gdXJsLnN0
cmluZygpKTsKICAgICBtX2RvY3VtZW50UmVzb3VyY2VzLnNldChyZXNvdXJjZS0+dXJsKCksIHJl
c291cmNlKTsKICAgICByZXR1cm4gcmVzb3VyY2U7CiB9CiAKLUNhY2hlZFJlc291cmNlSGFuZGxl
PENhY2hlZFJlc291cmNlPiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmV2YWxpZGF0ZVJlc291cmNl
KENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgUmVzb3VyY2VMb2FkUHJpb3JpdHkgcHJpb3JpdHks
IGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKK0NhY2hlZFJlc291cmNlSGFu
ZGxlPENhY2hlZFJlc291cmNlPiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmV2YWxpZGF0ZVJlc291
cmNlKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKIHsKICAgICBBU1NFUlQocmVzb3VyY2UpOwog
ICAgIEFTU0VSVChyZXNvdXJjZS0+aW5DYWNoZSgpKTsKQEAgLTQ2NSw3ICs0NzIsNiBAQCBDYWNo
ZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJl
dmFsaWRhdGVSZXNvdXJjZShDYQogICAgIAogICAgIC8vIENvcHkgdGhlIFVSTCBvdXQgb2YgdGhl
IHJlc291cmNlIHRvIGJlIHJldmFsaWRhdGVkIGluIGNhc2UgaXQgZ2V0cyBkZWxldGVkIGJ5IHRo
ZSByZW1vdmUoKSBjYWxsIGJlbG93LgogICAgIFN0cmluZyB1cmwgPSByZXNvdXJjZS0+dXJsKCk7
Ci0gICAgYm9vbCB1cmxQcm90b2NvbElzRGF0YSA9IHJlc291cmNlLT51cmwoKS5wcm90b2NvbElz
RGF0YSgpOwogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBuZXdSZXNv
dXJjZSA9IGNyZWF0ZVJlc291cmNlKHJlc291cmNlLT50eXBlKCksIHJlc291cmNlLT5yZXNvdXJj
ZVJlcXVlc3QoKSwgcmVzb3VyY2UtPmVuY29kaW5nKCkpOwogICAgIAogICAgIExPRyhSZXNvdXJj
ZUxvYWRpbmcsICJSZXNvdXJjZSAlcCBjcmVhdGVkIHRvIHJldmFsaWRhdGUgJXAiLCBuZXdSZXNv
dXJjZS5nZXQoKSwgcmVzb3VyY2UpOwpAQCAtNDczLDE2ICs0NzksMTAgQEAgQ2FjaGVkUmVzb3Vy
Y2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXZhbGlkYXRl
UmVzb3VyY2UoQ2EKICAgICAKICAgICBtZW1vcnlDYWNoZSgpLT5yZW1vdmUocmVzb3VyY2UpOwog
ICAgIG1lbW9yeUNhY2hlKCktPmFkZChuZXdSZXNvdXJjZS5nZXQoKSk7Ci0gICAgCi0gICAgbmV3
UmVzb3VyY2UtPnNldExvYWRQcmlvcml0eShwcmlvcml0eSk7Ci0gICAgbmV3UmVzb3VyY2UtPmxv
YWQodGhpcywgb3B0aW9ucyk7Ci0KLSAgICBpZiAoIXVybFByb3RvY29sSXNEYXRhKQotICAgICAg
ICBtX3ZhbGlkYXRlZFVSTHMuYWRkKHVybCk7CiAgICAgcmV0dXJuIG5ld1Jlc291cmNlOwogfQog
Ci1DYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI6OmxvYWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgUmVzb3VyY2VMb2FkUHJpb3JpdHkg
cHJpb3JpdHksIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKK0NhY2hlZFJl
c291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6bG9hZFJl
c291cmNlKENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0KQogewogICAgIEFTU0VSVCghbWVtb3J5Q2FjaGUoKS0+
cmVzb3VyY2VGb3JVUkwocmVxdWVzdC51cmwoKSkpOwogICAgIApAQCAtNDkwLDM1ICs0OTAsMjAg
QEAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IENhY2hlZFJlc291cmNlTG9h
ZGVyOjpsb2FkUmVzb3VyY2UoQ2FjaGVkUmUKICAgICAKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRs
ZTxDYWNoZWRSZXNvdXJjZT4gcmVzb3VyY2UgPSBjcmVhdGVSZXNvdXJjZSh0eXBlLCByZXF1ZXN0
LCBjaGFyc2V0KTsKICAgICAKLSAgICBib29sIGluQ2FjaGUgPSBtZW1vcnlDYWNoZSgpLT5hZGQo
cmVzb3VyY2UuZ2V0KCkpOwotICAgIAotICAgIHJlc291cmNlLT5zZXRMb2FkUHJpb3JpdHkocHJp
b3JpdHkpOwotICAgIHJlc291cmNlLT5sb2FkKHRoaXMsIG9wdGlvbnMpOwotICAgIAotICAgIGlm
ICghaW5DYWNoZSkKKyAgICBpZiAoIW1lbW9yeUNhY2hlKCktPmFkZChyZXNvdXJjZS5nZXQoKSkp
CiAgICAgICAgIHJlc291cmNlLT5zZXRPd25pbmdDYWNoZWRSZXNvdXJjZUxvYWRlcih0aGlzKTsK
LQotICAgIC8vIFdlIGRvbid0IHN1cHBvcnQgaW1tZWRpYXRlIGxvYWRzLCBidXQgd2UgZG8gc3Vw
cG9ydCBpbW1lZGlhdGUgZmFpbHVyZS4KLSAgICBpZiAocmVzb3VyY2UtPmVycm9yT2NjdXJyZWQo
KSkgewotICAgICAgICBpZiAoaW5DYWNoZSkKLSAgICAgICAgICAgIG1lbW9yeUNhY2hlKCktPnJl
bW92ZShyZXNvdXJjZS5nZXQoKSk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIGlm
ICghcmVxdWVzdC51cmwoKS5wcm90b2NvbElzRGF0YSgpKQotICAgICAgICBtX3ZhbGlkYXRlZFVS
THMuYWRkKHJlcXVlc3QudXJsKCkpOwogICAgIHJldHVybiByZXNvdXJjZTsKIH0KIAotQ2FjaGVk
UmVzb3VyY2VMb2FkZXI6OlJldmFsaWRhdGlvblBvbGljeSBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6
ZGV0ZXJtaW5lUmV2YWxpZGF0aW9uUG9saWN5KENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBmb3JQcmVsb2FkLCBDYWNoZWRSZXNvdXJjZSog
ZXhpc3RpbmdSZXNvdXJjZSkgY29uc3QKK0NhY2hlZFJlc291cmNlTG9hZGVyOjpSZXZhbGlkYXRp
b25Qb2xpY3kgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRldGVybWluZVJldmFsaWRhdGlvblBvbGlj
eShDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJv
b2wgZm9yUHJlbG9hZCwgQ2FjaGVkUmVzb3VyY2UqIGV4aXN0aW5nUmVzb3VyY2UsIERlZmVyT3B0
aW9uIGRlZmVyKSBjb25zdAogewogICAgIGlmICghZXhpc3RpbmdSZXNvdXJjZSkKICAgICAgICAg
cmV0dXJuIExvYWQ7Ci0gICAgCisKICAgICAvLyBXZSBhbHJlYWR5IGhhdmUgYSBwcmVsb2FkIGdv
aW5nIGZvciB0aGlzIFVSTC4KICAgICBpZiAoZm9yUHJlbG9hZCAmJiBleGlzdGluZ1Jlc291cmNl
LT5pc1ByZWxvYWRlZCgpKQogICAgICAgICByZXR1cm4gVXNlOwotICAgIAorCiAgICAgLy8gSWYg
dGhlIHNhbWUgVVJMIGhhcyBiZWVuIGxvYWRlZCBhcyBhIGRpZmZlcmVudCB0eXBlLCB3ZSBuZWVk
IHRvIHJlbG9hZC4KICAgICBpZiAoZXhpc3RpbmdSZXNvdXJjZS0+dHlwZSgpICE9IHR5cGUpIHsK
ICAgICAgICAgTE9HKFJlc291cmNlTG9hZGluZywgIkNhY2hlZFJlc291cmNlTG9hZGVyOjpkZXRl
cm1pbmVSZXZhbGlkYXRpb25Qb2xpY3kgcmVsb2FkaW5nIGR1ZSB0byB0eXBlIG1pc21hdGNoLiIp
OwpAQCAtNTMzLDYgKzUxOCwxMSBAQCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6UmV2YWxpZGF0aW9u
UG9saWN5IENhY2hlZFJlc291cmNlTG9hZGVyOjpkZXRlcm1pbmVSZXZhbGlkYQogICAgIC8vIG9m
IHRoaW5ncyBhYm91dCBob3cgcmV2YWxpZGF0aW9uIHdvcmtzIHRoYXQgbWFudWFsIGhlYWRlcnMg
dmlvbGF0ZSwgc28gcHVudCB0byBSZWxvYWQgaW5zdGVhZC4KICAgICBpZiAocmVxdWVzdC5pc0Nv
bmRpdGlvbmFsKCkpCiAgICAgICAgIHJldHVybiBSZWxvYWQ7CisKKyAgICAvLyBEbyBub3QgbG9h
ZCBmcm9tIGNhY2hlIGlmIGltYWdlcyBhcmUgbm90IGVuYWJsZWQuIFRoZSBsb2FkIGZvciB0aGlz
IGltYWdlIHdpbGwgYmUgYmxvY2tlZAorICAgIC8vIGluIENhY2hlZEltYWdlOjpsb2FkLgorICAg
IGlmIChEZWZlcnJlZEJ5Q2xpZW50ID09IGRlZmVyKQorICAgICAgICByZXR1cm4gUmVsb2FkOwog
ICAgIAogICAgIC8vIERvbid0IHJlbG9hZCByZXNvdXJjZXMgd2hpbGUgcGFzdGluZy4KICAgICBp
ZiAobV9hbGxvd1N0YWxlUmVzb3VyY2VzKQpAQCAtNjI5LDE1ICs2MTksMzkgQEAgdm9pZCBDYWNo
ZWRSZXNvdXJjZUxvYWRlcjo6c2V0QXV0b0xvYWRJbWFnZXMoYm9vbCBlbmFibGUpCiAgICAgaWYg
KCFtX2F1dG9Mb2FkSW1hZ2VzKQogICAgICAgICByZXR1cm47CiAKKyAgICByZWxvYWRJbWFnZXNJ
Zk5vdERlZmVycmVkKCk7Cit9CisKK3ZvaWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnNldEltYWdl
c0VuYWJsZWQoYm9vbCBlbmFibGUpCit7CisgICAgaWYgKGVuYWJsZSA9PSBtX2ltYWdlc0VuYWJs
ZWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1faW1hZ2VzRW5hYmxlZCA9IGVuYWJsZTsKKwor
ICAgIGlmICghbV9pbWFnZXNFbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAgICByZWxvYWRJ
bWFnZXNJZk5vdERlZmVycmVkKCk7Cit9CisKK2Jvb2wgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNs
aWVudERlZmVyc0ltYWdlKGNvbnN0IEtVUkwmIHVybCkgY29uc3QKK3sKKyAgICByZXR1cm4gZnJh
bWUoKSAmJiAhZnJhbWUoKS0+bG9hZGVyKCktPmNsaWVudCgpLT5hbGxvd0ltYWdlKG1faW1hZ2Vz
RW5hYmxlZCwgdXJsKTsKK30KKworYm9vbCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6c2hvdWxkRGVm
ZXJJbWFnZUxvYWQoY29uc3QgS1VSTCYgdXJsKSBjb25zdAoreworICAgIHJldHVybiBjbGllbnRE
ZWZlcnNJbWFnZSh1cmwpIHx8ICFtX2F1dG9Mb2FkSW1hZ2VzOworfQorCit2b2lkIENhY2hlZFJl
c291cmNlTG9hZGVyOjpyZWxvYWRJbWFnZXNJZk5vdERlZmVycmVkKCkKK3sKICAgICBEb2N1bWVu
dFJlc291cmNlTWFwOjppdGVyYXRvciBlbmQgPSBtX2RvY3VtZW50UmVzb3VyY2VzLmVuZCgpOwog
ICAgIGZvciAoRG9jdW1lbnRSZXNvdXJjZU1hcDo6aXRlcmF0b3IgaXQgPSBtX2RvY3VtZW50UmVz
b3VyY2VzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICBDYWNoZWRSZXNvdXJj
ZSogcmVzb3VyY2UgPSBpdC0+c2Vjb25kLmdldCgpOwotICAgICAgICBpZiAocmVzb3VyY2UtPnR5
cGUoKSA9PSBDYWNoZWRSZXNvdXJjZTo6SW1hZ2VSZXNvdXJjZSkgewotICAgICAgICAgICAgQ2Fj
aGVkSW1hZ2UqIGltYWdlID0gY29uc3RfY2FzdDxDYWNoZWRJbWFnZSo+KHN0YXRpY19jYXN0PGNv
bnN0IENhY2hlZEltYWdlKj4ocmVzb3VyY2UpKTsKLQotICAgICAgICAgICAgaWYgKGltYWdlLT5z
dGlsbE5lZWRzTG9hZCgpKQotICAgICAgICAgICAgICAgIGltYWdlLT5sb2FkKHRoaXMsIGRlZmF1
bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKSk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKHJlc291
cmNlLT50eXBlKCkgPT0gQ2FjaGVkUmVzb3VyY2U6OkltYWdlUmVzb3VyY2UgJiYgcmVzb3VyY2Ut
PnN0aWxsTmVlZHNMb2FkKCkgJiYgIWNsaWVudERlZmVyc0ltYWdlKHJlc291cmNlLT51cmwoKSkp
CisgICAgICAgICAgICBjb25zdF9jYXN0PENhY2hlZFJlc291cmNlKj4ocmVzb3VyY2UpLT5sb2Fk
KHRoaXMsIGRlZmF1bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKSk7CiAgICAgfQogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCmlu
ZGV4IGY0NzU1YzIyZmQ4ZDJmMWMyYTBlOGU2ZGE4MmU3ZjliNTIzYTE5ZmIuLmI1ZGM2OTQ4MmUx
ZGYxMTk3MTRhYjc4MzY3MWJkNTA2MmZiYWNjMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCkBAIC05Nyw2ICs5NywxMCBAQCBw
dWJsaWM6CiAKICAgICBib29sIGF1dG9Mb2FkSW1hZ2VzKCkgY29uc3QgeyByZXR1cm4gbV9hdXRv
TG9hZEltYWdlczsgfQogICAgIHZvaWQgc2V0QXV0b0xvYWRJbWFnZXMoYm9vbCk7CisKKyAgICB2
b2lkIHNldEltYWdlc0VuYWJsZWQoYm9vbCk7CisKKyAgICBib29sIHNob3VsZERlZmVySW1hZ2VM
b2FkKGNvbnN0IEtVUkwmKSBjb25zdDsKICAgICAKICAgICBDYWNoZVBvbGljeSBjYWNoZVBvbGlj
eSgpIGNvbnN0OwogICAgIApAQCAtMTIyLDE5ICsxMjYsMjMgQEAgcHVibGljOgogICAgIHZvaWQg
cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCiBwcml2YXRlOgot
ICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiByZXF1ZXN0UmVzb3VyY2Uo
Q2FjaGVkUmVzb3VyY2U6OlR5cGUsIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgY2hh
cnNldCwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiwgUmVzb3VyY2VMb2FkUHJpb3JpdHkg
PSBSZXNvdXJjZUxvYWRQcmlvcml0eVVucmVzb2x2ZWQsIGJvb2wgaXNQcmVsb2FkID0gZmFsc2Up
OwotICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiByZXZhbGlkYXRlUmVz
b3VyY2UoQ2FjaGVkUmVzb3VyY2UqLCBSZXNvdXJjZUxvYWRQcmlvcml0eSwgY29uc3QgUmVzb3Vy
Y2VMb2FkZXJPcHRpb25zJik7Ci0gICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3Vy
Y2U+IGxvYWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6VHlwZSwgUmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgU3RyaW5nJiBjaGFyc2V0LCBSZXNvdXJjZUxvYWRQcmlvcml0eSwgY29uc3QgUmVzb3Vy
Y2VMb2FkZXJPcHRpb25zJik7CisgICAgZW51bSBEZWZlck9wdGlvbiB7IE5vRGVmZXIsIERlZmVy
cmVkQnlDbGllbnQgfTsKKyAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4g
cmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpUeXBlLCBSZXNvdXJjZVJlcXVlc3QmLCBj
b25zdCBTdHJpbmcmIGNoYXJzZXQsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYsIFJlc291
cmNlTG9hZFByaW9yaXR5ID0gUmVzb3VyY2VMb2FkUHJpb3JpdHlVbnJlc29sdmVkLCBib29sIGlz
UHJlbG9hZCA9IGZhbHNlLCBEZWZlck9wdGlvbiA9IE5vRGVmZXIpOworICAgIENhY2hlZFJlc291
cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiByZXZhbGlkYXRlUmVzb3VyY2UoQ2FjaGVkUmVzb3Vy
Y2UqKTsKKyAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gbG9hZFJlc291
cmNlKENhY2hlZFJlc291cmNlOjpUeXBlLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcm
IGNoYXJzZXQpOwogICAgIHZvaWQgcmVxdWVzdFByZWxvYWQoQ2FjaGVkUmVzb3VyY2U6OlR5cGUs
IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgY2hhcnNldCk7CiAKICAgICBlbnVtIFJl
dmFsaWRhdGlvblBvbGljeSB7IFVzZSwgUmV2YWxpZGF0ZSwgUmVsb2FkLCBMb2FkIH07Ci0gICAg
UmV2YWxpZGF0aW9uUG9saWN5IGRldGVybWluZVJldmFsaWRhdGlvblBvbGljeShDYWNoZWRSZXNv
dXJjZTo6VHlwZSwgUmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBmb3JQcmVsb2FkLCBDYWNoZWRSZXNv
dXJjZSogZXhpc3RpbmdSZXNvdXJjZSkgY29uc3Q7CisgICAgUmV2YWxpZGF0aW9uUG9saWN5IGRl
dGVybWluZVJldmFsaWRhdGlvblBvbGljeShDYWNoZWRSZXNvdXJjZTo6VHlwZSwgUmVzb3VyY2VS
ZXF1ZXN0JiwgYm9vbCBmb3JQcmVsb2FkLCBDYWNoZWRSZXNvdXJjZSogZXhpc3RpbmdSZXNvdXJj
ZSwgRGVmZXJPcHRpb24pIGNvbnN0OwogICAgIAogICAgIHZvaWQgbm90aWZ5TG9hZGVkRnJvbU1l
bW9yeUNhY2hlKENhY2hlZFJlc291cmNlKik7CiAgICAgYm9vbCBjaGVja0luc2VjdXJlQ29udGVu
dChDYWNoZWRSZXNvdXJjZTo6VHlwZSwgY29uc3QgS1VSTCYpIGNvbnN0OwogCiAgICAgdm9pZCBn
YXJiYWdlQ29sbGVjdERvY3VtZW50UmVzb3VyY2VzVGltZXJGaXJlZChUaW1lcjxDYWNoZWRSZXNv
dXJjZUxvYWRlcj4qKTsKICAgICB2b2lkIHBlcmZvcm1Qb3N0TG9hZEFjdGlvbnMoKTsKKworICAg
IGJvb2wgY2xpZW50RGVmZXJzSW1hZ2UoY29uc3QgS1VSTCYpIGNvbnN0OworICAgIHZvaWQgcmVs
b2FkSW1hZ2VzSWZOb3REZWZlcnJlZCgpOwogICAgIAogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3Zh
bGlkYXRlZFVSTHM7CiAgICAgbXV0YWJsZSBEb2N1bWVudFJlc291cmNlTWFwIG1fZG9jdW1lbnRS
ZXNvdXJjZXM7CkBAIC0xNTIsOCArMTYwLDkgQEAgcHJpdmF0ZToKIAogICAgIFRpbWVyPENhY2hl
ZFJlc291cmNlTG9hZGVyPiBtX2dhcmJhZ2VDb2xsZWN0RG9jdW1lbnRSZXNvdXJjZXNUaW1lcjsK
IAotICAgIC8vIDMwIGJpdHMgbGVmdAorICAgIC8vIDI5IGJpdHMgbGVmdAogICAgIGJvb2wgbV9h
dXRvTG9hZEltYWdlcyA6IDE7CisgICAgYm9vbCBtX2ltYWdlc0VuYWJsZWQgOiAxOwogICAgIGJv
b2wgbV9hbGxvd1N0YWxlUmVzb3VyY2VzIDogMTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5j
cHAKaW5kZXggZGY0MjU5NjRkZTYxMWRiNTM4ZjljYmJjYzc2N2QyNDJlMTMzZWQxNy4uMzA2NjZj
NTYxOTgzMjM5YjhkOTg5ZDI4MzMxMGNmMmY2YjQ2YzNjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5n
cy5jcHAKQEAgLTQ2LDEwICs0NiwxMiBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLXN0YXRpYyB2b2lkIHNldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseUlu
QWxsRnJhbWVzKFBhZ2UqIHBhZ2UpCitzdGF0aWMgdm9pZCBzZXRJbWFnZUxvYWRpbmdTZXR0aW5n
cyhQYWdlKiBwYWdlKQogewotICAgIGZvciAoRnJhbWUqIGZyYW1lID0gcGFnZS0+bWFpbkZyYW1l
KCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKQorICAgIGZv
ciAoRnJhbWUqIGZyYW1lID0gcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1l
LT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKSB7CisgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT5j
YWNoZWRSZXNvdXJjZUxvYWRlcigpLT5zZXRJbWFnZXNFbmFibGVkKHBhZ2UtPnNldHRpbmdzKCkt
PmFyZUltYWdlc0VuYWJsZWQoKSk7CiAgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT5jYWNoZWRS
ZXNvdXJjZUxvYWRlcigpLT5zZXRBdXRvTG9hZEltYWdlcyhwYWdlLT5zZXR0aW5ncygpLT5sb2Fk
c0ltYWdlc0F1dG9tYXRpY2FsbHkoKSk7CisgICAgfQogfQogCiAvLyBTZXRzIHRoZSBlbnRyeSBp
biB0aGUgZm9udCBtYXAgZm9yIHRoZSBnaXZlbiBzY3JpcHQuIElmIGZhbWlseSBpcyB0aGUgZW1w
dHkgc3RyaW5nLCByZW1vdmVzIHRoZSBlbnRyeSBpbnN0ZWFkLgpAQCAtMjkxLDcgKzI5Myw3IEBA
IFNldHRpbmdzOjpTZXR0aW5ncyhQYWdlKiBwYWdlKQogICAgICwgbV93aW5kb3dGb2N1c1Jlc3Ry
aWN0ZWQodHJ1ZSkKICAgICAsIG1fZGlhZ25vc3RpY0xvZ2dpbmdFbmFibGVkKGZhbHNlKQogICAg
ICwgbV9zY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKGZhbHNlKQotICAgICwgbV9s
b2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHlUaW1lcih0aGlzLCAmU2V0dGluZ3M6OmxvYWRzSW1hZ2Vz
QXV0b21hdGljYWxseVRpbWVyRmlyZWQpCisgICAgLCBtX3NldEltYWdlTG9hZGluZ1NldHRpbmdz
VGltZXIodGhpcywgJlNldHRpbmdzOjppbWFnZUxvYWRpbmdTZXR0aW5nc1RpbWVyRmlyZWQpCiAg
ICAgLCBtX2luY3JlbWVudGFsUmVuZGVyaW5nU3VwcHJlc3Npb25UaW1lb3V0SW5TZWNvbmRzKGRl
ZmF1bHRJbmNyZW1lbnRhbFJlbmRlcmluZ1N1cHByZXNzaW9uVGltZW91dEluU2Vjb25kcykKIHsK
ICAgICAvLyBBIEZyYW1lIG1heSBub3QgaGF2ZSBiZWVuIGNyZWF0ZWQgeWV0LCBzbyB3ZSBpbml0
aWFsaXplIHRoZSBBdG9taWNTdHJpbmcKQEAgLTQ2NiwxMiArNDY4LDEyIEBAIHZvaWQgU2V0dGlu
Z3M6OnNldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseShib29sIGxvYWRzSW1hZ2VzQXV0b21hdGlj
YWxseSkKICAgICAvLyBTdGFydGluZyB0aGVzZSBsb2FkcyBzeW5jaHJvbm91c2x5IGlzIG5vdCBp
bXBvcnRhbnQuICBCeSBwdXR0aW5nIGl0IG9uIGEgMC1kZWxheSwgcHJvcGVybHkgY2xvc2luZyB0
aGUgUGFnZSBjYW5jZWxzIHRoZW0KICAgICAvLyBiZWZvcmUgdGhleSBoYXZlIGEgY2hhbmNlIHRv
IHJlYWxseSBzdGFydC4KICAgICAvLyBTZWUgaHR0cDovL3dlYmtpdC5vcmcvYi82MDU3MiBmb3Ig
bW9yZSBkaXNjdXNzaW9uLgotICAgIG1fbG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5VGltZXIuc3Rh
cnRPbmVTaG90KDApOworICAgIG1fc2V0SW1hZ2VMb2FkaW5nU2V0dGluZ3NUaW1lci5zdGFydE9u
ZVNob3QoMCk7CiB9CiAKLXZvaWQgU2V0dGluZ3M6OmxvYWRzSW1hZ2VzQXV0b21hdGljYWxseVRp
bWVyRmlyZWQoVGltZXI8U2V0dGluZ3M+KikKK3ZvaWQgU2V0dGluZ3M6OmltYWdlTG9hZGluZ1Nl
dHRpbmdzVGltZXJGaXJlZChUaW1lcjxTZXR0aW5ncz4qKQogewotICAgIHNldExvYWRzSW1hZ2Vz
QXV0b21hdGljYWxseUluQWxsRnJhbWVzKG1fcGFnZSk7CisgICAgc2V0SW1hZ2VMb2FkaW5nU2V0
dGluZ3MobV9wYWdlKTsKIH0KIAogdm9pZCBTZXR0aW5nczo6c2V0TG9hZHNTaXRlSWNvbnNJZ25v
cmluZ0ltYWdlTG9hZGluZ1NldHRpbmcoYm9vbCBsb2Fkc1NpdGVJY29ucykKQEAgLTUxNyw2ICs1
MTksOSBAQCB2b2lkIFNldHRpbmdzOjpzZXRKYXZhRW5hYmxlZEZvckxvY2FsRmlsZXMoYm9vbCBp
c0phdmFFbmFibGVkRm9yTG9jYWxGaWxlcykKIHZvaWQgU2V0dGluZ3M6OnNldEltYWdlc0VuYWJs
ZWQoYm9vbCBhcmVJbWFnZXNFbmFibGVkKQogewogICAgIG1fYXJlSW1hZ2VzRW5hYmxlZCA9IGFy
ZUltYWdlc0VuYWJsZWQ7CisKKyAgICAvLyBTZWUgY29tbWVudCBpbiBzZXRMb2Fkc0ltYWdlc0F1
dG9tYXRpY2FsbHkuCisgICAgbV9zZXRJbWFnZUxvYWRpbmdTZXR0aW5nc1RpbWVyLnN0YXJ0T25l
U2hvdCgwKTsKIH0KIAogdm9pZCBTZXR0aW5nczo6c2V0TWVkaWFFbmFibGVkKGJvb2wgaXNNZWRp
YUVuYWJsZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKaW5kZXggODM5ODZmNjk3MGJmZDI4YWUyOGVm
YTZjODlkMWZhZDU0OTU2OGIwYS4uYzE4ZGZkNzMwNmI1OTU1MmZmMzQyYmQxN2MwZmMyNWNhNTdm
NzMyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaApAQCAtODE4LDggKzgxOCw4IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogICAgICAgICBib29sIG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5n
RW5hYmxlZCA6IDE7CiAKLSAgICAgICAgVGltZXI8U2V0dGluZ3M+IG1fbG9hZHNJbWFnZXNBdXRv
bWF0aWNhbGx5VGltZXI7Ci0gICAgICAgIHZvaWQgbG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5VGlt
ZXJGaXJlZChUaW1lcjxTZXR0aW5ncz4qKTsKKyAgICAgICAgVGltZXI8U2V0dGluZ3M+IG1fc2V0
SW1hZ2VMb2FkaW5nU2V0dGluZ3NUaW1lcjsKKyAgICAgICAgdm9pZCBpbWFnZUxvYWRpbmdTZXR0
aW5nc1RpbWVyRmlyZWQoVGltZXI8U2V0dGluZ3M+Kik7CiAgICAgICAgIAogICAgICAgICBkb3Vi
bGUgbV9pbmNyZW1lbnRhbFJlbmRlcmluZ1N1cHByZXNzaW9uVGltZW91dEluU2Vjb25kczsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAKaW5kZXggYmQyMzc2
NjA3ZDcwNDFmMTc3MmMxNjFjMjEyNTljNTVlNDFjMzAyOC4uYmI5ZWVkNmIxMzU2ZTExOGExNTYy
ZmY0ZDJkYzI0MGMzNWYwNWI2NyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbFNldHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
U2V0dGluZ3MuY3BwCkBAIC0xMDAsNiArMTAwLDcgQEAgSW50ZXJuYWxTZXR0aW5nczo6QmFja3Vw
OjpCYWNrdXAoUGFnZSogcGFnZSwgU2V0dGluZ3MqIHNldHRpbmdzKQogICAgICwgbV9jYW5TdGFy
dE1lZGlhKHBhZ2UtPmNhblN0YXJ0TWVkaWEoKSkKICAgICAsIG1fb3JpZ2luYWxNb2NrU2Nyb2xs
YmFyc0VuYWJsZWQoc2V0dGluZ3MtPm1vY2tTY3JvbGxiYXJzRW5hYmxlZCgpKQogICAgICwgbV9s
YW5nQXR0cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJRW5hYmxlZChSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpsYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJRW5hYmxlZCgpKQorICAgICwgbV9p
bWFnZXNFbmFibGVkKHNldHRpbmdzLT5hcmVJbWFnZXNFbmFibGVkKCkpCiB7CiB9CiAKQEAgLTEz
NSw2ICsxMzYsNyBAQCB2b2lkIEludGVybmFsU2V0dGluZ3M6OkJhY2t1cDo6cmVzdG9yZVRvKFBh
Z2UqIHBhZ2UsIFNldHRpbmdzKiBzZXR0aW5ncykKICAgICBwYWdlLT5zZXRDYW5TdGFydE1lZGlh
KG1fY2FuU3RhcnRNZWRpYSk7CiAgICAgc2V0dGluZ3MtPnNldE1vY2tTY3JvbGxiYXJzRW5hYmxl
ZChtX29yaWdpbmFsTW9ja1Njcm9sbGJhcnNFbmFibGVkKTsKICAgICBSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpzZXRMYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJRW5hYmxlZChtX2xhbmdB
dHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVkKTsKKyAgICBzZXR0aW5ncy0+c2V0SW1h
Z2VzRW5hYmxlZChtX2ltYWdlc0VuYWJsZWQpOwogfQogCiBJbnRlcm5hbFNldHRpbmdzKiBJbnRl
cm5hbFNldHRpbmdzOjpmcm9tKFBhZ2UqIHBhZ2UpCkBAIC02NTksNCArNjYxLDEwIEBAIHZvaWQg
SW50ZXJuYWxTZXR0aW5nczo6c2V0TGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJs
ZWQoYm9vbCBlbmFibGVkKQogICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldExhbmdBdHRy
aWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVkKGVuYWJsZWQpOwogfQogCit2b2lkIEludGVy
bmFsU2V0dGluZ3M6OnNldEltYWdlc0VuYWJsZWQoYm9vbCBlbmFibGVkLCBFeGNlcHRpb25Db2Rl
JiBlYykKK3sKKyAgICBJbnRlcm5hbFNldHRpbmdzR3VhcmRGb3JTZXR0aW5ncygpOworICAgIHNl
dHRpbmdzKCktPnNldEltYWdlc0VuYWJsZWQoZW5hYmxlZCk7Cit9CisKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5oIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmgKaW5kZXggMmMwNzNkZjZlZWRhNGYwNmUzZWVh
MGFiM2QxYTQ3Y2Y0NDY5MTk1YS4uYmU4ODEwZGU2NjgyYmM4N2Q0NDc2YmY5M2Q5YTBkODAyOWFl
MDkwOCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmgKQEAgLTgy
LDYgKzgyLDcgQEAgcHVibGljOgogICAgICAgICBib29sIG1fY2FuU3RhcnRNZWRpYTsKICAgICAg
ICAgYm9vbCBtX29yaWdpbmFsTW9ja1Njcm9sbGJhcnNFbmFibGVkOwogICAgICAgICBib29sIG1f
bGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQ7CisgICAgICAgIGJvb2wgbV9p
bWFnZXNFbmFibGVkOwogICAgIH07CiAKICAgICB0eXBlZGVmIFJlZkNvdW50ZWRTdXBwbGVtZW50
PFBhZ2UsIEludGVybmFsU2V0dGluZ3M+IFN1cGVyVHlwZTsKQEAgLTE0Nyw2ICsxNDgsOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRNZW1vcnlJbmZvRW5hYmxlZChib29sLCBFeGNlcHRpb25Db2Rl
Jik7CiAgICAgdm9pZCBzZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koY29uc3QgU3RyaW5nJiwgRXhj
ZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgc2V0TGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xV
SUVuYWJsZWQoYm9vbCk7CisgICAgdm9pZCBzZXRJbWFnZXNFbmFibGVkKGJvb2wgZW5hYmxlZCwg
RXhjZXB0aW9uQ29kZSYpOworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEludGVybmFsU2V0dGlu
Z3MoUGFnZSopOwogICAgIHZpcnR1YWwgdm9pZCBob3N0RGVzdHJveWVkKCkgT1ZFUlJJREUgeyBt
X3BhZ2UgPSAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
U2V0dGluZ3MuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlk
bAppbmRleCA5NjczZDJmMWMyNWQxYjRjMTJjNThkMjk0Y2M5ZTdiNWIyMzIyZWFmLi5kOGE4YWFm
OGJiYTgxNTgyMDRjOTU2OTRiMTRiODM0MzFjYzYyODUzIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5pZGwKQEAgLTgyLDYgKzgyLDcgQEAgbW9kdWxlIHdpbmRv
dyB7CiAjZW5kaWYKICAgICAgICAgdm9pZCBzZXRNZW1vcnlJbmZvRW5hYmxlZChpbiBib29sZWFu
IGVuYWJsZWQpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgICAgICB2b2lkIHNldFN0b3JhZ2VC
bG9ja2luZ1BvbGljeShpbiBET01TdHJpbmcgcG9saWN5KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsK
KyAgICAgICAgdm9pZCBzZXRJbWFnZXNFbmFibGVkKGluIGJvb2xlYW4gZW5hYmxlZCkgcmFpc2Vz
KERPTUV4Y2VwdGlvbik7CiAgICAgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
d2luL1dlYktpdDIuZGVmIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCmluZGV4IGY0
NTc4ZjczYzVlZWM0Yjk1NDA0ZmU4OTc0MzIzNzhjMGY5Mjg2YjIuLmUwYjdkYTlhYjE5ZmE1ZGFl
MGQ5MzgyZGE2ZjA1YTQxNWJkYzZiZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL3dpbi9X
ZWJLaXQyLmRlZgorKysgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKQEAgLTIyMiw2
ICsyMjIsNyBAQCBFWFBPUlRTCiAgICAgICAgID9zZXRET01FeGNlcHRpb25AV2ViQ29yZUBAWUFY
UEFWRXhlY1N0YXRlQEpTQ0BASEBaCiAgICAgICAgID9zZXRGYW50YXN5Rm9udEZhbWlseUBTZXR0
aW5nc0BXZWJDb3JlQEBRQUVYQUJWQXRvbWljU3RyaW5nQFdURkBAVzRVU2NyaXB0Q29kZUBAQFoK
ICAgICAgICAgP3NldEZpeGVkRm9udEZhbWlseUBTZXR0aW5nc0BXZWJDb3JlQEBRQUVYQUJWQXRv
bWljU3RyaW5nQFdURkBAVzRVU2NyaXB0Q29kZUBAQFoKKyAgICAgICAgP3NldEltYWdlc0VuYWJs
ZWRAU2V0dGluZ3NAV2ViQ29yZUBAUUFFWF9OQFoKICAgICAgICAgP3NldE1vY2tTY3JvbGxiYXJz
RW5hYmxlZEBTZXR0aW5nc0BXZWJDb3JlQEBTQVhfTkBaCiAgICAgICAgID9tb2NrU2Nyb2xsYmFy
c0VuYWJsZWRAU2V0dGluZ3NAV2ViQ29yZUBAU0FfTlhaCiAgICAgICAgID9zZXRVc2VzT3Zlcmxh
eVNjcm9sbGJhcnNAU2V0dGluZ3NAV2ViQ29yZUBAU0FYX05AWgpkaWZmIC0tZ2l0IGEvU291cmNl
L2F1dG90b29scy9zeW1ib2xzLmZpbHRlciBiL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0
ZXIKaW5kZXggZTJhNDIyOTUwNjg0MjY1M2ZkYzJhNDgwNmI2ZGZhMjYyNTRlYTFmNS4uNDk2NzZj
ZjE4MzY0YWQzZjViMDc3MTc3OGM4ODNmOWQ0NjRlZDUzNiAxMDA2NDQKLS0tIGEvU291cmNlL2F1
dG90b29scy9zeW1ib2xzLmZpbHRlcgorKysgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmls
dGVyCkBAIC0xNjIsNiArMTYyLDcgQEAgX1pON1dlYkNvcmUxNFNjcm9sbGFibGVBcmVhMjhzZXRT
Y3JvbGxPZmZzZXRGcm9tSW50ZXJuYWxzRVJLTlNfOEludFBvaW50RTsKIF9aTjdXZWJDb3JlMTBT
Y3JvbGxWaWV3MjNzZXRTY3JvbGxiYXJzU3VwcHJlc3NlZEViYjsKIF9aTjdXZWJDb3JlMTBTY3Jv
bGxWaWV3MjFzZXREZWxlZ2F0ZXNTY3JvbGxpbmdFYjsKIF9aTjdXZWJDb3JlNE5vZGUxNHJlbW92
ZWRMYXN0UmVmRXY7CitfWk43V2ViQ29yZThTZXR0aW5nczE2c2V0SW1hZ2VzRW5hYmxlZEViOwog
X1pON1dlYkNvcmU4U2V0dGluZ3MxOHNldEZpeGVkRm9udEZhbWlseUVSS04zV1RGMTJBdG9taWNT
dHJpbmdFMTFVU2NyaXB0Q29kZTsKIF9aTjdXZWJDb3JlOFNldHRpbmdzMThzZXRTZXJpZkZvbnRG
YW1pbHlFUktOM1dURjEyQXRvbWljU3RyaW5nRTExVVNjcmlwdENvZGU7CiBfWk43V2ViQ29yZThT
ZXR0aW5nczIwc2V0Q3Vyc2l2ZUZvbnRGYW1pbHlFUktOM1dURjEyQXRvbWljU3RyaW5nRTExVVNj
cmlwdENvZGU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggMTdlNzhkMWUzNTFhMjg1NTYyNTMzMjY1YjdlZDBkODg2MjM0ZDQw
MS4uOWI1MzQ3YTk1YTg2MzU2ZDJkYzlhZDAyODlhZDk0ZmU4ODczNDk3YSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDQ4IEBACisyMDEyLTA5LTI0ICBCbyBMaXUgIDxib2xpdUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmVsYW5kICJBZGQgaW4tcGxhY2UgcmVsb2FkIGJlaGF2aW9yIHRvIEltYWdlc0VuYWJs
ZWQgc2V0dGluZyIgd2l0aCBvcHRpbWl6YXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzA1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFJlbGFuZGluZyAxMjg3ODAsIDEyODY3NiwgMTI4NjQ1LiBX
YXMgcmV2ZXJ0ZWQgaW4gMTI4OTE0IGR1ZSB0bworICAgICAgICBwZXJmb3JtYW5jZSByZWdyZXNz
aW9uIGluIENocm9taXVtLgorCisgICAgICAgIE5ldyBjaGFuZ2VzIGluIGFkZGl0aW9uIHRvIHBy
ZXZpb3VzbHkgcmV2ZXJ0ZWQgcGF0Y2hlczoKKworICAgICAgICBSZWZhY3RvcmVkIENhY2hlZFJl
c291cmNlOjpyZXF1ZXN0UmVzb3VyY2UsIGxvYWRSZXNvdXJjZSwgYW5kCisgICAgICAgIHJldmFs
aWRhdGVSZXNvdXJjZS4gTW92ZWQgQ2FjaGVkUmVzb3VyY2U6OmxvYWQgbWV0aG9kIHRvIGVuZCBv
ZgorICAgICAgICByZXF1ZXN0UmVzb3VyY2Ugc28gdGhlcmUgaXMgb25lIHBsYWNlIHdoZXJlIGxv
YWQgaXMgY2FsbGVkIGZvciBhbGwKKyAgICAgICAgcmVzb3VyY2VzLgorCisgICAgICAgIEFkZGVk
IGEgZW51bSBwYXJhbWV0ZXIgZm9yIHJlcXVlc3RSZXNvdXJjZSBhbmQKKyAgICAgICAgZGV0ZXJt
aW5lUmV2YWxpZGF0aW9uUG9saWN5IHNvIHRoYXQgRnJhbWVMb2FkZXJDbGllbnQ6OmFsbG93SW1h
Z2UgY2FsbAorICAgICAgICBkbyBub3QgbmVlZCB0byBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMu
CisKKyAgICAgICAgUmVtb3ZlZCBDYWNoZWRJbWFnZTo6bG9hZCBjYWxsIGluIHJlcXVlc3RJbWFn
ZSBzbyBpdCBpcyBub3QgY2FsbGVkCisgICAgICAgIHR3aWNlLgorCisgICAgICAgIFJlbW92ZWQg
dW5uZWNlc3NhcnkgRnJhbWUuaCBpbmNsdWRlcyBpbiBDYWNoZWRSZXNvdXJjZSBhbmQKKyAgICAg
ICAgQ2FjaGVkSW1hZ2UuCisKKyAgICAgICAgUmVtb3ZlZCBkZWFkIGxvYWQoKSBtZXRob2QgZGVj
bGFyYXRpb24gaW4gQ2FjaGVkSW1hZ2UuCisKKyAgICAgICAgVXBkYXRlZCB0ZXh0IGV4cGVjdGF0
aW9uIGZvciB0d28gaW1hZ2UtcGVybWlzc2lvbnMgdGVzdHMgdG8gcmVmbGVjdAorICAgICAgICB0
aGUgcmVtb3ZlZCBjYWxscyB0byBhbGxvd0ltYWdlLgorCisgICAgICAgICogZmFzdC9sb2FkZXIv
ZGlzcGxheS1pbWFnZS11bnNldC1hbGxvd3MtY2FjaGVkLWltYWdlLWxvYWQtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0LWFsbG93
cy1jYWNoZWQtaW1hZ2UtbG9hZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2xvYWRlci9k
aXNwbGF5LWltYWdlLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFj
ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbG9hZGVyL2Rpc3BsYXktaW1h
Z2UtdW5zZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1jYW4tcmVsb2FkLWluLXBsYWNlLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvbG9hZGVyL2ltYWdlcy1lbmFibGVkLXVuc2V0LWNhbi1ibG9j
ay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvbG9hZGVyL2ltYWdlcy1lbmFibGVkLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1h
bmQtY2FuLXJlbG9hZC1pbi1wbGFjZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2xvYWRl
ci9yZXNvdXJjZXMvaW1hZ2UxLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbG9hZGVyL3Jl
c291cmNlcy9pbWFnZTIuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0v
cGVybWlzc2lvbmNsaWVudC9pbWFnZS1wZXJtaXNzaW9ucy1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogcGxhdGZvcm0vY2hyb21pdW0vcGVybWlzc2lvbmNsaWVudC9pbWFnZS1wZXJtaXNzaW9ucy5o
dG1sOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3Blcm1pc3Npb25jbGllbnQvcmVzb3Vy
Y2VzL2ltYWdlLmh0bWw6CisgICAgICAgICogcGxhdGZvcm0vd2syL1NraXBwZWQ6CisKIDIwMTIt
MDktMjQgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTmFy
cm93IENocm9taXVtIFRlc3RFeHBlY3RhdGlvbnMgZm9yIHNvbWUgaGlkcGkgZmFpbHVyZXMgdG8g
YmUgTGludXgtb25seS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2Rpc3Bs
YXktaW1hZ2UtdW5zZXQtYWxsb3dzLWNhY2hlZC1pbWFnZS1sb2FkLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2Zhc3QvbG9hZGVyL2Rpc3BsYXktaW1hZ2UtdW5zZXQtYWxsb3dzLWNhY2hlZC1p
bWFnZS1sb2FkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTE1YWFjMGM1MTVlODA1NmFiM2Nj
Yzk1MTkwMzczMzI4ZjgzN2Y4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9s
b2FkZXIvZGlzcGxheS1pbWFnZS11bnNldC1hbGxvd3MtY2FjaGVkLWltYWdlLWxvYWQtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMiBAQAorVGVzdCB0aGF0IFdlYktpdERpc3BsYXlJbWFnZXNLZXkg
dW5zZXQgZG9lcyBub3QgYmxvY2sgaW1hZ2UgaW4gY2FjaGUuCitQQVNTCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0LWFsbG93cy1jYWNoZWQt
aW1hZ2UtbG9hZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZGlzcGxheS1pbWFnZS11
bnNldC1hbGxvd3MtY2FjaGVkLWltYWdlLWxvYWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOGQ3MDNkNTA0
ZWFhNDViM2Y0ZWZmZWQwYjQ3YjQ3N2U0ODE4ZmQ3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9sb2FkZXIvZGlzcGxheS1pbWFnZS11bnNldC1hbGxvd3MtY2FjaGVkLWltYWdl
LWxvYWQuaHRtbApAQCAtMCwwICsxLDM5IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKy8v
IE9wZW5zIHR3byB3aW5kb3dzIGNvbnRhaW5pbmcgdGhlIHNhbWUgaW1hZ2UuIEZpcnN0IHdpbmRv
dyB3aWxsIHBvcHVsYXRlIHRoZSBjYWNoZSB3aXRoCisvLyBpbWFnZS4gVGhlIHNlY29uZCB3aW5k
b3cgaXMgb3BlbmVkIHdpdGggV2ViS2l0RGlzcGxheUltYWdlc0tleSB1bnNldCwgYnV0IGltYWdl
IHNob3VsZAorLy8gc3RpbGwgbG9hZCBzaW5jZSBpdCBpcyBpbiBjYWNoZS4KK2Z1bmN0aW9uIHJ1
blRlc3QoKQoreworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Cisg
ICAgICAgIHRlc3RSdW5uZXIuc2V0Q2FuT3BlbldpbmRvd3MoKTsKKyAgICAgICAgdGVzdFJ1bm5l
ci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdFVzZXNQYWdlQ2FjaGVQcmVmZXJlbmNlS2V5Iiwg
MSk7CisKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRN
TCA9ICdGQUlMVVJFOiBpbWFnZTEuaHRtbCBub3QgbG9hZGVkJzsKKyAgICAgICAgd2luZG93Lm9w
ZW4oInJlc291cmNlcy9pbWFnZTEuaHRtbCIsICJfYmxhbmsiKTsKKyAgICB9Cit9CisKK2Z1bmN0
aW9uIGltYWdlMUxvYWRlZCgpCit7CisgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2Uo
J1dlYktpdERpc3BsYXlJbWFnZXNLZXknLCAwKTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgncmVzdWx0JykuaW5uZXJIVE1MID0gJ0ZBSUxVUkU6IGltYWdlMi5odG1sIG5vdCBsb2FkZWQn
OworICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkge3dpbmRvdy5vcGVuKCJyZXNvdXJj
ZXMvaW1hZ2UyLmh0bWwiLCAiX2JsYW5rIik7fSwgMCk7Cit9CisKK2Z1bmN0aW9uIGltYWdlMkxv
YWRlZCgpCit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRN
TCA9ICdQQVNTJzsKKwkJdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9Cis8L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KK1Rlc3QgdGhhdCBXZWJLaXREaXNwbGF5
SW1hZ2VzS2V5IHVuc2V0IGRvZXMgbm90IGJsb2NrIGltYWdlIGluIGNhY2hlLgorPGRpdiBpZD0i
cmVzdWx0Ij5GQUlMVVJFOiBUZXN0IHNjcmlwdCBkaWRuJ3QgcnVuLjwvZGl2PgorPC9ib2R5Pgor
PC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9kaXNwbGF5LWlt
YWdlLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0LWNhbi1i
bG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uN2E5ZWY1MzQ3OWI4YjVhYTRiNDY0ZjY1N2YyYWNmN2U1YmI0NDdkMgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2Rpc3BsYXktaW1hZ2UtdW5zZXQtY2FuLWJs
b2NrLWltYWdlLWFuZC1jYW4tcmVsb2FkLWluLXBsYWNlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDMgQEAKK1Rlc3QgdGhhdCBEaXNwbGF5SW1hZ2VzIGRpc2FibGVkIGNhbiBibG9jayBodHRwIGlt
YWdlIGFuZCBjYW4gYmUgcmVsb2FkZWQgaW4tcGxhY2Ugd2hlbiB0b2dnbGVkLgorU1VDQ0VTUwor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0
LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9sb2FkZXIvZGlzcGxheS1pbWFnZS11bnNldC1jYW4tYmxvY2staW1hZ2UtYW5kLWNh
bi1yZWxvYWQtaW4tcGxhY2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMTJmNTA5ZDU0M2I3YTVhN2Q0N2Qx
OTFiNzg4NjYzZTZkMjYxOTc3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9s
b2FkZXIvZGlzcGxheS1pbWFnZS11bnNldC1jYW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQt
aW4tcGxhY2UuaHRtbApAQCAtMCwwICsxLDQ3IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4K
Ky8vIFNldHRpbmcgV2ViS2l0RGlzcGxheUltYWdlc0tleSBpcyBhc3luY2hyb25vdXMsIHNvIHVz
aW5nIHF1ZXVlUmVsb2FkIGFuZCBzZXRJbnRlcnZhbCB0byBjaGVjayB3aGVuIHRoZSBzZXR0aW5n
IGFjdHVhbGx5IHRha2UgZWZmZWN0LgorCit2YXIgaW50ZXJ2YWxJZDsKK3ZhciBpbWFnZU9ubG9h
ZEZpcmVkID0gMDsKKworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CisgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRJbWFnZXNFbmFi
bGVkKHRydWUpOworICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCdXZWJLaXREaXNw
bGF5SW1hZ2VzS2V5JywgMCk7CisgICAgdGVzdFJ1bm5lci5xdWV1ZVJlbG9hZCgpOworfQorCitm
dW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICB2YXIgaW1hZ2UgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnaW1hZ2UnKTsKKyAgICBpZiAoaW1hZ2UubmF0dXJhbEhlaWdodCAhPSAwIHx8IGltYWdl
Lm5hdHVyYWxXaWR0aCAhPSAwIHx8IGltYWdlT25sb2FkRmlyZWQgIT0gMCkgeworICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1MID0gJ0ZBSUxVUkU6IElt
YWdlIHNob3VsZCBub3QgYmUgbG9hZGVkIHdoZW4gRGlzcGxheUltYWdlIGlzIHVuc2V0JzsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNl
KCdXZWJLaXREaXNwbGF5SW1hZ2VzS2V5JywgMSk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9ICdGQUlMVVJFOiBJbWFnZSBzaG91bGQgcmVsb2FkIGlu
LXBsYWNlIHdoZW4gRGlzcGFseUltYWdlIGlzIGNoYW5nZXMgZnJvbSB1bnNldCB0byBzZXQnOwor
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIGludGVydmFsSWQgPSB3aW5kb3cu
c2V0SW50ZXJ2YWwocnVuVGVzdFJlc3QsIDEwKTsKK30KKworZnVuY3Rpb24gcnVuVGVzdFJlc3Qo
KQoreworICAgIHZhciBpbWFnZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbWFnZScpOwor
ICAgIGlmIChpbWFnZS5uYXR1cmFsSGVpZ2h0ID09IDMzICYmIGltYWdlLm5hdHVyYWxXaWR0aCA9
PSAzNyAmJiBpbWFnZU9ubG9hZEZpcmVkID09IDEpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9ICdTVUNDRVNTJzsKKyAgICAgICAgd2luZG93
LmNsZWFySW50ZXJ2YWwoaW50ZXJ2YWxJZCk7CisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOworICAgIH0KK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0
KCkiPgorICBUZXN0IHRoYXQgRGlzcGxheUltYWdlcyBkaXNhYmxlZCBjYW4gYmxvY2sgaHR0cCBp
bWFnZSBhbmQgY2FuIGJlIHJlbG9hZGVkIGluLXBsYWNlIHdoZW4gdG9nZ2xlZC4KKyAgPGRpdiBp
ZD0icmVzdWx0Ij5GQUlMVVJFOiBUZXN0IHNjcmlwdCBkaWRuJ3QgcnVuLjwvZGl2PgorICA8aW1n
IGlkPSJpbWFnZSIgc3JjPSIuLi9pbWFnZXMvcmVzb3VyY2VzL292YWwucG5nIiBvbmxvYWQ9Imlt
YWdlT25sb2FkRmlyZWQ9MTsiPgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2xvYWRlci9pbWFnZXMtZW5hYmxlZC11bnNldC1jYW4tYmxvY2staW1hZ2Ut
YW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9s
b2FkZXIvaW1hZ2VzLWVuYWJsZWQtdW5zZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1jYW4tcmVsb2Fk
LWluLXBsYWNlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NTFkNDYwMWNjYzNjYTE4ZDhjZmQ1
YTk2OTc4MTExZmZiMGM2MDIwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9s
b2FkZXIvaW1hZ2VzLWVuYWJsZWQtdW5zZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1jYW4tcmVsb2Fk
LWluLXBsYWNlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKK1Rlc3QgdGhhdCBFbmFibGVJ
bWFnZXMgdW5zZXQgY2FuIGJsb2NrIGltYWdlIGFuZCBjYW4gYmUgcmVsb2FkZWQgaW4tcGxhY2Ug
d2hlbiB0b2dnbGVkLgorU1VDQ0VTUworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2xv
YWRlci9pbWFnZXMtZW5hYmxlZC11bnNldC1jYW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQt
aW4tcGxhY2UuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2ltYWdlcy1lbmFibGVkLXVu
c2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjNmNDhlNjI4ZGRkNjBkNWJhZmEyYjE0ZjA4MzYwYjRiNmU2YTY2M2MKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9pbWFnZXMtZW5hYmxlZC11bnNldC1jYW4t
YmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UuaHRtbApAQCAtMCwwICsxLDQ3IEBA
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKy8vIFNldHRpbmcgSW1hZ2VzRW5hYmxlZCBpcyBh
c3luY2hyb25vdXMsIHNvIHVzaW5nIHF1ZXVlUmVsb2FkIGFuZCBzZXRJbnRlcnZhbCB0byBjaGVj
ayB3aGVuIHRoZSBzZXR0aW5nIGFjdHVhbGx5IHRha2UgZWZmZWN0LgorCit2YXIgaW50ZXJ2YWxJ
ZDsKK3ZhciBpbWFnZU9ubG9hZEZpcmVkID0gMDsKKworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7
CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci5vdmVycmlkZVBy
ZWZlcmVuY2UoJ1dlYktpdERpc3BsYXlJbWFnZXNLZXknLCAxKTsKKyAgICB3aW5kb3cuaW50ZXJu
YWxzLnNldHRpbmdzLnNldEltYWdlc0VuYWJsZWQoZmFsc2UpOworICAgIHRlc3RSdW5uZXIucXVl
dWVSZWxvYWQoKTsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgdmFyIGltYWdlID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ltYWdlJyk7CisgICAgaWYgKGltYWdlLm5hdHVyYWxI
ZWlnaHQgIT0gMCB8fCBpbWFnZS5uYXR1cmFsV2lkdGggIT0gMCB8fCBpbWFnZU9ubG9hZEZpcmVk
ICE9IDApIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVy
SFRNTCA9ICdGQUlMVVJFOiBJbWFnZSBzaG91bGQgbm90IGJlIGxvYWRlZCB3aGVuIEltYWdlc0Vu
YWJsZWQgaXMgdW5zZXQnOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgd2luZG93Lmlu
dGVybmFscy5zZXR0aW5ncy5zZXRJbWFnZXNFbmFibGVkKHRydWUpOworICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSAnRkFJTFVSRTogSW1hZ2Ugc2hvdWxk
IHJlbG9hZCBpbi1wbGFjZSB3aGVuIEltYWdlc0VuYWJsZWQgaXMgY2hhbmdlcyBmcm9tIHVuc2V0
IHRvIHNldCc7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgaW50ZXJ2YWxJ
ZCA9IHdpbmRvdy5zZXRJbnRlcnZhbChydW5UZXN0UmVzdCwgMTApOworfQorCitmdW5jdGlvbiBy
dW5UZXN0UmVzdCgpCit7CisgICAgdmFyIGltYWdlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2ltYWdlJyk7CisgICAgaWYgKGltYWdlLm5hdHVyYWxIZWlnaHQgPT0gMzMgJiYgaW1hZ2UubmF0
dXJhbFdpZHRoID09IDM3IHx8IGltYWdlT25sb2FkRmlyZWQgPT0gMSkgeworICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1MID0gJ1NVQ0NFU1MnOworICAg
ICAgICB3aW5kb3cuY2xlYXJJbnRlcnZhbChpbnRlcnZhbElkKTsKKyAgICAgICAgdGVzdFJ1bm5l
ci5ub3RpZnlEb25lKCk7CisgICAgfQorfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxv
YWQ9InJ1blRlc3QoKSI+CisgIFRlc3QgdGhhdCBFbmFibGVJbWFnZXMgdW5zZXQgY2FuIGJsb2Nr
IGltYWdlIGFuZCBjYW4gYmUgcmVsb2FkZWQgaW4tcGxhY2Ugd2hlbiB0b2dnbGVkLgorICA8ZGl2
IGlkPSJyZXN1bHQiPkZBSUxVUkU6IFRlc3Qgc2NyaXB0IGRpZG4ndCBydW4uPC9kaXY+CisgIDxp
bWcgaWQ9ImltYWdlIiBzcmM9Ii4uL2ltYWdlcy9yZXNvdXJjZXMvb3ZhbC5wbmciIG9ubG9hZD0i
aW1hZ2VPbmxvYWRGaXJlZD0xOyI+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvbG9hZGVyL3Jlc291cmNlcy9pbWFnZTEuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvbG9hZGVyL3Jlc291cmNlcy9pbWFnZTEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZDY5ZGMzYzJh
MGQ2YTE1ZTA4OTYzNzkxMDMyNTRmNWVhYTM0ZGMxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9sb2FkZXIvcmVzb3VyY2VzL2ltYWdlMS5odG1sCkBAIC0wLDAgKzEsNSBAQAor
PGh0bWw+Cis8Ym9keT4KKyAgPGltZyBzcmM9Ii4uLy4uL2ltYWdlcy9yZXNvdXJjZXMvb3ZhbC5w
bmciIG9ubG9hZD0id2luZG93Lm9wZW5lci5pbWFnZTFMb2FkZWQoKTsiPgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvcmVzb3VyY2VzL2ltYWdl
Mi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvcmVzb3VyY2VzL2ltYWdlMi5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmMwMzdmZmYwY2U2NTY3NzdjYzAyZThhZTZjYzgxY2Y2ZWE0NDJhYWMKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9yZXNvdXJjZXMvaW1hZ2UyLmh0
bWwKQEAgLTAsMCArMSw1IEBACis8aHRtbD4KKzxib2R5PgorICA8aW1nIHNyYz0iLi4vLi4vaW1h
Z2VzL3Jlc291cmNlcy9vdmFsLnBuZyIgb25sb2FkPSJ3aW5kb3cub3BlbmVyLmltYWdlMkxvYWRl
ZCgpOyI+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS9wZXJtaXNzaW9uY2xpZW50L2ltYWdlLXBlcm1pc3Npb25zLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Blcm1pc3Npb25jbGllbnQvaW1hZ2Ut
cGVybWlzc2lvbnMtZXhwZWN0ZWQudHh0CmluZGV4IDYwZTc2YTUyM2FkZjI2NDQ2NTMzNTgyOTZm
N2NiOWViNDM4ZDNmOWYuLmU2MDdhMTAxMzExMjgzYjdhNGZjMDU3OWJjNmFiNWEyZmUyNDEyMTIg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Blcm1pc3Npb25jbGll
bnQvaW1hZ2UtcGVybWlzc2lvbnMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtL3Blcm1pc3Npb25jbGllbnQvaW1hZ2UtcGVybWlzc2lvbnMtZXhwZWN0ZWQu
dHh0CkBAIC01LDYgKzUsNCBAQCBQRVJNSVNTSU9OIENMSUVOVDogYWxsb3dJbWFnZSgoZmlsZSB0
ZXN0KTpwbGF0Zm9ybS9jaHJvbWl1bS9wZXJtaXNzaW9uY2xpZW50L3JlcwogCiAKIFBBU1M6IGZp
cnN0IGltYWdlIGxvYWRlZAotUEFTUzogZXJyb3IgZXZlbnQgZm9yIG5vdCBjYWNoZWQgaW1hZ2UK
LVBBU1M6IGVycm9yIGV2ZW50IGZvciBpbWFnZSBmcm9tIGNhY2hlCiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Blcm1pc3Npb25jbGllbnQvaW1hZ2UtcGVybWlz
c2lvbnMuaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Blcm1pc3Npb25jbGll
bnQvaW1hZ2UtcGVybWlzc2lvbnMuaHRtbAppbmRleCA3YjVlMmM1NzVjOTg5NzRhYzA4Zjg3ZTlm
OGMxMjA3MTBhZGJmZWYwLi5mNTdhM2I3MDcwNDMzMDljMmZhYjJmZjkyYzNlOWUyYzZlNDE5NjQ3
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9wZXJtaXNzaW9uY2xp
ZW50L2ltYWdlLXBlcm1pc3Npb25zLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vcGVybWlzc2lvbmNsaWVudC9pbWFnZS1wZXJtaXNzaW9ucy5odG1sCkBAIC0xLDYgKzEs
OSBAQAogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQ+CisvLyBCbG9ja2VkIGltYWdlcyBjYW4gYmUg
cmVsb2FkZWQsIHNvIG5laXRoZXIgb25sb2FkIG5vciBvbmVycm9yIGlzIGNhbGxlZC4KKy8vIE9u
bHkgY2hlY2sgaGVyZSB0aGF0IG9ubG9hZCBpcyBuZXZlciBjYWxsZWQgd2hlbiBpbWFnZSBpcyBi
bG9ja2VkLgorCiBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKICAgICB0ZXN0UnVubmVyLmR1bXBQZXJtaXNzaW9uQ2xpZW50Q2FsbGJhY2tzKCk7
CkBAIC0yMSwxNCArMjQsMTIgQEAgZnVuY3Rpb24gbG9hZGVkKCkKIAogICAgIC8vIExvYWQgYW4g
aW1hZ2Ugbm90IGluIGNhY2hlLgogICAgIHZhciBpbWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdpbWcnKTsKLSAgICBpbWcub25lcnJvciA9IGZ1bmN0aW9uICgpIHsgbG9nKCJQQVNTOiBlcnJv
ciBldmVudCBmb3Igbm90IGNhY2hlZCBpbWFnZSIpOyB9CiAgICAgaW1nLm9ubG9hZCA9IGZ1bmN0
aW9uICgpIHsgbG9nKCJGQUlMOiBub3QgY2FjaGVkIGltYWdlIGxvYWRlZCIpOyB9CiAgICAgaW1n
LnNyYyA9ICJyZXNvdXJjZXMvYm9zdG9uLmdpZj9ub2NhY2hlIjsKICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiaW1nIikuYXBwZW5kQ2hpbGQoaW1nKTsKIAogICAgIC8vIExvYWQgYW4gaW1h
Z2UgZnJvbSBjYWNoZS4KICAgICB2YXIgaW1nRnJvbUNhY2hlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnaW1nJyk7Ci0gICAgaW1nRnJvbUNhY2hlLm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7IGxv
ZygiUEFTUzogZXJyb3IgZXZlbnQgZm9yIGltYWdlIGZyb20gY2FjaGUiKTsgfQogICAgIGltZ0Zy
b21DYWNoZS5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7IGxvZygiRkFJTDogaW1hZ2UgZnJvbSBjYWNo
ZSBsb2FkZWQiKTsgfQogICAgIGltZ0Zyb21DYWNoZS5zcmMgPSAicmVzb3VyY2VzL2Jvc3Rvbi5n
aWYiOwogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbWciKS5hcHBlbmRDaGlsZChpbWdG
cm9tQ2FjaGUpOwpAQCAtNDEsNyArNDIsNyBAQCBmdW5jdGlvbiBsb2FkZWQoKQogPC9zY3JpcHQ+
CiA8L2hlYWQ+CiA8Ym9keT4KLTxpbWcgc3JjPSJyZXNvdXJjZXMvYm9zdG9uLmdpZiIgb25sb2Fk
PSJsb2FkZWQoKSIgb25lcnJvcj0ibG9nKCdGQUlMOiBlcnJvciBldmVudCBmb3IgZmlyc3QgaW1h
Z2UnKSI+Cis8aW1nIHNyYz0icmVzb3VyY2VzL2Jvc3Rvbi5naWYiIG9ubG9hZD0ibG9hZGVkKCki
PgogPGRpdiBpZD0iaW1nIj48L2Rpdj4KIDxkaXYgaWQ9InJlc3VsdHMiPjwvZGl2PgogPC9ib2R5
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vcGVybWlzc2lvbmNs
aWVudC9yZXNvdXJjZXMvaW1hZ2UuaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L3Blcm1pc3Npb25jbGllbnQvcmVzb3VyY2VzL2ltYWdlLmh0bWwKaW5kZXggZTJhZGZlM2YwYjYy
MWFhOGQ5ZmY0ZTE5MGM5MDIyMzA1Y2MwNzBlYi4uMjM5NzcxNzEwMWRlZDQ0MGEzMjk1NTgyNmU4
NDFjZDFjZDYyM2Y5NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
cGVybWlzc2lvbmNsaWVudC9yZXNvdXJjZXMvaW1hZ2UuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS9wZXJtaXNzaW9uY2xpZW50L3Jlc291cmNlcy9pbWFnZS5odG1sCkBA
IC04LDcgKzgsNyBAQCBmdW5jdGlvbiBsb2coYSkKIDwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+
Ci08aW1nIHNyYz0iYm9zdG9uLmdpZiIgb25sb2FkPSJsb2coJ0ZBSUw6IGxvYWQgZXZlbnQgZm9y
IGlmcmFtZWQgaW1hZ2UpIiBvbmVycm9yPSJsb2coJ0ZBSUw6IGVycm9yIGV2ZW50IGZvciBpZnJh
bWVkIGltYWdlJykiPgorPGltZyBzcmM9ImJvc3Rvbi5naWYiIG9ubG9hZD0ibG9nKCdGQUlMOiBs
b2FkIGV2ZW50IGZvciBpZnJhbWVkIGltYWdlJykiPgogPGRpdiBpZD0icmVzdWx0cyI+PC9kaXY+
CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIv
U2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9Ta2lwcGVkCmluZGV4IGJjNDIwMWYz
MjM5OGExOWMzNDY0Y2FjOTVhZTNkMmMyN2QxOWVlM2YuLmE2ODExMzIxM2I1ZmQwNmY1MTFiZGQ3
NTQ1MTlkMjEzZDhiMjNlMjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9T
a2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9Ta2lwcGVkCkBAIC0yMDMsNiAr
MjAzLDcgQEAgZmFzdC9jYW52YXMvd2ViZ2wvd2ViZ2wtc3BlY2lmaWMuaHRtbAogZmFzdC9jYW52
YXMvd2ViZ2wvb2VzLXZlcnRleC1hcnJheS1vYmplY3QuaHRtbAogZmFzdC9oYXJuZXNzL292ZXJy
aWRlLXByZWZlcmVuY2VzLTIuaHRtbAogZmFzdC9pbWFnZXMvYW5pbWF0ZWQtZ2lmLXJlc3RvcmVk
LWZyb20tYmZjYWNoZS5odG1sCitmYXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0LWFsbG93
cy1jYWNoZWQtaW1hZ2UtbG9hZC5odG1sCiBmYXN0L3RleHQvemVyby1mb250LXNpemUuaHRtbAog
CiAjIFdlYktpdFRlc3RSdW5uZXIgbmVlZHMgdG8gc3VwcG9ydCBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wRE9NQXNXZWJBcmNoaXZlCkBAIC0zMTcsNiArMzE4LDggQEAgc3ZnL2N1c3RvbS9zdmct
YWxsb3dlZC1pbi1kYXNoYm9hcmQtb2JqZWN0Lmh0bWwKICMgPGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00MjY3Mj4KIGZhc3QvY3NzL2NvbXBhcmUtY29udGVudC1zdHls
ZS5odG1sCiBmYXN0L2ZyYW1lcy9mcmFtZS1kaXNwbGF5LW5vbmUtZm9jdXMuaHRtbAorZmFzdC9s
b2FkZXIvZGlzcGxheS1pbWFnZS11bnNldC1jYW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQt
aW4tcGxhY2UuaHRtbAorZmFzdC9sb2FkZXIvaW1hZ2VzLWVuYWJsZWQtdW5zZXQtY2FuLWJsb2Nr
LWltYWdlLWFuZC1jYW4tcmVsb2FkLWluLXBsYWNlLmh0bWwKIGZhc3QvbG9hZGVyL3JlbG9hZC1w
b2xpY3ktZGVsZWdhdGUuaHRtbAogCiAjIFdlYktpdFRlc3RSdW5uZXIgbmVlZHMgbGF5b3V0VGVz
dENvbnRyb2xsZXIucXVldWVMb2FkCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cK
aW5kZXggNTUyNDVlNmMwYzNiNGZkNjNlMTYwYWVlMzZkMDIzODlhNmJmNzllMy4uYzZkY2ZlYzM0
YmViNjJmMGViNmU5MTMyODFlYmJmNTA3ODk1ODNlZCAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisr
KyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDEyLTA5LTI0ICBCbyBMaXUgIDxib2xp
dUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVsYW5kICJBZGQgaW4tcGxhY2UgcmVsb2FkIGJl
aGF2aW9yIHRvIEltYWdlc0VuYWJsZWQgc2V0dGluZyIgd2l0aCBvcHRpbWl6YXRpb25zCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzA1NQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbGFuZGluZyAxMjg3
ODAsIDEyODY3NiwgMTI4NjQ1LiBXYXMgcmV2ZXJ0ZWQgaW4gMTI4OTE0IGR1ZSB0bworICAgICAg
ICBwZXJmb3JtYW5jZSByZWdyZXNzaW9uIGluIENocm9taXVtLgorCisgICAgICAgIE5ldyBjaGFu
Z2VzIGluIGFkZGl0aW9uIHRvIHByZXZpb3VzbHkgcmV2ZXJ0ZWQgcGF0Y2hlczoKKworICAgICAg
ICBSZWZhY3RvcmVkIENhY2hlZFJlc291cmNlOjpyZXF1ZXN0UmVzb3VyY2UsIGxvYWRSZXNvdXJj
ZSwgYW5kCisgICAgICAgIHJldmFsaWRhdGVSZXNvdXJjZS4gTW92ZWQgQ2FjaGVkUmVzb3VyY2U6
OmxvYWQgbWV0aG9kIHRvIGVuZCBvZgorICAgICAgICByZXF1ZXN0UmVzb3VyY2Ugc28gdGhlcmUg
aXMgb25lIHBsYWNlIHdoZXJlIGxvYWQgaXMgY2FsbGVkIGZvciBhbGwKKyAgICAgICAgcmVzb3Vy
Y2VzLgorCisgICAgICAgIEFkZGVkIGEgZW51bSBwYXJhbWV0ZXIgZm9yIHJlcXVlc3RSZXNvdXJj
ZSBhbmQKKyAgICAgICAgZGV0ZXJtaW5lUmV2YWxpZGF0aW9uUG9saWN5IHNvIHRoYXQgRnJhbWVM
b2FkZXJDbGllbnQ6OmFsbG93SW1hZ2UgY2FsbAorICAgICAgICBkbyBub3QgbmVlZCB0byBiZSBj
YWxsZWQgbXVsdGlwbGUgdGltZXMuCisKKyAgICAgICAgUmVtb3ZlZCBDYWNoZWRJbWFnZTo6bG9h
ZCBjYWxsIGluIHJlcXVlc3RJbWFnZSBzbyBpdCBpcyBub3QgY2FsbGVkCisgICAgICAgIHR3aWNl
LgorCisgICAgICAgIFJlbW92ZWQgdW5uZWNlc3NhcnkgRnJhbWUuaCBpbmNsdWRlcyBpbiBDYWNo
ZWRSZXNvdXJjZSBhbmQKKyAgICAgICAgQ2FjaGVkSW1hZ2UuCisKKyAgICAgICAgUmVtb3ZlZCBk
ZWFkIGxvYWQoKSBtZXRob2QgZGVjbGFyYXRpb24gaW4gQ2FjaGVkSW1hZ2UuCisKKyAgICAgICAg
VXBkYXRlZCB0ZXh0IGV4cGVjdGF0aW9uIGZvciB0d28gaW1hZ2UtcGVybWlzc2lvbnMgdGVzdHMg
dG8gcmVmbGVjdAorICAgICAgICB0aGUgcmVtb3ZlZCBjYWxscyB0byBhbGxvd0ltYWdlLgorCisg
ICAgICAgICogU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcjoKKwogMjAxMi0wOS0yNCAg
U2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5y
ZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEyOTM0My4K
</data>

          </attachment>
      

    </bug>

</bugzilla>